| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 976 人关注过本帖
标题:有那位热心的程序员,帮我注解一下一个程序的,很多的,要有心里准备!
只看楼主 加入收藏
brightnox
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2005-3-25
收藏
 问题点数:0 回复次数:5 
有那位热心的程序员,帮我注解一下一个程序的,很多的,要有心里准备!
下面是一个有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; } } }
搜索更多相关主题的帖子: 注解 程序员 热心 
2005-03-31 16:39
黑客
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2005-3-18
收藏
得分:0 
这个程序不是很难啊,你耐心点看就行了.
这里就几点说一下:
(1) 在 文件处理时,read()函数是从文件中(即是从磁盘,硬盘中)读入数据到内存;write()函数呢,就是把内存中的数据保存到
      文 件(硬盘).我们从键盘上输入数据时的过程:键盘~内存~硬盘.这里的两个函数要注意一点就是,它们的第一个参数必须
      是char*型的.
(2)本程序在读者或图书删除时,他把后面所有的数据都向前移,这个工作有点繁杂.这也是用顺序文件的缺点,这个程序若用
    随机文件方式就方便很多了,不需要移动文件中的数据了,不过会浪费一些存储空间.
    最后说一点,朋友,期望你提问时,能针对些.这才好答复你,要不真的不知怎么回答啊.

教父,已成为过去;谁来续写这段传说?-----我!
2005-04-06 12:25
黑客
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2005-3-18
收藏
得分:0 

还有就是,这个程序中的很多等号(==),他都打成赋值好了(=).
这个程序你也可以改成随机文件的,你就改看看吧,这里可少很多工作的.
哈哈----这可只是我本人的看法拉

教父,已成为过去;谁来续写这段传说?-----我!
2005-04-06 12:31
ypchen
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2004-8-27
收藏
得分:0 
还有很多不标准的地方

2005-05-21 20:32
当当
Rank: 1
等 级:新手上路
帖 子:235
专家分:0
注 册:2004-4-30
收藏
得分:0 
随机文件?什么意思

学好编程就能编出自己的未来! 加油!自信!努力!奋斗!
2005-05-24 09:49
当当
Rank: 1
等 级:新手上路
帖 子:235
专家分:0
注 册:2004-4-30
收藏
得分:0 
这题逻辑上有些错误

学好编程就能编出自己的未来! 加油!自信!努力!奋斗!
2005-06-03 21:30
快速回复:有那位热心的程序员,帮我注解一下一个程序的,很多的,要有心里准备!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027342 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved