面向对象实验报告Word格式文档下载.docx
- 文档编号:21448140
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:29
- 大小:74.82KB
面向对象实验报告Word格式文档下载.docx
《面向对象实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《面向对象实验报告Word格式文档下载.docx(29页珍藏版)》请在冰豆网上搜索。
程序需求表明音像店有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<
VideoType>
:
iterator&
current);
在影碟列表中,按照影碟名查找特定的影碟,如果找到则设置found为true,否则为false
2、顾客
顾客对象描述影碟相关的通常属性,如下:
stringName;
//姓名
intNumber;
//账号
intVideoID[50];
//此顾客所出租的影碟
音像店系统管理程序中有关顾客的类:
CustomerType
一位顾客
CustomerListType
顾客列表,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&
CustomerType>
在顾客列表中,按照特定姓名查找特定的账号如果找到则设置found为true,否则为false
设计方案:
首先设置4个类,然后利用case语句对各个函数进行调用。
在这里过程中,保存顾客类的数据。
当输入15时,结束程序。
系统主要流程图:
实现记录:
1、进入主界面:
2、各个功能的实现:
(这里只是显示部分功能)
C++源代码主程序:
#include<
vector>
fstream>
string.h>
#include"
VideoType.h"
VideoListType.h"
CustomerType.h"
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(producer,50);
infile.get(director,50);
infile.get(productionco,50);
infile>
>
instock;
videoid;
newvideo.setVideoInfo(title,star1,star2,producer,director,productionco,instock,videoid);
videolist.push_back(newvideo);
infile.get(title,50);
}
}
voiddisplayMenu()
cout<
<
"
选择下列一项:
<
endl;
1:
查找影碟"
2:
借出影碟"
3:
归还影碟"
4:
库存查询"
5:
打印所有影碟名称"
6:
打印所有影碟详情"
7:
显示某张特定影碟的影碟清单"
8:
重新设置某张影碟的数量"
9:
增加某张影碟的数量"
10:
查询顾客的信息"
11:
注册新顾客"
12:
顾客出租一张影碟"
13:
顾客返回一张影碟"
14:
顾客账号查询"
15:
退出"
intMember=0;
//从文件中写入注册的新会员
voidlogin(CustomerListType&
customerlist)
Member++;
charname[50];
inttitle[50]={0};
CustomerTypecustomer;
输入新会员的名字:
"
cin>
name;
customer.setCustomerInfo(name,Member,title);
customerlist.push_back(customer);
注册成功!
会员号为:
Member<
endl<
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();
输入选项:
choice;
//处理输入
while(choice!
=15)
switch(choice)
{
case1:
cout<
输入影碟名称:
cin.get(ch);
cin.get(title,50);
if(videolist.videoSearch(title))
{
cout<
找到该影碟。
}
else
该影碟不在库中。
break;
case2:
if(videolist.isVideoAvailable(title))
{
videolist.videoCheckOut(title);
cout<
借出影碟:
title<
}
else
该影碟库存不足。
库中没有该影碟。
case3:
videolist.videoCheckIn(title);
感谢归还影碟"
case4:
该影碟还有库存。
该影碟已经借光。
case5:
videolist.videoPrintTitle();
case6:
videolist.print();
case7:
videolist.videoInformation(title);
case8:
请输入影碟最新的数量数:
cin>
number;
videolist.videoSetCopiesInStock(title,number);
case9:
输入影碟的名称:
请输入<
影碟增加的数量数:
videolist.videoUpdateInStock(title,number);
case10:
输入顾客的名字:
cin.get(name,50);
customerlist.CustomerShow(name);
case11:
login(customerlist);
case12:
if(customerlist.CustomerJudge(name))
输入需借出的影碟名称:
cin.get(ch);
cin.get(title,50);
if(videolist.videoCheckTitle(title))
number=videolist.VideoID(title);
customerlist.CustomerRental(name,number);
对不起,音像店没有此"
影碟。
对不起,请注册成为会员!
case13:
输入返回的影碟名称:
videolist.videoCheckIn(title);
number=videolist.VideoID(title);
customerlist.CustomerBack(name,number);
case14:
输入顾客名字:
customerlist.CustomerShowNumber(name);
default:
输入错误!
}
displayMenu();
cin>
return0;
实验心得:
此次实验是自己第一次利用面向对象程序设计思想来编写程序。
在整个过程中是十分成功的。
不但完成了实验的要求,而且还更加深刻了自己对面向对象编程的思想:
面向对象程序设计是对数据的封装;
范式(模板)的程序设计是对算法的封装。
利用面向对象思想编程是可以简化程序员的懒惰,无论是对象,还是函数,如果你输入有问题,那么都会在编译的时候报告出来,方便你修改,而不是在执行的时候出错,害的你到处去捉虫子。
这就是用面向对象思想编程的好处。
通过此次实验,学到了许多知识。
在这,十分感谢赵玉明老师的指导!
附录:
各类的源代码:
list>
string>
voidVideoListType:
searchVideoList(stringtitle,bool&
current)
found=false;
if(empty())
影碟列表为空!
else
current=begin();
found=false;
while(!
found&
&
current!
=end())
if(current->
checkTitle(title))
found=true;
current++;
boolVideoListType:
isVideoAvailable(stringtitle)
boolfound;
list<
iteratorlocation
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)