项目介绍
用户;家长(家长需要注册)(只能绑定一个学生,对一个学生进行操作),管理员(老师)
一、家长功能模块:个人信息,餐桌分配,意见箱,餐桌申请,查看自己孩子健康状况,修改个人信息,修改个人密码,查看学生信息
1、家长个人信息:身份,绑定一位学生(数据库中已经添加的,否则添加失败),住址,电话等等,
2、餐桌分配情况:通过年级学号姓名手动查询自己孩子在几号桌吃饭,吃什么,价格是多少,什么时间。可随意查看某一天,一般自动显示当天结果
3、意见箱;提出自己各个方面的意见发送给管理员(管理员不止一个,但是只能发送给其中一个,即自己的学生班主任)
4、餐桌申请:给自己的孩子申请留校还是回家,向管理员发送申请,管理员回复后方可留校或者离校,管理员回复后显示你的请求已被同意或反对
5、健康状况;查看自己学生的包括体温,饮食等等
6、查看学生信息:查看学生个人信息,班主任,年级,教室位置,饮食习惯等等
二、管理员功能模块:分配管理,餐桌申请管理,查询功能,意见箱,学生信息管理,个人信息管理,修改密码
1、分配管理(最好通过选项来进行操作,下拉或者标签,):
a、只能分配当天餐谱,日期表明,方便家长查询。
b、分配餐桌(通过年级班级学号姓名分配,所有添加的学生都要分配,不申请留校的可以不分配,对数据库中已经申请就餐的学生进行分配)几号餐桌分配某某年级某某,一个餐桌五六个人,一个餐桌位置都占用时下个操作不能再出现这个餐桌名称,
c、分配食物,几号桌分配什么食物(可以添加固定食谱,也可以现行自己添加,食谱可以重复),价格多少,
d、分配时间,几点就餐,。。。分配完成。
分配过程中可以进行修改删除添加等操作(就是某某餐桌可以重新分配学生或者食谱时间等),按完成按钮后不可操作
就餐时间完成,系统按照请求清除餐桌位置,也可自行保留餐桌位置,方便下次使用(保留或清除餐桌按钮,只在就餐完成后出现)。
ssm的三层架构指的是:
1.表示层:这一层通常由 Controller 组成,负责处理 HTTP 请求和向用户展示信息。
2.业务逻辑层:包含 Service 接口及其实现类(ServiceImpl),处理应用程序的核心业务逻辑。
3.数据访问层:由 Mapper 接口和 Mapper.xml 文件组成,负责与数据库交互,执行 CRUD操作。
技术栈
开发工具:idea/eclipse、navicat for mysql
开发语言:java、mysql
硬件环境:Win10系统、Google等。
主要技术:spring家族,springmvc、mybatis、java等
框架:ssm
数据库: mysql
前端:layui+bootstrap+jsp
具体实现截图
SpringMVC的执行流程
(1)客户端发起请求到前端控制器(DispatcherServlet)[7]
(2)前端控制器请求HandLerMapping去查找Handler(可以根据SpringMVC的配置文件或注解去查找)
(3)处理器映射器向前端控制器返回HandlerExcutionChain(执行器链)
(4)前端控制器调用处理器适配器去执行Handler
(5)处理适配器去执行Handler
(6)Handler将ModelAndView返回给处理适配器(ModelAndView是SpringMVC底层的一个对象,内部封装了Model和View,也就是分装了数据和视图的信息)
(7)处理适配器将ModelAndView返回给前端控制器
(8)前端控制器请求视图解析器去解析视图(根据逻辑视图名解析成物理视图)
Mybaits链接数据库MySQL
1 加载配置并初始化
ClassForName加载驱动
2 根据配置文件config.xml生成SQLSessionFactory
3 根据SQLSessionFactory生成sqlSession
4 由SQLSession产生Mapper代理对像
5 Mapper代理对象进行数据库操作
6具体使用
在项目包下创建一个Mapper的抽象类[2],在Mapper中定义增删改查的抽象方法,
再创建一个Mapper的xml文件用以保存SQL语句,再书写Service类调用Mapper.xml中的Sql即可
#使用Jsp完成视觉设计
(1)首先用div标签定下大致总-分-总布局
(2)全局设置边框1px solid black
(3)消除div之间的空隙: border-collapse:collapse
(4)模块分为交流区与电子图书馆,交流区通过收发贴实现即时学术交流,电子图书馆收集学习资料方便大家网上学习。
(5)设置全局背景图片,因为背景图片整体颜色为黑,所以文本字体我设置为白
(6)使用iframe固定主页面,其余页面都在主页面下的div中显示。
(7)HTML/CSS的主要用法:关于样式共有三种设置方式。一是外部式,在外部的样式文件,一般都是拷贝自别人已经设置好的样式,项目成员都应用以保证样式统一美观,外部文件的扩展名为.CSS,引用语句为,表示引用ui文件夹下的bootstrap样式,这种样式的优先级最低;二是嵌入式,在头部文件中以载入,可以设置字体颜色,表格边框,空隙边距等;三是内联式,在标签中定义样式,这种样式的优先级最高。
详细视频演示
请联系我获取更详细的演示视频
核心代码部分展示
/**
* 登录相关
*/
// 前台登录
@RequestMapping("login.do")
public String checkAdminLogin(Sysuser user, HttpSession session) {
Map<String, Object> u = new HashMap<String, Object>();
System.out.println("name===" + user.getUname());
u.put("uname", user.getUname());
u.put("pwd", user.getPwd());
u.put("utype", "会员");
user = userService.adminLogin(u);
if (user != null) {
session.setAttribute("user", user);
System.out.println("user=" + user);
session.removeAttribute("suc");
return "redirect:index.do";
} else {
session.setAttribute("suc", "登录失败!用户名或密码错误!");
return "login";
}
}
// 后台登录
@RequestMapping("admin/alogin.do")
public String checkLogin(Sysuser user, HttpSession session) {
Map<String, Object> u = new HashMap<String, Object>();
System.out.println("name===" + user.getUname());
System.out.println("pwd===" + user.getPwd());
u.put("uname", user.getUname());
u.put("utype", user.getUtype());
u.put("pwd", user.getPwd());
user = userService.adminLogin(u);
if (user != null) {
session.setAttribute("auser", user);
System.out.println("auser=" + user);
return "admin/index2";
} else {
return "admin/login";
}
}
// 验证用户名是否存在
@RequestMapping("checkLossPwd.do")
public void checkLossPwd(Sysuser user, HttpServletResponse response) {
Map<String, Object> map = new HashMap<>();
map.put("uname", user.getUname());
System.out.println("uname===" + user.getUname());
System.out.println("uname222===" + userService.checkUname(map));
JSONObject obj = new JSONObject();
Sysuser user1 = userService.checkUname(map);
if (userService.checkUname(map) != null) {
System.out.println("uname233333333333===");
obj.put("info", "ok");
obj.put("answer", user1.getMbanswer());
obj.put("question", user1.getQuestion());
obj.put("pwd", user1.getPwd());
} else {
System.out.println("uname255555555555555===");
obj.put("info", "ng");
}
response.setContentType("text/html;charset=utf-8");
PrintWriter out = null;
try {
out = response.getWriter();
out.print(obj);
out.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
out.close();
}
}
操作可行性
Spring MVC属于Spring Frame Work的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1,Struts2等。。
MyBatis框架: MyBatis是一个支持普通sql查询,存储过程和高级映射的优秀持久层框架,Mybatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的xml或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。。
可行性论证
- 完成系统需求分析和功能模块结构设计,完成界面基本样式设计。
- 完成了系统数据库的设计,并基于MySQL数据库管理系统,建立了名称为javaweb的数据库。
- 前端采用的html5,css,javascript语言和bootstrap框架,后端采用java语言,springmvc框架,mybatis操作数据源,使用软件:idea,eclipse、MySQL。完成了用户登录管理等模块的设计与实现。
系统测试
为了确保系统的正确性和可靠性,需要对不同的模块进行审查,在代码完成后对系统进行测试必不可少。(1)代码逻辑测试,代码的质量决定了模块运行的持续性。因此,在编写代码时,必须严格按照测试的要求进行编写,测试输出是否符合预期的要求。(2)功能性测试,为了测试模块之间的衔接是否紧密,各个功能之间的组合是否符合最初系统设计的要求,有一些细微的功能上的差别是否会影响到系统的运行,本系统虽然还是存在一些细小的误差,但是不会影响整个系统的运行。(3)压力测试,当多个管理员登录系统进行操作时,测试服务器是否能承载。球迷同时登录服务器是都可以承载。经过以上测试发现本系统存在一些不足和缺点,一边测试一边进行修改,力争使本系统符合要求。
详细视频演示
请联系我获取更详细的演示视频
源码获取方式
点击文章下方名片联系我即可~