C#和软件工程的课程大作业,仅供参考
这里只简单介绍,说明书和演示PPT在项目doc目录下
下载地址:Github,百度云提取码:47jc 大小:12MB
按照系统划分,由管理端和顾客端两个子系统组成
- 管理端帮助影院管理员管理和统计电影数据、档期数据、订单数据。
- 顾客端为顾客提供购票服务。
MVC架构
没有网络编程,但是实际上是C/S结构,只不过没有网络进行数据交换,而是通过字典来进行数据交换(模拟网络数据),服务端和两个客户端都是完全分离的,如果需要改成网络程序,只需要在Controller增加网络接口即可。
因为是一个人进行开发,又要编写文档,时间有限,只做了下面这些核心的功能。
-
管理端:
- 查看电影,档期,订单数据
- 导入电影
- 自动排制档期
- 销售统计
-
顾客端:
- 查看正在上映的电影
- 查看电影对应的档期
- 选择座位
- 付款
图片如果加载不出来,可以下载帮助文档自行查看
最开始画了几层,到最后只剩一层,这样比较清晰
所有State为枚举值,类型为布尔值或者在Config文件中进行定义
存在问题:直接定义枚举值而不使用枚举类型,效果差不多,但是代码看上去就没有层次感
分解类图见PPT
所有用例均有序列图,请下载演示PPT进行查看
注意:判断之后执行不同事件的部分画错了
-
多个View Page在一个Window中进行切换,用的Screen Stack的方式来处理
-
委托来调用跳转到的页面的函数
-
每个页面打开前都先从”后端“获取页面数据
-
在购票过程中,始终传递一个订单字典,记录顾客选择的电影和若干个座位的信息,最终传递给”后端“插入数据库,完成订单,返回主页
顾客门户,显示最近场次
显示所有上映的电影
显示某部电影的档期
网格做的简易选座页面
这个页面主要是对之前选择的数据进行汇总显示
在文档中针对付款这部分进行了设计,但是不可能真的去接入第三方,因此这个地方点击XX支付后,直接跳到付款成功环节
主要就是各种数据的增删查改
这个页面显示当前正在上映的电影,允许管理员对电影进行下架操作
已经实现的下架操作只是单纯的修改电影的状态,实际上不可能这么就下架了
-
显示日历对应的档期,
-
输入电影的比例排制档期功能,具体功能和算法在PPT中有介绍
一般来说,电影院不会同时上映这么多电影,这个程序正常情况下,会给不同的放映室安排一整天的放映顺序,每部电影的数量不会太多也不会太少,按照其比例进行分配
两种方式进行导入
- 直接输入
- 从文件导入
从文件导入
- 点击”从文件导入“
- 选择XML/JSON文件
- 读取文件数据并解析
- 设置输入框数据
直接输入
- 设置输入框数据
- 确定输入
- 从输入框读取到字典
- 数据传输到”后端“
- 后端插入数据库
上面就是插入数据的流程,我没有做第三步,直接用的硬编码,这个很容易实现。
- 软件说明书
- 演示PPT
都在项目doc目录
Visual Studio 安装以下环境
-
工作负载
- .Net桌面开发
- 数据库存储和处理
-
单个组件
- Entity Framework 6
注意:首次运行时会报以下错误
- Select异常EntityFramework.SqlServer
- 获取异常EntityFramework
- Select异常EntityFramework
首先检查bin/Debug目录下是否存在EntityFramework.SqlServer 如果没有则没有安装实体框架或者是数据库,检查环境配置
其次需要将下面两个文件拷贝到bin/Debug目录下
- SQL/Database1.mdf
- img文件夹
.mdf是数据库文件,这里需要手动复制的原因是当时数据库在运行时的复制操作存在BUG
SQL下和根目录下共有两个Database1.mdf,两个文件都一样
可能还有版本问题
因为采用数据库驱动的实体框架,Model是根据SQL文件自动生成的,要想更改Model,只能通过更新SQL的方式,一般我要修改SQL之前,我都会先实体框架生成的文件都删除,改完SQL后,再重新自动生成,这步一定要谨慎。
建议把前面的从文件导入数据先弄好,写个开发环境下一键导入测试数据的功能,不要在数据库里面直接输入,数据库记得备份。
完整的做一个项目收获还蛮多的,只不过终究还是一个人扛下了所有。。。 差不多就这些了,留个纪念