?? tsglxt.txt
字號:
程序說明書
一. 各模塊的功能:
readtxt(),讀讀者文件writetxt(),寫讀者文件addreader(reader s)
,添加讀者delreader(int number),刪除讀者searchreader(int
number),查找讀者readerdata()
,讀者數(shù)據(jù)管理readbtxt(),讀圖書文件writebtxt(),寫圖書文件addbook(libook
s),添加圖書delbook(int number),刪除圖書searchbook(int
number),查找圖書bookdata(),圖書數(shù)據(jù)管理borbook(),讀者借書retbook(),讀者還書main()主函數(shù)
二. 程序流程圖:
void main() :
三. 用戶手冊:1,使用程序前先對圖書庫,讀者庫進(jìn)行初始化,然后才能進(jìn)行相應(yīng)的操作2,本程序又一定的糾錯(cuò)功能
①調(diào)用子函數(shù)對功能進(jìn)行相應(yīng)的選擇的時(shí)候,如果選擇的端子不正確,則提示錯(cuò)誤
②對添加的讀者函數(shù)操作的時(shí)候如果讀者庫已經(jīng)滿了,讀者申請的編號已經(jīng)存在的情況則提示錯(cuò)誤
③對刪除讀者函數(shù)操作的時(shí)候,如果輸入的讀者編號不存在則提示錯(cuò)誤
④對查找讀者函數(shù)操作的時(shí)候,如果輸入的讀者編號不存在的時(shí)候則提示錯(cuò)誤
⑤對新書入庫函數(shù)操作的時(shí)候,如果書庫已經(jīng)滿或者申請的書編號已經(jīng)存在,則提示錯(cuò)誤
⑥對刪除的圖書函數(shù)進(jìn)行操作的時(shí)候,如果要?jiǎng)h除的圖書編號不存在,則提示出錯(cuò)
⑦對查找函數(shù)操作的時(shí)候,如果要查找的圖書函數(shù)不存在,則提示出錯(cuò)
⑧對借書函數(shù)進(jìn)行操作時(shí),如果讀者編號不存在,不能在借書,所要借的書已經(jīng)借出,或者要借的書不存在的時(shí)候,則提示出錯(cuò)
⑨對還書函數(shù)操作的時(shí)候,如果讀者編號不存在,所還圖書不為圖書館所有時(shí),則提示出錯(cuò)。
四. 原程序
#include "iostream.h"
#include "iomanip.h"
#include "string.h"
#include "fstream.h"
#define maxbor 3
#define maxreader 100
#define maxbook 400
struct reader //定義讀者結(jié)構(gòu)體
{
int number;
char name[10];
int borbook[maxbor];
};
struct libook //定義圖書結(jié)構(gòu)體
{
int flag;
int number;
char name[20];
char writer[20];
char print[20];
float price;
};
int topbook;
int topreader;
reader read[maxreader];
libook book[maxbook];
void readtxt() //讀入讀者數(shù)據(jù)
{
reader p;
topreader=-1;
fstream file("reader.txt",ios::in);
while(1)
{
file.read((char*)&p,sizeof(p));
if(!file)break;
topreader++;
read[topreader]=p;
}
file.close();
}
void writetxt() //寫入讀者數(shù)據(jù)
{
fstream file("reader.txt",ios::out);
for(int i=0;i<=topreader;i++)
file.write((char*)&read[i],sizeof(read[i]));
file.close();
}
void addreader(reader s) //新增讀者
{
readtxt();
if(topreader>=maxreader)
{
cout<<"讀者庫已經(jīng)滿!"<<endl;
return;
}
for(int i=0;i<=topreader;i++)
if(read[i].number==s.number)
{
cout<<"此編號已經(jīng)存在,請重新輸入信息!"<<endl;
return;
}
topreader++;
read[topreader].number=s.number;
strcpy(read[topreader].name,s.name);
for(i=0;i<maxbor;i++)
read[topreader].borbook[i]=0;
writetxt();
}
void delreader(int number) //刪除讀者
{
readtxt();
for(int i=0;i<topreader;i++)
{
if(read[i].number==number)
{
for(int m=0;m<maxbor;m++)
if(read[i].borbook[m]!=0)
{
cout<<"此讀者還有圖書沒有還,等還后在申請刪除此讀者"<<endl;
return;
}
for(int j=i;j<topreader;j++)
{
read[j].number=read[j+1].number;
strcpy(read[j].name,read[j+1].name);
for(int k=0;k<maxbor;k++)
read[j].borbook[k]=read[j+1].borbook[k];
}
topreader--;
writetxt();
return;
}
}
if(read[topreader].number=number)
{
topreader--;
writetxt();
return;
}
cout<<"查無次人!"<<endl;
return;
}
void searchreader(int number) //查找讀者
{
readtxt();
for(int i=0;i<=topreader;i++)
if(read[i].number==number)
{
cout<<"編號:"<<read[i].number<<endl;
cout<<"姓名:"<<read[i].name<<endl;
cout<<"所借的書的編號";
if(read[i].borbook[0]==0)
{
cout<<": 無借書"<<endl;
return;
}
else
{
for(int
j=0;read[i].borbook[j]!=0&&j<maxbor;j++)cout<<read[i].borbook[j]<<"
";
return;
}
}
cout<<"查無此人"<<endl;
}
void readerdata() //讀者數(shù)據(jù)維護(hù)
{
int choice, number;
reader s;
while(1)
{
cout<<"讀者維護(hù) 1 :新增 2:刪除 3:查找 0:退出"<<endl;
cin>>choice;
switch(choice)
{
case 0: return;
case 1: cout<<"輸入讀者編號:";
cin>>s.number;
cout<<"輸入讀者姓名:";
cin>>s.name;
addreader(s);
break;
case 2: cout<<"輸入刪除讀者的編號:";
cin>>number;
delreader(number);
break;
case 3: cout<<"請出入要查找的讀者的編號:";
cin>>number;
searchreader(number);
break;
default: cout<<"輸入錯(cuò)誤,請重新輸入"<<endl;
break;
}
}
}
void readbtxt() //讀入圖書數(shù)據(jù)
{
libook p;
topbook=-1;
fstream file("book.txt",ios::in);
while(1)
{
file.read((char*)&p,sizeof(p));
if(!file)break;
topbook++;
book[topbook]=p;
}
file.close();
}
void writebtxt() //寫入圖書數(shù)據(jù)
{
fstream file("book.txt",ios::out);
for(int i=0;i<=topbook;i++)
file.write((char*)&book[i],sizeof(book[i]));
file.close();
}
void addbook(libook s) //新增圖書
{
readbtxt();
if(topbook>=maxbook)
{
cout<<"書庫已經(jīng)滿"<<endl;
return;
}
for(int i=0;i<=topbook;i++)
if(book[i].number==s.number)
{
cout<<"此編號已經(jīng)存在,請重新輸入信息"<<endl;
return;
}
topbook++;
book[topbook].number=s.number;
strcpy(book[topbook].name,s.name);
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -