博主介绍:👉全网个人号和企业号粉丝40W+,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战👈
⭐️热门专栏推荐订阅⭐️ 订阅收藏起来,防止下次找不到🔎百套Python实战项目持续更新中~
有需求的各位可以先收藏起来,还有大家在毕设选题,开题报告有疑惑的都可以找我,帮你完成文档⚠️文末联系方式获取完整资料⚠️
4 系统设计
4.1软件体系结构设计
4.1.1 功能结构
根据需求调研结果确定本系统主要包括以下功能模块,如图4.1所示。
图4.1系统功能结构图
4.1.2 系统架构
系统架构图如图4.2所示。
图4.2 系统架构图
4.2数据库设计
4.2.1 概念结构设计
概念模型是对现实中的问题出现的事物的进行描述,ER图是由实体及其关系构成的图,通过E-R图可以清楚地描述系统涉及到的实体之间的相互关系。
管理员信息实体图如图4-2所示:
图4-2管理员信息实体图
用户信息实体图如图4-3所示:
图4-3用户信息实体图
自习室实体图如图4-4所示:
图4-4自习室实体图
座位信息实体图如图4-5所示:
图4-5座位信息实体图
4.2.2 表的详细设计
根据上诉的逻辑模型设计,下面给出物理模型的设计,如下表:
表4-1:自习室表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
bianhao | varchar | 200 | 编号 | ||
mingcheng | varchar | 200 | 名称 | ||
tupian | varchar | 200 | 图片 | ||
guimo | varchar | 200 | 规模 | ||
zuoweishuliang | varchar | 200 | 座位数量 | ||
zhuangtai | varchar | 200 | 状态 | ||
shiyongjieduan | varchar | 200 | 使用阶段 | ||
kaifangshijian | varchar | 200 | 开放时间 | ||
xiangqing | varchar | 200 | 详情 | 0 |
表4-2:管理员信息表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
username | timestamp | 创建时间 | |||
password | varchar | 200 | 租户账号 | ||
role | varchar | 200 | 租户姓名 | ||
addtime | varchar | 200 | 密码 |
表4-3:座位信息表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
weizhibianhao | varchar | 200 | 位置编号 | ||
tupian | varchar | 200 | 图片 | ||
zuoweizhuangtai | varchar | 200 | 座位状态 | ||
zaixianrenshu | varchar | 200 | 在线人数 | ||
shuliang | varchar | 200 | 数量 | ||
xiangqing | varchar | 200 | 详情 |
表4-4:用户信息表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | |||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
yonghuxingming | int | 用户姓名 | |||
mima | longtext | 密码 | |||
xingbie | varchar | 200 | 性别 | ||
touxiang | varchar | 200 | 头像 | ||
zhuanye | varchar | 200 | 专业 | ||
dianhuahaoma | varchar | 200 | 电话号码 | ||
| varchar | 200 | 邮箱 |
表4-5:座位预定表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | |||
yuyuebianhao | bigint | 座位预定编号 | |||
weizhibianhao | varchar | 200 | 位置编号 | ||
yudingshijian | varchar | 200 | 预定时间 | ||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
yonghuxingming | varchar | 200 | 用户姓名 | ||
dianhuahaoma | varchar | 200 | 电话号码 | ||
beizhu | varchar | 200 | 备注 | ||
sfsh | varchar | 200 | 是否审核 | ||
shhf | varchar | 200 | 审核回复 |
表4-6:公告信息表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | |||
title | varchar | 200 | 标题 | ||
introduction | longtext | 4 | 简介 | ||
picture | varchar | 200 | 图片 | ||
content | longtext | 内容 |
表4-7:馆长表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | |||
guanzhangzhanghao | bigint | 馆长账号 | |||
guanzhangxingming | bigint | 馆长姓名 | |||
mima | varchar | 200 | 密码 | ||
xingbie | varchar | 200 | 性别 | ||
dianhuahaoma | varchar | 200 | 电话号码 | ||
touxiang | varchar | 200 | 头像 | 1 |
表4-8:用户表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
username | varchar | 100 | 用户名 | ||
password | varchar | 100 | 密码 | ||
role | varchar | 100 | 角色 | 管理员 | |
addtime | timestamp | 新增时间 |
5 系统实现
图书馆自习室订座系统主要设计了三个角色用户,前台用户模块和后台管理员模块,主要实现的功能有,前台用户的注册,登录,用户的浏览公告,浏览网站首页,座位信息,公告信息,用户个人信息的管理,馆长可以管理自习室,统计数据分析等。后端管理员可以管理用户信息,管理自习室预定,管理用户信用分,管理公告信息等。
5.1核心功能实现
在图书馆自习室订座系统中,核心业务用例的实现效果如下所示。受篇幅所限,将只会介绍自习室,座位预订,座位信息相关的三个模块核心功能。
5.1.1用户浏览公告模块实现
用户登录网站之后,浏览公告信息,选择一个公告,点击进入详情页面,点击按钮,可以查看公告信息操作,将公告信息发送到控制层,采用 request发送异步请求,控制层发送数据到业务逻辑层,业务逻辑层通过调用 DAO层来访问数据库从而执行插入并返回结果,实现效果如图5.1所示。
图5.1 用户浏览公告功能实现效果图
该模块控制层主要代码:
@RequestMapping("cartadd")
public String addcart(Model model){
List<Product> product= productService.list("");
// 放入转发参数
model.addAttribute("product", product);
return "pages/cart/cartadd";
}
//添加数据
@RequestMapping("cartinsert")
public String insertCart(Cart cart,Model model){
String forword=request.getParameter("forword");
String w=" and uname='"+request.getParameter("uname")+"' and product="+cart.getProduct();
List<Cart> cs= cartService.list(w);
String addtime=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
if (cs.size()>0)
{//nums
//cart.setNums(cart.getNums());
//cartService.update(cart);
}
else
{
cartService.insert(cart);
model.addAttribute("msg","成功");
}
model.addAttribute("path",forword);
return "success";
} }
5.1.2管理人员添加自习室功能模块
管理人员对自习室进行添加操作,采用request发送异步请求将自习室信息发送到控制层,控制层发送数据到业务逻辑层,业务逻辑层通过调用 DAO层来访问数据库从而执行更改并返回结果。实现效果如图5.2所示。
图5.2 管理人员添加自习室实现效果图
该模块控制层主要代码:
@RequestMapping("productadd")
public String addproduct(Model model) {
List<Fenlei> fenlei = fenleiService.list("");
// 放入转发参数
model.addAttribute("fenlei", fenlei);
return "pages/product/productadd";
}
// 添加数据
@RequestMapping("productinsert")
public String insertProduct(Product product, Model model) {
String forword = request.getParameter("forword");
productService.insert(product);
model.addAttribute("msg", "成功");
model.addAttribute("path", forword);
return "success";
}
}
5.1.3管理人员添加座位信息功能模块
管理人员对座位信息进行添加操作,采用request发送异步请求将座位信息发送到控制层,控制层发送数据到业务逻辑层,业务逻辑层通过调用 DAO层来访问数据库从而执行更改并返回结果。实现效果如图5.3所示。
图5.3 管理人员添加座位功能实现效果图
该模块控制层主要代码:
@RequestMapping("fenleiadd")
public String addfenlei(Model model){
return "pages/fenlei/fenleiadd";
}
//添加数据
@RequestMapping("fenleiinsert")
public String insertFenlei(Fenlei fenlei,Model model){
String forword=request.getParameter("forword");
String w=" and name='"+request.getParameter("name")+"'";
List<Fenlei> cs= fenleiService.list(w);
if (cs.size()>0)
{
model.addAttribute("msg","名称重复!请重试");
}
else{
fenleiService.insert(fenlei);
model.addAttribute("msg","成功");
}
model.addAttribute("path",forword);
return "success";
} }
源码获取
大家点赞、收藏、关注 ,让更多需要的同学看到
不同开发语言专栏推荐订阅:
👇下方有我的微信名片👇