JSP+Servlet培训班作业管理系统[18]–教师角色之作业题目管理功能实现

简介: 本文目录1. 本章任务2. 代码实现2.1 添加菜单2.2 加载教师所管理的作业2.3 显示作业题目列表2.4 作业题目新增功能实现2.5 作业题目编辑功能的实现3. 总结

1. 本章任务

本章实现教师角色的作业管理功能。


教师需要发布作业题目,发布后可以修改,但是不允许删除。需要注意几点:


作业是属于课程的,所以当老师查看自己所管理的作业列表时,需要查询自己管理课程下面发布的作业。

发布作业题目(title)时,需要同时生成学生应该提交的作业内容(job)记录。加入有30个学生选择了对应课程,则每次发布作业,除了要生成一个title记录,还要生成30条job记录,这样学生登录之后才能看到自己需要提交的作业题目及对应内容、打分情况。

2. 代码实现

之前对项目中实现一个新功能讲的已经比较多了,此处简单的贴一下代码就OK,重点内容会有文字描述。


2.1 添加菜单

public class Constants {

// 用于保存角色及对应的菜单信息

public static HashMap<String, String[][]> roleMenuMap = new HashMap<String, String[][]>();

// 使用static代码块对roleMenuMap进行初始化

static {

 // 校长拥有的菜单

 roleMenuMap.put("master", new String[][] { { "人员管理", "userManage.jsp" }, { "课程查看", "courseView.jsp" } });

 // 教师拥有的菜单

 roleMenuMap.put("teacher", new String[][] { { "课程管理", "courseManage.jsp" }, { "作业题目管理", "titleManage.jsp" } });

}

}

1

2

3

4

5

6

7

8

9

10

11

2.2 加载教师所管理的作业

修改Title


public class Title {

private int titleId;

private String titleContent;

private int titleCourse;

private String titleTime;

/**

 * 冗余字段用于显示

 */

private String titleCourseName;

 // 省略get set方法

}

1

2

3

4

5

6

7

8

9

10

11

修改RouteServlet


   else if (childPage.equals("titleManage.jsp")) {

  User loginUser = (User) request.getSession().getAttribute("loginUser");

  if (loginUser != null) {// 已登录

   TitleDao titleDao = new TitleDao();

   // 返回值为登录用户所对应的课程

   request.setAttribute("titles", titleDao.getTitlesByUserId(loginUser.getUserId()));

  }

 }

1

2

3

4

5

6

7

8

修改 TitleDao


 /**

 * 通过userId获取对应作业题目

 */

public List<Title> getTitlesByUserId(int userId) {

 Connection conn = null;

 PreparedStatement ps = null;

 ResultSet rs = null;

 List<Title> titles = new ArrayList<Title>();

 try {

  conn = DbUtils.getConnection();

  String sql = "select t.*,c.course_name from title t left join course c on t.title_course=c.course_id left join user u on c.course_user=u.user_id where u.user_id=?";

  ps = conn.prepareStatement(sql);

  ps.setInt(1, userId);

  rs = ps.executeQuery();

  while (rs.next()) {

   titles.add(makeOneTitle(rs));

  }

 } catch (SQLException e) {

  System.out.println(e.toString());

 } finally {

  DbUtils.releaseConnection(rs, ps, conn);

 }

 return titles;

}

/**

 * 获取一个

 */

public Title makeOneTitle(ResultSet rs) throws SQLException {

 Title title = new Title();

 title.setTitleId(rs.getInt("title_id"));

 title.setTitleContent(rs.getString("title_content"));

 title.setTitleCourse(rs.getInt("title_course"));

 title.setTitleTime(rs.getString("title_time"));

 if (rs.getString("course_name") != null) {

  title.setTitleCourseName(rs.getString("course_name"));

 }

 return title;

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

2.3 显示作业题目列表

添加titleManage.jsp


<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!-- 使用c:标签需要添加本行代码 -->

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>titleManage.jsp</title>

<link href="css/content.css" type="text/css" rel="stylesheet" />

</head>

<body>

<div id="content_top">作业题目管理</div>

<div id="content_mid">

 <table class="table_theme1">

  <thead>

   <tr

    <tr>

    <th>题目编号</th>

    <th>题目名称</th>

    <th>所属课程</th>

    <th>操作</th>

   </tr>

  </thead>

  <c:forEach items="${titles}" var="item">

   <tr>

    <td>${item.titleId}</td>

    <td>${item.titleContent}</td>

    <td>${item.titleCourseName}</td>

    <td><a

     href="/HomeworkSystem/RouteServlet?childPage=titleEdit.jsp&titleId=${item.titleId}">编辑</a></td>

   </tr>

  </c:forEach>

 </table>

</div>

<div id="content_bottom">

 <a href="/HomeworkSystem/RouteServlet?childPage=titleAdd.jsp">新增</a>

</div>

</body>

</html>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

2.4 作业题目新增功能实现

由于作业新增页面需要选择作业所属课程,所以跳转到作业新增页面时,需要先加载教师管理的课程列表。


修改RouteServlet


   else if (childPage.equals("titleAdd.jsp")) {// 课程新增页面,需要教师管理的课程列表

  User loginUser = (User) request.getSession().getAttribute("loginUser");

  CourseDao courseDao = new CourseDao();

  request.setAttribute("courses", courseDao.getCoursesByUserId(loginUser.getUserId()));

 }

1

2

3

4

5

修改titleAdd.jsp


<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!-- 使用c:标签需要添加本行代码 -->

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>titleAdd.jsp</title>

<link href="css/content.css" type="text/css" rel="stylesheet" />

</head>

<body>

<form action="/HomeworkSystem/CourseServlet?method=titleAdd"

 method="post">

 <div id="content_top">作业题目新增</div>

 <div id="content_mid">

  <table class="table_theme1">

   <tr>

    <td>作业题目:</td>

    <td><input type="text" name="titleContent" /></td>

   </tr>

   <tr>

    <td>所属课程:</td>

    <td><select name="titleCourse">

      <c:forEach items="${courses}" var="item">

       <option value="${item.courseId}">${item.courseName}</option>

      </c:forEach>

    </select></td>

   </tr>

  </table>

 </div>

 <div id="content_bottom">

  <input type="submit" value="保存"></input>

 </div>

</form>

</body>

</html>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

点击新增后,需要生成作业题目记录,同时还需要生成选择该门课的学生的作业内容记录。所以修改TitleServlet如下,注意需要修改的相关的Dao层方法可以去查阅我的Github源码,此处就不再一一粘贴了。



@WebServlet("/TitleServlet")

public class TitleServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

 this.doPost(request, response);

}


public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 处理post请求

 // 设置输入输出格式、编码

 response.setContentType("text/html");

 request.setCharacterEncoding("utf-8");

 response.setCharacterEncoding("utf-8");

 // 获取method参数

 String method = request.getParameter("method");

 // 获取登录用户信息

 User loginUser = (User) request.getSession().getAttribute("loginUser");

 // 操作数据库

 TitleDao titleDao = new TitleDao();

 SelectionDao selectionDao = new SelectionDao();

 JobDao jobDao = new JobDao();

 if (method.equals("titleAdd")) {

  // 新增作业题目

  Title title = new Title();

  title.setTitleContent(request.getParameter("titleContent"));

  title.setTitleCourse(Integer.parseInt(request.getParameter("titleCourse")));

  title.setTitleTime(TimeUtils.getNowSqlTime());

  int newId = titleDao.add(title);

  // 查询选择该门课的用户id

  List<Selection> selections = selectionDao.getSelectionsByCourseId(title.getTitleCourse());

  // 为每个选择该课的学生新增作业内容记录

  for (Selection selection : selections) {

   Job job = new Job();

   job.setJobTitle(newId);

   job.setJobUser(selection.getSelectionUser());

       job.setJobTime(TimeUtils.getNowSqlTime());

   jobDao.add(job);

  }

 }

 // 携带最新用户数据到人员管理页面

 request.setAttribute("titles", titleDao.getTitlesByUserId(loginUser.getUserId()));

 // 跳转到管理后台页

 request.setAttribute("childPage", "titleManage.jsp");

 request.getRequestDispatcher("/index.jsp").forward(request, response);

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

2.5 作业题目编辑功能的实现

作业编辑,仅仅允许修改作业的题目,比较简单,此处就不再一一列举了。


3. 总结

如果感觉不熟悉,还是需要手工去把代码敲一敲加深理解的。

相关文章
|
3月前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
4月前
|
安全 Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+jsp实现的健身房管理系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术实现的健身房管理系统。随着健康生活观念的普及,健身房成为日常锻炼的重要场所,高效管理会员信息、课程安排等变得尤为重要。该系统旨在通过简洁的操作界面帮助管理者轻松处理日常运营挑战。技术栈包括:JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Shiro、Spring Boot 2.0等。系统功能覆盖登录、会员管理(如会员列表、充值管理)、教练管理、课程管理、器材管理、物品遗失管理、商品管理及信息统计等多方面。
|
4月前
|
供应链 前端开发 Java
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
这篇文章通过一个服装库存管理系统的实例,展示了在Spring Boot项目中使用Ajax、JSON、layui、MVC架构和iframe等技术,涵盖了注册登录、权限管理、用户管理、库存管理等功能,并提供了系统运行环境和技术要求的详细说明。
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
|
6月前
|
Java 应用服务中间件 开发工具
基于Servlet的3.1以上注解方式完成上传功能。
基于Servlet的3.1以上注解方式完成上传功能。
30 0
|
6月前
|
Java Apache
基于servlet完成文件上传功能
基于servlet完成文件上传功能
47 0
|
6月前
|
SQL 数据可视化 数据库
基于jsp+servlet的javaweb实现最基本的用户注册登陆注销功能
基于jsp+servlet的javaweb实现最基本的用户注册登陆注销功能
33 0
|
6月前
|
Java 关系型数据库 MySQL
基于JSP的高校毕业生就业满意度调查统计系统
基于JSP的高校毕业生就业满意度调查统计系统
|
6月前
|
搜索推荐 Java 关系型数据库
基于JSP的房屋租赁系统
基于JSP的房屋租赁系统
|
6月前
|
安全 Java 关系型数据库
基于JSP技术的个人网站系统
基于JSP技术的个人网站系统
|
6月前
|
安全 Java 关系型数据库
基于JSP技术的定西扶贫惠农推介系统
基于JSP技术的定西扶贫惠农推介系统