免费预览已结束,剩余20页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
图书管理系统的设计面向对象程序设计实习报告专 业: 网络工程 班 级: 11级2班 姓 名:赵文琪 张人文 郑瑞江 周亚军 马家龙 亢立强指导教师:黄海鸥二一年 十二 月 二十 日目录1. 设计的任务31.1设计的目的31.2设计内容32. 对问题的分析理解32.1 问题的理解32.2对问题分析33. 采用的对象模型33.1 程序功能33.2 程序流程图54. 模型中设计的知识点55. 设计用的计算机环境56. 测试结果66.1 管理员身份登录66.2 读者身份登录:77. 结论88源代码9参考书目251. 设计的任务1.1设计的目的 巩固并加深学生对面向对象程序设计知识的理解;培养学生面向对象的程序设计思想,使学生认识面向过程和面向对象两种设计方法的区别;进一步掌握和运用VC+ 6.0集成开发环境;提高运用C+语言解决实际问题的能力;初步掌握开发小型使用软件的基本方法,能独立设计并实现基本的MIS系统;运用所学完成图书管理系统的设计。1.2设计内容建立图书馆管理系统,用户分为图书管理人员,读者。管理人员可以增加删除查看图书、读者。读者只能查看自身信息,和借还书。图书查询管理:通过各种方式可以来进行查阅。2. 对问题的分析理解2.1 问题的理解由于管理系统用户有图书管理员和读者,但两者的权限不同,管理员有权访问所有图书信息和管理员信息,而读者只能访问所有图书信息和自身的信息。2.2对问题分析所以他们的相同点:都能访问所有图书信息。不同点:管理员能访问所有读者信息而管理员只能访问自身信息而不能访问其它读者信息;故此设计了三个类程序包含三个类:图书类(books),管理员类(manager),读者类reader,books类为抽象类,manager,和reader类为books类的派生类。为了能让管理员和读者访问所有图书信息,所有都继承了books类;而为了分出两者的权限的不同,所以把所有读者的信息做为一个链表作为管理员的一个私有成员,而读者却只能放一个自身节点作为读者的私有成员,然后分别设计各个类的成员函数。3. 采用的对象模型3.1 程序功能Class books /虚基类 protected:books_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();/添加图书信息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_readers(readers_node*);3.2 程序流程图图3-1图书流程图4. 模型中设计的知识点抽象类:在C+中,含有纯虚拟函数的类称为抽象类,不能生成对象的类。构造函数:在对象被创建时由系统自动调用的成员函数,主要用来在创建对象时初始化对象 即为对象成员变量赋初始值。类:类是定义同一类所有对象的变量和方法派生类:是在基类的基础上产生的特殊类,基类是派生类的抽象描述,根据面向对象的继承机制,派生类自动继承了基类的成员。异常处理的思想:分离异常的抛出和异常的处理5. 设计用的计算机环境Window 7 VC+6.06. 测试结果6.1 管理员身份登录输入登录密码界面管理员身份输入4得到的结果管理员身份登录显示结果6.2 读者身份登录:输入用户名,例如2,出现下图,不存在该用户名,任意键继续。输入用户名1出现的信息如图所示7. 结论通过这次的课程设计,让我充分的感觉到了要自己设计一个程序是多么的难,以及学习好c+是多么的重要。 在这个程序的设计过程中,我清楚的意识到自己的水平有多么的薄弱,课程的知识学得有多么的不扎实。看网上的例子好像觉得也没那么难,自己一上机实际操作就出现了很多问题,调试的时候系统总是在报错,还有很多警告,每增加一个函数就要调试好久,有时候应为少了一个大括号或是分号,导致要找很久很久。虽然系统可以运行,也具有了一些基本的功能,但我意识到了自己有太多的不足。 以后还会有很多的课程设计,一定要吸取这次的教训,把知识学懂学透学精,真正的为我所用,这样走上社会我才能真正的发挥所长。8源代码#include#include#include#include#include#include#define max 3 typedef struct Bookschar book_name15;int total_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 *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();delet_book();search_reader();add_reader();delet_reader();print_readers();class reader: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.dat,ios:binary);if(inFile.is_open()=-1)coutcont open books.datnext=r-next;r-next=node;inFile.close();if(i2)cout暂时没有图书数据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;coutsearchedbook;books_node *r;r=new books_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 书的总量:total_num 借出:borrow_num 书的编号:book_numnext;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;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:delet_book()char deleted15;coutdeleted; 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) coutsorry!There is no the book!next-borrow_num=0)node-next=node-next-next;savebooks();elsecout对不起,暂时不能删除,因为还有没有归还的书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_node;r-next=NULL;coutr-reader_name;coutr-reader_no;r-reader_borrow_num=0;r-next=L-next;L-next=r;coutsign;if(sign=n|sign=N)break;rroot=L;savereaders();manager:delet_reader()char deleted15;coutdeleted; 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-next=NULL) coutsorry!There is no the reader!next=node-next-next;savereaders();manager:search_reader() readers_node *r;r=new readers_node;r=rroot-next;char reader15;coutreader;while(r)if(strcmp(reader,r-reader_name)=0)cout姓名:reader_name 编号:reader_no 借书总数:reader_borrow_numendl;for(int i=0;ireader_borrow_num;i+)cout书名:reader_borrow_booki.borrow_books_name 书的编号:reader_borrow_booki.borrow_books_no;break;else r=r-next;if(!r)cout没有此人next;while(printL)cout姓名 编号 借书总数endl;coutreader_name reader_no reader_borrow_numendl;for(int i=0;ireader_borrow_num;i+)cout书名:reader_borrow_booki.borrow_books_name 书的编号: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-next;char returned15;coutreturned; for(int i=0;ireader_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); 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对不起,没有你要还的书或者所还书被删除reader_borrow_numnext;char borrowed15;coutborrowed;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-reader_borrow_num.borrow_books_name,node-book_name);strcpy(personnel-reader_borrow_bookpersonnel-reader_borrow_num+.borrow_books_no,node-book_num);node-borrow_num+;savebooks();else cout对不起,没有你要借的书或者所要借的书已经借完!endl;else cout对不起,你借书的数量已经超过最大借数量endl;reader:print_me() cout姓名reader_name 编号:reader_no 借书总数:reader_borrow_numendl;for(int i=0;ireader_borrow_num;i+)printf(书名:%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;root=L-next;ofstream outFile;outFile.open(c:Readers.dat,ios:binary);while(root)outFile.write(char*)root,sizeof(readers_node);root=root-next;outFile.close();readers_node* read_readers()readers_node *r;r=new readers_node;r-next=NULL;int flag=0;ifstream inFile;inFile.open(c:Readers.dat,ios:binary);if(inFile.is_open()=-1) coutcont open readers.datnext=r-next;r-next=node;inFile.close();if(flag2)cout暂无读者 endl; return r;elsereturn r;password()system(cls);char a=111111,b10,c;int n=0,k;cerrnnnnttt请输入密码,你将拥有3次机会:n;while(1)n+;k=0;cerrttt输入密码:;while(1)c=getch();if(c=13)break;bk=c;k+;cerr*;bk=0;cout2)printf(你已经超过输入次数,系统将退出n);getch();if(strcmp(a,b)=0)break;else cout密码错误,请重新输入n;cerrn;void manager_menu_1(manager M)int N;while(1)coutn; cout 图书管图书管理系统 n; cout 菜单 n; coutn; cout增加图书 n; cout .删除图书 n;cout .查找图书 n;cout .输出所有 n; cout 退出请按0 n;coutn; coutN;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)coutn; cout 图书管图书管理系统 n; cout 菜单 n; coutn; cout增加读者 n; cout 删除读者 n;cout查找读者 n;cout输出所有 n; cout 退出请按0 n;coutn; coutN;switch (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(1)coutn; cout 图书管图书管理系统 n; cout 菜单 n; coutn; cout图书维护 n; cout读者维护 n; cout退出请按0 n;coutn; coutN;switch (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;coutname;readers_node* node;node=new readers_node;node=L-next;while(node)if(strcmp(name,node-reader_name)=0)break;else node=node-next;if(node)reader Reade
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年黑龙江省哈尔滨市第一中学七年级语文第8单元文言文阅读课件
- 2026年河北省石家庄市第五实验小学三年级安全教育主题班会课件
- 2026年静脉输血培训模拟试题(含答案)
- 2026年茶饮料研究分析报告
- 2026年六上人教版科学模拟试题(含答案)
- 2026年维修钳工8级模拟试题(含答案)
- 2026年乡镇三基建设模拟试题(含答案)
- 2026年黄金分割点模拟试题(含答案)
- 2026年免疫检验基础专项模拟试题(含答案)
- 2026年考公真实模拟试题(含答案)
- GB/T 34630.1-2026搅拌摩擦焊铝及铝合金第1部分:术语及定义
- 2026及未来5年中国电力线载波抄表数据监测研究报告
- 《半导体制备装置用超高纯净不锈钢管》
- 2026语文新教材 第19课 航天员写给孩子的信 教学课件
- 深基坑安全管理培训课件
- 学院 升本 实施方案
- 超声波探伤培训教材
- 2026年《三级物业管理师》考试模拟试题含答案
- 2022-2023学年高中化学鲁科版(2019)选修一第二章试卷3
- T∕CPCPA 0017-2026 托育机构婴幼儿回应性照护服务规范
- 2026春季学期国开机电专科《可编程控制器应用实训》一平台在线形考形成任务1至6答案
评论
0/150
提交评论