課程小系統開發
首先,我們需要創建一個數據庫表來存儲課程信息。在 MySQL 中,可以使用以下 SQL 語句創建一個名為 courses 的表:
-- 創建數據庫
CREATE DATABASE IF NOT EXISTS course_management;
USE course_management;
-- 創建課程表
CREATE TABLE courses (
id INT AUTO_INCREMENT PRIMARY KEY,
course_name VARCHAR(255) NOT NULL UNIQUE,
teacher_name VARCHAR(50) NOT NULL,
class_location VARCHAR(255) NOT NULL
);
上述代碼創建了一個名為 course_management 的數據庫,并在其中創建了一個 courses 表。courses 表包含四個字段:
id:課程的唯一標識,自增主鍵。
course_name:課程名稱,不允許為空,且必須唯一。
teacher_name:任課教師姓名,不允許為空。
class_location:上課地點,不允許為空。
2. Idea 開發過程
2.1 創建 Maven 項目
打開 IntelliJ IDEA,選擇 File -> New -> Project,在左側選擇 Maven,然后點擊 Next,按照提示完成項目創建。
2.2 添加依賴
在 pom.xml 文件中添加 MySQL 驅動和 Servlet 依賴:
<dependencies>
<!-- MySQL 驅動 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
<!-- Servlet API -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
2.3 創建 Java 類和 JSP 頁面
創建 Java 類:在 src/main/java 目錄下創建包和類,用于處理課程信息的添加邏輯。
創建 JSP 頁面:在 src/main/webapp 目錄下創建 JSP 頁面,用于用戶輸入課程信息。
3. Java 代碼實現
3.1 創建 Course 類
在 src/main/java 目錄下創建 com.example.course 包,并在該包下創建 Course 類,用于封裝課程信息:
package com.example.course;
public class Course {
private String courseName;
private String teacherName;
private String classLocation;
public Course(String courseName, String teacherName, String classLocation) {
this.courseName = courseName;
this.teacherName = teacherName;
this.classLocation = classLocation;
}
public String getCourseName() {
return courseName;
}
public String getTeacherName() {
return teacherName;
}
public String getClassLocation() {
return classLocation;
}
}
3.2 創建 CourseDAO 類
在 com.example.course 包下創建 CourseDAO 類,用于與數據庫交互,添加課程信息:
package com.example.course;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class CourseDAO {
private static final String DB_URL = "jdbc:mysql://localhost:3306/course_management";
private static final String DB_USER = "root";
private static final String DB_PASSWORD = "password";
public boolean addCourse(Course course) {
String sql = "INSERT INTO courses (course_name, teacher_name, class_location) VALUES (?,?,?)";
try (Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, course.getCourseName());
pstmt.setString(2, course.getTeacherName());
pstmt.setString(3, course.getClassLocation());
int rowsInserted = pstmt.executeUpdate();
return rowsInserted > 0;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
}
3.3 創建 CourseServlet 類
在 com.example.course 包下創建 CourseServlet 類,用于處理用戶提交的課程信息:
package com.example.course;
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 java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/addCourse")
public class CourseServlet extends HttpServlet {
private static final String[] TEACHERS = {"王建民", "劉立嘉", "劉丹", "楊子光", "張云霞", "武永亮", "高飛", "孫靜", "黃榮峰"};
private static final String[] LOCATIONS = {"一教", "二教", "三教", "基教"};
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String courseName = request.getParameter("courseName");
String teacherName = request.getParameter("teacherName");
String classLocation = request.getParameter("classLocation");
// 檢查課程名稱是否重復,這里簡單假設添加失敗就是重復
Course course = new Course(courseName, teacherName, classLocation);
CourseDAO courseDAO = new CourseDAO();
// 檢查任課教師是否合法
boolean isTeacherValid = false;
for (String teacher : TEACHERS) {
if (teacher.equals(teacherName)) {
isTeacherValid = true;
break;
}
}
// 檢查上課地點是否合法
boolean isLocationValid = false;
for (String location : LOCATIONS) {
if (classLocation.startsWith(location)) {
isLocationValid = true;
break;
}
}
if (!isTeacherValid) {
out.println("<script>alert('任課教師信息不合法,請重新錄入'); window.history.back();</script>");
} else if (!isLocationValid) {
out.println("<script>alert('上課地點信息不合法,請重新錄入'); window.history.back();</script>");
} else {
if (courseDAO.addCourse(course)) {
out.println("<script>alert('課程信息添加成功'); window.location.href='index.jsp';</script>");
} else {
out.println("<script>alert('課程名稱重復,重新錄入'); window.history.back();</script>");
}
}
}
}
3.4 創建 JSP 頁面
在 src/main/webapp 目錄下創建 index.jsp 頁面,用于用戶輸入課程信息:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>添加課程信息</title>
</head>
<body>
<h1>添加課程信息</h1>
<form action="addCourse" method="post">
<label for="courseName">課程名稱:</label>
<input type="text" id="courseName" name="courseName" required><br><br>
<label for="teacherName">任課教師:</label>
<input type="text" id="teacherName" name="teacherName" required><br><br>
<label for="classLocation">上課地點:</label>
<input type="text" id="classLocation" name="classLocation" required><br><br>
<input type="submit" value="提交">
</form>
</body>
</html>

浙公網安備 33010602011771號