开发基于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)

(7)在Submit表中搜索相应作业某已提交的学生的作业内容:

public String CheckContent(String homework_title, Teacher teacher, String student_name)

3.界面JSP设计
老师界面
①登录:index.jsp
②注册:register.jsp
③老师布置的作业列表(包含新增功能):teacher_homework.jsp
④老师所教的学生列表(包含新增功能):teacher_student.jsp
⑤相应作业已提交的学生列表:homework_student.jsp
⑥查看某次作业某学生的作业内容:homework_content.jsp

学生界面
①登录:index.jsp
②注册:register.jsp
③学生需要提交的作业列表:student_submit.jsp
④学生编辑相应作业:edit_homework.jsp

4.界面跳转设计(JSP+Servlet)
老师界面
index.jsp点击“注册” → register.jsp
register.jsp点击“注册” → RegisterServletindex.jsp
index.jsp点击“登录” → IndexServletteacher_homework.jsp
teacher_homework.jsp点击“作业列表” → HomeworkListServletteacher_homework.jsp
teacher_homework.jsp点击“新增” → AddHomeworkServletHomeworkListServletteacher_homework.jsp
teacher_homework.jsp点击“查看已提交的名单” → TeacherHomeworkSubmitServlethomework_student.jsp
homework_student.jsp点击“返回” → HomeworkListServletteacher_homework.jsp
homework_student.jsp点击“查看作业” → CheckContentServlethomework_content.jsp
teacher_homework.jsp点击“学生列表” → StudentListServletteacher_student.jsp
teacher_student.jsp点击“新增” → AddStudentServletStudentListServletteacher_student.jsp

学生界面
index.jsp点击“登录” → IndexServletstudent_submit.jsp
student_submit.jsp点击“作业列表” → StudentHomeworkListServletstudent_submit.jsp
student_submit.jsp点击“上传作业” → edit_homework.jsp
edit_homework.jsp点击“确定” → StudentHomeworkListServletstudent_submit.jsp

三、源码简单介绍

1.将JSP中数据传入Servlet
表单form
以注册为例:

JSP:form
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 />

四、下一篇

开发基于Mysql+Servlet+JSP的作业管理系统(二)

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值