# CRMS_DEV **Repository Path**: uncleyumo/crms_-dev ## Basic Information - **Project Name**: CRMS_DEV - **Description**: Java的大作业,基于Java FX的计算机机房管理系统 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2024-05-24 - **Last Updated**: 2024-12-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 基于JavaFX的计算机机房管理系统(CRMS -- DEV) > @author uncle_yumo > > @dev-platform IDEA、Scene Builder > > @sql MySQL8.0(位于阿里云ESC) > > @JDK-V 甲骨文JDK21 > > @gitee-home [本项目Gitee仓库](git@gitee.com:uncle-yumo/crms_-dev.git) #### 一、引言 ​ 随着高等教育的迅速发展,计算机机房作为教学与实践的重要场所,其管理效率直接影响着教育资源的有效利用。本报告旨在提出一套基于B/S(Browser/Server)模式的计算机机房管理系统设计方案,采用JavaFX作为前端开发框架,MySQL作为后端数据库,实现用户管理、设备管理、收费管理及统计分析等功能,以提升机房管理的自动化水平和效率。 - 教育部公开发布的《高等教育信息化发展状况报告》 - 相关学术期刊发表的关于教育技术管理的研究论文 - 高校IT管理部门提供的历史运营数据 - 公开的数据库设计最佳实践和案例研究 #### 二、系统总体设计与需求分析 ##### 2.1 系统总体结构 1. **登录验证模块**:负责用户身份验证、权限控制及各功能模块的导航。 2. **设备租借模块**:实现用户数据、设备信息、收费记录的增删改查操作。(管理员权限) 3. **统计报表模块**:提供各类统计分析图表,支持导出功能。(管理员权限) 4. **用户管理模块**:提供对于root与user用户的增删改查功能。(管理员权限) 5. **设备管理模块**:提供对于设备(ID、类型、状态、位置)的增删改查功能。(管理员权限) ##### 2.2 需求分析 \- **用户管理**:管理员需能添加、修改用户信息,用户能修改个人密码。 \- **设备管理**:跟踪设备状态(使用中、维修中、报废等),管理设备领用和归还。 \- **收费管理**:自动记录上机时间,计算费用,支持在线支付。 \- **统计功能**:统计设备使用频率、报废率、领用情况及收入情况。 #### 三、概念设计与逻辑设计 ##### 3.1 概念设计 \- 用户(User):包含用户ID、姓名、密码、角色(管理员/普通用户)等属性。 \- 设备(Device):记录设备ID、设备类型、状态(使用中/闲置/维修/报废)、位置等信息。 \- 收费(Charge):记录用户ID、设备ID、上机开始时间、结束时间、费用等。 ##### 3.2 逻辑设计(符合3NF) 1. **用户表(UserTable)**, - `UserID(PK)`, `UserName`, `Password`, `Role` 2. **设备表(DeviceTable)** - `DeviceID(PK)`, `DeviceType`, `Status`, `Location` 3. **收费记录表(ChargeRecordTable)** - `RecordID(PK)`, `UserID(FK)`, `DeviceID(FK)`, `StartTime`, `EndTime`, `Amount` #### 三、物理设计 - **索引设置**:为`UserID`、`DeviceID`设置唯一索引,加快查询速度。 - **完整性约束**:实施外键约束,保证数据间引用的合法性。 - **表间关系**:User与ChargeRecord通过`UserID`关联,Device与ChargeRecord通过`RecordID`关联 #### 四、数据库安全设计 - 使用预编译SQL语句防止SQL注入。 - 实施角色权限控制,限制非管理员访问敏感数据。 - 定期备份数据库,确保数据安全。 #### 五、客户端数据库应用程序开发 - **前端**:JavaFX用于界面设计,实现用户交互逻辑。 - **后端**:使用Java编写业务逻辑,通过JDBC连接MySQL数据库。 #### 六、其他 - 连接MySQL的驱动jar包没附录,可以找最新8.0的[java-mysql-connector](https://blog.csdn.net/cMengZ/article/details/105605770) - 本文档给出的数据库表命名与项目源代码的命名不同(实际全小写)。 - 项目实际使用的数据库单例对象为`MySQL_ConnUtils.java`而不是`MySQL_Connection.java`,这个类可以直接删掉,之前测试用的。 - 项目中用于转换时间格式和提取时间数据的工具类一起写在了`StrUtils.java`里,写的依托答辩,建议自己重写!!! - 待补充......