c++图书管理系统实验报告和源代码.docx
- 文档编号:14108154
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:17
- 大小:40.78KB
c++图书管理系统实验报告和源代码.docx
《c++图书管理系统实验报告和源代码.docx》由会员分享,可在线阅读,更多相关《c++图书管理系统实验报告和源代码.docx(17页珍藏版)》请在冰点文库上搜索。
c++图书管理系统实验报告和源代码
课程名称:
程序设计综合实训
设计题目:
图书管理系统
姓名:
学号:
专业班级:
指导老师:
完成日期:
1设计任务
设计目的
运用所学知识,完成图书馆管理系统,通过实践加强对所学知识的理解和巩固
设计内容
建立图书馆管理系统,用户分为图书管理人员,读者。
管理人员可以增加删除查看图书、读者。
读者只能查看自身信息,和借还书
设计指标或者要求
管理人员可以访问任意图书和读者,而读者只能借还图书馆存在的图书和查看自己的信息。
2设计过程
分析:
由于管理系统用户有图书管理员和读者,但两者的权限不同,管理员有权访问所有图书信息和管理员信息,而读者只能访问所有图书信息和自身的信息。
所以他们的相同点:
都能访问所有图书信息
不同点:
管理员能访问所有读者信息而管理员只能访问自身信息而不能访问其它读者信息;故此设计了三个类
程序包含三个类:
图书类(books),管理员类(manager),读者类reader,books类为抽象类,manager,和reader类为books类的派生类。
为了能让管理员和读者访问所有图书信息,所有都继承了books类;而为了分出两者的权限的不同,所以把所有读者的信息做为一个链表作为管理员的一个私有成员,而读者却只能放一个自身节点作为读者的私有成员,然后分别设计各个类的成员函数。
程序功能
Classbooks
orrow_books_name<<""<<"书的编号:
"<
}
break;
}
elser=r->next;
}
if(!
r)cout<<"没有此人"< } manager: : print_readers() { readers_nodeprintL; printL=newreaders_node; printL=rroot->next; while(printL) { cout<<"姓名编号借书总数"< cout< for(inti=0;i { cout<<"书名: "< "< } printL=printL->next; } deleteprintL; } reader: : reader(readers_node*node) { (personnel)==newreaders_node; personnel=node; } reader: : add_book() { books_node*node; node=newbooks_node; node=broot->next; charreturned[15]; cout<<"输入要还书的名子: "; cin>>returned; for(inti=0;i=personnel->reader_borrow_num;i++) { if((strcmp(returned,personnel->reader_borrow_book[i].borrow_books_name))==0)break; } if(i==personnel->reader_borrow_num+1) { printf("不好意思,你没有此书");system("pause"); } else{ while(node) { if((strcmp(node->book_name,returned)==0))break; elsenode=node->next; } if(node) { personnel->reader_borrow_num--; node->borrow_num--; savebooks(); } elsecout<<"对不起,没有你要还的书或者所还书被删除"< } } reader: : delet_book() { if(personnel->readerborrow_num { books_node*node; node=newbooks_node; node=broot->next; charborrowed[15]; cout<<"输入要借书的名子: "; cin>>borrowed; while(node) { if((strcmp(node->book_name,borrowed)==0))break; elsenode=node->next; } if(node&&(node->total_num-node->borrow_num)>0) { strcpy(personnel->reader_borrow_book[personnel->reader_borrow_num].borrow_books_name,node->book_name); strcpy(personel->reader_borrow_book[personnel->reader_borrw_num++].borrow_books_no,node->book_num); node->borrow_num++; savebooks(); } elsecout<<"对不起,没有你要借的书或者所要借的书已经借完! "< } elsecout<<"对不起,你借书的数量已经超过最大借数量"< } reader: : print_me() { cout<<"姓名"< "< "< for(inti=0;i { printf("书名: %s,书的编号: %s",personnel->reader_borrow_book[i].borrow_books_name,personnel->reader_borrow_book[i].borrow_books_no) } } voidPause() { getch(); fflush(stdin); } reader: : reader_borrow() { delet_book(); } reader: : reader_return() { add_book(); } reader: : save_readers(readers_node*L) { readers_node*root; root=newreaders_node; root=L->next; ofstreamoutFile; ("c: \\",ios: : binary); while(root) { ((char)root,sizeof(readers_node)); root=root->next; } (); } readers_node*read_readers() { readers_node*r; r=newreaders_node; r->next=NULL; intflag=0; ifstreaminFile; ("c: \\",ios: : binary); if()==-1) { cout<<"con'topen"< } else { while (1) { flag++; readers_node*node; node=newreaders_node; ((char*)node,sizeof(readers_node)); if())break; node->next=r->next; r->next=node; } (); if(flag<2) { cout<<"暂无读者"< } else returnr; } } password() { system("cls"); chara[]="111111",b[10],c;intn=0,k; cerr<<"\n\n\n\n\t\t\t请输入密码,你将拥有3次机会: \n"; while (1) { n++; k=0; cout<<"\t\t\t输入密码: "; while (1) { c=getch(); if(c==13)break; b[k]=c;k++; cerr<<"*"; } b[k]='\0'; cout<<"\n"; if(n>2) { printf("你已经超过输入次数,系统将退出\n"); getch(); } if(strcmp(a,b)==0)break; elsecout<<"密码错误,请重新输入\n"; cerr<<"\n"; } } voidmanager_menu_1(managerM) { intN; while (1) { cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"; cout<<"┃图书管图书管理系统┃\n"; cout<<"┃菜单┃\n"; cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n"; cout<<"┃①增加图书┃\n"; cout<<"┃②.删除图书┃\n"; cout<<"┃③.查找图书┃\n"; cout<<"┃④.输出所有┃\n"; cout<<"┃退出请按0┃\n"; cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"; cout<<"请输入您的选择(0--4): ()\b\b"; cin>>N; switch(N) { case1: ();getch();break; case2: ();getch();break; case3: ();getch();break; case4: ();getch();break; case0: return; } system("cls"); } } voidmanager_menu_2(managerM) { intN; while (1) { cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"; cout<<"┃图书管图书管理系统┃\n"; cout<<"┃菜单┃\n"; cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n"; cout<<"┃①增加读者┃\n"; cout<<"┃②删除读者┃\n"; cout<<"┃③查找读者┃\n"; cout<<"┃④输出所有┃\n"; cout<<"┃退出请按0┃\n"; cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"; cout<<"请输入您的选择(0--4): ()\b\b"; cin>>N; switch(N) { case1: ();getch();break; case2: ();getch();break; case3: ();getch();break; case4: ();getch();break; case0: return; } system("cls"); } } voidmanager_menu(readers_node*L) { system("cls"); password(); managermanager(L); intN; while (1) { cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"; cout<<"┃图书管图书管理系统┃\n"; cout<<"┃菜单┃\n"; cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n"; cout<<"┃①图书维护┃\n"; cout<<"┃②读者维护┃\n"; cout<<"┃退出请按0┃\n"; cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"; cout<<"请输入您的选择(0--2): ()\b\b"; cin>>N; switch(N) { case1: system("cls");manager_menu_1(Manager);break; case2: system("cls");manager_menu_2(Manager);break; case0: return; } system("cls"); } } reader_menu(readers_node*L) { charname[15]; cout<<"输入用户名: "; cin>>name; readers_node*node; node=newreaders_node; node=L->next; while(node) { if((strcmp(nome,node->reader_name))==0) break; else node=node->next; } if(node) { readerReader(node); intN; while (1) { cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"; cout<<"┃图书管图书管理系统┃\n"; cout<<"┃菜单┃\n"; cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n"; cout<<"┃①借书┃\n"; cout<<"┃②还书┃\n"; cout<<"┃③查找书┃\n"; cout<<"┃④.输出所有┃\n"; cout<<"┃⑤自身信息┃\n"; cout<<"┃退出请按0┃\n"; cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"; cout<<"请输入您的选择(0--5): ()\b\b"; cin>>N; switch(N) { case1: system("cls");();(L);break; case2: system("cls");();(L);break; case3: system("cls");();system("pls");break; case4: system("cls");();getch();break; case5: system("cls");();Pause();break; case0: return; } system("cls"); } } else { printf("没有这个用户! 按任意键继续"); getch(); return; } } main() { readers_node*Reader_root; Reader_root=newreaders_node; Reader_root=read_readers(); intN; while (1) {system("cls"); cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"; cout<<"┃图书管图书管理系统┃\n"; cout<<"┃菜单┃\n"; cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n"; cout<<"┃①图书管理员┃\n"; cout<<"┃②.读者┃\n"; cout<<"┃推出请按0┃\n"; cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"; cout<<"请输入您的选择(0--2): ()\b\b"; cin>>N; switch(N) { case1: manager_menu(Reader_root);break; case2: reader_menu(Reader_root);break; case0: exit(0);break; } } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 图书 管理 系统 实验 报告 源代码