一、概述
项目背景
车辆越来越多的今天,停车场只靠人工管理显然难度已经是提高很多,所以应该开发出便于管理记录的停车场管理系统来帮助对停车场进行管理。
软件定义
一款帮助停车场管理员对车辆进出进行管理的软件。
开发环境
- Window10 系统
- Eclipse Java 开发工具
- Oracle 数据库
二、需求分析
题目要求
问题陈述
要求能够进行如下工作:
- 车位基本信息维护(车位增加修改、收费标准变动等)
- 交班报表功能(当班收费员收款总额)
- 当前车位状况查询(车位状况分为:停用,占用和空闲)
- 用户分级管理,人机界面良好
功能描述
该软件能对车辆进出进行管理,能计算停车时间并给管理员报出停车费用;能将流水显示给管理员;管理员能增加停车场会员、增减停车场车位;有一个客户面板给客户显示当前停车场的信息,如停车空位数。管理员分普通管理员和超级管理员,超级管理员能对普通管理员进行增删或者是修改管理员的权限将其改为超级管理员或者普通管理员。
总体设计
系统数据流图
图 1 系统数据流图
数据库 E-R 图
图 2 数据库 E-R 图
三、数据库设计
数据库表
车位信息表 t_parking
字段名 | 数据类型 | 含义说明 | 空值情况 |
---|---|---|---|
id | varchar2(5) | 车位编号 | 主键 |
state | varchar2(10) | 车位状态 | 不为空 |
type | varchar2(10) | 车位类型 | 不为空 |
t_price | number(6,2) | 临时单价(/h) | 不为空 |
m_price | number(6,2) | 会员单价(/m) | 不为空 |
管理员表 t_manager
字段名 | 数据类型 | 含义说明 | 空值情况 |
---|---|---|---|
id | varchar2(10) | 工号 | 主键 |
pwd | varchar2(20) | 密码 | 不为空 |
name | varchar2(20) | 姓名 | 不为空 |
power | number(1) | 权限 | 不为空 |
会员表 t_Member
字段名 | 数据类型 | 含义说明 | 空值情况 |
---|---|---|---|
id | varchar2(5) | 车位编号 | 外键 |
p_num | varchar2(15) | 车牌号 | 不为空 |
name | varchar2(20) | 姓名 | 不为空 |
tel | varchar2(15) | 电话 | 不为空 |
会员收费表 t_MemberFee
字段名 | 数据类型 | 含义说明 | 空值情况 |
---|---|---|---|
s_num | varchar2(20) | 流水号 | 主键 |
id | varchar2(5) | 车位编号 | 外键 |
p_num | varchar2(15) | 车牌号 | 不为空 |
eff_date | date | 生效期 | 不为空 |
ex_date | date | 有效期 | 不为空 |
fee | number(6,2) | 收费 | 不为空 |
m_id | varchar2(10) | 收费员工工号 | 外键 |
临时用户收费表 t_TempFee
字段名 | 数据类型 | 含义说明 | 空值情况 |
---|---|---|---|
s_num | varchar2(20) | 流水号 | 主键 |
id | varchar2(5) | 车位编号 | 外键 |
p_num | varchar2(15) | 车牌号 | 不为空 |
en_time | date | 进入时间 | 不为空 |
ex_time | date | 退出时间 | 可为空 |
fee | number(6,2) | 收费 | 可为空 |
m_id | varchar2(10) | 收费员工工号 | 外键 |
停车场日常信息表 t_infor_parking
字段名 | 数据类型 | 含义说明 | 空值情况 |
---|---|---|---|
today | date | 日期 | 主键 |
en_num | number(5) | 进入数 | 不为空 |
ex_num | number(5) | 离开数 | 不为空 |
fee | number(8,2) | 收费总额 | 不为空 |
m_id | varchar2(10) | 收费员工工号 | 外键 |
其中 t_Member 的 id 是依赖于 t_parking 的 id,t_MemberFee 的 m_id 是依赖于 t_manager 的 id,t_MemberFee 的 id 是依赖于 t_parking 的 id,t_TempFee 的 id 依赖于 t_parking 的 id,TempFee 的 m_id 是依赖于 t_manager 的 id,t_infor_parking 的 m_id 是依赖于 t_manager 的 id。
四、软件功能设计
程序设计
程序工程文件结构
图三 工程文件结构
详细设计
dao 文件
dao 文件定义了各个功能函数的接口,子目录 imp 文件中的类是对各个接口的实现,各个类定义了各个实体的相应操作,比如 ManagerDao.Java 就定义了对管理员的增减,权限修改,权限查询,信息查询等函数。
/**
* @Description:校验登录信息并返回登录人员是否能登录以及其权限
* @param tf
* @param pf
* @return HashMap<String,Object>
*/
public HashMap<String, Object> check(String tf, String pf);
/**
* @Description 判断权限
* @param tf
* @return int
*/
public int judgeP(String tf);
/**
* @Description 增加员工
* @param manager
* @return boolean
*/
public boolean add(Manager manager);
/**
* @Description 删除员工
* @param id
* @return boolean
*/
public boolean delManager(String id);
/**
* @Description 查询员工
* @param id
* @return String
*/
public String findManager(String id);
/**
* @Description 改变权限
* @param id
* @return boolean
*/
public boolean upMP(String id,int power);
}
data 文件
data 文件包含一个 ConnOra.java,该类用于连接数据库,Java 连接 Oracle 数据库的基本模式为:
public static Connection connOracle() {
Connection con = null;// 创建一个数据库连接
try {
Class.forName("oracle.jdbc.driver.OracleDriver");// 加载Oracle驱动程序
System.out.println("开始尝试连接数据库!");
String url = "jdbc:oracle:" + "thin:@127.0.0.1:1521:orcl";// 127.0.0.1是本机地址,XE是精简版Oracle的默认数据库名
String user = "C##U_32";// 用户名
String password = "zww0902150232";// 设置的密码
con = DriverManager.getConnection(url, user, password);// 获取连接
System.out.println("连接成功!");
} catch (Exception e) {
System.out.println("未连接");
printStackTrace();
}
return con;
}
table 文件
该文件包含了各个实体类。停车场日常信息 InforParking.Java、管理员 Manager.java、会员 Membe.java、会员收费 MemberFee.java、车位 Parking.java、临时收费 TemporaryFee.java。
ui 文件
此文件包含了对各个 ui 界面的设计以及事件的监听和触发,DataChooser.java 是时间选择界面,InforPanel.java 是客户面板,Login.java 是登录界面,ManagerUI.java 是系统主界面。
程序功能图
图四 程序功能图
五、界面设计
登录界面
输入输出时
图六 错误提示
程序主界面
- 普通管理员和超级管理员界面略有不同,超级管理员多了对管理员管理的菜单选项。
图七 普通管理员主界面
图八 超级管理员主界面
- 车辆进入成功后弹出提示窗口,车辆离开时,弹出收费窗口
图九 车辆进入
图十 车辆离开
- 增加会员,填写会员信息,点击时间会弹出时间选择界面
图十一 添加会员
- 车位增减
图十二 增减车位
- 查看流水
图十三 查看流水
- 用户面板
图十四 用户面板
- 管理员工
图十五 管理员工
- 更改员工权限
图十六 权限更改
六、总结
收获
通过这次的系统设计,我在很多方面都有所提高。综合运用所学知识的理论知识实际训练从而培养和提高了我独立工作的能力,巩固所学的知识,掌握系统程序的编排和运行,使自己的独立思考能力有了显著提高。从本次课程设计更加了解一个数据库系统的设计过程,也加强自己的程序设计能力。数据库的系统的设计过程必须严谨,一个细小的差错都会导致数据的错误,这就要求关系数据库的关系要设计合理,不让表太多,数据不要太过冗杂,导致数据库复杂程度增加。本次课设也将生活中的问题用平时所学的知识来解决,提现了经世致用的理念。总之收获非常大。
程序代码详情见源程序文件。
不足
本次课设虽然完成,但却不完美,还有很多地方应该改进,比如一开始数据库的设计不合理,导致后面又回头对数据库进行更改,这让很多工作都白做甚至还要重做,界面的美化也做得不好,UI 是用户体验很重要的一部分,但自己没有重视这一点,只是在意功能部分,弱化了界面的美化。而且功能部分也还有需要增加和改进的部分,比如能够一键导出流水表,这让管理员更加方便了。