C++影碟出租系统课程设计源代码Word文件下载.docx
《C++影碟出租系统课程设计源代码Word文件下载.docx》由会员分享,可在线阅读,更多相关《C++影碟出租系统课程设计源代码Word文件下载.docx(30页珍藏版)》请在冰豆网上搜索。
if(vi->
Type==1)os<
喜剧"
;
else{
Type==2)os<
悲剧"
;
Type==3)os<
科幻片"
Type==4)os<
悬疑剧"
Type==5)os<
惊悚片"
else{
Type==6)os<
其他”
库存量:
Number<
returnos;
#endif
operator<
(ostream&
os,constCustomer&
cu);
friendclassapplication;
friendclassvideo;
Customer(string="
string="
int=O,int=O,string="
int=O,int=O);
//构造函数
intDeclineMoney(int);
boolRentVideo(string);
boolReturnVideo(string);
//private:
stringidPerson;
stringName;
intLeftMoney;
intnCount;
VideoInfoVideo[10];
Customer*next1;
};
Customer:
Customer(string
//扣取消费额
//出租影碟
//归还影片
//会员账号
//会员姓名
//会员剩余金额
//所借碟片数量
//每个会员最多借
idperson,stringname,int
10张影碟
leftmoney,intncount,string
videoname,intbegintime,intendtime){
idPerson=idperson;
Name=name;
LeftMoney=leftmoney;
nCount=ncount;
for(inti=0;
i<
nCount;
i++){
Video[i].VideoName=videoname;
Video[i].BeginTime=begintime;
Video[i].EndTime=endtime;
\t"
cu->
Name<
会员剩余会
os,constCustomer*cu){
会员编号为:
idPerson<
会员姓名为:
费余额为:
LeftMoney<
for(inti=0;
i<
所借影片名为:
Video[i].VideoName<
os<
影片借阅日期为:
Video[i].BeginTime<
影片归还日期为:
Video[i].EndTime<
\n"
#ifndefMENU_H#defineMENU_H#include<
usingnamespacestd;
//classmenu
菜单类
classmenu{//
intshowMainMenu();
private:
};
intmenu:
showMainMenu(){
system("
cls"
);
cout<
|
1.
影碟租赁
|"
2.
影碟归还
3.
查看各类型影碟信息
4.
查询碟片信息
5.
添加新影碟
6.
删除碟片信息
7.
修改碟片信息
8.
查看会员信息
9.
注册会员
10.
注销会员
11.
更新会员信息与充值
「<
endl;
12.
退出系统
欢迎使用影碟出租系统
**********************************************
**|"
请选择1-12:
"
intselect;
cin>
>
select;
while(select<
1||select>
12){
选择错误,请重新选择1-12"
cin.clear();
//当输入字符,清空流错误状态
cin.sync();
//清空数据流
returnselect;
#ifndefAPPLICATION』
#defineAPPLICATION_H
fstream>
#include"
video.h"
Customer.h"
#include"
menu.h"
class即plication{//数据应用类
application();
~application();
数据输出
数据保存到文件
根据类型查找
查看影碟信息:
根据碟片名称查找
添加影碟
删除影碟
修改影碟信息
会员信息:
根据姓名查找
voidload();
//
voidsave();
voidRent();
〃1.
voidReturn();
〃2.
voidCheckall();
〃3.
voidsearch(intType);
voidCheck(stringvidname);
〃4.
voidAddvideo();
〃5.
voidDeletevideo();
〃6.
voidModifyvideo(stringVname);
〃7.
voidCustomerinfo(stringCname);
//8.
voidAdd();
//9.
voidDelete();
//10.
voidModify(stringName);
//11.
voidrun();
private:
stringtitle;
menumyMenu;
videomyvideo;
Customermycustomer;
video*vid;
Customer*cus;
application:
application(){
vid=0;
cus=0;
load();
~application(){
video*v;
v=vid;
Customer*c;
c=cus;
while(v){
v=v->
next;
deletevid;
vid=v;
while(c){
c=c->
nextl;
deletecus;
cus=c;
/
voidapplication:
load(){
ifstreamfile;
video*v=vid;
碟片信息
stringVname;
碟片名称
stringCountry;
国家
intType;
类型
stringProducer;
制片人
stringDirector;
导演
stringStar;
主演明星
intNumber=0;
file.open("
video.txt"
ios:
in);
库存量
file>
>
Vname>
Country»
Type>
Producer>
Director>
Star»
Number;
while(file.good()){
v=newvideo(Vname,Country,Type,Producer,Director,Star,Number);
v->
next=0;
//碟片结点加入链表
if(vid)//若已经存在结点
{
video*v2;
v2=vid;
while(v2->
next)//查找尾结点
v2=v2_>
v2->
next=v;
//连接
else//若不存在结点(表空)
vid=v;
Vname>
Country>
Star>
}
file.close();
ifstreamfilel;
//
会员信息
Customer*c=cus;
VideolnfoVideo[10];
//每个会员最多借10张影碟
filel.open("
Customer.txt"
file1»
idPerson>
Name»
LeftMoney»
nCount;
Video[i].BeginTime»
Video[i].EndTime»
Video[i].VideoName;
while(file1.good()){
nCount;
c=new
Customer(idPerson,Name,LeftMoney,nCount,Video[i].VideoName,Video[i].BeginTime,Video[i].EndTime);
c->
next1=0;
//顾客结点加入链表
if(cus)//若已经存在结点
Customer*c2;
c2=cus;
while(c2->
next1)//查找尾结点
c2=c2->
next1;
c2->
next仁c;
else//若不存在结点(表空)cus=c;
file1.close();
voidapplication:
save(){
ofstreamfile("
out);
ofstreamfile1("
charc;
cout«
\n是否保存数据?
[Y/N]:
c;
if(toupper(c)!
='
Y'
)
return;
file<
v->
Vname<
Country<
Type<
Producer<
Director<
Star<
Number<
Customer*cu=cus;
while(cu){
file1<
idPerson<
<
LeftMoney<
nCount<
Video<
cu=cu->
next1;
\n保存成功...\n"
Rent(){
intnumber;
Customer*c1;
c1=cus;
请输入会员姓名:
cin»
Cname;
while(c1){
if(c1->
Name==Cname)
break;
c1=c1->
if(c1!
=NULL){
c1;
请输入租赁碟片数目:
number;
if(number>
10-c1->
nCount)
租赁数目超过限定值!
else
if(number*20>
c1->
LeftMoney)
余额不足,请充值或减少影碟数!
if(number<
=10-c1->
nCount&
&
number*20<
=c1->
LeftMoney){
c1->
nCount=number;
请输入租赁日期(例:
2013年08月08日写为20130808):
Video[i].BeginTime;
请输入碟片名:
LeftMoney-=number*20;
\t\t租赁成功!
未找到该会员,请先注册!
Return(){
intnumber,time;
}if(c1!
Customerinfo(Cname);
cout<
请输入归还碟片数目:
nCount=c1->
nCount-number;
for(inti=0;
number;
i++){cout<
请输入碟片名称:
cin>
请输入归还日期:
Video[i].EndTime;
请输入该碟片租赁天数:
time;
if(time%3==0)c1->
LeftMoney=c1->
LeftMoney+20-time/3;
LeftMoney+20-time/3-1;
\t\t扣费成功!
\t\t***归还成功***\n"
未找到该会员,请确认!
voidapplication:
search(intType){//根据类型查找
video*v1;
v1=vid;
while(v1){
if(v1_>
Type==Type)
v1=v1->
if(v1!
v1;
未找到该类型的碟片!
Checkall(){
选择要查找的碟片类型(1.喜剧2.悲剧3.科幻片4.悬疑剧5.历史剧6.惊悚片7.其他):
Type;
search(Type);
********以上为类型所有碟片*********"
是否继续查找【Y/N】?
if(toupper(c)=='
){
Checkall();
return;
pause"
voidapplication:
Check(stringvidname){
if(v1->
Vname==vidname)
未找到该碟片!
Addvideo(){
video*v,*v2;
新结点指针
intType=7;
丿
7
\n**新增碟片信息
//输入碟片信息
**\n"
输入片名cin»
Vname;
v1=vid;
Vname==Vname){
该碟片已存在,是否修改该碟片信息(Y/N)"
该碟片信息为:
Check(Vname);
Modifyvideo(Vname);
cin>
国家:
Country;
类型(1.喜剧2.悲剧3.科幻片4.悬疑剧5•惊悚片6.其他):
制片人:
”;
Producer;
导演:
Director;
主演:
Star;
Vname==Vname)
v2=v1;
//删除结点
=NULL)〃若找到结点,则删除
所要删除的碟片信息如下:
\n"
确定是否删除(Y/N):
if(v仁=vid)//若要删除的结点是第一个结点
vid=v1->
deletev1;
else//若要删除的结点是后续结点
next=v1->
save();
\t\t***删除成功***\n"
是否继续删除(Y/N)"
Deletevideo();
else//未找到结点
未找到该碟片!
Modifyvideo(stringvidname){
v仁vid;