课程小系统开发
首先,我们需要创建一个数据库表来存储课程信息。在 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>