




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验三:个人图书管理系统一:题目内容1.问题描述 学生在自己的学习和生活中会有很多书籍(包括电子出版物),对所购买的书籍进行分类和统计是一种良好的习惯。如果以文件来存储相关书籍的各种信息,包括分类、书名、作者、购买日期、价格、简介等,辅之以程序来使用这些文件,并加以维护,从而使图书管理工作变得轻松而有趣。2.基本要求 (1)能够以文件存储书籍的各种相关信息。 (2)提供查询工作:可按照一种或多种关键字查找需要的书籍; (3)提供排序功能:可按照一种或多种关键字对所有书籍进行排序,比如按价格进行排序,并输出排序结果。 (4)提供图书信息维护:初始化、增加、删除、修改、打印输出。 (5)提供登录认证工作:具有户头、密码认证。 (6)使用界面要适当美观、便捷。3、实现提示 由于书籍可能较多且要长期保存,可按文件形式存放到外存储器,需要操作时从文件中调入内存来进行查询、排序、维护,退出前保存当前最新信息于文件中。二 分析:问题中提到的主要有两个信息,个人信息以及图书信息,这个可以用结构体来实现。用一个menu函数来实现主菜单功能,包括增加新书,修改书内容,删除书,查找书,显示书,以及对书进行排序,输入不同的操作编号来实现不同的操作对于增加新书,可以用一个addbook函数来实现,用modifyBook函数实现对书的参数的修改,DelBook函数实现对书的删除操作,SortBook函数实现对书的按照不同的参数进行排序,这些都建立在一个更基本的函数findbook上,该函数通过按照不同的参数对数进行查找,然后通过其它函数进行相应的操作。主函数完成测试功能。三 程序设计#include #include #include #include #include #include struct BookList char name32;char editor32;char num32;char price32;struct UserListchar user32;char word32;/函数声明/ bool OpenBookFile(fstream &);int menu();void AddBook(FILE *fp);void ModifyBook(FILE *fp);void DelBook(FILE *fp);BookList FindBook(FILE *fp);void ShowBook(FILE *fp);int GetCount(FILE *fp);void SortBook(FILE *fp);void Login();int GetMax(int a,int n);/*int main() Login();bool Exit=false;fstream BookFile;FILE *fp;fp=fopen(Book.txt,rb+);while(!Exit)switch(menu()case 1:AddBook(fp);break;case 2:ModifyBook(fp);break;case 3:DelBook(fp);break;case 4:FindBook(fp);break;case 5:ShowBook(fp);break;case 6:SortBook(fp);break;case 7:Exit=true;break;return 0;/*显示主菜单函数int menu()int m=0; while(true)cout1 增加新书endl; cout2 修改书内容endl;cout3 删除旧书endl;cout4 查找书endl;cout5 显示书endl;cout6 对书排序显示endl;cout7 退出程序endl;coutm;if(m=1&m=7)break;elsecout输入有误endl;return m;/增加书目void AddBook(FILE *fp) fopen(Book.txt,ab);BookList temp;memset(&temp,0,sizeof(struct BookList); ; couttemp.editor; couttemp.num; couttemp.price; fwrite(&temp,sizeof(BookList),1,fp); fclose(fp); cout添加成功!n 按任意键继续n;/修改书内容void ModifyBook(FILE *fp)int m=0;int done=1;int n=GetCount(fp);char str32;memset(str,0,32);char str232;BookList *book;book=new BookList n;for(int i=0;in;i+)memset(&booki,0,sizeof(BookList);BookList temp;memset(&temp,0,sizeof(BookList);BookList ModBook;memset(&ModBook,0,sizeof(struct BookList);cout请选择要修改的书;coutendl;ModBook=FindBook(fp);strcpy(str2,ModB); fp=fopen(Book.txt,rb); cout请选择修改的内容:; coutendl; cout1 书名endl; cout2 作者endl; cout3 书号endl; cout4 价钱endl; cout5 退出endl; coutm; if(m5) coutm; else switch(m) case 1: cout原书名为:ModB; coutstr; strcpy(ModB,str); cout修改后该书内容为; coutendl; cout书名:ModBendl; cout作者:ModBook.editorendl; cout书号:ModBook.numendl; cout价钱:ModBook.priceendl; fclose(fp); fp=fopen(Book.txt,rb); for(i=0;in;i+) fread(&temp,sizeof(BookList),1,fp);if(strcmp(,str2)=0)booki=ModBook;elsebooki=temp; fp=NULL; fp=fopen(Book.txt,wb+); for(i=0;in;i+) fwrite(&booki,sizeof(BookList),1,fp); fclose(fp); coutn按任意键继续n;/删除旧书void DelBook(FILE *fp) /只提供删除指定书名的书fp=fopen(Book.txt,rb);int n=GetCount(fp);int j=0; BookList *book;book=new BookList n-1;for(int i=0;in-1;i+)memset(&booki,0,sizeof(BookList);BookList temp;memset(&temp,0,sizeof(BookList);BookList DelBook;memset(&DelBook,0,sizeof(BookList);DelBook=FindBook(fp);cout确定删除吗?YNp;if(p=Y|y)for(i=0;in;i+)fread(&temp,sizeof(BookList),1,fp);if(strcmp(,DelB)!=0)bookj=temp;j+;fp=fopen(Book.txt,wb);fp=NULL;fp=fopen(Book.txt,wb+);for(j=0;jn-1;j+)fwrite(&bookj,sizeof(BookList),1,fp);fclose(fp);else fclose(fp);coutn按任意键继续n;/*对所有书进行排序void SortBook(FILE *fp)fp=fopen(Book.txt,rb);int n=GetCount(fp);BookList *book;book=new BookList n;for(int i=0;in;i+)memset(&booki,0,sizeof(BookList);int *p;p=new intn;BookList temp;memset(&temp,0,sizeof(BookList);for(i=0;in;i+)fread(&temp,sizeof(BookList),1,fp); booki=temp;pi=atoi(booki.price);int k=n;for(int j=0;jn;j+) int m=GetMax(p,k); cout书名:endl; cout作者:bookm.editorendl; cout书号:bookm.numendl; cout价钱:bookm.priceendl; pm=-1; fclose(fp);coutn按任意键继续n;int GetMax(int a,int n)int m=0;int temp=a0; for(int i=1;itemp) temp=ai; m=i; if(m0)return m;elsereturn 0;/*查找书BookList FindBook(FILE *fp)int done=0;fp=fopen(Book.txt,rb);cout1 按书名查找endl;cout2 按作者查找endl;cout3 按书号查找endl;cout4 退出查找endl;coutm;switch(m)case 1:char FindName32;memset(&FindName,0,sizeof(FindName);while(true)coutFindName;if(strlen(FindName)=0)cout输入有误!endl;elsebreak;BookList temp;memset(&temp,0,sizeof(BookList);while (!feof(fp)fread(&temp,sizeof(BookList),1,fp);if(strcmp(,FindName)=0)cout书名:endl;cout作者:temp.editorendl;cout书号:temp.numendl;cout价钱:temp.priceendl;done=1;return temp;break;if(done=1)cout未找到相应书endl;break;case 2:char FindName32;memset(&FindName,0,sizeof(FindName);while(true)coutFindName;if(strlen(FindName)=0)cout输入有误!endl;elsebreak;int done=1;BookList temp;memset(&temp,0,sizeof(BookList);while (!feof(fp)fread(&temp,sizeof(BookList),1,fp);if(strcmp(temp.editor,FindName)=0)cout书名:endl;cout作者:temp.editorendl;cout书号:temp.numendl;cout价钱:temp.priceendl;return temp;break;break;case 3:char FindName32;memset(&FindName,0,sizeof(FindName);while(true)coutFindName;if(strlen(FindName)=0)cout输入有误!endl;elsebreak;int done=1;BookList temp;memset(&temp,0,sizeof(BookList);while (!feof(fp)fread(&temp,sizeof(BookList),1,fp);if(strcmp(temp.num,FindName)=0)cout书名:endl;cout作者:temp.editorendl;cout书号:temp.numendl;cout价钱:temp.priceendl;return temp;break;break;case 4:break;default:;coutn按任意键继续n;/显示书void ShowBook(FILE *fp)fp=fopen(Book.txt,rb);BookList temp; memset(&temp,0,sizeof(struct BookList);fread(&temp,sizeof(BookList),1,fp);while(!feof(fp)cout书名:endl;cout作者:temp.editorendl;cout书号:temp.numendl;cout价钱:temp.priceendl;fread(&temp,sizeof(BookList),1,fp);coutendl;cout书的总数目为:GetCount(fp); fclose(fp);coutn按任意键继续n;int GetCount(FILE *fp)int count=0;fp=fopen(Book.txt,rb);BookList temp; memset(&temp,0,sizeof(struct BookList);while(!feof(fp)fread(&temp,sizeof(BookList),1,fp);count+;return count-1;fclose(fp);coutn按任意键继续n;void Login()UserList user3;for(int i=0;i=2;i+)memset(&useri,0,sizeof(struct UserList);strcpy(user0.user,fanming); /帐户密码 初始值 你自己可以修改strcpy(user0.word,123);int m=0;int done=0;char us
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年公共营养师考试试题及答案
- 经济分析师职业面试题目及答案
- 2025年专业技术人员公需课乡村振兴战略试题及答案
- 护士职业防护试题及答案
- 社区零售业态创新与数字化运营在社区文化活动风险评估中的应用报告
- 采购面试必 备:面试题库精 编
- 好胜心面试问题及答案精 编:提升求职竞争力实战指南
- 2025年医院感染管理知识竞赛试题(含答案)
- 2025年危重患者皮肤衰竭与护理试题(附答案)
- 2025年XX建筑施工项目消防应急演练方案策划脚本(2篇)
- 2025至2030年中国互联网数据中心应用行业市场深度评估及投资战略规划报告
- 八师兵团职工考试题库及答案
- 2025临时工合同协议书模板
- 2025年学习贯彻全国教育大会精神网络培训考试答案
- 推拿学基础题库及答案
- 水利工程档案验收项目法人自检工作报告
- 工资管理课件
- 电商客服培训 课件
- 2025社区治理一表通应用规范
- 中国古诗词歌曲课件
- GB/T 26148-2025高压水射流清洗作业安全规范
评论
0/150
提交评论