logo资料库

C++程序设计_中型项目 游戏"双人大战"的控制台实现.pdf

第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
资料共16页,剩余部分请下载后查看
信控学院专业课实验报告 专业 软件工程 班级 1 姓名 孙嘉成 学号 1806050127 2019 年 11 月 20 日 图书管理系统的控制台实现 目录 一、实验名称..............................................................................................1 二、实验目的..............................................................................................1 三、实验平台..............................................................................................1 四、问题分析..............................................................................................1 ①问题描述与需求分析....................................................................... 1 ②程序功能抽象................................................................................... 1 五、设计/开发解决方案............................................................................ 1 1.class Data 数据基类.......................................................................... 2 2.class Book 书籍派生类.......................................................................2 3.class Journal 派生期刊类...................................................................3 4.class Reader 借书人类....................................................................... 3 六、实验结果..............................................................................................8 图 3-2 借书人用户创建与信息显示..................................................8 图 3-3 借书数量超过限制(5 本).........................................................8 图 3-4 借书人当前借阅书籍信息展示..............................................8 七、实验分析及结论................................................................................. 8
一、实验名称 模拟图书管理系统的控制台指令实现 二、实验目的 本次实验旨在主要对前期学习的有关 C++面向对象部分的有关类的继承 (inheritance)相关知识的实践与应用。 在理论方面主要体现了: 1. 提升由面向过程向面向对象的思维转变; 2. 对继承关系的分析和实践应用; 3. 对函数参数列表(parameter list)的实践应用; 4. 加强对对象的创建和成员函数的书写能力; 在实际操作方面,本次试验重点训练了: 1. 继承关系的创建,与相关成员函数之间的调用关系; 2. 函数参数列表的赋值方式; 3. 对字符数组(Character array)的创建和使用; 三、实验平台 IDE :CodeBlocks16.1 (Core:VC++6.0) Language Standard : C++14 四、问题分析 ①问题描述与需求分析 在图书馆的日常使用当中,每天都会发生类似"借阅""归还"和"借阅信息管理" 等操作,且随着规模的扩大,每天产生的信息流相当巨大。因此,我们需要利用相关 的软件进行对应信息的管理,"图书管理系统"应运而生。 此次的"图书管理系统",是基于当前学习的有关 C++面向对象中的类的继承 知识基础上构建的,其中需要完成对图书馆运营过程中的部分基础操作进行实现, 并做到对相关信息的查阅和管理。具体包括: 1.对各类书籍进行分类存储,并能做到对书籍进行"增,删,改,查"; 2.对借阅人的相关信息进行管理,包括借阅人个人的信息,以及当前所借阅的 书籍,并同时能对人员进行"增,删,改,查" 3.能加入对人员借阅书籍的数量进行一定的限制; ②程序功能抽象 对于图书管理系统在实现部分功能时,通过需求分析可知,我们需要多个类去 管理和存储对应的相关信息,从大体上分为:书籍类(Books)与借阅人类(Reader)。 1.对于类的设计 对于"对各类书籍进行分类存储",我们可以首先设立一个信息量相对较少的 基类数据类(Data),之后利用相关的继承知识,对多个不同书籍种类设置派生类,如 普通书籍类(Books),而对于类似报纸杂志等具有特殊属性的书籍种类,我们可以继 续派生,如派生出的期刊类(Journal),以用来简化相关的代码冗余。 在借阅人类(Reader)中,我们可以实现需求中的有关人员管理的相关功能,例 如"姓名","借书卡号"以及"当前借阅书籍"等相关内容。 2.对于类之间的联系 在相关类设计完成之后,我们应该考虑通过某种机制将两个类即书籍类 (Books)与借阅人类(Reader)关联起来,处于不破坏面向对象的封装性的特点,特别 的使用在 Reader 类中创建 Books 类对象的方式,是两个类中的成员函数和数据成 员进行交互访问。 五、设计/开发解决方案 1
根据需求的分析,首先得到图书管理系统的程序类关系,类图表示如下: 并参考需求分析中的要求,并结合相关内容,确定出上图类中的成员函数和数 据成员,图书管理系统代码片段如下: 图 2-1 //数据基类 备注:已将部分代码数量较少的函数直接写入类中,未在外部进行编写。 1.class Data 数据基类 1.classData 2.{ 3.public: 4. Data() 5. { 6. 7. 8. } strcpy(Name,""); Id=0; //初始化数据 returnId; strcpy(Name,name); Id=id; 9. Data(char*name,longid) 10. { 11. 12. 13. } 14. longGetCode() 15. { 16. 17. } 18. voidShow() 19. { 20. 21. } 22.protected: 23. charName[40]; 24. longId; 25.}; 2.class Book 书籍派生类 26.classBook:publicData 27.{ cout<<"数据:"<
//初始化书籍信息 strcpy(Writer,""); strcpy(IndexId,""); 28.public: 29. Book() 30. { 31. 32. 33. } 34. Book(char*writer,char*name,char*index,longid);//增加书籍 35. voidShow()//显示书籍信息 36. { 37. cout<<"书籍:"<
//显示所借期刊 //添加所借书 //添加所借期刊 63. voidShow_Journal(); 64. voidAdd_Book(Bookobj); 65. voidAdd_Journal(Journalobj); 66. voidDel_Book(Bookobj); 67. voidDel_Journal(Journalobj); 68.private: 69. charName[20]; 70. longId; 71. Book*books; 72. intCounter_Book; 73. Journal*journals; 74. intCounter_Journal; 75.}; 对于部分实现功能的成员函数,具体代码如下: //归还所借书 //归还所借期刊 //借书人姓名 //借书证号 //所借书籍 //已借书数目 //所借期刊 //已借期刊数目 1. 增加书籍 1.Book::Book(char*writer,char*name,char*index,longid): 2. Data(name,id) 3.{ 4. strcpy(Writer,writer); 5. strcpy(IndexId,index); 6.} 2.增加期刊 1.Journal::Journal(char*name,intnum,longid): 2. Data(name,id) 3.{ 4. Number=num; 5.} 3.显示期刊 1.voidJournal::Show() 2.{ 3. cout<<"期刊:"<
8. Counter_Journal=0; } 5.设置借书人信息 1.Reader::Reader(char*name,longid) 2.{ 3. strcpy(Name,name); 4. Id=id; 5. books=newBook[5]; 6. Counter_Book=0; 7. journals=newJournal[10]; 8. Counter_Journal=0; 9.} 6.展示借阅书籍情况 1.voidReader::Show_Book() 2.{ 3. if(Counter_Book==0) 4. { 5. 6. 7. } 8. for(inti=0;i
books[Counter_Book]=obj; Counter_Book++; cout<<"您已经借阅5本书籍,请归还后继续借阅!"<0;i--) 4. if(books[i].GetCode()==obj.GetCode())break; 5. for(intj=i;j0;i--) 4. if(journals[i].GetCode()==obj.GetCode())break; 6
5. for(intj=i;j
分享到:
收藏