c++课程实践图书管理系统实践报告_第1页
c++课程实践图书管理系统实践报告_第2页
c++课程实践图书管理系统实践报告_第3页
c++课程实践图书管理系统实践报告_第4页
c++课程实践图书管理系统实践报告_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档机电工程学院 中 南 大 学计算机程序设计基础C+ 课 程 设 计题 目 图书信息管理系统 成员姓名 学号 班级: 成员姓名 学号 班级:指导教师 学 院 日 期 年 月 日 目录1. 课程目的和要求.32. 图书管理系统的分析和功能描述.33. 流程图.54. 成员组成与分工与进度安排.65. 使用说明.76. 程序代码.137. 设计心得.40C+课程实践设计报告1. 课程目的和要求使我们能掌握系统的各种功能模块的基本工作原理;掌握C+的基本编程原理和基本的编程方法;学会如何去调试系统,并提高我们团队之间的软件文档写作能力和团队合作精神;提高我们的分析,解决问题的能力。通过本课程设计的实验,全面总结C+课程学习中的数据类型,程序结构,数组,函数,指针,容器等的基本概念,并掌握其使用方法。掌握面向对象程序设计中有关类,对象,重载,多态性,输入输出流体系,文件操作的基本概念。了解系统开发的需求分析,类层次设计,模块分解,编码测试,模块组装与整体调试的全过程。并养成良好的编程习惯。并使系统具有(1)所有记录保存在一个数据文件中;(2)具备记录添加功能;(3)具备记录删除功能;(4)具备记录修改功能;(5)具备记录查询功能;(6)计算统计功能;(7)良好操作界面菜单;等功能。2. 图书管理系统的分析和功能描述该程序总共有五个功能,分别是:添加图书,查找图书,删除图书,添加用户和用户管理。其中,用户管理里面又有四个功能,分别是 借书,查看已借书籍,还书和删除用户四个功能。五个功能由两个类封装实现。people类中有两个构造函数,用来初始化新建的用户对象;有一个析构函数;还有inborrow(借出函数),inback(归还函数),inWatch(查看函数),getName(返回用户名字函数);还有两个的友元函数newuser(新建用户函数),user(用户界面函数)。book类中,也有两个构造函数用来初始化用户对象;一个的析构函数用来在删除对象的同时,更改在文本中的写入信息;然后有clook(查看书籍函数),inwhere(书籍被借出时的更改数据的函数),onWhere(书籍被归还时的更改数据的函数),findbook(查找书籍的函数),clook(书籍信息写出函数)这个函数被重载了,因为书籍输出时需要输出到屏幕,也需要输出到txt文件中,Newbook(用来新建书籍信息的函数)。 两个类的对象储存与查找都是通过map容器来进行的。 3.流程图:main函数用户管理界面添加用户添加书籍查找书籍删除书籍输入书名输入名字手动还是文本输入已注册显示信息删除用户查看已借书还书借书确定删除输入书籍信息是Y否N继续操作或退出系统退出用户界面确定删除显示书籍继续借书输入书名继续输入?2424欢迎下载24欢迎下载。4.成员组成与分工:我们小组共有两个人,xx和xx,xx负责统筹这次的编写计划,时间安排和一半的编写任务,责收集资料xx负和查找各种有用的信息并编写另一般的代码信息。在后期的调试中,由xx负责编写main函数,然后两个人共同对代码进行调试和修改。两个人同时的修改,然后把修改的优点组合在一起,是程序更加的完善,更加的可行。在程序中共有两个新建的类,分别是people和book,两个类由小组两人分别编写。xx负责的是book的类,xx负责的是people的类,两个类分别封装人员和图书两个方面。进度安排:在18周的星期一到星期三,我们在计划着该如何去编写这个小系统,并通过参考同类型的编写代码,做好了编写的计划,并查找资料去了解了需要用到的一些语法和模板。在这两天中,我们不断尝试的编写书本当中的习题,以记住各种语法的使用方法。在18周的星期四到星期天,我们分别编写了两个类出来,然后组合在一起,并编写了main()函数来尝试调用两个类的各种功能。但因为不太懂,出现了很多的错误。在第19周的周一到周三,我们都在不断的调试和改正错误。很多的错误都不懂是怎么出错的,在不断的百度后,才慢慢的修正了很多。5.使用说明:开始的图书系统运行界面。手动输入时的界面。如果通过文本输入时, 在程序中,添加书籍时会通过生成一个result.txt 文件在D盘的根目录下用来储存书籍的信息;而且添加书籍时,可以通过D盘根目录下自己新建的一个 “图书信息.txt”文件来写入图书信息。查找书的信息,根据书名显示书籍的内容。输入书本的名字然后就能删除该书籍。输入名字后,就可以添加新的用用户。用户的信息被储存在map容器中,当输入用户的编号时,就可以进入到用户的使用界面。这就是用户的使用界面。重新返回用户界面书籍被归还。若图书被借出,就不能再被借。6.程序代码:#include#include#include#include#includeusing namespace std;class peopleprotected:string _name;int _id;bool _creditline;int Btime;string Nbook5; /没个人限借5本书int Bnumber;public:people(string name, int id);people();void inBorrow(); /借书的动作void inBack(); /还书的动作void inWatch(); /查看已借书籍动作string getName(); /返回用户的名字friend void newuser(); friend void user();people();mappeoples;class Bookprotected:string _name; /书名int _ID; /书编号string _writter; /作者string _press; /出版社string _briefintroduction; /简介bool _cwhere; /是否被借出public:Book(string name, int id, string writter, string press, string briefintroduction, bool cwhere);Book();Book();void newBook(); /新建书籍void deleteBook(); /删除书籍void cLook(); /书籍的信息列出bool inWhere(); /书本被借出bool onWhere(); /书本被归还void findbook(); / 查找书籍void cLook(ofstream& cout);bool jiechu();mapbooks; /建立一个书本的map容器,用来储存书本的信息。iostream& operator (iostream&cout, Book &_book); /重载_name;people:people(string name, int id)_name = name;_id = id;_creditline = true;Btime = 60;Bnumber = 0;people:people()void people:inBorrow() /用户借书int bbq = 0;this-inWatch();docout bname;map:iterator it;it = books.find(bname);if (it = books.end()cout 没有此书。 second)-jiechu()cout 这本书已经被借出。 Bnumber Bnumber;(this-Bnumber)+;(this-Nbookt) = bname;booksbname-onWhere();cout 你已借书成功。;elsecout 你借的书数目已达到上限,不能再借书,请先归还书籍。;cout 是否重新查找书籍? Y of N bq;if (bq = Y)bbq = 1;elsebbq = 0; while (bbq);void people:inWatch() /查看用户已借书籍cout 用户名为: _name t用户的编号是: _id n用户已借的书有: Bnumber = 0)cout 尊敬的用户,你还没有任何借书的记录。 endl;elsefor (i; i Bnumber); +i)cout i + 1 tNbooki Bnumber)=0)cout 你还没有借书。 inWatch();cout 请问你要还哪一本书呢?请输入是你借的书中的第几本: ss;if (ss - 1 (this-Bnumber)cout 你输入的数值有错误。 inWhere();this-Nbookss - 1 = 0;(this-Bnumber)-;cout 书已归还,谢谢。 endl;system(pause);void newuser() /建立新的用户people *_People;string name;cout name;int id;id = peoples.size() + 1;_People = new people(name, id);peoplesid = _People;cout 你登记的用户已成功注册,你的编号是: id endl;void user() /进入用户管理界面people*_people;int t = 0;cout *欢迎来到用户管理见面* endl;cout 请输入你的身份编号: t;map:iterator it;it = peoples.find(t);if (it = peoples.end()cout 对不起,你输入的号码错误,没有该用户存在。 second;int tt=1;doint choose=0;cout 欢迎用户 getName() 对本系统的使用。n choose;switch (choose)case 1:_people-inBorrow();break;case 2:_people-inWatch();break;case 3:_people-inBack();break;default:char t;cout t;if (t = Y)peoples.erase(it);break;elsebreak;system(cls);cout 是否退出用户界面?Y or N t;if (t = Y)tt = 0; while (tt);Book:Book(string name, int id, string writter, string press, string briefintroduction, bool cwhere)_name = name;_ID = id;_writter = writter;_press = press;_briefintroduction = briefintroduction;_cwhere = cwhere;ofstream& operator _cwhere = false)Ifborrow = 没有被借出;elseIfborrow = 以被借出;cout 书名: _name t 编号: _ID n 作者: _writter t 出版社: _press t 书的状态: Ifborrow n 简介: _briefintroduction;cout n*n _cwhere = false)Ifborrow = 没有被借出;elseIfborrow = 以被借出;cout 书名: _name t 编号: _ID n 作者: _writter t 出版社: _press t 书的状态: Ifborrow n 简介: _briefintroduction;cout n*n endl;void Book:newBook()char a;cout 你是想通过手动输入还是文本输入? n 手工输入为Y,文本输入为N a;if (a = Y)int c;dochar b;string name;int id;string writter;string press;string briefintroduction;bool cwhere=false;cout 请输入书名 t 编号 t 作者 t 出版社 name id writter press ;cout b;if (b = Y)cout briefintroduction;Book *_book;_book = new Book(name, id, writter, press, briefintroduction, cwhere);cout 继续输入?Y OR F a;if (a = Y)c = 1;else c = 0;books_book-_name = _book; while (c);elseifstream file(d:图书信息.txt);if (!file)cout 文本打开失败。n;elsestring aa; int bb; string cc; string dd; bool gg; string ff;while (!file.eof()char line256;file.getline(line, 256);string str;str = line;if (str.empty()continue;int i = str.find(=);if (i 0)continue;string key = str.substr(0, i);string value = str.substr(i + 1);if (key = name)aa = value;if (key = id)int n;n = atoi(value.c_str();bb = n;if (key = writter)cc = value;if (key = press)dd = value;if (key = cwhere)if (value = false)gg = false;elsegg = true;if (key = briefintroduction)ff = value;if (str0 = #)Book* _book;_book = new Book(aa,bb,cc,dd,ff,gg );booksaa = _book;file.close();ofstream file2(d:the result.txt);map:iterator it;for (it = books.begin(); it != books.end(); +it)file2 *(*it).second);file2.close();Book:Book()ofstream file2(the result.txt);file2.clear();map:iterator it;for (it = books.begin(); it != books.end(); +it)file2 _cwhere = false;return 0;bool Book:onWhere()this-_cwhere = true;return 0;Book:Book()void Book:findbook()string name;cout name;map:iterator it;it = books.find(name);if (it = books.end()cout 图书管理系统中没有该书籍 n;elsecout 你要找的书籍的信息: second)-cLook();void Book:deleteBook()string Bookname;cout Bookname;map:iterator it;it = books.find(Bookname);if (it = books.end()cout 你要删除的书本不存在 endl;elsebooks.erase(it);cout 书本已成功删除 endl;void main() /图书管理系统的主界面Book thebook;int choose;docout *欢迎进入图书管理界面* endl;cout 你将要进行的操作是? n 1.向图书系统中添加书籍n 2.向图书系统中查找书籍n 3.向图书系统中删除书籍n 4.添加用户n 5.进入用户管理界面 choose;switch (choose)case 1:thebook.newBook();break;case

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论