软件工程C++大型实验报告-图书馆管理系统实验报告.doc_第1页
软件工程C++大型实验报告-图书馆管理系统实验报告.doc_第2页
软件工程C++大型实验报告-图书馆管理系统实验报告.doc_第3页
软件工程C++大型实验报告-图书馆管理系统实验报告.doc_第4页
软件工程C++大型实验报告-图书馆管理系统实验报告.doc_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

图书管理系统 c+大型实验报告 软工0901 200926630124 * 软工0901 200926630117 * 软工0901 200926630118 *1 需求分析1.1 任务概述:用类方法实现简单的图书管理系统。1.1.1 目标:对图书信息进行图书入库、借阅登记、借阅查询、过期提示,用户授权这些日常业务的需要。高效性通过系统的实用,能够改变旧的图书管理模式,使对图书的管理、借阅、查询更加方便有效。1.1.2 运行环境:windows 98/2000/xp/2003操作系统下,无须任何软件支持。1.2 数据需求:1.2.1 数据流条目:登录用户=id号+姓名用户=用户id号+姓名图书=图书id+书目编号+书名+作者+出版社+isbn+总数量+剩下数量借阅=用户帐号+图书编号+数量借阅信息=用户帐号+图书编号+数量1.2.2 数据库描述使用txt文件形式对图书及读者信息进行保存,这样使得存储信息的容量比较小,管理和移动简单,不需要专用数据库系统的支持。1.3 功能需求1.3.1 功能划分简单图书管理系统只包含的一些基本的功能,对图书管理的大致流程进行演示。其功能模块包括:读者模块,工作人员模块,管理人员模块等三个部分。1.3.2 功能描述读者模块实现的功能是图书的查询,读者信息的查询。工作人员模块包括图书的查询,读者的查询,借书,还书等四大功能。管理人员模块实现的是图书的查询,维护图书信息,维护读者信息维护人员信息(包括下级管理员。整个系统的流程图如下:- 61 -查看读者信息四、实现图书管理系统的流程图注销开始输入选项读者工作人员管理人员是否成功登陆输入账号密码输入账号密码输入账号密码输入选项修改读者信息查询图书信息注销输入选项查看读者信息借书还书查询图书信息注销输入选项维护图书信息维护读者信息维护人员信息查询图书信息是否成功登陆是否成功登陆.保存并退出输入选项添加图书信息编辑图书信息删除图书信息输入选项维护图书信息返回上层添加读者信息编辑读者信息删除读者信息输入选项维护读者信息返回上层添加读者信息添加读者信息添加读者信息维护人员信息返回上层2 概要设计1) 本系统采用链表结构来储存输入读取数据;2) 通过对建立一个数据库(dbfile)类来实现数据的读取的操作。相关代码如下:void dbfile:in_reader() /打开reader.txtifstream fin(reader.txt);if(!fin)cout打开读者数据文件失败!a;)readerlist.push_back(a);void dbfile:in_book() /打开book.txtifstream fin(book.txt);if(!fin)cout打开图书数据文件失败!a;)booklist.push_back(a);void dbfile:in_worker() /打开worker.txtifstream fin(worker.txt);if(!fin)cout打开工作人员数据文件失败!a;)workerlist.push_back(a);void dbfile:in_manager() /打开manager.txtifstream fin(manager.txt);if(!fin)cout打开管理员数据文件失败!a;)managerlist.push_back(a);void dbfile:out_reader() /保存readerofstream fout(reader.txt);copy(readerlist.begin(), readerlist.end(), ostream_iterator(fout,n);void dbfile:out_book() /保存bookofstream fout(book.txt);copy(booklist.begin(), booklist.end(), ostream_iterator(fout,n);void dbfile:out_worker() /保存workerofstream fout(worker.txt);copy(workerlist.begin(), workerlist.end(), ostream_iterator(fout,n);void dbfile:out_manager() /保存managerofstream fout(manager.txt);copy(managerlist.begin(), managerlist.end(), ostream_iterator(fout,n);通过创建一个图书类(book),来实现有关图书的相关功能源代码:private: /类的参数列表int id;string name;string author;string press;int tag; /借出标记1:可借0:不可借int readid; /借阅者idbook:book(int iid, string iname, string iauthor, string ipress) /book类的构造函数id = iid;name = iname;author = iauthor;press = ipress;tag = 1;readid = -1;ostream& operator(ostream& out, const book &a) / 对操作符的重载return outa.id a.author a.press a.tag a.readid(istream& in, book &a) / 对操作符的重载return a.authora.pressa.taga.readid;3 具体各模块代码和功能实现3.1 读者模块功能3.1.1 读者信息查询按照提示输入注册id、注册名等内容,若填写信息不正确,则会提示“密码错误!”。如果信息正确,则会提示“登陆成功!”。 选择查看个人信息会出现读者个人信息选择修改个人信息可以修改个人信息选择查找图书可以查找图书读者类的参数列表:用户名id,姓名name,密码password,借的图书号bookid数组添加读者功能代码实现:void dbfile:rmenu() /读者菜单coutendlstring(18,=)endl;cout请选择功能:endl;cout1.查看个人信息endl;cout2.修改个人信息endl;cout3.查找馆藏图书信息endl;cout4.返回上级菜单endl;coutstring(18,=)endl;coutchoice) cin.clear( ); cin.ignore( 200,n); coutdisplayreader();break;case 2:ptr_reader-setreader();break;case 3:ptr_reader-displaybook(booklist);break;default:coutchoice) cin.clear( ); cin.ignore( 200,n); cout输入错误,请从新输入:;cin.clear( ); cin.ignore( 200,n);void reader:displayreader() /查看个人信息coutid name 借书编号:; for(int i=0;i10;i+) if(borbooki!=0) cout borbooki , ; cout endl; void reader:setreader() /修改个人信息string newname;string newpassword;coutnewname;cin.clear( ); cin.ignore(200,n);name=newname;coutnewpassword;cin.clear( ); cin.ignore(200,n);password=newpassword;cout设置成功!你的新名字是:name 密码是:passwordendl;void people:displayallbook(list &blist) /查询图书list:iterator iter;cout所有图书:endl;for(iter = blist.begin(); iter != blist.end(); iter+)coutid name tag)?可借:不可借) author pressendl;3.2 工作人员模块功能界面如下: 选择要登录的身份,输入id,姓名,密码 ,正确就会登陆成功选择借书功能,再输入读者id和书的id就可以借,当输入书的id为-1是结束借书;如果书已被借走或书id不存在时,书不能被借阅选择还书功能,输入书id就会还书成功选择查找图书功能,可以查找图书选择返回上级菜单就会返回到上级菜单工作人员类的参数列表:用户名id,姓名name,密码password程序代码:void dbfile:rmenu() /工作人员菜单coutendlstring(18,=)endl;cout请选择功能:endl;cout1.查看个人信息endl;cout2.修改个人信息endl;cout3.查找馆藏图书信息endl;cout4.返回上级菜单endl;coutstring(18,=)endl;coutchoice) cin.clear( ); cin.ignore( 200,n); coutsearchreader(readerlist);break;case 2:ptr_worker-borrowbook(readerlist,booklist);break;case 3:ptr_worker-retbook(booklist,readerlist);break;case 4:ptr_worker-displaybook(booklist);break;default:coutchoice) cin.clear( ); cin.ignore( 200,n); cout输入错误,请从新输入:;cin.clear( ); cin.ignore( 200,n);void worker:borrowbook(list &rlist,list &blist) /借书函数list:iterator riter;list:iterator biter;int rid;int bid;int i=0;coutrid)cin.clear(); cin.ignore(200,n);coutid)coutbid) cin.clear( ); cin.ignore( 200,n); coutid)&(biter-tag)=1)for(i=0;iborbooki)=0)(riter-borbooki)=bid;(biter-tag) = 0;(biter-readid) = (riter-id);cout借书成功!endl;break; if(i=10) cout超过最大借书量!endl;break;if(biter=blist.end()cout该书不可借endl;coutbid) cin.clear( ); cin.ignore( 200,n); cout输入错误,请从新输入:;cin.clear( ); cin.ignore( 200,n);break;if(riter=rlist.end()cout读者不存在!endl;void worker:retbook(list &blist,list &rlist) /还书函数list:iterator riter;list:iterator biter;int bid;coutbid;cin.clear(); cin.ignore(200,n);for(biter=blist.begin();biter!=blist.end();biter+)if(bid=biter-id)&(biter-tag)=0)(biter-tag) = 1;for(riter=rlist.begin();riter!=rlist.end();riter+)if(biter-readid)=(riter-id)for(int i=0;iid)=(riter-borbooki)riter-borbooki=0;(biter-readid) = -1;cout还书成功!endl;return ;if(biter=blist.end()cout还书失败!endl;void worker:searchreader(std:list &rlist) /查找读者函数list:iterator iter;int iid;coutiid;cin.clear(); cin.ignore(200,n);for(iter=rlist.begin();iter!=rlist.end();iter+)if(iid=iter-id)iter-displayreader();break;if(iter=rlist.end()cout读者不存在!endl;3.3 管理人员模块功能登陆界面:输入用户名,姓名,密码,正确就可以登陆成功按返回上级菜单就会回到上级菜单选择添加图书功能,输入图书信息就可以添加图书编辑图书功能选择删除图书功能,输入图书号就可以删除图书选择添加读者信息功能,输入读者信息就能添加读者选择编辑读者信息功能就能修改读者信息选删除读者功能,输入读者号就能删除该读者信息选择添加工作人员功能,输入读者信息就可以添加工作人员,如果此工作人员已存在则不能添加选择编辑工作人员信息就可以修改工作人员信息选择删除工作人员信息,输入要删除的工作人员好就可以删除工作人员信息管理人员类的参数列表:用户名id,姓名name,密码password管理人员的源代码:void manager:mrmenu() /读者菜单coutendlstring(18,=)endl; cout1.添加读者信息endl;cout2.编辑读者信息endl;cout3.删除读者信息endl;cout4.返回上级菜单endl;coutstring(18,=)endl;cout请选择-4:;void manager:mbmenu() /图书菜单coutendlstring(18,=)endl; cout1.添加图书信息endl;cout2.编辑图书信息endl;cout3.删除图书信息endl;cout4.返回上级菜单endl;coutstring(18,=)endl;cout请选择-4:;void manager:mwmenu() /工作人员菜单coutendlstring(18,=)endl; cout1.添加工作人员信息endl;cout2.编辑工作人员信息endl;cout3.删除工作人员信息endl;cout4.返回上级菜单endl;coutstring(18,=)endl;cout请选择-4:;void manager:readermanager(list &rlist) /维护读者菜单int choice;mrmenu();while(!(cinchoice)cin.clear( ); cin.ignore( 200,n); cout输入错误,请从新输入:;cin.clear( );cin.ignore( 200,n);while(choice != 4)switch(choice)case 1:addreader(rlist);break;case 2:setreader(rlist);break;case 3:delt(rlist);break;default:cout输入错误!choice)cin.clear( ); cin.ignore( 200,n); cout输入错误,请从新输入:;cin.clear( ); cin.ignore( 200,n);void manager:bookmanager(list &blist) /维护图书菜单int choice;mbmenu();while(!(cinchoice)cin.clear( ); cin.ignore( 200,n); cout输入错误,请从新输入:;cin.clear( );cin.ignore( 200,n);while(choice!=4)switch(choice)case 1:addbook(blist);break;case 2:setbook(blist);break;case 3:delt(blist);break;default:cout输入错误!choice)cin.clear( ); cin.ignore( 200,n); cout输入错误,请从新输入:;cin.clear( ); cin.ignore( 200,n);void manager:workermanager(list &wlist) /维护工作人员菜单int choice;mwmenu();while(!(cinchoice)cin.clear( ); cin.ignore( 200,n); cout输入错误,请从新输入:;cin.clear( );cin.ignore( 200,n);while(choice!=4)switch(choice)case 1:addworker(wlist);break;case 2:setworker(wlist);break;case 3:delt(wlist);break;default:cout输入错误!choice)cin.clear( ); cin.ignore( 200,n); cout输入错误,请从新输入:;cin.clear( ); cin.ignore( 200,n);void manager:addbook(list &blist) /添加图书函数book a;list:iterator biter;couta.id)|a.id-1)cin.clear(); cin.ignore(200,n);coutid)cout此书已存在!endl;return; ; cin.clear( ); cin.ignore(200,n); couta.author; cin.clear( ); cin.ignore(200,n); couta.press; cin.clear( ); cin.ignore(200,n); blist.push_back(a); cout添加成功!id:a.id 书名: 作者:a.author 出版社:a.pressendl; couta.id)|a.id-1) cin.clear( ); cin.ignore( 200,n); cout输入错误,请从新输入:;cin.clear( ); cin.ignore( 200,n);void manager:addreader(list &rlist) /添加读者函数reader a;list:iterator riter;couta.id)|a.id-1)cin.clear( ); cin.ignore( 200,n);coutid)cout读者已存在!endl;return; ; cin.clear( ); cin.ignore(200,n); couta.password; cin.clear( ); cin.ignore(200,n); rlist.push_back(a); cout添加读者成功!id:a.id 名字: 密码: a.passwordendl; couta.id)|a.id-1) cin.clear( ); cin.ignore( 200,n); cout输入错误,请从新输入:;cin.clear( ); cin.ignore( 200,n);void manager:addworker(list &wlist) /添加工作人员菜单worker a;list:iterator witer;couta.id)|a.id-1)cin.clear( ); cin.ignore( 200,n);coutid)cout此工作人员已存在!endl;return; ; cin.clear( ); cin.ignore(200,n); couta.password; cin.clear( ); cin.ignore(200,n); wlist.push_back(a); cout添加成功!id:a.id 名字: 密码: a.passwordendl; couta.id)|a.id-1) cin.clear( ); cin.ignore( 200,n); cout输入错误,请从新输入:;cin.clear( ); cin.ignore( 200,n);templatevoid manager:delt(list &tlist) /做成模板形式的删除读者(图书,工作人员)函数t a;couta.id)cin.clear( ); cin.ignore( 200,n);cout输入错误,请从新输入:;list:iterator titer;for(titer=tlist.begin();titer!=tlist.end();titer+)if(a.id=titer-id)tlist.erase(titer);cout删除成功!endl;return ;if(titer=tlist.end()coutid不存在!endl;void manager:setreader(list& rlist) /编辑读者函数list:iterator riter;int iid;coutiid)cin.clear( ); cin.ignore( 200,n);coutid)cout你选择的是:displayreader();coutriter-name;cin.clear( ); cin.ignore(200,n); coutriter-password;cout修改完成!endl;break;if(riter=rlist.end()cout该读者不存在endl;void manager:setbook(list& blist) /编辑图书函数list:iterator biter;int iid;coutiid)cin.clear( ); cin.ignore( 200,n);coutid)coutbiter-name;cin.clear( ); cin.ignore(200,n);coutbiter-author;cin.clear( ); cin.ignore(200,n); coutbiter-press;cin.clear( ); cin.ignore(200,n); cout修改完成!endl;break;if(biter=blist.end()cout该书不存在endl;void manager:setworker(list& wlist) /编辑工作人员函数list:iterator witer;int iid;coutiid)cin.clear( ); cin.ignore( 200,n);c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论