C++课设电影院售票管理系统
c语言编程 电影院票务系统

电影院票务系统程序设计C语言编程需自行编辑TXT文件1--6#include<stdio.h>#include<stdlib.h>void menu(){FILE *fp;char ch;fp=fopen("menu.txt","r");for(ch=fgetc(fp);ch!=EOF;ch=fgetc(fp))putchar(ch);fclose(fp);}void book(){int a1,b1,c1,d1,m,k;FILE *fp;printf("请输入目标电影序号:(1-6)");scanf("%d",&k);switch(k){case 1:fp=fopen("ticket1.txt","r+");break;case 2:fp=fopen("ticket2.txt","r+");break;case 3:fp=fopen("ticket3.txt","r+");break;case 4:fp=fopen("ticket4.txt","r+");break;case 5:fp=fopen("ticket5.txt","r+");break;case 6:fp=fopen("ticket6.txt","r+");break;default :printf("you enter an wrong number!\n");}fscanf(fp,"%d %d %d %d",&a1,&b1,&c1,&d1);printf(" 电影序号%d 共有座位%d 已卖出%d 剩余%d\n",a1,b1,c1,d1); if(d1<1) printf(" 对不起,票已售完,请下次再来\n");else {printf("确定订票?1(Y)/0(N)\n");scanf("%d",&m);if(m==1) {c1++;d1--;printf(" 谢谢购买!祝您观影愉快!\n"); rewind(fp);fprintf(fp,"%d %d %d %d",a1,b1,c1,d1); }}fscanf(fp,"%d %d %d %d",&a1,&b1,&c1,&d1);fclose(fp);printf(" 电影序号%d 共有座位%d 已卖出%d 剩余%d\n",a1,b1,c1,d1); }void cancel(){int e1,f1,g1,h1,m,w;FILE *fp;printf("请输入目标电影序号:(1-6)");scanf("%d",&w);switch(w){case 1:fp=fopen("ticket1.txt","r+");break;case 2:fp=fopen("ticket2.txt","r+");break;case 3:fp=fopen("ticket3.txt","r+");break;case 4:fp=fopen("ticket4.txt","r+");break;case 5:fp=fopen("ticket5.txt","r+");break;case 6:fp=fopen("ticket6.txt","r+");break;default :printf("you enter an wrong number!\n");}fscanf(fp,"%d %d %d %d",&e1,&f1,&g1,&h1);printf(" 电影序号%d 共有座位%d 已卖出%d 剩余%d\n",e1,f1,g1,h1); if(g1<1) printf(" 对不起您的输入有误,请重试!\n");else {printf("确定退票?1(Y)/0(N)\n");scanf("%d",&m);if(m==1) {g1--;h1++;printf(" 已退票,欢迎下次再来\n"); rewind(fp);fprintf(fp,"%d %d %d %d",e1,f1,g1,h1); }}fscanf(fp,"%d %d %d %d",&e1,&f1,&g1,&h1);fclose(fp);printf(" 电影序号%d 共有座位%d 已卖出%d 剩余%d\n",e1,f1,g1,h1); }void inquire(){int i,j,k,l,t;FILE *fp;printf("请输入目标电影序号:(1-6)");scanf("%d",&t);switch(t){case 1:fp=fopen("ticket1.txt","r+");break;case 2:fp=fopen("ticket2.txt","r+");break;case 3:fp=fopen("ticket3.txt","r+");break;case 4:fp=fopen("ticket4.txt","r+");break;case 5:fp=fopen("ticket5.txt","r+");break;case 6:fp=fopen("ticket6.txt","r+");break;default :printf("you enter an wrong number!\n");}fscanf(fp,"%d %d %d %d",&i,&j,&k,&l);printf(" 电影序号%d 共有座位%d 已卖出%d 剩余%d\n",i,j,k,l);}main(){int c;int w;start:printf(" *************************************\n");printf(" Welcome to our ticket system!\n" );printf(" 1. Movies menu \n");printf(" 2. book the ticket. \n");printf(" 3. cancel the ticket \n");printf(" 4. inquire the ticket \n");printf(" 5. exit \n");printf(" *************************************\n");scanf("%d",&c);switch(c){case 1:menu();break;case 2:book();break;case 3:cancel();break;case 4:inquire();break;case 5:goto end;default :printf("you enter an wrong number!\n");}printf("continue? 1(Y)/0(N) \n");scanf("%d",&w); system("cls");loop:{if(w==1)goto start;else goto end;}end: printf(" Thank you for use my system! Bye!\n\n\n author:percyfan\n\n\n");}。
c课程设计售票管理

c 课程设计售票管理一、教学目标本课程的目标是让学生掌握售票管理系统的基本原理和操作方法。
知识目标要求学生了解售票管理系统的组成部分、工作原理和业务流程;技能目标要求学生能够熟练使用售票管理系统,进行车票的预订、销售和查询等工作;情感态度价值观目标要求学生认识到售票管理系统在现代社会中的重要性,培养学生对工作的责任心和敬业精神。
二、教学内容本课程的教学内容主要包括售票管理系统的原理、组成、操作方法和业务流程。
具体包括:1. 售票管理系统的基本原理;2. 售票管理系统的组成部分及其功能;3. 售票管理系统的操作方法;4. 售票管理系统的业务流程;5. 售票管理系统在现代社会中的作用。
三、教学方法本课程采用多种教学方法,包括讲授法、演示法、案例分析法和实验法等。
1.讲授法:用于讲解售票管理系统的基本原理、组成和业务流程;2. 演示法:用于展示售票管理系统的操作方法;3. 案例分析法:用于分析实际案例,让学生更好地理解售票管理系统的作用;4. 实验法:让学生动手实践,熟练掌握售票管理系统的操作方法。
四、教学资源本课程的教学资源包括教材、多媒体资料、实验设备和网络资源。
1. 教材:提供售票管理系统的基本原理、组成、操作方法和业务流程等方面的知识;2. 多媒体资料:包括图片、视频等,用于辅助讲解和演示;3. 实验设备:包括计算机、售票管理系统软件等,用于学生动手实践;4. 网络资源:提供相关资讯和案例,便于学生查阅和分析。
五、教学评估本课程的评估方式包括平时表现、作业、考试和项目实践。
平时表现主要评估学生的出勤、课堂参与度和提问回答等情况;作业主要评估学生的理解和应用能力,包括练习题和案例分析报告;考试主要评估学生的知识掌握和运用能力,包括选择题、填空题和问答题;项目实践主要评估学生的实际操作和解决问题的能力。
评估方式应客观、公正,能够全面反映学生的学习成果。
六、教学安排本课程的教学安排如下:共安排16周,每周2课时,共计32课时。
影院管理系统c课程设计

影院管理系统c课程设计一、课程目标知识目标:1. 学生能理解影院管理系统的基本概念、功能模块和业务流程。
2. 学生能掌握数据库设计原则,运用SQL语句进行数据查询、插入、删除和更新操作。
3. 学生能了解C语言在影院管理系统中的应用,如文件操作、字符串处理等。
技能目标:1. 学生能运用结构化分析方法,完成影院管理系统的需求分析。
2. 学生能设计合理的数据库表结构,编写相应的SQL语句实现数据操作。
3. 学生能运用C语言编写功能模块,实现影院管理系统的核心功能。
情感态度价值观目标:1. 学生通过课程学习,培养对信息技术的兴趣和热情,提高学习积极性。
2. 学生在团队协作中,学会沟通、分享和承担责任,培养良好的团队合作精神。
3. 学生能够关注社会发展,了解信息技术在生活中的应用,提高社会责任感。
课程性质:本课程为计算机科学与技术专业的实践课程,旨在让学生通过实际操作,掌握影院管理系统的设计与实现。
学生特点:学生具备一定的C语言基础,对数据库知识有一定了解,但缺乏实际项目经验。
教学要求:注重理论与实践相结合,鼓励学生动手实践,提高学生的实际操作能力和解决问题的能力。
将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容1. 影院管理系统概述:介绍系统的基本概念、功能模块和业务流程,分析实际应用场景,让学生对课程项目有整体的认识。
教材章节:第一章 影院管理系统简介2. 数据库设计:讲解数据库设计原则,指导学生完成影院管理系统数据库的设计,包括表结构设计、关系定义等。
教材章节:第二章 数据库设计3. C语言基础:回顾C语言基础知识,重点讲解文件操作、字符串处理等与本项目相关的内容。
教材章节:第三章 C语言基础4. 影院管理系统功能模块实现:分析系统需求,引导学生运用结构化分析方法,完成功能模块的设计与实现。
教材章节:第四章 功能模块实现5. 数据库操作:教授SQL语言,让学生掌握数据库的增删改查等基本操作,实现影院管理系统中的数据管理功能。
c语言课程设计售票系统

c语言课程设计售票系统一、教学目标本章节的教学目标是使学生掌握C语言基础知识,能够运用C语言设计一个简单的售票系统。
具体目标如下:1.理解C语言的基本语法和数据类型。
2.掌握函数的定义和调用。
3.了解面向过程的编程思想。
4.能够使用C语言编写简单的程序。
5.能够运用面向过程的编程思想设计程序。
6.能够独立完成一个简单的售票系统的设计和实现。
情感态度价值观目标:1.培养学生的编程兴趣,提高学生对计算机科学的热爱。
2.培养学生解决问题的能力,提高学生的自主学习能力。
3.培养学生团队合作的精神,提高学生的沟通协作能力。
二、教学内容本章节的教学内容主要包括C语言基础知识、函数的定义和调用、面向过程的编程思想以及售票系统的设计和实现。
具体内容如下:1.C语言基础知识:数据类型、变量、运算符、表达式等。
2.函数的定义和调用:函数的定义、返回值、参数、函数调用等。
3.面向过程的编程思想:顺序结构、分支结构、循环结构等。
4.售票系统的设计和实现:系统需求分析、功能模块设计、程序实现等。
三、教学方法为了达到本章节的教学目标,我们将采用以下教学方法:1.讲授法:通过讲解C语言基础知识、函数的定义和调用、面向过程的编程思想等,使学生掌握相关概念和理论。
2.案例分析法:通过分析实际案例,使学生了解售票系统的设计和实现过程。
3.实验法:让学生动手编写程序,培养学生的实际编程能力。
4.讨论法:学生进行分组讨论,促进学生之间的交流与合作。
四、教学资源为了支持本章节的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:C语言程序设计教程,用于引导学生学习C语言基础知识。
2.参考书:C语言编程实践,用于为学生提供更多的编程案例和实践指导。
3.多媒体资料:教学PPT、视频教程等,用于辅助讲解和演示。
4.实验设备:计算机、编程环境等,用于学生动手实践和编写程序。
五、教学评估本章节的教学评估将采用多元化的评估方式,以全面、客观地评价学生的学习成果。
C语言课程设计——电影院订票系统

C语⾔课程设计——电影院订票系统1. 课题简介⼤家都爱看电影,现请参考⼀个熟悉电影票预订系统,实现C语⾔版的订票系统。
了解订票如何实现的。
系统主要有2类⽤户:管理员⽤户和顾客⽤户。
管理员⽤户登录系统后,实现电影放映厅信息管理和电影场次信息管理。
具体菜单有:1.电影放映厅信息管理选择该菜单能展⽰所有放映厅,⽤户输⼊某个放映厅编号后,能实现对放映厅增加、删除、修改功能。
主要对movie_house.txt数据修改。
放映厅主要字段信息有:放映厅编号、放映厅名称、放映厅⾏数、放映厅列数、放映厅座位初始状态。
假如放映厅是⼀个10⾏10列座位安排,其初始状态可以⽣成⼀个⼆维数组house[10][10]={0,1,2,0,0},存储座位状态。
0表⽰未定、1表⽰已定、2表⽰不能定。
初始时候应该只有0,2两种状态。
2.电影场次信息管理实现对movie.txt数据增删改及查找。
答辩务必演⽰增删改操作,对于已存在场次能提⽰不得修改。
不存在场次不能删除等容错处理。
修改和添加记录时候,⼀个放映厅⼀个时段只能排1部电影。
若超过要提⽰不能修改。
movie.txt主要字段有:电影场次编号、电影名称、播放⽇期、播放时间段、所在放映厅、放映厅座位当前状态。
(1)放映厅位置当前状态,表⽰当前位置购票情况,如house[10][10]={0,1,2,0,0}。
其中:0表⽰未定座位、1表⽰已定座位、2表⽰不能定座位。
(2)当前状态初始值应该是从movie_house.txt读取放映厅座位初始状态。
顾客登录系统后,主菜单:查看我的订单展⽰所有历史订票信息,然后可删除未看的电影订单。
(选做)注意删除订单后,相应电影场次中位置信息状态也要修改。
电影订票操作步骤如下:(1) 展⽰当前时间段后可看的电影场次信息。
(注意时间,⼀定是当前时间段后的电影信息)(2) 顾客输⼊观看电影名称和时间段,展⽰⽬前厅内位置信息。
注意⽤矩阵⽅式显⽰位置信息,每⾏10列左右,具体⾃⼰设计。
C++课设--电影院售票管理系统

科技大学本科生《C++程序设计》课程设计说明书题目:电影院售票管理系统学生:学号:专业:计算机科学与技术班级:计2010-2班指导教师:成绩评定标准课程设计的验收答辩采取“讲解程序+提问+即时编程”的方式。
目录摘要........................................................................................... 错误!未定义书签。
第一章问题描述 .. (1)第二章问题分析 (3)2.1 阐述你对问题的理解、解决问题的方案说明 (3)2.2 系统功能模块的划分 (4)第三章数据模型 (8)3.1 相关数据结构的说明 (8)3.2 类的设计 (8)3.3 程序结构说明,即程序各个部分之间如何协调来完成任务 (8)3.4 全局变量,重要形式参数、局部变量等等,它们的命名及用途解释 (9)第四章算法描述 (10)4.1 解题算法的设计思路介绍 (10)4.2 主要程序代码,加上详细的注释 (10)4.3 画出程序流程图 (48)第五章设计总结 (49)参考文献 (50)………………………………………………………………………………………………………………………………………………………………………摘要论文主要描述了电影院售票管理系统,具体可分为以下五章:问题描述,问题分析, 数据模型, 算法描述,设计总结。
在第一部分主要阐述了关于电影院售票系统的问题描述,包括所包含的录入信息,浏览信息,查询信息,以及售票和退票功能。
第二部分主要是对电影院售票系统的设计方法和解决方案以及系统的模块划分等。
第三部分是数据模型,叙述系统中数据结构和对类的设计,各功能之间的联系,以及各变量的意义等。
第四部分是算法描述,其中需要详细介绍各功能的功能介绍和演示。
第五部分描述了本次设计的总结。
第一章问题描述……………………………………………………………………………………。
c课课程设计购票系统

c 课课程设计购票系统一、教学目标本节课的教学目标是让学生掌握购票系统的功能和操作流程。
具体包括以下三个方面:1.知识目标:使学生了解购票系统的起源、发展及其在现实生活中的应用;让学生掌握购票系统的核心功能,如查询车票、预订车票、支付车票等。
2.技能目标:培养学生运用购票系统进行车票查询和预订的能力;培养学生运用编程语言实现购票系统的基本功能。
3.情感态度价值观目标:培养学生对购票系统的兴趣,认识到购票系统在现实生活中的重要性,提高学生运用购票系统解决实际问题的意识。
二、教学内容本节课的教学内容主要包括以下三个方面:1.购票系统的起源和发展:介绍购票系统的起源,以及其在我国的发展历程。
2.购票系统的功能和操作流程:详细讲解购票系统的核心功能,如查询车票、预订车票、支付车票等,并通过实际操作演示购票系统的操作流程。
3.购票系统的编程实现:引导学生运用编程语言实现购票系统的基本功能,如查询车票、预订车票等。
三、教学方法为了实现本节课的教学目标,我们将采用以下教学方法:1.讲授法:通过讲解购票系统的起源、发展、功能和操作流程,使学生掌握购票系统的相关知识。
2.讨论法:学生分组讨论购票系统在现实生活中的应用,以及如何运用编程语言实现购票系统的基本功能。
3.案例分析法:分析现实生活中的购票系统案例,使学生更好地理解购票系统的功能和操作流程。
4.实验法:引导学生动手编程,实现购票系统的基本功能,提高学生的实际操作能力。
四、教学资源为了支持本节课的教学内容和教学方法,我们将准备以下教学资源:1.教材:选用符合我国教学大纲的购票系统相关教材,为学生提供系统的购票系统知识。
2.参考书:提供购票系统相关的参考书籍,丰富学生的知识体系。
3.多媒体资料:制作购票系统的教学课件、视频等多媒体资料,提高学生的学习兴趣。
4.实验设备:准备计算机等实验设备,让学生动手实践,提高实际操作能力。
五、教学评估本节课的教学评估将采用多元化的评估方式,以全面、客观地评价学生的学习成果。
影院售票管理系统课程设计

影院售票管理系统课程设计一、课程目标知识目标:1. 学生能理解影院售票管理系统的基本概念、功能模块及其在实际中的应用。
2. 学生掌握数据库的基本操作,如数据查询、插入、删除和修改。
3. 学生了解计算机售票系统中常用的算法和数据结构。
技能目标:1. 学生具备使用数据库软件(如MySQL、Access)进行基本数据管理的能力。
2. 学生能够设计并实现简单的影院售票管理系统,完成票务查询、购票、退票等功能。
3. 学生学会分析影院售票管理系统的需求和问题,提出合理的解决方案。
情感态度价值观目标:1. 培养学生对计算机科学和信息技术的兴趣和热情,激发其主动学习和探索的精神。
2. 增强学生的团队协作意识,培养其分工合作、共同解决问题的能力。
3. 提高学生的信息素养,使其认识到信息技术在现代社会中的重要作用和价值。
课程性质分析:本课程属于信息技术学科,以实践操作为主,理论讲解为辅。
课程内容紧密结合实际应用,强调培养学生的动手能力和解决问题的能力。
学生特点分析:本课程针对的是高中年级学生,他们已具备一定的计算机基础和逻辑思维能力,对新鲜事物充满好奇,具备较强的学习动力。
教学要求:结合课程性质和学生特点,课程目标应注重实践性和应用性,将理论知识融入实际操作中,以培养学生的实际操作能力和创新精神。
通过分解课程目标为具体的学习成果,为后续教学设计和评估提供明确依据。
二、教学内容1. 影院售票管理系统概述:介绍系统的基本概念、功能模块和实际应用场景。
- 教材章节:第一章 计算机售票管理系统概述- 内容列举:系统定义、功能模块划分、应用领域2. 数据库基本操作:学习数据库的创建、表的设计、数据的增删改查等操作。
- 教材章节:第二章 数据库基础- 内容列举:数据库概念、表的设计、SQL语句操作3. 常用算法与数据结构:了解计算机售票系统中常用的算法和数据结构。
- 教材章节:第三章 数据结构与算法- 内容列举:排序算法、查找算法、链表、栈与队列等4. 影院售票管理系统设计:学习系统需求分析、模块划分、界面设计等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
内蒙古科技大学本科生《C++程序设计》课程设计说明书题目:电影院售票管理系统学生姓名:学号:专业:计算机科学与技术班级:计2010-2班指导教师:成绩评定标准课程设计的验收答辩采取“讲解程序+提问+即时编程”的方式。
目录摘要......................................................................................................... 错误!未定义书签。
第一章问题描述. (1)第二章问题分析 (2)2.1 阐述你对问题的理解、解决问题的方案说明 (2)2.2 系统功能模块的划分 (3)第三章数据模型 (6)3.1 相关数据结构的说明 (6)3.2 类的设计 (6)3.3 程序结构说明,即程序各个部分之间如何协调来完成任务 (6)3.4 全局变量,重要形式参数、局部变量等等,它们的命名及用途解释 (7)第四章算法描述 (8)4.1 解题算法的设计思路介绍 (8)4.2 主要程序代码,加上详细的注释 (8)4.3 画出程序流程图 (36)第五章设计总结 (37)参考文献 (38)………………………………………………………………………………………………………………………………………………………………………摘要论文主要描述了电影院售票管理系统,具体可分为以下五章:问题描述,问题分析, 数据模型, 算法描述,设计总结。
在第一部分主要阐述了关于电影院售票系统的问题描述,包括所包含的录入信息,浏览信息,查询信息,以及售票和退票功能。
第二部分主要是对电影院售票系统的设计方法和解决方案以及系统的模块划分等。
第三部分是数据模型,叙述系统中数据结构和对类的设计,各功能之间的联系,以及各变量的意义等。
第四部分是算法描述,其中需要详细介绍各功能的功能介绍和演示。
第五部分描述了本次设计的总结。
……………………………………………………………………………………。
用C++设计一个电影院售票管理系统,能够提供以下服务:(1)录入放映信息,格式为:可不定时的增加放映数据。
(2) 浏览放映信息,可显示出某日期所有放映信息,如果当前系统时间超过了某电影的放映时间,则显示“此电影放映结束”的提示信息。
(3)查询电影:可按日期或电影名查询。
(4)售票和退票功能A:查询电影名。
当剩余座位数大于0,并且当前系统时间小于放映时间时才能售票,计算会员折扣,售票后自动更新剩余座位数。
B:退票时,输入退票的电影名和场次,当电影未放映时才能退票,如果以会员折扣购买的电影票,退票按照折扣价退款,退票后自动更新剩余座位数。
……………………………………………………………………………………。
2.1 阐述对问题的理解、解决问题的方案说明用C++设计电影院售票系统需要用到类,为了存储数据,需要用remember,也就是需要定义类Film_remember ,设计公有成员函数copy(参数)和remembershow()函数,然后在类外实现,公有数据成员设计date3_year,date3_mon,date3_day,time3_hour,time3_min,order3,name3[20],price3,discount3,l eft_number。
在(1)录入信息时,依次输入各数据值,然后同copy函数传值,用for循环来存储每次录入的信息。
在(2)中浏览信息时,需要用到时间函数来判断所录入的电影是否存在,以及是否放映,若存在且放映时间小于系统时间则显示此电影放映结束,若大于系统时间则显示出来。
在(3)中按日期查找同样需要判断是否所查询的日期有要放映的电影,若存在放映的电影则需要判断是否已经放映,若放映了则显示此电影已放映,否则显示出来。
按电影名查询电影时同样需要判断要查询的电影是否存在,若存在则需要判断是否放映结束,若结束则输出结束信息,若还没有放映则显示出来。
在(4)设计购票时需要判断当前是否还有剩余座位,以及是否放映了,若剩余座位还有且还没有放映则显示出来。
否则输出已经放映的信息。
在使用时间函数时,时间函数的年需要加上1900才是当前年数,当使用月时要加上1才是当前月份。
而且在判断日期时需要年月日都得判断,依次用if语句嵌套使用。
……………………………………………………………………………………。
2.2 系统功能模块的划分……………………………………………………………………………………。
分析电影院售票管理系统,大致可分为五大模块(包含7个小模块)。
第一大模块:录入放映信息。
录入信息模块为其他模块的基础,没有录入放映信息就不可能浏览放映信息,不可能按日期和电影名称查询电影,更不能买票和退票了。
第二大模块:浏览放映信息。
这个模块中需要用到时间函数,判断是否放映时间大于系统时间,若是就输出放映信息,否则输出已经放映结束的提示信息。
第三大模块:按日期和电影名查询。
1.按日期查询,需要输入一个日期,若该日期与存储的信息相同则判断系统时间是否大于此日期,若大于则显示提示放映结束的信息,否则输出放映信息供用户查看。
2.按电影名查询,输入一个电影名,首先判断是否存在此电影,若存在继续判断是否系统时间大于放映此电影放映时间,若大于则输出提示放映结束的语句,否则输出放映信息供用户查看。
第四大模块:售票和退票。
1.售票。
售票时首先查询电影名以及剩余座位数量,若电影不存在以及没有剩余座位就输出提示无法购买的信息。
若以上两者都满足则需要判断是否电影已经放映,若已经放映了也不能售票。
只有要买的电影票存在、没有放映且剩余座位还有才能售票,售票时判断是否是会员,时会员则按折扣售票,否则按原价售票。
2.退票。
退票时需要输入电影名和场次,仍然需要判断两者是否与放映信息匹配,若都满足则还需判断要退票的电影是否已经放映,若已经放映了则无法退票。
若可以退票,还需判断是否是会员,若是会员则按会员购买价钱退还,不是会员则按原价退还。
第五大模块:退出系统。
当所需的操作结束后,实现用户退出系统功能。
第三章数据模型3.1 相关数据结构的说明定义了一个类Film_rmember,用来存储记录所录入的信息,并设计它为一个类数组方便存取数据。
为了使主界面在某一操作完成后立即出现,设计了一个while语句体进行条件判断,内部设计了if条件判断执行相应的录入、浏览、查询、购票、退票操作。
3.2 类的设计类Film_rmember设计了公有数据成员和公有成员函数copy(参数),以及显示函数remember_show,把他们设计成类外实现。
从主函数录入信息并传值。
在浏览、查询、购票、退票时都需要类数组来判断条件,调用类数组所存储的数据。
3.3 程序结构说明,程序各个部分之间如何协调来完成任务首先在主函数前定义类Film_rmember,以及成员函数的实现,然后再主函数里定义类数组。
当进行录入信息时,用for循环来存储信息,并同过copy函数实现对数值的传递存储。
当进行浏览信息时需要时间函数的判断,若系统时间超过放映时间则显示放映已经结束,若系统时间小于放映时间则输出所有信息供浏览。
当按日期查询时,同样需要用时间函数判断放映时间是否已经超过系统时间,也需要用for循环依次查找。
当按电影名查询时同样需要判断时间,方法同按日期查询差不多。
当购票与退票时,同样需要判断显示是否已经放映信息。
各部分之间用while语句实现多次循环判断。
3.4 全局变量,重要形式参数、局部变量,它们的命名及用途解释全局变量date_year,date_mon,date_day,time_hour,time_min,order,price,numbername[] 等用于输入数值进行传值。
Choice则用于选择操作。
形参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分别表示年、月、日、小时、分钟、场次、电影名,价格,会员折扣,剩余座位数量。
局部变量t1,t2,t3等都分别用于for循环。
变量命名随结构层次而变化,条理清晰。
第四章算法描述4.1 解题算法的设计思路介绍由于需要判断电影是否放映的条件很多,比如,年,月,日,小时和分钟,而且功能比较全面,所以需要分模块设计。
在每一模块中分别详细的判断年月日,以及小时和分钟。
4.2 主要程序代码,加上详细的注释//头文件:#include<iostream>using namespace std;#include<string.h>#include<stdio.h>#include<time.h>//时间函数,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 1900int 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 n ame3[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<<"放映日期"<<"时间"<<"场次"<<"电影名称"<<"票价"<<"会员折扣"<<"剩余座位数量"<<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>>or der1>>name1>>price1>>discount1>>left_number1;re[rem].copy(date1_year,date1_mon,date1_day,time1_hour,time1_min,order 1,name1,price1,discount1,left_number1); //向类remember传值cout<<endl;}//浏览放映信息:if(choice==2) // 浏览放映信息{for(int t1=1;t1<=rem;t1++) //从类的对象数组里依次输出浏览信息{if(timenow->tm_year+1900<re[t1].date3_year) //判断系统时间中得年份是否小于电影放映时间{re[t1].remembershow();}else if(timenow->tm_year+1900==re[t1].date3_year) //判断在相同时间年份里月份的大小{if(timenow->tm_mon+1<re[t1].date3_mon){re[t1].remembershow();}else if(timenow->tm_mon+1==re[t1].date3_mon) //判断在相同时间月份里天数的大小{if(timenow->tm_mday<re[t1].date3_day){re[t1].remembershow(); //若系统时间小于放映时间则显示出放映信息}else if(timenow->tm_mday==re[t1].date3_day){if(timenow->tm_hour<re[t1].time3_hour){re[t1].remembershow();}else if(timenow->tm_hour==re[t1].time3_hour){if(timenow->tm_min<re[t1].time3_min){re[t1].remembershow();}elsecout<<"电影《"<<re[t1].name3<<"》,场次:"<<re[t1].order3<<" 放映结束!"<<endl; //若系统时间大于放映时间则显示出放映结束信息}elsecout<<"电影《"<<re[t1].name3<<"》,场次:"<<re[t1].order3<<" 放映结束!"<<endl;}elsecout<<"电影《"<<re[t1].name3<<"》,场次:"<<re[t1].order3<<" 放映结束!"<<endl;}elsecout<<"电影《"<<re[t1].name3<<"》,场次:"<<re[t1].order3<<" 放映结束!"<<endl;}elsecout<<"电影《"<<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(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<<"电影《"<<re[t2].name3<<"》,场次:"<<re[t2].order3<<" 放映结束!"<<endl;elsere[t2].remembershow();}else if(timenow->tm_mon+1 > semon){cout<<"电影《"<<re[t2].name3<<"》,场次:"<<re[t2].order3<<" 放映结束!"<<endl;}elsere[t2].remembershow();}else if(timenow->tm_year+1900 > seyear){cout<<"电影《"<<re[t2].name3<<"》,场次:"<<re[t2].order3<<" 放映结束!"<<endl;}elsere[t2].remembershow();}}if(p==0) //判断是否有与此日期相同的放映的电影{cout<<"很抱歉!您所查询的此日的电影不存在!"<<endl;cout<<endl;}}//按电影名查询电影:if(choice==4) // 按电影名查询电影{char sename[10];int p1=0;cout<<"请输入要查询的电影名称为:"<<endl;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<<"电影《"<<re[t3].name3<<"》,场次:"<<re[t3].order3<<" 放映结束!"<<endl; //输出此电影放映结束的信息elsere[t3].remembershow();}else if(timenow->tm_mon+1 > re[t3].date3_mon){cout<<"电影《"<<re[t3].name3<<"》,场次:"<<re[t3].order3<<" 放映结束!"<<endl;}elsere[t3].remembershow();cout<<endl;}else if(timenow->tm_year+1900 > re[t3].date3_year){cout<<"电影《"<<re[t3].name3<<"》,场次:"<<re[t3].order3<<" 放映结束!"<<endl;}elsere[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(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:"<<endl; //判断是否是会员cin>>fff;if(fff=='y'||fff=='Y')cout<<"您所购买的电影票价格为:"<<re[n].price3*re[n].discount3/10<<endl;elsecout<<"您所购买的电影票价格为:"<<re[n].price3<<endl;re[n].left_number3--;}else if(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;elsecout<<"您所购买的电影票价格为:"<<re[n].price3<<endl;re[n].left_number3--;}else if(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;elsecout<<"您所购买的电影票价格为:"<<re[n].price3<<endl;re[n].left_number3--;}else if(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;elsecout<<"您所购买的电影票价格为:"<<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; //时会员就按会员折扣买票elsecout<<"您所购买的电影票价格为:"<<re[n].price3<<endl; //不是会员就按原价买票re[n].left_number3--;}elsecout<<"很抱歉,电影《"<<re[n].name3<<"》,场次"<<re[n].order3<<" 已放映结束!"<<endl;//要购买的电影票已经放映结束,无法购买}elsecout<<"很抱歉,电影《"<<re[n].name3<<"》,场次"<<re[n].order3<<" 已放映结束!"<<endl;}elsecout<<"很抱歉,电影《"<<re[n].name3<<"》,场次"<<re[n].order3<<" 已放映结束!"<<endl;}elsecout<<"很抱歉,电影《"<<re[n].name3<<"》,场次"<<re[n].order3<<" 已放映结束!"<<endl;}elsecout<<"很抱歉,电影《"<<re[n].name3<<"》,场次"<<re[n].order3<<" 已放映结束!"<<endl;cout<<endl;}elsecout<<"很抱歉,票已卖完!"<<endl;}}if(q==0) //要购买的电影票不存在{cout<<"很抱歉,您所要购买的电影票不存在!"<<endl;}}//退票:if(choice1==2) //进行退票操作{char m1[10];int order5;cout<<"请输入退票的电影名和场次:"<<endl;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:"<<endl; //判断是否是会员cin>>ffff;if(ffff=='y'||ffff=='Y')cout<<"退票成功!退还给您钱:"<<re[n1].price3*re[n1].discount3/10<<endl;elsecout<<"退票成功!退还给您钱:"<<re[n1].price3<<endl;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:"<<endl; //判断是否是会员cin>>ffff;if(ffff=='y'||ffff=='Y')cout<<"退票成功!退还给您钱:"<<re[n1].price3*re[n1].discount3/10<<endl;elsecout<<"退票成功!退还给您钱:"<<re[n1].price3<<endl;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:"<<endl; //判断是否是会员cin>>ffff;if(ffff=='y'||ffff=='Y')cout<<"退票成功!退还给您钱:"<<re[n1].price3*re[n1].discount3/10<<endl;elsecout<<"退票成功!退还给您钱:"<<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;elsecout<<"退票成功!退还给您钱:"<<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; //是会员就按会员购买价退钱elsecout<<"退票成功!退还给您钱:"<<re[n1].price3<<endl; //不是会员就按原价退钱re[n1].left_number3++;}elsecout<<"很抱歉,此电影已放映,票无法退还!"<<endl;}elsecout<<"很抱歉,此电影已放映,票无法退还!"<<endl;}elsecout<<"很抱歉,此电影已放映,票无法退还!"<<endl;}elsecout<<"很抱歉,此电影已放映,票无法退还!"<<endl;}elsecout<<"很抱歉,此电影已放映,票无法退还!"<<endl;cout<<endl;}}if(t4==0)cout<<"很抱歉,您的电影票不是此电影院发放的!"<<endl;}elsecout<<"您的输入有误,请重新选择!"<<endl;}//退出系统:else //退出系统{cout<<"************************************************"<<endl;cout<<"*************谢谢使用此系统,再见!*************"<<endl;cout<<"************************************************"<<endl;break;}4.3 画出程序流程图第五章设计总结总结设计及编程中的亮点,分析可能存在的不足之处及可以进一步改善的方法,本次项目任务中值得吸取的经验教训等。