因此,我有一个小型的学生注册程序,可以在其中添加/编辑/删除学生和课程,并将它们保存为数组列表(Students.dat和Courses.dat)的文件。我可以随时随意添加/编辑/删除。
现在,我希望能够为上述学生和课程添加成绩和完成日期。
为进一步说明,我为此使用了JFrame和组合框。
(combobox1)选择学生:(来自Students.dat数组列表的学生对象)
(combobox2)选择课程:(从Courses.dat数组列表中选择课程对象)
添加等级(字符串,转换为整数):文本框 添加日期(字符串):文本框
我希望能够打印出类似这样的信息(例如在文本区域中),但是稍后还可以编辑或删除文件中的任何行。
学生对象:Maria Wood(在组合栏中选择)
数学5,2019年3月14日
生物学4,14.03.2019
化学2,2019年3月14日
但是我还必须能够显示课程中的所有学生:
课程对象:数学(在同一容器的组合栏中选择):
Maria Wood 5,2019年3月14日
保罗·格林3,14.03.2019
卡西迪树2,2019年3月14日
因此,学生采用所选组合框的“课程对象”,年级(int)和日期(string)。 课程同时采用所选组合框的学生对象,年级(int)和日期(string)。
我无法将它们存储在哈希图中,因为它将需要一个键/值对,而不是一个键和两个值。
我正在考虑在Student和Course类中有某种ArrayList的ArrayList之类的东西,或者两个类的子类都可以? 我需要此容器中的对象(学生/课程),整数(成绩)和字符串(日期)作为参数。
但是我不知道如何解决这种情况。
我需要能够为同一名学生添加更多课程,或为同一课程添加更多学生。之后,我还需要能够对其进行编辑或删除。
请注意,我不会为此使用数据库。 我希望我的解释很清楚。
答案 0 :(得分:0)
我认为您可以使用和对象,其属性为课程的ID(或主键),学生的ID,年级和日期。然后,您可以将这些对象存储在具有该对象值的哈希图中,并可以将这四个属性作为键进行连接。
答案 1 :(得分:0)
好的。我首先尝试制作一种技术上可行的书,但由于我对最终打印出的内容的控制较少,因此使用起来很尴尬。
因此,我创建了一个新的Grade类,该类接受了(int)成绩和(String)日期参数。在哈希图“更新”之前就创建了Grade实例。向学生存储一个哈希图,同时存储到课程的哈希图。 这使我可以更轻松地访问键和值中的toString()之类的方法。是的,现在一切正常,谢谢您的想法!