- 整体架构:系统实现了基本的工资管理功能,按照题目要求,包括登录、显示工资信息、查询、录入、修改、删除工资记录和修改密码等。前后端基本分离,界面基于 Swing 实现。
- 异常处理与数据校验:设计了多个自定义异常(如时间不合法、工资津贴不合法、信息不完整、信息冲突等),对部分数据输入进行了校验。
- 数据持久化:采用文本文件保存员工信息和工资记录,数据读写基本实现。
- 界面:整个系统使用了多个窗体(登录、主界面、工资录入编辑、密码修改),界面布局合理,操作逻辑清晰。
前端主要负责用户交互和界面展示,使用 Java Swing 实现。主要模块包括:
-
登录界面(LoginFrame 类)
- 位于 SalaryManager.java 中。
- 组件:用户名、密码输入框、登录和退出按钮。
- 功能:调用后台验证账号密码,验证成功后关闭登录窗体并打开主界面。
-
主界面(MainFrame 类)
- 在 SalaryManager.java 文件中均有实现。
- 组件:菜单栏、查询条件输入控件(如员工号、起止时间)、查询按钮以及用于显示工资记录的 JTable。
- 功能:根据用户输入条件检索并展示所有或部分工资记录,同时提供入口进入工资编辑和修改密码界面。
-
工资编辑界面(SalaryEditFrame 类)
- 负责录入、修改、删除工资记录,并通过表格展示更新后的数据。
- 组件:文本框用于输入年月、员工号、员工姓名、基本工资、津贴,及相对应的操作按钮。
- 功能:通过按钮触发数据的添加、更新或删除,并在表格中实时刷新显示结果。
-
修改密码界面(ModifyPwdFrame 类)
- 组件:旧密码、新密码、确认新密码的输入框和确定、取消按钮。
- 功能:实现密码修改操作,更新存储在文本文件中的密码。
后端主要处理业务逻辑、数据校验以及持久化操作。主要模块包括:
-
数据模型类
- Staff 类:保存员工基本信息(员工号、姓名、基本工资);构造时会校验工资是否为负,并将成功创建的员工对象添加到全局映射中。
- 相关文件:SalaryManager.java
- SalaryRecord 类:封装工资记录信息,包括记录的年月、对应的员工对象、津贴数据;包含对日期和津贴数据的合法性检测,并提供多种构造方式。
- Staff 类:保存员工基本信息(员工号、姓名、基本工资);构造时会校验工资是否为负,并将成功创建的员工对象添加到全局映射中。
-
异常类
- 分别定义了:RecordTimeInvalidException、SalaryInvalidException、InsufficientInformationException、NoTargetHitException、StaffInformationConflictException。
- 这些异常用于在业务逻辑中对输入数据进行严格校验,一旦出现错误即时反馈。
-
数据持久化与数据管理(SalaryManager 类)
- 数据存储:使用静态 Map 和 LinkedList 分别保存员工对象和id/姓名的映射,以及存储工资记录。
- 文件读写:通过读取和写入两个文本文件(SalaryRecords.txt 和 StaffList.txt)实现数据的持久化。
- 记录管理:实现了工资记录的插入(按时间排序插入)、删除和修改操作。例如,deleteRecord 方法根据年月和员工号删除指定记录。