面向对象实验报告.docx

上传人:b****5 文档编号:8311868 上传时间:2023-01-30 格式:DOCX 页数:29 大小:74.82KB
下载 相关 举报
面向对象实验报告.docx_第1页
第1页 / 共29页
面向对象实验报告.docx_第2页
第2页 / 共29页
面向对象实验报告.docx_第3页
第3页 / 共29页
面向对象实验报告.docx_第4页
第4页 / 共29页
面向对象实验报告.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

面向对象实验报告.docx

《面向对象实验报告.docx》由会员分享,可在线阅读,更多相关《面向对象实验报告.docx(29页珍藏版)》请在冰豆网上搜索。

面向对象实验报告.docx

面向对象实验报告

学号:

1041090104810410901044

姓名:

葛建涛王登普

班级:

10级计科

(1)班

时间:

2011年10月16日

音像店管理系统程序设计

实验项目名称:

音像店管理系统

课程名称:

面向对象程序设计

面向专业:

计算机科学与技术

实验目的:

利用面向对象程序设计思想编写一个程序使得音像店可以正常工程。

实验目标与要求:

程序应该执行以下操作:

1、出租影碟。

2、返还影碟。

3、创建音像商店拥有的影碟清单。

4、打印商店所有硬碟的清单。

5、显示某张特定影碟的清单。

6、检查某张影碟是否在商店中。

7、维护顾客的数据库。

8、打印每位顾客所租的所有影碟清单。

实验环境要求:

VC++6.0

实验仪器设备:

一台计算机

实验语言:

C++

实验内容:

程序需求表明音像店有2个主要组成部分:

影碟和顾客。

程序在描述这2个组成部分的同时还需要生成以下2个列表:

1.商店所有影碟的列表。

2.商店所有顾客的列表。

在这里分2个部分分析,第1部分设计、实现和测试影碟部分,第2部分设计和实现顾客部分并加入到第1部分开发的影碟部分。

1、影碟

影碟对象描述影碟相关的通常属性,如下:

stringvideoTitle;//片名

stringmovieStar1;//明星1

stringmovieStar2;//明星2

stringmovieProducer;//制片人

stringmovieDirector;//导演

stringmovieProductionCo;//制片公司

intcopiesInStock;//列表中拷贝的数量

intVideoID;//影碟的编号

音像店系统管理程序中有关影碟的类:

基类

说明

VideoType

一张影碟

VideoListType

list

影碟列表,VideoType对象的列表,继承于STL标准列表容器

VideType类:

函数模块

功能

成员

说明

stringvideoTitle

片名

stringmovieStar1

明星1

stringmovieStar2

明星2

stringmovieProducer

制片人

stringmovieDirector

导演

stringmovieProductionCo

制片公司

intcopiesInStock

列表中拷贝的数量

intVideoID

影碟的编号

voidsetVideoInfo(stringtitle,stringstar1,stringstar2,stringproducer,

stringdirector,stringproductionCo,intsetInStock,intvideoid)

设置硬碟的属性

intgetNoOfCopiesInStock()

取得硬碟的拷贝数量

voidcheckOut()

借出一张硬碟,列表中拷贝的数量减1

voidcheckIn()

登记一张硬碟,列表中拷贝的数量加1

voidprintTitle()

输出硬碟的片名

voidprintInfo()

输出硬碟的细节信息

boolcheckTitle(stringtitle)

检查片名是否与硬碟的片名相同

voidupdateInStock(intnum)

按数量增加列表中硬碟拷贝数

voidsetCopiesInStock(intnum)

设置列表中硬碟拷贝的数量

VideoListType类:

函数模块

功能

boolvideoSearch(stringtitle);

按片名查找影碟是否在商店中

boolisVideoAvailable(stringtitle);

若某张影碟至少有一个拷贝在商店中则返回true

voidvideoCheckOut(stringtitle);

取出一张要借出的影碟,拷贝数减1,即copiesInStock=copiesInStock-1

voidvideoCheckIn(stringtitle);

归还一张影碟,拷贝数加1

boolvideoCheckTitle(stringtitle);

若某张影碟在商店中则返回true,即copiesInStock=copiesInStock+1

voidvideoUpdateInStock(stringtitle,intnum);

按数值增加某张影碟的拷贝数,即copiesInStock=copiesInStock+num

voidvideoSetCopiesInStock(stringtitle,intnum);

重新设置某张影碟的拷贝数,即copiesInStock=num

voidvideoPrintTitle();

输出影碟的片名

voidprint();

输入库中所有的影碟信息

voidvideoInformation(stringtitle);

输出某影碟的具体信息

intVideoID(stringtitle);

返回编号

voidsearchVideoList(stringtitle,bool&found,list:

:

iterator¤t);

在影碟列表中,按照影碟名查找特定的影碟,如果找到则设置found为true,否则为false

2、顾客

顾客对象描述影碟相关的通常属性,如下:

stringName;//姓名

intNumber;//账号

intVideoID[50];//此顾客所出租的影碟

音像店系统管理程序中有关顾客的类:

基类

说明

CustomerType

一位顾客

CustomerListType

list

顾客列表,CustomerType对象的列表,

继承于STL标准列表容器

CustomerType类:

函数模块

功能

voidsetCustomerInfo(stringname,intnumber,intvideoid[]);

设置属性

boolcheckName(stringname);

检测是否有这名顾客

intgetName();

显示账号

voidRental(intid);

出租影碟

voidBack(intid);

返回影碟

voidShow();

显示顾客的信息

CustomerListType类:

函数模块

功能

voidCustomerShowNumber(stringname);

显示账号

voidCustomerRental(stringname,intID);

出租一张影碟

voidCustomerBack(stringname,intID);

返回一张影碟

voidCustomerShow(stringtitle);

显示顾客的信息

boolCustomerJudge(stringname);

判断顾客是否为会员

voidsearchCustomerList(stringtitle,bool&found,list:

:

iterator¤t);

在顾客列表中,按照特定姓名查找特定的账号如果找到则设置found为true,否则为false

设计方案:

首先设置4个类,然后利用case语句对各个函数进行调用。

在这里过程中,保存顾客类的数据。

当输入15时,结束程序。

系统主要流程图:

 

实现记录:

1、进入主界面:

2、各个功能的实现:

(这里只是显示部分功能)

C++源代码主程序:

#include

#include

#include

#include"VideoType.h"

#include"VideoListType.h"

#include"CustomerType.h"

#include"CustomerListType.h"

usingnamespacestd;

//从输入文件中读取数据并创建影碟列表

voidcreateVideoList(ifstream&infile,VideoListType&videolist)

{

chartitle[50],star1[50],star2[50],producer[50],director[50],productionco[70],ch;

intinstock,videoid;

VideoTypenewvideo;

infile.get(title,50);

infile.get(ch);

while(infile)

{

infile.get(star1,50);

infile.get(ch);

infile.get(star2,50);

infile.get(ch);

infile.get(producer,50);

infile.get(ch);

infile.get(director,50);

infile.get(ch);

infile.get(productionco,50);

infile.get(ch);

infile>>instock;

infile.get(ch);

infile>>videoid;

infile.get(ch);

newvideo.setVideoInfo(title,star1,star2,producer,director,productionco,instock,videoid);

videolist.push_back(newvideo);

infile.get(title,50);

infile.get(ch);

}

}

voiddisplayMenu()

{

cout<<"选择下列一项:

"<

cout<<"1:

查找影碟"<

cout<<"2:

借出影碟"<

cout<<"3:

归还影碟"<

cout<<"4:

库存查询"<

cout<<"5:

打印所有影碟名称"<

cout<<"6:

打印所有影碟详情"<

cout<<"7:

显示某张特定影碟的影碟清单"<

cout<<"8:

重新设置某张影碟的数量"<

cout<<"9:

增加某张影碟的数量"<

cout<<"10:

查询顾客的信息"<

cout<<"11:

注册新顾客"<

cout<<"12:

顾客出租一张影碟"<

cout<<"13:

顾客返回一张影碟"<

cout<<"14:

顾客账号查询"<

cout<<"15:

退出"<

}

intMember=0;

//从文件中写入注册的新会员

voidlogin(CustomerListType&customerlist)

{

Member++;

charname[50];

inttitle[50]={0};

CustomerTypecustomer;

cout<<"输入新会员的名字:

"<

cin>>name;

customer.setCustomerInfo(name,Member,title);

customerlist.push_back(customer);

cout<<"注册成功!

会员号为:

"<

}

intmain()

{

VideoListTypevideolist;

CustomerListTypecustomerlist;

intchoice,number;

charch,title[50],name[50];

ifstreaminfile;

//打开输入文件

infile.open("VideoData.txt");

if(!

infile)

{

cout<<"输入文件不存在!

"<

return1;

}

//创建影碟列表

createVideoList(infile,videolist);

infile.close();

//显示菜单

displayMenu();

cout<<"输入选项:

"<

cin>>choice;

//处理输入

while(choice!

=15)

{

switch(choice)

{

case1:

cout<<"输入影碟名称:

"<

cin.get(ch);

cin.get(title,50);

if(videolist.videoSearch(title))

{

cout<<"找到该影碟。

"<

}

else

{

cout<<"该影碟不在库中。

"<

}

break;

case2:

cout<<"输入影碟名称:

"<

cin.get(ch);

cin.get(title,50);

if(videolist.videoSearch(title))

{

if(videolist.isVideoAvailable(title))

{

videolist.videoCheckOut(title);

cout<<"借出影碟:

"<

}

else

{

cout<<"该影碟库存不足。

"<

}

}

else

{

cout<<"库中没有该影碟。

"<

}

break;

case3:

cout<<"输入影碟名称:

"<

cin.get(ch);

cin.get(title,50);

if(videolist.videoSearch(title))

{

videolist.videoCheckIn(title);

cout<<"感谢归还影碟"<

}

else

{

cout<<"库中没有该影碟。

"<

}

break;

case4:

cout<<"输入影碟名称:

"<

cin.get(ch);

cin.get(title,50);

if(videolist.videoSearch(title))

{

if(videolist.isVideoAvailable(title))

{

cout<<"该影碟还有库存。

"<

}

else

{

cout<<"该影碟已经借光。

"<

}

}

else

{

cout<<"库中没有该影碟。

"<

}

break;

case5:

videolist.videoPrintTitle();

break;

case6:

videolist.print();

break;

case7:

cout<<"输入影碟名称:

"<

cin.get(ch);

cin.get(title,50);

videolist.videoInformation(title);

break;

case8:

cout<<"输入影碟名称:

"<

cin.get(ch);

cin.get(title,50);

cout<<"请输入影碟最新的数量数:

"<

cin>>number;

videolist.videoSetCopiesInStock(title,number);

cout<

break;

case9:

cout<<"输入影碟的名称:

"<

cin.get(ch);

cin.get(title,50);

cout<<"请输入<<"<>影碟增加的数量数:

"<

cin>>number;

videolist.videoUpdateInStock(title,number);

cout<

break;

case10:

cout<<"输入顾客的名字:

"<

cin.get(ch);

cin.get(name,50);

customerlist.CustomerShow(name);

cout<

break;

case11:

login(customerlist);

break;

case12:

cout<<"输入顾客的名字:

"<

cin.get(ch);

cin.get(name,50);

if(customerlist.CustomerJudge(name))

{

cout<<"输入需借出的影碟名称:

"<

cin.get(ch);

cin.get(title,50);

if(videolist.videoCheckTitle(title))

{

videolist.videoCheckOut(title);

number=videolist.VideoID(title);

customerlist.CustomerRental(name,number);

}

else

{

cout<<"对不起,音像店没有此"<<"<<"<>"<<"影碟。

"<

}

}

else

{

cout<<"对不起,请注册成为会员!

"<

}

cout<

break;

case13:

cout<<"输入顾客的名字:

"<

cin.get(ch);

cin.get(name,50);

cout<<"输入返回的影碟名称:

"<

cin.get(ch);

cin.get(title,50);

videolist.videoCheckIn(title);

number=videolist.VideoID(title);

customerlist.CustomerBack(name,number);

cout<

break;

case14:

cout<<"输入顾客名字:

"<

cin.get(ch);

cin.get(name,50);

customerlist.CustomerShowNumber(name);

cout<

break;

default:

cout<<"输入错误!

"<

}

displayMenu();

cout<<"输入选项:

"<

cin>>choice;

}

return0;

}

实验心得:

此次实验是自己第一次利用面向对象程序设计思想来编写程序。

在整个过程中是十分成功的。

不但完成了实验的要求,而且还更加深刻了自己对面向对象编程的思想:

面向对象程序设计是对数据的封装;范式(模板)的程序设计是对算法的封装。

利用面向对象思想编程是可以简化程序员的懒惰,无论是对象,还是函数,如果你输入有问题,那么都会在编译的时候报告出来,方便你修改,而不是在执行的时候出错,害的你到处去捉虫子。

 这就是用面向对象思想编程的好处。

通过此次实验,学到了许多知识。

在这,十分感谢赵玉明老师的指导!

附录:

各类的源代码:

#include

#include

#include"VideoListType.h"

voidVideoListType:

:

searchVideoList(stringtitle,bool&found,list:

:

iterator¤t)

{

found=false;

if(empty())

{

cout<<"影碟列表为空!

"<

}

else

{

current=begin();

found=false;

while(!

found&¤t!

=end())

{

if(current->checkTitle(title))

{

found=true;

}

else

{

current++;

}

}

}

}

boolVideoListType:

:

isVideoAvailable(stringtitle)

{

boolfound;

list:

:

iteratorlocation

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

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1