接上一题的情况,进一步考虑存储学生选课情况。在现实生活中,学生选课是多对多的关系:一个学生可以选多门课,一门课也可以被多门。为了能快速检索一个学生所选的课程,和一门课程被哪些学生选,需要定义两个HashTable。 (1) 定义一个集合类HashTable的对象stu_cour。在stu_cour中,key是sno,value是一个Vector(包含该学生所选的所有Course对象)。 (2) 定义一个集合类HashTable的对象cour_stu。在cour_stu中,key是cno,value是一个Vector(包含选择该课程的所有Stuedent对象)。 (3) 自己向stu_cour和cour_stu中添加元素。 (4) 遍历stu_cour,打印出每一位学生的选课情况。 (5) 遍历cour_stu,打印出每一门课程被选的情况。用JAVA实现
时间: 2024-03-10 16:47:59 浏览: 97
学生选课信息系统
好的,根据你的需求,我来给出Java代码实现:
```
import java.util.*;
public class Student {
private String sno;
public Student(String sno) {
this.sno = sno;
}
public String getSno() {
return sno;
}
}
public class Course {
private String cno;
public Course(String cno) {
this.cno = cno;
}
public String getCno() {
return cno;
}
}
public class Main {
public static void main(String[] args) {
// 定义stu_cour和cour_stu两个HashTable
Hashtable<String, Vector<Course>> stu_cour = new Hashtable<>();
Hashtable<String, Vector<Student>> cour_stu = new Hashtable<>();
// 添加元素
Student stu1 = new Student("1001");
Student stu2 = new Student("1002");
Course cour1 = new Course("c001");
Course cour2 = new Course("c002");
Course cour3 = new Course("c003");
// 学生所选课程
Vector<Course> courses1 = new Vector<>();
courses1.add(cour1);
courses1.add(cour2);
Vector<Course> courses2 = new Vector<>();
courses2.add(cour2);
courses2.add(cour3);
// 课程被哪些学生选
Vector<Student> students1 = new Vector<>();
students1.add(stu1);
students1.add(stu2);
Vector<Student> students2 = new Vector<>();
students2.add(stu2);
// 将学生选课信息添加到stu_cour中
stu_cour.put(stu1.getSno(), courses1);
stu_cour.put(stu2.getSno(), courses2);
// 将课程选课信息添加到cour_stu中
cour_stu.put(cour1.getCno(), students1);
cour_stu.put(cour2.getCno(), students1);
cour_stu.put(cour2.getCno(), students2);
cour_stu.put(cour3.getCno(), students2);
// 遍历stu_cour,打印每一位学生的选课情况
System.out.println("每一位学生的选课情况为:");
for (String sno : stu_cour.keySet()) {
System.out.print("学号为" + sno + "的学生选了以下课程:");
Vector<Course> courses = stu_cour.get(sno);
for (Course cour : courses) {
System.out.print(cour.getCno() + " ");
}
System.out.println();
}
// 遍历cour_stu,打印每一门课程被选的情况
System.out.println("每一门课程被以下学生选了:");
for (String cno : cour_stu.keySet()) {
System.out.print("课程号为" + cno + "的课程被以下学生选了:");
Vector<Student> students = cour_stu.get(cno);
for (Student stu : students) {
System.out.print(stu.getSno() + " ");
}
System.out.println();
}
}
}
```
这段代码实现了定义两个HashTable对象,添加元素,以及遍历输出每位学生的选课情况和每门课程被选的情况。注意,为了方便起见,我将学生和课程分别定义为了Student和Course类,并在添加元素时创建了相应的对象。你可以根据实际情况进行修改。
阅读全文