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语言课程设计电影院一、教学目标本课程旨在通过C语言编程的教学,让学生掌握C语言的基本语法、数据结构、算法和编程技巧,培养学生具备基本的编程能力和逻辑思维能力。
同时,通过电影院主题的项目设计,使学生能够将所学知识应用于解决实际问题,提高学生的实践能力和创新意识。
具体来说,知识目标包括:1.掌握C语言的基本语法和编程规则。
2.理解数据结构的基本概念,学会使用常见的数据结构进行编程。
3.学习常用的算法和编程技巧,能够独立解决问题。
技能目标包括:1.能够使用C语言编写简单的程序,解决实际问题。
2.具备基本的编程能力和逻辑思维能力,能够阅读和理解他人的代码。
3.学会使用调试工具,能够发现并修复程序中的错误。
情感态度价值观目标包括:1.培养学生的团队合作意识和沟通能力,提高学生的问题解决能力。
2.激发学生对计算机科学的兴趣和热情,培养学生的创新精神和探究精神。
3.培养学生的自主学习能力,使学生养成良好的学习习惯和态度。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、算法和编程技巧。
具体安排如下:1.C语言的基本语法:包括变量、数据类型、运算符、控制结构等基本概念,以及函数、指针等高级概念。
2.数据结构:包括数组、链表、栈、队列等基本数据结构,以及排序算法、查找算法等常用算法。
3.算法和编程技巧:包括常用的排序算法(冒泡排序、选择排序、插入排序等)、查找算法(二分查找、线性查找等)、循环结构、递归结构等编程技巧。
4.项目实践:以电影院为主题,设计相关的项目,如电影信息管理系统、电影票销售系统等,让学生将所学知识应用于解决实际问题。
三、教学方法本课程将采用讲授法、案例分析法、实验法等多种教学方法相结合的方式进行教学。
1.讲授法:通过教师的讲解,让学生掌握C语言的基本语法、数据结构、算法和编程技巧。
2.案例分析法:通过分析实际案例,让学生理解编程的实际应用,提高学生的实践能力。
3.实验法:通过实验课,让学生动手编写代码,培养学生的编程能力和实验能力。
影院售票管理系统--c 课程设计报告
2016-2017学年第2学期《C++》课程设计报告题目:电影院售票系统专业:计算机科学与技术班级:14(1)姓名:虞跃华指导教师:陈宝国成绩:计算机学院2017年4月21日(课外的,第十周答辩和总结)2017年5月21日(课内的,第十四周答辩和总结)目录1. 绪论 (4)1.1系统的开发背景 (4)1.2系统开发的必要性 (5)1.3系统开发目标与意义 (5)2. 开发工具 (6)2.1VB简介 (6)2.2数据库开发工具 (6)3 需求分析 (7)3.1可行性分析 (7)3.2功能描述 (8)3.3数据字典 (8)3.4系统功能图 (12)3.5对性能的规定 (13)3.6数据管理能力要求 (13)3.7故障处理要求 (14)4. 主要界面及功能 (14)4.1影院售票管理系统 (14)4.2小卖部管理 (18)4.3查询统计 (20)5. 详细设计 (23)5.1结构程序设计 (23)5.2人机界面设计 (24)6. 功能实现 (26)6.1售票系统 (26)6.2小卖部系统 (32)总结 (39)参考文献 (39)1. 绪论1.1系统的开发背景当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。
计算机的最大好处在于利用它能够进行信息管理。
使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。
管理信息系统是进行信息的采集、存储、加工、维护和使用的系统,它是随着管理科学和技术科学的发展而形成的。
影院售票管理系统是一个经济社会不可缺少的部分,它的内容对于企业管理的决策者和管理者来说都至关重要,所以影院售票管理系统应该能够为用户提供充足的信息和快捷的查询手段,对用户来说可以轻松的查阅自己消费信息等。
但是一直以来人们都是靠传统人工的方式管理影院售票,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
c语言电影票务系统设计说明
精心整理电影票务系统一、程序框架图(注:管理员密码为123.)二、概要设计1) 主要结构体 structMovie //电影信息{ intnumber;//编号,各票的编号是唯一的,方便用户输入编号就能选择想要的票进行操作 intisNotNull; //是否不为空,==1时表示有电影可看 charMID[50]; //电影序列号 charMName[50];//电影名称 charcompany[50]; //电影院 structtmt1; //播放日期、时间 structtmt2;//结束日期、时间time_tsecond; //把播放日期、时间转换为秒。
这样票的排序就很简单了。
intprice;//价格intseatnumber[20][20];//保存座位信息,数字1代表已被预定,数字0代表未被预定 intcount;//票数charlate[50]; //是否正常播放电影院票务系统管理员管理影讯系统按时间排列信息订票信息修改电影信息增加电影信息删除电影信息退出子菜单按电影名称查询信息按放映时长查询信息按电影院查询信息};typedefstructmoviemoviestructCustomer //顾客{charcID[50]; //身份证inttickets; //订的票数Movief; //保存已定的票的信息};typedefstructCustomerCustomer;:Movieff; //空的票。
用来格式化被删除的或过期的或还掉的票Customercc; //空人。
用来格式化票数为零的客户Movief[100]; //保存所有的票Customerc[100];//保存所有的客户charpassword[100]="123"; //密码charcomand[20],comandx[20];//用户输入的命令字符串,防止输入0.1之类的intcommand,commandx; //由charcomand[20]转化成的命令intMNumber; //电影票总数,程序刚开始时要从文件读取资料的循环次数intcNumber; //顾客数,程序刚开始时要从文件读取资料的循环次数intrank=1; //电影的编号,唯一的,用于区分不同的票voidReady(); //程序输出主菜单前,从文件里读取所有数据,文件不存在的话就创建所有的文件voidFinish(); //用户选择退出时,保存资料voidMenu(); //输出主菜单,任您选择voidControl();//管理员管理界面voidAddMovie(); //添加电影voidDeleteMovie(); //删除voidAlterMovie(); //修改voidSearchMovie(); //按电影序号、播放时间、结束时间、电影院查询机票voidMyPrint(Movief); //自己定义的输出函数voidMyPrintx(Movief);voidMyPrintxx(Movief);voidPrintAllMovie(); //输出所有的电影信息voidPrintAllMoviex();voidSortMovie(); //排序电影2)主要函数流程图:(1)管理员修改电影信息:先判断密码,密码正确后再选择操作:创建、修改、增加、删除 具体见图1.。
c语言课程设计电影选座
c语言课程设计电影选座一、教学目标本章节的教学目标是使学生掌握C语言编程的基本知识,能够运用C语言编写简单的程序。
具体目标如下:1.知识目标:使学生了解C语言的基本语法、数据类型、运算符、控制结构等基本知识。
2.技能目标:使学生能够运用C语言编写简单的输入输出程序、控制流程程序和函数程序。
3.情感态度价值观目标:培养学生对计算机编程的兴趣,提高学生解决问题的能力。
二、教学内容本章节的教学内容主要包括以下几个部分:1.C语言的基本语法和数据类型。
2.运算符和控制结构。
3.函数的定义和调用。
4.简单的输入输出程序设计。
5.控制流程程序设计。
6.函数程序设计。
三、教学方法为了达到本章节的教学目标,将采用以下教学方法:1.讲授法:讲解C语言的基本语法、数据类型、运算符和控制结构等知识。
2.案例分析法:通过分析典型程序案例,使学生掌握函数的定义和调用、输入输出程序设计和控制流程程序设计等技能。
3.实验法:安排实验室实践环节,让学生动手编写程序,巩固所学知识。
四、教学资源为了支持本章节的教学内容和教学方法的实施,将准备以下教学资源:1.教材:《C语言程序设计》。
2.参考书:《C语言 Primer》。
3.多媒体资料:C语言编程相关视频教程。
4.实验设备:计算机实验室。
五、教学评估为了全面、客观地评估学生在本次课程中的学习成果,将采用以下评估方式:1.平时表现:通过学生在课堂上的参与度、提问回答、小组讨论等表现,评估其对C语言编程基本知识的掌握情况。
2.作业:布置课后编程作业,评估学生对课堂所学知识的应用能力和编程技能。
3.考试:进行期中考试和期末考试,测试学生对C语言编程知识的掌握程度和编程能力。
评估方式将根据学生的表现进行综合评分,以保证评估结果的公正性和客观性。
六、教学安排本章节的教学安排如下:1.教学进度:按照教材的章节顺序,合理安排每一节课的教学内容,确保覆盖本章节的所有知识点。
2.教学时间:每节课安排45分钟,确保有足够的时间进行讲解、案例分析、实验等教学活动。
c语言电影管理系统课程设计
c语言电影管理系统课程设计一、课程目标知识目标:1. 理解C语言基础,掌握结构体、指针、文件操作等核心概念;2. 学会使用C语言设计小型管理系统,理解系统设计的基本流程;3. 掌握如何在C语言中实现电影信息的增删改查功能。
技能目标:1. 能够运用结构体管理电影信息,熟练使用指针操作结构体数组;2. 培养代码逻辑思维能力,学会调试和优化C语言程序;3. 掌握文件读写操作,实现电影信息的持久化存储。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习C语言的积极性;2. 培养学生团队协作精神,学会在项目中分工合作;3. 增强学生的成就感,认识到编程在解决实际问题中的应用价值。
课程性质:本课程为实践性较强的学科,注重培养学生动手能力和实际应用能力。
学生特点:学生具备一定的C语言基础,对编程有一定的兴趣,但可能缺乏实际项目经验。
教学要求:教师需引导学生主动参与,鼓励学生思考、提问,关注每个学生的学习进度,确保课程目标的实现。
通过本课程的学习,学生能够独立完成一个简单的电影管理系统,为以后学习更复杂的编程知识打下基础。
二、教学内容1. C语言基础回顾:数据类型、变量、运算符、控制语句(条件语句、循环语句);2. 结构体和指针:结构体定义、结构体变量的创建与初始化、结构体数组、指向结构体的指针;3. 文件操作:文件打开与关闭、读写操作、文件定位;4. 函数与模块化编程:函数定义、调用、参数传递,模块化设计理念;5. 电影管理系统设计:- 系统需求分析:功能模块划分、数据结构设计;- 系统设计:模块详细设计、接口定义;- 系统实现:编码、调试、优化;- 系统测试:单元测试、集成测试、系统测试。
教学安排与进度:1. C语言基础回顾(1课时);2. 结构体和指针(2课时);3. 文件操作(2课时);4. 函数与模块化编程(2课时);5. 电影管理系统设计(5课时):包括需求分析、设计、实现和测试。
教学内容关联课本章节:1. C语言基础回顾:《C程序设计》第1、2章;2. 结构体和指针:《C程序设计》第6章;3. 文件操作:《C程序设计》第10章;4. 函数与模块化编程:《C程序设计》第4章;5. 电影管理系统设计:结合《C程序设计》实例进行拓展。
影院座位的安排
众的概率。另外,从银幕到第一排座位的距离应该最少是银幕宽度的一半[3],以保证观众的 水平视角不超过90o,便于聚光。
满意度,先考虑观众的仰角情况。检查第一排的观众是否满足仰角条件,由表 1 数据,
θ = arctg 4.50 −1.10 ≈ 29.9o < 30o ,即不论地板线倾角α 大小,所有观众都满足仰角条件,
5.91 且从前排到后排,仰角依次减小。于是我们再考虑影响观众满意度的视角因素,可以求所有 观众的平均视角。若用积分的方法,有些不符合实际,因为影院座位的排数是很有限的。 由表 1 数据, D − d =12.9,而排距假设为 0.8m,排数 n =12.9/0.8=16.1,于是我们不妨取排 数为 16 进行计算。
2
5. 模型建立
问题 1
如图 3 以地面水平方向为 x 轴,屏幕处竖直方向为 y 轴建立直角坐标系。设屏幕最上点 为 A ,最下点为 B ,观众眼睛所在点为 E 。
y
A
h
B H
ωθ
E
c
α
O
d
x
D
图 3 影院剖面的坐标系图
则 A(0, H ) ,B(0, H − h) ,E(x, (x − d )tgα + c) (x ∈[d, D]) 。设 AE 的斜率为 k1 ,BE 的
于是似乎地板线设计成水平面,高度为 H-h/2,即屏幕的垂直平分线,这样所有点的视 角都最大。但实际上某人的视角范围内里有其他人时,视角就要减小,如上述水平面,只有 第一排观众视角最大,其它排的视角为其一半,若考虑眼睛到头顶的高度,则视角更小。可 见,第 1 排观众的高度不能超过屏幕下边缘的高度,否则后面的人就会被挡住。
θ
影院管理系统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语言课程设计报告—电影俱乐部管理程序(2020年九月整理).doc
C语言课程设计报告055071班王耀琪学号:20071004144一.前言C语言是一种编译型程序设计语言,编程设计是学习该语言的一个重要环节。
通过温习已学的知识,在上机实践中熟悉C语言的编程环境,进而达到能够编写较复杂程序并将其实际应用的程度。
在实际编程中不断地深入学习数据结构、算法、编译原理、操作系统原理、软件工程等知识,加深对C语言的理解,切实提高编程水平,这是C语言课程设计的主要目的。
二.正文(1)题目:电影俱乐部【要求】允许俱乐部成员租用DVD。
若想成为会员,首先应签约并且可按月交纳费用。
会员一次可租用三个DVD,没有时间限制。
可浏览所有可租用的DVD,能实现新成员的开户、会员对其帐户状况的查询以及俱乐部管理者对所有交易情况的查看功能。
(2)需求分析:DVD信息和俱乐部会员信息用文件存储,提供文件的输入输出操作;注册新会员,提供文件的添加操作;实现查询则提供文件的查找操作;另外提供键盘式选择菜单以实现功能选择。
(3)总体设计:整体设计为会员注册模块、会员缴费模块、会员租用DVD模块、会员归还DVD模块、信息浏览模块和信息查询模块等。
程序说明:主函数中提供输入输出和部分函数调用,全局变量n,n1实现保存菜单数字等简单功能,程序主要功能体现在各模块中。
程序主要采用结构体变量实现操作,以一个会员的所有信息为一个单元,并用文件保存。
程序中以选择结构为大框架,通过使用顺序结构和选择结构实现操作。
(4)代码设计1.主函数提供密码验证和输入输出功能,各功能用菜单方式选择,使用文件存放,流程图如图所示,密码123,可在源程序修改。
main(){printf("*******************欢迎使用DVD信息管理系统**********************\n"); printf("\n\n\n\n请输入管理员密码:");if(check())menu1();else{printf(" 密码输入错误\n");printf(" ****************你无权使用本系统*****************\n");quit();}}int check() /* 验证会员密码*/{char a[20],str[]="123"; /*注意:会员初始密码为123*/int count;for(count=0;count<3;count++){ gets(a);if(strcmp(a,str)==0)return 1 ;elsecontinue;}return 0;}int menu1() /*主函数功能菜单*/{FILE *fp1;int a; /*变量a保存选择菜单数字*/if((fp1=fopen("n.txt","a+"))==NULL){printf("cannot open file");exit(0);}{fread(&N[1],sizeof(int),1,fp1);fread(&N[2],sizeof(int),1,fp1);}fclose(fp1);n=N[1];n1=N[2];moon();printf("\n 1. 建立新档案(会员档案和DVD档案)\n");printf("\n 2. 注册会员\n");printf("\n 3. 缴纳会费\n");printf("\n 4. 会员租用DVD\n");printf("\n 5. 信息浏览\n");printf("\n 6. 信息查询\n");printf("\n 7. 退出\n");printf("**********************************************");printf("\n\n\n请选择编号:");scanf("%d",&a);switch(a)/*主函数功能选择*/{ case 1: {create(); menu1();}break; /*建立新档案模块*/case 2: {add(); menu1(); } break; /*注册会员模块*/case 3: {monfei();menu1();}break; /*缴纳会费模块*/case 4: {dvd();menu1();}break; /*会员租用DVD模块*/case 5: menu2();break; /*信息浏览模块菜单*/case 6: menu3();break; /*信息查询模块菜单*/case 7: quit();break;/*退出模块*/default: printf("输入编号错误\n");menu1();}}1.2.注册模块本模块要求用户创建初始会员信息,是后续操作的基础。
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列左右,具体⾃⼰设计。
大班科学《电影院里的座位》教案
大班科学《电影院里的座位》教案一、教学目标1. 认知目标:让幼儿了解电影院的座位排列规则,知道如何找到自己的座位。
2. 技能目标:培养幼儿观察、思考和解决问题的能力。
3. 情感目标:培养幼儿对科学探索的兴趣,增强合作意识。
二、教学重点与难点1. 重点:让幼儿掌握电影院座位的排列规律。
2. 难点:让幼儿能够在实际场景中应用所学知识找到自己的座位。
三、教学准备1. 教具准备:电影院座位图、卡片、贴纸等。
2. 环境准备:安静、舒适的教学环境。
四、教学过程1. 导入:通过谈话方式引导幼儿谈论看电影时的座位选择,激发幼儿对电影院座位的兴趣。
2. 基本概念:介绍电影院的座位排列规则,如前排、后排、左列、右列等。
3. 实践活动:a. 教师出示电影院座位图,让幼儿观察并找出自己的座位。
b. 幼儿分成小组,通过合作找到每个小组的座位。
c. 教师设置情境,让幼儿模拟进入电影院,找到自己的座位。
4. 巩固练习:通过游戏、卡片等方式让幼儿进一步巩固座位排列规律。
五、课后作业1. 家长协助幼儿在家观看电影海报,让幼儿尝试找出自己的座位。
2. 家长鼓励幼儿分享在课堂上的学习经历,增强幼儿的成就感。
注意:教师在教学过程中要关注每个幼儿的学习情况,对有困难的幼儿给予个别指导,确保他们能够掌握所学知识。
在实践活动环节,鼓励幼儿积极参与,培养合作意识。
六、教学评价1. 课堂参与度:观察幼儿在课堂上的参与情况,是否积极参与讨论和实践活动。
2. 座位找到能力:评估幼儿在实践活动环节是否能正确找到自己的座位。
3. 合作意识:评价幼儿在小组活动中是否能与同伴合作,共同完成任务。
七、教学拓展1. 邀请电影院工作人员来园进行讲解,让幼儿更直观地了解电影院座位的设置。
2. 组织一次实地考察,让幼儿亲自去电影院体验找座位的环节。
八、教学反思1. 教师要根据幼儿在课堂上的表现,及时调整教学方法,确保教学效果。
2. 在实践活动环节,关注幼儿的安全问题,确保幼儿在找到座位的过程中不会发生意外。
影院售票系统课程设计c语言
影院售票系统课程设计c语言一、教学目标本课程旨在通过学习“影院售票系统”这一实际项目,使学生掌握C语言编程的基本语法、数据结构及简单的算法。
在知识目标方面,学生应能够理解并运用C语言进行简单的程序设计;掌握基本数据类型、运算符、控制结构、函数等编程基础。
技能目标方面,学生应能够独立完成一定复杂度的程序设计,如简单的影院售票系统;能够进行基本的代码调试和优化。
情感态度价值观目标方面,学生应培养对计算机科学的兴趣和好奇心,增强解决实际问题的信心和能力。
二、教学内容本课程的教学内容围绕C语言的基本语法和编程技巧展开。
首先,学生需要了解C语言的基本数据类型和运算符,掌握变量和常量的使用。
其次,学生将学习C 语言的控制结构,如if-else语句、循环语句等,以及函数的定义和调用。
在此基础上,学生将学习C语言的高级话题,如数组、指针、结构体等,并能够运用这些知识解决实际问题。
最后,学生将通过设计和实现一个简单的影院售票系统,综合运用所学知识,提高编程能力和问题解决能力。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法。
首先,通过讲授法,为学生提供C语言的基础知识;其次,通过案例分析法,使学生能够将所学知识应用于解决实际问题;再次,通过实验法,让学生动手实践,提高编程能力;最后,通过讨论法,促进学生之间的交流与合作,培养团队精神。
四、教学资源为了支持教学内容和教学方法的实施,我们将选择和准备适当的教学资源。
教材方面,将选用权威、实用的C语言教材,为学生提供系统的学习材料。
参考书方面,将推荐一些经典的C语言编程书籍,供学生深入学习。
多媒体资料方面,将收集一些与C语言编程相关的视频教程、博客文章等,丰富学生的学习渠道。
实验设备方面,将确保每个学生都能够使用电脑,进行编程实践。
五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分。
平时表现主要评估学生的课堂参与度、提问和回答问题的积极性等;作业主要评估学生的编程能力和问题解决能力;考试则评估学生对C语言基础知识和编程技巧的掌握程度。
C语言实现电影院选座管理系统
C语⾔实现电影院选座管理系统本⽂实例为⼤家分享了C语⾔电影院选座管理系统的具体代码,供⼤家参考,具体内容如下/*编写⼀个电影院选座管理系统程序。
问题描述:⾃⾏设计⼀个电影院放映厅(容积不⼩于5排,每排不少于10⼈),通过该“电影院选座管理系统”实现为顾客选座位的功能。
实现如下功能:1.给出座位分布图形;2.可实现根据顾客需求选座;3.可由系统⾃动为顾客选座;4.可查找座位选择⼈姓名。
具体要求如下:1.采⽤多⽂件结构设计程序;2.通过字符或图形⽅式给出座位分布情况,可查看座位选择情况;3.设计操作界⾯,可选择按照顾客指定座位进⾏选座或系统⾃动选座;4.对于给定座位能够显⽰出座位选择⼈姓名信息。
5.能够对座位信息进⾏保存。
*/#include<stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>#include<conio.h>#define H 5#define L 10int a[H][L]={1,1,0,1,1,0,1,1,0,1,1,0,0,0,0,0,0,1,1,1,1,0,1,1,1,1,1,0,1,1,1,0,1,0,0,0,0,1,1,1,0,1,0,1,0,1,0,1,1,1};//⾃定义⼀个休眠函数void Sleep(int millisecond){clock_t begin = clock();//获取当前的CPU时钟的时间while(clock() - begin < millisecond);//如果时间差没达到休息时间要求就⼀直循环}int main(){int i,j,count=0;int x,y;int choie;srand((unsigned)time(0));printf("\t\t电影院座位表:\n");for(i=0;i<H;i++)for(j=0;j<L;j++){if(a[i][j])printf(" ▇ ");elseprintf(" □ ");count++;if(count%10==0)printf("\n");}count=0;printf("\n请选择⼿动选择还是系统随机(1 or 0):\n 1.⼿动选择\t 0.系统随机\n");scanf("%d",&choie);if(choie){printf("\n请选择你要的位置(x,y):");scanf("%d,%d",&x,&y);}else{for(i=0;i<H;i++)for(j=0;j<L;j++)if(!a[i][j]){x=i;y=j;}}printf("///执⾏中");for(i = 0; i < 6; ++i){Sleep(500);printf(".");}system("cls");//将位置转为1a[x-1][y-1]=1;printf("\t\t电影院座位表:\n");for(i=0;i<H;i++)for(j=0;j<L;j++){if(a[i][j])printf(" ▇ ");elseprintf(" □ ");count++;if(count%10==0)printf("\n");}printf("你的位置坐标为(%d,%d)\n",x,y);return 0;}更多学习资料请关注专题《》。
c电影票课程设计
c 电影票课程设计一、课程目标知识目标:1. 学生能够理解并掌握电影票的基本构成要素,如影片名称、放映时间、座位号等。
2. 学生能够运用所学知识,设计并制作一份电影票。
3. 学生了解电影票的价格制定原则和优惠政策。
技能目标:1. 学生能够运用信息技术,搜集并整理电影票相关信息。
2. 学生具备一定的审美能力,能设计出美观、实用的电影票。
3. 学生能够运用数学知识,进行电影票价格的计算和优惠活动的设计。
情感态度价值观目标:1. 学生培养对电影文化产业的兴趣,关注电影市场动态。
2. 学生提高合作意识,学会在团队中共同完成任务。
3. 学生树立正确的消费观念,理解电影票优惠政策的意义。
课程性质:本课程为综合实践活动课程,结合信息技术、美术和数学等学科知识,以提高学生的综合实践能力。
学生特点:六年级学生具备一定的信息技术、美术和数学基础,思维活跃,善于合作,对新鲜事物充满好奇心。
教学要求:教师应注重培养学生的实践能力,提高学生的审美观念,激发学生的创新意识。
通过本课程的学习,使学生能够将所学知识应用于实际生活,提高学生的综合素质。
教学过程中,注重分解课程目标为具体学习成果,以便进行有效的教学设计和评估。
二、教学内容1. 电影票的基本知识:介绍电影票的构成要素,包括影片名称、放映时间、座位号、票价等,结合课本相关章节,让学生了解电影票的基本信息。
2. 电影票的设计与制作:教授设计原理,引导学生运用美术知识,结合信息技术,设计并制作一份美观、实用的电影票。
参考课本中关于设计的基础知识,进行教学内容安排。
3. 电影票价格计算:结合数学知识,讲解电影票的价格制定原则,如成本、市场定位等,以及优惠政策的设计。
依据课本相关章节,制定教学内容和进度。
4. 实践活动:组织学生进行小组合作,搜集电影票相关信息,设计并制作电影票,进行价格计算和优惠活动设计。
结合课本实践活动要求,制定详细的教学大纲和实践活动方案。
教学内容安排和进度:第一课时:电影票的基本知识学习,了解电影票的构成要素。
C语言实现影院管理系统
C语⾔实现影院管理系统本⽂实例为⼤家分享了C语⾔影院管理系统的具体代码,供⼤家参考,具体内容如下#include<stdio.h>#include<string.h>#include<stdlib.h>#include<windows.h>#include"state.h"#define change 3int iCount;int n;//*****************注册*****************//void router_registe(pAccout ahead){system("cls");char username[20];char password[13];char pass[13];char q;int i;FILE *fp;loop2:printf("\n\n\n\n");printf("\t\t\t\t账号:");scanf("%s",username);getchar();printf("\t\t\t\t密码:");i=0;while (1){q = getch();if (q != 13){printf("*");password[i++] = q;}else {password[i] = '\0';printf("\n");break;}}printf("\t\t\t\t请确认密码:");i=0;while (1){q = getch();if (q != 13){printf("*");pass[i++] = q;}else {pass[i] = '\0';printf("\n");break;}}if(strcmp(pass,password)==0){fp=fopen("e:\\课设\\Accout1.txt", "ab+");fprintf(fp," %s %s",username,password); //把内存中的⽂件输⼊到硬盘中fclose(fp);system("cls");printf("\n\n\n\n注册成功\n");}else goto loop2;}//*****************登录*****************//pAccout router_acc(pAccout ahead){pAccout p1,p2;if((fp=fopen("e:\\课设\\Accout.txt", "rw"))==NULL){printf("读取失败!");return ahead;}ahead==NULL;p1=(pAccout)malloc(sizeof(Accout));while(fscanf(fp,"%s %s",p1->name,p1->pass)==2){//printf("%s\n",p1->name); //读进去了m=m+1;if(m==1){ahead->next=p1;p2=p1;p2->next = NULL;}else{p2->next=p1;p2=p1;p2->next=NULL;}p1=(pAccout)malloc(sizeof(Accout));}fclose(fp);return ahead;}pAccout router_acc1(pAccout ahead){pAccout p1,p2;FILE *fp;int m=0;if((fp=fopen("e:\\课设\\Accout1.txt", "rw"))==NULL){printf("读取失败!");return ahead;}ahead==NULL;p1=(pAccout)malloc(sizeof(Accout));while(fscanf(fp,"%s %s",p1->name,p1->pass)==2){//printf("%s\n",p1->name); //由于⽂件没有读⼊换⾏,读出的时候将先⼀个⼈的密码和 //printf("%s",p1->pass); //后⼀个⼈的名称m=m+1;if(m==1){ahead->next=p1;p2=p1;p2->next = NULL;}else{p2->next=p1;p2=p1;p2->next=NULL;}p1=(pAccout)malloc(sizeof(Accout));}fclose(fp);return ahead;}void login_printf(){system("cls");printf("\n\n\n\n");printf("\t\t\t★☆★☆★☆★☆★☆★☆★☆★☆\n");printf("\t\t\t☆★\n");printf("\t\t\t☆ 1.登录★\n");printf("\t\t\t☆ 2.注册★\n");printf("\t\t\t★ 0.退出☆\n");printf("\t\t\t☆★\n");printf("\t\t\t★☆★☆★☆★☆★☆★☆★☆★☆\n");}{system("cls");printf("\n\n\n\n");printf("\t\t\t********************************\n"); printf("\t\t\t|| ||\n");printf("\t\t\t|| 1.管理员登录 ||\n");printf("\t\t\t|| 2.⽤户登录 ||\n");printf("\t\t\t|| 0.退出 ||\n");printf("\t\t\t|| ||\n");printf("\t\t\t********************************\n"); }void login_acc(){system("cls");int bk;int bb;pAccout ahead,p1;ahead=(pAccout)malloc(sizeof(Accout));ahead->next=NULL;while(1){char a[200];char b[200];loop:login_printf();printf("请输⼊:");scanf("%s",a);bk=back(a);switch(bk){case 1:{login_printf1();printf("请输⼊:");scanf("%s",b);bb=back(b);switch(bb){case 1:{router_acc(ahead);ahead=login_panduan(ahead);//管理员登录 meun();break;}case 2:{router_acc1(ahead);ahead=login_panduan(ahead);//⽤户登陆 menu1();break;}case 0:{print2();exit(0);break;}default:printf("输⼊错误!");Sleep(1000);system("cls");break;}if(bb!=0)//丢失此处则会⽆法跳出循环break;}case 2:{router_registe(ahead);goto loop;break;}case 0:{// printf("BUG\n");测试bugprint2();exit(0);break;}default:printf("输⼊错误!");system("cls");break;}if(bk!=0)break;}}pAccout login_panduan(pAccout ahead){char name1[20],pass1[20];char q;pAccout p1;int i=0,j=0;system("cls");printf("\n\n\n\n");loop1:while(1){j++;p1=ahead->next;printf("\t\t\t\t账号:");scanf("%s",name1);getchar();printf("\t\t\t\t密码:");i=0;while (1){j++;q = getch();if (q != 13){printf("*");pass1[i++] = q;}else {pass1[i] = '\0';printf("\n");break;}}//printf("%s",pass1);密码正确(加密最初出现问题) while(p1!=NULL){if(strcmp(name1,p1->name)==0){if(strcmp(pass1,p1->pass)==0){printf("\n\n\t\t\t\t登录成功!");Sleep(2000);return ahead;}else{p1=p1->next;}}else{p1=p1->next;}if(p1==NULL){printf("\n\n\n\n\t\t\t\t输⼊有误");system("cls");printf("\n\n\n\n\t\t\t\t请重新输⼊\n");Sleep(2000);goto loop1;break;}}if(j>=change){system("cls");printf("\n\n\n\n");printf("\t\t\t\t***************\n");printf("\t\t\t\t***************\n");Sleep(2000);print2();exit (0);}}return ahead;}//登录成功int panduan(char choice){while(1){fflush(stdin);choice=getchar();if(choice == 'y'|| choice =='Y')return 1;else if(choice == 'n'||choice == 'N')return 0;while(getchar() != '\n')continue;printf("输⼊错误!请重新输⼊您的选择:\n");}}int back(char *a){if(strlen(a)==1){if(a[0]>='0'&&a[0]<='9')return ((int)a[0]-48);}elsereturn 10;}void print1(){int i;system("cls");printf("\n\n\n\n");printf("\t\t\t\t|******************************|\n");printf("\t\t\t\t||****************************||\n");printf("\t\t\t\t||| |||\n");printf("\t\t\t\t||| 欢迎来到影院管理系统 |||\n");printf("\t\t\t\t||| |||\n");printf("\t\t\t\t||****************************||\n");printf("\t\t\t\t|******************************|\n");printf("\n\t\t\t\t系统开始启动.........\n");printf("===================================================================================================\r"); for(i=1;i<100;i++){Sleep(40);printf(">");}}void print() //主界⾯{system("cls");printf("\t\t\t|*******************************|\n");printf("\t\t\t| 欢迎来到影院管理系统(主菜单) |\n");printf("\t\t\t|*******************************|\n");printf("\t\t\t| 1.插⼊信息 |\n");printf("\t\t\t| 2.查看信息 |\n");printf("\t\t\t| 3.查询信息 |\n");printf("\t\t\t| 4.修改信息 |\n");printf("\t\t\t| 5.排序信息 |\n");printf("\t\t\t| 6.删除信息 |\n");printf("\t\t\t|-------------------------------|\n");printf("\t\t\t|-------------------------------|\n");printf("\t\t\t| 0.退出程序 |\n");printf("\t\t\t|===============================|\n");}void print2(){system("cls");printf("\n\n\n\n");printf("\t\t\t||****************************||\n");printf("\t\t\t||| |||\n");printf("\t\t\t||| 谢谢使⽤ |||\n");printf("\t\t\t||| |||\n");printf("\t\t\t||****************************||\n");printf("\t\t\t|******************************|\n");Sleep(2000);}void print3(){system("cls");printf("\t\t\t|*******************************|\n");printf("\t\t\t| 欢迎来到影院购票系统(主菜单) |\n");printf("\t\t\t|*******************************|\n");printf("\t\t\t| 1.主页信息 |\n");printf("\t\t\t| 2.查询信息 |\n");printf("\t\t\t| 3.排序信息 |\n");printf("\t\t\t| 4.打印报表 |\n");printf("\t\t\t|-------------------------------|\n");printf("\t\t\t|-------------------------------|\n");printf("\t\t\t| 0.退出程序 |\n");printf("\t\t\t|===============================|\n"); }/*******************查询模块********************/pticket searchmenu(pticket phead) //查询⼦系统菜单{fflush(stdin);system("cls");int bk;while(1){char P[200];system("cls");printf("\t\t\t|*******************************|\n");printf("\t\t\t| 查询⼦系统菜单 |\n");printf("\t\t\t|*******************************|\n");printf("\t\t\t| 1.按影院查询 |\n");printf("\t\t\t| 2.按电影查找 |\n");printf("\t\t\t| 3.按价格区间查找 |\n");printf("\t\t\t|-------------------------------|\n");printf("\t\t\t| 0.返回上⼀层 |\n");printf("\t\t\t|*******************************|\n\n");printf("请输⼊指令:");scanf("%s",P);bk=back(P);switch(bk){case 1:{phead=search1(phead);//按影院查询break;}case 2:{phead=search2(phead);//按电影查询break;}case 3:{phead=search3(phead);//按价格区间查询break;}case 0:break;default:printf("输⼊错误!请重新输⼊\n");system("pause");break;}if(bk==0)break;}return phead;}pticket search1(pticket phead) //影院查询{system("cls");char cinema1[30],choice;int flag=0;char q;p=(pticket)malloc(sizeof(ticket));while(1){system("cls");printf("\n\n\n\t\t\t请输⼊影院名称:"); scanf("%s",cinema1);if(strlen(cinema1)>=30){system("cls");printf("**************\n");printf("请输⼊正确的名字!\n");printf("**************\n");Sleep(1000);}elsebreak;}while(1){system("cls");if(phead->next==NULL){printf("\n\n\n\t\t\t没有信息!\n");system("pause");break;}p=phead->next;print_stu2();do{if(strcmp(p->cinema,cinema1)==0) {printf(" %-4s ",p->number);printf("%-12s ",p->name);printf("%-16s",p->cinema);printf(" %4d ",p->time);printf("%.2lf ",p->price);printf(" %.1lf ",p->grade);printf("\n");flag=1;}p=p->next;}while(p!=NULL);if(flag==0){printf("不存在的!\n");}printf("是否继续查找?(Y or N)"); q=getchar();if(panduan(q)==1){while(1){system("cls");printf("\n\n\n\t\t\t请输⼊影院名称:"); scanf("%s",cinema1);if(strlen(cinema1)>=30){system("cls");printf("**************\n");printf("请输⼊正确的名字!\n");printf("**************\n");Sleep(1000);}elsebreak;}}else if(panduan(choice)==0)break;}return phead;}system("cls");char name1[30],choice;pticket p;int flag=0;char q;while(1){system("cls");printf("\n\n\n\t\t\t请输⼊电影名称:"); scanf("%s",name1);if(strlen(name1)>=30){system("cls");printf("**************\n");printf("请输⼊正确的名字!\n");printf("**************\n");Sleep(1000);}elsebreak;}while(1){system("cls");if(phead->next==NULL){printf("没有信息!\n");system("pause");break;}p=phead->next;print_stu2();do{if(strcmp(p->name,name1)==0){printf(" %-4s ",p->number);printf("%-12s ",p->name);printf("%-16s",p->cinema);printf(" %4d ",p->time);printf("%.2lf ",p->price);printf(" %.1lf ",p->grade);printf("\n");flag=1;}p=p->next;}while(p!=NULL);if(flag==0){printf("不存在的!\n");}printf("是否继续查找?(Y or N)\n"); q=getchar();if(panduan(q)==1){while(1){system("cls");printf("请输⼊电影名称:");scanf("%s",name1);if(strlen(name1)>=30){system("cls");printf("**************\n");printf("请输⼊正确的名字!\n");printf("**************\n");Sleep(1000);}elsebreak;}}else if(panduan(choice)==0)}return phead;}pticket search3(pticket phead) //按价格区间名称查询{system("cls");int count=0;char choice;float x,y;pticket p;int flag=0;char q;loop2:system("cls");printf("\n\n\n\t\t\t请输⼊价格下限:");scanf("%f",&x);printf("\n\t\t\t请输⼊价格上限:");scanf("%f",&y);while(1){system("cls");if(phead->next==NULL){printf("没有信息!\n");system("pause");break;}p=phead->next;print_stu2();do{if(p->price>x&&p->price<y){printf(" %-4s ",p->number);printf("%-12s ",p->name);printf("%-16s",p->cinema);printf(" %4d ",p->time);printf("%.2lf ",p->price);printf(" %.1lf ",p->grade);printf("\n");count++;flag=1;}p=p->next;}while(p!=NULL);printf("\t\t\t此价格区间内的电影共有%d场\n",count);if(flag==0){printf("不存在的!\n");}system("pause");printf("是否继续查找?(Y or N)\n");q=getchar();if(panduan(q)==1){count=0;goto loop2;}else if(panduan(choice)==0)break;}return phead;}/******************排序模块*******************/pticket sortmenu(pticket phead) //排序⼦系统菜单{fflush(stdin);system("cls");int bk;while(1){system("cls");printf("\t\t\t|*******************************|\n"); printf("\t\t\t| 排序⼦系统菜单 |\n");printf("\t\t\t|*******************************|\n"); printf("\t\t\t| 1.按价格排序 |\n");printf("\t\t\t| 2.按时长排序 |\n");printf("\t\t\t| 3.按评分排序 |\n");printf("\t\t\t|-------------------------------|\n");printf("\t\t\t| 0.返回上⼀层 |\n");printf("\t\t\t|*******************************|\n\n"); printf("请输⼊指令:");scanf("%s",P);bk=back(P);printf("%d",bk);switch(bk){case 1:phead=sort1(phead);//按价格排序break;case 2:phead=sort2(phead);//按时长排序break;case 3:phead=sort3(phead);// 按评分排序 break;case 0:break;default:printf("输⼊错误,重新输⼊!");Sleep(1000);system("cls");break;}if(bk==0)break;}Save_Stu(phead);return phead;}pticket sort(pticket phead){pticket pTemp,pj,pj_f,pj_b;int i,j,flag;for(i=0;i<iCount;i++)for(j=0,flag=0,pj=phead;j<iCount-1-i;j++){if(flag==0){pj_f=pj;pj=pj->next;pj_b=pj->next;}if(flag==1){pj_f=pj_f->next;pj_b=pj->next;}flag=0;if(pj->price>pj_b->price){pTemp=pj->next;pj->next=pj_b->next;pj_b->next=pTemp;pTemp=pj_f->next;pj_f->next=pj_b->next;pj_b->next=pTemp;flag=1;}}return phead;}pticket sort22(pticket phead){pticket pTemp,pj,pj_f,pj_b;int i,j,flag;for(i=0;i<iCount;i++)for(j=0,flag=0,pj=phead;j<iCount-1-i;j++){if(flag==0){pj_b=pj->next;}if(flag==1){pj_f=pj_f->next;pj_b=pj->next;}flag=0;if(pj->time<pj_b->time){pTemp=pj->next;pj->next=pj_b->next;pj_b->next=pTemp;pTemp=pj_f->next;pj_f->next=pj_b->next;pj_b->next=pTemp;flag=1;}}return phead;}pticket sort11(pticket phead){pticket pTemp,pj,pj_f,pj_b;int i,j,flag;for(i=0;i<iCount;i++)for(j=0,flag=0,pj=phead;j<iCount-1-i;j++) {if(flag==0){pj_f=pj;pj=pj->next;pj_b=pj->next;}if(flag==1){pj_f=pj_f->next;pj_b=pj->next;}flag=0;if(pj->grade<pj_b->grade){pTemp=pj->next;pj->next=pj_b->next;pj_b->next=pTemp;pTemp=pj_f->next;pj_f->next=pj_b->next;pj_b->next=pTemp;flag=1;}}return phead;}pticket sort1(pticket phead) //按价格排序{system("cls");if(phead->next==NULL){printf("没有信息!\n");Sleep(1000);return phead;}sort(phead);print_stu1(phead);return phead;}pticket sort2(pticket phead) //按时长排序{system("cls");if(phead->next==NULL)}sort22(phead);print_stu1(phead);return phead;}pticket sort3(pticket phead) //评分排序{system("cls");if(phead->next==NULL){printf("没有信息!\n");Sleep(1000);return phead;}sort11(phead);print_stu1(phead);return phead;}/********************增加模块**********************/ pticket Insert(pticket phead){system("cls");pticket pNew,p=phead;/*if(phead->next==NULL){printf("⽆信息!");Sleep(1000);return phead;}*/char choice;while(p->next!=NULL)p=p->next;do{pNew=(pticket)malloc(sizeof(ticket));printf("请输⼊序号:");scanf("%s",pNew->number);printf("请输⼊名称:");scanf("%s",pNew->name);printf("请输⼊影院:");scanf("%s",&pNew->cinema);printf("请输⼊时长:");scanf("%d",&pNew->time);printf("请输⼊价格:");scanf("%lf",&pNew->price);printf("请输⼊评分:");scanf("%lf",&pNew->grade);p->next=pNew;p=pNew;p->next=NULL;iCount++;printf("是否继续添加信息(Y or N):");choice=getchar();}while(panduan(choice)==1);printf("已增加电影信息.\n");Sleep(1000);Save_Stu(phead);return phead;}/*****************输出模块******************/void print_stu1(pticket phead){system("cls");if(phead->next==NULL){printf("没有信息!\n");Sleep(1000);return ;}print_stu2();pticket p;printf(" %-4s ",p->number);printf("%-12s ",p->name);printf("%-16s",p->cinema);printf(" %4d ",p->time);printf("%.2lf ",p->price);printf(" %.1lf ",p->grade);printf("\n");p=p->next;}system("pause");}void print_stu2(){printf("信息如下:\n");printf("-----------------------------------------------------------------------\n");printf("****序号******名称*************影院**********时间*****价格*****评分****\n");printf("-----------------------------------------------------------------------\n");}void print_stu3(){printf("\t\t\t价格评分报表如下\n");printf("-----------------------------------------------------------------------\n");printf("*********名称******************价格*******************评分*************\n");printf("-----------------------------------------------------------------------\n");}void print_stu4(pticket phead){system("cls");if(phead->next==NULL){printf("没有信息!\n");Sleep(1000);return ;}print_stu3();pticket p;p=phead->next;while(p != NULL){printf("\t%-20s ",p->name);printf("%.2f\t\t\t",p->price);printf(" %.1lf ",p->grade);printf("\n");p=p->next;}system("pause");}/*****************保存模块***************/void Save_Stu(pticket phead) //定义保存函数{system("cls");FILE *fp;if((fp=fopen("e:\\课设\\Student", "wt"))==NULL){printf("不能打开⽂件\n");exit(1);}pticket p;p=phead->next;while(p!=NULL){fprintf(fp,"%s %s %s %d %lf %lf ",p->number,p->name,p->cinema,p->time,p->price,p->grade); //把内存中的⽂件输⼊到硬盘中 p=p->next;}fclose(fp); //关闭⽂件//printf("⽂件已保存\n"); //成功保存,显⽰提⽰Sleep(1000);}/******************读取模块**********************/pticket router_Stu(pticket phead){if((fp=fopen("e:\\课设\\Student", "rw"))==NULL){printf("读取失败!");return;}pticket p1,p2;p1=(pticket)malloc(sizeof(ticket));while(fscanf(fp,"%s %s %s %d %lf %lf ",&p1->number, &p1->name, &p1->cinema,&p1->time,&p1->price,&p1->grade)==6) {m=m+1;if(m==1){phead->next=p1;p2=p1;p2->next = NULL;}else{p2->next=p1;p2=p1;p2->next=NULL;}p1=(pticket)malloc(sizeof(ticket));}fclose(fp);//printf("读取成功!");iCount=m;//Sleep(1000);return phead;}/******************删除模块**********************/pticket delete_Stu(pticket phead){system("cls");if(phead->next==NULL){printf("\n\n\n\n\n\t\t\t\t没有可删除的信息!\n");system("pause");return phead;}char name1[30];pticket pTemp,p;printf("\n\n\n\n\t\t\t\t输⼊即将下线的电影名称:");scanf("%s",name1);pTemp=phead;while(strcmp(pTemp->name,name1)!=0&&pTemp->next!=NULL){p=pTemp;pTemp=pTemp->next;}if(strcmp(pTemp->name,name1)==0){if(p!=phead){p->next=pTemp->next;}else{phead=pTemp->next;}printf("已删除");system("pause");}else{printf("没找到");Sleep(1000);}getchar();Save_Stu(phead);return phead;{system("cls");char P[200];int bk;char name[30];pticket pTemp;if(phead->next==NULL){printf("没有可修改的信息!\n");system("pause");return phead;}pTemp=phead->next;printf("\n\n\n\n\t\t\t请输⼊你要修改的电影名称:");scanf("%s",name);while(strcmp(pTemp->name,name)!=0&&pTemp->next!=NULL) {pTemp=pTemp->next;}if(strcmp(pTemp->name,name)==0){while(1){system("cls");printf("\t\t\t请输⼊你要修改的信息:\n");printf("\t\t\t********************************\t\t\t\n");printf("\t\t\t 1.修改代码 2.修改名称 \t\t\t\n");printf("\t\t\t 3.修改影院 4.修改时长 \t\t\t\n");printf("\t\t\t 5.修改价格 6.修改评分 \t\t\t\n");printf("\t\t\t 0.返回上⼀层 \t\t\t\n");printf("\t\t\t********************************\t\t\t\n");printf("请输⼊您的选择:");scanf("%s",P);bk=back(P);switch(bk){case 1:{system("cls");printf("请输⼊新代码:");scanf("%s",pTemp->number);system("cls");printf("修改成功!");Sleep(1000);break;}case 2:{system("cls");printf("请输⼊新的名称:");scanf("%s",pTemp->name);system("cls");printf("修改成功!");Sleep(1000);break;}case 3:{system("cls");printf("请输⼊新的影院:");scanf("%s",&pTemp->cinema);printf("请输⼊正确的影院:");scanf("%s",&pTemp->cinema);system("cls");printf("修改成功!");Sleep(1000);break;}case 4:{system("cls");printf("请输⼊新的时长:");getchar();scanf("%d",&pTemp->time);system("cls");printf("修改成功!");case 5:{system("cls");printf("请输⼊新的价格:");scanf("%lf",&pTemp->price);system("cls");printf("修改成功!");Sleep(1000);break;}case 6:{system("cls");printf("请输⼊新的评分:");scanf("%lf",&pTemp->grade);system("cls");printf("修改成功!");Sleep(1000);break;}case 0:break;default:printf("输⼊错误,请重新输⼊");system("pause");}if(bk==0)break;}Save_Stu(phead);return phead;}else{printf("⽆该电影信息!");Sleep(1000);return phead;}}void menu1(){pticket phead;phead = (pticket)malloc(sizeof(ticket));phead->next = NULL;router_Stu(phead);char P,a[200];char choice;int bk;while(1){system("cls");print3();fflush(stdin);printf("请输⼊指令:");scanf("%s",a);bk=back(a);switch(bk){case 1: {print_stu1(phead); //查看system("cls");break;}case 2:{phead=searchmenu(phead); //查找 system("cls");break;}case 3:{phead=sortmenu(phead); //排序 system("cls");break;}case 4:{print_stu4(phead);system("cls");//打印报表break;}case 0:{print2();exit(1);}default:{printf("输⼊错误!请重新输⼊\n");}void meun(){pticket phead;phead = (pticket)malloc(sizeof(ticket));phead->next = NULL;router_Stu(phead);char P,a[200];char choice;int bk;while(1){system("cls");print();fflush(stdin);printf("请输⼊指令:");scanf("%s",a);bk=back(a);switch(bk){case 1:{phead=Insert(phead); //插⼊system("cls");break;}case 2:{print_stu1(phead); //查看system("cls");break;}case 3:{phead=searchmenu(phead); //查找system("cls");break;}case 4:{phead=revise(phead); // 修改system("cls");break;}case 5:{phead=sortmenu(phead); //排序system("cls");break;}case 6:{phead=delete_Stu(phead); //删除system("cls");break;}case 0:{print2();exit(1);}default:{printf("输⼊错误!请重新输⼊\n");system("pause");}}}free(phead);}void main() //主函数{system("color 3A");print1();login_acc();}pticket Create(pticket pHead) //创建链表{fflush(stdin);system("cls");char choice;while(1){printf("确定重新输⼊所有信息麽?\n如果重新输⼊,之前所有信息会被删除!\n请谨慎选择!(Y or N)\n"); if(panduan(choice)==1)break;elsereturn pHead;}pticket pNew,pEnd;iCount=0;fflush(stdin);pEnd=pHead;if(pNew==NULL)return pHead;printf("请输⼊代码:");scanf("%s",pNew->number);printf("请输⼊名称:");scanf("%s",pNew->name);printf("请输⼊影院:");scanf("%s",&pNew->cinema);printf("请输⼊时长:");scanf("%d",&pNew->time);printf("请输⼊价格:");scanf("%lf",&pNew->price);printf("请输⼊评分:");scanf("%lf",&pNew->grade);pEnd->next=pNew;pEnd=pNew;iCount++;fflush(stdin);printf("是否继续? Y or N\n");choice=getchar();getchar();while(choice!='y'&&choice!='Y'&&choice!='n'&&choice!='N'){printf("输⼊错误!请重新输⼊您的选择:\n");choice=getchar();getchar();}getchar();}while(choice=='y'||choice=='Y');pEnd->next=NULL;system("cls");return pHead;}很简易的⼀个影院管理系统,写出来也只能是⼀个参考,菜鸡代码,希望有⽤。
座位分配系统详解
#include<stdio.h>#include<time.h>#include<stdlib.h>#include<string.h>#define ID_LEN 9 /*定义考号的长度,这样做的好处就是每个学校的考号位数可能不同,这样增加了程序可移植性*/ #define MAXLINE 8#define MAXROW 8struct student{char name[20]; /*姓名最多容纳20字符的字符串*/char id[ID_LEN]; /*考号最多容纳8个字符的字符串*/int flag; /*标记该座位是否有人*/}seat[8][8]; /*定义一个8*8的二维数组,去装每个位置的考生信息*/void Initialization(){/*初始化5个座位*/int x,y,i; /*xy分别代表x行和y列*/char tname[20],tid[8];for(i=0;i<5;i++){/*随机产生座位*/srand((unsigned)time(NULL));x=rand()%8+1;y=rand()%8+1;while(seat[x][y].flag!=0) /*当flag不为0时说明位置有人了,所以重新随机分配*/{srand((unsigned)time(NULL));x=rand()%8+1;y=rand()%8+1;}/*while*/seat[x][y].flag=1;tname[0]='N';tname[1]='o';tname[2]='.';tname[3]=x+49;tname[4]=y+49;tname[5]='\0';tid[0]=x+49;tid[1]=y+49;tid[2]=x+49;tid[3]=y+49;tid[4]=x+49;tid[5]=y+49;tid[6]=x+49;tid[7]=y+49;tid[8]='\0';stpcpy(seat[x][y].name,tname); /*效果就是名字是No.xy 其中x y是座位号*/stpcpy(seat[x][y].id,tid); /*效果就是学号为xyxyxyxy*/}/*for*/}main(){int i,j;char ins;void Interface(); /*主界面显示*/void AutoAllocation(); /*自动分配座位*/void Cancel(); /*取消座位分配*/void Check(); /*座位/学生信息查找*/void Output(); /*输出考场所有座位信息*//*对座位初始化*/for(i=0;i<MAXROW;i++){for(j=0;j<MAXLINE;j++){stpcpy(seat[i][j].name,NULL);stpcpy(seat[i][j].id,"00000000");}Initialization();/*程序主循环*/do{clrscr(); /*清屏*//*若用VC环境则用system("cls");*/Interface(); /*显示主界面*/printf("\n The Seat-Chart:"); /*在主界面下面画出座位图,更加人性化*/ Output();ins=getch();switch(ins){case '1':AutoAllocation();break;case '2':Cancel();break;case '3':Check();break;case '4':exit(0);}/*switch*/}while(1);}void Interface(){printf("----------------Welcome To Seat Allocation System----------------\n");printf("|\t\t\t\t\t\t\t\t|\n");printf("|\t\t1----Auto Allocation\t\t\t\t|\n");printf("|\t\t2----Cancel Allocation\t\t\t\t|\n");printf("|\t\t3----Check \t\t\t\t\t|\n");printf("|\t\t4----Exit\t\t\t\t\t|\n");printf("-----------------------------------------------------------------\n");}void AutoAllocation(){int x,y; /*xy分别代表x行和y列*//*随机产生座位*/srand((unsigned)time(NULL));x=rand()%8+1;y=rand()%8+1;while(seat[x][y].flag!=0) /*当flag不为0时说明位置有人了,所以重新随机分配*/{srand((unsigned)time(NULL));x=rand()%8+1;y=rand()%8+1;}/*while*/clrscr();/*清屏*/printf("Please input your name and ID:\n");printf("name:\n");scanf("%s",seat[x][y].name);printf("ID:\n");scanf("%s",seat[x][y].id);printf("Success!The name you inuput is %s ,The ID you inuput is %s \n",seat[x][y].name,seat[x][y].id);printf("Success to allocate the seat!Your seat is on the %d row %d line",x+1,y+1);seat[x][y].flag=1; /*debug的时候费了很大劲才发现这个啊!!*/Output();getch();}void Cancel(){char tid[ID_LEN];char ins; /*局域变量可以与主函数变量相同*/int i,j,x,y;printf("Please select your checking means:\n");/*两种查询方式:1为通过考号查询座位,2是通过座位查询考生*/ printf(" 1--cancel by seat\n");printf(" 2--check by id\n");printf(" 3--return\n");ins=getch();while(ins!='1' && ins!='2' && ins!='3'){ins=getch();}/*whlie*/switch(ins){case '1':{printf("Please input your location:\n");printf("Row x:");scanf("%d",&x);printf("Line y:");scanf("%d",&y);seat[x-1][y-1].flag=0;printf("Seccuss to cancel the seat!");getch();break;}/*case '1'*/case '2':{printf("Please input your id:");scanf("%s",tid);ins=getchar(); /*清空剪切板*/x=-1;y=-1; /*设置x和y的哨兵值,当输入的学号不存在时x和y都为-1*/ for(i=0;i<MAXROW;i++){for(j=0;j<MAXLINE;j++){if(strcmp(seat[i][j].id,tid)==1) /*如果考号相同,得出座位号*/{x=i;y=j;}}}if(x==-1 && y==-1){printf("\n ERROR! The id you input is not exist!");getch();}/*if*/else{printf("\n your seat is at %d line, %d row,do you cancel it?(Y/N)",x+1,y+1);ins=getchar();if(ins=='y' || ins=='Y'){seat[x][y].flag=0; /*将座位号消掉*/printf("\nSuccess to cancel the seat!");getch();}}/*else*/}/*case '2'*//*这里没有case '3',道理很简单,因为3选项是退出,大家若按了3就直接跳过switch*/ }/*switch*/}void Check(){char tid[ID_LEN];char ins; /*局域变量可以与主函数变量相同*/int i,j,x,y;clrscr();printf("Please select your checking means:\n");/*两种查询方式:1为通过考号查询座位,2是通过座位查询考生*/printf(" 1--check by id\n");printf(" 2--check by seat\n");printf(" 3--return\n");ins=getch();while(ins!='1' && ins!='2' && ins!='3'){ins=getch();}/*whlie*/switch(ins){case '1':{printf("Please input your id:");scanf("%s",tid);x=-1;y=-1;/*设置x和y的哨兵值,当输入的学号不存在时x和y都为-1*/for(i=0;i<MAXROW;i++){for(j=0;j<MAXLINE;j++){if(strcmp(seat[i][j].id,tid)==1) /*如果考号相同,得出座位号*/{x=i;y=j;}}}/*for*/if(x==-1 && y==-1){printf("\n ERROR! The id you input is not exist!");}/*if*/else{printf("\nYour seat is at %d line ,%d row.",x+1,y+1);}/*else*/break;}/*case '1'*/case '2':{Output();printf("Please input your location:\n");printf("Row x:");scanf("%d",&x);printf("Line y:");scanf("%d",&y);if(seat[x-1][y-1].flag==0){printf("\n ERROR! The location you input is not exist!");getch();}/*if*/else{printf("The information you check is below:\n");printf("name: %s ",seat[x-1][y-1].name);printf("id: %s ",seat[x-1][y-1].id);getch();}/*else*/}/*case '2'*/}/*switch*/}void Output(){int i,j;printf("\n\t");for(i=0;i<MAXROW;i++){printf("%d",i+1);printf("\t");}printf("\n");for(i=0;i<MAXROW;i++){printf("%d",i+1);printf("\t");for(j=0;j<MAXLINE;j++){if(seat[i][j].flag==0){printf("NONE");printf("\t");}else{printf("%s",seat[i][j].name);printf("\t");}}/*for*/printf("\n");}}。
c语言课程设计影院售票
c语言课程设计影院售票一、教学目标本课程的教学目标是使学生掌握C语言的基本语法和编程方法,能够运用C语言实现简单的程序设计。
通过影院售票项目的实践,培养学生解决实际问题的能力和团队协作精神。
具体分解为以下三个目标:1.知识目标:学生能够熟练使用C语言的基本数据类型、运算符、控制结构等,理解函数的定义和调用。
2.技能目标:学生能够运用C语言实现小型项目,如影院售票系统,掌握程序调试和运行的方法。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,增强其自主学习和解决问题的能力,使其认识到计算机技术在现代社会中的重要性。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数等。
通过讲解和案例演示,使学生掌握C语言的编程方法。
具体安排如下:1.导论:介绍C语言的发展历程、特点和应用领域。
2.基本语法:讲解C语言的基本数据类型、运算符、表达式等。
3.控制结构:学习顺序结构、分支结构、循环结构等。
4.函数:介绍函数的定义、声明、调用和返回值。
5.数据结构:学习数组、字符串、指针等。
6.项目实践:以影院售票系统为例,让学生动手编写程序,解决实际问题。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法,以激发学生的学习兴趣和主动性。
具体方法如下:1.讲授法:讲解C语言的基本语法、数据类型、运算符、控制结构等知识点。
2.案例分析法:通过分析实际案例,使学生理解函数的定义和调用,掌握编程方法。
3.实验法:让学生动手编写程序,调试和运行,培养实际操作能力。
4.小组讨论法:分组进行项目实践,培养团队协作精神和沟通能力。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料、实验设备等。
具体资源如下:1.教材:《C程序设计语言》2.参考书:《C Primer Plus》、《C和指针》3.多媒体资料:课件、教学视频、在线教程等。
4.实验设备:计算机、网络环境、编程软件等。
教学资源应能够支持教学内容和教学方法的实施,丰富学生的学习体验。
C语言课程设计电影院座位分配
电影院座位分配一、目的通过课程设计,加深对《C语言程序设计》课程所学知识的理解,熟练掌握和巩固C语言的基本知识和语法规范,包括:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);库函数应用(时间函数、绘图函数以及文件的读写操作函数等);复杂任务功能分解方法(自顶向下逐步求精、模块化设计、信息隐藏等)。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备利用计算机编程分析解决综合性实际问题的初步能力。
二、需求分析(1)输入的形式和输入值的范围:以数字字符的形式输入0~2,选择是电脑自动分配还是用户输入希望的座位号。
若是用户自己选择,则还需要输入座位号1~12。
(2)输出形式:首先要输出座位的排列形式,其次是所分配的座位号或者自己希望的座位号。
(3)程序所能达到的功能:程序应该显示可用座位的分配图,并用‘x’来标记一个已分配的座位。
程序提示用户运用两种方式来选择座位号,一是电脑自动分配,那么就产生一个随机数(要保证该位置未被订出去);二是用户输入希望的座位号,当用户输入自己选中的座位号后,程序对可用座位分布图进行更新。
程序应该一直执行下去,直到所有座位都被预订,或者用户表示程序应该终止。
如果用户指定的一个座位被预订,程序应该指出该座位不可用,要求用户重新选择。
(4)列出初步的测试计划:按照程序的输出形式分别测试两种方法分配座位的正确性,并多次测试,考虑多种可能出现的结果。
三、概要设计1.本程序包含五个模块:(1)主程序模块:main(){定义字符类型的变量choose和整型变量i,j及数组Seat[8][12]并初始化用switch语句实现以那种方式进行座位分配;对要用到的下面四个函数进行函数声明:void menu();void assign(int seat[8][12]);int myfree(int seat[8][12]);void position(int seat[8][12]);}(2)座位显示模块:用循环语句控制座位的输出方式,并按照要求显示在屏幕上达到一目了然的效果.(3)菜单界面模块:输出图形菜单界面,可以选择分配座位的方式.(4)电脑自动分配座位的模块:达到电脑自动分配的功能.(5)用户自选座位的模块:达到用户自己选择自己希望座位的功能.主程序调用其他四个模块2、模块图四、详细设计依照座位的分布方式定义一个二维数组并初始化:int seat[8][12]={{4,2,1,3,5},{6,4,2,1,3,5},{6,4,2,1,3,5,7},{8,6,4,2,1,3,5,7},{8,6,4,2,1,3,5,7,9},{10,8,6,4,2,1,3,5,7,9},{10,8,6,4,2,1,3,5,7,9,11},{12,10,8,6,4,2,1,3,5,7,9,11},};用下面语句实现分配座位的方式:switch(choose){case'1':assign(seat);break;case'2':myfree(seat);break;}座位显示函数:以数组的形式输出。
c语言课设电影院售票系统
case 4:exit(0);break;
}
}
}
系统会根据当前票据信息及时间信息对所退的票据进行
判断,如不符合实际情况,会给出提示不予退票。
(4)计满座率函数:
该部分里,每场电影售出票时都会进行累加,得出总票数,用售出的票数除上总座位数,即可得出该场的满场率。
1.程序总体结构图(N-S框图)
三、主要界面截图
图1菜单界面
四、技术要点
(对本程序贡献较大的C语言知识点;重要算法的设计与实现)
printf("请输入你要退票的数目:");
scanf("%d",&m);
for(i=0;i<p;i++)
if(strcmp(inf[i].name,s)==0)
{
printf("退票成功!\n退票后的电影信息如下:\n");
printf("%s %s %d:%d %d %d\n",inf[i].rate,inf[i].name,inf[i].time_hour,inf[i].time_min,inf[i].seat+m,inf[i].sell-m);
int time_min;
int seat;
int sell;
}inf[10];
char n[20];
int p;
struct tm *ptr;
void menu()
{
printf("*******************menu******************\n");
printf("*1买票\n\r");
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言课程设计电影院
座位分配
Company number【1089WT-1898YT-1W8CB-9UUT-92108】
电影院座位分配
一、目的
通过课程设计,加深对《C语言程序设计》课程所学知识的理解,熟练掌握和巩固C语言的基本知识和语法规范,包括:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);库函数应用(时间函数、绘图函数以及文件的读写操作函数等);复杂任务功能分解方法(自顶向下逐步求精、模块化设计、信息隐藏等)。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备利用计算机编程分析解决综合性实际问题的初步能力。
二、需求分析
(1)输入的形式和输入值的范围:以数字字符的形式输入0~2,选择是电脑自动分配还是用户输入希望的座位号。
若是用户自己选择,则还需要输入座位号1~12。
(2)输出形式:首先要输出座位的排列形式,其次是所分配的座位号或者自己希望的座位号。
(3)程序所能达到的功能:程序应该显示可用座位的分配图,并用‘x’来标记一个已分配的座位。
程序提示用户运用两种方式来选择座位号,一是电脑自动分配,那么就产生一个随机数(要保证该位置未被订出去);二是用户输入希望的座位号,当用户输入自己选中的座位号后,程序对可用座位分布图进行更新。
程序应该一直执行下去,直到所有座位都被预订,或者用户表示程序应该终止。
如果用户指定的一个座位被预订,程序应该指出该座位不可用,要求用户重新选择。
(4)列出初步的测试计划:按照程序的输出形式分别测试两种方法分配座位的正确性,并多次测试,考虑多种可能出现的结果。
三、概要设计
1.本程序包含五个模块:
(1)主程序模块:
main()
{
定义字符类型的变量choose和整型变量i,j及数组
Seat[8][12]
并初始化用switch语句实现以那种方式进行座位分配;
对要用到的下面四个函数进行函数声明:
void menu();
void assign(int seat[8][12]);
int myfree(int seat[8][12]);
void position(int seat[8][12]);}
(2)座位显示模块:用循环语句控制座位的输出方式,并按照要求显示在屏幕上达到一目了然的效果.
(3)菜单界面模块:输出图形菜单界面,可以选择分配座位的方式.
(4)电脑自动分配座位的模块:达到电脑自动分配的功能.
(5)用户自选座位的模块:达到用户自己选择自己希望座位的功能.
主程序调用其他四个模块
2、模块图
四、详细设计
依照座位的分布方式定义一个二维数组并初始化:
int seat[8][12]={
{4,2,1,3,5},
{6,4,2,1,3,5},
{6,4,2,1,3,5,7},
{8,6,4,2,1,3,5,7},
{8,6,4,2,1,3,5,7,9},
{10,8,6,4,2,1,3,5,7,9},
{10,8,6,4,2,1,3,5,7,9,11},
{12,10,8,6,4,2,1,3,5,7,9,11}, };
用下面语句实现分配座位的方式:
switch(choose)
{case'1':assign(seat);break;
case'2':myfree(seat);break;
}
座位显示函数:以数组的形式输出。
void position(int seat[8][12])
菜单显示函数:
void menu()
电脑自动分配座位函数:
void assign(int seat[8][12])
randomize(); /* 随机初始化种子数,确保产生的随机数不同;*/
x=random(8); /* 产生[0, 7]间的整型随机数,赋值给x;*/
y=random(12); /* 产生[0, 11]间的整型随机数,赋值给y;*/
用户自己选座位的函数
int myfree(int seat[8][12])
printf("\nplease input the seat'row and number:\n\n");
printf("row:"); /*输入座位的行号*/
scanf("%d",&x);
printf("\n\nnumber:"); /*输入座位的列号*/
scanf("%d",&y);
整个程序的流程图如下:
main()函数
position()函数
assign()函数
myfree()函数
五、调试分析
该程序的关键是弄清楚各种选择座位的方法,原理。
首先要保证机选和人选的正确性,这样一来也就不会浪费许多时间去修改程序的错误。
我整个程序没有分开写,导致后来我花了好多时间去修改整理。
我觉得这个程序最难的地方就是要用X代替已经被分配出去的位置,并且显示在屏幕上。
这一点让我改了很多地方,最后通过令被选的座位号为0,输出的座位号为X才达到目的,
该程序设计用到了do-while语句,for循环语句以及case语句来实现该程序的功能,这些语句也是我们所学的最基础的东西,但是在编程的过程中非常有用.
六、测试结果
程序输入完后运行成功,显示如图(1)下:
第一次调试:选择1、电脑自动分配座位,得到结果如图(2)所示:
第二次调试:按任意键后得到如图(3),可以看到被选的座位已被x代替.
选择2、用户自己选择座位,得到结果如图(4)所示:
输入4和5后,运行得到如图(5),可看到第4排第5列已被选择,并用x代替
七、用户使用说明
在正确运行程序后,屏幕上会显示出菜单,用户可以选择出自己要的座位分配方式。
第一种方法:选择1后敲回车键,便可以得到分配的座位号如图(2),如果该座位号被分配出去了,程序会显示出,并让用户重新选择。
第二种方法:选择2后敲回车键,屏幕上会显示:please input the seat'row and number,如图(4)此时,用户需要输入自己希望的座位的行号和列号,如果该位置已经被分配出去或者该位置不存在,屏幕上会显示出来,并让用户再次重新选择。
八、课程设计总结
通过这次对电影院座位分配的课程设计,我加深对《C语言程序设计》课程所学知识的理解,并且熟练掌握和巩固C语言的基本知识和语法规范,开始看到这个题目的时候,我觉得对我个人而言很困难,我们并不是学编程这个专业的。
总认为这个和我们无关,现在我发现学会编程真的很重要,因为它能够解决我们日常生活中的很多问题。
在编程的过程中我遇到了很多困难,每次我都花了很长时间才解决,并且在解决的过程中学会了更多知识,对我个人而言是在很大程度上提高了编程的能力,虽然以后我可能不再会有关于这方面知识的课程了,但我还是会利用自己的课余时间去学习这方面的知识,让自己能够更加熟练的运用编程来解决实际中的问题。