为期两周的课设终于结束了,我们组选择的题目当然是我邮软件祖传的课设项目TTMS(Theater Ticket Management System 剧院票务管理系统),说来也很惭愧,整个项目自打三月份人机界面课程大作业时候就已经开始,直到现在六月份,开发周期长达三个月,然而功能上还有很多欠缺。
项目首页:
https://github.com/fujie-xiyou/TTMS_2.0
那就先从项目的界面说起
界面部分采用JAVAFX开发,JAVAFX是JAVA8主推的图形库,相比Swing有很多方便的特性,比如对css的支持,就让我们的项目在美化过程中变得非常轻松。
而JAVAfx的缺点在于官方文档不够全面,网上的资料也相对比较少,做很多东西都要查资料查很久或者自己慢慢摸索。
说几个界面开发过程中的坑点
- Javafx时间选择器
在开发 演出计划管理 用例时,需要给用户提供一个选择时间日期的工具,而javafx也自带了日期选择器,令人不解的是却没有提供时间选择器!!! 如果直接让用户手动输入时间,又会陷入格式解析和异常输入处理的坑,于是查了很久的资料,终于找到一个第三方实现的时间选择器:
在maven配置文件中加入以下代码 即可导入这个第三方的时间选择器。
<dependency>
<groupId>org.jfxtras</groupId>
<artifactId>jfxtras-controls</artifactId>ls
<version>8.0-r6</version>
</dependency>
虽然界面整体风格和自带的日期选择器有点差异,并且返回的时间类型是Calendar,需要先转成Date再转成LocalTime 再和日历选择器的LocalDate拼接起来变成LocalDateTime类型才比较方便 - CSS支持
JAVAFX所支持的CSS并非标准的CSS,在使用过程中需要查官方文档才能知道具体支持在具体的某个控件上对应的css支持情况和写法,javafx官方css支持文档
这个文档在页面中疯狂CTRL+F即可查询【手动滑稽】 - 各种各样的布局面板,每一种面板除了面板你内部的节点排列方式不同之外,面板和上级面板的面积关系也都各不相同,而且这方面的资料几乎没有,基本全部靠自己摸索,但是自己又没有那么多精力去研究每一种面板的特性,用的时候就只有靠自己摸索。
客户端与服务器之间交互的实现
1. 客户端
(1) 客户端采用Java自带的HTTP连接实现(HttpURLConnection), 在此基础上进行了简单的封装,利用模拟Cookie实现用户请求登录并成功时记录sessionID,在后续的请求过程中会带上sessionID用以服务器对用户权限进行检验。
(2) 统一POST请求的请求体类型(Content-Type)为application/json,客户端将业务请求以某一特定对象的JSON字符串形式发送给服务器
(3) 服务器会将业务受理结果以某一特定对象的JSON字符串形式响应给客户端,同时会附带本次业务处理的状态(成功与否),客户端首先将相应结果简单封装交由上级调用者处理。
2. 服务端
(1) 服务端收到来自客户端的请求后,将请求解析成指定的对象,处理完成后将包含处理状态和处理结果的数据响应给客户端
数据库操作(DAO层)
由于本项目将业务逻辑全部放在web服务器端,数据库这边的操作几乎都是增删改查,可以说的点不多,纯粹是体力活。
项目系统说明请移步项目主页