版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上 基于C+的图书馆管理系统实现方式图书馆管理系统为各大学校提供了方便。从设计开始采用了以数据为中心的面向对象思想。为了提高对数据操作的理解,提高自身的编程逻辑,采用链表保存所有信息,程序结束存放在文本文件中。,C+作为一款面向对象的高级编译型语言,编写图书馆最基本的人员操作类:读者类,工作人员类,管理类以及对数据操作的DBFile类。实验目的实现以下功能:使用对象功能详细功能读者查看/修改个人信息查找馆藏图书信息工作人员查询读者信息(个人信息和读者借书情况)还书借书查询图书信息(根据id号查找图书,显示基本信息和是否被借阅)管理人员维护图书信息添加、删除、编辑图书信息
2、维护读者信息添加、删除、编辑读者信息维护人员信息(包括下级管理员)添加、删除、编辑工作人员信息查询图书信息具体实现方式1. 数据的存储方式所有人员都有:用户名,密码,真实姓名,性别,年龄读者特有:借书总数,所借书的书号图书:书号,书名,作者,出版社,馆藏量,借出数量。用文本文件reader.dat存储读者信息,worker.dat存储工作人员信息,manager.dat存储管理员信息,book.dat存储所有书本信息。运行时所有数据保存在内存中,其类型均为 string。2. 类的关系图书馆管理系统菜单类Menu人员类People读者类Reader数据操作类DBFile 继 承管理员类Mana
3、ger工作人员类Worker类的关系3.功能模块图3.1 读者模块读者登录输入用户名及密码 用户名或密码错误NO YES NO选择1 YES查看个人信息选择2NOYES修改个人信息查找馆藏书选择1NO YES结束 读者功能图相关功能代码:1.查看个人信息void Reader:See_Infor() Book* pbook=NULL; cout 用户名: Usernameendl; cout 密码: Passwordendl; cout 真实姓名: Nameendl; cout 性别: Sexendl; cout 年龄: Ageendl; cout 总借图书数: Totle_borrowend
4、l;cout 所借的书为: ; for(int i=0;iTotle_borrow;+i) pbook=DB.book_by_number(borrowbooknumi); coutBookName ; coutendl; 2.修改个人信息void Reader:Edit_Infor()Reader* reader=NULL;reader=DB.reader_by_username(Username);string username;/ 更改用户名 string password;/ 密码 、 string name;/ 姓名 string sex;/ 性别 。 int age;/ 年龄int
5、 n=-1;/标记作用cout 读者信息修改: endl;coutusername;coutendl;coutpassword;coutendl;coutname;coutendl;coutsex;coutendl;coutage;coutendl;if(DB.reader_by_username(username)cout 用户名已存在.endl;n=0;if(sex!=男&sex!=女)cout 性别输入错误.99&age0)cout 年龄输入错误.endl;n=0;if(n=0)cout 信息更改失败.Username=username;reader-Password=password;
6、reader-Name=name;reader-Sex=sex;reader-Age=age;cout 恭喜您信息更改成功.endl;3.查找馆藏书void People:See_book()system(cls);Book* book=NULL;string booknum; coutendlendlendlendlendlendl;cout -欢迎进入查询图书系统-endl;coutbooknum;book=DB.book_by_number(booknum);if(book=NULL)cout 不存在此书号.endl;elsecout 此书基本信息如下:endl;coutsetw(31)
7、书号: BookNumendl;coutsetw(31)书名: BookNameendl;coutsetw(31)作者: Autherendl;coutsetw(31)出版社: Pressendl;coutsetw(31)馆藏量: StoreNumendl;coutsetw(31)借出书: BorrowNumendl;3.2工作人员模块工作人员输入用户名和密码用户名和密码是否正确正确Y进入工作人员界面选择1Y查询读者信息(个人信息和读者借书情况)选择2选择3NNYNN还书借书查询图书信息Y选择1N结束Y工作人员功能模块图相关功能代码:1.查询读者信息void Worker:See_Reader
8、()string username;Book* pbook;coutusername;Reader* reader=DB.reader_by_username(username);if(reader=NULL)coutsetw(25) 不存在该读者号.endl;elsecoutsetw(38) 读者号: Usernameendl;coutsetw(38) 读者密码: Passwordendl;coutsetw(38) 读者真实姓名: Nameendl;coutsetw(38) 读者性别: Sexendl;coutsetw(38) 读者年龄: Ageendl;coutsetw(38) 读者所接书
9、得总数及书名: Totle_borrow ;for(int i=0;iTotle_borrow;+i) pbook=DB.book_by_number(reader-borrowbooknumi); coutBookName ; 2.借书void Worker:Borrow_Book()system(cls);int n=0;string username;string booknum;Book* pbook=NULL;coutendlendlendlendlendlendl;cout -欢迎使用借书系统-endl; coutusername;Reader* reader=DB.reader_
10、by_username(username);if(reader=NULL) cout 不存在该读者或读者号输入错误.endl;return;coutbooknum;while(1)pbook=DB.book_by_number(booknum);if(pbook=NULL)cout 对不起,该系统没有这本书.BorrowNum=pbook-StoreNum)cout 该书已达借阅数上限.endl;break; for(int i=0;iTotle_borrow;i+) if(reader-borrowbooknumi=booknum) cout 您已借了该书,不能重复借阅.Totle_borr
11、ow=10) cout 您的可借书已达上限.endl; break; cout 借阅成功.BorrowNum+;reader-Totle_borrow+;reader-borrowbooknumreader-Totle_borrow-1=booknum;break;3.还书 void Worker:Back_Book()int n=0;system(cls);string username;string booknum;coutendlendlendlendlendlendl;cout -欢迎进入还书系统-endl;coutusername;coutbooknum;Book* pbook=DB
12、.book_by_number(booknum);Reader* reader=DB.reader_by_username(username);while(1) if(pbook=NULL) cout 该系统没有这本书.endl;break; if(reader=NULL) cout 读者用户名输入错误或不存在该读者.endl;break; for(int i=0;iTotle_borrow;+i)if(reader-borrowbooknumi=booknum)n=1;if(n!=1)cout 该读者没有借过该书.endl;break; cout 还书成功.BorrowNum-;for(in
13、t i=0;iTotle_borrow;+i)if(reader-borrowbooknumi=booknum)reader-borrowbooknumi=0;int remain = reader-Totle_borrow - i - 1;for(int j = 0; j borrowbooknumi+j = reader-borrowbooknumi+j+1;reader-Totle_borrow-;break;4.查询图书信息void People:See_book()system(cls);Book* book=NULL;string booknum; coutendlendlendl
14、endlendlendl;cout -欢迎进入查询图书系统-endl;coutbooknum;book=DB.book_by_number(booknum);if(book=NULL)cout 不存在此书号.endl;elsecout 此书基本信息如下:endl;coutsetw(31)书号: BookNumendl;coutsetw(31)书名: BookNameendl;coutsetw(31)作者: Autherendl;coutsetw(31)出版社: Pressendl;coutsetw(31)馆藏量: StoreNumendl;coutsetw(31)借出书: BorrowNume
15、ndl;3.3管理员功能模块管理人员功能模块图管理人员输入用户名和密码用户名和密码是否正确正确Y进入管理人员界面选择1Y维护图书信息选择2选择3NNYNN维护读者信息维护人员信息查询图书信息Y选择1N结束Y添加编辑删除图书信息添加编辑删除读者信息添加编辑删除人员信息相关功能代码:1.维护图书信息void Manager:Add_Book()/添加图书 Book* newbook=new Book(); coutnewbook-BookNum; coutendl; coutnewbook-BookName; coutendl; coutnewbook-Auther; coutendl; cout
16、newbook-Press; coutendl; coutnewbook-StoreNum; coutBorrowNum=0; Book* book=DB.book_by_number(newbook-BookNum); if(book=NULL) cout 添加成功.endl; DB.Add_Book(newbook); else cout 此书已存在.endl;void Manager:Mod_Book()string booknum;Book* book=NULL;while(1)coutbooknum;coutendl; book=DB.book_by_number(booknum);
17、if(book=NULL)cout 不存在该书号,请重新输入endl; coutendl;else coutbooknum;Book* book1=DB.book_by_number(booknum);if(book1=NULL)book-BookNum=booknum;break;else coutendl;cout 已存在该书号,请重新输入endlendl; coutendl;coutbook-BookName;coutendl; coutbook-Auther;coutendl;coutbook-Press;coutendl;coutbook-StoreNum;coutendl;cout
18、 修改成功.endl;void Manager:Remove_Book()string booknum;coutbooknum;coutBorrowNum=0)cout 成功的删除该书.endl;DB.Remove_Book(booknum);elsecout 有读者未归还该书,不能删除.endl;elsecout 不存在该书或输入书号错误.endl;2.维护读者信息void Manager:Add_Reader()Reader* newreader=new Reader();coutnewreader-Username;coutendl;coutnewreader-Password;cout
19、endl;coutnewreader-Name;coutendl;coutnewreader-Sex;coutendl;coutnewreader-Age;coutTotle_borrow=0;for(int i=0;iborrowbooknumi=0;if(!DB.reader_by_username(newreader-Username)cout 添加读者成功.endl;DB.Add_Reader(newreader);elsecout 添加读者失败.endl;void Manager:Mod_Reader()string username;Reader* reader=NULL;whil
20、e(1)coutusername;coutendl;reader=DB.reader_by_username(username);if(reader=NULL)cout 该读者号不存在.请重新输入.endl;coutendl;elsecoutusername;Reader* reader1=DB.reader_by_username(username);if(reader1=NULL)reader-Username=username;break;else coutendl; cout 该读者号已存在.请重新输入.endlendl; coutendl;coutreader-Password;co
21、utendl; coutreader-Name;coutendl;coutreader-Sex;coutendl;coutreader-Age;coutendl;cout 修改成功.endl;void Manager:Remove_Reader()string username;coutusername;coutendl;Reader* reader=DB.reader_by_username(username);if(reader)cout 成功的删除该读者.endl;DB.Remove_Reader(username);elsecout 不存在该读者或读者号不存在.endl;3.维护工作人
22、员信息void Manager:Add_Worker()Worker* newworker=new Worker();coutnewworker-Username;coutendl;coutnewworker-Password;coutendl;coutnewworker-Name;coutendl;coutnewworker-Sex;coutendl;coutnewworker-Age;coutUsername)cout 添加工作人员成功.endl;DB.Add_Worker(newworker);elsecout 用户名已有.添加工作人员失败.endl;void Manager:Mod_W
23、orker()string username;Worker* worker=NULL;while(1)coutusername;coutendl;worker=DB.worker_by_username(username);if(worker=NULL)cout 该工作人员的用户名不存在.请重新输入.endl;coutendl;elsecoutusername;Worker* worker1=DB.worker_by_username(username);if(worker1=NULL)worker-Username=username;break;else coutendl; cout 该工作
24、人员的用户名已存在.请重新输入.endlendl; coutendl;coutworker-Password;coutendl; coutworker-Name;coutendl;coutworker-Sex;coutendl;coutworker-Age;coutendl;cout 修改成功.endl;void Manager:Remove_Worker()string username;coutusername;coutendl;Worker* worker=DB.worker_by_username(username);if(worker)cout 成功的删除该工作人员.endl;DB.
25、Remove_Worker(username);elsecout 不存在该工作人员或工作人员用户名不存在.endl;4.查看图书信息:根据类的继承机制,同工作人员4.设计概要本图书馆管理系统通过使用链表来存放书本与人员, 考虑到安全性, 效率性并没有自己写链表, 而是使用STL的list, 并作为DBFile的私有成员。DBFile的接口:class DBFile public: DBFile();/全部初始化 void Initialize_Book();/ 图书信息的初始化,即把文件中的数据存到listbooks; void Initialize_Reader();/读者的初始化 void
26、 Initialize_Worker();/工作人员的初始化 void Initialize_Manager();/管理员的初始化 Book* book_by_number(const string&)const;/通过书号来查找书 Reader* reader_by_username(const string&)const;/通过用户名查找读者并可核对读者的用户名 Worker* worker_by_username(const string&)const;/通过用户名查找工作人员 Manager* manager_by_username(const string&)const;/通过用户名
27、查找管理员 void Reader_Login();/读者登录 void Worker_Login();/工作人员登录 void Manager_Login();/管理员登录 void Allbook_infor()const;/显示全部书的信息,并显示是否可借 void Add_Book(Book*);/添加图书 void Mod_Book(Book*);/修改图书 void Remove_Book(const string&);/删除图书 void Add_Reader(Reader*);/添加读者 void Mod_Reader(Reader*);/修改读者 void Remove_Re
28、ader(const string&);/删除读者 void Add_Worker(Worker*);/添加工作人员 void Mod_Worker(Worker*);/修改工作人员 void Remove_Worker(const string&);/删除工作人员 void Save_Book();/保存图书 void Save_Reader();/保存读者 void Save_Worker();/保存工作人员 void Save_Manager();/保存管理员 DBFile();/保存所有文件 private: list books;/建立图书的链表 list readers;/建立读者
29、的链表 list workers;/建立工作人员的链表 list managers;/建立管理员的链表 ;People父类接口:class People public: string Username;/ 用户名 string Password;/ 密码 string Name;/ 姓名 string Sex;/ 性别 int Age;/ 年龄 void See_book();/按书号查询图书信息virtual void Read(istream& in);/读文件里的数据 ; Reader类接口:class Reader:public:People public: Reader() Totle_borrow=0;for(int i=0;i10;+i)borrowbooknumi=0;/简单的构造函数 int Totle_borrow;/所借书的总数 string borrowbooknum10;/该读者所借的书号,最多可借十本书 void See_Infor();/查看读者信息 void Edit_Infor();/修改读者信息virtual void Read(i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《骆驼祥子》教学设计
- 机器操作人员安全装备指南
- 岩土工程设计服务费用协议
- 水上救援车辆使用规范
- 人民银行职员聘用合同
- 煤炭纪念馆煤仓施工合同
- 活动场地租赁合同范本
- 2024-2025学年度高三年级11月联考试题及答案
- 供应链合同施工承诺书
- 动物园兽医实习生招聘协议
- 食品代加工合同书
- 网课智慧树知道《英美文学(山东第一医科大学)》章节测试答案
- 南京师范大学苏州实验学校(南师苏校)小升初数学试题文本空白卷附详细答案
- 专题 常考的规律探究问题 中考数学答题技巧与模板构建
- 学礼以立大国范 知到智慧树网课答案
- 生物信息学(上海海洋大学)智慧树知到期末考试答案章节答案2024年上海海洋大学
- 大国工匠徐立平
- 《工程建设标准强制性条文电力工程部分2023版》
- 下丘脑疾病课件
- 慢阻肺患者随访记录表(参考样表)
- 中国农业文化遗产与生态智慧智慧树知到期末考试答案章节答案2024年浙江农林大学
评论
0/150
提交评论