1. 程式人生 > >石家莊去鐵道大學課程資訊管理系統

石家莊去鐵道大學課程資訊管理系統

 1、專案需求:

 

      課程管理是各大院校的管理工作中尤為重視的一項工作,它一直以來是學校管 理的一項重要的衡量指標。石家莊鐵道大學為了提高工作效率,實現資訊化管理, 要求開發課程管理系統。

2.系統要求與功能設計

     2.1 頁面功能要求

        (1)能夠在 Tomcat 伺服器中正確部署,並通過瀏覽器檢視;(1 分)

        (2)網站頁面整體風格統一;

        (3)主頁面:要求顯示新增新課程、修改課程資訊、刪除課程資訊、查詢課程 資訊四個子選單。(1 分)

        (4)新增新課程頁:(3 分)

                  ②新課程資訊必須唯一,如有重複,提示使用者“課程名稱重複,重新錄入”;(0.5 分)

                  ③要求判斷任課教師為王建民、劉立嘉、劉丹、王輝、楊子光五位教師的其中 一位。(0.5 分)

                  ④要求上課地點開頭為“一教、二教、三教、基教”中的一種。(0.5 分)

                  ⑤將新課程資訊新增入庫。(1 分)

       評分標準:  ①完成新增新課程頁面(未完成 0 分,完成 0.5 分)

                          ②儲存新課程資訊入庫(未完成 0 分,完成 1 分)

                          ③判斷課程名稱是否唯一(未完成 0 分,完成 0.5 分)

                          ④ 判斷任課教師為王建民、劉立嘉、劉丹、王輝、楊子光五位教師的其中一位 (未完成 0 分,完成 0.5 分)

                          ⑤判斷上課地點開頭為“一教、二教、三教、基教”中的一種

     (4)修改課程資訊頁:

                可對課程名稱、任課教師、上課地點進行修改。(任課 教師和上課地點必須符合錄入要求)。(2 分)

                評分標準:

                     ①完成修改課程資訊頁面(未完成 0 分,完成 0.5 分)

                     ② 完成資料庫中資訊更新(未完成 0 分,完成 1 分)

                     ③修改資訊判斷是否符合要求。(未完成 0 分,完成 0.5 分)

        (5)刪除課程資訊頁:錄入課程名稱,顯示詳細資訊後,點選“刪除”按鈕, 刪除該資訊。

               評分標準:

                       ①完成刪除課程資訊頁面(未完成 0 分,完成 0.5 分)

                       ②輸入課程名稱後可顯示其餘資訊。(未完成 0 分,完成 0.5 分)

                       ③對應刪除資料庫中資訊(未完成 0 分,完成 1 分)

         (6)查詢課程資訊頁面:

                         輸入課程名稱、任課教師、上課地點等資訊可以實現模糊查詢。

                  評分標準:

                         ①完成查詢課程資訊頁面(未完成 0 分,完成 0.5 分)

                         ②實現按照任意條件進行模糊查詢。(未完成 0 分,完成 1 分)

                         ③結果資訊顯示包括全部資訊。(未完成 0 分,完成 0.5 分,缺少一項扣除 0.5 分)

2.2 功能要求  

    (1)設計出合理的資料庫和資料表,要求使用 mysql、sqlserver、oracle 三 種資料庫中一種(1 分)

    (2)資料庫連線正常(1 分)。

    (3)使用 Serverlet 實現頁面互動(1 分)。

    (4)使用 Java Bean 封裝資料庫連線操作(1 分。)

1、首先連線資料庫,具體資料庫的使用及如何連線eclipse

import java.sql.*;
public class onnection  {
   public static void main(String args[]) {
    try {
      Class.forName("com.mysql.jdbc.Driver");     //載入MYSQL JDBC驅動類,引號中是驅動類的路徑 
     System.out.println("Success loading Mysql Driver!");
     }
    catch (Exception e) {
      System.out.print(
"Error loading Mysql Driver!"); e.printStackTrace(); } try { Connection connect = DriverManager.getConnection( "jdbc:mysql://localhost:3306/Local instance MySQL8.0","root","chen1025"); //連線URL為 jdbc:mysql//伺服器地址/埠號/資料庫名 ,後面的2個引數分別是登陸使用者名稱和密碼 //獲取資料庫連線getConnection,
System.out.println("Success connect Mysql server!"); Statement stmt = connect.createStatement(); ResultSet rs = stmt.executeQuery("select * from testtable"); //testtable 為你表的名稱 while (rs.next()) { System.out.println(rs.getString("name")); } } catch (Exception e) { System.out.print("get data error!"); e.printStackTrace(); } } }

2.建立一個Course類

package com.hjf.entity;

public class Course {

    private int id;
    private String name;
    private String teacher;
    private String classroom;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getTeacher() {
        return teacher;
    }
    public void setTeacher(String teacher) {
        this.teacher = teacher;
    }
    public String getClassroom() {
        return classroom;
    }
    public void setClassroom(String classroom) {
        this.classroom = classroom;
    }
    
    public Course() {}
    
    public Course(int id, String name, String teacher, String classroom) {
        this.id = id;
        this.name = name;
        this.teacher = teacher;
        this.classroom = classroom;
    }
    
    public Course(String name, String teacher, String classroom) {
        this.name = name;
        this.teacher = teacher;
        this.classroom = classroom;
    }
}

3、建立CourseDao類 來實現課程資訊管理的增刪該查操作

package com.hjf.dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import com.hjf.entity.Course;
import com.hjf.util.DBUtil;

/**
 * 課程Dao
 * Dao層操作資料
 * @author Hu
 *
 */
public class CourseDao {

    /**
     * 新增
     * @param course
     * @return
     */
    public boolean add(Course course) {
        String sql = "insert into course(name, teacher, classroom) values('" + course.getName() + "','" + course.getTeacher() + "','" + course.getClassroom() + "')";
        Connection conn = DBUtil.getConn();
        Statement state = null;
        boolean f = false;
        int a = 0;
        
        try {
            state = conn.createStatement();
            state.executeUpdate(sql);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(state, conn);
        }
        
        if (a > 0) {
            f = true;
        }
        return f;
    }

    /**
     * 刪除
     * 
     * @param id
     * @return
     */
    public boolean delete (int id) {
        boolean f = false;
        String sql = "delete from course where id='" + id + "'";
        Connection conn = DBUtil.getConn();
        Statement state = null;
        int a = 0;
        
        try {
            state = conn.createStatement();
            a = state.executeUpdate(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(state, conn);
        }
        
        if (a > 0) {
            f = true;
        }
        return f;
    }

    /**
     * 修改
     * @param name
     * @param pass
     */
    public boolean update(Course course) {
        String sql = "update course set name='" + course.getName() + "', teacher='" + course.getTeacher() + "', classroom='" + course.getClassroom()
            + "' where id='" + course.getId() + "'";
        Connection conn = DBUtil.getConn();
        Statement state = null;
        boolean f = false;
        int a = 0;

        try {
            state = conn.createStatement();
            a = state.executeUpdate(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(state, conn);
        }
        
        if (a > 0) {
            f = true;
        }
        return f;
    }
    
    /**
     * 驗證課程名稱是否唯一
     * true --- 不唯一
     * @param name
     * @return
     */
    public boolean name(String name) {
        boolean flag = false;
        String sql = "select name from course where name = '" + name + "'";
        Connection conn = DBUtil.getConn();
        Statement state = null;
        ResultSet rs = null;
        
        try {
            state = conn.createStatement();
            rs = state.executeQuery(sql);
            while (rs.next()) {
                flag = true;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(rs, state, conn);
        }
        return flag;
    }
    
    /**
     * 通過ID得到類
     * @param id
     * @return
     */
    public Course getCourseById(int id) {
        String sql = "select * from course where id ='" + id + "'";
        Connection conn = DBUtil.getConn();
        Statement state = null;
        ResultSet rs = null;
        Course course = null;
        
        try {
            state = conn.createStatement();
            rs = state.executeQuery(sql);
            while (rs.next()) {
                String name = rs.getString("name");
                String teacher = rs.getString("teacher");
                String classroom = rs.getString("classroom");
                course = new Course(id, name, teacher, classroom);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(rs, state, conn);
        }
        
        return course;
    }
    
    /**
     * 通過name得到Course
     * @param name
     * @return
     */
    public Course getCourseByName(String name) {
        String sql = "select * from course where name ='" + name + "'";
        Connection conn = DBUtil.getConn();
        Statement state = null;
        ResultSet rs = null;
        Course course = null;
        
        try {
            state = conn.createStatement();
            rs = state.executeQuery(sql);
            while (rs.next()) {
                int id = rs.getInt("id");
                String teacher = rs.getString("teacher");
                String classroom = rs.getString("classroom");
                course = new Course(id, name, teacher, classroom);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(rs, state, conn);
        }
        
        return course;
    }
    
    /**
     * 查詢
     * @param name
     * @param teacher
     * @param classroom
     * @return
     */
    public List<Course> search(String name, String teacher, String classroom) {
        String sql = "select * from course where ";
        if (name != "") {
            sql += "name like '%" + name + "%'";
        }
        if (teacher != "") {
            sql += "teacher like '%" + teacher + "%'";
        }
        if (classroom != "") {
            sql += "classroom like '%" + classroom + "%'";
        }
        List<Course> list = new ArrayList<>();
        Connection conn = DBUtil.getConn();
        Statement state = null;
        ResultSet rs = null;

        try {
            state = conn.createStatement();
            rs = state.executeQuery(sql);
            Course bean = null;
            while (rs.next()) {
                int id = rs.getInt("id");
                String name2 = rs.getString("name");
                String teacher2 = rs.getString("teacher");
                String classroom2 = rs.getString("classroom");
                bean = new Course(id, name2, teacher2, classroom2);
                list.add(bean);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(rs, state, conn);
        }
        
        return list;
    }
    
    /**
     * 全部資料
     * @param name
     * @param teacher
     * @param classroom
     * @return
     */
    public List<Course> list() {
        String sql = "select * from course";
        List<Course> list = new ArrayList<>();
        Connection conn = DBUtil.getConn();
        Statement state = null;
        ResultSet rs = null;

        try {
            state = conn.createStatement();
            rs = state.executeQuery(sql);
            Course bean = null;
            while (rs.next()) {
                int id = rs.getInt("id");
                String name2 = rs.getString("name");
                String teacher2 = rs.getString("teacher");
                String classroom2 = rs.getString("classroom");
                bean = new Course(id, name2, teacher2, classroom2);
                list.add(bean);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(rs, state, conn);
        }
        
        return list;
    }

}

4、呼叫上述增刪改查的函式

package com.hjf.service;

import java.util.List;

import com.hjf.dao.CourseDao;
import com.hjf.entity.Course;

/**
 * CourseService
 * 服務層
 * @author Hu
 *
 */
public class CourseService {

    CourseDao cDao = new CourseDao();
    
    /**
     * 新增
     * @param course
     * @return
     */
    public boolean add(Course course) {
        boolean f = false;
        if(!cDao.name(course.getName())) {
            cDao.add(course);
            f = true;
        }
        return f;
    }
    
    /**
     * 刪除
     */
    public void del(int id) {
        cDao.delete(id);
    }
    
    /**
     * 修改
     * @return 
     */
    public void update(Course course) {
        cDao.update(course);
    }
    
    /**
     * 通過ID得到一個Course
     * @return 
     */
    public Course getCourseById(int id) {
        return cDao.getCourseById(id);
    }

    /**
     * 通過Name得到一個Course
     * @return 
     */
    public Course getCourseByName(String name) {
        return cDao.getCourseByName(name);
    }
    
    /**
     * 查詢
     * @return 
     */
    public List<Course> search(String name, String teacher, String classroom) {
        return cDao.search(name, teacher, classroom);
    }
    
    /**
     * 全部資料
     * @return 
     */
    public List<Course> list() {
        return cDao.list();

5、建立CourseServlet類,其作用是根據輸入的資料,通過Servlet進行處理,對輸入結果做出正確與否的提示。

package com.hjf.servlet;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.hjf.entity.Course;
import com.hjf.service.CourseService;

@WebServlet("/CourseServlet")
public class CourseServlet extends HttpServlet {
    
    private static final long serialVersionUID = 1L;

    CourseService service = new CourseService();
    
    /**
     * 方法選擇
     */
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        String method = req.getParameter("method");
        if ("add".equals(method)) {
            add(req, resp);
        } else if ("del".equals(method)) {
            del(req, resp);
        } else if ("update".equals(method)) {
            update(req, resp);
        } else if ("search".equals(method)) {
            search(req, resp);
        } else if ("getcoursebyid".equals(method)) {
            getCourseById(req, resp);
        } else if ("getcoursebyname".equals(method)) {
            getCourseByName(req, resp);
        } else if ("list".equals(method)) {
            list(req, resp);
        }
    }

    /**
     * 新增
     * @param req
     * @param resp
     * @throws IOException 
     * @throws ServletException 
     */
    private void add(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
        req.setCharacterEncoding("utf-8");
        String name = req.getParameter("name");
        String teacher = req.getParameter("teacher");
        String classroom = req.getParameter("classroom");
        Course course = new Course(name, teacher, classroom);
        
        //新增後訊息顯示
        if(service.add(course)) {
            req.setAttribute("message", "新增成功");
            req.getRequestDispatcher("add.jsp").forward(req,resp);
        } else {
            req.setAttribute("message", "課程名稱重複,請重新錄入");
            req.getRequestDispatcher("add.jsp").forward(req,resp);
        }
    }
    
    /**
     * 全部
     * @param req
     * @param resp
     * @throws ServletException 
     */
    private void list(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{
        req.setCharacterEncoding("utf-8");
        List<Course> courses = service.list();
        req.setAttribute("courses", courses);
        req.getRequestDispatcher("list.jsp").forward(req,resp);
    }

    /**
     * 通過ID得到Course
     * @param req
     * @param resp
     * @throws ServletException 
     */
    private void getCourseById(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{
        req.setCharacterEncoding("utf-8");
        int id = Integer.parseInt(req.getParameter("id"));
        Course course = service.getCourseById(id);
        req.setAttribute("course", course);
        req.getRequestDispatcher("detail2.jsp").forward(req,resp);
    }

    /**
     * 通過名字查詢
     * 跳轉至刪除
     * @param req
     * @param resp
     * @throws IOException
     * @throws ServletException 
     */
    private void getCourseByName(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{
        req.setCharacterEncoding("utf-8");
        String name = req.getParameter("name");
        Course course = service.getCourseByName(name);
        if(course == null) {
            req.setAttribute("message", "查無此課程!");
            req.getRequestDispatcher("del.jsp").forward(req,resp);
        } else {
            req.setAttribute("course", course);
            req.getRequestDispatcher("detail.jsp").forward(req,resp);
        }
    }
    
    /**
     * 刪除
     * @param req
     * @param resp
     * @throws IOException
     * @throws ServletException 
     */
    private void del(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{
        req.setCharacterEncoding("utf-8");
        int id = Integer.parseInt(req.getParameter("id"));
        service.del(id);
        req.setAttribute("message", "刪除成功!");
        req.getRequestDispatcher("del.jsp").forward(req,resp);
    }
    
    /**
     * 修改
     * @param req
     * @param resp
     * @throws IOException
     * @throws ServletException 
     */
    private void update(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{
        req.setCharacterEncoding("utf-8");
        int id = Integer.parseInt(req.getParameter("id"));
        String name = req.getParameter("name");
        String teacher = req.getParameter("teacher");
        String classroom = req.getParameter("classroom");
        Course course = new Course(id, name, teacher, classroom);
        
        service.update(course);
        req.setAttribute("message", "修改成功");
        req.getRequestDispatcher("CourseServlet?method=list").forward(req,resp);
    }
    
    /**
     * 查詢
     * @param req
     * @param resp
     * @throws ServletException 
     */
    private void search(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{
        req.setCharacterEncoding("utf-8");
        String name = req.getParameter("name");
        String teacher = req.getParameter("teacher");
        String classroom = req.getParameter("classroom");
        List<Course> courses = service.search(name, teacher, classroom);
        req.setAttribute("courses", courses);
        req.getRequestDispatcher("searchlist.jsp").forward(req,resp);
    }
}

6、搭建主介面,在其中加入一些連線實現頁面的跳轉。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>首頁</title>
<style>
    .a{
        font-size: 26px;
        margin-top: 20px;
    }
</style>
</head>
<body>
    <div align="center">
        <h1 style="color: red;">課程基本
資訊管理系統</h1>
        <div class="a">
            <a href="add.jsp">課程資訊錄入</a>
        </div>
        <div class="a">
            <a href="CourseServlet?method=list">課程資訊修改</a>
        </div>
        <div class="a">
            <a href="del.jsp">課程資訊刪除</a>
        </div>
        <div class="a">
            <a href="search.jsp">課程資訊查詢</a>
        </div>
    </div>
</body>
</html>

7、新增介面根據要求,增加判斷課程名稱不許重複,任課教師必須為五位的其中一個,上課地點開頭為四個教室的一種

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
    .a{
        margin-top: 20px;
    }
    .b{
        font-size: 20px;
        width: 160px;
        color: white;
        background-color: greenyellow;
    }
</style>
</head>
<body>
    <%
         Object message = request.getAttribute("message");
         if(message!=null && !"".equals(message)){
     
    %>
         <script type="text/javascript">
              alert("<%=request.getAttribute("message")%>");
         </script>
    <%} %>
    <div align="center">
        <h1 style="color: red;">課程資訊錄入</h1>
        <a href="index.jsp">返回主頁</a>
        <form action="CourseServlet?method=add" method="post" onsubmit="return check()">
            <div class="a">
                課程名稱<input type="text" id="name" name="name"/>
            </div>
            <div class="a">
                任課教師<input type="text" id="teacher" name="teacher" />
            </div>
            <div class="a">
                上課地點<input type="text" id="classroom" name="classroom" />
            </div>
            <div class="a">
                <button type="submit" class="b">保&nbsp;&nbsp;&nbsp;存</button>
            </div>
        </form>
    </div>
    <script type="text/javascript">
        function check() {
            var name = document.getElementById("name");;
            var teacher = document.getElementById("teacher");
            var classroom = document.getElementById("classroom");
            
            //非空
            if(name.value == '') {
                alert('課程名稱為空');
                name.focus();
                return false;
            }
            if(teacher.value == '') {
                alert('教師為空');
                teacher.focus();
                return false;
            }
            if(classroom.value == '') {
                alert('上課地點為空');
                classroom.focus();
                return false;
            }
            
            //教師
            if(teacher.value != '王建民' && teacher.value != '王輝' && teacher.value != '劉丹' && teacher.value != '劉立嘉' && teacher.value != '楊子光'){
                alert('教師名稱錯誤');
                return false;
            }
            
            //教室
            if(!/^基教/.test(classroom.value) && !/^一教/.test(classroom.value) && !/^二教/.test(classroom.value) && !/^三教/.test(classroom.value)) {
                alert('上課地點錯誤');
                return false;
            }
        }
    </script>
</body>
</html>

8、刪除介面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
    .a{
        margin-top: 20px;
    }
    .b{
        font-size: 20px;
        width: 160px;
        color: white;
        background-color: greenyellow;
    }
</style>
</head>
<body>
    <%
         Object message = request.getAttribute("message");
         if(message!=null && !"".equals(message)){
     
    %>
         <script type="text/javascript">
              alert("<%=request.getAttribute("message")%>");
         </script>
    <%} %>
    <div align="center">
        <h1 style="color: red;">課程資訊刪除</h1>
        <a href="index.jsp">返回主頁</a>
        <form action="CourseServlet?method=getcoursebyname" method="post" onsubmit="return check()">
            <div class="a">
                課程名稱<input type="text" id="name" name="name"/>
            </div>
            <div class="a">
                <button type="submit" class="b">查&nbsp;&nbsp;&nbsp;找</button>
            </div>
        </form>
    </div>
    <script type="text/javascript">
        function check() {
            var name = document.getElementById("name");;
            
            //非空
            if(name.value == '') {
                alert('課程名稱為空');
                name.focus();
                return false;
            }
        }
    </script>
</body>
</html>





<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
    .a{
        margin-top: 20px;
    }
    .b{
        font-size: 20px;
        width: 160px;
        color: white;
        background-color: greenyellow;
    }
    .tb, td {
        border: 1px solid black;
        font-size: 22px;
    }
</style>
</head>
<body>
    <div align="center">
        <h1 style="color: red;">課程資訊刪除</h1>
        <a href="index.jsp">返回主頁</a>
        <table class="tb">
            <tr>
                <td>課程名稱</td>
                <td>${course.name}</td>
            </tr>
            <tr>
                <td>任課教師</td>
                <td>${course.teacher}</td>
            </tr>
            <tr>
                <td>上課地點</td>
                <td>${course.classroom}</td>
            </tr>
        </table>
        <div class="a">
            <a onclick="return check()" href="CourseServlet?method=del&id=${course.id}">刪&nbsp;&nbsp;&nbsp;除</a>
        </div>
    </div>
    <script type="text/javascript">
        function check() {
            if (confirm("真的要刪除嗎?")){
                return true;
            }else{
                return false;
            }
        }
    </script>
</body>
</html>

9、修改介面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
    .a{
        margin-top: 20px;
    }
    .b{
        font-size: 20px;
        width: 160px;
        color: white;
        background-color: greenyellow;
    }
</style>
</head>
<body>
    <%
         Object message = request.getAttribute("message");
         if(message!=null && !"".equals(message)){
     
    %>
         <script type="text/javascript">
              alert("<%=request.getAttribute("message")%>");
         </script>
    <%} %>
    <div align="center">
        <h1 style="color: red;">課程資訊修改</h1>
        <a href="index.jsp">返回主頁</a>
        <form action="CourseServlet?method=update" method="post" onsubmit="return check()">
            <div class="a">
                課程名稱<input type="text" id="name" name="name" value="${course.name}"/>
            </div>
            <div class="a">
                任課教師<input type="text" id="teacher" name="teacher" value="${course.teacher}"/>
            </div>
            <div class="a">
                上課地點<input type="text" id="classroom" name="classroom" value="${course.classroom}"/>
            </div>
            <input type="hidden" id="id" name="id" value="${course.id}"/>
            <div class="a">
                <button type="submit" class="b">修&nbsp;&nbsp;&nbsp;改</button>
            </div>
        </form>
    </div>
    <script type="text/javascript">
        function check() {
            var name = document.getElementById("name");;
            var teacher = document.getElementById("teacher");
            var classroom = document.getElementById("classroom");
            
            //非空
            if(name.value == '') {
                alert('課程名稱為空');
                name.focus();
                return false;
            }
            if(teacher.value == '') {
                alert('教師為空');
                teacher.focus();
                return false;
            }
            if(classroom.value == '') {
                alert('上課地點為空');
                classroom.focus();
                return false;
            }
            
            //教師
            if(teacher.value != '王建民' && teacher.value != '王輝' && teacher.value != '劉丹' && teacher.value != '劉立嘉' && teacher.value != '楊子光'){
                alert('教師名稱錯誤');
                return false;
            }
            
            //教室
            if(!/^基教/.test(classroom.value) && !/^一教/.test(classroom.value) && !/^二教/.test(classroom.value) && !/^三教/.test(classroom.value)) {
                alert('上課地點錯誤');
                return false;
            }
        }
    </script>
</body>
</html>

10、查詢介面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
    .a{
        margin-top: 20px;
    }
    .b{
        font-size: 20px;
        width: 160px;
        color: white;
        background-color: greenyellow;
    }
</style>
</head>
<body>
    <div align="center">
        <h1 style="color: red;">課程資訊查詢</h1>
        <a href="index.jsp">返回主頁</a>
        <form action="CourseServlet?method=search" method="post" onsubmit="return check()">
            <div class="a">
                課程名稱<input type="text" id="name" name="name"/>
            </div>
            <div class="a">
                任課教師<input type="text" id="teacher" name="teacher" />
            </div>
            <div class="a">
                上課地點<input type="text" id="classroom" name="classroom" />
            </div>
            <div class="a">
                <button type="submit" class="b">查&nbsp;&nbsp;&nbsp;詢</button>
            </div>
        </form>
    </div>
    <script type="text/javascript">
        function check() {
            var name = document.getElementById("name");;
            var teacher = document.getElementById("teacher");
            var classroom = document.getElementById("classroom");
            
            //非空
            if(name.value == '' && teacher.value == '' && classroom.value == '') {
                alert('請填寫一個條件');
                return false;
            }
        }
    </script>
</body>
</html>

11、顯示全部的課程資訊

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
    .a{
        margin-top: 20px;
    }
    .b{
        font-size: 20px;
        width: 160px;
        color: white;
        background-color: greenyellow;
    }
    .tb, td {
        border: 1px solid black;
        font-size: 22px;
    }
</style>
</head>
<body>
    <%
         Object message = request.getAttribute("message");
         if(message!=null && !"".equals(message)){
     
    %>
         <script type="text/javascript">
              alert("<%=request.getAttribute("message")%>");
         </script>
    <%} %>
    <div align="center">
        <h1 style="color: red;">課程資訊列表</h1>
        <a href="index.jsp">返回主頁</a>
        <table class="tb">
            <tr>
                <td>id</td>
                <td>課程名稱</td>
                <td>任課教師</td>
                <td>上課地點</td>
                <td align="center" colspan="2">操作</td>
            </tr>
            <c:forEach items="${courses}" var="item">
                <tr>
                    <td>${item.id}</td>
                    <td>${item.name}</td>
                    <td>${item.teacher}</td>
                    <td>${item.classroom}</td>
                    <td><a href="CourseServlet?method=getcoursebyid&id=${item.id}">修改</a></td>
                </tr>
            </c:forEach>
        </table>
    </div>
</body>
</html>