这是对程序简介的描述:
制作一套软件,跟踪学院讲师讲授的课程。对于每门课程,需要记录课程代码和标题,以及需要记录该课程的讲师列表。该系统应允许在列表中添加和删除课程和讲师,并显示诸如讲授课程的讲师和向特定讲师注册的课程等信息。
到目前为止,我有两个类Lecturer和Course,它们分别有两个属性,如name id,code和title。然后,我创建了另外两个类来保存这两个对象的数据,并且我使用了Map,因此我已经为Lecturer和代码和标题映射了id和名称,当然,它们都在名为LecturerList和CourseList的单独类中。
但现在我无法为讲师分配课程。已经坚持了一个星期了。有任何想法吗?我走错了路吗?
答案 0 :(得分:2)
如何使用地图,例如:
Map<Course, Lecturer>
或
Map<Lecturer, List<Course>>
答案 1 :(得分:2)
我不同意这个问题需要一个数据库。这是面向对象的部分,你遇到了问题。如果你需要持久性,那么就做好了,数据库就会出现。
我从课程和讲师开始,就像你一样。课程将具有所需的代码和标题属性,以及教授它的讲师列表。同样,讲师将有一个名称属性和一个正在教授的课程列表。这对我来说听起来像双向的1:m关系。你的问题陈述的语言有点令人困惑,但听起来像一个课程可以由几个讲师讲授(也许是因为某个课程有几个部分),讲师可以教授不止一门课程。
如果这听起来很准确,我认为你不需要一个CourseList或LecturerList类。
答案 2 :(得分:1)
答案 3 :(得分:0)
问题描述是尖叫“数据库!”。这个问题是关于跟踪相关的信息集,这是数据库软件的设计目标。我对这个问题的解决方案是使用mySQL和mysql的Java数据库连接器。
答案 4 :(得分:0)
尝试制作一个你想要实现的功能模式(我几乎写了UML)。理想情况下,为每个功能实体(讲师,课程等)使用一张纸,一支铅笔和绘图框,并为这些实体之间的每种类型的关系绘制一个标记的,定向的线。如果需要,使用颜色。
如果你想到你画的绳子是什么线条,那么你需要“拉”以获得你被要求的名单?
然后,只有这样,尝试设计类结构......
答案 5 :(得分:0)
我建议在讲师中存储一系列课程,并在课程中列出讲师。然后创建一个模拟“系统”的服务,如:
Course {
String code;
String title;
List<Lecturer> lecturers = new ArrayList<Lecturer>();
... accessors & other business rules ...
}
Lecturer {
int id;
String name;
List<Course> courses = new ArrayList<Course>();
... accessors & other business rules ...
}
LectureServices {
List<Course> coursesAvailable = new ArrayList<Course>();
addCouse(Course course) {
coursesAvailable.add(course);
}
addLecturerToCourse(Lecturer l, Course c) {
... lookup course ...
c.addLecturer(l);
l.addCourse(c);
}
... etc ...
}
答案 6 :(得分:0)
从您的基本对象开始,以及他们拥有的属性
学生 - &gt; id,名称,课程列表
讲师 - &gt;名称,课程列表
当然 - &gt;代码,姓名,学生名单,讲师名单
根据您的要求,该课程似乎是您感兴趣的主要组成部分,因此请将其作为开始的地方。
由于学生选修课程(不是相反),关键功能应该是课程[course.addstudent]的操作。但是,您还需要能够列出特定学生正在学习的所有课程,因此您需要在某个地方保留学生列表,并且学生对象有意义[student.addCourse]。由于将学生添加到课程中并创建学生正在学习的课程列表,这是一个单一的逻辑“动作”,因此有一个功能可以处理整个事情 - 我会回到课程中,因为这是你真正保持的,作为这样做的地方。
伪代码并不完美,但你可以理解:
course.addStudent(student) {
course.listOfStudents.add(student)
student.addCourse(this)
}
student.addCourse(course) { student.listOfCourses.add(course) }
从课程中删除学生,添加和删除讲师是类似的。
答案 7 :(得分:0)
您是否使用地图将讲师和课程ID映射到属性?这听起来并不是面向对象的,如果你试图不做OO,你会遇到麻烦!
这听起来像是一种应用程序,你想要在讲师和课程之间保持双向链接:即每门课程都有一位讲师---这总是如此吗? ---所以课程有get / setLecturer方法,每个Lecturer都有一个带有add / set / remove / getCourse(s)方法的Courses容器。您不需要维护外部表来存储讲师和演讲者。课程详细信息或其映射:在Java中,对象本身可以直接存储,因为一切都是真正的参考。
如果要在接近生产环境的任何地方使用它,那么你将需要一个数据库,我可以推荐Hibernate对象关系映射系统(特别是使用注释驱动的持久性)来自动化大部分数据库检索,存储,级联删除,查询汇集策略等。但如果这只是一个教学练习,那将是太沉重。哦,如果你在制作中使用它,也许可以查看一些现有的课程管理/虚拟学习环境软件:请参阅http://en.wikipedia.org/wiki/Virtual_learning_environment的底部以获取一些参考资料。