




已阅读5页,还剩52页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
机电工程学院中 南 大 学C+程序设计及应用 课 程 设 计题 目: 图书-读者管理系统 姓名班级学号姚金甫(组长)机械1610班0801161029申晨阳机械1640班0801161031陈杰机械1610班0801161030杨烨机械1610班0801161028指导教师 夏教授 日 期 2017 年 6 月 28 日 56目录一、设计任务书2二、程序总体框架3三、函数流程框图4addreader4delereader5modreader6tjreader7readtotal8czreader9returnbook10addbook11delbook12stabook:13tot_val14find_BorrowInf15borrowbook16xujie17四、操作演示实例18五、程序代码24六、结束语(心得体会)534、姚金甫同学:532、申晨阳同学:532、杨晔同学:543、陈杰同学:55七、成绩表56一、设计任务书姚金甫:main()函数编写,主菜单界面及各子菜单界面编写,管理员系统口令函数,读者登录口令函数,图书管理中的功能函数,头文件编写,系统优化,系统调试。陈杰:图书管理中的功能函数,流程图绘制,文本文件输入,系统调试。申晨阳:读者管理中的功能函数(全部),系统优化,系统调试,读者借还中的功能函数。杨晔:读者借还中的功能函数,流程图绘制 。二、程序总体框架三、函数流程框图addreader:delereader:modreader:tjreader:readtotal:czreader:returnbook:addbook:delbook:stabook:tot_valfind_BorrowInfborrowbookxujie四、操作演示实例图书管理和读者管理系统需要管理员密码图书添加:图书添加操作完成后数据写入book.txt的末尾:图书删除:图书删除后,book.txt中的数据发生变化:图书分类统计:添加读者:数据变化:删除读者:读者更改:数据改变:读者删除:读者分类统计:读者数量统计读者充值:充值后数据的变化:充值前:充值后:登陆读者系统需要读者身份证号和密码读者信息查询:借书:还书:五、程序代码/一个只含数组头文件struct date1int year;int month;struct book char name30; /书名 bool tag; / 图书标签 1表示存在 0 表示删除char author10; /作者char press50; /出版社 date1 date; /出版日期 char major20; /专业分类 char add50;/图书位置 float price; /图书单价 int total; /本书数量 int currentnum ;/在馆本书数量 int totalvalue ;/总图书价值 bk1000;struct dateint year;int month;int day;struct borrowchar name20;/姓名char bookname30;/书名char pub50;/出版社date borrowdate;/借书日期date returndate;/还书日期jy999;struct readerchar Name20;/姓名bool A;/ 读者标签 1表示存在 0 表示删除char sex10;/性别date brithdate;char card19;/卡号用身份证号int cardmoney;/卡上金额(元)char password20;/读者口令char edu10;/学历水平int max;/借书数量int forfeit;/罚金,借书期限60天dz999;#include#include#include #include #includestruct.h/包括头文件using namespace std;static int n;/静态成员函数,表示books.txt内的图书数目static int m;/静态成员函数,表示reader.txt内的读者数目static int w;/静态成员函数,表示borrowrecord.txt内的借书数目static int duzhe;/表示登陆读者序号static bool q=0;/表示续借书与否int main();void read_bookdata()/读取books.txt中的数据,赋给book结构体int i;ifstream fin(books.txt); for(i=0;bki.tagbki.authorbki.pressbki.date.yearbki.date.monthbki.majorbki.addbki.pricebki.total bki.currentnum; while(!fin.eof() n=i; break; fin.close();void write_bookdata()/将数据写入books.txtint i;ofstream fout(books.txt); for(i=0;i=n;i+) bki.tag bki.author bki.press bki.date.year bki.date.month bki.major bki.add bki.price bki.total bki.currentnumendl; fout.close();void addbook() / 添加图书bool a; read_bookdata();ofstream fout(books.txt,ios:app);while(1) coutendl请按要求输入图书信息:; coutendlbkn+1.name; foutbkn+1.name ;coutbkn+1.tag; foutbkn+1.tag ; coutbkn+1.author; foutbkn+1.author ; coutbkn+1.press; foutbkn+1.press ; coutbkn+1.date.year; foutbkn+1.date.year ; coutbkn+1.date.month; foutbkn+1.date.month ; coutbkn+1.major; foutbkn+1.major ; coutbkn+1.add; foutbkn+1.add ; coutbkn+1.price; foutbkn+1.price ; coutbkn+1.total; foutbkn+1.total ; coutbkn+1.totalvalue; foutbkn+1.totalvalue endl; coutendla;n+; if(a=0)coutendl; break;fout.close();void delbook()/ 图书删除int i;bool a;char book130;read_bookdata(); ofstream fout(books.txt);while(1)coutendlbook1;for(i=0;i=n;i+) if(strcmp(,book1)=0)coutbki.tag;cout 删除成功!; write_bookdata(); coutendla;if(a=0)coutendl; break;fout.close(); void stabook()/图书分类统计 read_bookdata();int a=0,b=0,c=0,d=0;for(int i=0;i=n;i+)if(strcmp(bki.major,文学)=0 & bki.tag=1) a+;else if(strcmp(bki.major,军事)=0 & bki.tag=1) b+;else if(strcmp(bki.major,科学)=0 & bki.tag=1) c+;else if(strcmp(bki.major,经济)=0 & bki.tag=1) d+;cout文学: a 本;coutsetw(10)军事: b 本;coutsetw(10)科学: c 本;coutsetw(10)经济: d 本endl; void tot_val()/图书数量、价值统计 read_bookdata(); int i,sum_CurrentTotal=0,sum_CurrentValue=0,sum_Total=0,sum_Value=0;coutendl在馆总书数量为:;for(i=0;i=n;i+)if(bki.tag=1)sum_CurrentTotal+=bki.currentnum;coutsum_CurrentTotal ;cout在馆总书价值为:;for(i=0;i=n;i+)if(bki.tag=1)sum_CurrentValue+=bki.currentnum * bki.price;coutsum_CurrentValueendl; cout总书数量为: ;for(i=0;i=n;i+)if(bki.tag=1)sum_Total+=bki.total;coutsum_Total ;cout总书价值为: ;for(i=0;i=n;i+)if(bki.tag=1)sum_Value+=bki.total * bki.price;coutsum_Valueendlendl;void read_readerdata()/读取readers.txt中的数据ifstream fin(readers.txt);for(int i=0;idzi.Namedzi.Adzi.maxdzi.forfeit;while(!fin.eof()m=i;break;fin.close();void write_readerdata()/将数据写入readers.txt ofstream fileout(readers.txt); for (int i=0;i=m;i+) fileoutdzi.Name dzi.A dzi.sex dzi.brithdate.year dzi.brithdate.month dzi.brithdate.day dzi.card dzi.cardmoney dzi.password dzi.max dzi.forfeitendl; fileout.close(); ;/.添加读者.void addreader()ofstream fileout(readers.txt,ios:app);cout请按要求输入读者信息:endl;coutdzm+1.Name;fileoutdzm+1.Name ;dzm+1.A=1; fileoutdzm+1.A ;/输入存在判断变量coutdzm+1.sex; fileoutdzm+1.sex ;coutdzm+1.brithdate.year; fileoutdzm+1.brithdate.year ;coutdzm+1.brithdate.month; fileoutdzm+1.brithdate.month ;coutdzm+1.brithdate.day; fileoutdzm+1.brithdate.day ;coutdzm+1.card; fileoutdzm+1.card ;coutdzm+1.cardmoney; fileoutdzm+1.cardmoney ;coutdzm+1.password; fileoutdzm+1.password ;coutdzm+1.edu; fileoutdzm+1.edu ;dzm+1.max=0;fileoutdzm+1.max ;/输入已借图书数量dzm+1.forfeit =0;fileoutdzm+1.forfeit endl ;/输入罚金数量/ fileout.close();/.删除读者。void delereader()char b19;int i;coutendlb;read_readerdata();for(i=0;i=m+1;i+)int t;t=strcmp(dzi.card,b);if(0=t&dzi.A=1)int B;cout请问你真的要删除的读者dzi.Name吗?endl;coutB;if(B=1)dzi.A=0;coutendl删除成功!endl;break;else cout已放弃删除!; break;if(i=m+1) /如果未查找到符合条件的读者执行下列操作cout读者不存在或已被删除!endl;write_readerdata();/.读者更改.void modreader()char b19;read_readerdata();coutb;for(int i=0;i=m+1;i+)int t;t=strcmp(dzi.card,b);if(0=t&dzi.A=1)int c=1;int a;coutendl请输入你要修改的信息的序号!endla;switch(a) case 1:coutendl你原来记录的姓名为:dzi.Nameendldzi.Name; coutendl修改完成!endl;break; case 2: coutendl你原来记录的性别为:dzi.sexendldzi.sex; coutendl修改完成!endl; break; case 3: coutendl你原来记录的出生日期为:dzi.brithdate.year年dzi.brithdate.month月dzi.brithdate.day日endl请输入新的出生日期:; cout年:dzi.brithdate.year;cout月:dzi.brithdate.month;cout日:dzi.brithdate.day;coutendl修改成功endl;break;case 4:coutendl你原来记录的身份证号为:dzi.cardendldzi.card;coutendl修改成功!endl;break;case 5:coutendl你原来记录的密码为:dzi.passwordendldzi.password;coutendl修改成功!endl请牢记你的密码!endl请牢记你的密码!endl请牢记你的密码!endl;break;case 6:coutendl你原来记录的读者类型为:endl请输入新的读者类型(bachelor/master/doctor/other);coutendl修改成功endl;break;default:cout请重新输入a:endl;write_readerdata();break;if(i=m+1) cout该读者不存在!;/。读者数量&分类统计。void tjreader()int a,b,c,d,e,f,g;a=b=c=d=e=f=g=0;read_readerdata();for(int i=0;i=m;i+)if(dzi.A=1)if(strcmp(dzi.sex,male)=0) b+;else c+;if(strcmp(,bachelor)=0)d+;else if(strcmp(,master)=0) e+;else if(strcmp(,doctor)=0) f+;else g+;coutendl男性:b人 女性:c人endlendl学士(bachelor):d人 硕士(master):e人 endl博士(doctor):f人 其他(other):g人endl;/-void readertotal()int a=0;read_readerdata();for(int i=0;i=m;i+) if(dzi.A=1)a+; coutendl读者总数为:a人endl;/.读者充值.void czreader()char b19;read_readerdata();coutendlb;for(int i=0;i=m+1;i+)int t;t=strcmp(dzi.card,b);if(0=t & dzi.A=1)int a;cout你要充值的用户名为:dzi.Nameendla;if(a=1)int r;coutr;dzi.cardmoney+=r;cout充值成功!endl;break;elsebreak;if(i=m+1) cout该读者不存在!;write_readerdata();/-void login() /读者登录函数char a16,b16; int i;bool c=1; coutendla;read_readerdata();for(i=0;i=m;i+) if(strcmp(a,dzi.card)=0) cout请输入您的密码:; for(i=0;ib; if(strcmp(b,dzi.password)=0) coutendl登陆成功! ; c=0;duzhe=i; system(pause); else coutendl密码错误,请重新输入! 您一共有三次机会!:; if(c=0) break; if(c=0) break; else cout该卡号不存在endl;system(pause); main();/ 返回主函数;/-void read_borrowdata()/将数据从borrowrecord.txt读出int i;ifstream inf(borrowrecord.txt);for(i=0;jyi.booknamejyi.pubjyi.borrowdate.yearjyi.borrowdate.monthjyi.borrowdate.dayjyi.returndate.yearjyi.returndate.monthjyi.returndate.day; while(!inf.eof() w=i; break; inf.close();void write_borrowdata()/将数据写入borrowrecord.txtint i;ofstream outf(borrowrecord.txt);for(i=0;i=w;i+) jyi.bookname jyi.pub jyi.borrowdate.year jyi.borrowdate.month jyi.borrowdate.day jyi.returndate.year jyi.returndate.month jyi.returndate.dayendl;outf.close();void find_BorrowInf()/ 读者借阅信息查询 int i; read_borrowdata();coutendl以下是借阅情况:endlendl;for(i=0;i=w;i+)if(strcmp(,dzduzhe.Name)=0)cout书名 出版社 借书日期 还书日期endl;cout.setf(ios:left);coutsetw(10)jyi.booknamesetw(20)jyi.pubsetw(5)jyi.borrowdate.year setw(3)jyi.borrowdate.monthsetw(10)jyi.borrowdate.daysetw(5) jyi.returndate.yearsetw(3)jyi.returndate.monthjyi.returndate.dayendl;couttm_year+1900;date.month=local-tm_mon+1;date.day=local-tm_mday;return date; void jieshu()/借书子函数 int i,j;char A30; read_bookdata(); read_readerdata(); read_borrowdata();coutendlA;for(i=0;i0) coutendl该图书可以借阅!endl; coutj; if(j=1) ofstream outf(borrowrecord.txt,ios:app); jyi.borrowdate=get_local_cur_date(); cout借书成功!endl借书日期:jyi.borrowdate.year年 jyi.borrowdate.month月jyi.borrowdate.day日endlendl; /借书成功,将该书信息添加到读者借阅书籍中 outfdzduzhe.Name bki.press jyi.borrowdate.year jyi.borrowdate.month jyi.borrowdate.day 0000 00 00endl; outf.close();bki.currentnum-;write_bookdata(); dzduzhe.max+; write_readerdata();break; else cout该书已全部借出!endl; if(i=w+1) cout该书不存在,无法借阅!endl;void borrowbook() /读者借书函数 read_bookdata(); read_readerdata(); read_borrowdata();int i,j=1; for(i=0;i=w;i+)if(strcmp(,dzduzhe.Name)=0)if(q=0 & dzduzhe.max=5)jieshu();break;/调用借书子函数else if(q=1) cout你有延期书籍未归还,无法继续借书.endl;else cout你有五本正在借阅书籍,无法继续借书.endl;break;elsejieshu();break;/调用借书子函数;void xujie() /图书续借函数(借书延期操作)char a30;int i,j;read_readerdata();read_borrowdata();/读取借阅日期,要与书名联系起来,下面假定借阅时期的月份为m couta; for(i=0;i=w;i+) if(strcmp(jyi.bookname,a)=0 & strcmp(,dzduzhe.Name)=0 & jyi.borrowdate.year=0) if(q=0) coutj; if(j=1) q=1; cout您已成功续借一个月!;break;else break; else cout该图书已续借,无法再次续借;break;else cout您还没有借阅该书!endl;break; void returnbook()char A50;int fee,a=0;borrow jyb999;date cur_date;read_bookdata();read_readerdata();read_borrowdata(); cur_date=get_local_cur_date();for(int i=0;i=w;i+)/查找读者借书记录,将找到的未还书的记录输入到 jyb【a】中 if(strcmp(,dzduzhe.Name)=0 & jyi.returndate.year=0)jybi=jyi;a+;elsestrcpy(,0000);strcpy(jybi.bookname,0000);strcpy(jybi.pub,0000); jybi.borrowdate=cur_date;jybi.returndate=cur_date;if(a=0) cout该读者没有借阅书籍!endlendl;elsecoutendlA;for(int i=0;i=w;i+)if(strcmp(jybi.bookname,A)=0)/查找要还的书籍cur_date=get_local_cur_date();if(q=0)fee=(cur_date.year-jyi.borrowdate.year)*365 +(cur_date.month-jyi.borrowdate.month)*30+(cur_dat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年少先队辅导员网络培训考试题及答案
- 施工现场安全文化的建设与评价体系试题及答案
- 网络直播规范化发展中的商业模式创新与用户互动性提升报告
- 施工现场安全责任制考核试题及答案
- 2025年度农业文化发展知识竞赛试题(附答案)
- 思维决定未来试题及答案
- 环卫中心面试真题及答案
- 环保员面试真题及答案
- 当代家居设计中的功能与美学平衡试题及答案
- 架子工作业试题及答案
- 高温熔融金属企业安全知识培训
- 水利信息化水情监测系统单元工程质量验收评定表、检查记录
- 2024至2030年中国高密度聚乙烯树脂行业投资前景及策略咨询研究报告
- 仿制药与原研药竞争分析
- 脑洞大开背后的创新思维学习通超星期末考试答案章节答案2024年
- 临时聘用司机合同范本
- ipo上市商业计划书
- 抖音短陪跑合同范本
- HJ 636-2012 水质 总氮的测定 碱性过硫酸钾消解紫外分光光度法
- 现代风险导向审计在天衡会计师事务所的应用研究
- 拔牙技巧必成高手
评论
0/150
提交评论