软件架构主要用于指导系统开发设计,是构建软件系统的基础,软件架构实现了对系统的结构分层,将系统模块化开发,便于系统开发和管理,降低系统开发成本,便于后期维护。
下图是运动会管理系统的项目包结构,系统的后台代码主要放置在src文件夹中,各个文件夹的相关说明请看表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系统数据库结构设计图
- T_User 公众网站用户表
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 |
- T_Role 角色表
roleid为主键约束
表5-7角色表
|
序号 |
字段名 |
数据类型 |
主键 |
非空 |
描述 |
|
1 |
roleid |
int |
是 |
是 |
角色编号 |
|
2 |
rolename |
VARCHAR(100) |
否 |
是 |
角色名称 |
- T_Project 比赛项目表
Pid为主键约束
表5-8比赛项目表
|
序号 |
字段名 |
数据类型 |
主键 |
非空 |
描述 |
|
1 |
pid |
int |
是 |
是 |
项目编号 |
|
2 |
pname |
VARCHAR(100) |
否 |
是 |
项目名称 |
|
3 |
ptypeid |
int |
否 |
是 |
项目类型编号 |
- T_SportInfo 运动会配置表
sportid为主键约束
表5-10运动会信息表
|
序号 |
字段名 |
数据类型 |
主键 |
非空 |
描述 |
|
1 |
pinfoid |
int |
是 |
是 |
项目信息编号 |
|
2 |
sprotid |
int |
否 |
是 |
运动会编号 |
|
3 |
pwd |
VARCHAR(50) |
否 |
否 |
密码 |
|
4 |
alreadynum |
Int |
否 |
否 |
已报名项目数 |
|
5 |
userregion |
int |
否 |
否 |
班级id/学院id |
- T_ProjectInfo运动会项目表
pinfoid为主键约束
表5- 9比赛项目信息表
|
序号 |
字段名 |
数据类型 |
主键 |
非空 |
描述 |
|
1 |
pinfoid |
int |
是 |
是 |
项目信息编号 |
|
2 |
sprotid |
int |
否 |
是 |
运动会编号 |
|
3 |
pwd |
VARCHAR(50) |
否 |
否 |
密码 |
|
4 |
alreadynum |
Int |
否 |
否 |
已报名项目数 |
|
5 |
userregion |
int |
否 |
否 |
班级id/学院id |
- T_SignUp 比赛报名表
sid为主键约束
表5-10比赛报名表
|
序号 |
字段名 |
数据类型 |
主键 |
非空 |
描述 |
|
1 |
sid |
int |
是 |
是 |
比赛报名编号 |
|
2 |
userid |
VARCHAR(50) |
否 |
是 |
账号 |
|
3 |
proinfoid |
int |
否 |
是 |
项目信息编号 |
- T_AdminUser管理端用户表
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 |
否 |
否 |
最后登录时间 |
- T_AdminRole 管理端角色表
roleid为主键约束
表5-12管理端角色表
|
序号 |
字段名 |
数据类型 |
主键 |
非空 |
描述 |
|
1 |
id |
int |
是 |
是 |
管理员角色编号 |
|
2 |
name |
NVARCHAR(30) |
否 |
是 |
角色名称 |
|
3 |
description |
NVARCHAR(255) |
否 |
是 |
角色描述 |
|
4 |
Deepth |
Int |
否 |
否 |
跟节点 |
|
5 |
Parentid |
Int |
否 |
否 |
父节点编号 |
- V_User 用户信息视图
查询用户信息
表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 |
学院名称 |
- V_AdminUser 管理员用户视图
查询管理员用户信息
表5-14管理员用户视图
|
序号 |
字段名 |
描述 |
|
1 |
userid |
账号 |
|
2 |
mobile |
联系电话 |
|
3 |
pwd |
密码 |
|
4 |
userstatus |
用户状态 |
|
5 |
realname |
真实姓名 |
|
6 |
createtime |
创建时间 |
|
7 |
loginstatus |
登录状态 |
|
8 |
lastlogindate |
登录时间 |
|
9 |
roleid |
角色编号 |
|
10 |
rolename |
角色名称 |
|
11 |
description |
角色描述 |
- V_SignUp 比赛报名视图
查询用户比赛报名信息
表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 |
比赛报名结束时间 |
- up_addAdminRole 添加管理员角色存储过程
- 依赖表:角色权限表,菜单表
- 作用:添加管理员用户角色,若角色添加成功,则在角色权限表中添加用户角色和菜单编号作为权限管理
- 返回:返回1代表成功,0代表失败
- up_deleteCollege 删除学院的存储过程
- 依赖表:专业表、班级表
- 作用:删除学院,如果学院编号有外键引用,则删除外键对应的班级信息和专业信息
- 返回:返回1代表成功,0代表失败
[1] 陈学海. 基于语义网关的离散制造执行系统可重构体系与关键技术研究[D]. 重庆大学, 2014