c图书管理系统实验报告和源代码.docx

上传人:scccc 文档编号:14065875 上传时间:2022-02-01 格式:DOCX 页数:17 大小:59.16KB
返回 下载 相关 举报
c图书管理系统实验报告和源代码.docx_第1页
第1页 / 共17页
c图书管理系统实验报告和源代码.docx_第2页
第2页 / 共17页
c图书管理系统实验报告和源代码.docx_第3页
第3页 / 共17页
c图书管理系统实验报告和源代码.docx_第4页
第4页 / 共17页
c图书管理系统实验报告和源代码.docx_第5页
第5页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《c图书管理系统实验报告和源代码.docx》由会员分享,可在线阅读,更多相关《c图书管理系统实验报告和源代码.docx(17页珍藏版)》请在三一文库上搜索。

1、课程名称:程序设计综合实训 设计题目: 图书管理系统姓名:学号:专业班级:指导老师:完成日期:1设计任务1.1 设计目的运用所学知识,完成图书馆管理系统,通过实践加强对所学知识的理解和巩固1.2 设计内容建立图书馆管理系统,用户分为图书管理人员,读者。管理人员可以增加删除查看图书、读者。读者只能查看自身信息,和借还书1.3 设计指标或者要求管理人员可以访问任意图书和读者,而读者只能借还图书馆存在的图书和查看自己的信息。2设计过程分析:由于管理系统用户有图书管理员和读者,但两者的权限不同,管理员有权访问所有图书信息和管理员信息,而读者只能访问所有图书信息和自身的信息。所以他们的相同点: 都 能访

2、问所有图书信息不同点:管理员能访问所有读者信息而管理员只能访问自身信息而不能访问其它读者信息; 故此设计了三个类程序包含三个类:图书类(books),管理员类(manager),读者类reader, books类为抽 象类,manager;和reader类为books类的派生类。为了能让管理员和读者访问所有图书信 息,所有都继承了 books类;而为了分出两者的权限的不同,所以把所有读者的信息做为一 个链表作为管理员的一个私有成员, 而读者却只能放一个自身节点作为读者的私有成员,然后分别设计各个类的成员函数。2.1 程序功能Classbooks/虚基类protected:books_node*

3、broot;public:books();构造函数savebooks();佛存修改的内容search_book();M找某一本书print_books();/输出所有书的信息virtualadd_book()=0;/对于读者是还书,对于管理员添加书virtualdelet_book()=0;/ 对于读者是借书,对于管理员是去掉某一本书;Classmanager:publicbooks/t 理员类protected:readers_node*rroot;public:manager(readers_node*);savereaders();add_book();/徐力口图书信息delet_boo

4、k();/删除图书search_reader();/S找读者信息add_reader();/徐力口读者delet_reader();/W 除读者print_readers();/f俞出所有读者;classreader:publicbooks/债者类private:readers_node*personnel;/f 放读者 自 身信息public:reader(readers_node*);add_book();/还书reader_borrow();delet_book();reader_return();/ft 书print_me();/查看自己借书情况 save_readers(reader

5、s_node*);2.2 程序流程图退3软件运行或者测试结果(1) 管理员身份登录:(2)读者身份登录:4软件设计过程中遇到的问题以及解决办法由于编写前期做了大量的设计工作,在编写过程中基本没有遇到难解决的问题提, 倒是在设计类时有些茫然,经过反复斟酌还是做了一些取舍,比如把读取读者文件 放在了类的外面等。5总结通过本次课程设计学到了很多东西,对于C+对象的含义有了进一步的认识,从而对类的封装和设计有了一种新的认识,不只是停留在表面,为以后的学习积累了经验,设计不比编写 容易,类设计好是整个程序写好的前提,只有一个好的规划才能写出好的程序。不过也通过 本次发现了自己的不足之处。总是:本次课程设

6、计受益匪浅,动手能力大大增强;附录(程序源代码)#include#include#include#include#include#definemax3typedefstructBookscharbook_name15;inttotal_num;intborrow_num;charbook_num15;Books*next;books_node;typedefstructReaderscharreader_name15;charreader_no15;intreader_borrow_num;structReader_borrow_bookscharborrow_books_name15;cha

7、rborrow_books_no15;reader_borrow_bookmax;Readers*next;readers_node;classbooksprotected:books_node*broot;public:books();savebooks();search_book();print_books();virtualadd_book()=0;virtualdelet_book()=0;classmanager:publicbooksprotected:readers_node*rroot;public:manager(readers_node*);savereaders();ad

8、d_book();delet_book();search_reader();add_reader();delet_reader();print_readers();classreader:publicbooksprivate: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=newbooks

9、_node;r=newbooks_node;r-next=NULL;broot=r;ifstreaminFile;inFile.open(c:books.dat,ios:binary);if(inFile.is_open()=-1)coutcontopenbooks.datnext=r-next;r-next=node;inFile.close();if(i2)cout 暂时没有图书数据next;ofstreamoutFile;outFile.open(c:books.dat,ios:binary);while(L)outFile.write(char*)L,sizeof(books_node

10、);L=L-next;outFile.close();books:search_book()charsearchedbook15;coutsearchedbook;books_node*r;r=newbooks_node;r=broot-next;while(r)if(strcmp(searchedbook,r-book_name)=0)cout 书名 :book_name 书的总量:total_num 借出 :borrow_num 书的编号 :book_numnext;if(r=NULL)cout 对不起,没有此书 next;while(r)cout书名:book_name书的总量:tota

11、l_num借出 :borrow_num 书的编号 :book_numnext;deleter;manager:add_book()books_node*L;L=newbooks_node;L=broot;while(1)books_node*r;r=newbooks_node;r-next=NULL;coutr-book_name;coutr-book_num;r-borrow_num=0;coutr-total_num;r-next=L-next;L-next=r;coutsign;if(sign=n|sign=N)break;broot=L;savebooks();manager:dele

12、t_book()chardeleted15;coutdeleted;books_node*node,*L;node=newbooks_node;L=newbooks_node;node=broot;while(node-next)if(strcmp(deleted,node-next-book_name)=0)break; node=node-next;if(node-next=NULL)coutsorry!Thereisnothebook!next-borrow_num=0)node-next=node-next-next;savebooks()elsecout”对不起,暂时不能删除,因为还

13、有没有归还的书next;ofstreamoutFile;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=newreaders_node;L=rroot;intsign=0;while(1)readers_node*r;r=newreaders_node;r-next=NULL;coutr-reader_name;coutr-reader_no

14、;r-reader_borrow_num=0;r-next=L-next;L-next=r;coutsign;if(sign=n|sign=N)break;root=L;savereaders();manager:delet_reader()chardeleted15;coutdeleted;readers_nodenode,*L;node=newreaders_node;L=newreaders_node;node=rroot;while(node-next)if(strcmp(deleted,node-next-reader_name)=0)break;node=node-next;if(

15、node-next=NULL)coutsorry!Thereisnothereader!next=node-next-next;savereaders();manager:search_reader()readers_node*r;r=newreaders_node;r=rroot-next;charreader15;coutreader;while(r)if(strcmp(reader,r-reader_name)=0)cout姓名:reader_name编号:reader_no借书总数:reader_borrow_numendl;for(inti=0;ireader_borrow_num;

16、i+)cout书名:reader_borrow_booki.borrow_books_name书的编号 :reader_borrow_booki.borrow_books_no; break;elser=r-next;if(!r)cout 没有此人 next;while(printL)cout姓名编号借书总数endl;coutreader_namereader_noreader_borrow_num endl;for(inti=0;ireader_borrow_num;i+)cout 书名 :reader_borrow_booki.borrow_books_name 书的编号 :reader_

17、borrow_booki.borrow_books_no;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;charreturned15;coutreturned;for(inti=0;i=personnel-reader_borrow_num;i+)if(strcmp(returned,perso

18、nnel-reader_borrow_booki.borrow_books_name)=0)break;if(i=personnel-reader_borrow_num+1)printf( 不好意思,你没有此书 );system(pause);elsewhile(node)if(strcmp(node-book_name,returned)=0)break;elsenode=node-next;if(node)personnel-reader_borrow_num-;node-borrow_num-;savebooks();elsecout,对不起,没有你要还的书或者所还书被删除 reader

19、borrow_numnext;charborrowed15;coutborrowed;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_bookpersonnel-reader_borrow_num.borrow_books_nam e,node-book_name);strcpy(personel-reader_borrow_bookpersonnel-

20、reader_borrw_num+.borrow_books_no, node-book_num);node-borrow_num+;savebooks();elsecoutvv”对不起,没有你要借的书或者所要借的书已经借完!endl;elsecoutvv对不起,你借书的数量已经超过最大借数量 endl;reader:print_me()cout姓名reader_name编号:reader_no借书总 数:reader_borrow_numendl;for(inti=0;ireader_borrow_num;i+)printf(书名:s,书的编号:s”,personnel-reader_bor

21、row_booki.borrow_books_name,personnel-reader_borrow_booki.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;outFile.open(c:Readers.

22、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=newreaders_node;r-next=NULL;intflag=0;ifstreaminFile;inFile.open(c:Readers.dat,ios:binary);if(inFile.is_open()=-1)coutcontopenreaders.datnext=r-next;r-nex

23、t=node;inFile.close();if(flag2)cout暂无读者endl;returnr;elsereturnr;password()system(cls);chara=111111,b10,c;intn=0,k;cerrnnnnttt 请输入密码,你将拥有3 次机会 :n;while(1)n+;k=0;coutttt 输入密码 :;while(1)c=getch();if(c=13)break;bk=c;k+;cerr2)(printf(你已经超过输入次数,系统将退出rT);getch();)if(strcmp(a,b)=O)break;elsecoutvv密码错误,请重新输入

24、n;cerrn;)voidmanager_menu_1 (managerM)intN;while(1)cout cout |图书管图书管理系统I n”;cout | 菜单 | rT;cout IcoutI增加图书In;coutI.删除图书In;coutI.查找图书In;coutI.输出所有In;coutI退出请按0 In;coutcoutVV”请输入您的选择(0-4) :()bb;cinN;switch(N)(case 1: M .add_book() ;getch(); break;case2: M.delet_book();getch();break; case3:M.search_boo

25、k();getch();break; case4:M .pri nt_books() ;getch() ;break; caseO: return;) system(cls);)voidmanager_menu_2(managerM) (intN;while(1)n;n;n;n;cout cout |图书管图书管理系统I n;cout | 菜单 | n;cout |1n;cout |增加读者I n;cout |删除读者I n;cout |查找读者I n;cout |输出所有I n;cout | 退出请按 0 I n;cout 11n;coutN;switch(N)(case1:M.add_re

26、ader();getch();break;case2: M.delet_reader();getch();break;case3:M.search_reader();getch();break;case4:M.print_readers();getch();break;case0:return;system(cls);voidmanager_menu(readers_node*L)(system(cls);password();managermanager(L);intN;while(1)(cout 1n;cout |图书管图书管理系统I n;cout | 菜单 | n;cout |1n;co

27、ut |图书维护I n;cout |读者维护I n;cout | 退出请按 0 I n;cout 11n;coutN;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)(charname15;coutname;readers_node*node;node=newreaders_node;node=L-next;while(n

28、ode) (if(strcmp(nome,node-reader_name)=0) break; elsenode=node-next;) if(node) (readerReader(node);intN;while(1)(cout In n; cout |图书管图书管理系统I n; cout | 菜单 | n;cout |T n;cout | 借书 I n;cout | 还书 I n;cout | 查找书 I n;cout |输出所有I n;cout |自身信息I n;cout | 退出请按 0 I n;cout 1n;coutN;switch(N) ( case1:system(cls)

29、;Reader.reader_borrow();Reader.save_readers(L);break;case2: system(cls);Reader.reader_return();Reader.save_readers(L);break; case3:system(cls);Reader.search_book();system(pls);break; case4:system(cls);Reader.print_books();getch();break;case5:system(cls);Reader.print_me();Pause();break; case0:return;

30、 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 1n;cout |图书管图书管理系统I n;cout | 菜单 | n;cout |1n;cout |图书管理员I n; cout | .读者 I n;cout | 推出请按 0 I n;cout 11n;coutN;switch(N) case1:manager_menu(Reader_root);break;case2: reader_menu(Reader_root);break; case0:exit(0);break;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1