软件架构主要用于指导系统开发设计,是构建软件系统的基础,软件架构实现了对系统的结构分层,将系统模块化开发,便于系统开发和管理,降低系统开发成本,便于后期维护。
下图是运动会管理系统的项目包结构,系统的后台代码主要放置在src文件夹中,各个文件夹的相关说明请看表5-1项目结构说明表。
图5-1项目包结构
表5-1项目结构说明表
包名(结构层次) |
说明 |
business.basic |
数据连接、访问,管理数据库连接类和访问基类 |
business.dao |
业务逻辑设计层,管理业务逻辑设计接口 |
business.impl |
业务逻辑实现层,管理业务逻辑设计的实现类 |
business.factory |
业务逻辑的工厂层,管理业务逻辑的组装工厂类 |
controller.service |
业务逻辑控制层,管理用于与页面进行交互的控制类 |
model |
实体层,管理表实体类和视图实体类 |
servlet.filter |
网站过滤器包,管理网站过滤器类 |
util |
工具类包,管理系统中的工具类 |
servlet.common |
公共类包,管理公共类 |
系统业务接口是对系统业务逻辑进行方法定义的接口,接口根据实际业务逻辑需要来进行方法的定义,实现类则是对接口的方法进行重写和具体实现[[1]]。
表5-2接口设计与说明
接口名称 |
接口说明 |
需要实现的方法 |
方法说明 |
AdminRoleDAO |
管理员用户角色业务接口 |
getaAdminRoleList() |
分页获取用户角色列表 |
delAdminRole() |
删除用户角色 |
||
addAdminRole() |
添加用户角色 |
||
edlAdminRole() |
编辑用户角色 |
||
AdminUserDAO |
管理员用户业务接口 |
add() |
添加管理员用户 |
udpate() |
编辑管理员用户 |
||
delete() |
删除管理员用户 |
||
adminlogin() |
管理员用户的登录 |
||
selbypage() |
分页获取管理员信息 |
||
selbyid() |
根据账号获取管理员用户 |
||
NewsDAO |
公告业务处理接口 |
addnews() |
添加公告 |
getAllNewsNoContent() |
获取所有公告 |
||
deleteNewsById() |
根据主键删除公告 |
||
RoleSysModelDAO |
角色权限业务接口 |
addRoleModel() |
添加角色权限 |
updataRoleModel() |
更新角色权限 |
||
SignUpDAO |
比赛报名业务接口 |
insert() |
添加单个比赛报名 |
insertList() |
批量添加比赛报名 |
||
update() |
编辑比赛报名 |
||
delete() |
删除比赛报名 |
||
SportInfoDAO |
运动会信息配置业务接口 |
insert() |
添加运动会 |
update() |
编辑运动会 |
||
delete() |
删除运动会 |
||
getSportList() |
分页获取运动会信息 |
||
getSportCount() |
根据查询条件获取运动会数量 |
||
UserDAO |
普通用户业务接口 |
insert() |
添加用户 |
update() |
编辑用户 |
||
delete() |
删除用户 |
系统业务接口实现类如下表所示,表中各接口实现的方法只举例部分。
表5-3业务接口实现类
接口实现类名称 |
接口实现类说明 |
实现的方法 |
方法说明 |
AdminRoleDAOImpl |
管理员用户角色业务接口实现类 |
delAdminRole() |
删除用户角色 |
addAdminRole() |
添加用户角色 |
||
edlAdminRole() |
编辑用户角色 |
||
AdminUserDAOImpl |
管理员用户业务接口实现类 |
add() |
添加管理员用户 |
udpate() |
编辑管理员用户 |
||
delete() |
删除管理员用户 |
||
adminlogin() |
管理员用户的登录 |
||
selbypage() |
分页获取管理员信息 |
||
selbyid() |
根据账号获取管理员用户 |
||
NewsDAOImpl |
公告业务接口实现类 |
addnews() |
添加公告 |
getAllNewsNoContent() |
获取所有公告 |
||
deleteNewsById() |
根据主键删除公告 |
系统开发使用了SpringMVC框架,通过定义控制类请求接口,前台使用Ajax请求接口并传递参数,后台控制类接收并处理。
下面列举UserController(用户处理控制类)控制类
表5-4网页控制请求接口设计
类名 |
说明 |
需要传入的参数 |
URL请求 |
getUserList |
按查询条件分页获取用户 |
Operation,page,limit |
user/getuser |
addUser |
添加用户信息 |
usrid,username,pwd,claid,usertype |
user/adduser |
delUser |
删除用户信息 |
userid |
user/deluser |
表5-5请求接口数据格式设计
方法及说明 |
参数 |
返回值 |
案例 |
Adminlogin (管理员用户登录) |
userid 账号 pwd 密码 |
成功: 返回 {code:0,msg:登录成功} 失败:返回 {code:1,msg:登录失败} 失败原因:账号或密码不正确 |
http://localhost:8080/GMS/admin/adminlogin |
addadminuser (添加管理员用户) |
usesrid 账号 realname 真实姓名 pwd 密码 mobile 联系方式 roleid 角色编号 |
成功: 返回 {code:0,msg:添加成功} 失败:返回 {code:1,msg:添加失败}
|
http://localhost:8080/GMS/admin/addadminuser |
logoutsystem (管理员用户退出系统) |
|
成功: 返回 {code:0,msg:退出成功} 失败:返回 {code:1,msg:退出失败} |
http://localhost:8080/GMS/admin/logoutsystem |
deladminuser (删除管理员用户) |
userid 账号 |
成功: 返回 {code:0,msg:删除成功} 失败:返回 {code:1,msg:删除失败} |
http://localhost:8080/GMS/admin/deladminuser |
图5-2系统数据库结构设计图
Userid为用户账号,并作为主键约束。
表5-6前端网站用户表
序号 |
字段名 |
数据类型 |
主键 |
非空 |
描述 |
1 |
userid |
VARCHAR(50) |
是 |
是 |
账号 |
2 |
username |
VARCHAR(50) |
否 |
是 |
用户名 |
3 |
pwd |
VARCHAR(50) |
否 |
否 |
密码 |
4 |
alreadynum |
Int |
否 |
否 |
已报名项目数 |
5 |
sex |
VARCHAR(2) |
否 |
否 |
性别 |
6 |
roleid |
int |
否 |
否 |
角色id |
7 |
userregion |
int |
否 |
否 |
班级id/学院id |
roleid为主键约束
表5-7角色表
序号 |
字段名 |
数据类型 |
主键 |
非空 |
描述 |
1 |
roleid |
int |
是 |
是 |
角色编号 |
2 |
rolename |
VARCHAR(100) |
否 |
是 |
角色名称 |
Pid为主键约束
表5-8比赛项目表
序号 |
字段名 |
数据类型 |
主键 |
非空 |
描述 |
1 |
pid |
int |
是 |
是 |
项目编号 |
2 |
pname |
VARCHAR(100) |
否 |
是 |
项目名称 |
3 |
ptypeid |
int |
否 |
是 |
项目类型编号 |
sportid为主键约束
表5-10运动会信息表
序号 |
字段名 |
数据类型 |
主键 |
非空 |
描述 |
1 |
pinfoid |
int |
是 |
是 |
项目信息编号 |
2 |
sprotid |
int |
否 |
是 |
运动会编号 |
3 |
pwd |
VARCHAR(50) |
否 |
否 |
密码 |
4 |
alreadynum |
Int |
否 |
否 |
已报名项目数 |
5 |
userregion |
int |
否 |
否 |
班级id/学院id |
pinfoid为主键约束
表5- 9比赛项目信息表
序号 |
字段名 |
数据类型 |
主键 |
非空 |
描述 |
1 |
pinfoid |
int |
是 |
是 |
项目信息编号 |
2 |
sprotid |
int |
否 |
是 |
运动会编号 |
3 |
pwd |
VARCHAR(50) |
否 |
否 |
密码 |
4 |
alreadynum |
Int |
否 |
否 |
已报名项目数 |
5 |
userregion |
int |
否 |
否 |
班级id/学院id |
sid为主键约束
表5-10比赛报名表
序号 |
字段名 |
数据类型 |
主键 |
非空 |
描述 |
1 |
sid |
int |
是 |
是 |
比赛报名编号 |
2 |
userid |
VARCHAR(50) |
否 |
是 |
账号 |
3 |
proinfoid |
int |
否 |
是 |
项目信息编号 |
userid为主键约束
表5-11管理端用户表
序号 |
字段名 |
数据类型 |
主键 |
非空 |
描述 |
1 |
userid |
VARCHAR(50) |
是 |
是 |
账号 |
2 |
realname |
VARCHAR(50) |
否 |
是 |
用户名 |
3 |
pwd |
VARCHAR(50) |
否 |
否 |
密码 |
4 |
roleid |
Int |
否 |
是 |
角色编号 |
5 |
userstatus |
int |
否 |
否 |
用户状态 |
6 |
mobile |
Char |
否 |
是 |
联系电话 |
7 |
Createtime |
Datetime |
否 |
是 |
创建时间 |
8 |
Lastlogindate |
Datetime |
否 |
否 |
最后登录时间 |
roleid为主键约束
表5-12管理端角色表
序号 |
字段名 |
数据类型 |
主键 |
非空 |
描述 |
1 |
id |
int |
是 |
是 |
管理员角色编号 |
2 |
name |
NVARCHAR(30) |
否 |
是 |
角色名称 |
3 |
description |
NVARCHAR(255) |
否 |
是 |
角色描述 |
4 |
Deepth |
Int |
否 |
否 |
跟节点 |
5 |
Parentid |
Int |
否 |
否 |
父节点编号 |
查询用户信息
表5-13用户信息视图
序号 |
字段名 |
描述 |
1 |
userid |
账号 |
2 |
pwd |
密码 |
3 |
username |
用户名 |
4 |
roleid |
角色编号 |
5 |
rolename |
角色名称 |
6 |
claid |
班级编号 |
7 |
claname |
班级名称 |
8 |
gradename |
年级名称 |
9 |
majid |
专业编号 |
10 |
majname |
专业名称 |
11 |
colid |
学院编号 |
12 |
colname |
学院名称 |
查询管理员用户信息
表5-14管理员用户视图
序号 |
字段名 |
描述 |
1 |
userid |
账号 |
2 |
mobile |
联系电话 |
3 |
pwd |
密码 |
4 |
userstatus |
用户状态 |
5 |
realname |
真实姓名 |
6 |
createtime |
创建时间 |
7 |
loginstatus |
登录状态 |
8 |
lastlogindate |
登录时间 |
9 |
roleid |
角色编号 |
10 |
rolename |
角色名称 |
11 |
description |
角色描述 |
查询用户比赛报名信息
表5-15比赛报名视图
序号 |
字段名 |
描述 |
1 |
sid |
比赛报名编号 |
2 |
userid |
账号 |
3 |
proinfoid |
项目信息编号 |
4 |
username |
用户名 |
5 |
roleid |
角色编号 |
6 |
rolename |
角色名称 |
7 |
claid |
班级编号 |
8 |
claname |
班级名称 |
9 |
gradename |
年级名称 |
10 |
majid |
专业编号 |
11 |
majname |
专业名称 |
12 |
colid |
学院编号 |
13 |
colname |
学院名称 |
14 |
sportid |
运动会编号 |
15 |
pid |
项目编号 |
16 |
nownum |
当前报名人数 |
17 |
maxnum |
项目人数限制 |
18 |
pname |
项目名称 |
19 |
ptypeid |
项目类型编号 |
20 |
ptypename |
项目类型名称 |
21 |
Sportname |
运动会名称 |
22 |
sportstart |
运动会开始时间 |
23 |
sportend |
运动会结束时间 |
24 |
enrollstart |
比赛报名开始时间 |
25 |
enrollend |
比赛报名结束时间 |
[1] 陈学海. 基于语义网关的离散制造执行系统可重构体系与关键技术研究[D]. 重庆大学, 2014