软件工程C大型实验报告图书馆管理系统实验报告.doc

上传人:sccc 文档编号:4864013 上传时间:2023-05-20 格式:DOC 页数:61 大小:357.51KB
返回 下载 相关 举报
软件工程C大型实验报告图书馆管理系统实验报告.doc_第1页
第1页 / 共61页
软件工程C大型实验报告图书馆管理系统实验报告.doc_第2页
第2页 / 共61页
软件工程C大型实验报告图书馆管理系统实验报告.doc_第3页
第3页 / 共61页
软件工程C大型实验报告图书馆管理系统实验报告.doc_第4页
第4页 / 共61页
软件工程C大型实验报告图书馆管理系统实验报告.doc_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《软件工程C大型实验报告图书馆管理系统实验报告.doc》由会员分享,可在线阅读,更多相关《软件工程C大型实验报告图书馆管理系统实验报告.doc(61页珍藏版)》请在三一办公上搜索。

1、图书管理系统 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号+姓名图书

2、=图书ID+书目编号+书名+作者+出版社+ISBN+总数量+剩下数量借阅=用户帐号+图书编号+数量借阅信息=用户帐号+图书编号+数量1.2.2 数据库描述使用txt文件形式对图书及读者信息进行保存,这样使得存储信息的容量比较小,管理和移动简单,不需要专用数据库系统的支持。1.3 功能需求1.3.1 功能划分简单图书管理系统只包含的一些基本的功能,对图书管理的大致流程进行演示。其功能模块包括:读者模块,工作人员模块,管理人员模块等三个部分。1.3.2 功能描述读者模块实现的功能是图书的查询,读者信息的查询。工作人员模块包括图书的查询,读者的查询,借书,还书等四大功能。管理人员模块实现的是图书的查

3、询,维护图书信息,维护读者信息维护人员信息(包括下级管理员。整个系统的流程图如下:- 61 -查看读者信息四、实现图书管理系统的流程图注销开始输入选项读者工作人员管理人员是否成功登陆输入账号密码输入账号密码输入账号密码输入选项修改读者信息查询图书信息注销输入选项查看读者信息借书还书查询图书信息注销输入选项维护图书信息维护读者信息维护人员信息查询图书信息是否成功登陆是否成功登陆.保存并退出输入选项添加图书信息编辑图书信息删除图书信息输入选项维护图书信息返回上层添加读者信息编辑读者信息删除读者信息输入选项维护读者信息返回上层添加读者信息添加读者信息添加读者信息维护人员信息返回上层2 概要设计1)

4、本系统采用链表结构来储存输入读取数据;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()

5、/打开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(), Readerli

6、st.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_Man

7、ager() /保存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, st

8、ring 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.name a.author a.press a.tag a.readid(istream& in, Book &a) / 对操作符的重载return ina.ida.namea.authora.pressa.taga.readid;3 具体各模块代码和功能实

9、现3.1 读者模块功能3.1.1 读者信息查询按照提示输入注册ID、注册名等内容,若填写信息不正确,则会提示“密码错误!”。如果信息正确,则会提示“登陆成功!”。 选择查看个人信息会出现读者个人信息选择修改个人信息可以修改个人信息选择查找图书可以查找图书读者类的参数列表:用户名id,姓名name,密码password,借的图书号bookid数组添加读者功能代码实现:void DBFile:Rmenu() /读者菜单coutendlstring(18,=)endl;cout请选择功能:endl;cout1.查看个人信息endl;cout2.修改个人信息endl;cout3.查找馆藏图书信息end

10、l;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);voi

11、d 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=newpa

12、ssword;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是

13、结束借书;如果书已被借走或书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( );

14、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.ig

15、nore( 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;(

16、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) /还书函数lis

17、t: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-bor

18、booki=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=Rlis

19、t.end()cout读者不存在!endl;3.3 管理人员模块功能登陆界面:输入用户名,姓名,密码,正确就可以登陆成功按返回上级菜单就会回到上级菜单选择添加图书功能,输入图书信息就可以添加图书编辑图书功能选择删除图书功能,输入图书号就可以删除图书选择添加读者信息功能,输入读者信息就能添加读者选择编辑读者信息功能就能修改读者信息选删除读者功能,输入读者号就能删除该读者信息选择添加工作人员功能,输入读者信息就可以添加工作人员,如果此工作人员已存在则不能添加选择编辑工作人员信息就可以修改工作人员信息选择删除工作人员信息,输入要删除的工作人员好就可以删除工作人员信息管理人员类的参数列表:用户名id,

20、姓名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;

21、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.igno

22、re( 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:boo

23、kmanager(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( ); ci

24、n.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

25、 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;retu

26、rn; couta.name; 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.name 作者:a.author 出版社:a.pressendl; couta.id)|a.id-1) cin.clear( ); cin.ignore( 200,n); cout输入错误,请从新输入:;cin.clear( );

27、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; couta.name; cin.clear( ); cin.ignore(200,n); couta.password; cin.clear( ); cin.ignore(200,n); Rlist.push_back(a); cout添加读者成功!ID:a

28、.id 名字:a.name 密码: 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; couta.name; cin.clear( ); cin.ignore(200,n); couta.password; cin.clear( ); cin.ignore(200,n); Wlist.push_back(a); cout添加成功!ID:a.id 名字: a

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号