豪在这学python 发表于 2023-12-28 02:58:00

做一个简单的选课系统

列出一个简单的选课系统所需要的功能,并列出大致的实现代码,需要将这个系统界面化!@fishc

FishC 发表于 2023-12-28 02:58:13

一个简单的选课系统可能需要以下功能:

1. 学生和课程的管理:包括学生和课程的增删改查操作。
2. 学生选课和退课:学生可从课程列表中选择课程,并可以取消已选的课程。
3. 课程查询:学生可以查看自己已选的课程,或者按照不同条件(如课程名称、授课教师等)查询可选课程。

下面是一个简单的选课系统的界面化实现代码(使用Python的tkinter库):

import tkinter as tk

class Course:
    def __init__(self, name, teacher):
      self.name = name
      self.teacher = teacher

class Student:
    def __init__(self, name):
      self.name = name
      self.courses = []

class CourseSelectionSystem:
    def __init__(self):
      self.students = []
      self.courses = []

    def add_student(self, name):
      student = Student(name)
      self.students.append(student)

    def add_course(self, name, teacher):
      course = Course(name, teacher)
      self.courses.append(course)

    def get_student_courses(self, student):
      return student.courses

    def add_course_for_student(self, student, course):
      student.courses.append(course)

    def remove_course_for_student(self, student, course):
      student.courses.remove(course)

# 创建选课系统对象
selection_system = CourseSelectionSystem()

# 添加学生和课程示例数据
selection_system.add_student("小明")
selection_system.add_student("小红")
selection_system.add_course("数学", "王老师")
selection_system.add_course("英语", "李老师")

# 创建界面
window = tk.Tk()
window.title("选课系统")

# 学生选择列表
student_listbox = tk.Listbox(window)
student_listbox.pack(side=tk.LEFT)

# 课程选择列表
course_listbox = tk.Listbox(window)
course_listbox.pack(side=tk.LEFT)

def refresh_student_list():
    student_listbox.delete(0, tk.END)
    for student in selection_system.students:
      student_listbox.insert(tk.END, student.name)

def refresh_course_list():
    course_listbox.delete(0, tk.END)
    for course in selection_system.courses:
      course_listbox.insert(tk.END, f"{course.name} - {course.teacher}")

def select():
    selected_student_index = student_listbox.curselection()
    selected_student = selection_system.students

    selected_course_index = course_listbox.curselection()
    selected_course = selection_system.courses

    selection_system.add_course_for_student(selected_student, selected_course)

    refresh_student_list()

refresh_student_list()
refresh_course_list()

# 学生选择按钮
select_button = tk.Button(window, text="选课", command=select)
select_button.pack()

window.mainloop()

这个代码演示了如何利用Python的tkinter库来实现一个简单的选课系统界面化。在界面中,左侧显示学生列表,右侧显示课程列表,学生通过选择学生和课程后点击“选课”按钮来进行选课操作。选课操作会更新学生列表,显示当前学生所选的课程。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

豪在这学python 发表于 2023-12-28 02:58:58

FishC 发表于 2023-12-28 02:58
一个简单的选课系统可能需要以下功能:

1. 学生和课程的管理:包括学生和课程的增删改查操作。

使用java完成

FishC 发表于 2023-12-28 02:59:24

豪在这学python 发表于 2023-12-28 02:58
使用java完成

以下是使用Java完成的简单选课系统的示例代码:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

class Course {
    private String name;
    private String teacher;

    public Course(String name, String teacher) {
      this.name = name;
      this.teacher = teacher;
    }

    public String getName() {
      return name;
    }

    public String getTeacher() {
      return teacher;
    }
}

class Student {
    private String name;
    private List<Course> courses;

    public Student(String name) {
      this.name = name;
      this.courses = new ArrayList<>();
    }

    public String getName() {
      return name;
    }

    public List<Course> getCourses() {
      return courses;
    }

    public void addCourse(Course course) {
      courses.add(course);
    }

    public void removeCourse(Course course) {
      courses.remove(course);
    }
}

class CourseSelectionSystem {
    private List<Student> students;
    private List<Course> courses;

    public CourseSelectionSystem() {
      this.students = new ArrayList<>();
      this.courses = new ArrayList<>();
    }

    public void addStudent(String name) {
      Student student = new Student(name);
      students.add(student);
    }

    public void addCourse(String name, String teacher) {
      Course course = new Course(name, teacher);
      courses.add(course);
    }

    public List<Course> getStudentCourses(Student student) {
      return student.getCourses();
    }

    public void addCourseForStudent(Student student, Course course) {
      student.addCourse(course);
    }

    public void removeCourseForStudent(Student student, Course course) {
      student.removeCourse(course);
    }
}

public class CourseSelectionSystemDemo {
    public static void main(String[] args) {
      CourseSelectionSystem selectionSystem = new CourseSelectionSystem();
      Scanner scanner = new Scanner(System.in);

      // 添加学生和课程示例数据
      selectionSystem.addStudent("小明");
      selectionSystem.addStudent("小红");
      selectionSystem.addCourse("数学", "王老师");
      selectionSystem.addCourse("英语", "李老师");

      while (true) {
            System.out.println("======= 选课系统 =======");
            System.out.println("1. 学生选课");
            System.out.println("2. 学生退课");
            System.out.println("3. 查询学生选课");
            System.out.println("0. 退出系统");
            System.out.print("请输入操作编号:");
            int choice = scanner.nextInt();
            scanner.nextLine(); // 清空缓冲区

            if (choice == 0) {
                System.out.println("退出系统,谢谢使用!");
                break;
            }

            switch (choice) {
                case 1:
                  System.out.print("请输入学生姓名:");
                  String studentName = scanner.nextLine();
                  System.out.println("可选课程列表:");
                  List<Course> availableCourses = selectionSystem.getCourses();
                  for (int i = 0; i < availableCourses.size(); i++) {
                        Course course = availableCourses.get(i);
                        System.out.println((i + 1) + ". " + course.getName() + " - " + course.getTeacher());
                  }
                  System.out.print("请输入选课编号:");
                  int courseChoice = scanner.nextInt();
                  scanner.nextLine(); // 清空缓冲区

                  Student student = null;
                  for (Student s : selectionSystem.getStudents()) {
                        if (s.getName().equals(studentName)) {
                            student = s;
                            break;
                        }
                  }

                  if (student != null) {
                        Course selectedCourse = availableCourses.get(courseChoice - 1);
                        selectionSystem.addCourseForStudent(student, selectedCourse);
                        System.out.println("选课成功!");
                  } else {
                        System.out.println("学生不存在!");
                  }
                  break;

                case 2:
                  System.out.print("请输入学生姓名:");
                  studentName = scanner.nextLine();
                  System.out.println("已选课程列表:");
                  student = null;
                  for (Student s : selectionSystem.getStudents()) {
                        if (s.getName().equals(studentName)) {
                            student = s;
                            break;
                        }
                  }

                  if (student != null) {
                        List<Course> selectedCourses = student.getCourses();
                        for (int i = 0; i < selectedCourses.size(); i++) {
                            Course course = selectedCourses.get(i);
                            System.out.println((i + 1) + ". " + course.getName() + " - " + course.getTeacher());
                        }

                        System.out.print("请输入退课编号:");
                        int withdrawChoice = scanner.nextInt();
                        scanner.nextLine(); // 清空缓冲区

                        if (withdrawChoice > 0 && withdrawChoice <= selectedCourses.size()) {
                            Course withdrawnCourse = selectedCourses.get(withdrawChoice - 1);
                            selectionSystem.removeCourseForStudent(student, withdrawnCourse);
                            System.out.println("退课成功!");
                        } else {
                            System.out.println("无效的退课编号!");
                        }
                  } else {
                        System.out.println("学生不存在!");
                  }
                  break;

                case 3:
                  System.out.print("请输入学生姓名:");
                  studentName = scanner.nextLine();
                  student = null;
                  for (Student s : selectionSystem.getStudents()) {
                        if (s.getName().equals(studentName)) {
                            student = s;
                            break;
                        }
                  }

                  if (student != null) {
                        System.out.println("已选课程列表:");
                        List<Course> selectedCourses = student.getCourses();
                        for (int i = 0; i < selectedCourses.size(); i++) {
                            Course course = selectedCourses.get(i);
                            System.out.println((i + 1) + ". " + course.getName() + " - " + course.getTeacher());
                        }
                  } else {
                        System.out.println("学生不存在!");
                  }
                  break;

                default:
                  System.out.println("无效的操作编号!");
                  break;
            }
            System.out.println();
      }

      scanner.close();
    }
}

这个Java代码演示了一个简单的选课系统的实现。在控制台中,用户可以选择进行学生选课、学生退课和查询学生选课等操作,系统会根据用户输入进行相应的处理。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

豪在这学python 发表于 2023-12-28 03:03:21

FishC 发表于 2023-12-28 02:59
以下是使用Java完成的简单选课系统的示例代码:



做一个简单的学生选课系统,我在sql server 中已经建了三张表,Student,Course 和SC表,用于选课系统,如何用Java代码实现基本的增删改查!

FishC 发表于 2023-12-28 03:03:47

豪在这学python 发表于 2023-12-28 03:03
做一个简单的学生选课系统,我在sql server 中已经建 ...

要使用Java代码实现基本的增删改查操作,你需要首先建立与数据库的连接,并使用Java的JDBC API来执行SQL查询和更新操作。以下是一个简单的示例代码,展示了如何使用Java代码实现对学生选课系统中的学生和课程进行增删改查操作:

import java.sql.*;
import java.util.Scanner;

public class CourseSelectionSystem {
    private static final String DB_URL = "jdbc:sqlserver://localhost:1433;DatabaseName=YourDatabaseName";
    private static final String DB_USER = "YourDBUser";
    private static final String DB_PASSWORD = "YourDBPassword";

    public static void main(String[] args) {
      try {
            // 建立与数据库的连接
            Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);

            // 创建Statement对象
            Statement stmt = conn.createStatement();

            // 创建Scanner对象用于获取用户输入
            Scanner scanner = new Scanner(System.in);

            while (true) {
                System.out.println("======= 选课系统 =======");
                System.out.println("1. 添加学生");
                System.out.println("2. 删除学生");
                System.out.println("3. 修改学生姓名");
                System.out.println("4. 查询所有学生");
                System.out.println("5. 添加课程");
                System.out.println("6. 删除课程");
                System.out.println("7. 修改课程名称");
                System.out.println("8. 查询所有课程");
                System.out.println("0. 退出系统");
                System.out.print("请输入操作编号:");
                int choice = scanner.nextInt();
                scanner.nextLine(); // 清空缓冲区

                if (choice == 0) {
                  System.out.println("退出系统,谢谢使用!");
                  break;
                }

                switch (choice) {
                  case 1:
                        System.out.print("请输入学生姓名:");
                        String studentName = scanner.nextLine();
                        stmt.executeUpdate("INSERT INTO Student (name) VALUES ('" + studentName + "')");
                        System.out.println("添加学生成功!");
                        break;
                  case 2:
                        System.out.print("请输入学生id:");
                        int studentId = scanner.nextInt();
                        scanner.nextLine(); // 清空缓冲区
                        stmt.executeUpdate("DELETE FROM Student WHERE id = " + studentId);
                        System.out.println("删除学生成功!");
                        break;
                  case 3:
                        System.out.print("请输入学生id:");
                        studentId = scanner.nextInt();
                        scanner.nextLine(); // 清空缓冲区
                        System.out.print("请输入修改后的学生姓名:");
                        studentName = scanner.nextLine();
                        stmt.executeUpdate("UPDATE Student SET name = '" + studentName + "' WHERE id = " + studentId);
                        System.out.println("修改学生姓名成功!");
                        break;
                  case 4:
                        ResultSet studentResult = stmt.executeQuery("SELECT * FROM Student");
                        while (studentResult.next()) {
                            int id = studentResult.getInt("id");
                            String name = studentResult.getString("name");
                            System.out.println("学生ID:" + id + ",姓名:" + name);
                        }
                        break;
                  case 5:
                        System.out.print("请输入课程名称:");
                        String courseName = scanner.nextLine();
                        stmt.executeUpdate("INSERT INTO Course (name) VALUES ('" + courseName + "')");
                        System.out.println("添加课程成功!");
                        break;
                  case 6:
                        System.out.print("请输入课程id:");
                        int courseId = scanner.nextInt();
                        scanner.nextLine(); // 清空缓冲区
                        stmt.executeUpdate("DELETE FROM Course WHERE id = " + courseId);
                        System.out.println("删除课程成功!");
                        break;
                  case 7:
                        System.out.print("请输入课程id:");
                        courseId = scanner.nextInt();
                        scanner.nextLine(); // 清空缓冲区
                        System.out.print("请输入修改后的课程名称:");
                        courseName = scanner.nextLine();
                        stmt.executeUpdate("UPDATE Course SET name = '" + courseName + "' WHERE id = " + courseId);
                        System.out.println("修改课程名称成功!");
                        break;
                  case 8:
                        ResultSet courseResult = stmt.executeQuery("SELECT * FROM Course");
                        while (courseResult.next()) {
                            int id = courseResult.getInt("id");
                            String name = courseResult.getString("name");
                            System.out.println("课程ID:" + id + ",名称:" + name);
                        }
                        break;
                  default:
                        System.out.println("无效的操作编号!");
                        break;
                }
            }

            // 关闭连接和资源
            stmt.close();
            conn.close();
      } catch (Exception e) {
            e.printStackTrace();
      }
    }
}

请注意,以上代码中的`DB_URL`、`DB_USER`和`DB_PASSWORD`需要根据你的SQL Server配置进行修改。你还需要确保在运行代码之前已经在SQL Server中创建了`Student`表和`Course`表,并且在`SC`表中建立了学生和课程之间的关系。

以上代码演示了如何使用Java的JDBC API来执行SQL查询和更新操作。通过输入不同的操作编号,你可以进行学生和课程的增删改查操作。要退出系统,请选择编号0。

请注意,此代码示例仅为演示目的,并没有包含完整的错误处理和数据验证。在实际应用中,你可能需要添加更多的错误处理和数据验证的代码,以确保系统的稳定性和安全性。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 做一个简单的选课系统