版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上课程名称:程序设计综合实训设计题目: 图书管理系统 姓 名:学 号:专业班级:指导老师:完成日期:1 设计任务1.1 设计目的运用所学知识.完成图书馆管理系统.通过实践加强对所学知识的理解和巩固1.2设计内容建立图书馆管理系统.用户分为图书管理人员.读者。管理人员可以增加删除查看图书、读者。读者只能查看自身信息.和借还书1.3设计指标或者要求管理人员可以访问任意图书和读者.而读者只能借还图书馆存在的图书和查看自己的信息。2 设计过程分析:由于管理系统用户有图书管理员和读者.但两者的权限不同.管理员有权访问所有图书信息和管理员信息.而读者只能访问所有图书信息和自身的信息
2、。所以他们的相同点:都能访问所有图书信息不同点:管理员能访问所有读者信息而管理员只能访问自身信息而不能访问其它读者信息;故此设计了三个类程序包含三个类:图书类(books).管理员类(manager).读者类reader.books类为抽象类.manager.和reader类为books类的派生类。为了能让管理员和读者访问所有图书信息.所有都继承了books类;而为了分出两者的权限的不同.所以把所有读者的信息做为一个链表作为管理员的一个私有成员.而读者却只能放一个自身节点作为读者的私有成员.然后分别设计各个类的成员函数。2.1 程序功能Class books /虚基类 protected:bo
3、oks_node *broot;public:books();/构造函数savebooks();/保存修改的内容search_book();/查找某一本书print_books();/输出所有书的信息virtual add_book()=0;/对于读者是还书.对于管理员添加书virtual delet_book()=0;/对于读者是借书.对于管理员是去掉某一本书;Class manager:public books /管理员类 protected:readers_node *rroot;public:manager(readers_node*);savereaders();add_book()
4、;/添加图书信息delet_book();/删除图书search_reader();/查找读者信息add_reader();/添加读者delet_reader();/删除读者print_readers();/输出所有读者;class reader:public books/读者类private:readers_node* personnel;/存放读者自身信息public:reader(readers_node*);add_book();/还书reader_borrow();delet_book();reader_return();/借书print_me();/查看自己借书情况save_rea
5、ders(readers_node*);2.2程序流程图开始菜单管理员菜单读者菜单添 删加 除图 图书 书添 删加 除读 读者 者借 还 查 查 看 看 所 自 有 身 图 信书 书 书 息 读者管理员图书维护读者维护后退后退后退后退后退3软件运行或者测试结果(1)管理员身份登录:(2)读者身份登录:4 软件设计过程中遇到的问题以及解决办法由于编写前期做了大量的设计工作.在编写过程中基本没有遇到难解决的问题提.倒是在设计类时有些茫然.经过反复斟酌还是做了一些取舍.比如把读取读者文件放在了类的外面等。5 总结通过本次课程设计学到了很多东西.对于c+对象的含义有了进一步的认识.从而对类的封装和设计
6、有了一种新的认识.不只是停留在表面.为以后的学习积累了经验.设计不比编写容易.类设计好是整个程序写好的前提.只有一个好的规划才能写出好的程序。不过也通过本次发现了自己的不足之处。总是:本次课程设计受益匪浅.动手能力大大增强;附录(程序源代码)#include<iostream.h>#include<fstream.h>#include<string.h>#include<stdio.h>#include<conio.h>#define max 3 typedef struct Bookschar book_name15;int tot
7、al_num;int borrow_num;char book_num15;Books *next;books_node;typedef struct Readerschar reader_name15;char reader_no15;int reader_borrow_num;struct Reader_borrow_bookschar borrow_books_name15;char borrow_books_no15;reader_borrow_bookmax;Readers *next;readers_node;class books protected:books_node *br
8、oot;public:books();savebooks();search_book();print_books();virtual add_book()=0;virtual delet_book()=0;class manager:public books protected:readers_node *rroot;public:manager(readers_node*);savereaders();add_book();delet_book();search_reader();add_reader();delet_reader();print_readers();class reader
9、:public booksprivate:readers_node* personnel;public:reader(readers_node*);add_book();reader_borrow();delet_book();reader_return();print_me();save_readers(readers_node*);books:books()books_node *r;broot=new books_node;r=new books_node;r->next=NULL;broot=r;ifstream inFile;inFile.open("c:books.
10、dat",ios:binary);if(inFile.is_open()=-1)cout<<"con't open books.dat"<<endl;else int i=0;while(1)i+;books_node *node;node=new books_node;inFile.read( (char*)node,sizeof(books_node);if(inFile.eof() break;node->next=r->next;r->next=node;inFile.close();if(i<2)c
11、out<<"暂时没有图书数据"<<endl;books:savebooks()books_node *L;L=new books_node;L=broot->next;ofstream outFile;outFile.open("c:books.dat",ios:binary);while(L)outFile.write(char*)L,sizeof(books_node);L=L->next;outFile.close();books:search_book()char searchedbook15;cout<
12、<"输入要查找的书的名子:"cin>>searchedbook;books_node *r;r=new books_node;r=broot->next;while(r)if(strcmp(searchedbook,r->book_name)=0)cout<<"书名:"<<r->book_name<<" 书的总量:"<<r->total_num<<" 借出:"<<r->borrow_num<
13、<" 书的编号:"<<r->book_num<<endl;break;r=r->next;if(r=NULL)cout<<"对不起.没有此书"<<endl;books:print_books()books_node *r; r=new books_node;r=broot->next;while(r)cout<<"书名:" <<r->book_name<<" 书的总量:"<<r->to
14、tal_num<<" 借出:"<< r->borrow_num <<" 书的编号:"<<r->book_num<<endl;r=r->next;delete r;manager:add_book()books_node *L;L=new books_node;L=broot;while(1)books_node *r;r=new books_node;r->next=NULL;cout<<"输入书名:"cin>>r->bo
15、ok_name;cout<<"输入书的编号:"cin>>r->book_num;r->borrow_num=0;cout<<"输入总数:"cin>>r->total_num;r->next=L->next;L->next=r;cout<<"add more?(n终止,其它键继续)"char sign;cin>>sign;if(sign='n'|sign='N')break;broot=L;save
16、books();manager:delet_book()char deleted15;cout<<"输入要删除的图书名字:"cin>>deleted; books_node *node,*L;node=new books_node;L=new books_node;node=broot;while(node->next)if(strcmp(deleted,node->next->book_name)=0)break;node=node->next;if(node->next=NULL) cout<<"
17、;sorry!There is no the book!"<<endl;elseif(node->next->borrow_num=0)node->next=node->next->next;savebooks()elsecout<<"对不起.暂时不能删除.因为还有没有归还的书"<<endl;manager:manager(readers_node*node) rroot=new readers_node;rroot=node;manager:savereaders()readers_node *L
18、;L=new readers_node;L=rroot->next;ofstream outFile;outFile.open("c:Readers.dat",ios:binary);while(L)outFile.write(char*)L,sizeof(readers_node);L=L->next;outFile.close();manager:add_reader()readers_node *L;L=new readers_node;L=rroot;int sign=0;while(1)readers_node *r;r=new readers_nod
19、e;r->next=NULL;cout<<"输入姓名:"cin>>r->reader_name;cout<<"输入读者的编号:"cin>>r->reader_no;r->reader_borrow_num=0;r->next=L->next;L->next=r;cout<<"add more?(n终止,其它键继续)"char sign;cin>>sign;if(sign='n'|sign='N
20、9;)break;root=L;savereaders();manager:delet_reader()char deleted15;cout<<"输入要删除读者的名字:"cin>>deleted; readers_node node,*L;node=new readers_node;L=new readers_node;node=rroot;while(node->next)if(strcmp(deleted,node->next->reader_name)=0)break;node=node->next;if(node-&
21、gt;next=NULL) cout<<"sorry!There is no the reader!"<<endl;elsenode->next=node->next->next;savereaders();manager:search_reader() readers_node *r;r=new readers_node;r=rroot->next;char reader15;cout<<"输入要查找读者的姓名:"cin>>reader;while(r)if(strcmp(read
22、er,r->reader_name)=0)cout<<"姓名:"<<r->reader_name<<" 编号:"<<r->reader_no<<" 借书总数:"<<r->reader_borrow_num<<endl;for(int i=0;i<r->reader_borrow_num;i+)cout<<"书名:"<<r->reader_borrow_booki.bo
23、rrow_books_name<<" "<<"书的编号:"<<r->reader_borrow_booki.borrow_books_no;break;else r=r->next;if(!r)cout<<"没有此人"<<endl;manager:print_readers()readers_node printL;printL=new readers_node;printL=rroot->next;while(printL)cout<<&quo
24、t;姓名 编号 借书总数"<<endl;cout<<printL->reader_name<<" "<<printL->reader_no<<" "<<printL->reader_borrow_num<<endl;for(int i=0;i<printL->reader_borrow_num;i+)cout<<"书名:"<<printL->reader_borrow_booki.b
25、orrow_books_name<<" "<<"书的编号:"<<printL->reader_borrow_booki.borrow_books_no;printL=printL->next; delete printL;reader:reader(readers_node*node)(personnel)=new readers_node;personnel=node;reader:add_book()books_node*node;node=new books_node;node=broot->n
26、ext;char returned15;cout<<"输入要还书的名子:"cin>>returned; for(int i=0;i=personnel->reader_borrow_num;i+)if(strcmp(returned,personnel->reader_borrow_booki.borrow_books_name)=0)break;if(i=personnel->reader_borrow_num+1)printf("不好意思.你没有此书");system("pause");
27、elsewhile(node)if(strcmp(node->book_name,returned)=0)break;else node=node->next;if(node)personnel->reader_borrow_num-;node->borrow_num-;savebooks();else cout<<"对不起.没有你要还的书或者所还书被删除"<<endl;reader:delet_book() if(personnel->readerborrow_num<max)books_node*node;no
28、de=new books_node;node=broot->next;char borrowed15;cout<<"输入要借书的名子:"cin>>borrowed;while(node)if(strcmp(node->book_name,borrowed)=0)break;else node=node->next;if(node&&(node->total_num-node->borrow_num)>0)strcpy(personnel->reader_borrow_bookpersonnel
29、->reader_borrow_num.borrow_books_name,node->book_name);strcpy(personel->reader_borrow_bookpersonnel->reader_borrw_num+.borrow_books_no,node->book_num);node->borrow_num+;savebooks();else cout<<"对不起.没有你要借的书或者所要借的书已经借完!"<<endl;else cout<<"对不起.你借书的数量已经超
30、过最大借数量"<<endl;reader:print_me() cout<<"姓名"<<personnel->reader_name<<" 编号:"<<personnel->reader_no<<" 借书总数:"<<personnel->reader_borrow_num<<endl;for(int i=0;i<personnel->reader_borrow_num;i+)printf("
31、书名:%s,书的编号:%s",personnel->reader_borrow_booki.borrow_books_name,personnel->reader_borrow_booki.borrow_books_no)void Pause()getch();fflush(stdin);reader:reader_borrow()delet_book();reader:reader_return()add_book();reader:save_readers(readers_node *L)readers_node *root;root=new readers_node
32、;root=L->next;ofstream outFile;outFile.open("c:Readers.dat",ios:binary);while(root)outFile.write(char)root,sizeof(readers_node);root=root->next;outFle.close();readers_node* read_readers()readers_node *r;r=new readers_node;r->next=NULL;int flag=0;ifstream inFile;inFile.open("c
33、:Readers.dat",ios:binary);if(inFile.is_open()=-1) cout<<"con't open readers.dat"<<endl;return r;elsewhile(1)flag+;readers_node *node;node=new readers_node;inFile.read(char*)node,sizeof(readers_node);if(inFile.eof() break;node->next=r->next;r->next=node;inFile.
34、close();if(flag<2)cout<<"暂无读者 "<<endl; return r;elsereturn r;password()system("cls");char a="",b10,c;int n=0,k;cerr<<"nnnnttt请输入密码.你将拥有3次机会:n"while(1)n+;k=0;cout<<"ttt输入密码:"while(1)c=getch();if(c=13)break;bk=c;k+;cerr<&l
35、t;"*"bk='0'cout<<"n"if(n>2)printf("你已经超过输入次数.系统将退出n");getch();if(strcmp(a,b)=0)break;else cout<<"密码错误.请重新输入n"cerr<<"n"void manager_menu_1(manager M)int N;while(1)cout<<"n" cout<<" 图书管图书管理系统 n&qu
36、ot; cout<<" 菜单 n" cout<<"n" cout<<"增加图书 n" cout<<" .删除图书 n"cout<<" .查找图书 n"cout<<" .输出所有 n" cout<<" 退出请按0 n"cout<<"n" cout<<"请输入您的选择(0-4):( )bb"cin>>N
37、;switch (N)case 1: M.add_book();getch();break;case 2: M.delet_book();getch();break;case 3: M.search_book();getch();break;case 4: M.print_books();getch();break;case 0: return;system("cls");void manager_menu_2(manager M)int N;while(1)cout<<"n" cout<<" 图书管图书管理系统 n&q
38、uot; cout<<" 菜单 n" cout<<"n" cout<<"增加读者 n" cout<<" 删除读者 n"cout<<"查找读者 n"cout<<"输出所有 n" cout<<" 退出请按0 n"cout<<"n" cout<<"请输入您的选择(0-4):( )bb"cin>>N;swi
39、tch (N)case 1: M.add_reader();getch();break;case 2: M.delet_reader();getch();break;case 3: M.search_reader();getch();break;case 4: M.print_readers();getch();break;case 0: return;system("cls");void manager_menu(readers_node*L)system("cls");password();manager manager(L);int N;while
40、(1)cout<<"n" cout<<" 图书管图书管理系统 n" cout<<" 菜单 n" cout<<"n" cout<<"图书维护 n" cout<<"读者维护 n" cout<<"退出请按0 n"cout<<"n" cout<<"请输入您的选择(0-2):( )bb"cin>>N;swit
41、ch (N)case 1: system("cls"); manager_menu_1(Manager);break;case 2: system("cls"); manager_menu_2(Manager);break;case 0: return;system("cls");reader_menu(readers_node*L)char name15;cout<<"输入用户名:"cin>>name;readers_node* node;node=new readers_node;nod
42、e=L->next;while(node)if(strcmp(nome,node->reader_name)=0)break;else node=node->next;if(node)reader Reader(node);int N;while(1)cout<<"n" cout<<"图书管图书管理系统 n" cout<<" 菜单 n" cout<<"n" cout<<"借书 n" cout<<" 还书 n"cout<<"查找书 n" cout<<" .输出所有 n" cout<<" 自身信息 n&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防谍保密责任制度
- 隔离点消防安全责任制度
- 项目包联责任制度
- 食堂管理员责任制度
- 餐厅控烟责任制度
- 餐饮首问责任制度
- 首问工作责任制制度
- 高校实验室责任制度
- 2026恒丰银行杭州分行社会招聘20人备考题库附参考答案详解【完整版】
- 2026江西工业职业技术学院图书管理员岗位招聘1人备考题库带答案详解(夺分金卷)
- GB/T 38603-2020燃气燃烧器和燃烧器具用安全和控制装置特殊要求电子控制器
- GB/T 18983-2017淬火-回火弹簧钢丝
- GB/T 17693.1-1999外语地名汉字译写导则英语
- 高效课堂学习小组建设课件
- (新版)中国移动认证L1、L2、L3等级考试总题库-单选题库(共12部分-2)
- 提高网络运维信息化水平值0
- 高校电子课件:产业经济学(第五版)
- 工笔花鸟临摹课件
- 人教版(2019)高中英语选择性必修第三册Unit1词汇和句型课件21张PPT
- (新版)餐厅服务员初级资格考试题库(含答案)
- 影视照明技术与艺术汇总
评论
0/150
提交评论