C++图书管理系统实验报告.docx
- 文档编号:25168671
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:14
- 大小:88.26KB
C++图书管理系统实验报告.docx
《C++图书管理系统实验报告.docx》由会员分享,可在线阅读,更多相关《C++图书管理系统实验报告.docx(14页珍藏版)》请在冰豆网上搜索。
C++图书管理系统实验报告
面向对象程序设计(C++语言)课程设计
设计说明书
图书管理系统的设计与实现
起止日期:
年—月—日至年—月—日
学生姓名
班级
学号
成绩
指导教师(签字)
计算机与通信学院
年月曰
图书管理系统一.需求分析
图书馆是目前生活中除了网络外的另一个获取知识的重要场所。
利用图书管
理系统对图书记录进行统一管理,包括新增图书记录,更改图书记录,删除图书记录等功能,实现图书管理工作的系统化,规范化和自动化,为图书管理提供便利。
同时是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。
有助于加深对面向对象程序设计中基础理论和基本知识的理解,培养了实践能力,促进理论与实践的结合。
.设计要求:
1.图书信息包括:
登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
试设计一图书信息管理系统,使之能提供以下功能:
2.系统以菜单方式工作
3.图书信息录入功能(图书信息用文件保存)一一输入
4.图书信息浏览功能一一输出
5.查询和排序功能:
(至少一种查询方式)一一算法
6.按书名查询
7.按作者名查询
8.图书信息的删除与修改(可选项)
.概要设计
1、类的设计
①、Book类的设计(内部函数流程图):
②、BDatabase类的设计:
③、主函数流程图:
4多态的实现
classPeople
{
public:
virtualvoidcard(){cout<<"cardpeople"< }; classStudent: publicPeople { public: virtualvoidcard(){cout<<"cardstudent"< }; 四、详细设计: #defineStrNum20 #defineType20 #inelude #include #include #include usingnamespacestd; constintMaxb=100;〃最多可存储的图书 classPeople { public: virtualvoidcard(){cout<<"cardpeople"< }; classStudent: publicPeople { public: virtualvoidcard(){cout<<"cardstudent"< }; classBook returnbookname[StrNum]; } //获取图书编号 intgetnum() returnnum; } intgetlab() { returnlab; } voidsetname(charna[]) { strcpy(bookname,na); } voidsetkind(charkin[]) { strcpy(bookkind,kin); } voiddelbook() { lab=1; 〃获取删除标记 〃设置书名 //设置类型 〃删除图书 } voidaddbook(intn,char*na,char*kin)〃增加图书 { lab=0; num=n; strcpy(bookname,na);strcpy(bookkind,kin); } voiddisp()〃输出图书 { cout.flags(ios: : left);//设置对齐的标志位为左 cout< }; classBDatabase { private: inttop; 〃图书记录 //构造函数,将book.txt读到book[]中 Bookbook[Maxb]; public: BDatabase() { Bookb; top=-1; fstreamfile("book.txt",ios: : in); while (1) { file.read((char*)&b,sizeof(b)); if(! file)break; top++; book[top]=b; } file.close(); } voidclear()〃全删 { top=-1; } intaddbook(intn,char*na,char*kin)〃增加图书 { Book*p=query(n); if(NULL==p) { top++; book[top].addbook(n,na,kin); return1; } return0; } Book*query(intbookid)〃查找图书 { for(inti=0;i<=top;i++) if(book[i].getnum()==bookid&&book[i].getlab()==0) { return&book[i]; } returnNULL; } voiddisp()//图书库 { for(inti=0;i<=top;i++) if(book[i].getlab()==0) book[i].disp(); } ~BDatabase()//析构函数,将book[]写到book.txt文件中,实现文 本的写入 { fstreamfile("book.txt",ios: : out); for(inti=0;i<=top;i++) if(book[i].getlab()==0) file.write((char*)&book[i],sizeof(book[i]));file.close(); } }; voidmain() { BDatabaseBookDB; charchoice; charbname[40]; charbkind[40]; charnewType[20]; intbookid; Book*b; while(choice! ='0') { cout<<"\t****************************************************************break; n"; cout<<"请选择(1,2,3,4,5,6,0): "; cin>>choice; switch(choice) { case'1': cout<<"输入图书编号: "< cin>>bookid; cout<<"输入图书类型: "< cin»newType; cout<<"输入图书书名: "< cin»bname; BookDB.addbook(bookid,bname,newType); case2: cout<<"输入图书编号: "< cin>>bookid; b=BookDB.query(bookid); if(b==NULL) { cout<<"该图书不存在"< } cout<<"输入新的书名: "< cin»bname; b->setname(bname); cout<<"输入新的类型: "< cin>>bkind; b->setkind(bkind); break; case3: cout<<"读入图书编号: "< cin>>bookid; b=BookDB.query(bookid); if(b==NULL) { cout<<"该图书不存在"< } chartg1; cout<<"确定要删除此记录吗? (Y/N)"< cin>>tg1; if(tg1! ='n'&&tg1! ='N') { b->delbook(); cout<<"已成功删除该书记录! "< break; } case'4': cout<<"读入图书编号: "< cin>>bookid; b=BookDB.query(bookid); if(b==NULL) { cout<<"该图书不存在"< } cout<<"图书编号图书名称图书类型\n"; b_>disp(); break; case'5': cout<<"图书编号图书名称图书类型\n"; b=BookDB.query(bookid); b->disp(); break; case'6': chartg2; cout<<"确定要清空所有记录吗? (Y/N)"< cin>>tg2; if(tg2! ='n'&&tg2! ='N') { BookDB.clear(); cout<<"已成功清空记录! "< break; } case'O': break; default: cout<<"输入错误,请从新输入(数字为0~6): "; case'7': Studentstudent; People*ppeople=&student; People&ref=student; ppeople->card(); ref.card();break; } } } 5.用户使用说明 本系统实现了图书管理系统的典型功能,包括查询所有记录的信息,添加查找等功能,基本符合设计要求,利用类的封装实现了一定的安全性,函数的实现与调用在主函数中实现。 但在记录查询上仍有缺陷,有待于完善。 六、实验心得: 1、通过实验加深了对C++的了解,在程序设计上提高了自己的动手能力,在实 践中增强了自己的编程水平。 2、但是因为自己独立完成且能力有限,还有部分功能未能完善,例如对书名, 编号的排序等等,这些局限性都是有待逐步完善的方面。 3、而且通过这次课程设计,我培养了自己对C++编程的兴趣,编程能力也有所提高,但仍存在许多不足,不能独自写出功能很齐全的代码,写代码要参考很多资料,所以今后应培养自己独立写代码的能力。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 图书 管理 系统 实验 报告