java实现学生选课系统

yizhihongxing

Java实现学生选课系统攻略

系统功能要求

  • 学生登录、退出登录
  • 查看所有课程列表
  • 查询某门课程的详细信息
  • 选课或退课
  • 查看已选课程列表

数据库设计

选课系统的数据模型可以包含以下几个实体:

  • 学生
  • 课程
  • 选课记录

可以使用MySQL作为数据库实现。下面是数据库表的设计:

表名 字段名 类型 约束
students id int 主键,自增长
username varchar(255) 唯一,非空
password varchar(255) 非空
courses id int 主键,自增长
name varchar(255) 唯一,非空
teacher varchar(255) 非空
credit int 非空
selections id int 主键,自增长
student_id int 外键,引用students表的id
course_id int 外键,引用courses表的id
selectionTime datetime 非空

系统实现

登录、退出登录

使用Session或JWT实现用户登录和鉴权,下面是一个简单的示例:

@Post("/login")
public Response login(@QueryValue String username, @QueryValue String password,
                      @SessionAttribute("user") User user) {
    if ("admin".equals(username) && "123456".equals(password)) {
        user.setUsername(username);
        return Response.redirect("/courses");
    } else {
        return Response.redirect("/login?error=true");
    }
}

@Post("/logout")
public Response logout(@SessionAttribute("user") User user) {
    user.setUsername(null);
    return Response.redirect("/login");
}

查看所有课程列表

可以使用Java的JDBC连接数据库,进行查询操作,下面是一个简单的示例:

public List<Course> findAll() throws SQLException {
    try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname", "user", "password");
         Statement stmt = conn.createStatement()) {
        try (ResultSet rs = stmt.executeQuery("SELECT * FROM courses")) {
            List<Course> courses = new ArrayList<>();
            while (rs.next()) {
                Course course = new Course();
                course.setId(rs.getLong("id"));
                course.setName(rs.getString("name"));
                course.setTeacher(rs.getString("teacher"));
                course.setCredit(rs.getInt("credit"));
                courses.add(course);
            }
            return courses;
        }
    }
}

查询某门课程的详细信息

使用Java的JDBC连接数据库,进行查询操作,下面是一个简单的示例:

public Course findById(long id) throws SQLException {
    try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname", "user", "password");
         PreparedStatement stmt = conn.prepareStatement("SELECT * FROM courses WHERE id = ?")) {
        stmt.setLong(1, id);
        try (ResultSet rs = stmt.executeQuery()) {
            if (rs.next()) {
                Course course = new Course();
                course.setId(rs.getLong("id"));
                course.setName(rs.getString("name"));
                course.setTeacher(rs.getString("teacher"));
                course.setCredit(rs.getInt("credit"));
                return course;
            }
            return null;
        }
    }
}

选课或退课

使用Java的JDBC连接数据库,进行插入和删除操作,下面是一个简单的示例:

public boolean insert(Selection selection) throws SQLException {
    try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname", "user", "password");
         PreparedStatement stmt = conn.prepareStatement("INSERT INTO selections (student_id, course_id, selectionTime) VALUES (?, ?, ?)")) {
        stmt.setLong(1, selection.getStudentId());
        stmt.setLong(2, selection.getCourseId());
        stmt.setTimestamp(3, Timestamp.valueOf(selection.getSelectionTime()));
        return stmt.executeUpdate() == 1;
    }
}

public boolean delete(Selection selection) throws SQLException {
    try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname", "user", "password");
         PreparedStatement stmt = conn.prepareStatement("DELETE FROM selections WHERE student_id = ? AND course_id = ?")) {
        stmt.setLong(1, selection.getStudentId());
        stmt.setLong(2, selection.getCourseId());
        return stmt.executeUpdate() == 1;
    }
}

查看已选课程列表

查询某个学生已选的所有课程,可以使用Java的JDBC连接数据库,下面是一个简单的示例:

public List<Course> findByStudentId(long studentId) throws SQLException {
    try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname", "user", "password");
         PreparedStatement stmt = conn.prepareStatement("SELECT c.* FROM selections s JOIN courses c ON s.course_id = c.id WHERE s.student_id = ?")) {
        stmt.setLong(1, studentId);
        try (ResultSet rs = stmt.executeQuery()) {
            List<Course> courses = new ArrayList<>();
            while (rs.next()) {
                Course course = new Course();
                course.setId(rs.getLong("id"));
                course.setName(rs.getString("name"));
                course.setTeacher(rs.getString("teacher"));
                course.setCredit(rs.getInt("credit"));
                courses.add(course);
            }
            return courses;
        }
    }
}

总结

Java实现学生选课系统可以使用Java的JDBC连接数据库进行增删改查操作,使用Session或JWT进行登录和鉴权。除了示例代码中的方法,还可以结合Spring Boot等框架实现更加高效、实用的选课系统,也可以使用ORM框架如Hibernate等简化数据库操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现学生选课系统 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 详解Spring Security中获取当前登录用户的详细信息的几种方法

    下面是详解Spring Security中获取当前登录用户的详细信息的几种方法的完整攻略。 什么是Spring Security? Spring Security是Spring框架的安全认证框架,支持 Web 安全、方法级安全等多种安全场景。通过Spring Security,我们能够实现身份认证、资源授权等各种安全特性,从而保障我们的应用系统在开放网络环境…

    Java 2023年6月3日
    00
  • Spring中AOP概念与两种动态代理模式原理详解

    Spring中AOP概念与两种动态代理模式原理详解 什么是AOP AOP(Aspect Oriented Programming),面向切面编程,是OOP(Object Oriented Programming)的一个补充,它利用一种称为”切面(Aspect)”的技术,将一些与业务无关,却为业务模块所共同调用的功能,如日志记录、性能统计、安全控制、事务处理等…

    Java 2023年5月19日
    00
  • 详解Java中的数组与字符串相关知识

    详解Java中的数组与字符串相关知识 数组 定义 数组是一种用来存储同类型元素集合的数据结构,在Java中通过[]符号定义一个数组。 示例: int[] numbers = new int[5]; 上面的代码定义了一个长度为5的整型数组。 访问 通过下标访问数组元素,下标从0开始,可以直接访问数组元素,也可以遍历数组访问每个元素。 示例: int[] num…

    Java 2023年5月26日
    00
  • Java实现文件上传的方法

    下面是Java实现文件上传的方法的完整攻略。 概述 在一些Web应用中,我们需要实现文件上传功能。Java 语言提供了多种方法,使得文件上传变得简单、易于管理。本文将简述Java实现文件上传的方法,包括基础知识、实现示例、注意事项等。 基础知识 在 Java 中,实现文件上传通常需要完成以下几个步骤: 在前端页面中添加一个文件上传的表单元素,以便用户上传需要…

    Java 2023年5月19日
    00
  • 关于JSP用户登录连接数据库详情

    下面是关于JSP用户登录连接数据库的完整攻略: 1. 数据库准备 首先,我们需要准备一个数据库用来存储用户的信息。可以使用MySQL、Oracle等关系型数据库,也可以使用MongoDB等非关系型数据库。假设我们使用MySQL数据库,那么我们需要: 安装MySQL数据库 创建一个名为“user”的数据库 在“user”数据库中创建一个名为“user_info…

    Java 2023年6月15日
    00
  • springboot结合vue实现增删改查及分页查询

    下面是Spring Boot结合Vue.js实现增删改查和分页查询的攻略: 1. 准备工作 安装Java Development Kit (JDK)及Maven 安装Node.js和Vue CLI 创建Spring Boot项目 2. 引入前端框架 在Spring Boot项目中的pom.xml文件中添加以下依赖: <dependency> &l…

    Java 2023年5月20日
    00
  • Java 切割字符串的几种方式集合

    Java 切割字符串的几种方式集合 在Java中,切割字符串是非常常见的操作。本文将介绍Java中切割字符串的几种方式,包括使用StringTokenizer、split()函数和正则表达式等。 使用StringTokenizer java.util.StringTokenizer类是Java内置用来分割字符串的类,它可以将一个字符串按照指定的分隔符进行分割…

    Java 2023年5月26日
    00
  • spring通过jdbc连接数据库

    介绍 Spring Framework是一个非常受欢迎的Java应用程序开发框架。除了提供基于IoC容器和AOP的组件模型外,Spring还提供了众多的对事实标准技术的集成支持,数据库访问就是其中之一。在本篇文章中,我们将学习如何使用Spring提供的JDBC支持访问数据库。 前置知识 在开始之前,你需要具备以下技能: Java基础知识,包括类、方法、包、接…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部