1. 项目概述
1.1 项目背景
大唐传媒有限公司成立于2011年。大唐传媒集电影、电视剧的开发、投资、制作、宣传、营销、发行等多方位影视功能为一体,并致力于海外影视业务的发展。大唐传媒自成立以来,就秉承打造精品项目的理念,为观众呈上了众多优质的影视作品。
大唐传媒旗下拥有多家连锁剧院,随着公司的发展,为了提高劳动效率、节约成本、提高服务质量,公司决定开发一套剧院票务管理系统。用以方便影院的票务管理,剧目管理等。通过这个软件,可以使传统的剧院剧院售票数据,剧目管理,演出计划管理等工作更加简洁,便利。
(该项目为课程设计,仅供学习使用,项目背景等为虚构。)
1.2 团队分工
李猛:项目小组组长,整体设计,完成一个功能的简单demo,协调后台与前台之间的矛盾,解决困难问题,鼓励并监督组员们的进度。
胡旭东:初期负责Server端一些功能的实现,后期负责完成销售分析的一些完整的功能(包括前后端交互)。
张文东:负责前端GUI界面的编码,从模仿到创新,阅读并理解后端及前后端交互的源码,测试并反馈bug。
李兆鹏:负责前端GUI界面的编码,学习一些高级的类(比如图表),协助胡旭东完成前后端的交互,后期负责撰写文档。
张敏:设计和把握页面的整体风格,撰写所需要的CSS样式文件,写一个网页购票的Demo,后期负责撰写用户手册。
1.3 术语与缩写
编号 | 缩写 | 英文原文 | 中文含义 |
---|---|---|---|
1 | TTMS | Theater Ticket Management System | 剧院售票管理系统 |
2 | C/S | Client/Server | 客户机和服务器结构 |
3 | SSM | Spring MVC + Spring + Mybatis | web后端框架 |
4 | JSON | JavaScript Object Notation | 轻量级的数据交换格式 |
5 | 无 | HttpClient | Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包。 |
1.4 参考资料
作者 | 资料名称 | 出版社/期刊 | 出版时间 |
---|---|---|---|
(美)Craig Walls | 《Spring实战》(第4版) | 人民邮电出版社 | 2016年4月 |
(英)Ian Sommerville | 《软件工程》(第9版) | 机械工业出版社 | 2017年9月 |
林信良 | 《JSP&Servlet学习笔记》(第2版) | 清华大学出版社 | 2012年5月 |
梁勇 | 《Java语言程序设计》(基础篇) | 机械工业出版社 | 2016年12月 |
2. 系统需求
2.1 功能需求
需求名称 | 所含功能 |
---|---|
用户管理 | 查看软件已经注册的用户的个人信息并实现更改信息,增加用户,删除用户的功能;每个用户可以修改自己的个人信息和密码。 |
演出厅管理 | 提供演出厅的增、删、改和设置座位的功能。 |
剧目管理 | 对剧目的增、删、改、查的功能。 |
演出计划管理 | 对演出计划的增、删、改、查的功能,并对各项演出计划所对应的票进行管理(设置票价)。 |
售票 | 根据客户所选的演出计划和座位进行售票,并可以取消订单和处理未完成订单。 |
退票 | 根据客户所选的演出计划和座位进行退票,并可以取消订单和处理未完成订单。 |
销售分析 | 统计影片的票房、售票员的销售额、影片的排片比等 |
2.2 非功能需求
2.2.1 界面需求
- 方便、简洁、美观、一致,符合大众审美。
2.2.2 性能需求
- 响应时间:小于等于3秒。
- 处理速度:达到较快的速度。
- 并发度:能够支持多台客户端同时提供服务。
2.2.3 安全性需求
- 非法输入和操作的处理;
- 用户密码要加密存储;
- 多个客户端同时卖票的问题;
- 对某些特定的功能的访问权限的限定。
2.2.4 可靠性需求
- 订单如果被迫终止,还能重新处理订单。
2.2.5 适应性需求
- 能够适应不同的操作系统;
- 前端界面可以单独调整;
- 后端的调整及数据库的优化互补影响。
2.2.6 外部接口
- 与其他系统的接口等。
- 与系统特殊外设的接口,如写码机、条码扫描器、扫描仪等。
3. 系统设计
3.1 逻辑架构
Server
采用经典的SSM框架(Spring MVC + Spring + MyBatis)
Client
采用JavaFx来构建用户界面。
node里面自己封装一些常用的按钮等,util是一些工具类,比如加密和Httpclient等。
交互方式
采用HTTP协议进行交互,服务器返回封装过的JSON文件,运用Fastjson来创建和解析JSON。
3.2 物理架构
客户端向服务器发请求,服务器处理请求并将结果返回客户端;客户端不能直接访问数据库,服务器是两者间的桥梁。
3.3 数据库设计
数据库和具体每张表的定义–> TTMSCreate.sql
插入数据字典–> TTMSInsert.sql
4. 系统实现
4.1 开发环境
开发工具
IDE:IntelliJ IDEA 2018.1
Maven插件:MyBatis Generator
环境
Linux Deepin 15.5 64位
4.2 系统功能
主界面
登录
管理员的界面(经理和售票员类似)
个人中心
个人中心主界面
修改个人信息
修改密码
用户管理
用户管理主界面
添加用户
修改用户信息
删除用户
演出厅管理、剧目管理、演出计划管理、数据字典管理与之类似,就不一一列举了。
售票
选剧目
选场次
选座位
确认订单
付款或取消
退票的过程与之类似,就不截图了。
- 未处理订单
销售分析
销售分析主菜单
剧目总票房
员工销售额
某日电影排片比
5. 团队开发工作总结
5.1.1 团队组织管理
明确每个人的分工,保证每个人都不在划水,培养团队合作能力。
在每天的一开始要开个小会总结一下,看看过去几天进度怎么样,然后今天做什么。
在每天快结束的时候,看看每个人的今天进度完成的情况。
在上机时间遇到问题可以直接找组内其他成员解决,课后遇到问题通过QQ群来联系。
5.1.2 软件开发过程
- 根据设计说明书,安装好合适的开发软件,由组长将环境搭建好并上传到我们的GitHub仓库,每个组员从GitHub上拉去资源,在本地把环境搭建好。
- 由组长开发出来一个小demo,组内其他成员先学习如何开发,然后再去完成自己相应的任务。
- 每开发完成一个模块,开发人员要把它测试,确保没有任何问题在提交,遇到任何问题要马上解决,不要拖到下一天。。
- 所有功能开发完毕后,联调联试,将问题记录下来并注意解决。
- 统一程序的风格与样式,撰写相关文档。
5.1.3 难点问题解决
- 图片传输不完整导致无法加载:
//将 byte[] 编码转化为字符串再传输
public void byteToStr(){
Base64play_image = Base64.encodeBase64String(play_image);
}
//将字符串还原为 byte[] 再使用
public void strToByte(){
play_image = Base64.decodeBase64(Base64play_image);
}
gitHub在合并代码时出现了冲突:一定要分工明确,不上传IDEA配置文件,出现冲突由组长亲自解决。
开发的模块不能很好的组合在一起,代码风格不一致:在一定的规范下进行编写,最后由组长检查。
5.2 经验与教训
- 基础知识一定要扎实,如果个别成员的开发能力欠缺,会影响整体的开发进度。
- 分工一定要明确,各司其职,不要让一份工作被重复做几次。
- 不要轻易删除GitHub仓库和数据库。
- 不要上传IDEA的配置文件,每个人的都不同,会有冲突的。
- 要学会相互鼓励、共同进步,不要轻易否定别人的成果。
写在最后
这次开发时间比较紧张,只是简单的将功能做了出来,后续还要加以改进。如果你对这个项目比较感兴趣,欢迎收藏并Fork,若发现一些问题可以提出Issue或者直接动手修复bug并pull request。
项目地址:海客票务管理系统