目录
一、团队成员及任务
队长:姚文鑫 计科(智能)22-1 202203200032
负责模块:用户界面设计、计时功能
组员:张进 计科(智能)22-1 202203200002
负责模块:开始与暂停功能、复位功能
二、项目简介
功能描述:基于javafx设计了会议计时器,计时器具有良好的用户交互界面,程序具备鲁棒性以及良好的移植性,主要包含开始、暂停、复位等基本功能。本文由团队合作开发。
三、功能架构图
四、任务与功能
序号 | 完成功能与任务 | 描述 |
1 | 用户界面设计 | 基于javafx框架,使用xfml、css实现良好的用户交互界面 |
2 | 计时功能 | 使用javafx多线程,使用Service进行及时任务,使用监听器对信号量进行监听,实现计时功能。 |
3 | 开始与暂停功能 | 使用鼠标点击函数,绑定相应按钮,对Service进行管理,以及初始化和标志位状态变化。 |
4 | 复位功能 | 使用自定义的clean、finish函数清理线程,以及进行初始化。 |
五、功能讲解
1. *面向对象设计
本程序基于javafx框架,终点实现了三个对象类
TimerApplication
StartController
MyTask
TimerApplication类主要负责对窗口程序进行管理,主要成员如下:
public class TimerApplication extends Application
public static void main(String[] args)
StartController类主要负责对功能按钮、显示面板的实现。主要成员如下:
private final MyTask myTask
private Label Timertext
private Label Isrunning
private TextField TimeHtext
private TextField TimeMtext
private TextField TimeStext;
private Button startButton;
private Button ZeroButton;
protected void onStartButtonClick() throws InterruptedException
protected void onZeroButtonClick() throws InterruptedException
MyTask类继承Service<Void>模板类,主要负责计时功能的多线程实现。主要成员如下:
private int starttime
public void setStartNumber(int starttime)
protected Task<Void> createTask()
2.*计时功能:
计时功能主要通过重写javafx的多线程模板类Service<Void>实现,重载protected Task<Void> createTask() 函数,每隔一秒向窗体发送一次message,同时,主窗体添加message监听器,当监听到message发生变化时,将其转化为相应的数据格式,在前端进行显示。
3. *良好的鲁棒性
程序具有良好的鲁棒性,包括修正用户数据格式、格式错误提醒、析构函数、计时完毕提醒等、经过测试未发现严重错误漏洞。
4. 开始、暂停、继续与复位功能设计
开始功能主要通过鼠标点击函数,对用户输入数值进行整理、异常检测、格式转化,然后设置及时线程starttime,并开始线程,同时显示复位按钮,及时完成时执行finish函数
暂停功能实现主要通过,保存当前计时线程状态,取消Task,当用户点击继续按钮时,回复Task状态,继续计时任务。
复位功能的实现主要通过,Service的cancel与restart函数以及自定义的clean、finish函数实现。
5.界面设计
界面的设计基于javafx框架,使用xfml、css实现良好的用户交互界面。
五、课程设计感想
本程序设计难点主要在于多线程的结构设计,javafx框架为了数据安全性,原生的Thread线程无法与前端数据进行交互,需要重写Service<void>模板类。以及设计完整的线程取消,保存线程状态、线程恢复。
六、展望
本文在完成基本功能的基础上还有一些不足之处,例如用户交互界面尚且不够美观,线程本身的数据处理可能造成的计时存在毫秒级偏差。可以减少代码复杂性,减少保存线程状态所消耗的时间进一步对准确性进行优化。