欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

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

    • 资源ID:2385597       资源大小:296.50KB        全文页数:61页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    图书管理系统 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 功能描述读者模块实现的功能是图书的查询,读者信息的查询。工作人员模块包括图书的查询,读者的查询,借书,还书等四大功能。管理人员模块实现的是图书的查询,维护图书信息,维护读者信息维护人员信息(包括下级管理员。整个系统的流程图如下:查看读者信息四、实现图书管理系统的流程图注销开始输入选项读者工作人员管理人员是否成功登陆输入账号密码输入账号密码输入账号密码输入选项修改读者信息查询图书信息注销输入选项查看读者信息借书还书查询图书信息注销输入选项维护图书信息维护读者信息维护人员信息查询图书信息是否成功登陆是否成功登陆.保存并退出输入选项添加图书信息编辑图书信息删除图书信息输入选项维护图书信息返回上层添加读者信息编辑读者信息删除读者信息输入选项维护读者信息返回上层添加读者信息添加读者信息添加读者信息维护人员信息返回上层2 概要设计1) 本系统采用链表结构来储存输入读取数据;2) 通过对建立一个数据库(DBFile)类来实现数据的读取的操作。相关代码如下:void DBFile:in_Reader() /打开reader.txtifstream fin("Reader.txt");if(!fin)cout<<"打开读者数据文件失败!"<<endl;exit(1);for(Reader a;fin>>a;)Readerlist.push_back(a);void DBFile:in_Book() /打开book.txtifstream fin("Book.txt");if(!fin)cout<<"打开图书数据文件失败!"<<endl;exit(1);for(Book a;fin>>a;)Booklist.push_back(a);void DBFile:in_Worker() /打开worker.txtifstream fin("Worker.txt");if(!fin)cout<<"打开工作人员数据文件失败!"<<endl;exit(1);for(Worker a;fin>>a;)Workerlist.push_back(a);void DBFile:in_Manager() /打开manager.txtifstream fin("Manager.txt");if(!fin)cout<<"打开管理员数据文件失败!"<<endl;exit(1);for(Manager a;fin>>a;)Managerlist.push_back(a);void DBFile:out_Reader() /保存readerofstream fout("Reader.txt");copy(Readerlist.begin(), Readerlist.end(), ostream_iterator<Reader,char>(fout,"n");void DBFile:out_Book() /保存bookofstream fout("Book.txt");copy(Booklist.begin(), Booklist.end(), ostream_iterator<Book,char>(fout,"n");void DBFile:out_Worker() /保存workerofstream fout("Worker.txt");copy(Workerlist.begin(), Workerlist.end(), ostream_iterator<Worker,char>(fout,"n");void DBFile:out_Manager() /保存managerofstream fout("Manager.txt");copy(Managerlist.begin(), Managerlist.end(), ostream_iterator<Manager,char>(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 out<<a.id<<" "<<a.name<<" "<<a.author<<" "<<a.press<<" "<<a.tag<<" "<<a.readid<<" "istream& operator>>(istream& in, Book &a) / 对>>操作符的重载return in>>a.id>>a.name>>a.author>>a.press>>a.tag>>a.readid;3 具体各模块代码和功能实现3.1 读者模块功能3.1.1 读者信息查询按照提示输入注册ID、注册名等内容,若填写信息不正确,则会提示“密码错误!”。如果信息正确,则会提示“登陆成功!”。 选择查看个人信息会出现读者个人信息选择修改个人信息可以修改个人信息选择查找图书可以查找图书读者类的参数列表:用户名id,姓名name,密码password,借的图书号bookid数组添加读者功能代码实现:void DBFile:Rmenu() /读者菜单cout<<endl<<string(18,'=')<<endl;cout<<"请选择功能:"<<endl;cout<<"1.查看个人信息"<<endl;cout<<"2.修改个人信息"<<endl;cout<<"3.查找馆藏图书信息"<<endl;cout<<"4.返回上级菜单"<<endl;cout<<string(18,'=')<<endl;cout<<"请选择-4:"void DBFile:readerfun() /读者管理函数Reader* ptr_reader=NULL;if(ptr_reader=Login(Readerlist)!=NULL)int choice;Rmenu();while(!(cin>>choice) cin.clear( ); cin.ignore( 200,'n'); cout<<"输入错误,请从新输入:"cin.clear( ); cin.ignore( 200,'n');while(choice!=4)switch(choice) case 1:ptr_reader->displayreader();break;case 2:ptr_reader->setreader();break;case 3:ptr_reader->displaybook(Booklist);break;default:cout<<"输入错误!"break;Rmenu();while(!(cin>>choice) cin.clear( ); cin.ignore( 200,'n'); cout<<"输入错误,请从新输入:"cin.clear( ); cin.ignore( 200,'n');void Reader:displayreader() /查看个人信息cout<<id<<" "<<name<<" 借书编号:" for(int i=0;i<10;i+) if(borbooki!=0) cout<< borbooki << ", " cout<< ""<<endl; void Reader:setreader() /修改个人信息string newname;string newpassword;cout<<"输入新名字: "cin>>newname;cin.clear( ); cin.ignore(200,'n');name=newname;cout<<"输入新密码: "cin>>newpassword;cin.clear( ); cin.ignore(200,'n');password=newpassword;cout<<"设置成功!你的新名字是:"<<name<<" 密码是:"<<password<<endl;void People:displayallbook(list<Book> &Blist) /查询图书list<Book>:iterator iter;cout<<"所有图书:"<<endl;for(iter = Blist.begin(); iter != Blist.end(); iter+)cout<<iter->id<<" "<<iter->name<<" "<<(iter->tag)?"可借":"不可借")<<" "<<iter->author<<" "<<iter->press<<endl;3.2 工作人员模块功能界面如下: 选择要登录的身份,输入ID,姓名,密码 ,正确就会登陆成功选择借书功能,再输入读者ID和书的ID就可以借,当输入书的ID为-1是结束借书;如果书已被借走或书ID不存在时,书不能被借阅选择还书功能,输入书ID就会还书成功选择查找图书功能,可以查找图书选择返回上级菜单就会返回到上级菜单工作人员类的参数列表:用户名id,姓名name,密码password程序代码:void DBFile:Rmenu() /工作人员菜单cout<<endl<<string(18,'=')<<endl;cout<<"请选择功能:"<<endl;cout<<"1.查看个人信息"<<endl;cout<<"2.修改个人信息"<<endl;cout<<"3.查找馆藏图书信息"<<endl;cout<<"4.返回上级菜单"<<endl;cout<<string(18,'=')<<endl;cout<<"请选择-4:"void DBFile:workerfun() /工作人员模块函数Worker* ptr_worker=NULL;if(ptr_worker=Login(Workerlist)!=NULL)int choice;Wmenu();while(!(cin>>choice) cin.clear( ); cin.ignore( 200,'n'); cout<<"输入错误,请从新输入:"cin.clear( ); cin.ignore( 200,'n');while(choice!=5)switch(choice) case 1:ptr_worker->searchreader(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:cout<<"输入错误!:"break;Wmenu();while(!(cin>>choice) cin.clear( ); cin.ignore( 200,'n'); cout<<"输入错误,请从新输入:"cin.clear( ); cin.ignore( 200,'n');void Worker:borrowbook(list<Reader> &Rlist,list<Book> &Blist) /借书函数list<Reader>:iterator Riter;list<Book>:iterator Biter;int Rid;int Bid;int i=0;cout<<"输入读者ID: "while(!(cin>>Rid)cin.clear(); cin.ignore(200,'n');cout<<"输入错误,请从新输入:"cin.clear( );cin.ignore( 200,'n');for(Riter=Rlist.begin();Riter!=Rlist.end();Riter+)if(Rid = Riter->id)cout<<"输入书ID(-1结束): "while(!(cin>>Bid) cin.clear( ); cin.ignore( 200,'n'); cout<<"输入错误,请从新输入:"cin.clear( ); cin.ignore( 200,'n');while(Bid != -1)for(Biter=Blist.begin();Biter!=Blist.end();Biter+)if(Bid=Biter->id)&&(Biter->tag)=1)for(i=0;i<10;i+)if(Riter->borbooki)=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;cout<<"输入书ID(-1结束): " while(!(cin>>Bid) cin.clear( ); cin.ignore( 200,'n'); cout<<"输入错误,请从新输入:"cin.clear( ); cin.ignore( 200,'n');break;if(Riter=Rlist.end()cout<<"读者不存在!"<<endl;void Worker:retbook(list<Book> &Blist,list<Reader> &Rlist) /还书函数list<Reader>:iterator Riter;list<Book>:iterator Biter;int Bid;cout<<"输入书ID: "cin>>Bid;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;i<10;i+)if(Biter->id)=(Riter->borbooki)Riter->borbooki=0;(Biter->readid) = -1;cout<<"还书成功!"<<endl;return ;if(Biter=Blist.end()cout<<"还书失败!"<<endl;void Worker:searchreader(std:list<Reader> &Rlist) /查找读者函数list<Reader>:iterator iter;int iid;cout<<"输入读者ID: "cin>>iid;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() /读者菜单cout<<endl<<string(18,'=')<<endl; cout<<"1.添加读者信息"<<endl;cout<<"2.编辑读者信息"<<endl;cout<<"3.删除读者信息"<<endl;cout<<"4.返回上级菜单"<<endl;cout<<string(18,'=')<<endl;cout<<"请选择-4:"void Manager:MBmenu() /图书菜单cout<<endl<<string(18,'=')<<endl; cout<<"1.添加图书信息"<<endl;cout<<"2.编辑图书信息"<<endl;cout<<"3.删除图书信息"<<endl;cout<<"4.返回上级菜单"<<endl;cout<<string(18,'=')<<endl;cout<<"请选择-4:"void Manager:MWmenu() /工作人员菜单cout<<endl<<string(18,'=')<<endl; cout<<"1.添加工作人员信息"<<endl;cout<<"2.编辑工作人员信息"<<endl;cout<<"3.删除工作人员信息"<<endl;cout<<"4.返回上级菜单"<<endl;cout<<string(18,'=')<<endl;cout<<"请选择-4:"void Manager:readermanager(list<Reader> &Rlist) /维护读者菜单int choice;MRmenu();while(!(cin>>choice)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<<"输入错误!"<<endl;break;MRmenu();while(!(cin>>choice)cin.clear( ); cin.ignore( 200,'n'); cout<<"输入错误,请从新输入:"cin.clear( ); cin.ignore( 200,'n');void Manager:bookmanager(list<Book> &Blist) /维护图书菜单int choice;MBmenu();while(!(cin>>choice)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<<"输入错误!"<<endl;break;MBmenu();while(!(cin>>choice)cin.clear( ); cin.ignore( 200,'n'); cout<<"输入错误,请从新输入:"cin.clear( ); cin.ignore( 200,'n');void Manager:workermanager(list<Worker> &Wlist) /维护工作人员菜单int choice;MWmenu();while(!(cin>>choice)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<<"输入错误!"<<endl;break;MWmenu();while(!(cin>>choice)cin.clear( ); cin.ignore( 200,'n'); cout<<"输入错误,请从新输入:"cin.clear( ); cin.ignore( 200,'n');void Manager:addbook(list<Book> &Blist) /添加图书函数Book a;list<Book>:iterator Biter;cout<<"输入ID(-1结束): "while(!(cin>>a.id)|a.id<-1)cin.clear(); cin.ignore(200,'n');cout<<"输入错误,请从新输入:"cin.clear( );cin.ignore( 200,'n');while(a.id!=-1)for(Biter=Blist.begin();Biter!=Blist.end();Biter+)if(a.id=Biter->id)cout<<"此书已存在!"<<endl;return; cout<<"输入书名:" cin>>a.name; cin.clear( ); cin.ignore(200,'n'); cout<<"输入作者: " cin>>a.author; cin.clear( ); cin.ignore(200,'n'); cout<<"输入出版社: " cin>>a.press; cin.clear( ); cin.ignore(200,'n'); Blist.push_back(a); cout<<"添加成功!ID:"<<a.id<<" 书名:"<<a.name<<" 作者:"<<a.author<<" 出版社:"<<a.press<<endl; cout<<"输入ID(-1结束): " while(!(cin>>a.id)|a.id<-1) cin.clear( ); cin.ignore( 200,'n'); cout<<"输入错误,请从新输入:"cin.clear( ); cin.ignore( 200,'n');void Manager:addreader(list<Reader> &Rlist) /添加读者函数Reader a;list<Reader>:iterator Riter;cout<<"输入ID(以-1结束):"while(!(cin>>a.id)|a.id<-1)cin.clear( ); cin.ignore( 200,'n');cout<<"输入错误,请从新输入:"cin.clear( );cin.ignore( 200,'n');while(a.id!=-1)for(Riter=Rlist.begin();Riter!=Rlist.end();Riter+)if(a.id=Riter->id)cout<<"读者已存在!"<<endl;return; cout<<"输入名字:" cin>>a.name; cin.clear( ); cin.ignore(200,'n'); cout<<"输入密码:" cin>>a.password; cin.clear( ); cin.ignore(200,'n'); Rlist.push_back(a); cout<<"添加读者成功!ID:"<<a.id<<" 名字:"<<a.name<<" 密码: "<<a.password<<endl; cout<<"输入ID(以-1结束):" while(!(cin>>a.id)|a.id<-1) cin.clear( ); cin.ignore( 200,'n'); cout<<"输入错误,请从新输入:"cin.clear( ); cin.ignore( 200,'n');void Manager:addworker(list<Worker> &Wlist) /添加工作人员菜单Worker a;list<Worker>:iterator Witer;cout<<"输入ID(以-1结束):"while(!(cin>>a.id)|a.id<-1)cin.clear( ); cin.ignore( 200,'n');cout<<"输入错误,请从新输入:"cin.clear( );cin.ignore( 200,'n');while(a.id!=-1)for(Witer=Wlist.begin();Witer!=Wlist.end();Witer+)if(a.id=Witer->id)cout<<"此工作人员已存在!"<<endl;return; cout<<"输入名字:" cin>>a.name; cin.clear( ); cin.ignore(200,'n'); cout<<"输入密码:" cin>>a.password; cin.clear( ); cin.ignore(200,'n'); Wlist.push_back(a); cout<<"添加成功!ID:"<<a.id<<" 名字: "<<a.name<<" 密码:

    注意事项

    本文(软件工程C++大型实验报告图书馆管理系统实验报告.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开