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

【具体数据文件】:

(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. LoginAndRigester.cpp

1.LoginCheck 函数

该函数用于根据登陆用户的身份绘制登陆界面,根据identity将不同的文件名传入Compare函数,这样就不用对管理员和用户分开编写两套登陆的函数了

2.Compare 函数

该函数用于获取用户的账号和密码,并将账号保存在id数组中,以便后期设计订单函数时用到。并对用户输入的账户和密码进行验证,并将结果通过返回值返回。

3.Rigester 函数

该函数同样利用identity来区分文件名,读取用户输入,并对用户的账户进行查重,如果没有相同账户就在文件末尾追加。

2. myOrder. cpp

1.AddOrder 函数

该函数要对传入的座位信息进行判断,如果座位为-1,说明没有选中座位,并对座位的数量进行统计,然后通过时间函数获取当前的本地时间,将所有数据写入add的Order类型结构组中,并添加到temp数组的末尾,写入文件 movie_order.txt 。

2.ReadOrder 函数

该函数要将movie_order.txt文件中的数据读取到temp数组中

3.OrderMenu 函数

这个函数就长了,他的功能是打印订单界面,并将temp数组中的数据按照每六行一页展示出来,并完成上下页的翻页功能,并提供用户删除的选项,利用函数对订单进行删除。

3.session.cpp

1.ReadSession 函数

该函数用于读取movie.txt中的数据,并存储到temp数组当中去。

2.DelSession 函数

该函数用于删除场次

4.house.cpp

1.AddHouse 函数

功能大致同上

2.ReadHouse 函数

5.others.cpp

SeatSelect 函数

该函数会根据seatState数组的值将座位表打印到屏幕上,并对用户的选择进行判断与存储。

4. 运行结果


图片被压缩了。。

5. 总结

刚开始的时候考虑太多,老想着去把这个做的好看一点,结果时间不够,直接导致管理员的功能没有完全完善,在用户的操作上也有一些做得不到位的地方,但总体来说勉强符合预期效果。

这一次的课设设计也着实让我体会到C语言的重要性,作为一门面向过程的语言,他能够很好地锻炼编程思维,但在一些项目上面,远不及其他那些面向对象的程序来的得心应手,不过学好了C语言,学习其他语言也就不会那么困难了,像这次的easyx,虽然说只是个头文件,但是很多原来的C语言的函数都被easyx代替了,所以仍然需要花一些时间去学习,好在上手比较快,勉强赶上了。

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

  1. C语言小项目-火车票订票系统

    list.h #ifndef __LIST_H__ #define __LIST_H__ #include "stdafx.h" #include <stdio.h> ...

  2. 学生管理系统-火车订票系统 c语言课程设计

    概要: C 语言课程设计一---学生管理系统 使使用 C 语言实现学生管理系统.系统实现对学生的基本信息和考试成绩的 管理.采用终端命令界面,作为系统的输入输出界面.采用文件作为信息存储介质. 功能描 ...

  3. 课程设计之(struts2+Hibernate)航空订票系统

    1.题目 课程设计之航空订票系统 为某家机票预订服务商开发一个机票预订和查询管理系统.该系统中的航班和机票信息由多家航空公司负责提供.客户通过上网方式查询航班时间表.机票可用信息.机票折扣信息,可以远 ...

  4. Java语言课程设计——博客作业教学数据分析系统(201521123107 张翔)

    #Java语言课程设计--博客作业教学数据分析系统(个人博客) 1.团队课程设计博客链接 [博客作业教学数据分析系统(From:网络五条狗)](http://www.cnblogs.com/fanta ...

  5. windows API 开发飞机订票系统 图形化界面 (四)

    接下来的是录入航班.修改航班信息功能的实现: //录入航班 BOOL EntryFlight(HWND hEntryDlg){ TCHAR szDiscount[]; TCHAR szFare[],s ...

  6. Java版飞机订票系统

    关注微信公众号:Worldhello 回复 飞机订票系统 可获得系统源代码并可加群讨论交流 数据结构课程设计题目:          [飞机订票系统]            通过此系统可以实现如下功能 ...

  7. C语言课程设计

    目录 实现目的 游戏玩法介绍 实现流程与作品架构 任务列表及贡献度 总结感想 作品源码与仓库地址(附页) 资料引用与出处(附页) 实现目的 2048,作为一款极其经典的游戏,从发行到现在,已经有了极多 ...

  8. C语言课程设计—图书管理系统

    这是本人大一第二学期初C语言课程设计的作品,嘿嘿,本来以为已经找不到原稿了,今天无意中居然在QQ网络硬盘中找到了当初的teta版,公布于此,以作纪念. C源码例如以下: #include<std ...

  9. C语言课程设计(成绩管理系统)

    C语言课程设计(成绩管理系统) 翻到了大学写的C语言课程设计,缅怀一下 内容: 增加学生成绩 查询学生成绩 删除 按照学生成绩进行排序 等 #include <stdio.h> #incl ...

随机推荐

  1. #/bin/sh参数-e的含义

    注:本博客欢迎转载和引用,但请保留原作者信息! 一.背景 今天遇到一个诡异的问题,一旦脚本中判断$?为非零,那么脚本就会自动退出的情况,仔细调试脚本的逻辑,并没有发现错误,因此作此文 二.解决 既然要 ...

  2. CodeForces 450B Jzzhu and Sequences(矩阵快速幂)题解

    思路: 之前那篇完全没想清楚,给删了,下午一上班突然想明白了. 讲一下这道题的大概思路,应该就明白矩阵快速幂是怎么回事了. 我们首先可以推导出 学过矩阵的都应该看得懂,我们把它简写成T*A(n-1)= ...

  3. 2016"百度之星" - 初赛(Astar Round2B)1003 瞬间移动 组合数学+逆元

    瞬间移动  Accepts: 1018  Submissions: 3620  Time Limit: 4000/2000 MS (Java/Others)  Memory Limit: 65536/ ...

  4. Nginx 多进程连接请求/事件分发流程分析

    Nginx使用多进程的方法进行任务处理,每个worker进程只有一个线程,单线程循环处理全部监听的事件.本文重点分析一下多进程间的负载均衡问题以及Nginx多进程事件处理流程,方便大家自己写程序的时候 ...

  5. Java Spring-事务管理概述

    2017-11-11 23:05:39 事务(Transaction):是逻辑上一组操作,要么全都成功,要么全都失败. 一.事务的特性 原子性:事务不可分割 一致性:事务执行的前后,数据完整性保持一致 ...

  6. 安装 android4.0 到 vmware的注意点

    我发现无论如何,wmware上是出不来声音的. 我放弃 android-x86-4.3-20130725.iso 在 声音上有问题 现在安装这个版本: android-x86-4.0-RC2-eeep ...

  7. sqlserver存储过程分页

    create  procedure [dbo].[SqlPager]@sqlstr nvarchar(4000), --查询字符串@currentpage int, --第N页@pagesize in ...

  8. C#删除图片问题

    public Image GetImage(string path) { FileStream fs = new FileStream(path, FileMode.Open, FileAccess. ...

  9. Vue.js组件设计原则

    页面上把每个独立可以交互的区域视为一个组件 每个组件对应一个工程目录,组件所需要的各种资源在这个目录下就近维护 页面不过是组件的容器,组件可以嵌套自由组合形成完整的页面

  10. elasticsearch搜索引擎学习1

    用elasticsearch-river-jdbc同步数据到elasticsearch 用elasticsearch-river-jdbc同步数据到elasticsearch 1 插件安装  插件的g ...