3.其他功能需求: (1) 文件CourseDB.java:单例类,模拟数据库中的课程,初始化后至少封装10门课程; (2)文件StudentDB.java:单列类,模拟数据库中的课程,初始化后至少封装5名学生信息; (3)文件Login.java:负责登录的业务逻辑; (4)文件SelectCourse.java:负责选课的业务逻辑; (5)文件MainProcess.java:负责整体业务流程; (6)学生选课成功后,选课状态变更为“已选”,否则,课程状态变更为“可选”;学生选择“已选”课程,提示“该课程无法重复选择”; (7)学生选课成功后,选课人数相应发生变化;代码
时间: 2024-02-12 22:07:47 浏览: 78
一种简单JDBC数据库连接池的实现.rar_connection pool jdbc_site:www.pudn.com_数据库
很抱歉,我的回答中没有包含代码,以下是一个可供参考的Java实现:
CourseDB.java:
```java
import java.util.ArrayList;
import java.util.List;
public class CourseDB {
private static CourseDB instance = null;
private List<Course> courses;
private CourseDB() {
courses = new ArrayList<Course>();
courses.add(new Course("CSE101", "Introduction to Computer Science", 50, 0));
courses.add(new Course("CSE102", "Data Structures and Algorithms", 40, 0));
courses.add(new Course("CSE201", "Operating Systems", 30, 0));
courses.add(new Course("CSE202", "Database Systems", 20, 0));
courses.add(new Course("CSE301", "Artificial Intelligence", 10, 0));
courses.add(new Course("CSE302", "Computer Networks", 50, 0));
courses.add(new Course("CSE401", "Software Engineering", 40, 0));
courses.add(new Course("CSE402", "Computer Graphics", 30, 0));
courses.add(new Course("CSE501", "Advanced Topics in Computer Science", 20, 0));
courses.add(new Course("CSE502", "Parallel and Distributed Computing", 10, 0));
}
public static CourseDB getInstance() {
if (instance == null) {
instance = new CourseDB();
}
return instance;
}
public List<Course> getCourses() {
return courses;
}
public Course getCourseById(String id) {
for (Course c : courses) {
if (c.getId().equals(id)) {
return c;
}
}
return null;
}
}
```
StudentDB.java:
```java
import java.util.ArrayList;
import java.util.List;
public class StudentDB {
private static StudentDB instance = null;
private List<Student> students;
private StudentDB() {
students = new ArrayList<Student>();
students.add(new Student("S001", "John"));
students.add(new Student("S002", "Mary"));
students.add(new Student("S003", "Tom"));
students.add(new Student("S004", "Kate"));
students.add(new Student("S005", "Mike"));
}
public static StudentDB getInstance() {
if (instance == null) {
instance = new StudentDB();
}
return instance;
}
public List<Student> getStudents() {
return students;
}
public Student getStudentById(String id) {
for (Student s : students) {
if (s.getId().equals(id)) {
return s;
}
}
return null;
}
}
```
Login.java:
```java
import java.util.Scanner;
public class Login {
private static final String USERNAME = "admin";
private static final String PASSWORD = "123456";
public boolean doLogin() {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your username: ");
String username = scanner.nextLine();
System.out.print("Enter your password: ");
String password = scanner.nextLine();
if (username.equals(USERNAME) && password.equals(PASSWORD)) {
System.out.println("Login success!");
return true;
} else {
System.out.println("Username or password incorrect!");
return false;
}
}
}
```
SelectCourse.java:
```java
import java.util.Scanner;
public class SelectCourse {
public void doSelect() {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your student ID: ");
String studentId = scanner.nextLine();
System.out.print("Enter the course ID you want to select: ");
String courseId = scanner.nextLine();
Student student = StudentDB.getInstance().getStudentById(studentId);
Course course = CourseDB.getInstance().getCourseById(courseId);
if (student == null) {
System.out.println("Student not found!");
} else if (course == null) {
System.out.println("Course not found!");
} else if (student.hasSelectedCourse(course)) {
System.out.println("This course has been selected by you before!");
} else if (course.isFull()) {
System.out.println("This course is already full!");
} else {
student.selectCourse(course);
course.selectByStudent();
System.out.println("Select course success!");
}
}
}
```
MainProcess.java:
```java
import java.util.List;
import java.util.Scanner;
public class MainProcess {
private static final int MENU_LOGIN = 1;
private static final int MENU_VIEW_COURSES = 2;
private static final int MENU_SELECT_COURSE = 3;
private static final int MENU_VIEW_SELECTED_COURSES = 4;
private static final int MENU_EXIT = 5;
public static void main(String[] args) {
boolean isLogin = false;
while (true) {
if (!isLogin) {
System.out.println("Please login first!");
}
int choice = printMenu(isLogin);
switch (choice) {
case MENU_LOGIN:
isLogin = new Login().doLogin();
break;
case MENU_VIEW_COURSES:
viewCourses();
break;
case MENU_SELECT_COURSE:
if (isLogin) {
new SelectCourse().doSelect();
} else {
System.out.println("Please login first!");
}
break;
case MENU_VIEW_SELECTED_COURSES:
if (isLogin) {
viewSelectedCourses();
} else {
System.out.println("Please login first!");
}
break;
case MENU_EXIT:
System.out.println("Bye!");
return;
default:
System.out.println("Invalid choice, please try again!");
break;
}
}
}
private static int printMenu(boolean isLogin) {
System.out.println("============ Menu ============");
System.out.println("1. Login");
System.out.println("2. View courses");
System.out.println("3. Select course");
System.out.println("4. View selected courses");
System.out.println("5. Exit");
System.out.print("Enter your choice: ");
Scanner scanner = new Scanner(System.in);
int choice = scanner.nextInt();
return choice;
}
private static void viewCourses() {
List<Course> courses = CourseDB.getInstance().getCourses();
System.out.println("============ Courses ============");
System.out.println("ID\t\tName\t\t\t\tCapacity\tSelected");
for (Course course : courses) {
System.out.println(course.getId() + "\t" + course.getName() + "\t\t" + course.getCapacity() + "\t\t" + course.getSelected());
}
System.out.println("=================================");
}
private static void viewSelectedCourses() {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your student ID: ");
String studentId = scanner.nextLine();
Student student = StudentDB.getInstance().getStudentById(studentId);
if (student == null) {
System.out.println("Student not found!");
} else {
List<Course> courses = student.getSelectedCourses();
System.out.println("============ Selected Courses ============");
System.out.println("ID\t\tName");
for (Course course : courses) {
System.out.println(course.getId() + "\t" + course.getName());
}
System.out.println("==========================================");
}
}
}
```
Course.java:
```java
public class Course {
private String id;
private String name;
private int capacity;
private int selected;
public Course(String id, String name, int capacity, int selected) {
this.id = id;
this.name = name;
this.capacity = capacity;
this.selected = selected;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public int getCapacity() {
return capacity;
}
public int getSelected() {
return selected;
}
public boolean isFull() {
return selected >= capacity;
}
public void selectByStudent() {
selected++;
}
}
```
Student.java:
```java
import java.util.ArrayList;
import java.util.List;
public class Student {
private String id;
private String name;
private List<Course> selectedCourses;
public Student(String id, String name) {
this.id = id;
this.name = name;
selectedCourses = new ArrayList<Course>();
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public List<Course> getSelectedCourses() {
return selectedCourses;
}
public boolean hasSelectedCourse(Course course) {
return selectedCourses.contains(course);
}
public void selectCourse(Course course) {
selectedCourses.add(course);
}
}
```
这个选课系统还有很多改进的空间,比如可以将用户输入的代码进行校验,防止输入非法字符导致程序崩溃,也可以增加一些异常处理机制来提高程序的健壮性。
阅读全文