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