电影院售票系统

大学期间的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;

}

 

 

 

你可能感兴趣的:(编程之美)