C++课程设计报告--电影院售票系统
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
内蒙古科技大学 本科生《C++程序设计》课程设计说明书 题 目:电影院售票系统 学生姓名:胡书培 学 号:1067111106 专 业:计算机科学与技术 班 级:计2010-1班 指导教师:周李勇成绩评定标准 课程设计的验收答辩采取“讲解程序+提问+即时编程”的方式。 考核项目 评价质量 成绩 程序功能完全A能完全正确回答提问; 实现,并能通过B问题回答的基本意思正确; 答辩。(60%) C不能回答或回答错误,抽取程序小的功能即时编程,能完成; D不能回答或回答错误,即时编程无法完成; 程序设计符合A程序结构层次分明,提取出各个实体类,类的设计合理; 面向对象的思B程序结构层次分明,具有客户类和服务类; 想和原则,结构C类的设计基本正确; 合理(15) D几乎在一个类或者方法中实现了大部分的逻辑,结构不够清晰; 程序的风格A遵守编码规范,有良好的风格; (10%) 以下问题每出现一项成绩降一个等级: 1.类、方法和变量命名不符合规范; 2.方法和属性前缺少注释; 3.程序没有适当缩进; 设计说明书 (15%) 从以下几方面考核: 1.结构完整 2.图表正确 3.文字通顺 4.版面工整 目 录 成绩评定标准 .................................................................................................................... 2 【摘要】 .................................................................................................................................... 5 第一章 问题描述 ...................................................................................................................... 6 1.1 电影院售票管理系统的设计 ..................................................................................... 6 第二章 问题分析 ...................................................................................................................... 8 2.1 阐述你对问题的理解、解决问题的方案说明 ......................................................... 8 2.2 系统功能模块的划分 ................................................................................................. 8 第三章 数据模型 .................................................................................................................... 10 3.1 相关数据结构的说明类的设计 ............................................................................... 10 3.2 程序结构说明,即程序各个部分之间如何协调来完成任务 ............................... 12 3.3 全局变量,重要形式参数、局部变量等等,它们的命名及用途解释 ............... 15 第四章 算法描述 .................................................................................................................... 17 4.1 解题算法的设计思路介绍 ....................................................................................... 17 4.2 主要程序代码,加上详细的注释 ........................................................................... 19 4.3 画出程序流程图 ....................................................................................................... 43 第五章 设计总结 .................................................................................................................... 54 第六章 附录 ............................................................................................................................ 55 参考文献 .................................................................................................................................. 74 【摘要】 电影院售票管理系统两个模块管理系统和售票系统。 1.管理系统具有如下功能: (1)录入信息:且可不定时增加数据。并根据放映时间排序。 (2)浏览信息:可显示出某日期所有放映信息,如果当前系统时间超过了某电影的放映时间,则显示“此电影放映结束”的提示信息。 (3)查询电影:可按日期或电影名查询。并显示目标的详细信息。 (4)修改信息:可根据电影名修改该电影的各种信息(余票除外)并简单排序。 (5)删除电影:根据电影名找到该电影并删除。 2.售票系统功能如下: (1)售票:售票即为影片预定。可根据输出的可预订信息选择订票,如果该影片已放映,则提示不能订票,如果售票成功,自动跟新座位数。 (2)退票:影片退订即退票。根据放映时间和系统时间来判断是否能进行退票,并自动更新座位数。 其他参数:程序中定义了一个node结构和一个ticket类。结构用来存信息,节点类存节点长度,和管理里面的数据。 第一章 问题描述 1.1 电影院售票管理系统的设计 1.设计资料及参数: 用C++设计一个系统,能提供下列服务: (1)录入放映信息,格式为: 放映日期 2011-11-2 2011-11-2 放映时间 10:30 14:00 场次 1 2 电影名称 桃姐 桃姐 票价 30 30 会员折扣 8 8 剩余座位 78 86 可不定时地增加放映数据。 (2)浏览放映信息,可显示出某日期所有放映信息,如果当前系统时间超过了某电影的放映时间,则显示“此电影放映结束”的提示信息。 (3)查询电影:可按日期或电影名查询。 (4)售票和退票功能 A:查询电影名。当剩余座位数大于0,并且当前系统时间小于放映时间时才能售票,计算会员折扣,售票后自动更新剩余座位数。 B:退票时,输入退票的电影名和场次,当电影未放映时才能退票,如果以会员折扣购买的电影票,退票按照折扣价退款,退票后自动更新剩余座位数。 2.设计要求及成果 根据系统功能要求,可以将问题解决分为以下步骤: (1)分析系统中的各个实体之间的关系及其属性和行为; (2)根据问题描述,设计系统的类层次; (3)完成类层次中各个类的描述(包括属性和力一法); (4)完成类中各个成.员函数的定义; (5)完成系统的应用模块; (6)功能调试; (7)完成系统总结报告以及系统使用说明书。 第二章 问题分析 2.1 阐述你对问题的理解、解决问题的方案说明 由设计题目知电影院售票管理系统主要可分为两个大模块:1.管理系统2.售票系统。 对整个系统进行功能分析不难发现,管理系统和售票系统的权限是不一样的,管理系统具有管理员权限,可以对所有数据的信息进行操作,比如:录入(input)、显示(show)、查找(search)、修改(change)、删除(del);而售票系统则只进行售票(sell)和退票(refund)。所以需要设计一个manager和customer函数来区分权限的函数。所以,manager里包含了需要实现的input、show、search、change、del等函数来满足管理要求的功能。Customer包含sell和refund。 2.2 系统功能模块的划分 系统的模块图如下: 主函数 欢迎界面 管理manager 售票customer 输入显示查找修改删除售票退票 管理函数进入时需要管理密码:1234 运行程序时,需要先输入数据,根据需要在对数据进行简单操作。录入时,每录入一个信息就会对现有信息进行插入排序。 显示数据时,会先跟系统时间比较,如果小于系统当前时间,则输出提示“已播放”。 查找时满足要求的按名字查找和按日期查找。找到之后与系统时间比较输出提示,如果没找到,输出提示。 修改函数支持多种修改,可以避免输入的一些错误。也可以修改日期,以调整放映时间。 删除函数是为防止输入错误,或是内存不够用而设计的。比如前几天已播放的,在内存中如果作用不是很大,完全是可以删除的。这样能跟有效利用资源。 售票系统设计较为简单,主要是订票和退票。 订票函数中会先给出可预订的提示,这样可以更有效订票。输入之后会先检查是否播放,若播放则给出提示,退出。若未找到,则同样给出提示。如果票卖光了,仍然有提示,如果电影达到预定要求,则先给出现有座位的预订情况,方便用户高效率订票。当客户输入一座位时程序会判断这个作为是否被预订,如果是,则给出提示;如果no就输出用户需要支付的金额,并记录在座位号对应的数组中。方便退票时退款。订票成功后还会输出现有座位的信息方便核实。 其中订票和退票函数都是用大篇幅(一两百行)来构建起强大而有完善的提示功能,趋于人性化的设计跟拉近了与客户的距离。 第三章 数据模型 3.1 相关数据结构的说明类的设计 程序中定义的数据: struct node { int year; int month; int day; int hour; int minute; int datetime[5];//装时间 ,方便比较 int num; string name; float price; float discount; int rest; float seat[10][10]; }; class ticket { private: node tic[N]; int len; public: ticket(); ~ticket(); int sort(int i); void input(); void show(); void search(); void change(); void del(); void sell(); void refund(); }tick; 对系统进行数据分析就会知道电影院售票管理系统主要处理的是基本电影信息。每个电影的基本信息放在struct node中定义,包括基本的放映日期(date),时间(time),场次(num),影片名(name),票价(price),会员折扣(discount)及余座(rest)。其中日期是包含有年、月、日,时间包含时、分,整形数据,其中还有一个数组(detetime[5])是把该影片时间存储进去,方便以后的排序和与系统时间比较。还有一个而二维数组seat[10][10],是用来存储座位信息(初始化全为0),如果此座位被预定,则对应的座位存的就是订票时的付款,这也方便了退票时的退款。 还要解决数据的组织问题,怎么才能把不同的电影存起来呢?方法目前只学了两种,数组和链表。数组和链表各有优缺点。用链表实现虽然对空间进行了充分利用,但其对数据的存储让人实在无奈,并且操作也不容易实现。剩下就是数组了,虽然需要定义一个大点的数组,但其对数据操作非常方便,这深受初学者的我们的青睐。所以在ticket类中定义了个node[50]。如果需要扩大直接改文件前的#define N后的数字就可以了。 其实质随意选择把电影信息存在结构体而不是类中,主要考虑到,结构体存取数据的方便性,而采用类无疑会给程序很多负担存取。 数据组织结构图: ticket类 Input() Show() len Search() Change() Del() Sell() node[50] Refund() 3.2 程序结构说明,即程序各个部分之间如何协调来完成任务 程序的主要实现过程是在ticket类 中定义的成员函数来实现完成,并且在类外定义。这样方便了对数据进行操作。并且定义了一个全局的比较函数timecmp,可以比较两个时间数组的大小。此函数在程序中用途很广泛,每次输入输出都需要与系统时间进行比较,所以在每个操作函数中都用到了。此外sort函数也是非常有用的,它主要用在输入和修改上。每次更新数据都会根据现有数据的时间进行排序。这也方便了读数据的客户。其中程序总很多代码是重复用到的,但是没有写成函数来调用有两点原因。首先如果写成函数调用的话会降低程序的可读性,其次写成函数的话,代码就固定下来了,使得程序不够灵活。所以在程序不必要的地方,就用代码来代替函数调用。举个例子说,在修改,删除,订票,退票中都会用到按电影名查找。可是没有单独把按电影名查找单独写成函数来调用,是因为在按电影名查找会输出很多详细的电影信息,会使客户感觉到是在浪费时间。下面是按电影名查找的代码片段: for(i=0;i遍历 { if(timecmp(tick.tic[i].datetime,temp,3)==0)//找到 { k++;//找到的记录数 if(j==1) { cout<<"\n 查找结果如下:"<
cout<<"_______________________________________________________________________________"<
cout<<"日----期\t时-间\t场次\t电影名称\t票价\t折扣\t余票"< } j++;
cout< cout< cout< cout< time_t t;
struct tm *tim;
t=time(NULL);//获取当前系统时间
tim=localtime(&t); int
array[5]={tim->tm_year+1900,tim->tm_mon+1,tim->tm_mday,tim->tm_hour,tim->tm_min}; int s;
s=timecmp(tick.tic[i].datetime,array,5);//与系统时间比较 if(s<=0) {
cout<<"\a(已播放!)" < } else {
cout< } cout<当前预订情况"; for(int m=0;m<10;m++) { cout< for(int n=0;n<10;n++) { cout<<"["; if(tick.tic[i].seat[m][n]!=0) { cout<<"有人"; } else { cout<<"无人"; } cout<<"]"; } } cout< } } if(j!=1) { cout< system("pause");//任意键继续 return; } if(i==tick.len&&k==0) { cout<<"\n\a\t\t\t\t未找到结果!"< system("pause");//任意键继续 return; } } }
而在另一些函数种植需要提示用户找没找到就可以了。下面是del函数的按电影名查找 for(i=0;i { if(tick.tic[i].name==na)//找到 { j++; for(int j=i+1;j { tick.tic[j-1]=tick.tic[j]; } cout<删除成功!\n"; tick.len--; } }
if(i==tick.len&&j==0) {
cout<<"\n\a\t\t\t\t未找到结果,删除失败!\n"< system("pause");//任意键继续 return; }
后面的就不再一一列举。
3.3 全局变量,重要形式参数、局部变量等等,它们的命名及用途解释
1.#define N 50//可存电影总数 2.程序中定义的数据: struct node { };
3.int timecmp(int a[],int b[],int n)//时间比较函数,先把时间装入两个数组,把数组地址传进来,比较a,b分别是数组名。n表示循环比较的次数。
int year;//年 int month;//月 int day;//日 int hour;//时 int minute;//分
int datetime[5];//装时间 ,方便比较 int num;//场次 string name;//电影名 float price;//票价 float discount;//会员折扣 int rest;//余票
float seat[10][10];//座位信息
class ticket {
private:
node tic[N];//存电影的数组 int len;//现有电影数量 public:
ticket();//构造函数 ~ticket();//析构函数 int sort(int i);//排序 void input();//录入 void show();//显示 void search();//查找 void change();//修改 void del();//删除 void sell();//订票 void refund()//退票;
}tick;
4.char ch;//接受日期中的字符—或: 5.string na;//输入的姓名
6.time_t t;//时间变量,已包含在头文件库函数ctime中。 7. struct tm *tim;//时间类型的结构体 8. t=time(NULL);//获取当前系统时间 9. tim=localtime(&t); 10.int
array[5]={tim->tm_year+1900,tim->tm_mon+1,tim->tm_mday,tim->tm_hour,tim->tm_min};
//将系统时间装入数组,方便比较 11.int k=0;//标记找到的记录
12.r=timecmp(tick.tic[i].datetime,array,5);//与系统时间比较 ,返回值给r。 13.int j=0;//修改函数中标记修改数量
14.string inpass;//manager函数中的管理员密码初始值1234 15.Flag,as,choice//是用来存接受的选择的
第四章 算法描述
4.1 解题算法的设计思路介绍
timecmp函数是用来比较日期时间函数,它需要先把两个时间装入数组再传进来地址,然后从年月日时分进行比较。如果有大小区分,直接返回。 int timecmp(int a[],int b[],int n) {
for(int i=0;i { if(a[i]>b[i]) { return 1; } if(a[i] { return -1; } }
if(i==n) { return 0; } } // // //
Sort函数主要是对第i个元素进行插入排序。需要先遍历数组然后插入到第一个比他大的元素前面。
int ticket::sort(int i) {
int r,n,j;
for(j=0;j从首元素开始比较日期 {
r=timecmp(tick.tic[i].datetime,tick.tic[j].datetime,5); if(r==-1)//找到第一个比他大的日期 ,插入其前面 { break; } }
if(j==tick.len-1) { return j;
}
}
if(j==i) { for(j=i+1;j从首元素开始比较日期 {
r=timecmp(tick.tic[i].datetime,tick.tic[j].datetime,5); if(r==-1)//找到第一个比他大的日期 ,插入其前面 { break; } } }
node temp=tick.tic[i]; if(j{
for(n=i;n>j;n--) { tick.tic[n]=tick.tic[n-1]; }
tick.tic[j]=temp; return j; } else { if(j==tick.len) { for(n=i;n { tick.tic[n]=tick.tic[n+1]; } } else { for(n=i;n { tick.tic[n]=tick.tic[n+1]; } } tick.tic[n]=temp; return n; }
4.2 主要程序代码,加上详细的注释
下面简单介绍一下程序运行结果 主函数开始运行界面: do
{ cout< cout<<"\t\t\t\t欢迎使用电影售票系统"; cout< cout<<"\n\t\t\t\t1.管理系统"; cout<<"\n\t\t\t\t2.售票系统"; cout<<"\n\n\n\t\t\t\t请选择:"; cin>>choice; switch(choice) { case '1':manager();break; case '2':customer();break; default :exit(0); } }
while(1);
Manager系统代码及运行截图 密码输入界面代码 do { cout<请输入管理员密码:"; string inpass; char a; cin>>inpass;
if(inpass==password) { break; } else { cout<密码错误!"; } cout<是否继续输入?(Y/N)"; cin>>a; if(a=='N'||a=='n') { exit(0); } }while(1);
选择菜单代码
do {
cout<<"\n\t\t\t\t欢迎进入管理系统\n\n"; cout<<"\n\t\t\t\t1.录入影片"; cout<<"\n\t\t\t\t2.显示影片"; cout<<"\n\t\t\t\t3.查找影片"; cout<<"\n\t\t\t\t4.修改影片"; cout<<"\n\t\t\t\t5.删除影片"; cout<<"\n\t\t\t\t6.退出";
cout<<"\n\n\n\t\t\t\t请选择:"; cin>>as; switch(as) {
case '1':tick.input();break; case '2':tick.show();break; case '3':tick.search();break; case '4':tick.change();break; case '5':tick.del();break; case '6': default :system("pause"); return;//任意键继续 } }
while(1); }
选择1——管理系统——>输入密码
选择1——>录入
void ticket::input()//录入信息 {
system("cls");//清屏
char ch;//接受日期中的字符—或:
cout<<"\n\n\n\t\t\t\t《录入模块》\n\n\n"< for(int i=tick.len;i {
cout<<"\n请输入日期(2011-11-11):";
cin>>tick.tic[i].year>>ch>>tick.tic[i].month>>ch>>tick.tic[i].day;
cout<<"\n请输入放映时间(12:30):"; cin>>tick.tic[i].hour; cin>>ch; cin>>tick.tic[i].minute;
tick.tic[i].datetime[0]=tick.tic[i].year; tick.tic[i].datetime[1]=tick.tic[i].month; tick.tic[i].datetime[2]=tick.tic[i].day; tick.tic[i].datetime[3]=tick.tic[i].hour; tick.tic[i].datetime[4]=tick.tic[i].minute; cout<<"\n请输入场次:"; cin>>tick.tic[i].num;
cout<<"\n请输入电影名称:"; cin>>tick.tic[i].name;
cout<<"\n请输入电影票价:"; cin>>tick.tic[i].price;
cout<<"\n请输入会员折扣:"; cin>>tick.tic[i].discount;
tick.tic[i].rest=100;
for(int m=0;m<10;m++) { for(int n=0;n<10;n++) tick.tic[i].seat[m][n]=0; } tick.len++;//个数加1
if(i!=0)//按时间,插入排序 { int j=sort(i); }
cout< cout<<"是否继续录入?(y/n):"; while(1) { cin>>ch; if(ch=='y' || ch=='Y' || ch=='n' || ch=='N') break; else cout<<"输入错误请重新输入:"; }
if(ch=='n' || ch=='N') break; } }
选择n退出——>选2显示。
代码如下
================================================================
cout<<"\n\n\n\t\t\t\t《显示模块》\n\n\n"<
cout<<" 所有电影信息如下:"<
cout<<"_______________________________________________________________________________"<
cout<<"日----期\t时-间\t场次\t电影名称\t票价\t折扣\t余票"< time_t t;
struct tm *tim;
t=time(NULL);//获取当前系统时间 tim=localtime(&t); int
array[5]={tim->tm_year+1900,tim->tm_mon+1,tim->tm_mday,tim->tm_hour,tim->tm_min}; int r;
for(int i=0;i {
r=timecmp(tick.tic[i].datetime,array,5);
cout< cout< cout< cout< if(r<=0) {
cout<<"\a(已播放!)" < } else {
cout< } }
===================================================================
选择1——>继续录入
选择2——>显示
选3——>查找
查找的界面代码
=============================================================== cout<<"\n\n\n\t\t\t\t《查找模块》\n\n\n"< do {
cout<按影片名查找"; cout<按日期查找";
cout<请输入查找模式:"; cin>>flag;
if(flag!='1'&&flag!='2') {
cout<<"\n\a\t\t\t\t选择有误!请选择正确的查找模式。"< }
}while(flag!='1'&&flag!='2');
===============================================================
按电影名查找代码
=============================================================== string na; int j=1; cout<<"\n请输入影片名:"; cin>>na; for(i=0;i { if(tick.tic[i].name==na)//找到 { k++;//找到的记录数 if(j=1) { cout<<"\n 查找结果如下:"<
cout<<"_______________________________________________________________________________"<
cout<<"日----期\t时-间\t场次\t电影名称\t票价\t折扣\t余票"< }
j++;
cout< cout< cout< cout< time_t t;
struct tm *tim;
t=time(NULL);//获取当前系统时间 tim=localtime(&t); int
array[5]={tim->tm_year+1900,tim->tm_mon+1,tim->tm_mday,tim->tm_hour,tim->tm_min}; int r;
r=timecmp(tick.tic[i].datetime,array,5);//与系统时间比较 if(r<=0) {
cout<<"\a(已播放!)" < } else {
cout< } cout<当前预订情况"; for(int m=0;m<10;m++) { cout< for(int n=0;n<10;n++) { cout<<"["; if(tick.tic[i].seat[m][n]!=0) { cout<<"有人"; } else { cout<<"无人"; } cout<<"]"; } } } } if(j!=1) { cout< system("pause");//任意键继续 return; } if(i==tick.len&&k==0)
{ cout<<"\n\a\t\t\t\t未找到结果!"< system("pause");//任意键继续 return; }
===================================================================
按日期查找代码
=================================================================== char ch; int temp[3]; cout<<"\n请输入放映日期:"; cin>>temp[0]>>ch>>temp[1]>>ch>>temp[2]; int j=1; for(i=0;i遍历 { if(timecmp(tick.tic[i].datetime,temp,3)==0)//找到 { k++;//找到的记录数 if(j==1) { cout<<"\n 查找结果如下:"<
cout<<"_______________________________________________________________________________"<
cout<<"日----期\t时-间\t场次\t电影名称\t票价\t折扣\t余票
"< } j++;
cout< cout< cout< cout< time_t t;
struct tm *tim;
t=time(NULL);//获取当前系统时间 tim=localtime(&t); int
array[5]={tim->tm_year+1900,tim->tm_mon+1,tim->tm_mday,tim->tm_hour,tim->tm_min}; int s;
s=timecmp(tick.tic[i].datetime,array,5);//与系统时间比较 if(s<=0) {
cout<<"\a(已播放!)" < } else {
cout< } cout<当前预订情况"; for(int m=0;m<10;m++) { cout< for(int n=0;n<10;n++) { cout<<"["; if(tick.tic[i].seat[m][n]!=0) { cout<<"有人"; } else { cout<<"无人"; } cout<<"]"; } } cout< } } if(j!=1) { cout< system("pause");//任意键继续
return; } if(i==tick.len&&k==0) { cout<<"\n\a\t\t\t\t未找到结果!"< system("pause");//任意键继续 return; }
===================================================================
退出后选4——>修改
修改界面的源代码
=================================================================== if(tick.tic[i].name==na)//找到 { j++; char a; do {
cout<修改放映日期(2011-11-11)"; cout<修改放映时间(12:30)"; cout<修改放映场次"; cout<修改影片名称"; cout<修改影片票价"; cout<修改会员折扣"; cout<
cout<请选择修改项:"; int flag; cin>>flag; char ch;
switch(flag) {
case 1:cout<<"\n请输入放映日期:"; cin>>tick.tic[i].year>>ch>>tick.tic[i].month>>ch>>tick.tic[i].day; tick.tic[i].datetime[0]=tick.tic[i].year; tick.tic[i].datetime[1]=tick.tic[i].month;
tick.tic[i].datetime[2]=tick.tic[i].day;i=sort(i);break; case 2:cout<<"\n请输入放映时间:"; cin>>tick.tic[i].hour>>ch>>tick.tic[i].minute; tick.tic[i].datetime[3]=tick.tic[i].hour; tick.tic[i].datetime[4]=tick.tic[i].minute;i=sort(i);break;
case 3:cout<<"\n请输入放映场次:";cin>>tick.tic[i].num;break; case 4:cout<<"\n请输入影片名:";cin>>tick.tic[i].name;break; case 5:cout<<"\n请输入票价:";cin>>tick.tic[i].price;break; case 6:cout<<"\n请输入会员折扣:";cin>>tick.tic[i].discount;break; default:break; }
cout<是否继续修改此影片?(Y/N)"; cin>>a;
}while(a!='N'&&a!='n');
cout<<" 当前电影信息如下:"<
cout<<"_______________________________________________________________________________"<
cout<<"日----期\t时-间\t场次\t电影名称\t票价\t折扣\t余票"< time_t t;
struct tm *tim;
t=time(NULL);//获取当前系统时间 tim=localtime(&t); int
array[5]={tim->tm_year+1900,tim->tm_mon+1,tim->tm_mday,tim->tm_hour,tim->tm_min}; int r;
r=timecmp(tick.tic[i].datetime,array,5);
cout< cout< cout< cout< if(r<=0) {
cout<<"\a(已播放!)" < } else {
cout< } system("pause");//任意键继续 return; }
===================================================================
退出再选2——>显示
退出选5——>删除
删除代码如下
===================================================================
system("cls");//清屏
cout<<"\n\n\n\t\t\t\t《删除模块》\n\n\n"< string na; int i;
int j=0;//标记删除的数量
cout<<"\n请输入需要删除的影片名:"; cin>>na;
for(i=0;i { if(tick.tic[i].name==na)//找到 { j++; for(int j=i+1;j { tick.tic[j-1]=tick.tic[j]; } cout<删除成功!\n"; tick.len--; } }
if(i==tick.len&&j==0) {
cout<<"\n\a\t\t\t\t未找到结果,删除失败!\n"< system("pause");//任意键继续 return; }
===================================================================
再显示
选6——>退出
进入售票系统选1——>订票
可预订电影信息输出
=================================================================== cout<<"\n\n\n\t\t\t\t《售票模块》\n\n\n"<
cout<<" 可预订的电影信息如下:"<
cout<<"_______________________________________________________________________________"<
cout<<"日----期\t时-间\t场次\t电影名称\t票价\t折扣\t余票"< time_t t;
struct tm *tim;
t=time(NULL);//获取当前系统时间 tim=localtime(&t); int
array[5]={tim->tm_year+1900,tim->tm_mon+1,tim->tm_mday,tim->tm_hour,tim->tm_min}; int r,i;
int k=0;//标记可供预定的影片数量 for(i=0;i {
r=timecmp(tick.tic[i].datetime,array,5); if(r>0) { k++;
cout< cout< cout< cout< } }
===================================================================
查找信息
=================================================================== if(i==tick.len&&k==0) { cout<<"\n\a\t\t\t\t没有找到您要预定的电影!"< system("pause");//任意键继续 return; }
===================================================================
已播放显示不能订票
=================================================================== s=timecmp(tick.tic[i].datetime,array,5);//与系统时间比较 if(s<=0) {
cout<<"\a\n\t\t\t此电影已播放,无法订票!" < system("pause");//任意键继续 return; }
===================================================================
如果满足订票条件
=================================================================== for(m=0;m<10;m++) { cout< for(n=0;n<10;n++) { cout<<"["; if(tick.tic[i].seat[m][n]!=0) { cout<<"有人"; } else { cout<<"无人"; } cout<<"]"; } } cout<请输入预订的座位号(1~100):"; int seatnum; cin>>seatnum;
if(seatnum>100||seatnum<1) { cout<对不起,无此座位!"; system("pause");//任意键继续 return; }
m=(seatnum-1)/10; n=(seatnum-1)%10;
if(tick.tic[i].seat[m][n]==0&&tick.tic[i].rest!=0) {
cout<是否以会员权限购买(Y/N):"; char a; cin>>a;
if(a!='N'&&a!='n') { tick.tic[i].seat[m][n]=tick.tic[i].price*tick.tic[i].discount/10; } else { tick.tic[i].seat[m][n]=tick.tic[i].price; }
tick.tic[i].rest--; cout<您需要支付:"<元。"<
cout<您的座位号是:"< cout<预订成功!"; for(int m=0;m<10;m++) { cout< for(int n=0;n<10;n++) { cout<<"["; if(tick.tic[i].seat[m][n]!=0) { cout<<"有人"; } else { cout<<"无人"; } cout<<"]"; } }
=================================================================
继续预订
座位号判断
=================================================================== if(seatnum>100||seatnum<1) { cout<对不起,无此座位!"; system("pause");//任意键继续 return; }
------------------------------------------------------------------------------------------------------------------ else if(tick.tic[i].seat[m][n]!=0)
{ cout<