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.电影订票
操作步骤如下:
(1)展示当前时间段后可看的电影场次信息。(注意时间,一定是当前时间段后的电影信息)
(2)顾客输入输入观看电影名称和时间段,展示目前厅内位置信息。注意用矩阵方式显示位置信息,每行10列左右,具体自己设计。位置信息在电影信息文件即movie.txt查看位置状态信息。0表示可预订用绿色表示,1表示不能定用红色标识,2不可订可用灰色表示。这块建议图形化展示。
(3)若该场次无位置,提示选择其他电影场次。若有位置,继续下面操作:
* 选择1人位置,输入行列位置编号后,若当前位置可选,生成订单,写入订票信息文件movie_order.txt,更新movie.txt中座位状态。若当前位置已定或不可选,提示错误信息。屏幕座位状态能实时更新。
* 选择多人位置,输入人数及行列位置编号后,实现座位选择,屏幕实时更新。(选做)
位置编号从1---位置中数量编号。
* 订单生成后能计算总票价。
  • 2.查看我的订单
展示所有历史订票信息,然后可删除未看的电影订单。(选做)
注意删除订单后,相应电影场次中位置信息状态也要修改。

具体数据文件

(1)放映厅信息文件:movie_house.txt。字段:
放映厅编号、放映厅名称、放映厅行数、放映厅列数、放映厅座位初始状态。
(2)电影场次信息文件movie.txt。字段有:
电影场次编号、电影名称、该场次电影单价、播放日期、播放时间段、所在放映厅、放映厅座位当前状态。
(3)电影订单信息文件movie_order.txt。字段有:
顾客编号、电影名称、购买数量、购买座位、总金额、购买时间。
购买座位: [1,1],[25,3]。表示购买2个座位,一个是第一行第一列,一个是第25行第三列。
(4)顾客账号文件customer.txt,自建。包括:顾客编号、密码。
(5)影院管理员账号manager.txt,自建。包括:管理员编号、密码。

要求

(1)系统演示时候必须保证文件内至少有50行数据。
(2)系统必须具备容错处理。没有位置、没有电影等都要出错处理及提醒。
(3)系统交互性要好,操作简单好用。
(4)有能力同学可以扩展系统功能,如导入easyx库,加入图片。系统交互性更好。电影放映厅等状态改进。

2.系统模块图

3.详细设计

3.1头文件截图及简单文字介绍





3.2各个模块主要函数截图及介绍

1.main.cpp

2. Login.cpp

1.ManagerLogin 函数

该函数用于管理员登录(默认管理员不能注册)



2.CustomerLogin函数

该函数用于用户登录及注册





3.ReadManagerFile 及 ReadCustomerFile函数

这两个函数主要用于计算manager.txt中的管理员数和customer.txt中的用户数。

在用户登陆时,根据计算得出的数量来检索输入的用户名及密码是否存在

(当时文件那块儿理解的不是很透彻,现在想想这两个函数纯属多余,直接用feof()函数判断是否到文件尾就好了)

3. manager.cpp

1.Create_House_Doc函数

该函数用于创建放映厅链表,将movie_house.txt中的数据建成链表,以便实现管理员的放映厅管理功能

2.Insert_House_Doc函数

该函数用于创建放映厅链表的连接,及实现管理员在放映厅管理中增加放映厅的功能

3.Print_House_Doc函数

该函数用于遍历放映厅链表,并以表格的形式输出movie_house.txt中的放映厅信息

4.Delete_House_Doc函数

该函数用于删除放映厅数据

5.Alter_House_Doc函数

改函数用于修改已有放映厅的信息



6.InHouseFile函数

该函数用于将修改后的链表重新写入movie_house.txt文件中,实现文件的更新

4. customer.cpp

1.Print_After_Movie 函数

显示当前时间之后的电影,供用户选择

2.Printf_MovieChoice 函数

该函数用于用户选择完想看的电影后,输出改电影当前时间后的所有场次信息

3.Print_MovieSeat 函数

该函数用于打印用户所选场次的电影的座位信息

4.运行结果

4.1管理员系统

  • 放映厅管理

    • 增加放映厅

    • 删除放映厅

    • 修改放映厅

  • 电影场次管理

    • 增加电影

    • 删除电影

    • 修改电影

4.2用户系统

  • 电影订票+查看订单

5.总结

刚开始的时候,我想着学习一下EasyX,来实现座位信息的生成,结果,事实告诉我们,一个星期连课设都快搞不定了,更别说学EasyX了。
一开始的时候,我是想着用数组来做的,当时觉得删除那块儿的用数组做特别麻烦,然后就想着说用链表做。然而,链表又不太会用,就一边翻书,一边打代码。刚开始的时候,是花费了很多的时间,到后面,链表的那块儿内容直接都可以复制黏贴。
当时先做的是管理员的那个部分,所以相对于用户,管理员的部分做的相对要完善一些。然后,一个星期的时间真的有点点短,我里头的功能其实并不完善,就像选做中的删除功能就没有实现,系统的容错性也做的不完善。
这次的课设真的是非常的费脑、费时。但是,当你实现了一个又一个的功能后,你就会有一种成就感跟满足感。课上学的东西应用在这,只是基础中的基础,要想实现各个功能必须要自己去查找资料,可以说课设就是巩固课堂上学习的知识,学习课堂上所没有的知识的一个过程。做课设的时候,可以先把框架代码先写好,然后再一步步的完善各个函数功能。在写函数的时候,写好一个函数就应该调试一下这个函数功能是否实现,不然,等到所有代码都完成了再去调试,在查找错误方面就会非常的麻烦。

C语言课设——电影院选票系统的更多相关文章

  1. C语言课设心得分享(一)

    今儿上完课设,老师果然讲的比较少,周四还不用去,看来还是学生自己折腾.我在做课设的过程中,攒了一些心得/体会,希望能和大家分享分享,也希望能一起探讨探讨.如果是我能回答的问题,我很乐意能够提供帮助. ...

  2. 库存管理系统实现 C语言课设

    1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 //定义一个商品结构体 6 ...

  3. C语言课程设计——电影院订票系统

    1. 课题简介 大家都爱看电影,现请参考一个熟悉电影票预订系统,实现C语言版的订票系统.了解订票如何实现的.系统主要有2类用户:管理员用户和顾客用户. 管理员用户登录系统后,实现电影放映厅信息管理和电 ...

  4. Matlab 信号与系统课设 - BiRadio仿真电台

    BiRadio Matlab 信号与系统课设 - BiRadio仿真电台 Author : Benjamin142857 Date : 2018-12 Video : BiliBili Github ...

  5. JAVA课设——中药古籍《太平圣惠方》数据处理与分析系统

    一.配置JAVA环境 本次课设是在Windows 10(64bit)平台上实现的,所以首先得配置下JAVA环境. 步骤一:先下载一个JDK(1.7)安装包,安装好JDK: 步骤二:JDK环境配置(由于 ...

  6. C语课设心得分享(二)

    咱们今儿说说IDE的事儿. IDE是「集成开发环境」的意思,比如咱们常用的VC6.0,就是开发C语言所用的IDE的一种.对于IDE的认识,可能有些朋友有点儿模糊,咱们捋一捋,我也会给出一些IDE方面的 ...

  7. C语课设心得分享(三)

    调试. 以前咱们写课后习题,一般也不需要使用调试,如果程序编译error,根据错误信息就可以改好:如果是结果错误,那么在稿纸上过几遍基本也可以得出结果. 但咱们这个课设比较大,就需要很多调试的过程,尤 ...

  8. 将C语课设传到了Github和Code上 2015-91-18

    一直听说Git好使,以前捣鼓过没弄成,现在考完试了终于可以静下心来研究研究. 哎,我要是当时做课设的时候就用Git,也能省下不少事呢. 使用的Git教程,刚看个开头: 廖雪峰的Git教程 http:/ ...

  9. 如何用 python 优雅地完成数据库课设

    0 前言 偶然间发现 Google 收录了学校实验打卡系统的接口,正好要做数据库课设,便拿来作为 environment. 机房居然装了 python ,早就听说 python 写爬虫速度一流,课上的 ...

随机推荐

  1. 模块cv2的用法

    一.读入图像 使用函数cv2.imread(filepath,flags)读入一副图片 filepath:要读入图片的完整路径 flags:读入图片的标志  cv2.IMREAD_COLOR:默认参数 ...

  2. Can't locate Params/Validate.pm in @INC (@INC contains: /usr/local/lib64/perl5 /

    今天 安装 MHA,管理节点选 mha4mysql-manager-0.58,在初始化时报错 [root@Server3 ~]# masterha_check_repl  --conf=/etc/ma ...

  3. 安卓 ToolBar 颜色样式设置

    设置Toolbar弹出菜单的字体颜色和背景颜色,包括三个点菜单颜色和返回图标的颜色. 布局文件xml <LinearLayout xmlns:android="http://schem ...

  4. Unity 个人用过的地面检测方案总结

    Unity 个人用过的地面检测方案总结 1.普通射线 在角色坐标(一般是脚底),发射一根向下的射线,长度大约为0.2, 只适用于简单地形,实际使用中常常遇到以下问题 用的collider去碰撞地面时, ...

  5. day12函数,三元表达式 ,列表推导式 ,字典推导式,函数对象,名称空间与作用域,函数的嵌套定义

    复习 # 字符串的比较 # -- 按照从左往右比较每一个字符,通过字符对应的ascii进行比较 # 函数的参数 # 1)实参与形参: # -- 形参:在函数定义时()中出现的参数 # -- 实参:在函 ...

  6. Web 端异步下载文件

    Web 端异步下载文件 实现文件异步下载: 在服务端无法返回文件,或发生异常时给予提示. JavaScript: 服务端返回的JSON对象形如: { code:200, msg:'下载成功|未找到指定 ...

  7. springAOP实现操作日志记录,并记录请求参数与编辑前后字段的具体改变

    本文为博主原创,未经允许不得转载: 在项目开发已经完成多半的情况下,需要开发进行操作日志功能的开发,由于操作的重要性,需要记录下操作前的参数和请求时的参数, 在网上找了很多,没找到可行的方法.由于操作 ...

  8. loadrunner常用函数集锦

    一.三个复制函数的区别: strcpy 原型:extern char *strcpy(char *dest,char *src);用法:#i nclude功能:把src所指由NULL结束的字符串复制到 ...

  9. SpringBoot后台接收前台的字符串数据

    需求 将前台传入的字符串数据转为int类型. 操作 在pom.xml中添加引用. <dependency> <groupId>org.apache.commons</gr ...

  10. CentOS 使用firewalld打开防火墙与端口

    CentOS 使用firewalld打开防火墙与端口 LinuxCentOS 基本使用 启动 : systemctl start firewalld 关闭 : systemctl stop firew ...