《面向对象课程设计》课程设计报告

更新时间:2024-01-19 02:16:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

呼伦贝尔学院

计算机科学与技术学院

《面向对象课程设计》课程设计报告

(第六次)

呼伦贝尔学院—媒体管理系统

姓名:邵军

班级: 2011级计算机科学与技术一班 学号:2011121122 指导教师:于世华 成绩:

完成时间: 2011年4月7号 完成地点:综合楼401机房

面向对象课程设计 一、 设计任务分析

1、问题描述

呼伦贝尔学院图书馆中的资料很多,如果能分类对其资料流通进行管理,将会带来很多方便,因此需要有一个媒体库管理系统。 图书馆共有三大类物品资料:图书、视频光盘、图画。

这三类物品共同具有的属性有:编号、标题、作者、评级(未评级,一般,成人,儿童)等。其中图书类增加出版社、ISBN号、页数等信息;视频光盘类增加出品者的名字、出品年份和视频时长等信息;图画类增加出品国籍、作品的长和宽(以厘米计,整数)等信息。 2、功能要求

(1) 添加物品:主要完成图书馆三类物品信息的添加,要求编号唯一。当添加了重复的编号时,则提示数据添加重复并取消添加;当物品库已满,则提示不能再添加新的数据。 (2)查询物品

可按照三种方式来查询物品,分别为:

按标题查询、按编号查询、按类别查询:当输入相应信息时,输出所查询的信息,若不存在该记录,则提示“该标题/编号/类别不存在!”;

(3)显示物品库:输出当前物品库中所有物品信息,每条记录占据一行 (4)编辑物品:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。

(5)删除物品:主要完成图书馆物品信息的删除。如果当前物品库为空,则提示“物品库为空!”,并返回操作;否则,输入要删除的编号,根据编号删除该物品的记录,如果该编号不在物品库中,则提示“该编号不存在”。 (6)统计信息

输出当前物品库中总物品数,以及按物品类别,统计出当前物品中各类别的物品数并显示。

(7)物品存盘:将当前程序中的物品信息存入文件中。 (8)读出物品:从文件中将物品信息读入程序。 3、问题的解决方案

2

计算机科学与技术学院程序设计

面向对象课程设计 根据系统功能要求,可以将问题解决分为以下步骤:

(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计; (2)分析系统中的各个实体及它们之间的关系; (3)根据问题描述,设计系统的类层次; (4)完成类层次中各个类的描述; (5)完成类中各个成员函数的定义; (6)完成系统的应用模块; (7)功能调试;

(8)完成系统总结报告。

二、模块设计与主要数据结构

1.一共设计了七个类,分别是媒体类ziliao,图书类tushu,视频 光盘类guangpan,图画类tuhua,图书管理类tushu_Manage,视频光盘管理类guangpan_Manage,图画管理类tuhua_Manage。下面以ziliao,guangpan,guangpan_Manage为例。 类名 public: 数据成员 成员函数 int number;光盘编号; string title;标题; string write;作者; string level;评级; ziliao(intn=0,string ti=\w=\ziliao(基类) l=\带参数的构造函数; virtual void Input(){};基类输入函数; virtual void Output(){};基类输出函数; intGetnumber(){return number;}返回编号; string Gettitle(){return title;}返回标题; 图书类guangpan(基类做为它的虚函数) class guangpan:virtual public ziliao public: string name;出品姓名; intdate;出品时间; 类名 数据成员 成员函数 inttime;播放时长; guangpan(){} 不带参数的构造函数 guangpan(intn,stringti,stringw,stringl,stringna,intda,floattim) :ziliao(n,ti,w,l),name(na),date(da),time(tim){};不带参数构造函计算机科学与技术学院程序设计

3

面向对象课程设计 数; void Input()输入函数; void Output()输出函数; 类名 数据成员 guangpan_Manage(光盘管理类) guangpangp[maxb]; 光盘类类型的对象gp[maxb]组为数据成员; int top; 记录个数; public: 成员函数

guangpan_Manage(){top=0;} 无参数构造函数给top赋值0; void Add(); 添加函数; void Show(); 显示函数; void Search(); 查询函数; void Edit(); 修改函数; void Delete(); 删除函数; void Total(); 统计函数; void Save(); 保存函数; void Read(); 读取函数; 2、类之间的关系

首先定义的是媒体类ziliao;之后通过ziliao类派生了图书类tushu,视频关盘类guangpan,图画类tuhua;然后通过tushu类派生了图书管理类tushu_Manage,通过guangpan类派生了视频光盘管理类guangpan_Manage,通过tuhua类派生了图画管理类tuhua_Manage。通过继承,派生类可以用基类的成员函数。

3、界面设计

主菜单:包括图书管理,视频光盘管理,图画管理,退出四个功能。 分别调用了调用了三个子菜单。来进一步实现媒体库管理功能。

A、主界面

呼伦贝尔学院媒体管理系统界面:

4

计算机科学与技术学院程序设计

面向对象课程设计

B、子界面

——>光盘管理界面:

——>图书管理界面:

——>图画管理界面:

5

计算机科学与技术学院程序设计

面向对象课程设计 三、流程图

Ziliao类(基类)

Tushu类 guangpan类 tuhau类

四、源代码

//【基类】 classziliao {

public: int number; string title; string write; string level; ziliao(int n=0,string

l=\ virtual void Input(){}; virtual void Output(){}; intGetnumber(){return number;} stringGettitle(){return title;} };

//【光盘类】

6

Tushu_Manage类 Guangpan_Manage类 Tuhau_Manage类 添加 查找 修改 删除 显示 保存 读取 ti=\w=\

计算机科学与技术学院程序设计

面向对象课程设计 classguangpan:virtual public ziliao {

public: string name; int date; float time; public:

guangpan(){} guangpan(intn,stringti,stringw,stringl,stringna,intda,floattim) :ziliao(n,ti,w,l),name(na),date(da),time(tim){}; void Input() { cout<<\请输入光盘编号:\ cin>>number; cout<<\请输入内容标题:\ cin>>title; cout<<\请选入作者:\ cin>>write; cout<<\请输入评级(未评级,一般,成人,儿童):\ cin>>level; cout<<\请输入出品人姓名:\ cin>>name; cout<<\请输入出品时间:\ cin>>date; cout<<\请输入播放时长:\ cin>>time; } void Output() { cout<\<\ <

7

计算机科学与技术学院程序设计

面向对象课程设计 <

//【光盘管理类】 classguangpan_Manage {

guangpangp[maxb]; int top; public: guangpan_Manage(){top=0;} void Add(); void Show(); void Search(); void Edit(); void Delete(); void Total(); void Save(); void Read(); };

//【添加光盘信息】

voidguangpan_Manage::Add() { if(top>=maxb) { cout<<\用户已满\ return; }

guangpan t; cout<<\输入新添加的光盘的信息\ t.Input(); for(inti=0;i

8

计算机科学与技术学院程序设计

面向对象课程设计 gp[top]=t; top=top+1; cout<<\添加成功!\}

//【显示已有的光盘信息】 voidguangpan_Manage::Show() { if(top==0) { cout<<\无数据!\ return; } for(inti=0;i

//【查询已有的光盘信息】

voidguangpan_Manage::Search() { if(top==0) { cout<<\当前系统中没有存储记录\ return; } int choice; cout<<\请选择查找方式:1.按编号查找 2.按光盘标题查找.\ cin>>choice; while(choice!=1&&choice!=2){cout<<\请输入正确的序号:\ switch(choice) { case 1:{ cout<<\请输入要查找的编号:\ int number; cin>>number; for(inti=0;i

9

计算机科学与技术学院程序设计

面向对象课程设计 } cout<<\查无此光盘!\ }break; case 2:{ cout<<\请输入要查找的光盘名\ string title; cin>>title; for(inti=0;i

//【删除已有的光盘信息】

voidguangpan_Manage::Delete() { if(top==0) { cout<<\当前系统中没有存储记录!\ return; } cout<<\、按编号查找删除 2、按光盘名查找删除\ int choice; cin>>choice; while(choice!=1&&choice!=2){cout<<\请输入正确的序号:\ switch(choice) { case 1: { cout<<\请输入编号:\ int number; cin>>number;

10

计算机科学与技术学院程序设计

面向对象课程设计 for(inti=0;i>choice; while(choice!=1&&choice!=2){cout<<\请输入正确的序号:\ switch(choice) { case 1: { for(int j=i;j>title; for(inti=0;i>choice; while(choice!=1&&choice!=2){cout<<\请输入正确的序号:\ switch(choice) { case 1: { for(int j=i;j

11

计算机科学与技术学院程序设计

面向对象课程设计 gp[j]=gp[j+1]; cout<<\删除成功!\ top--; };break; case 2:return; default:cout<<\无此项,失败!\ }return; } } cout<<\无此光盘!\ }; break; default:cout<<\没有此项,失败:\ } }

//【修改已有的光盘信息】

voidguangpan_Manage::Edit() { if(top==0) { cout<<\当前系统中没有存储记录!\ return; } int number; cout<<\请输入要查找的光盘编号:\ cin>>number; for(inti=0;i

//【统计光盘信息数量】

voidguangpan_Manage::Total()

12

计算机科学与技术学院程序设计

面向对象课程设计 {cout<<\光盘类光盘数为:\}

//【保存输入的光盘信息】

voidguangpan_Manage::Save() { ofstream out(\光盘管理.txt\ if(!out) { cout<<\打开失败!\ return; } cout<<\打开成功!\ for(inti=0;i

//【读取光盘保存的信息】

voidguangpan_Manage::Read() { ifstream in(\光盘管理.txt\ if(!in) { cout<<\打开失败!\ return; } inti=0; while(in>>gp[i].number >>gp[i].title

13

计算机科学与技术学院程序设计

面向对象课程设计 >>gp[i].write >>gp[i].level >>gp[i].name >>gp[i].date >>gp[i].time) { gp[i].Output(); i++; top++; } in.close(); };

//【主函数】

void tushumenu();//图书菜单函数; void guangpanMenu();//光盘菜单函数; void tuhuaMenu();//图画菜单函数; int main() { int choice; do{ cout<<\ --欢迎登陆!-- 【呼伦贝尔学院媒体管理系统】 \ cout<<\

=========================================================================\ cout<<\

=========================================================================\ cout<<\【 1.图书管理 2.光盘管理 3.图画管理 0.退出系统】\ cout<<\【【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】】\ cout<<\请输入您的选择:\ cin>>choice; switch(choice) { case 1:tushumenu();break; case 2:guangpanMenu();break; case 3:tuhuaMenu();break; case 0:cout<<\您已安全退出系统.\

14

计算机科学与技术学院程序设计

面向对象课程设计 default:cout<<\没有此选项.请重选.\ } }while(choice!=0); cout<<\ <<<<欢迎您下次再使用呼伦贝尔学院媒体管理系统系统!>>>>\ system(\ return 0; }

voidguangpanMenu() { guangpan_Manage p; int choice; do

{ cout<<\ 《《欢迎您下次再使用呼伦贝尔学院媒体管理系统系统》》 \ cout<<\ 【二】光盘管理 \ cout<<\======================\ cout<<\【】\ cout<<\【 1.添加 2.查找 3.修改 4.删除 5.显示 6.保存 7.读取 8.统计 0=>退出】\ cout<<\【】\ cout<<\【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】\ cout<<\输入您操作的选项:\ cin>>choice; switch(choice) { case 1:p.Add();break; case 2:p.Search();break; case 3:p.Edit();break; case 4:p.Delete();break; case 5:p.Show();break; case 6:p.Save();break; case 7:p.Read();break; case 8:p.Total();break; case 0:cout<<\退出成功!\ default:cout<<\无此选项!请重试!\ } }while(choice!=0); }

15

计算机科学与技术学院程序设计

面向对象课程设计 voidtuhuaMenu()

{ tuhua_Manage p1; int choice; do { cout<<\ 《《欢迎您下次再使用呼伦贝尔学院媒体管理系统系统》》 \ cout<< \ 【三】图画管理 \ cout<<\=======================\ cout<<\【】\ cout<<\【 1.添加 2.查找 3.修改 4.删除 5.显示 6.保存 7.读取 8.统计 0=>退出】\ cout<<\【】\ cout<<\【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】\ cout<<\输入您操作的选项:\ cin>>choice; switch(choice) { case 1:p1.Add();break; case 2:p1.Search();break; case 3:p1.Edit();break; case 4:p1.Delete();break; case 5:p1.Show();break; case 6:p1.Save();break; case 7:p1.Read();break; case 8:p1.Total();break; case 0:cout<<\退出成功!\ default:cout<<\无此选项!请重试!\ } }while(choice!=0); }

voidtushumenu() { tushu_Manage p2; int choice; do

{ cout<<\ 《《欢迎您下次再使用呼伦贝尔学院媒体管理系统系统》》 \ cout<< \ 【一】图书管理 \

16

计算机科学与技术学院程序设计

面向对象课程设计 cout<<\=======================\ cout<<\【】\ cout<<\【 1.添加 2.查找 3.修改 4.删除 5.显示 6.保存 7.读取 8.统计 0=>退出】\ cout<<\【】\ cout<<\【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】\ cout<<\输入您操作的选项:\ cin>>choice; switch(choice) { case 1:p2.Add();break; case 2:p2.Search();break; case 3:p2.Edit();break; case 4:p2.Delete();break; case 5:p2.Show();break; case 6:p2.Save();break; case 7:p2.Read();break; case 8:p2.Total();break; case 0:cout<<\退出成功!\ default:cout<<\无此选项!请重试!\ } }while(choice!=0); }

五、测试情况

17

计算机科学与技术学院程序设计

面向对象课程设计

18

计算机科学与技术学院程序设计

面向对象课程设计

19

计算机科学与技术学院程序设计

面向对象课程设计

六、小结

在以前学习了c++面向对象课程后,这学期又开始了面向对象程序设计的课程在上学期的基础之上,老师带领我们进行了程序设计,从小的系统,到中型的系统,到结课我进行了这次大的系统的设计,这也是对我在这门课程所学到的东西的一个考验,通过这次试验让我更加的知道了程序设计的魅力,使得自己更加了解了对系统的设计的整个过程,使得自己受益匪浅,通过自己的努力,和查询资料,用了两周的时间完了成对呼伦贝尔学院媒体管理系统的设计,基本上实现了老师的题目要求,完成了系统,做了实

20

计算机科学与技术学院程序设计

面向对象课程设计 验报告。

希望以后可以有更多的机会可以做这样的系统,这个过程真的很过瘾,很值得我们去争取。对于我们的学习有着大步的提高,使得我们的兴趣有大的提高。

21

计算机科学与技术学院程序设计

本文来源:https://www.bwwdw.com/article/gdxo.html

Top