版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEword文档可自由复制编辑面向对象程序设计课程设计报告题目:图书信息管理系统专业班级:通信3班学生组长:小组成员:指导教师:分数:2014年4月课程设计任务书设计题目图书馆信息管理系统学生姓名所在院系电子信息工程系专业、年级、班11级通信3班设计要求:图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等,设计图书管理系统,使之能提供以下功能:1、系统以菜单方式工作;2、图书信息浏览功能——输出;3、查询和排序功能:(至少一种方式)(1)按书名查询;(2)按作者名查询;(3)图书信息的删除与修改(管理员)4、图书信息录入功能(图书信息用文件保存)——输入;(管理员)参考文献阅读:[1]谭浩强.《C++面向对象程序设计》.清华大学出版社,2006.1[2]张春林,马成勇,刘钧.《数据库系统设计与开发》.清华大学出版社,2005[3]梁普选.《VisualC++程序设计与实践》.清华大学出版社.2006[4]张瑞丰.《C++语言程序设计》.清华大学出版社,2006工作计划:由组长将程序细致的分为3个软件模块,分别由3位组员各自完成自己的软件模块设计。最后再将3部分合并。之后再对总的程序进行运行调试及改进。任务下达日期:2014年3月22日任务完成日期:2013年4月20日指导教师(签名):学生(签名):目录第TOC\o"1-2"\h\z\u一章、总体设计 41.1设计目的 41.2设计要求 41.3设计方案选取与论证 41.4模块划分与任务安排 5第二章、软件设计 52.1Book类模块的软件设计 52.2BDatabase类模块的软件设计 72.3主界面程序模块设计 10第三章、系统实现及调试过程 14第四章、结论 15致谢 16参考文献 16一、总体设计1.1设计目的图书馆提供的物质资源越来越丰富,如何高效准确地对馆藏资料进行整理、借还、盘点成为困扰图书馆管理人员的问题。以前,都是用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。基于这些问题,有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。利用图书管理系统对图书记录进行统一管理,包括新增图书记录,更改图书记录,删除图书记录等功能,实现图书管理工作的系统化,规范化和自动化,为图书管理提供便利。同时,图书馆是目前生活中除了网络外的另一个获取知识的重要场所,利用图书管理系统可以更加高效查询、寻找到自己所需求的书籍。设计一个图书信息管理系统是学习完《面向对象程序设计》课程后进行的一次全面综合联系。有助于加深对面向对象程序设计中基础理论和基础知识的理解,培养了实践能力,促进理论与实践的结合。1.2设计要求图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等,设计图书管理系统,使之能提供以下功能:1、系统以菜单方式工作;2、图书信息浏览功能——输出;3、查询和排序功能:(至少一种方式)(1)按书名查询;(2)按作者名查询;(3)图书信息的删除与修改(管理员);4、图书信息录入功能(图书信息用文件保存)——输入;(管理员)1.3设计方案选取与论证本次课程设计我们组的题目为:图书信息管理系统的开发,总的设计目标是实现图书管理的系统化、规范化和自动化,实现对图书资料的集中统一的管理。是利用数据库软件编制一个管理软件,用以实现图书、读者以及日常工作等多项管理。同时对整个系统的分析、设计过程给出一个完整论证。图书管理系统是一种基于集中统一规划的数据库数据管理新模式。在对图书信息的管理,其实是对图书信息的管理。本系统的建成无疑会为管理者对图书管理系统提供极大的帮助。本系统的设计主要从以下几方面做起:系统业务流程分析、系统的功能设计、系统的数据库结构设计等。作这些工作需对数据库知识有足够认识,并深入的了解C++的运用知识。新系统的使用能否可以很好的解决这些问题要看系统的可行性,可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。系统的可行性分析有以下几个方面:(1)技术可行性:处理速度快、准确通过权限的设置,数据的安全性好、方便查询、借阅管理等。(2)经济可行性:系统建设不需要很大的投入、可缩减人力投入。(3)运行上可行性:本系统作为一个小型的图书馆信息管理系统,所耗费的资源非常的小。(4)从各种社会因素可行性分析:可降低工作人员工作强度,提高效率,会得到学校工作人员的一致同意的。综上所述通过可行性分析认为新系统的开发方案切实可行,可进行开发。本系统主要实现对图书馆信息的管理,主要功能为管理有关书籍的信息。本系统结构主要为书籍信息管理模块。书籍信息管理可以浏览书籍的信息,可以对书籍信息进行维护。可见,本系统并不复杂,主要解决的问题是利用关键字对数据库进行查询。1.4模块划分与任务安排由于本系统具有很强的模块性,为了使每一个组员都能过在本次课设上学习到东西,同时也是为了能过合理的分配各个成员的课程设计任务,所以我们组对本系统进行了模块拆分,并由本组的每一个组员负责拆分中凡人一个模块的设计及软件的编写。在每一个模块程序编写完成后,在进行总体的合成、调试。我们设计的系统分为:Book类的设计、BDatabase类的设计。以下是我们组的分配任务:由组员设计模块:Book类的设计。由组员设计模块:BDatabase类的设计。由组员进行主界面程序模块设计。二、软件设计2.1Book类模块的软件设计(负责同学:)本模块主要的作用是录入图书的信息,在程序中先定义一个book类,类中主要分为获取图书类型、获取书名、获取图书编码、获取删除标志、设置书名、设置图书类型、删除图书、增加图书和输出图书9个小的模块其流程图如下:根据设计的流程模块设计程序代码,程序设计了六个私有成员,即删除标记:lab;图书编号:num;增加标记:add;编号:number[StrNum];书名:bookname[StrNum];图书类型:bookkind[Type];同时还设计了同样多的共有成员,使程序能够在运行的时候提取书名、删除书名、添加编号等等。这样的book库实现了图书信息的录入及提取。以下是本系统book类的基本设计程序: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<<setw(15)<<num<<setw(20)<<bookname<<setw(15)<<bookkind<<endl;}};2.2BDatabase类模块的软件设计(负责同学:)本模块的设计主要是满足图书信息的保存及文本的写入,与book类相互依存。本模块是实现本系统的重要一部分。设计的框图如下:由于存入的图书信息并不是保存在程序中,而是使它存在book.txt中,所以在本模块设计中,使用了构造函数BDatabase将book.txt读到book[]中和析构函数~BDatabase()将book[]写到book.txt文件中,实现文本的写入。所以,本部分的作用至关重要。其主要的的程序如下: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();}};2.3主界面程序模块设计(负责同学:)一个完整的图书信息管理系统需要一个界面来让我们明白无误的功能及使用的流程。主界面模块的设计是更具设计的程序集我们在实际使用中和课设的要求,输出一个界面,是我们能过通过界面的引导,实现对本系统的使用。主界面板设计上,设置了:添加图书、删除图书、查找图书等等7个提示目录。其设计框图如下:一个合理的主菜单界面,才能够完成我们所需求的各个功能。主要的程序如下: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):";cin>>choice;switch(choice){case'1':cout<<"输入图书编号:"<<endl;cin>>bookid;cout<<"输入图书类型:"<<endl;cin>>newType;cout<<"输入图书书名:"<<endl;cin>>bname;BookDB.addbook(bookid,bname,newType);break;case'2':cout<<"输入图书编号:"<<endl;cin>>bookid;b=BookDB.query(bookid);if(b==NULL){cout<<"该图书不存在"<<endl;break;}cout<<"输入新的书名:"<<endl;cin>>bname;b->setname(bname);cout<<"输入新的类型:"<<endl;cin>>bkind;b->setkind(bkind);break;case'3':cout<<"读入图书编号:"<<endl;cin>>bookid;b=BookDB.query(bookid);if(b==NULL){cout<<"该图书不存在"<<endl;break;}chartg1;cout<<"确定要删除此记录吗?(Y/N)"<<endl;cin>>tg1;if(tg1!='n'&&tg1!='N'){b->delbook();cout<<"已成功删除该书记录!"<<endl;break;}case'4':cout<<"读入图书编号:"<<endl;cin>>bookid;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;cin>>tg2;if(tg2!='n'&&tg2!='N'){BookDB.clear();cout<<"已成功清空记录!"<<endl;break;}case'0':break;default:cout<<"输入错误,请从新输入(数字为0~6):";三、系统实现及调试过程运行程序,系统输出主界面,界面如下:按照输出界面的提示项目,调试各个功能:测试新增图书记录功能 :测试更改图书记录功能:测试删除图书记录功能:测试查找图书记录功能:测试显示图书记录功能:测试清空全部图书记录功能:调试中,我们可以看到本系统以菜单方式工作,具备了图书信息浏览功能,同时还具有查询和排序功能,并能过按按照书名和编号查询录入的图书信息,在图书信息的删除与修改方面也能够实现设计的要求。以下是对本系统完成功能测试的解说。测试单元: 图书信息单元 测试类型:功能测试编号测试说明期望结果实际结果成功/失败1测试新书信息添加是否成功新书信息成功写入数据库数据库中可以找到新添加记录。成功2测试图书删除将输入新书信息删除数据库中新书纪录删除成功3测试图书信息修改将重新输入数据录入到数据库中修改图书信息信息成功成功表3.1图书信息管理测试用例表测试单元: 查询读者信息单元 测试类型:功能测试编号测试说明期望结果实际结果成功/失败1测试按读者的各项信息是否可以进行查询根据不同的查询信息对读者进行查询显示查询项成功2测试多项的查询条件是否能进行查询根据不同的查询条件对读者信息进行查询显示查询结果成功表3.2查询管理测试用例表根据上面的测试,该系统各功能模块均能正常使用。同时,这些功能也是本次课程设计的任务要求,所以本次课程设计完成。四、结论总结:本系统实现了图书管理系统的典型功能,包括查询所有记录的信息,添加查找等功能,基本符合设计要求,利用类的封装实现了一定的安全性,函数的实现与调用主要在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 货币资金报表范例
- Windows Server网络管理项目教程(Windows Server 2022)(微课版)10.3 任务2 DNS中继代理
- 大型机械设备管理制度与安全操作规程(修改版1)
- 煤化工艺学煤低温干馏
- 幼儿园安全教育教案18篇
- 小学安全教育主题班会教案
- 高三烃含氧衍生物归纳
- 全省小学数学教师赛课一等奖数学一年级上册(人教2024年新编)《10的认识 》课件
- 生命在你手中主题班会
- 病历书写规范
- 语法填空技巧课件-高中英语初高中衔接
- 道法认识生命 课件-2024-2025学年统编版道德与法治七年级上册
- 可靠性评估指标体系构建
- 2024年四川甘孜州事业单位招聘历年高频难、易错点500题模拟试题附带答案详解
- 专题08 向量的运算(上海中考特色题型)30题(解析版)
- 年度成本控制与削减方案计划
- 2024内蒙古能源发电投资集团限公司金山第二热电分公司招聘120人高频难、易错点500题模拟试题附带答案详解
- 2024市场营销知识竞赛题库(试题及答案169题)
- 四级劳动关系协调员题库+答案
- 2024年新人教版数学七年级上册教学课件 4.1 第1课时 单项式
- 北师大小学数学二年级上册课件:《数松果》教学课件
评论
0/150
提交评论