import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
class Course {
private String name;
private String teacher;
private String classroom;
private int dayOfWeek;
private int startTime;
private int endTime;
private String weekInfo;
public Course(String name, String teacher, String classroom, int dayOfWeek,
int startTime, int endTime, String weekInfo) {
this.name = name;
this.teacher = teacher;
this.classroom = classroom;
this.dayOfWeek = dayOfWeek;
this.startTime = startTime;
this.endTime = endTime;
this.weekInfo = weekInfo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTeacher() {
return teacher;
}
public void setTeacher(String teacher) {
this.teacher = teacher;
}
public String getClassroom() {
return classroom;
}
public void setClassroom(String classroom) {
this.classroom = classroom;
}
public int getDayOfWeek() {
return dayOfWeek;
}
public void setDayOfWeek(int dayOfWeek) {
this.dayOfWeek = dayOfWeek;
}
public int getStartTime() {
return startTime;
}
public void setStartTime(int startTime) {
this.startTime = startTime;
}
public int getEndTime() {
return endTime;
}
public void setEndTime(int endTime) {
this.endTime = endTime;
}
public String getWeekInfo() {
return weekInfo;
}
public void setWeekInfo(String weekInfo) {
this.weekInfo = weekInfo;
}
@Override
public String toString() {
return String.format("%s\n教师: %s\n教室: %s\n时间: 周%s %d-%d节 %s",
name, teacher, classroom, getDayName(dayOfWeek), startTime, endTime, weekInfo);
}
private String getDayName(int day) {
switch (day) {
case 1: return "一";
case 2: return "二";
case 3: return "三";
case 4: return "四";
case 5: return "五";
case 6: return "六";
case 7: return "日";
default: return "未知";
}
}
}
class Schedule {
private List<Course> courses;
public Schedule() {
this.courses = new ArrayList<>();
}
public void addCourse(Course course) {
courses.add(course);
}
public boolean removeCourse(String courseName) {
return courses.removeIf(course -> course.getName().equalsIgnoreCase(courseName));
}
public List<Course> findCourseByName(String name) {
List<Course> result = new ArrayList<>();
for (Course course : courses) {
if (course.getName().toLowerCase().contains(name.toLowerCase())) {
result.add(course);
}
}
return result;
}
public List<Course> findCourseByDay(int day) {
List<Course> result = new ArrayList<>();
for (Course course : courses) {
if (course.getDayOfWeek() == day) {
result.add(course);
}
}
return result;
}
public void displayAllCourses() {
if (courses.isEmpty()) {
System.out.println("课表中暂无课程。");
return;
}
System.out.println("=== 全部课程 ===");
for (Course course : courses) {
System.out.println(course);
System.out.println("------------------");
}
}
public void displayDayCourses(int day) {
List<Course> dayCourses = findCourseByDay(day);
if (dayCourses.isEmpty()) {
System.out.println("周" + getDayName(day) + "没有课程安排。");
return;
}
System.out.println("=== 周" + getDayName(day) + "课程 ===");
for (Course course : dayCourses) {
System.out.println(course);
System.out.println("------------------");
}
}
private String getDayName(int day) {
switch (day) {
case 1: return "一";
case 2: return "二";
case 3: return "三";
case 4: return "四";
case 5: return "五";
case 6: return "六";
case 7: return "日";
default: return "未知";
}
}
}
public class PersonalSchedule {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Schedule schedule = new Schedule();
schedule.addCourse(new Course("高等数学", "张教授", "教学楼201", 1, 1, 2, "1-16周"));
schedule.addCourse(new Course("大学英语", "李老师", "外语楼105", 2, 3, 4, "1-16周"));
schedule.addCourse(new Course("计算机基础", "王教授", "计算机楼301", 3, 5, 6, "1-8周"));
schedule.addCourse(new Course("体育", "赵教练", "操场", 5, 7, 8, "1-16周"));
while (true) {
System.out.println("\n=== 个人课表管理系统 ===");
System.out.println("1. 查看全部课程");
System.out.println("2. 按星期查看课程");
System.out.println("3. 按课程名查找");
System.out.println("4. 添加课程");
System.out.println("5. 删除课程");
System.out.println("0. 退出");
System.out.print("请选择操作: ");
int choice;
try {
choice = scanner.nextInt();
scanner.nextLine();
} catch (Exception e) {
System.out.println("输入无效,请重新输入。");
scanner.nextLine();
continue;
}
switch (choice) {
case 1:
schedule.displayAllCourses();
break;
case 2:
System.out.print("请输入星期几(1-7): ");
int day = scanner.nextInt();
scanner.nextLine();
if (day < 1 || day > 7) {
System.out.println("输入无效,星期几应为1-7的数字。");
break;
}
schedule.displayDayCourses(day);
break;
case 3:
System.out.print("请输入课程名(或部分名称): ");
String name = scanner.nextLine();
List<Course> foundCourses = schedule.findCourseByName(name);
if (foundCourses.isEmpty()) {
System.out.println("未找到相关课程。");
} else {
System.out.println("=== 搜索结果 ===");
for (Course course : foundCourses) {
System.out.println(course);
System.out.println("------------------");
}
}
break;
case 4:
System.out.println("=== 添加新课程 ===");
System.out.print("课程名称: ");
String newName = scanner.nextLine();
System.out.print("授课教师: ");
String teacher = scanner.nextLine();
System.out.print("教室: ");
String classroom = scanner.nextLine();
System.out.print("星期几(1-7): ");
int newDay = scanner.nextInt();
System.out.print("开始节次(1-12): ");
int startTime = scanner.nextInt();
System.out.print("结束节次(1-12): ");
int endTime = scanner.nextInt();
scanner.nextLine();
System.out.print("周次信息(如1-16周): ");
String weekInfo = scanner.nextLine();
if (newDay < 1 || newDay > 7 || startTime < 1 || startTime > 12 ||
endTime < 1 || endTime > 12 || startTime > endTime) {
System.out.println("输入无效,请检查星期几和节次是否正确。");
break;
}
schedule.addCourse(new Course(newName, teacher, classroom, newDay, startTime, endTime, weekInfo));
System.out.println("课程添加成功!");
break;
case 5:
System.out.print("请输入要删除的课程名称: ");
String courseToRemove = scanner.nextLine();
if (schedule.removeCourse(courseToRemove)) {
System.out.println("课程删除成功!");
} else {
System.out.println("未找到该课程。");
}
break;
case 0:
System.out.println("感谢使用个人课表管理系统,再见!");
scanner.close();
return;
default:
System.out.println("无效的选择,请重新输入。");
}
}
}
}