Card类记录IC卡信息,具体情况如表4-6所示。
Card类功能表
class="table-box">
类功能描述
处理IC卡相关业务
所在包名称
DAL
继承对象
无
实现对象
类属性
保护属性
类型
名称
描述
备注
Public
String
Card_id
记录编号
长度限制20位
主要实现方法
保护属性
方法名
输入参数
输出参数
方法功能描述
Public
Update
string Card_id
int
进入IC卡信息中,点击编辑,可修改IC卡信息
public
Delete
string Card_id
Void
进入IC卡信息中,点击删除,可删除IC卡信息
Seat类记录车位信息,具体情况如表4-7所示。
Seat类功能表
class="table-box"> 类功能描述
处理车位信息相关业务
所在包名称
DAL
继承对象
无
实现对象
类属性
保护属性
类型
名称
描述
备注
Public
String
Seat_id
记录编号
长度限制20位
主要实现方法
保护属性
方法名
输入参数
输出参数
方法功能描述
Public
Update
string Seat_id,string Seat_name
int
进入车位信息中,点击编辑,可修改车位信息
public
Delete
string Seat_id
Void
进入车位哦信息中,点击删除,可删除车位信息
关键业务设计
系统登录
管理员通过 UI 界面输入用户名,密码,调用 USER 类 LOGIN 方法,在 LOGIN 方法中调用 DATABASE 的checklogin方法,最后返回成功。
数据库设计
数据需求分析
系统E-R图表明了实体与实体之间的关系,根据系统的功能需求,系统有用户、IC卡、临时车主、固定车主、车位、收费信息六个实体。一个固定车主拥有一张IC卡和一个车位,一个临时车主拥有一个车位和临时IC卡。固定车主和临时车主产生收费信息。实体关系属性图如图4.3所示 [11]
图4.3停车场管理系统E-R图
数据库的实现
根据系统需求确定系统有如下7张表。
用户表:储存用户信息。
角色表:储存角色信息。
车位管理表:管理车位信息以及车位状态。
IC卡管理表:管理IC卡信息。
临时车辆记录表:记录临时车辆的信息。
固定车主表:记录固定车主信息及出入场信息。
收费表:记录用户们的收费信息。
用户表用于记录用户的编号、姓名、电话等属性信息,如表4-8所示。
表4-8用户表
class="table-box"> 序号
列名
数据类型
长度
小数位
标识
主键
允许空
外键
说明
1
user_id
Varchar2
50
0
是
是
否
2
role_id
Varchar2
50
0
否
是
3
user_name
Varchar2
50
0
否
4
real_name
Varchar2
50
0
否
5
user_pwd
Varchar2
20
0
否
6
user_phone
Varchar2
50
0
是
角色表储存角色的编号、名字等信息,如表4-9所示。
表4-9角色表
class="table-box"> 序号
列名
数据类型
长度
小数位
标识
主键
允许空
外键
说明
1
role_id
Varchar2
50
0
是
是
否
2
role_name
Varchar2
50
0
否
车位管理表记录车位的编号、ID、状态等属性信息,如表4-10所示。
表4-10车位管理表
class="table-box"> 序号
列名
数据类型
长度
小数位
标识
主键
允许空
外键
说明
1
seat_id
Varchar2
50
0
是
是
否
2
seat_num
Varchar2
50
0
否
3
seat_setion
Varchar2
50
0
否
4
seat_state
int
11
0
否
5
seat_tag
Varchar2
50
0
是
IC卡表记录IC卡的ID、车位ID、姓名、车牌号等属性信息,如表4-11所示。
表4-11 IC卡表
class="table-box"> 序号
列名
数据类型
长度
小数位
标识
主键
允许空
外键
说明
1
card_id
varchar2
50
0
是
是
否
2
seat_id
Varchar2
50
0
否
是
3
user_name
Varchar2
50
0
否
4
user_gender
Varchar2
1
0
否
5
user_addr
Varchar2
50
0
否
6
car_num
Varchar2
50
0
否
临时车辆记录表,用于记录临时车主的编号、车牌号、出入场时间等属性信息,用户如表4-12所示。
表4-12临时车辆表
class="table-box"> 序号
列名
数据类型
长度
小数位
标识
主键
允许空
外键
说明
1
temp_id
Varchar2
50
0
是
是
否
2
card_id
Varchar2
50
0
否
3
car_num
Varchar2
50
0
否
4
entry_date
date
0
0
否
5
entery_time
time
0
0
否
6
out_date
date
0
0
是
7
out_time
time
0
0
是
8
temp_money
float
0
4
是
固定车主表用于记录固定固定车主的编号、IC卡编号、出入场时间等属性信息,如表4-13所示。
表4-13固定车主表
class="table-box"> 序号
列名
数据类型
长度
小数位
标识
主键
允许空
外键
说明
1
fixed_id
Varchar2
50
0
是
是
否
2
card_id
Varchar2
50
0
否
是
3
entry_date
date
0
0
否
4
entery_time
time
0
0
否
5
out_date
date
0
0
是
6
out_time
time
0
0
是
收费表用于记录收费的编号、车主姓名、车牌号、收费金额等属性信息,如表4-14所示。
表4-14收费表
class="table-box"> 序号
列名
数据类型
长度
小数位
标识
主键
允许空
外键
说明
1
role_id
Varchar2
25
0
是
是
否
2
role_name
Varchar2
255
0
是
3
role_type
Varchar2
255
0
是
4
car_num
Varchar2
25
0
是
5
car_money
Varchar2
255
0
是
6
car_time
Varchar2
255
0
是
>
5. 系统详细设计与实现
登录模块界面如图5.1所示:
图5.1 用户登录
代码流程如图5.2。
图5.2 用户登录
功能描述:登陆页面需要用户名、密码进行登录。登录的同时对输入的用户名和密码进行验证,首先我们要保证用户名和密码不能为空。其次是对数据库的验证,系统在数据库中搜索用户输入的用户名是否存在,若不存在,则提示出错。并且重新登录,系统不允许两个用户同时登录,该操作在一定程度上使系统的安全性有所提高。
登录主要代码位置:TestPark/src/DAL/login.java。主要封装了对登录数据的操,该类中有三个方法分别用于检查用户登录信息是否合法,根据用户编号和角色编号获取用户名和角色信息。
publicclass Login {
publicboolean checkLogin(String user_id,String user_pwd)
{
String sqlCmd= "select count(*) from user where user_id=? and user_pwd=?" ;
Object[] objList= new Object[2];
objList[0]=user_id;
objList[1]=user_pwd;
String result=SQLUtil. excuteScalar (sqlCmd,objList).toString(); if(result.equals( "1" ))
{
returntrue;
}
else {
returnfalse;
}
}
public String getName(String user_id)
{
String sqlCmd= "select user_name from user where user_id='" +user_id+ "'" ;
String result=SQLUtil. excuteScalar (sqlCmd, null).toString();
return result;
}
public String getSysLevel(String user_id)
{
String sqlCmd= "select role_id from user where user_id='" +user_id+ "'" ;
String result=SQLUtil. excuteScalar (sqlCmd, null).toString();
return result;
}
}
5.2 系统信息管理
添加角色信息如图5.3所示:
图5.3 添加角色信息
管理角色如图5.4所示:
图5.4 管理角色信息
添加用户信息界面如图5.5所示:
图5.5 添加用户信息
管理用户信息界面如图5.6所示:
图5.6 管理用户信息
功能描述:该模块是对系统信息的一个管理,添加角色输入编号和名称,后台数据库进行验证,若角色没有存在则添加数据成功,跳转到管理界面。管理角色信息可以根据用户的编号,角色名称进行查询操作、编辑、和删除操作。添加用户信息输入用户编号、名称、昵称、姓名、密码电话点击确定进行后台数据库的验证,若成功添加则跳转到管理界面。管理用户界面可根据用户编号、角色名称、用户名称、真实姓名进行查询、编辑和删除操作。
系统信息模块流程图如图5.7所示:
图5.7 停车场管理系统信息流程图
5.3 车位信息管理
添加停车位信息如图5.8所示:
图5.8
添加车位
管理车位信息如图5.9所示:
图5.9 管理车位信息页面
功能描述:该模块是对车位的一个管理。点击添加车位信息,输入编号选择是A区还是B区,添加成功则会跳转到管理界面。管理界面可根据车位ID、车位编号、所属区域、车位备注进行查询,还可对车位信息进行编辑和删除。
对车位数据的操作封装在:seat.java类中。该类中主要封装了分页和对车位信息的增、删、改、查等方法。首先获取车位信息列表,然后获取未分配的车位列表,根据查询条件获取获取分页后的信息列表,数据的更新、插入、删除,获取分页总数,根据查询条件获取分页总数。
publicclass Seat {
public List getEntity()
{
String sqlCmd= "select *from Seat" ;
return DBUtil.SQLUtil. executeQuery (sqlCmd, null);
}
public List getNoUseSeat()
{
String sqlCmd= "SELECT *FROM Seat WHERE seat_id NOT IN(SELECT seat_id FROM card)" ;
return DBUtil.SQLUtil. executeQuery (sqlCmd, null);
}
public List getEntity( int page)
{
int size=(page-1)*15;
String sqlCmd= "select *from Seat limit " +size+ ",15" ;
return DBUtil.SQLUtil. executeQuery (sqlCmd, null);
}
public List getEntityByWhere(String sqlWhere, int page)
{
int size=(page-1)*15;
String sqlCmd= "select *from Seat where " +sqlWhere+ " limit " + size+ ",15" ;
return DBUtil.SQLUtil. executeQuery (sqlCmd, null);
}
publicint deleteEntity(String seat_id)
{
String sqlCmd= "delete from Seat where seat_id='" +seat_id+ "'" ;
return DBUtil.SQLUtil. executeNonQuery (sqlCmd, null);
}
public List getEntityById(String seat_id)
{
String sqlCmd= "select *From Seat where seat_id='" +seat_id+ "'" ;
return DBUtil.SQLUtil. executeQuery (sqlCmd, null);
}
publicint updateEntity(String seat_id,String seat_num,String seat_section,String seat_state,String seat_tag)
{
String sqlCmd= "Update Seat set seat_num='" + seat_num + "',seat_section='" + seat_section + "',seat_state='" + seat_state + "',seat_tag='" + seat_tag + "' where seat_id='" +seat_id+ "'" ;
return SQLUtil. executeNonQuery (sqlCmd, null);
}
publicint insertEntity(String seat_id,String seat_num,String seat_section,String seat_state,String seat_tag)
{
String sqlCmd= "Insert into Seat values('" + seat_id + "','" + seat_num + "','" + seat_section + "','" + seat_state + "','" +seat_tag+ "')" ;
return SQLUtil. executeNonQuery (sqlCmd, null);
}
publicboolean checkExist(String seat_id)
{
String sqlCmd= "select count(*) from Seat where seat_id='" +seat_id+ "'" ;
if(1==Integer. parseInt (SQLUtil. excuteScalar (sqlCmd, null).toString()) )
{
returntrue;
}
returnfalse;
}
public Object getPageCount()
{
String sqlCmd= "SELECT CEIL( COUNT(*)/15.0) FROM Seat " ;
return SQLUtil. excuteScalar (sqlCmd, null);
}
public Object getPageCountByWhere(String sqlWhere)
{
String sqlCmd= "SELECT CEIL( COUNT(*)/15.0) FROM Seat where " +sqlWhere;
return SQLUtil. excuteScalar (sqlCmd, null);
}
}
车位信息流程图如图5.10所示:
图5.10 车位信息流程图
5.4 IC卡管理
添加IC卡界面如图5.11所示:
图5.11 添加IC卡界面
管理IC卡信息界面如图5.12所示:
图5.12 管理IC卡界面
功能描述:该功能模块是对IC卡信息的管理,点击添加IC卡输入如图5.11所示的信息,添加成功后,跳转到图5.12的界面。管理界面可根据IC卡编号、车位编号、用户名称、车牌号码进行查询。也可进行相应的编辑和删除操作。
IC卡管理模块流程图如图5.13所示:
图5.13 IC卡管理流程图
5.5 临时车主管理
临时车主入场信息界面如图5.14所示:
图5.14临时车主入场页面
车主出场信息界面如图5.15所示:
图5.15临时车主出场页面
结算页面如图5.16所示
图5.16 结算页面
功能描述:该模块是对临时车主出入场的管理。点击入场管理,出现如图5.14所示的界面,输入信息,如果输入成功就会跳转到如图5.15的界面,出场日期,日期显示未出场,停车费用显示待结算。点击结算出现如图5.16界面。
临时车主流程图如图5.17所示:
图5.17临时车主流程图
5.6 固定车主管理
固定车主出入场设置界面如图5.18所示:
图5.18 固定车主出入场设置界面
停车信息管理界面如图5.19所示:
图5.19管理停车场信息界面
功能描述:该模块是对固定车主的出入场设置以及停车信息进行管理。如图5.18所示,对车主进行入场设置,点击确定后就会在下面的表格中显示,点击停车信息管理按钮,就会出现如图5.19所示。设置出场,出场时间就会出现在停车信息表中。
固定车主流程图如图5.20所示:
5.6 收费管理
管理收费信息如图5.21所示:
图5.21管理收费信息
功能描述:临时用户是一小时3元收费,固定用户是按次数收费。
5.7 打印管理
查看打印信息如图5.22所示:
图5.22打印信息
功能描述:该模块可以将用户的消费情况进行打印,公开,透明清楚。
5.8系统功能操作
密码修改、退出系统界面如图5.23所示:
5.23 系统功能操作界面
功能描述:该模块是对系统功能的一个操作,可进行修改密码。点击退出系统则会跳转到如图5.1的登录界面。
id="blogExtensionBox" style="width:400px;margin:auto;margin-top:12px" class="blog-extension-box"> class="blog_extension blog_extension_type2" id="blog_extension">
class="extension_official" data-report-click="{"spm":"1001.2101.3001.6471"}">
class="blog_extension_card_cont">
详细资料请联系我
class="blog_extension_card_cont_r">
微信名片
评论记录:
回复评论: