1、C+程序设计课程设计设计说明书课程名称: 程序设计课程设计 设计题目: 图书管理程序 指导教师: 班 级: 学 号: 学生姓名: 同组人员: 成 绩: 评 语: 计算机科学与工程学院2014年06月 20 日 图书管理程序课程设计实验报告 - 15 -目 录第1章 概述21。1 选题21.2选题的背景和意义21.3团队分工和个人贡献3第2章 系统分析(需求分析)32.1系统的整体需求32.2 系统的功能需求32.3系统主要模块流程图3第3章 系统设计53.1 系统的整体设计53.2 系统的主要模块设计5第4章 系统实现6第5章 结束语12参考文献12第1章 概述1.1 选题第十题:图书管理程序
2、图书信息的组成部分为:书号、书名、作者名、出版社、出版时间、价格等。要求用类和对象实现:1) 新书上架:添加图书信息2) 图书浏览:输出所有图书信息3) 图书查询:可按书号、书名或作者名查询(按书号查询时,因书号唯一,结果仅为一条记录;按书名或作者名查询时,结果可能为多条记录)4)图书下架:删除指定图书信息,如按书号1。2选题的背景和意义选题背景:图书馆是我们日常生活中必不可少的学习、阅读的场所,借阅图书则是我们进入图书馆进行阅读的首要行为。为了能够借阅到我们想要借阅的图书,我们需要借助电脑查询需要借阅的图书的具体信息,然后找出图书后再去借阅处刷卡登记。如今我们处于一个知识大爆炸的时代,图书种
3、类数量剧增,工作人员每天不仅要登记借阅者借阅的图书,还要登记新购进的图书,工作量繁重。而随着科学技术的进步,计算机日益进入我们的生活工作之中,我们能否利用计算机技术,取代原来的手工登记,提高图书管理的效率呢?答案是肯定的。选题意义:借助计算机C+中的知识,编写相应的图书管理程序就可以实现这一功能.利用图书管理程序记录图书信息,不仅能节省我们大量的工作时间,减轻巨大的工作量,提高工作效率,还能够减少工作失误。1。3团队分工和个人贡献第一章 概述第四章 系统实现源代码中:(1) 图书浏览功能(2) 图书删除功能第2章 系统分析(需求分析)2。1系统的整体需求该系统需要完成的内容:用类和对象实现新书
4、上架、 图书浏览、 图书查询、图书下架。该系统需要完成的整体目标:系统能够正常运行,基本上实现添加、删除图书信息,显示所有信息,能够由相应条件查阅图书信息这四种功能。2.2 系统的功能需求必须完成的模块:(1)界面模块:当进入该管理系统时候,提示相应的说明,引导如何操作(2) 新书上架模块:能够添加书号、书名、作者名、出版社、出版时间、价格这些图书信息.(3) 图书浏览模块:能够输出所有图书信息。(4) 图书查询模块:可按条件查询图书信息,当输入书号或书名或作者名时候,相对应的图书信息便可自动搜索出来.(5) 图书下架模块:可按书号删除指定图书信息。创新模块:2.3系统主要模块流程图显示主界面
5、yyy操作6退出系统显示所有图书信息1按书号2按书名3按作者结束结束yyyynnn结束nn判断进行16中的哪项操作操作1操作2操作3输入图书信息按书号删除图书图书信息图书信息查询操作4结束注:数字代表相应操作下的子操作第3章 系统设计3。1 系统的整体设计图书查询调用所有信息调用书号调用书号、书名或作者保存图书信息录入录入图书信息到txt删除信息显示所有图书信息显示操作信息退出系统保存保存3。2 系统的主要模块设计(1)登陆界面模块。该模块显示管理程序的名称,提示相应的操作。(2)信息录入模块.登陆界面录入ISBN、书名、书号、作者、出版社、出版时间、价格保存到txt文件中(2)图书浏览模块调
6、用txt文件中所有图书信息输入浏览所有图书信息指令显示所有图书信息(3)图书查询模块登陆界面输入相应查询指令图书查询界面调用图书信息文件显示图书信息(4)图书下架模块登陆界面输入删除指令根据删除提示输入要删除的图书号提示删除内容,并删除第4章 系统实现1登入界面实现方式:调用主函数,利用Book。read ()读入数据,同时定义功能选项按钮char function=0;,对function的真假进行判断,若function为真,即与初值相同,实现while循环内语句。界面主要程序语句:coutendl;cout”t*n;cout”tttt欢迎使用图书管理系统”endl;cout”ttttt请
7、选择操作n”endl;cout”tttt1 创建新书信息”endl;couttttt2 显示所有图书endl;couttttt3 按指定条件查询书目endl;couttttt4 按书号删除书目”endl; couttttt5 退出系统并保存修改endl; cout”ttt(查询可按书号/ 作者/ 书名查询)”endl; coutt*n”;调试运行代码后结果如下:2、创建图书信息当选择按钮1,执行main函数中function=1的条件语句,首先定义字符串string a,b,c,d,e,f; 然后调用includeiostream,根据提示输入相应的书本信心,建立对象book newbook(
8、a,b,c,d,e,f);,利用添加函数Book。add(newbook)把数据添加到新建对象里,然后调用display()函数显示此次输入的信息。 输入数字1后按提示输入相应信息,结果如下:3、 显示所有图书信息当选择按钮2,执行function=2的条件语句。Main函数调用include,利用如下语句: cout这是所有藏书:endl; cout*endl;输出相应的提示信息和图案,然后调用函数display_all (),显示出所有信息。4、 按条件查询 当选择按钮3,执行function=3的条件语句。main函数调用#includeiostream,输出相应选择的提示,执行如下代码
9、: cout请选择查询方式”endl; cout”1 按ISBN查询”endl; cout2 按书名查询”endl; cout”3 按作者查询”文件,当输入好相应的信息,执行如下语句: cout以下是查询结果”endl; cout输出相应的提示信息后退出系统. 在登录界面输入“5”,回车。第5章 结束语这次课程设计历时数个星期,通过课程设计,我发现了自己的很多不足,知识上还存在很多漏洞,我看到了自己的实践经验还比较缺乏,理论联系实际的能力还急需提高。为完成这次课程设计我确实付出很多,有苦有乐,这十几天的工作日子,怎么形容呢,每次在实验室回来就会心情不好,感觉自己什么都没有做成,慢慢的摸索着,开
10、始入门,而且有了一点成就感,就这样每一次都比前一次收获多,心情也慢慢好了,而且我的系统也一天比一天的完善。毕竟没有白费心血,以艰辛的付出最终还是获得不少回报!总之,计算机是一门实践性很强的学科,要想学好,就必须多练习,多总结,只有这样,才能够更加深入地了解,才能够学会如何去运用它。参考文献1郑莉,董渊,何江舟。C+程序设计M.清华大学出版社,2010.2谭浩强.C程序设计M。清华大学出版社.20073李强,贾云霞。Visual C+项目开发实践。北京:中国铁道出版社,2004.4李书贤。C+Primer中文版M。人民邮电出版社附录源代码:#includeincludecstdioinclude
11、stdlib。h /cstdio是将stdio。h的内容用C+头文件的形式表示出来。using namespace std;includeclass book private:string isbn; /书号 string name; /书名string writer; /作者string publisher; /出版社string time; /出版时间string price; /图书价格public:book()book(string a,string b,string c,string d,string e,string f) isbn=a;name= b;writer=c;publi
12、sher=d;time=e; price=f; string get_name()return name;string get_isbn()return isbn; string get_writer()return writer;void display() /图书内容的显示 cout”书号:isbnendl书名:”nameendl”作者:”writerendl”出版社:publisherendl”出版时间:”timeendl”价格:price元endl*”endl;class database:public book /公有继承(public)的定义class B:public A ;pr
13、ivate: book shumu100; int sum;public: database()sum=0; void add(book a) if(sum=100) cout添加失败,内存已满!”endl; else shumusum=a; sum+; cout”添加新书目成功,以下是本书信息endl; cout”*”endl; void delete_by_isbn(book a) int flag=0; if(sum=0) cout”删除失败,已经没有存档了!”endl; else for(int i=0;isum;i+) if(shumui.get_isbn()=a.get_isbn(
14、) cout”删除书目成功,以下是删除的书信息”endl; shumui。display (); for(int j=i;jsum-1;j+) shumuj=shumuj+1; flag=1; sum;break; if(!flag) cout”the book doest exist!”endl; void search_by_name(string names) /按书名查找 int flag=0; for(int i=0;isum;i+) if(shumui。get_name()=names) shumui。display (); flag=1; if(flag=0) cout”the
15、book doest exist!”endl; void search_by_isbn(string names) /按书号查找 int flag=0; for(int i=0;isum;i+) if(shumui.get_isbn()=names) shumui.display (); flag=1; if(flag=0) coutthe book doest exist!endl; void search_by_writer(string names) /按作者查找 int flag=0; for(int i=0;isum;i+) if(shumui。get_writer()=names)
16、 shumui.display (); flag=1; if(flag=0) coutthe book doest exist!endl; void display_all() /显示全部信息 for(int i=0;isum;i+) shumui.display (); void read() FILE fp; if((fp=fopen(”C:UsersfeiDesktop图书馆.txt,rb+)=NULL)/注意路径; rb+读写打开一个二进制文件,只允许读写数据。 cout文件打开失败n”; system(PAUSE); exit(0); fread(sum,2,1,fp); /从一个文
17、件中读数据&sum:用于接收数据的地址(指针);4:单个元素的大小,单位是字节;1:.元素个数,每次读取个元素;fp:提供数据的文件指针for(int i=0;isum;i+) fread(&shumui,sizeof(shumui),1,fp);fclose(fp); void write() FILE fp2; if((fp2=fopen(”C:UsersfeiDesktop图书馆.txt,wb+”)=NULL)/注意路径;wb+只写打开或新建一个二进制文件;只允许写数据。 cout文件打开失败n; system(PAUSE”); exit(0);/exit(0)表示正常退出 fwrite
18、(sum,2,1,fp2); for(int i=0;isum;i+)fwrite(&shumui,sizeof(shumui),1,fp2);/sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。 fputc(EOF,fp2);/将字符ch写到文件指针fp所指向的文件的当前写指针的位置;EOF是End Of File 的缩写,表示“文件结束。 fclose(fp2); ;/主函数int main() database Book;char function=0;Book。read ();/界面while (function!= 5)coutendl;coutt*n
19、”;couttttt欢迎使用图书管理系统endl;cout”ttttt请选择操作n”endl;cout”tttt1 创建新书信息endl;cout”tttt2 显示所有图书”endl;cout”tttt3 按指定条件查询书目endl;cout”tttt4 按书号删除书目”endl; couttttt5 退出系统并保存修改”endl; coutttt(查询可按书号/ 作者/ 书名查询)”endl; coutfunction;/图书书号、书名、作者、出版社、出版时间、价格信息的录入换码符t,表示水平制表位(horizeontal tab),它的作用是将光标移到最接近8的倍数的位置,使得后面的输入从
20、此开始。换句话说,让所有的数据都紧跟在制表符后面输出。/换码符t,表示水平制表位,它的作用是将光标移到最接近8的倍数的位置,使得后面的输入从此开始。换句话说,让所有的数据都紧跟在制表符后面输出。if(function=1) string a,b,c,d,e,f; /定义字符串couta;cout请输入书名”b;coutc;cout请输入书的出版社endl;cind;cout请输入书的出版时间endl;cine;cout”请输入书的价格f;book newbook(a,b,c,d,e,f);Book.add(newbook);newbook。display();system(PAUSE);sys
21、tem(”CLS”); /显示所有图书信息else if(function=2)cout这是所有藏书:endl; cout”*endl;Book。display_all (); system(”PAUSE);system(”CLS”); /按条件查询图书,输入按书号查询,输入按书名查询,输入按作者查询else if(function=3) cout”请选择查询方式endl; cout”1 按ISBN查询endl; cout”2 按书名查询”endl; cout”3 按作者查询endl; char j; string search; cinj; if(j=1) cout”请输入ISBN号sear
22、ch; cout以下是查询结果”endl; cout”*endl; Book.search_by_isbn (search); /按书号查询图书信息函数的调用 system(”PAUSE”); system(”CLS”); else if(j=2) cout请输入书名endl; /按书名查询 cinsearch; cout”以下是查询结果”endl; cout*endl; Book.search_by_name (search); /按书名查询图书信息函数的调用 system(PAUSE); system(CLS”); else if(j=3) /按作者查询 cout”请输入作者名”searc
23、h; cout以下是查询结果endl; cout”*”endl; Book.search_by_writer (search); /按作者名查询图书信息函数的调用 system(PAUSE”); system(”CLS); else cout输入错误,请重新操作!endl; /错误提示 system(PAUSE”); system(CLS); /按书名删除图书 else if(function=4) string a; cout请输入要删除的书号”endl; cina;book del(a,” ”, ”, ”, ”,” ”);Book。delete_by_isbn (del); /按书名删除函
24、数的调用system(”PAUSE); system(CLS); / 退出系统并保存修改else if(function=5)/未按照主界面提示信息操作,提示错误elsecout”输入错误,请重新选择!endl; system(PAUSE); system(”CLS); /退出系统 system(CLS”); Book.write (); for(int i=0;i8;i+) cout” ”endl; for(int i=0;i55;i+) cout*”; coutendl; cout”您已退出本图书管理系统,您的修改已经保存,欢迎再次使用!”endl; for(int i=0;i55;i+) cout”*; coutendl; system(PAUSE); exit(0);