课程小系统开发

首先,我们需要创建一个数据库表来存储课程信息。在 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>
posted @ 2025-03-11 22:00  霸王鸡  阅读(36)  评论(0)    收藏  举报