您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > c++图书信息管理系统课程设计报告
C++语言程序课程设计报告课程设计题目:图书信息管理系统学号:1021112431姓名:施敏专业:软件工程(电子商务)班级:10211124指导教师:许志文2010年12月31日图书管理系统一.设计目的:图书馆是目前生活中除了网络外的另一个获取知识的重要场所。利用图书管理系统对图书记录进行统一管理,包括新增图书记录,更改图书记录,删除图书记录等功能,实现图书管理工作的系统化,规范化和自动化,为图书管理提供便利。同时是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。有助于加深对面向对象程序设计中基础理论和基本知识的理解,培养了实践能力,促进理论与实践的结合。二.设计要求:1.图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能:2.系统以菜单方式工作3.图书信息录入功能(图书信息用文件保存)--输入4.图书信息浏览功能--输出5.查询和排序功能:(至少一种查询方式)--算法6.按书名查询7.按作者名查询8.图书信息的删除与修改(可选项三.设计方案及流程图:1、类的设计①、Book类的设计(内部函数流程图):②、BDatabase类的设计:③、主函数流程图:ClassBook获取图书类型获取书名获取图书编号获取删除标志设置书名设置类型删除图书增加图书输出图书ClassBDatabase图书记录删除全部记录增加记录查找图书记录图书库(函数)四、程序源代码:#defineStrNum20#defineType20#includeiostream#includeiomanip#includestring#includefstream//输入/输出文件流类usingnamespacestd;constintMaxb=100;//最多可存储的图书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);//设置对齐的标志位为左coutsetw(15)numsetw(20)booknamesetw(15)bookkindendl;}};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\n\n;cout\t******************************************************************\n;cout请选择(1,2,3,4,5,6,0):;cinchoice;switch(choice){case'1':cout输入图书编号:endl;cinbookid;cout输入图书类型:endl;cinnewType;cout输入图书书名:endl;cinbname;BookDB.addbook(bookid,bname,newType);break;case'2':cout输入图书编号:endl;cinbookid;b=BookDB.query(bookid);if(b==NULL){cout该图书不存在endl;break;}cout输入新的书名:endl;cinbname;b-setname(bname);cout输入新的类型:endl;cinbkind;b-setkind(bkind);break;case'3':cout读入图书编号:endl;cinbookid;b=BookDB.query(bookid);if(b==NULL){cout该图书不存在endl;break;}chartg1;cout确定要删除此记录吗?(Y/N)endl;cintg1;if(tg1!='n'&&tg1!='N'){b-delbook();cout已成功删除该书记录!endl;break;}case'4':cout读入图书编号:endl;cinbookid;b=BookDB.query(bookid);if(b==NULL){cout该图书不存在endl;break;}cout图书编号图书名称图书类型\n;b-disp();break;case'5':cout图书编号图书名称图书类型\n;b-disp();break;case'6':chartg2;cout确定要清空所有记录吗?(Y/N)endl;cintg2;if(tg2!='n'&&tg2!='N'){BookDB.clear();cout已成功清空记录!endl;break;}case'0':break;default:cout输入错误,请从新输入(数字为0~6):;}}}五.总结:本系统实现了图书管理系统的典型功能,包括查询所有记录的信息,添加查找等功能,基本符合设计要求,利用类的封装实现了一定的安全性,函数的实现与调用在主函数中实现。但在记录查询上仍有缺陷,有待于完善。六、实验心得:1、通过实验加深了对c++的了解,在程序设计上提高了自己的动手能力,在实践中增强了自己的编程水平。2、但是因为自己独立完成且能力有限,还有部分功能未能完善,例如对书名,编号的排序等等,这些局限性都是有待逐步完善的方面。3、而且通过这次课程设计,我培养了自己对C++编程的兴趣,编程能力也有所提高,但仍存在许多不足,不能独自写出功能很齐全的代码,写代码要参考很多资料,所以今后应培养自己独立写代码的能力。
本文标题:c++图书信息管理系统课程设计报告
链接地址:https://www.777doc.com/doc-2904202 .html