开发基于Mysql+Servlet+JSP的作业管理系统
开发基于Mysql+Servlet+JSP的作业管理系统
开发基于Mysql+Servlet+JSP的作业管理系统
一、使用方法及界面展示
1.源码的git地址: 作业管理系统
2.运行后显示登录界面,点击“注册”进入注册界面:
3.在注册界面分别注册“老师甲”、“学生甲”两个账号,点击“注册”自动返回登录界面(注册需要输入身份:老师/学生):
3.登录“老师甲”的账号(需要输入“老师”的身份),直接进入作业列表界面,显示老师所布置的作业,在右上角输入作业名称,点击“新增”,即可添加作业,并在列表中显示:
4.在作业列表中点击所要查看作业对应的“查看已提交名单”按钮,查看已提交该作业的学生名单,在该界面点击“返回”即可返回作业列表界面:
5.点击左侧导航栏中的“学生列表”,展示老师所教学生的名单。在右上角输入框中输入学生姓名,点击“新增”,即可添加未在列表中的所教学生,并在列表显示:
6.在登录界面使用“学生甲”(身份为学生)的账号登录,直接显示其作业列表,点击“上传作业”即可进入相应作业的编辑界面:
7.进入编辑作业界面,自动显示作业名称及布置该作业的老师的姓名(只可读)。在作业内容文本框输入作业的内容,点击确定即可提交,并自动返回作业列表;点击返回,返回作业列表界面:
8.点击确定后返回作业列表,可见,已提交的作业对应的“上传作业”按钮不可再次点击,即作业不可二次提交:
9.再次登录“老师甲”账号,点击查看老师甲的第一次作业已提交学生名单,可见学生甲已提交,点击“查看作业”即可查看作业内容:
二、数据库、数据层、界面及其跳转设计
1.数据库设计 (源码文件夹中的sql文件包含建表语句)
考虑到防止数据库大量的数据冗余,满足三范式要求,设计五张数据表
①Student(student_name)
②Teacher(teacher_name)
③Teach(teacher_name, student_name)
④Homework(homework_title, teacher_name)
⑤Submit(homework_title, teacher_name, student_name, content)
Teach表为Student和Teacher的关系表
Homework依赖Teacher表
Submit依赖Student、Teacher和Homework表
2.数据层设计
Model类:
①Teacher(String teacher_name)
②Student(String student_name)
③Teach(String student_name, String teacher_name)
④Homework(String homework_title, String teacher_name)
⑤Submit(String homework_title, String teacher_name, String student_name, String content)
连接数据库JDBC:
①StudentJdbc:
(1)学生注册后在Student表中插入函数:
public void InsertStudent(String student)
(2)在Homework和Teach表中搜索,展示学生的作业列表函数:
public List<Homework> QueryHomework(Student student)
(3)在Submit表中搜索,判断该作业是否已经提交过:
public boolean QuerySubmit(Student student, String homework_title, String teacher_name)
(4)提交作业在Submit插入函数:
public void InsertSubmit(String homework_title, String teacher_name, Student student, String content)
②TeacherJdbc:
(1)老师注册后在Teacher表中插入函数:
public void AddTeacher(Teacher teacher)
(2)在Homework表中搜索,展示老师布置的作业列表函数:
public List<Homework> QueryHomework(Teacher teacher)
(3)新增作业在Homework表中插入函数:
public void AddHomework(Teacher teacher, String homework_title)
(4)新增学生在Student表中插入函数:
public void AddStudent(Teacher teacher, String student_name)
(5)在Teach表中搜索,显示老师所教的学生列表函数:
public List<Student> QueryStudent(Teacher teacher)
(6)在Submit表中搜索相应作业已提交的学生列表及其作业内容:
public List<Submit> QuerySubmit(String homework_title, Teacher teacher)
3.界面JSP设计
老师界面
①登录:index.jsp
②注册:register.jsp
③老师布置的作业列表(包含新增功能):teacher_homework.jsp
④老师所教的学生列表(包含新增功能):teacher_student.jsp
⑤相应作业已提交的学生列表(包含展示作业内容功能):homework_student.jsp
学生界面
①登录:index.jsp
②注册:register.jsp
③学生需要提交的作业列表:student_submit.jsp
④学生编辑相应作业:edit_homework.jsp
4.界面跳转设计(JSP+Servlet)
老师界面
①index.jsp点击“注册” → register.jsp
②register.jsp点击“注册” → RegisterServlet → index.jsp
③index.jsp点击“登录” → IndexServlet → teacher_homework.jsp
④teacher_homework.jsp点击“作业列表” → HomeworkListServlet → teacher_homework.jsp
⑤teacher_homework.jsp点击“新增” → AddHomeworkServlet → HomeworkListServlet → teacher_homework.jsp
⑥teacher_homework.jsp点击“查看已提交的名单” → TeacherHomeworkSubmitServlet → homework_student.jsp
⑦homework_student.jsp点击“返回” → HomeworkListServlet → teacher_homework.jsp
⑧teacher_homework.jsp点击“学生列表” → StudentListServlet → teacher_student.jsp
⑨teacher_student.jsp点击“新增” → AddStudentServlet → StudentListServlet → teacher_student.jsp
学生界面
①index.jsp点击“登录” → IndexServlet → student_submit.jsp
②student_submit.jsp点击“作业列表” → StudentHomeworkListServlet → student_submit.jsp
③student_submit.jsp点击“上传作业” → edit_homework.jsp
④edit_homework.jsp点击“确定” → StudentHomeworkListServlet → student_submit.jsp
三、源码简单介绍
1.将JSP中数据传入Servlet
表单form
以注册为例:
JSP:
Servlet中的doPost函数对应的接收语句:
String register_name = (String) req.getParameter("register_name");
String register_identity = (String) req.getParameter("register_identity");
2.将JSP中数据传入另一个JSP
URL
以student_submit.jsp为例:
student_submit.jsp中“上传作业"设置为:
href="edit_homework.jsp?homework_title=<%=homework.getHomework_title()%>&teacher_name=<%=homework.getTeacher_name()%>"
①edit_homework.jsp为链接到的另一个jsp;
②homework_title和teacher_name为传入edit_homework.jsp的数据名称;
与request.getParameter(“homework_title”)及request.getParameter(“teacher_name”)对应;
③<%=homework.getHomework_title()%>及<%=homework.getTeacher_name()%>传递的homework_title和teacher_name的值。
edit_homework.jsp中的接收语句:
value="<%=request.getParameter("homework_title")%>"
value="<%=request.getParameter("teacher_name")%>"
3.登录的用户名保存在Session中,界面任意活动都可获取
在登录界面链接的Servlet中保存用户名到Session:
//老师
req.getSession().setAttribute("teacher_name",login_name);
//学生
req.getSession().setAttribute("student_name",login_name);
在任意jsp获取语句:
//老师
session.getAttribute("teacher_name")
//学生
session.getAttribute("student_name")
在任意Servlet获取语句:
//老师
req.getSession().getAttribute("teacher_name");
//学生
req.getSession().getAttribute("student_name");
4.JDBC中sql语句
以StudentJdbc中的public boolean QuerySubmit(Student student, String homework_title, String teacher_name)函数为例:
String sql;
sql = "SELECT COUNT(*) FROM SUBMIT WHERE HOMEWORK_TITLE=? AND TEACHER_NAME=? AND STUDENT_NAME=?";
stmt = conn.prepareStatement(sql);
stmt.setString(1, homework_title);
stmt.setString(2, teacher_name);
stmt.setString(3, student.getStudent_name());
try (ResultSet rs = stmt.executeQuery()) {
if(rs.next()) {
number = rs.getInt(1);
}
}
①语句为在Submit表中搜索homework_title、teacher_name及student_name是否有对应的记录,stmt.setString(1, homework_title)即为第一个问号位置对应homework_title的值。
②ResultSet rs = stmt.executeQuery(),rs.getInt(1)得到执行后的结果。
5.部分html语言用法
①style="pointer-events: none"将链接设置为不可链接;
②disabled将按钮设置为不可点;
③<%if(!no_submit) {%>此处为该条件下的属性设置<%}%>;
<a type="submit" class="btn btn-primary btn-xs" href="edit_homework.jsp?homework_title=<%=homework.getHomework_title()%>&teacher_name=<%=homework.getTeacher_name()%>" <%if(!no_submit) {%> disabled style="pointer-events: none" <%}%>>上传作业</a>
④input属性设置为readonly可使文本框只可读不可改,不要设置为disabled,否则若传值到servlet中,servlet无法获取
<input type="text" class="form-control" id="homework_title" name="homework_title" value="<%=request.getParameter("homework_title")%>" readonly />
上一篇: 【重要】Docker系列教程01-使用Docker本身
下一篇: JAVA连接MYSQL测试