C++图书管理系统实验报告.docx
- 文档编号:26389844
- 上传时间:2023-06-18
- 格式:DOCX
- 页数:15
- 大小:71.95KB
C++图书管理系统实验报告.docx
《C++图书管理系统实验报告.docx》由会员分享,可在线阅读,更多相关《C++图书管理系统实验报告.docx(15页珍藏版)》请在冰豆网上搜索。
C++图书管理系统实验报告
面向对象程序设计(C++语言)课程设计
设计说明书
图书管理系统的设计与实现
起止日期:
年月日至年月日
学生姓名
班级
学号
成绩
指导教师(签字)
计算机与通信学院
年月日
图书管理系统
一.需求分析
图书馆是目前生活中除了网络外的另一个获取知识的重要场所。
利用图书管理系统对图书记录进行统一管理,包括新增图书记录,更改图书记录,删除图书记录等功能,实现图书管理工作的系统化,规范化和自动化,为图书管理提供便利。
同时是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。
有助于加深对面向对象程序设计中基础理论和基本知识的理解,培养了实践能力,促进理论与实践的结合。
二.设计要求:
1.图书信息包括:
登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
试设计一图书信息管理系统,使之能提供以下功能:
2.系统以菜单方式工作v
3.图书信息录入功能(图书信息用文件保存)--输入v
4.图书信息浏览功能--输出v
5.查询和排序功能:
(至少一种查询方式)--算法v
6.按书名查询
7.按作者名查询
8.图书信息的删除与修改(可选项)v
三.概要设计
1、类的设计
①、Book类的设计(内部函数流程图):
②、BDatabase类的设计:
③、主函数流程图:
4多态的实现
classPeople
{
public:
virtualvoidcard(){cout<<"cardpeople"< }; classStudent: publicPeople { public: virtualvoidcard(){cout<<"cardstudent"< }; 四、详细设计: #defineStrNum20 #defineType20 #include #include #include #include usingnamespacestd; constintMaxb=100;//最多可存储的图书 classPeople { public: virtualvoidcard(){cout<<"cardpeople"< }; classStudent: publicPeople { public: virtualvoidcard(){cout<<"cardstudent"< }; classBook { private: intlab;//删除标记 intnum;//图书编号 intadd;//增加标记 charnumber[StrNum];//编号 charbookname[StrNum];//书名 charbookkind[Type];//图书类型 public: Book(){} chargetkind()//获取图书类型 { returnbookkind[Type]; } chargetname()//获取书名 { 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; Bookbook[Maxb];//图书记录 public: BDatabase()//构造函数,将book.txt读到book[]中 { 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******************************************************************\n"; cout<<"\n\n"; cout<<"\t\t\t图书管理系统\n\n"; cout<<"\t\t\t1新增图书记录\n"; cout<<"\t\t\t2更改图书记录\n"; cout<<"\t\t\t3删除图书记录\n"; cout<<"\t\t\t4查找图书记录\n"; cout<<"\t\t\t5显示图书记录\n"; cout<<"\t\t\t6清空全部记录(慎用)\n"; cout<<"\t\t\t0退出系统\n"; cout<<"\t\t\t7人员\n"; cout<<"\n\n"; cout<<"\t******************************************************************\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); break; case'2': cout<<"输入图书编号: "< cin>>bookid; b=BookDB.query(bookid); if(b==NULL) { cout<<"该图书不存在"< break; } cout<<"输入新的书名: "< cin>>bname; b->setname(bname); cout<<"输入新的类型: "< cin>>bkind; b->setkind(bkind); break; case'3': cout<<"读入图书编号: "< cin>>bookid; b=BookDB.query(bookid); if(b==NULL) { cout<<"该图书不存在"< break; } 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<<"该图书不存在"< break; } 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'0': break; default: cout<<"输入错误,请从新输入(数字为0~6): "; case'7': Studentstudent; People*ppeople=&student; People&ref=student; ppeople->card(); ref.card(); break; } } } 五.用户使用说明 本系统实现了图书管理系统的典型功能,包括查询所有记录的信息,添加查找等功能,基本符合设计要求,利用类的封装实现了一定的安全性,函数的实现与调用在主函数中实现。 但在记录查询上仍有缺陷,有待于完善。 六、实验心得: 1、通过实验加深了对c++的了解,在程序设计上提高了自己的动手能力,在实践中增强了自己的编程水平。 2、但是因为自己独立完成且能力有限,还有部分功能未能完善,例如对书名,编号的排序等等,这些局限性都是有待逐步完善的方面。 3、而且通过这次课程设计,我培养了自己对C++编程的兴趣,编程能力也有所提高,但仍存在许多不足,不能独自写出功能很齐全的代码,写代码要参考很多资料,所以今后应培养自己独立写代码的能力。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 图书 管理 系统 实验 报告