(结尾附有源码地址)
功能需求
老师:添加作业,添加学生,查询作业(查询所有人的作业提交情况、查询某个人的作业情况、查询某次作业的提交情况)
学生:提交作业
系统设计
数据库表结构
总共有三张表
1.homework表(老师发布作业记录表)
2.student表(学生信息表)
3.student_homework表(学生提交作业记录表)
代码框架
数据映射类(Model)
新建三个类(homework类、student类、StudentHomework类)
这样可以将表中的一条记录抽象成java中的一个对象。详情了解对象关系映射。
每个类里面主要是申明与数据库对应的变量以及实现获取属性值修改属性值。结构类似于:
private Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
数据库操作类(Jdbc)
1.Homeworkjdbc类
该类中有6个方法:
- addHomework(Homework th)-增加作业
- selectAllStudentHomework()-查询所有学生提交的作业
- selectAllTeacherHomework()-查询所有老师布置的作业
- List selectAStudentHomework(Long student_id)-查询某位同学提交的所有作业
- List selectAHomework(Long homework_id)-查询某次作业的提交情况
- handHomework(StudentHomework sh)-学生提交作业
2.Studentjdbc类
该类中有3个方法:
- addStudent(Student newStudent)-添加学生
- List selectAllStudent()-查询所有学生
业务逻辑
首页包含四个按钮,下面我会详细介绍四个按钮的跳转功能的实现(建议对照Github的代码食用,效果会更佳)
这里的每一个按钮其实只是一个类似于超链接的东西,点击后会跳转到相应的注解类。并且为了方便使用我在每一个界面都设置了返回按钮可以退回上级界面。
老师发布作业
点击后会跳转到/searchAllTh对应的注解类TeacherHomeworkServlet,然后在此注解类中我们会做些什么呢?我们先用数据库操作类将所有老师布置的作业查询出来放到一个列表里面,然后将这个列表以键值对的形式通过req发送到Tea_Add_HW.jsp中
上图是Tea_Add_HW.jsp对应的界面。已发布的作业就是之前我们得到的列表的内容。列出所有作业情况的话方便我们添加发布作业时不会发布错误。下面是一个表单,如果我们要发布作业只需填好信息点击发布按钮就能将信息发布出去。它会跳转到/addhomework注解类-TeacherAddHomeworkServlet中执行操作。
在该类中我们设置了异常处理机制。如果作业编号、作业标题、作业内容中有一者未填都会显示错误并返回到首页。发布作业编号重复也会报出相应错误,添加成功或者失败都会有相应提示。
老师添加学生
点击后会跳转到/searchStudent对应的注解类TeacherSearchStudentServlet,然后在此注解类中我们会做些什么呢?我们先用数据库操作类将所有已有的学生查询出来放到一个列表里面,然后将这个列表以键值对的形式通过req发送到Tea_Add_Student.jsp中
上图是Tea_Add_Student.jsp对应的界面。学生列表就是之前我们得到的列表的内容。列出所有学生的话方便我们添加学生学号时不会添加错误。下面是一个表单,如果我们要添加学生只需填好信息点击添加按钮就能将信息发布出去。它会跳转到/addStudent注解类-TeacherAddStudentServlet中执行操作。
在该类中我们同样设置了异常处理机制。如果学生学号、学生姓名中有一者未填都会显示错误并返回到首页。添加的学号重复也会报出相应错误,添加成功或者失败都会有相应提示。
老师查看作业
点击后会跳转到/searchAllSh对应的注解类TeacherSearchShServlet,然后在此注解类中我们会做些什么呢?我们先用数据库操作类将所有学生提交的作业查询出来放到列表里面,然后将列表以键值对的形式通过req发送到Tea_Query_HW.jsp中
上图是Tea_Query_HW.jsp对应的界面。作业提交记录就是之前我们得到的列表的内容。而已发布作业的信息我们直接在jsp中调用函数获取。这两种方法都能获取数据。下面是两个表单,在数据量较多时方便老师快速查询,我们只需输入学生学号点击查询按钮就能获取该学生提交的所有作业。它会跳转到/queryStuHW注解类-TeacherSearchAStudentHWServlet中执行操作。这里我们另设了一个JSP来展示,逻辑类似之前的,不细说了。如果要查询某次作业输入作业编号即可查询。都会跳转到AStudentHW.jsp中。
查询学号为17301002的作业提交情况
要查询的作业记录不存在,可能输错了学号也可能该同学未提交作业或者该作业暂无人提交
查询作业编号为101的作业提交情况
学生提交作业
点击后会跳转到/handInHomework对应的注解类StudentHandInHomeworkServlet,然后在此注解类中我们直接跳转到Stu_HandIn_HW.jsp页面
上图是Stu_HandIn_HW.jsp对应的界面。在这个表单中,如果我们要提交作业只需填好信息点击提交按钮就能将作业提交出去。它会跳转到/submit注解类-StudentAddHomeworkServlet中执行操作。
在该类中我们同样设置了异常处理机制。如果作业编号、作业标题、学生学号、作业内容中有一者未填都会显示错误并返回到首页。提交成功或者失败都会有相应提示。
完整项目GitHub地址:https://github.com/gittxy/JavaEE-HWManageSystem