博主介绍:翰文编程 专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和课设项目实战、企业信息化系统建设,从业十八余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了2000+题目解决方法案例 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
文末下方有源码获取地址
- 总体设计
图4.1 系统总体模块图
(2)系统中实体E-R图
根据自习室预约管理系统的详细设计系统的要求,规划出了以下一些实体。
- 系统实现
普通用户或管理员输入自己的用户账号、密码,通过身份验证后可以进入相应的管理界面首页。后台管理页面分为用户信息管理与查看,公告信息管理与查看,教室信息管理与查看,座位信息管理与查看,教室使用信息管理与查看,预约教室座位信息管理与查看,时间段信息管理与查看,预约信息管理与查看,预约座位信息管理与查看,预约规则信息管理与查看,管理等模块[41]。
- 角色验证设计
当用户需要登录的时候,需要有响应的页面来实现这一功能。登录界面是用来支持用户进行登录功能操作的界面,当在界面中输入普通用户的用户名、密码,就可以通过身份验证进入该系统。 登录界面需要让用户输入用户名、密码。如果是错误登录信息造成的还要显示错误信息。否则,当信息输入和权限选择正确时,将分别将用户导入各自对应的操作界面首页[42]。 用户登录和身份验证功能模块的设计流程如图5.1所示:
图5.1 管理员登录流程图
管理员登录信息验证界面是非常重要的一部分,它接收登录表单提交的信息,并在用户信息表里检验是否存在对应的用户,和判断用户的类型以便获得相应的权限
- 数据库设计
- 逻辑结构设计
- 数据库设计
1) 用户( 用户编号,用户名,密码,姓名,权限,身份证,手机号,注册时间 )
2)公告( 公告编号,标题,内容,发布时间 )
3) 教室( 教室编号,教室名称,位置,容量,设施,备注 )
4) 座位( 座位编号,座位号,教室 )
5) 教室使用( 教室使用编号,预约教室,教室名称,日期,现有容量,已用容量,状态,生成时间 )
6) 预约教室座位( 预约教室座位编号,预约教室,座位,状态,用户 )
7) 时间段( 时间段编号,时间段,说明 )
8) 预约( 预约编号,预约号,教室,预约教室,座位,预约时间,用户,状态,预约日期 )
9) 预约座位( 预约座位编号,预约号,座位,时间段 )
10) 预约规则( 预约规则编号,时间段个数,提前预约时间 );
- 物理结构设计
由各个关系模式和根据需求分析阶段数据字典的数据项描述,给出各数据表结构[37]。
(1)用户信息表如表5.1所示:
表5.1 用户信息表
序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
1 | yhid | INTEGER | 11 | 是 | 用户编号 |
2 | yhm | VARCHAR | 40 | 否 | 用户名 |
3 | mm | VARCHAR | 40 | 否 | 密码 |
4 | xm | VARCHAR | 40 | 否 | 姓名 |
5 | qx | VARCHAR | 40 | 否 | 权限 |
6 | sfz | VARCHAR | 40 | 否 | 身份证 |
7 | sjh | VARCHAR | 40 | 否 | 手机号 |
8 | zcsj | VARCHAR | 40 | 否 | 注册时间 |
(2)公告信息表如表5.2所示:
表5.2 公告信息表
序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
1 | ggid | INTEGER | 11 | 是 | 公告编号 |
2 | bt | VARCHAR | 40 | 否 | 标题 |
3 | nr | VARCHAR | 40 | 否 | 内容 |
4 | fbsj | VARCHAR | 40 | 否 | 发布时间 |
(3)教室表如表5.3所示:
表5.3 教室信息表
序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
1 | jsid | INTEGER | 11 | 是 | 教室编号 |
2 | jsmc | VARCHAR | 40 | 否 | 教室名称 |
3 | wz | VARCHAR | 40 | 否 | 位置 |
4 | rl | VARCHAR | 40 | 否 | 容量 |
5 | ss | VARCHAR | 40 | 否 | 设施 |
6 | bz | VARCHAR | 40 | 否 | 备注 |
(4)座位信息表如表5.4所示:
序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
1 | zwid | INTEGER | 11 | 是 | 座位编号 |
2 | zwh | VARCHAR | 40 | 否 | 座位号 |
3 | js | VARCHAR | 40 | 否 | 教室 |
表5.4 座位信息表
(5)教室使用信息表如表5.5所示:
表5.5 教室使用信息表
序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
1 | jssyid | INTEGER | 11 | 是 | 教室使用编号 |
2 | yyjs | VARCHAR | 40 | 否 | 预约教室 |
3 | jsmc | VARCHAR | 40 | 否 | 教室名称 |
4 | rq | VARCHAR | 40 | 否 | 日期 |
5 | xyry | VARCHAR | 40 | 否 | 现有容量 |
6 | yyrl | VARCHAR | 40 | 否 | 已用容量 |
7 | zt | VARCHAR | 40 | 否 | 状态 |
8 | scsj | VARCHAR | 40 | 否 | 生成时间 |
(6)预约教室信息表如表5.6所示:
表5.6 预约教室信息表
序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
1 | yyjszwid | INTEGER | 11 | 是 | 预约教室座位编号 |
2 | yyjs | VARCHAR | 40 | 否 | 预约教室 |
3 | zw | VARCHAR | 40 | 否 | 座位 |
4 | zt | VARCHAR | 40 | 否 | 状态 |
5 | yh | VARCHAR | 40 | 否 | 用户 |
(7)时间段表如表5.7所示:
表5.7时间段信息表
序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
1 | sjdid | INTEGER | 11 | 是 | 时间段编号 |
2 | sjd | VARCHAR | 40 | 否 | 时间段 |
3 | sm | VARCHAR | 40 | 否 | 说明 |
(8)预约信息表如表5.8所示:
序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
1 | yyid | INTEGER | 11 | 是 | 预约编号 |
2 | yyh | VARCHAR | 40 | 否 | 预约号 |
3 | js | VARCHAR | 40 | 否 | 教室 |
4 | yyjs | VARCHAR | 40 | 否 | 预约教室 |
5 | zw | VARCHAR | 40 | 否 | 座位 |
6 | yysj | VARCHAR | 40 | 否 | 预约时间 |
7 | yh | VARCHAR | 40 | 否 | 用户 |
8 | zt | VARCHAR | 40 | 否 | 状态 |
9 | yyrq | VARCHAR | 40 | 否 | 预约日期 |
表5.8 预约信息表
(9)预约座位信息表如表5.9所示:
表5.9 预约座位信息表
序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
1 | yyzwid | INTEGER | 11 | 是 | 预约座位编号 |
2 | yyh | VARCHAR | 40 | 否 | 预约号 |
3 | zw | VARCHAR | 40 | 否 | 座位 |
4 | sjd | VARCHAR | 40 | 否 | 时间段 |
(10)预约规则信息表如表5.10所示:
序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
1 | yygzid | INTEGER | 11 | 是 | 预约规则编号 |
2 | sjdgs | VARCHAR | 40 | 否 | 时间段个数 |
3 | tqyysj | VARCHAR | 40 | 否 | 提前预约时间 |
表5.10 预约规则信息表
- 系统实施
系统实施是指将系统设计阶段的结果在计算机上实现,将原来纸面上的类似于设计图式的新系统方案转换成可执行的应用软件。实施阶段的主要活动:物理系统的建立,程序的编制,系统调试,系统切换,系统维护,系统评价。
界面也称作UI(User Interface),是人机交互重要部分,也是系统给用户使用的第一印象,是整个系统的重要组成部分。所谓的用户体验大部分就是指界面设计的体验
- 登录模块界面
登录系统首页,出现用户名、密码的输入框,填写用户名和密码点击【提交】按钮,即可登录;也可以点击【重置】按钮,进行重新录入。具体的登录页面如图5.2所示:
图5.1 登录界面图
后端服务处理代码:
;
request.setCharacterEncoding("gb2312"); String yhm=(String)request.getParameter("yhm"); String mm=(String)request.getParameter("mm"); String lx=(String)request.getParameter("lx"); String sql=""; if(lx.equals("用户名")) { sql = "select * from yonghu where yhm='" + yhm + "' and mm='" + mm + "' "; } if(lx.equals("身份证")) { sql = "select * from yonghu where sfz='" + yhm + "' and mm='" + mm + "' "; } if(lx.equals("手机号")) { sql = "select * from yonghu where sjh='" + yhm + "' and mm='" + mm + "' "; } System.out.println("sql="+sql); db.open(); ResultSet rs=db.query(sql); out.println("<script>"); if(rs.next()){ session.setAttribute("id",rs.getString("yhid")); session.setAttribute("yhm",rs.getString("yhm")); session.setAttribute("mm",rs.getString("mm")); session.setAttribute("qx",rs.getString("qx"));- 用户管理模块界面
点击教师管理菜单,显示添加教师信息和教师信息列表界面,点击添加教师信息,右侧界面呈现出添加的教师信息界面,包括教师教师编号,用户名,密码,姓名,联系电话,联系地址,班级等信息,添加教师信息完毕点击“提交”按钮,则添加教师信息成功。点击“教师列表”,右侧界面呈现出需要教师的具体信息,包括教师编号,用户名,密码,姓名,联系电话,联系地址,班级等信息,可对逐条教师信息进行查看、删除和修改,如图5.3所示:
图5.4 用户管理界面图
主要代码:
@RequestMapping(value = "listpage") public ModelAndView listpage(HttpServletRequest request, HttpServletResponse response) { try { request.setCharacterEncoding("gb2312");//强制字符集 }catch(Exception e){ e.printStackTrace(); } Map<String,Object> map= new HashMap<String,Object>(); ModelAndView mav = new ModelAndView();//初始化 mav.setViewName("yonghu/yonghulist");//跳转jsp 页面 String sql=""; String yhid=(String)request.getParameter("yhid"); if(yhid!=null&&!yhid.equals("")){ // System.out.println(yhid); sql+=" and yhid like '%"+yhid+"%'";//符合条件 拼接sql 用户编号 } String yhm=(String)request.getParameter("yhm"); if(yhm!=null&&!yhm.equals("")){ // System.out.println(yhm); sql+=" and yhm like '%"+yhm+"%'";//符合条件 拼接sql 用户名 } String mm=(String)request.getParameter("mm"); if(mm!=null&&!mm.equals("")){ // System.out.println(mm); sql+=" and mm like '%"+mm+"%'";//符合条件 拼接sql 密码 } String xm=(String)request.getParameter("xm"); if(xm!=null&&!xm.equals("")){ // System.out.println(xm); sql+=" and xm like '%"+xm+"%'";//符合条件 拼接sql 姓名 } String qx=(String)request.getParameter("qx"); if(qx!=null&&!qx.equals("")){ // System.out.println(qx); sql+=" and qx like '%"+qx+"%'";//符合条件 拼接sql 权限 } String sfz=(String)request.getParameter("sfz"); if(sfz!=null&&!sfz.equals("")){ // System.out.println(sfz); sql+=" and sfz like '%"+sfz+"%'";//符合条件 拼接sql 身份证 } String sjh=(String)request.getParameter("sjh"); if(sjh!=null&&!sjh.equals("")){ // System.out.println(sjh); sql+=" and sjh like '%"+sjh+"%'";//符合条件 拼接sql 手机号 } String zcsj=(String)request.getParameter("zcsj"); if(zcsj!=null&&!zcsj.equals("")){ // System.out.println(zcsj); sql+=" and zcsj like '%"+zcsj+"%'";//符合条件 拼接sql 注册时间 } List list=null; try{ list=yonghudao.querylist(sql);//查询yonghu 表数据返回 list对象 }catch(Exception e){ e.printStackTrace();; } mav.addObject("list",list);//赋值变量 return mav; }- 教室管理模块界面
点击教室使用管理菜单,显示添加教室使用信息和教室使用信息列表界面,点击添加教室使用信息,右侧界面呈现出添加的教室使用信息界面,包括教室使用教室使用编号,预约教室,教室名称,日期,现有容量,已用容量,状态,生成时间等信息,添加教室使用信息完毕点击“提交”按钮,则添加教室使用信息成功。点击“教室使用列表”,右侧界面呈现出需要教室使用的具体信息,包括教室使用编号,预约教室,教室名称,日期,现有容量,已用容量,状态,生成时间等信息,可对逐条教室使用信息进行查看、删除和修改,如图5.4所示:
图5.4 教室管理界面图
主要代码:
@RequestMapping(value = "add") public ModelAndView add(HttpServletRequest request, HttpServletResponse response){ try { request.setCharacterEncoding("gb2312");//强制字符集 }catch(Exception e){ e.printStackTrace(); } ModelAndView mav = new ModelAndView();//初始化 mav.setViewName("jiaoshi/jiaoshiadd"); jiaoshi bean=new jiaoshi(); String jsid=(String)request.getParameter("jsid");//教室编号 变量 bean.setJsid(jsid);//赋值封装 String jsmc=(String)request.getParameter("jsmc");//教室名称 变量 bean.setJsmc(jsmc);//赋值封装 String wz=(String)request.getParameter("wz");//位置 变量 bean.setWz(wz);//赋值封装 String rl=(String)request.getParameter("rl");//容量 变量 bean.setRl(rl);//赋值封装 String ss=(String)request.getParameter("ss");//设施 变量 bean.setSs(ss);//赋值封装 String bz=(String)request.getParameter("bz");//备注 变量 bean.setBz(bz);//赋值封装 String sql=""; ResultSet rs=null; int num=0; DBO db=new DBO(); try{ sql="select count(1) as num from jiaoshi where jsmc='"+jsmc+"'"; rs=db.query(sql); if(rs.next()){ num=rs.getInt("num"); } if(num>0){ request.setAttribute("msg", "<script>alert('添加失败、教室名称重复');</script>");//操作提示 }else{ jiaoshidao.add(bean);//执行 添加 jiaoshi 添加操作 request.setAttribute("msg", "<script>alert('添加成功');</script>");//操作提示 } }catch(Exception e){ e.printStackTrace();; } return addpage(request,response); }- 座位管理模块界面
点击座位管理菜单,显示添加座位信息和座位信息列表界面,点击添加座位信息,右侧界面呈现出添加的座位信息界面,包括座位座位编号,座位号,教室等信息,添加座位信息完毕点击“提交”按钮,则添加座位信息成功,本功能可以批量添加座位。点击“座位列表”,右侧界面呈现出需要座位的具体信息,包括座位编号,座位号,教室等信息,可对逐条座位信息进行查看、删除和修改,如图5.5所示:
图5.5 用户管理界面图
主要代码:
/**座位添加方法 对表 zuowei 进行添加 * */ @RequestMapping(value = "add") public ModelAndView add(HttpServletRequest request, HttpServletResponse response){ try { request.setCharacterEncoding("gb2312");//强制字符集 }catch(Exception e){ e.printStackTrace(); } ModelAndView mav = new ModelAndView();//初始化 mav.setViewName("zuowei/zuoweiadd"); zuowei bean=new zuowei(); String zwid=(String)request.getParameter("zwid");//座位编号 变量 bean.setZwid(zwid);//赋值封装 String zwh=(String)request.getParameter("zwh");//座位号 变量 bean.setZwh(zwh);//赋值封装 String js=(String)request.getParameter("js");//教室 变量 bean.setJs(js);//赋值封装 String sql=""; DBO db=new DBO(); try{ sql="delete from zuowei where js='"+js+"'"; db.update(sql);//删除座位号 for(int i=1;i<=Integer.parseInt(zwh);i++){ bean.setZwh(String.valueOf(i)); zuoweidao.add(bean);//执行 添加 zuowei 添加操作 } }catch(Exception e){ e.printStackTrace();; } request.setAttribute("msg", "<script>alert('添加成功');</script>");//操作提示 return addpage(request,response); }- 预约管理模块界面
点击预约管理菜单,显示添加预约信息和预约信息列表界面,点击添加预约信息,右侧界面呈现出添加的预约信息界面,包括预约预约编号,预约号,教室,预约教室,座位,预约时间,用户,状态,预约日期等信息,添加预约信息完毕点击“提交”按钮,则添加预约信息成功。点击“预约列表”,右侧界面呈现出需要预约的具体信息,包括预约编号,预约号,教室,预约教室,座位,预约时间,用户,状态,预约日期等信息,可对逐条预约信息进行查看,如果5.6所示:
图5.6 预约管理界面图
主要代码:
/**预约列表 查询yuyue * */ @RequestMapping(value = "listpage") public ModelAndView listpage(HttpServletRequest request, HttpServletResponse response) { try { request.setCharacterEncoding("gb2312");//强制字符集 }catch(Exception e){ e.printStackTrace(); } Map<String,Object> map= new HashMap<String,Object>(); ModelAndView mav = new ModelAndView();//初始化 mav.setViewName("yuyue/yuyuelist");//跳转jsp 页面 String sql=""; String yyid=(String)request.getParameter("yyid"); if(yyid!=null&&!yyid.equals("")){ // System.out.println(yyid); sql+=" and yyid like '%"+yyid+"%'";//符合条件 拼接sql 预约编号 } String yyh=(String)request.getParameter("yyh"); if(yyh!=null&&!yyh.equals("")){ // System.out.println(yyh); sql+=" and yyh like '%"+yyh+"%'";//符合条件 拼接sql 预约号 } String js=(String)request.getParameter("js"); if(js!=null&&!js.equals("")){ // System.out.println(js); sql+=" and js like '%"+js+"%'";//符合条件 拼接sql 教室 }大家点赞、收藏、关注、评论啦 其他的定制服务 商务合作 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者