有那位热心的程序员,帮我注解一下一个程序的,很多的,要有心里准备!
下面是一个有C++写的一个图书管理系统,有不少都看不懂。没有注解!希望有人能帮我注解一下,越细越详细越好!我感谢万分!很急! 程序说明书 一. 各模块的功能: readtxt(),读读者文件writetxt(),写读者文件addreader(reader s) ,添加读者delreader(int number),删除读者searchreader(int number),查找读者readerdata() ,读者数据管理readbtxt(),读图书文件writebtxt(),写图书文件addbook(libook s),添加图书delbook(int number),删除图书searchbook(int number),查找图书bookdata(),图书数据管理borbook(),读者借书retbook(),读者还书main()主函数 二. 程序流程图: void main() : 三. 用户手册:1,使用程序前先对图书库,读者库进行初始化,然后才能进行相应的操作2,本程序又一定的纠错功能 ①调用子函数对功能进行相应的选择的时候,如果选择的端子不正确,则提示错误 ②对添加的读者函数操作的时候如果读者库已经满了,读者申请的编号已经存在的情况则提示错误 ③对删除读者函数操作的时候,如果输入的读者编号不存在则提示错误 ④对查找读者函数操作的时候,如果输入的读者编号不存在的时候则提示错误 ⑤对新书入库函数操作的时候,如果书库已经满或者申请的书编号已经存在,则提示错误 ⑥对删除的图书函数进行操作的时候,如果要删除的图书编号不存在,则提示出错 ⑦对查找函数操作的时候,如果要查找的图书函数不存在,则提示出错 ⑧对借书函数进行操作时,如果读者编号不存在,不能在借书,所要借的书已经借出,或者要借的书不存在的时候,则提示出错 ⑨对还书函数操作的时候,如果读者编号不存在,所还图书不为图书馆所有时,则提示出错。 四. 原程序 #include "iostream.h" #include "iomanip.h" #include "string.h" #include "fstream.h" #define maxbor 3 #define maxreader 100 #define maxbook 400 struct reader //定义读者结构体 { int number; char name[10]; int borbook[maxbor]; }; struct libook //定义图书结构体 { 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() //读入读者数据 { 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() //写入读者数据 { 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<<"读者库已经满!"<<endl; return; } for(int i=0;i<=topreader;i++) if(read[i].number==s.number) { cout<<"此编号已经存在,请重新输入信息!"<<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() //读者数据维护 { int choice, number; reader s; while(1) { cout<<"读者维护 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<<"输入错误,请重新输入"<<endl; break; } } } void readbtxt() //读入图书数据 { 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() //写入图书数据 { 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<<"书库已经满"<<endl; return; } for(int i=0;i<=topbook;i++) if(book[i].number==s.number) { cout<<"此编号已经存在,请重新输入信息"<<endl; return; } topbook++; book[topbook].number=s.number; strcpy(book[topbook].name,s.name); strcpy(book[topbook].writer,s.writer); strcpy(book[topbook].print,s.print); book[topbook].price=s.price; book[topbook].flag=1; writebtxt(); } void delbook(int number) //删除图书 { readbtxt(); for(int i=0;i<topbook;i++) if(book[i].number==number) { if(book[i].flag==0) { cout<<"此书已经借出,请还回时再删除"<<endl; return; } for(int j=i;j<topbook;j++) { book[j].number=book[j+1].number; book[j].flag=1; strcpy(book[j].name,book[j+1].name); strcpy(book[j].writer,book[j+1].writer); strcpy(book[j].print,book[j+1].print); book[j].price=book[j+1].price; }; topbook--; writebtxt(); return; } if(book[topbook].number==number)topbook--; else { cout<<"查无此书"<<endl; return; } writebtxt(); } void searchbook(int number) //查找图书 { readbtxt(); for(int i=0;i<=topbook;i++) if(book[i].number=number) { cout<<"编号:"<<book[i].number<<endl; cout<<"状态:"; if(book[i].flag==1)cout<<"书库中存在"<<endl; else cout<<"书已经借出"<<endl; cout<<"书名:"<<book[i].name<<endl; cout<<"作者:"<<book[i].writer<<endl; cout<<"出版社:"<<book[i].print<<endl; cout<<"价格:"<<book[i].price<<endl; return; } cout<<"查无此书!"<<endl; } void bookdata() //图书管理 { int choice,number; libook s; while(1) { cout<<"图书维护 1:新增 2:删除 3:查找 0:退出 "<<endl; cin>>choice; switch(choice) { case 0: return; case 1: cout<<"输入图书编号:"; cin>>s.number; cout<<"输入图书的名称:"; cin>>s.name; cout<<"输入作者的姓名:"; cin>>s.writer; cout<<"输入出版社:"; cin>>s.print; cout<<"输入价格:"; cin>>s.price; addbook(s); break; case 2: cout<<"输入删除图书的编号"; cin>>number; delbook(number); break; case 3: cout<<"输入要查找的图书的编号:"; cin>>number; searchbook(number); break; default: cout<<"输入错误!"<<endl; break; } } } void borbook() { int number,numbers; readbtxt(); readtxt(); cout<<"请输入你的编号:"; cin>>numbers; for(int i=0;i<=topreader;i++) if(read[i].number==numbers)break; if(i=topreader+1) { cout<<"没有你的信息!"<<endl; return; } for(int j=0;j<maxbor;j++) if(read[i].borbook[j]==0)break; if(j>maxbor-1) { cout<<"你所能借的书已经满了!"<<endl; return; } cout<<"请输入要借的书的编号!"<<endl; cin>>number; for(int k=0;k<=topbook;k++) if(book[k].number=number) { if(book[k].flag=0) { cout<<"此书已经借出!"; return; } book[k].flag=0; read[i].borbook[j]=number; writetxt(); writebtxt(); return; } cout<<"此书不在,请重新借!"<<endl; return; } void retbook() { int number,numbers; readtxt(); readbtxt(); cout<<"请输入你的编号:"; cin>>numbers; for(int i=0;i<=topreader;i++) { if(read[i].number==numbers)break; if(i=topreader+1) { cout<<"没有你的信息!"<<endl; return; } } cout<<"请输入要还的书的编号!"; cin>>number; for(int n=0;n<=topbook;n++) if(book[n].number=number)break; if(n==topbook+1||book[n].flag==1) { cout<<"此书不为图书管所有!"<<endl; return; }; for(int j=0;j<maxbor;j++) if(read[i].borbook[j]=number) { for(int k=0;k<maxbor;k++) if(read[i].borbook[k]=0)break; k--; for(int m=j+1;m<=k;m++) { read[i].borbook[j]=read[i].borbook[m]; j++; } read[i].borbook[j]=0; book[n].flag=1; writetxt(); writebtxt(); return; } if(j=maxbor) { cout<<"您没有借过这本书"<<endl; return; } } void main() { int x=1,y=1; cout<<"欢迎使用本图书管理系统!"<<endl; while(x!=0) { cout<<"请选择目的 1:进入图书管理系统 0:退出图书管理系统"<<endl; cin>>x; switch(x) { case 1: while(y!=0) { cout<<"请选择目的 1:借书 2:还书 3:图书维护 4:读者维护 0:返回上一层"<<endl; cin>>y; switch(y) { case 1: borbook();break; case 2: retbook();break; case 3: bookdata();break; case 4: readerdata();break; case 0: break; default:cout<<"输入的不正确"<<endl;break; } }; break; case 0: cout<<"欢迎再次使用BYEBYE!"<<endl; return; default :cout<<"输入的不正确!"<<endl; break; } } } |