当前位置:文档之家› 图书馆管理系统(含代码)

图书馆管理系统(含代码)

图书馆管理系统要求:图书管理系统框架1. 整个系统由两个独立的模块组成1.1 内部管理模块 A主要对图书馆的进行维护,包括对图书馆使用人员的管理,对图书的管理,对用户以及管理人员的密码管理。

同时管理的用户的最大量为100。

图书的最大量为500。

1.2 外部服务模块 B普通图书馆用户的一些日常操作:如借书,还书,查询个人信息,查询图书信息。

2. 系统功能A(内部管理模块)2.1 用户信息管理模块。

可是实现注册新用户,删除用户,修改用户等等。

用户信息包括个人信息和借阅信息。

个人信息包括姓名、编号、联系方式。

借阅信息包括借书总数(规定每个用户最多同时借3本)、欠款额。

对于所有已借到的书,可以看到图书的信息、借书日期。

2.2 对图书的管理,也是新增,删除等。

图书信息包括书名、作者、编号、出版社。

图书可以实现多种方式查询。

同时有标识能指出该图书是否已经被借出。

/*2.5 对图书预订用户进行及时的信息反馈,预约时间最长为一周,如果有书已经可借了,那么通知预订该书的用户。

如果该用户在一周内还没来借书的话,那么就通知第二个预订该书的用户。

设计相应的数据结构。

*/3. 系统功能B3.1 按多种方式查找图书。

(书名、作者、编号、出版社)3.2 借书要求输入用户的编号,然后判断该用户是否有欠费(超过30元则不允许借书)或者已经借满。

判断要借的书是否已被借出,若未借出,将该书借给用户,修改相应的信息。

3.3 还书判断是否有欠费(规定每本书可借一个月,超过规定时间按每天0.1元计费。

3.4 查询用户信息。

包括个人信息以及借还书信息。

4. 要求1.界面友好。

对于用户输入,要有足够的提示信息,如“请选择(1借书2 还书……):”提示用户选择。

2.不用因为用户的错误输入而引起程序运行错误而中止执行。

对输入值的大小范围、类型等进行正确性检查。

对不合法的给出出错信息,指出错误类型,等待重新输入。

3.对删除数据(用户、图书)给出警告。

代码部分:#include<iostream>using namespace std;struct Time{int year;int month;int day;};struct Book{string id;double price;string name;string press;string author;bool flag;int reader_id;Time borrowed_time;};class User{ //用户类public:User(){}User(string mid,string mpasswd,string mname){id=mid;passwd=mpasswd;name=mname;book_num=0;accout=0;book_id[0]="0";book_id[1]="0";book_id[2]="0";}void print_user(){cout<<"—————用户信息——————"<<endl;cout<<"用户名:"<<id<<endl;cout<<"姓名:"<<name<<endl;cout<<"余额:"<<accout<<endl;cout<<"已借"<<book_num<<" 本"<<endl;cout<<"借阅的书:"<<endl;cout<<book_id[0]<<" "<<book_id[1]<<" "<<book_id[2]<<endl;}void set_id(){id="0";}string get_id(){return id;}string get_passwd(){return passwd;}void set_passwd(string pass){passwd=pass;}string get_name()return name;}void set_name(string mname){name=mname;}void set_accout(double maccout) //余额充值函数{accout=accout+maccout;}void set_book_id(int i,string a){book_id[i]=a;}string get_book_id(int j){return book_id[j];}void set_book_num(int j){book_num=book_num+j;double get_accout(){return accout;}private:string id;string book_id[3];string name;string passwd;int book_num;//借的书的数量double accout;//余额};class Library{public:Library(string mid,string mpasswd) {int i;admin_id=mid;admin_passwd=mpasswd;ifout=0;for(i=0;i<100;i++)user[i].set_id();}for(i=0;i<500;i++){book[i].id="0";}user[0]=User("w","123","温从贵");user[1]=User("t","123","小白");user[2]=User("d","123","小黑");}int login(){int type;cout<<"————————————————杭师大图书馆管理系统————————————————"<<endl<<endl;cout<<"选择用户类型:(1)admin (2)普通用户(3)退出系统"<<endl;cin>>type;if(type==1){admin_login();}else if(type==2){user_login();}else{ifout=1;return 0;}}int admin_login() //管理员登录{int type;string yonghu;string mima;cout<<"输入用户名:"<<endl;cin>>yonghu;if(admin_id==yonghu){cout<<"请输入密码:"<<endl;cin>>mima;if(admin_passwd==mima){while(1){cout<<"(1)管理用户(2)管理图书(3)返回"<<endl;cin>>type;if(type==1) //用户管理{while(1){cout<<"(1)查找用户(2)增加用户(3)删除用户(4)显示所有用户(5)返回"<<endl;cin>>type;if(type==1){find_user();}else if(type==2){add_user();}else if(type==3){delete_user();}else if(type==4){int i;for(i=0;i<100;i++){if(user[i].get_id()!="0")cout<<"用户名:"<<user[i].get_id()<<" "<<"姓名:"<<user[i].get_name()<<endl;}}else{break;}}}else if(type==2) //图书管理{while(1){cout<<"(1)查找图书(2)增加图书(3)删除图书(4)查看图书(5)修改图书信息(6)返回"<<endl;cin>>type;if(type==1){find_book();}else if(type==2){add_book();}else if(type==3){delete_book();}else if(type==4){print_book();}else if(type==5){change_book();}else if(type==6){break;}else{cout<<"操作错误!"<<endl;break;}}}else{break;}}}else{cout<<"密码错误"<<endl;}}else{cout<<"抱歉用户名不存在"<<endl;}}int user_login() //普通用户登录{string yonghu;string mima;int i;int type1;cout<<"请输入用户名:"<<endl;cin>>yonghu;for(i=0;i<100;i++){if(user[i].get_id()==yonghu){cout<<"请输入密码:"<<endl;cin>>mima;if(user[i].get_passwd()==mima){cout<<"登录成功!"<<endl;while(1){cout<<"需要操作:(1)借书(2)还书(3)查看图书(4)查看个人信息(5)返回"<<endl;cin>>type1;if(type1==1) //借书{User *p=&user[i];borrow_book(p);}if(type1==2) //还书{User *p1=&user[i];return_book(p1);}if(type1==3) //查看所有图书{print_book();}if(type1==4) //查看个人信息{User *p2=&user[i];print_myself(p2);}if(type1==5){break;}}break;}else{cout<<"密码错误"<<endl;break;}}}if(i==100){cout<<"抱歉用户不存在"<<endl;//ifout=1;//return 0;}}void find_user() //查找用户{int i;int type2;string yonghu;cout<<"输入用户名:"<<endl;cin>>yonghu;for(i=0;i<100;i++){if(user[i].get_id()==yonghu){user[i].print_user();cout<<"(1)修改用户信息(2)退出"<<endl;cin>>type2;if(type2==1) //修改用户信息{int type3;string mima;string xingming;double c;cout<<"(1)修改密码(2)修改姓名(3)余额充值"<<endl;cin>>type3;if(type3==1){cout<<"请输入新密码:"<<endl;cin>>mima;user[i].set_passwd(mima);}if(type3==2){cout<<"请输入新姓名:"<<endl;cin>>xingming;user[i].set_name(xingming);}if(type3==3){cout<<"请输入充值金额:";cin>>c;user[i].set_accout(c);}}else{break;}break;}}if(i==100){cout<<"抱歉用户不存在"<<endl;}}void add_user() //增加用户{int i;string yonghuming,mima,xingming;cout<<"请输入:用户名密码姓名(例如:abc 123 李刚)"<<endl;cin>>yonghuming;cin>>mima;cin>>xingming;for(i=0;i<100;i++){if(user[i].get_id()=="0"){user[i]=User(yonghuming,mima,xingming);cout<<"创建用户"<<yonghuming<<" 成功!"<<endl;break;}}}void delete_user() //删除用户{int i;string yonghuming;cout<<"请输入要删除的用户名:"<<endl;cin>>yonghuming;for(i=0;i<100;i++){if(user[i].get_id()==yonghuming){cout<<"删除用户"<<user[i].get_id()<<" 成功!"<<endl;user[i].set_id();break;}}if(i==100){cout<<"没有此用户!"<<endl;}}void find_book() //查找图书{int type4;string bianhao,shuming,zuozhe;cout<<"(1)按编号查找(2)按书名查找(3)按作者查找(4)返回"<<endl;cin>>type4;if(type4==1){cout<<"请输入书的编号:";cin>>bianhao;cout<<"——————————查找结果——————————"<<endl;for(int i=0;i<500;i++){if(book[i].id==bianhao){struct Book *p=&book[i];print_book(p);}}}if(type4==2){cout<<"请输入书名:";cin>>shuming;cout<<"——————————查找结果——————————"<<endl;for(int i=0;i<500;i++){if(book[i].name==shuming){struct Book *p=&book[i];print_book(p);}}}if(type4==3){cout<<"请输入作者:";cin>>zuozhe;cout<<"——————————查找结果——————————"<<endl;for(int i=0;i<500;i++){if(book[i].author==zuozhe){struct Book *p=&book[i];print_book(p);}}}}void print_book(struct Book *p){cout<<"书名:"<<p->name<<endl;cout<<"作者:"<<p->author<<endl;cout<<"出版社:"<<p->press<<endl;cout<<"编号:"<<p->id<<endl;cout<<"价格:"<<p->price<<endl;cout<<"借阅情况:"<<p->flag<<" (0-没被借1-被借)"<<endl<<endl;}void add_book() //增加图书{int i;string shuming,bianhao,zuozhe,chubanshe;double jiage;cout<<"请输入:书名编号作者出版社价格(例:老人与海TP312 海明威钱江出版社19.8)"<<endl;cin>>shuming;cin>>bianhao;cin>>zuozhe;cin>>chubanshe;cin>>jiage;for(i=0;i<500;i++){if(book[i].id=="0"){book[i].id=bianhao;book[i].price=jiage;book[i].name=shuming;book[i].press=chubanshe;book[i].author=zuozhe;book[i].flag=false;cout<<"创建图书《"<<shuming<<" 》成功!"<<endl;break;}}}void return_book(User *p) //还书{int j,i,nian,yue,ri,tianshu;string bianhao;cout<<"输入你要还的书的编号"<<endl;cin>>bianhao;for(j=0;j<3;j++){if(p->get_book_id(j)==bianhao){p->set_book_id(j,"0");p->set_book_num(-1);for(i=0;i<500;i++){if(book[i].id==bianhao){book[i].flag=false;cout<<"输入当前日期(年月日如2012 10 10):";cin>>nian;cin>>yue;cin>>ri;tianshu=(nian-book[i].borrowed_time.year)*365+(yue-book[ i].borrowed_time.month)*30+(ri-book[i].borrowed_time.day);break;}}cout<<"还书成功!"<<endl;cout<<"共借阅"<<tianshu<<" 天"<<endl;break;}}if(j==3){cout<<"抱歉你借的书中没有你要还的书"<<endl;}}void print_book() //输出所有书信息{int i;cout<<"书名"<<"作者"<<"编号"<<"价格"<<"被借(0否1是)"<<"被借日期(年月日)"<<endl;for(i=0;i<500;i++){if(book[i].id!="0"){cout<<book[i].name<<"————"<<book[i].author<<"————"<<book[i].id<<"———————"<<book[i].price<<"$""————————"<<book[i].flag;if(book[i].flag==true){cout<<"————————————";cout<<book[i].borrowed_time.year<<" ";cout<<book[i].borrowed_time.month<<" ";cout<<book[i].borrowed_time.day;}cout<<endl;}}}void print_myself(User *p2){cout<<"姓名:"<<p2->get_name()<<endl;cout<<"用户名:"<<p2->get_id()<<endl;cout<<"余额:"<<p2->get_accout()<<endl;cout<<"已借的书:(编号)"<<p2->get_book_id(0)<<"———"<<p2->get_book_id(1)<<"———"<<p2->get_book_id(2)<<endl;}void change_book() //更改书的信息{int i,type6;double jiage;string bianhao,zuozhe,shuming;cout<<"输入要更改信息的书的编号:";cin>>bianhao;for(i=0;i<500;i++){if(book[i].id==bianhao){cout<<"更改的内容:(1)作者(2)价格(3)书名"<<endl;cin>>type6;if(type6==1){cout<<"输入作者:";cin>>zuozhe;book[i].author=zuozhe;cout<<"修改成功!"<<endl; }else if(type6==2){cout<<"输入价格:";cin>>jiage;book[i].price=jiage;cout<<"修改成功!"<<endl; }else if(type6==3){cout<<"输入书名:";cin>>shuming;book[i].name=shuming;cout<<"修改成功!"<<endl; }else{cout<<"操作有误!"<<endl;}break;}}if(i==500){cout<<"没有你输入的书"<<endl;}}void delete_book(){int i;string bianhao;cout<<"输入要删除的书的编号:";cin>>bianhao;for(i=0;i<500;i++){if(book[i].id==bianhao){book[i].id="0";cout<<"删除成功!"<<endl;}}}void borrow_book(User *p) //借书函数{int i,j,nian,yue,ri;string shuming;int type5;cout<<"请输入书名:";cin>>shuming;for(i=0;i<500;i++){if(book[i].name==shuming){if(book[i].flag==false){cout<<"此书可借!确定要借?(1——是2——返回)"<<endl;cin>>type5;if(type5==1){for(j=0;j<3;j++){if(p->get_book_id(j)=="0"){p->set_book_id(j,book[i].id);book[i].flag=true;p->set_book_num(1);cout<<"输入当前日期(年月日如2012 10 18):";cin>>nian;cin>>yue;cin>>ri;book[i].borrowed_time.year=nian;book[i].borrowed_time.month=yue;book[i].borrowed_time.day=ri;cout<<"借书成功!"<<endl;break;}}if(j==3){cout<<"你的借阅数量已满不能再借了"<<endl;break;}break;}else{break;}}else{cout<<"这本书已经被借出"<<endl;}break;}}if(i==500){cout<<"抱歉没有您想借的书"<<endl;}}int ifout_func() //判断是否关闭系统{return ifout;}private:int ifout;//是否退出string admin_id;string admin_passwd;User user[100];public:Book book[500];};int main(){Library lib("a","123");lib.book[0].id="12";lib.book[0].price=12.8;lib.book[0].name ="红楼梦";lib.book[0].press="青年出版社";lib.book[0].author="曹雪芹";lib.book[0].flag=false;lib.book[1].id="34";lib.book[1].price=26.8;lib.book[1].name ="西游记";lib.book[1].press="北京出版社";lib.book[1].author="吴承恩";lib.book[1].flag=false;lib.book[2].id="56";lib.book[2].price=86.8;lib.book[2].name ="三国演义";lib.book[2].press="杭州出版社";lib.book[2].author="罗贯中";lib.book[2].flag=false;lib.book[3].id="78";lib.book[3].price=45.8;lib.book[3].name ="水浒传";lib.book[3].press="会文出版社";lib.book[3].author="施耐庵";lib.book[3].flag=false;while(1){lib.login();if(lib.ifout_func()==1){return 0;}}}。

相关主题