基于C++的图书馆管理系统实现方式图书馆管理系统为各大学校提供了方便。从设计开始采用了以数据为中心的面向对象思想。为了提高对数据操作的理解,提高自身的编程逻辑,采用链表保存所有信息,程序结束存放在文本文件中。,C++作为一款面向对象的高级编译型语言,编写图书馆最基本的人员操作类:读者类,工作人员类,管理类以及对数据操作的DBFile类。实验目的实现以下功能:使用对象功能详细功能读者查看/修改个人信息查找馆藏图书信息工作人员查询读者信息(个人信息和读者借书情况)还书借书查询图书信息(根据id号查找图书,显示基本信息和是否被借阅)管理人员维护图书信息添加、删除、编辑图书信息维护读者信息添加、删除、编辑读者信息维护人员信息(包括下级管理员)添加、删除、编辑工作人员信息查询图书信息具体实现方式1.数据的存储方式所有人员都有:用户名,密码,真实姓名,性别,年龄读者特有:借书总数,所借书的书号图书:书号,书名,作者,出版社,馆藏量,借出数量。用文本文件reader.dat存储读者信息,worker.dat存储工作人员信息,manager.dat存储管理员信息,book.dat存储所有书本信息。运行时所有数据保存在内存中,其类型均为string。2.类的关系继承类的关系3.功能模块图3.1读者模块用户名或密码错误NOYES图书馆管理系统数据操作类DBFile人员类People菜单类Menu读者类Reader工作人员类Worker管理员类Manager读者登录输入用户名及密码NOYESNOYESNOYES读者功能图相关功能代码:1.查看个人信息voidReader::See_Infor(){Book*pbook=NULL;cout用户名:Usernameendl;cout密码:Passwordendl;cout真实姓名:Nameendl;cout性别:Sexendl;cout年龄:Ageendl;cout总借图书数:Totle_borrowendl;cout所借的书为:;for(inti=0;iTotle_borrow;++i){pbook=DB.book_by_number(borrowbooknum[i]);coutpbook-BookName;}coutendl;选择1查看个人信息选择2修改个人信息查找馆藏书选择1结束}2.修改个人信息voidReader::Edit_Infor(){Reader*reader=NULL;reader=DB.reader_by_username(Username);stringusername;//更改用户名stringpassword;//密码、、stringname;//姓名stringsex;//性别。。intage;//年龄intn=-1;//标记作用cout读者信息修改:endl;cout新用户名:;cinusername;coutendl;cout新密码:;cinpassword;coutendl;cout真实姓名:;cinname;coutendl;cout性别:;cinsex;coutendl;cout年龄:;cinage;coutendl;if(DB.reader_by_username(username)){cout用户名已存在......endl;n=0;}if(sex!=男&&sex!=女){cout性别输入错误......endl;n=0;}if(age99&&age0){cout年龄输入错误.....endl;n=0;}if(n==0)cout信息更改失败.....endl;else{reader-Username=username;reader-Password=password;reader-Name=name;reader-Sex=sex;reader-Age=age;cout恭喜您信息更改成功......endl;}}3.查找馆藏书voidPeople::See_book(){system(cls);Book*book=NULL;stringbooknum;coutendlendlendlendlendlendl;cout------------欢迎进入查询图书系统------------endl;cout请输入所要查询图书的书号:;cinbooknum;book=DB.book_by_number(booknum);if(book==NULL)cout不存在此书号......endl;else{cout此书基本信息如下:endl;coutsetw(31)书号:book-BookNumendl;coutsetw(31)书名:book-BookNameendl;coutsetw(31)作者:book-Autherendl;coutsetw(31)出版社:book-Pressendl;coutsetw(31)馆藏量:book-StoreNumendl;coutsetw(31)借出书:book-BorrowNumendl;}}3.2工作人员模块工作人员功能模块图工作人员输入用户名和密码用户名和密码是否正确正确Y进入工作人员界面选择1Y查询读者信息(个人信息和读者借书情况)选择2选择3NNYNN还书借书查询图书信息Y选择1N结束Y相关功能代码:1.查询读者信息voidWorker::See_Reader(){stringusername;Book*pbook;cout欢迎查看读者信息,请输入读者号:;cinusername;Reader*reader=DB.reader_by_username(username);if(reader==NULL)coutsetw(25)不存在该读者号......endl;else{coutsetw(38)读者号:reader-Usernameendl;coutsetw(38)读者密码:reader-Passwordendl;coutsetw(38)读者真实姓名:reader-Nameendl;coutsetw(38)读者性别:reader-Sexendl;coutsetw(38)读者年龄:reader-Ageendl;coutsetw(38)读者所接书得总数及书名:reader-Totle_borrow;for(inti=0;ireader-Totle_borrow;++i){pbook=DB.book_by_number(reader-borrowbooknum[i]);coutpbook-BookName;}}}2.借书voidWorker::Borrow_Book(){system(cls);intn=0;stringusername;stringbooknum;Book*pbook=NULL;coutendlendlendlendlendlendl;cout-----------------欢迎使用借书系统----------------endl;cout请输入读者号:;cinusername;Reader*reader=DB.reader_by_username(username);if(reader==NULL){cout不存在该读者或读者号输入错误......endl;return;}cout请输入书号:;cinbooknum;while(1){pbook=DB.book_by_number(booknum);if(pbook==NULL){cout对不起,该系统没有这本书......endl;break;}if(pbook-BorrowNum==pbook-StoreNum){cout该书已达借阅数上限......endl;break;}for(inti=0;ireader-Totle_borrow;i++){if(reader-borrowbooknum[i]==booknum){cout您已借了该书,不能重复借阅.......endl;n=1;break;}}if(n==1)break;if(reader-Totle_borrow=10){cout您的可借书已达上限......endl;break;}cout借阅成功.......endl;pbook-BorrowNum++;reader-Totle_borrow++;reader-borrowbooknum[reader-Totle_borrow-1]=booknum;break;}}3.还书voidWorker::Back_Book(){intn=0;system(cls);stringusername;stringbooknum;coutendlendlendlendlendlendl;cout---------------欢迎进入还书系统------------endl;cout请输入读者号:;cinusername;cout请输入所还书号:;cinbooknum;Book*pbook=DB.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(inti=0;ireader-Totle_borrow;++i){if(reader-borrowbooknum[i]==booknum)n=1;}if(n!=1){cout该读者没有借过该书........endl;break;}cout还书成功.......endl;pbook-BorrowNum--;for(inti=0;ireader-Totle_borrow;++i)if(reader-borrowbooknum[i]==booknum){reader-borrowbooknum[i]=0;intremain=reader-Totle_borrow-i-1;for(intj=0;jremain;++j)reader-borrowbooknum[i+j]=reader-borrowbooknum[i+j+1];}reader-Totle_borrow--;break;}}4.查询图书信息voidPeople::See_book(){system(cls);Book*book=NULL;stringbooknum;coutendlendlendlendlendlendl;cout------------欢迎进入查询图书系统------------endl;cout请输入所要查询图书的书号:;cinbooknum;book=DB.book_by_number(booknum);if(book==NULL)cout不存在此书号......endl;else{cout此书基本信息如下:endl;coutsetw(31)书号:book-BookNumendl;coutsetw(31)书名