用java简易编写代码【题目描述】:王强是广州城市理工学院的学时,为了方便想制作一个课程表查询小工具,预先输入的课程表,然后可以查看整个课程表,查询结果格式: 1-2节 3-4节 5-6节 7-8节 星期一 Java面向对象程序设计II 大学英语II 体育 星期二 离散数学 大学英语 星期三 也可以自己选择查看某天或某天那个时间段的课程,请你帮忙设计完成此工具开发。 要求: 1、 数据来自真实的课程表; 2、 减少用户输入压力(如星期几不用输入,由用户选择),查询结果整齐; 3、 可以考虑输入的时候没有按照星期顺序输入,但输入后根据星期排序或输入时进行课程重复检查(同一时间不能有两个课程,如周一1-2节只能有一个课程)。
时间: 2024-03-16 15:45:14 浏览: 88
以下是一个简单的Java代码实现,实现了基本的功能要求:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
class Course {
public int day; // 星期几
public int start; // 开始节数
public int end; // 结束节数
public String name; // 课程名称
public Course(int day, int start, int end, String name) {
this.day = day;
this.start = start;
this.end = end;
this.name = name;
}
public String toString() {
return start + "-" + end + "节 " + name;
}
}
class CourseTable {
private ArrayList<Course> courses = new ArrayList<Course>();
public void addCourse(Course course) {
courses.add(course);
}
public void printTable() {
String[] days = { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日" };
for (int i = 0; i < days.length; i++) {
System.out.print(days[i] + " ");
for (int j = 1; j <= 4; j++) {
boolean found = false;
for (int k = 0; k < courses.size(); k++) {
Course course = courses.get(k);
if (course.day == i + 1 && course.start == j) {
System.out.print(course + " ");
found = true;
break;
}
}
if (!found) {
System.out.print(" ");
}
}
System.out.println();
}
}
public void queryCourse() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入要查询的星期几(1-7):");
int day = scanner.nextInt();
System.out.print("请输入要查询的课程开始节数(1-4):");
int start = scanner.nextInt();
System.out.print("请输入要查询的课程结束节数(1-4):");
int end = scanner.nextInt();
boolean found = false;
for (int i = 0; i < courses.size(); i++) {
Course course = courses.get(i);
if (course.day == day && course.start == start && course.end == end) {
System.out.println(course.name);
found = true;
break;
}
}
if (!found) {
System.out.println("未找到课程");
}
}
public void sortCourses() {
Collections.sort(courses, (a, b) -> {
if (a.day != b.day) {
return a.day - b.day;
}
return a.start - b.start;
});
}
public boolean isCourseConflict(Course course) {
for (int i = 0; i < courses.size(); i++) {
Course c = courses.get(i);
if (c.day == course.day && c.start < course.end && c.end > course.start) {
return true;
}
}
return false;
}
public boolean addCourse() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入课程名称:");
String name = scanner.nextLine();
System.out.print("请输入星期几上课(1-7):");
int day = scanner.nextInt();
System.out.print("请输入开始节数(1-4):");
int start = scanner.nextInt();
System.out.print("请输入结束节数(1-4):");
int end = scanner.nextInt();
Course course = new Course(day, start, end, name);
if (isCourseConflict(course)) {
System.out.println("此时间段已有课程,请重新输入");
return false;
}
courses.add(course);
return true;
}
}
public class CourseTableApp {
public static void main(String[] args) {
CourseTable table = new CourseTable();
table.addCourse(new Course(1, 1, 2, "Java面向对象程序设计II"));
table.addCourse(new Course(1, 3, 4, "大学英语II"));
table.addCourse(new Course(1, 5, 6, "体育"));
table.addCourse(new Course(2, 1, 2, "离散数学"));
table.addCourse(new Course(2, 3, 4, "大学英语"));
table.sortCourses();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请选择操作:1.查看课程表 2.查询课程 3.添加课程 4.退出");
int choice = scanner.nextInt();
switch (choice) {
case 1:
table.printTable();
break;
case 2:
table.queryCourse();
break;
case 3:
while (!table.addCourse());
System.out.println("添加成功");
table.sortCourses();
break;
case 4:
return;
default:
System.out.println("无效操作");
break;
}
}
}
}
```
注意,这个实现并没有进行非常严格的输入检查,例如输入的星期几和节数必须在1-7和1-4之间等等,这些检查可以在代码中进行补充。同时,这个实现也没有考虑到多人同时使用的情况,如果需要支持多人同时使用,则需要对数据存储和并发访问进行更严格的控制。
阅读全文