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. (转)sql 违反了 PRIMARY KEY 约束,不能在对象 中插入重复键

    说明你的数据里面有重复记录 两种情况 1.已存在的表中和要导入数据之间的重复 这个时候可以通过在两个表之间建立关联,将主键级联找出重复记录 2.要导入的表中存在重复记录 可通过类似如下的语句将表中的重 ...

  2. redis知识点汇总

    1. redis是什么 2. 为什么用redis 3. redis 数据结构 4. redis中的对象类型 5. redis都能做什么?怎么实现的的? 6. redis使用过程中需要注意什么 7. 数 ...

  3. css中height 100vh的应用场景,动态高度百分比布局,浏览器视区大小单位

    css中height 100vh的应用场景,动态高度百分比布局,浏览器视区大小单位 height:100vh 一些只能vw, vh才能完成的应用场景: 1. 场景之:元素的尺寸限制 vw vh 主要是 ...

  4. coredump文件抓取设置

    ulimit -c unlimitedecho 1 > /proc/sys/kernel/core_uses_pidecho "/tmp/core-%e-%s-%u-%g-%p-%t& ...

  5. workbench使用小笔记(不定期持续更新)

    1. 删除不使用的工作空间 在使用workbench时,之前可能建了好几个工作空间,现在有一些不使用了,每次打开都能还能看到它们,对于强迫症来说多少有一些不爽.如下图: 现在,就把那些不使用的工作空间 ...

  6. Exp1 PC平台逆向破解 20164303 景圣

    逆向及Bof基础实验 实验对象 文件名为pwn1的linux可执行文件. 实验目标:程序正常执行流程weimain调用foo函数,foo函数会简单回显任何用户输入的字符串.该程序同时包含另一个代码片段 ...

  7. 网易cetus数据库中间件安装-读写分离版本

    安装前提:1.数据库主从关系要做好:2.授权用户登录要做好:3.mysql最大连接数设置好,不然会报连接错误:4.版本最好是5.6以上. 1.安装依赖 yum install cmake gcc gl ...

  8. MySQL 增删改查

    增--添加数据 新建数据库 create database newdatabase; 选择数据库 use newdatabase; 新建表 create table newtable(id int,n ...

  9. JS(JavaScript)的进一步了解3(更新中···)

    数据的三种存储方式 String   “ ” Array    [ ] Json    { } 所有编程语言java c python c++ 等 他们都是面向对象编程,面向对象必须有三大特点,封装, ...

  10. Polly 重试策略

    工作原理 Retry 基本重试: public static void Retry() { var random = new Random(); // Policy<> 泛型定义返回值类型 ...