大学期间的C++课设,难忘的时刻仍留于脑海。
总结:总体设计满意,功能齐全,但缺点是主函数过于“庞大”,应该用函数实现,其实留有遗憾才能进步!呵呵。。。
主要程序代码,加上详细的注释
//头文件:
#include<iostream>
using namespace std;
#include<string.h>
#include<stdio.h>
#include<time.h>
//时间函数,time_t是一个在time.h中定义好的结构体。而tm结构体的原形如下:
struct
{
inttm_sec;// seconds after the minute - [0,59]
inttm_min;// minutes after the hour - [0,59]
inttm_hour;// minutes after the hour - [0,59]
inttm_mday;//day of the month - [1,31]
inttm_mon;//months since January - [0,11]
inttm_year;//years since 1900
inttm_wday;//days since Sunday - [0,6]
inttm_yday;//days since January 1 - [0,365]
inttm_isdst;//daylight savings time flag
};
//这是Film_remember类
classFilm_remember
{
public:
intdate3_year;
intdate3_mon;
intdate3_day;
inttime3_hour;
inttime3_min;
intorder3;
char name3[20];
intprice3;
intdiscount3;
intleft_number3;
copy(int date2_year,int date2_mon,intdate2_day,int time2_hour,int time2_min,int order2,charname2[20],int price2,int discount2,intleft_number2);//把数值传入记忆函数
remembershow();
};
//类外实现copy函数和remembershow函数
Film_remember::copy(int date2_year,intdate2_mon,int date2_day,int time2_hour,int time2_min,intorder2,char name2[20],int price2,int discount2,intleft_number2)
{
date3_year=date2_year;
date3_mon=date2_mon;
date3_day=date2_day;
time3_hour=time2_hour;
time3_min=time2_min;
order3=order2;
strcpy(name3,name2);
price3=price2;
discount3=discount2;
left_number3=left_number2;
}
Film_remember::remembershow()
{
cout<<"放映日期"<<"时间"<<"场次"<<"电影名称"<<"票价"<<"会员折扣"<<"剩余座位数量"<<endl;
cout<<date3_year<<"年"<<date3_mon<<"月"<<date3_day<<"日"<<time3_hour<<":"<<time3_min<<""<<order3<<"《"<<name3<<"》"<<price3<<""<<discount3<<""<<left_number3<<endl;
}
//在主函数中
while(choice<=6)//用循环来进行不断操作,直至结束操作
{
cout<<"****************请从以下选择操作****************"<<endl;
cout<<"**1.录入放映信息*"<<endl;
cout<<"**2.浏览放映信息*"<<endl;
cout<<"**3.按日期查询电影*"<<endl;
cout<<"**4.按电影名查询电影*"<<endl;
cout<<"**5.售票和退票*"<<endl;
cout<<"**6.退出*"<<endl;
cout<<"************************************************"<<endl;
// 录入放映信息
if(choice==1)
{
rem++;
cout<<"请输入放映日期"<<"时间"<<"场次"<<"电影名称"<<"票价"<<"会员折扣"<<"剩余座位数量"<<endl;
cin>>date1_year>>date1_mon>>date1_day>>time1_hour>>time1_min>>order1>>name1>>price1>>discount1>>left_number1;
re[rem].copy(date1_year,date1_mon,date1_day,time1_hour,time1_min,order1,name1,price1,discount1,left_number1);//向类remember传值
cout<<endl;
}
//浏览放映信息:
if(choice==2)// 浏览放映信息
{
for(intt1=1;t1<=rem;t1++)//从类的对象数组里依次输出浏览信息
{
if(timenow->tm_year+1900<re[t1].date3_year)//判断系统时间中得年份是否小于电影放映时间
{
re[t1].remembershow();
}
elseif(timenow->tm_year+1900==re[t1].date3_year)//判断在相同时间年份里月份的大小
{
if(timenow->tm_mon+1<re[t1].date3_mon)
{
re[t1].remembershow();
}
elseif(timenow->tm_mon+1==re[t1].date3_mon)//判断在相同时间月份里天数的大小
{
if(timenow->tm_mday<re[t1].date3_day)
{
re[t1].remembershow();//若系统时间小于放映时间则显示出放映信息
}
elseif(timenow->tm_mday==re[t1].date3_day)
{
if(timenow->tm_hour<re[t1].time3_hour)
{
re[t1].remembershow();
}
elseif(timenow->tm_hour==re[t1].time3_hour)
{
if(timenow->tm_min<re[t1].time3_min)
{
re[t1].remembershow();
}
else
cout<<"电影《"<<re[t1].name3<<"》,场次:"<<re[t1].order3<<"放映结束!"<<endl;//若系统时间大于放映时间则显示出放映结束信息
}
else
cout<<"电影《"<<re[t1].name3<<"》,场次:"<<re[t1].order3<<"放映结束!"<<endl;
}
else
cout<<"电影《"<<re[t1].name3<<"》,场次:"<<re[t1].order3<<"放映结束!"<<endl;
}
else
cout<<"电影《"<<re[t1].name3<<"》,场次:"<<re[t1].order3<<"放映结束!"<<endl;
}
else
cout<<"电影《"<<re[t1].name3<<"》,场次:"<<re[t1].order3<<"放映结束!"<<endl;
cout<<endl;
}
}
//按日期查询电影:
if(choice==3)//按日期查询电影
{
int seyear,semon,seday,p=0;
cout<<"请输入要查询的日期,年、月、日:"<<endl;
cin>>seyear>>semon>>seday;
for(intt2=1;t2<=rem;t2++)
{
if(seday == re[t2].date3_day&& semon ==re[t2].date3_mon&& seyear==re[t2].date3_year)//判断所查询的日期是否与存储的电影放映日期相同
{
p++;//判断是否有电影在所查询的日期内放映
if(timenow->tm_year+1900== seyear)
{
if(timenow->tm_mon+1 ==semon)
{
if(timenow->tm_mday ==seday)
{
re[t2].remembershow();
}
else if(timenow->tm_mday> re[t2].date3_day)
cout<<"电影《"<<re[t2].name3<<"》,场次:"<<re[t2].order3<<"放映结束!"<<endl;
else
re[t2].remembershow();
}
elseif(timenow->tm_mon+1 > semon)
{
cout<<"电影《"<<re[t2].name3<<"》,场次:"<<re[t2].order3<<"放映结束!"<<endl;
}
else
re[t2].remembershow();
}
elseif(timenow->tm_year+1900 >seyear)
{
cout<<"电影《"<<re[t2].name3<<"》,场次:"<<re[t2].order3<<"放映结束!"<<endl;
}
else
re[t2].remembershow();
}
}
if(p==0)//判断是否有与此日期相同的放映的电影
{
cout<<"很抱歉!您所查询的此日的电影不存在!"<<endl;
cout<<endl;
}
}
//按电影名查询电影:
if(choice==4)// 按电影名查询电影
{
char sename[10];
intp1=0;
cout<<"请输入要查询的电影名称为:"<<endl;
cin>>sename;
for(intt3=1;t3<=rem;t3++)
{
if(strcmp(sename,re[t3].name3)==0)//判断所查询的电影名是否存在于放映信息中
{
p1++;
if(timenow->tm_year+1900==re[t3].date3_year)//判断所查询的电影是否已经放映结束,分别与系统时间比较年月日
{
if(timenow->tm_mon+1 ==re[t3].date3_mon)
{
if(timenow->tm_mday ==re[t3].date3_day)
{
re[t3].remembershow();//输出还没有放映的电影信息
}
else if(timenow->tm_mday> re[t3].date3_day)
cout<<"电影《"<<re[t3].name3<<"》,场次:"<<re[t3].order3<<"放映结束!"<<endl;//输出此电影放映结束的信息
else
re[t3].remembershow();
}
elseif(timenow->tm_mon+1 >re[t3].date3_mon)
{
cout<<"电影《"<<re[t3].name3<<"》,场次:"<<re[t3].order3<<"放映结束!"<<endl;
}
else
re[t3].remembershow();
cout<<endl;
}
elseif(timenow->tm_year+1900 >re[t3].date3_year)
{
cout<<"电影《"<<re[t3].name3<<"》,场次:"<<re[t3].order3<<"放映结束!"<<endl;
}
else
re[t3].remembershow();
}
}
if(p1==0)//判断所查询的电影是否存在于放映列表
{
cout<<"很抱歉!您所查询的电影不存在!"<<endl;
cout<<endl;
}
}
//售票:
if(choice==5) // 售票和退票
{
int choice1;
cout<<"若买票请选择 1,若退票请选择2:"<<endl;
cin>>choice1;
if(choice1==1)//进行买票操作
{
char m[10] ;
cout<<"请输入您要购买的电影票:"<<endl;
cin>>m;
int q=0;
for(intn=1;n<=rem;n++)
{
if(strcmp(m,re[n].name3)==0)//判断所要看的电影是否待放映
{
q++;
if(re[n].left_number3>0)//判断是否还有座位
{
if(timenow->tm_year+1900<re[n].date3_year)//判断系统年是否小于待放电影日期
{
re[n].remembershow();
char fff;
cout<<"您是否是会员?y/n:"<<endl;//判断是否是会员
cin>>fff;
if(fff=='y'||fff=='Y')
cout<<"您所购买的电影票价格为:"<<re[n].price3*re[n].discount3/10<<endl;
else
cout<<"您所购买的电影票价格为:"<<re[n].price3<<endl;
re[n].left_number3--;
}
elseif(timenow->tm_year+1900==re[n].date3_year)
{
if(timenow->tm_mon+1<re[n].date3_mon)
{
re[n].remembershow();
char fff;
cout<<"您是否是会员?y/n:"<<endl;//判断是否是会员
cin>>fff;
if(fff=='y'||fff=='Y')
cout<<"您所购买的电影票价格为:"<<re[n].price3*re[n].discount3/10<<endl;
else
cout<<"您所购买的电影票价格为:"<<re[n].price3<<endl;
re[n].left_number3--;
}
elseif(timenow->tm_mon+1==re[n].date3_mon)
{
if(timenow->tm_mday<re[n].date3_day)
{
re[n].remembershow();
char fff;
cout<<"您是否是会员?y/n:"<<endl;//判断是否是会员
cin>>fff;
if(fff=='y'||fff=='Y')
cout<<"您所购买的电影票价格为:"<<re[n].price3*re[n].discount3/10<<endl;
else
cout<<"您所购买的电影票价格为:"<<re[n].price3<<endl;
re[n].left_number3--;
}
elseif(timenow->tm_mday==re[n].date3_day)
{
if(timenow->tm_hour<re[n].time3_hour)
{
re[n].remembershow();
char fff;
cout<<"您是否是会员?y/n:"<<endl;//判断是否是会员
cin>>fff;
if(fff=='y'||fff=='Y')
cout<<"您所购买的电影票价格为:"<<re[n].price3*re[n].discount3/10<<endl;
else
cout<<"您所购买的电影票价格为:"<<re[n].price3<<endl;
re[n].left_number3--;
}
elseif(timenow->tm_hour==re[n].time3_hour)
{
if(timenow->tm_min<re[n].time3_min)
{
re[n].remembershow();
char fff;
cout<<"您是否是会员?y/n:"<<endl;//判断是否是会员
cin>>fff;
if(fff=='y'||fff=='Y')
cout<<"您所购买的电影票价格为:"<<re[n].price3*re[n].discount3/10<<endl;//时会员就按会员折扣买票
else
cout<<"您所购买的电影票价格为:"<<re[n].price3<<endl;//不是会员就按原价买票
re[n].left_number3--;
}
else
cout<<"很抱歉,电影《"<<re[n].name3<<"》,场次"<<re[n].order3<<"已放映结束!"<<endl;//要购买的电影票已经放映结束,无法购买
}
else
cout<<"很抱歉,电影《"<<re[n].name3<<"》,场次"<<re[n].order3<<"已放映结束!"<<endl;
}
else
cout<<"很抱歉,电影《"<<re[n].name3<<"》,场次"<<re[n].order3<<"已放映结束!"<<endl;
}
else
cout<<"很抱歉,电影《"<<re[n].name3<<"》,场次"<<re[n].order3<<"已放映结束!"<<endl;
}
else
cout<<"很抱歉,电影《"<<re[n].name3<<"》,场次"<<re[n].order3<<"已放映结束!"<<endl;
cout<<endl;
}
else
cout<<"很抱歉,票已卖完!"<<endl;
}
}
if(q==0)//要购买的电影票不存在
{
cout<<"很抱歉,您所要购买的电影票不存在!"<<endl;
}
}
//退票:
if(choice1==2)//进行退票操作
{
char m1[10];
intorder5;
cout<<"请输入退票的电影名和场次:"<<endl;
cin>>m1;
cin>>order5;
intt4=0;//计数
for(intn1=1;n1<=rem;n1++)
{
char ffff;
if(strcmp(m1,re[n1].name3)==0&& re[n1].order3 ==order5)//判断退票的电影名和场次是否正确
{
t4++;
if(timenow->tm_year+1900< re[n1].date3_year&& re[n1].order3 == order5)//判断系统年是否小于待放电影日期以及场次是否正确
{
cout<<"是否是会员?y/n:"<<endl;//判断是否是会员
cin>>ffff;
if(ffff=='y'||ffff=='Y')
cout<<"退票成功!退还给您钱:"<<re[n1].price3*re[n1].discount3/10<<endl;
else
cout<<"退票成功!退还给您钱:"<<re[n1].price3<<endl;
re[n1].left_number3++;
}
elseif(timenow->tm_year+1900 == re[n1].date3_year&& re[n1].order3 == order5)
{
if(timenow->tm_mon+1< re[n1].date3_mon&& re[n1].order3 == order5)
{
cout<<"是否是会员?y/n:"<<endl;//判断是否是会员
cin>>ffff;
if(ffff=='y'||ffff=='Y')
cout<<"退票成功!退还给您钱:"<<re[n1].price3*re[n1].discount3/10<<endl;
else
cout<<"退票成功!退还给您钱:"<<re[n1].price3<<endl;
re[n1].left_number3++;
}
elseif(timenow->tm_mon+1 == re[n1].date3_mon&& re[n1].order3 == order5)
{
if(timenow->tm_mday< re[n1].date3_day&& re[n1].order3 == order5)
{
cout<<"是否是会员?y/n:"<<endl;//判断是否是会员
cin>>ffff;
if(ffff=='y'||ffff=='Y')
cout<<"退票成功!退还给您钱:"<<re[n1].price3*re[n1].discount3/10<<endl;
else
cout<<"退票成功!退还给您钱:"<<re[n1].price3<<endl;
re[n1].left_number3++;
}
else if(timenow->tm_mday== re[n1].date3_day &&re[n1].order3 == order5)
{
if(timenow->tm_hour< re[n1].time3_hour&& re[n1].order3 == order5)
{
cout<<"是否是会员?y/n:"<<endl;//判断是否是会员
cin>>ffff;
if(ffff=='y'||ffff=='Y')
cout<<"退票成功!退还给您钱:"<<re[n1].price3*re[n1].discount3/10<<endl;
else
cout<<"退票成功!退还给您钱:"<<re[n1].price3<<endl;
re[n1].left_number3++;
}
else if(timenow->tm_hour== re[n1].time3_hour &&re[n1].order3 == order5)
{
if(timenow->tm_min< re[n1].time3_min&& re[n1].order3 == order5)
{
cout<<"是否是会员?y/n:"<<endl;//判断是否是会员
cin>>ffff;
if(ffff=='y'||ffff=='Y')
cout<<"退票成功!退还给您钱:"<<re[n1].price3*re[n1].discount3/10<<endl;//是会员就按会员购买价退钱
else
cout<<"退票成功!退还给您钱:"<<re[n1].price3<<endl;//不是会员就按原价退钱
re[n1].left_number3++;
}
else
cout<<"很抱歉,此电影已放映,票无法退还!"<<endl;
}
else
cout<<"很抱歉,此电影已放映,票无法退还!"<<endl;
}
else
cout<<"很抱歉,此电影已放映,票无法退还!"<<endl;
}
else
cout<<"很抱歉,此电影已放映,票无法退还!"<<endl;
}
else
cout<<"很抱歉,此电影已放映,票无法退还!"<<endl;
cout<<endl;
}
}
if(t4==0)
cout<<"很抱歉,您的电影票不是此电影院发放的!"<<endl;
}
else
cout<<"您的输入有误,请重新选择!"<<endl;
}
//退出系统:
else//退出系统
{
cout<<"************************************************"<<endl;
cout<<"*************谢谢使用此系统,再见!*************"<<endl;
cout<<"************************************************"<<endl;
break;
}