java学⽣成绩管理系统类图,学⽣成绩管理系统的分析及设计-
应⽤UML建模
《学⽣成绩管理系统的分析及设计-应⽤UML建模》由会员分享,可在线阅读,更多相关《学⽣成绩管理系统的分析及设计-应⽤UML建模(48页珍藏版)》请在⼈⼈⽂库⽹上搜索。
1、第1章 系统需求学⽣成绩管理系统的域1描述如下:在学⽣成绩管理系统中,要为每个学⽣建⽴⼀个帐户,并给学⽣发放帐户(帐户可以提供帐户号、帐户初始密码),帐户中存储学⽣的个⼈信息、选课信息以及课程成绩。持有帐户的学⽣可以登陆系统,只能查看本⼈的个⼈信息、选课信息、个⼈成绩。在登陆时,需要输⼊⾃⼰的账号和密码,系统验证学⽣是否有效(在系统中存在帐户),若有效,则登陆系统,否则重新输⼊,超过三次,则不允许再次输⼊。⽼师可以修改学⽣成绩信息,但仅限于学⽣选修的那门课程。⽼师也有⾃⼰的个⼈帐户,权限⽐学⽣⾼,可以浏览学⽣信息。学⽣成绩管理系统的管理员,可以编辑、添加、删除、学⽣信息。对上述学⽣成绩管理系统。
2、的域描述进⾏分析,可以获得如下功能性需求:学⽣持有帐户 (帐户号和密码)。学⽣可以登陆系统。学⽣可以查看系统消息内的信息。学⽣可以查看个⼈信息,个⼈成绩信息和选课情况。在学期结束时,学⽣可以选课。学⽣可以给管理员发消息。⽼师可以修改选修⾃⼰课程的学⽣的成绩信息。⽼师可以浏览选修⾃⼰课程的学⽣的信息。学⽣成绩管理员可以创建新的学⽣帐户。学⽣成绩管理员可以修改学⽣的帐户
信息。学⽣成绩管理员可以删除已存在的学⽣帐户。学⽣成绩管理员可以在系统中添加学⽣信息。学⽣成绩管理员可以编辑学⽣信息。学⽣成绩管理员可以删除学⽣信息。第2章 需求分析采⽤⽤例驱动的分析⽅法分析需求的主要任务是识别出系统中的参与者和⽤。
3、例,并建⽴⽤例模型。2.1 识别参与者通过对系统需求的分析,可以确定系统中有三个参与者:StudentActor(学⽣)、
TeacherActor(教师)、AdminerActor(管理员)。参与者的描述如下:(1) Student描述:学⽣可以登陆、选课、查看系统信息、个⼈信息、提出意见,还可以取消选课。⽰例:持有帐户的任何⼈或组织。(2) Teacher描述:可以修改学⽣部分信息,浏览学⽣信息。⽰例:持有帐户的任何⼈和组织。(3) Adminer描述:学⽣成绩管理员维护系统,可以创建、修改、删除学⽣的信息,可以添加、编辑、删除学⽣信息,即维护⽬录。⽰例:学⽣成绩管理员。2.2 识别⽤例前⾯。
4、已经识别出了参与者,通过对需求的进⼀步分析,可以确定系统中有如下⽤例存在:(1) Reserve course(选课)本⽤例提供了选课的功能。(2)Cancel course(取消选课)本⽤例提供了取消选课的功能。(3)input score(输⼊成绩)本⽤例提供了教师上传学⽣成绩功能。
(4)update score(更改成绩)本⽤例提供了修改成绩的功能。(5)Maintain student Info (维护学⽣信息)本⽤例提供了创建、修改以及取消学⽣帐户的功能。(6)Maintain teacher Info (维护教师信息)本⽤例提供了
添加、修改、以及删除教师帐户的功能。(7)Maint。
5、ain system Info (维护系统信息)本⽤例提供了添加、修改以及删除系统信息的功能。(8)Log In (登录)本⽤例描述了⽤户如何登录进⼊软件系统。在识别出参与者3和⽤例后,要想建⽴⽤例图,还需要识别出他们之间的关系。“Reserve course”(选课)“Cancel course”(取消选课) 这些动作是由“Student”执⾏的,“input score” (输⼊成绩)、“update score” (更、改成绩)是由“teacher”执⾏的,但是对于软件系统来说,这些操作是由“Adminer”通过系统赋予给他们的,也即以上操作实际上是操作者在允许条件下与系统的交互。“S。
6、tudent”“teacher ”和参与者“Adminer”之间存在着依赖关系,即“Student”借助“Adminer”完成这些⼯作。⽤
例“Maintain student Info” (维护学⽣信息)、“Maintain teacher Info” (维护教师信息)、“Maintain system Info”(维护物系统信息)也是与参与者“Adminer”交互。为了系统的安全性,系统还需要提供进⾏⾝份验证的功能,以确保只有具有权限的“Adminer”才可以使⽤系统的功能,所以“Adminer”必须与⽤例“登录”交互,也即“Adminer”在使⽤系统前,要使⽤⽤户名和密码进⾏登录,系统验证。
7、⽤户的密码正确后,⽤户才可以执⾏进⼀步的操作。系统的⽤例图如下图所⽰:图2.1 系统⽤例图2.3 ⽤例的事件流描述⽤例的事件流4是对完成⽤例⾏为所需的事件的描述。它描述系统应该做什么,⽽
不是描述系统应该怎样做。开始,只是对执⾏⽤例的常规流所需的步骤的简单描述。随着分析的进⾏,通过添⼊更多的详细信息,步骤不断细化。最后,将例外流添加到⽤例的事件流描述中。学⽣成绩管理系统的⽤例事件流描述如下:2.3.1 选课在这个⽤例开始前,student必须登录到系统中。如果这个⽤例成功,在系统中建⽴并存储选课记录,否则,系统的状态没有变化。当学⽣选课时,⽤例启动。学⽣打开系统的选课系统,出现选课界⾯,⽀流S-。
8、1:开课⽬录。⽀流S-2:选课情况。S-1:选课⽬录 (1) 提供学期分类。(2) 检索课程类别(kind) (E-1)(3) 检索要选课程名(coursename) (E-2), (4) 创建选课记录。(5) 存储选课记录。S-2: 选课情况(1) 提供是否要书。(2) 是否加权分。(3) 是否撤销。(4) 查看选课记录。E-1: ⼤⽅向总体分类。E-2: 具体课程名。2.3.2 取消选课在这个⽤例开始前,student必须登录到选课系统中。如果这个⽤例成功,系统删除该选课记录。否则,系统的状态没有变化。当学⽣取消选课时,⽤例启动。(1) 检索选课程名(E-1)。(2) 删除选课记录。E-1。
9、: 若选课记录不存在,系统显⽰提⽰信息,⽤例终⽌。2.3.3 输⼊成绩在这个⽤例开始前,teacher必须登录到系统中。如果这个⽤例成功,系统建⽴输⼊成绩记录。否则,系统的状态没有变化。当teacher输⼊成绩时,⽤例启动。(1) 检索学⽣。(E-1)(2) 输⼊成绩。(3) 将选课成绩存储在系统中。E-1: 该学⽣不存在,系统显⽰提⽰信息,⽤例终⽌。E-2: 系统中不存在该学⽣,系统显⽰提⽰信息,⽤例终⽌。
2.3.4 更改成绩在这个⽤例开始前,teacher必须登录到系统中。如果这个⽤例成功,系统修改选课成绩。否则,系统的状态没有变化。(1)检索学⽣ (E-1)。(2) 修改成绩记录 。(。
10、3) 将修改记录存⼊系统E-1: 该学⽣不存在,系统显⽰提⽰信息,⽤例终⽌。2.3.5 维护学⽣信息 在这个⽤例开始前,Adminer必须登录到系统中。如果这个⽤例成功,系统添加、修改或删除学⽣信息。否则,系统的状态没有变化。当Adminer想维护学⽣信息时,⽤例启动。系统要求Adminer选择所想执⾏的活动(添加学⽣、删除学⽣、修改学⽣)。如果所选的活动是“添加学⽣”,则执⾏分⽀流S-1:添加学⽣。如果所选的活动是“删除学⽣”,则执⾏分⽀流S-2:删除学⽣。如果所选的活动是“修改学⽣”,则执⾏分⽀流 S-3:修改学⽣。S-1: 添加学⽣(1) 提供学⽣的信息,如姓名、学号等。(2) 系统存储。
11、学⽣信息 (E-1)。S-2: 删除学⽣(1) 提供学⽣的信息。(2) 查询学⽣ (E-2)。(3) 查询学⽣的记录 (E-3)。(4) 从系统中删除学⽣的信息,以及学⽣的选课记录。S-3:更改学⽣(1) 提供学⽣的信息。(2) 查询并显⽰学⽣的信息 (E-2),修改相应的信息。(3) 更新系统中学⽣的信息。E-1: 若学⽣已存在,系统显⽰提⽰信息,⽤例终⽌。E-2: 若查询不到学⽣,系统显⽰提⽰信息,⽤例终⽌。E-3: 若⽆记录,系统显⽰提⽰信息,⽤例终⽌。2.3.6 维护教师信息 在这个⽤例开始前,Adminer必须登录到系统中。如果这个⽤例成功,系统添加、修改或删除教师信息。否则,系统的。
12、状态没有变化。当Adminer想维护教师信息时,⽤例启动。系统要求Adminer选择所想执⾏的活动(
添加教师、删除教师、修改教师)如果所选的活动是“添加教师”,则执⾏分⽀流S-1:添加教师信息。如果所选的活动是“删除教师”,则执⾏分⽀流S-2:删除教师信息。如果所选的活动是“修改教师”,则执⾏分⽀流S-3:修改教师信息。S-1: 添加教师信息(1) 提供教师名字、所教课程名等信息。(2)在系统中添加该教师信息 (E-1)。S-2: 删除教师⽣信息(1) 提供所要删除的教师信息。(2) 查询所要删除的教师 (E-2)。(3) 删除该教师的记录 (E-3)。(4) 从系统中删除教师信息,以及相关。
13、的记录。S-3:更改教师信息(1) 提供教师信息。(2) 查询并显⽰教师信息 (E-2),并做相应修改。(3) 更新系统中的学⽣信息。E-1:
若教师信息已存在,系统显⽰提⽰信息,⽤例终⽌。E-2: 若查询不到该书⽼师,系统显⽰提⽰信息,⽤例终⽌。E-3:若⽆记录,系统显⽰提⽰信息,⽤例终⽌。2.3.7 维护系统信息在这个⽤例开始前,Adminer必须登录到系统中。如果这个⽤例成功,系统添加、修改或删除系统信息。否则,系统的状态没有变化。当Adminer想维护系统信息时,⽤例启动。系统要求Adminer选择所想执⾏的活动(添加信息、删除信息、修改信息)。如果所选的活动是“添加系统消息”,则执⾏。
14、分⽀流S-1:添加系统信息。如果所选的活动是“删除系统信息”,则执⾏分⽀流S-2:删除系统信息。如果所选的活动是“修改系统信息”,则执⾏分⽀流S-3:修改系统信息。S-1: 添加系统信息(1) 提供添加信息种类。(2) 查询信息种类(kind),确定系统中已存在该书刊种类 (E-1)。(3) 创建信息名。(4) 将
系统信息存储到系统中。S-2: 删除系统信息(1) 提供系统信息种类。(2) 查询信息名(newname) (E-2)。(3) 删除系统信息。(4) 从系统中删除系统信息后,并更新相关信息。S-3:修改物理学⽣信息(1) 提供系统信息种类。(2) 查询系统信息种类(kind)(E-1。
15、)。(3) 查询并显⽰该系统信息的所有消息。(4) 选择信息名修改其信息。(5) 更新系统中系统信息的信息。E-1: 若系统中不存在该信息种类,添加该书刊种类信息E-2:若存在该信息,则删除。2.3.8 登录如果⽤例成功,参与者可以启动系统并使⽤系统所提供的功能。反之,系统的状态不变。当⽤户希望登录到系统中时,⽤例启动。(1) 系统提⽰⽤户输⼊⽤户名和密码。(2) ⽤户输⼊⽤户名和密码。(3) 系统验证输⼊的⽤户名和密码,若正确(E-1),则⽤户登录到系统中。E-1: 如果⽤户输⼊⽆效的⽤户名和/或密码,系统显⽰错误信息。⽤户可以选择返回基流6的起始点,重新输⼊正确的⽤户名和/或密码;或者取消。
16、登录,⽤例结束。第3章 静态结构模型进⼀步分析系统需求,发现类以及类之间的关系,确定它们的静态结构和动态⾏为,是⾯向对象7分析的基本任务。系统的静态结构模型主要⽤类图和对象图描述。3.1 定义系统对象系统对象的识别可以通过寻系统域8描述和需求描述中的名词来进⾏。从前述的系统需求描述中可以到的名词有:学⽣(student)、教师(teacher)管理员(adminer),这些都是对象图中的候选对象。判断是否应该为这些候选对象创建类的⽅法是:是否有与该对象相关的⾝份和⾏为?(1) 学⽣(student)学⽣是有⾝份的,具有相同名字和不同账号的两个⼈也是不同的。在这个系统中,学⽣有
相关的⾏为,学。
17、⽣可以选课、取消选课,所以学⽣应该成为系统中的⼀个对象。(2) 教师(teacher)教师也有⾝份,具有相同名字和不同账号的两个⼈也是不同的。在这个系统中,教师有相关的⾏为,教师可以上传成绩、修改成绩,所以教师应该成为系统中的⼀个对象。(3) 选课记录(course load)选课记录也有⾝份,选课记录可以被彼此区别,不会被搞混。例如,同⼀个⼈关于不同课程的选课记录是不同的,同⼀门课程被不同学⽣的选课记录也是不同的。(4)成绩记录(score load)成绩记录也有⾝份的,成绩记录可以被彼此区别,不会被搞混。例如,同⼀个⼈关于不同课程的成绩记录是不同的,同⼀门课程被不同学⽣的成绩记录也是不同的。
18、。上述4个类都是实体类,都是持久性的,需要存储在数据库中。本系统采⽤⾯向对象数据库9模型,为了便于从数据库⽂件中引⽤和检索对象,需要⼀个描述对象ID的类。另外,由于上述4个类都是持久性类,因此还可以抽象出⼀个代表持久性的⽗类,该类实现了⾯向对象数据库⽂件的读、写、存储、检索、删除、更新等操作。综上所述,系统中还应该有两个与数据库有关的类:对象ID(OID)和持久类(Persistent)(5)类Persistent类Persistent是类student、teacher、course load的⽗类。类Persistent为商业对象的持久存储提供了⽀持,它的⼦类必须实现从数据库⽂件中读、写对象。
19、属性的操作。(6) 类OID实现了对象ID。类OID的对象可⽤来引⽤系统中的持久10对象,使得从数据输入姓名查询成绩在线
库⽂件中引⽤和检索对象变得容易。抽象出系统中的类后,需要确定这些对象的属性和⾏为。可以根据前述的系统需求分析、⽤例图、⽤例的事件流描述和描述脚本的交互作⽤图,来确定并细化系统中的类、类的操作和属性。下⾯对系统中的类、类的属性及操作逐⼀进⾏描述。(未标注返回值类型的⽅法使⽤缺省返回类型void)。类student属性、⽅法见下图3.1类teacher属性、⽅法见下图3.2类course load属性、⽅法见下图3.3Score load属性、⽅法见下图3.4类Persistent属性、⽅法见下图3。
20、.5类OID属性、⽅法见下图3.6图3.1、3.2、3.3类ScoreloadName :stringID:integerCID:integerTID:integerRead()Getscore()图36 类OID图3.5类Persistent在定义类、类的⽅法和属性时,建⽴动态模型的时序图是很有帮助的,类图和时序图的建⽴是相辅相成的,因为时序图中出现的消息基本上都会成为类中的⽅法,因此在设计阶段绘制系统的时序图时,要尽量使⽤类的已识别出的⽅法来描述消息11,若出现⽆法⽤类的已识别出的⽅法来描述的消息,就要考虑消息是否是类的⼀个待识别的⽅法,若是,就要将这个⽅法及时添加到类的操作类表中,并⽤这。
21、个新⽅法来描述消息。3.2 定义⽤户界⾯类通过对系统的不断分析和细化,可识别出下述界⾯类、类的操作和属性。(1) 类MainWindowMainWindow是系统的主界⾯,不同的⽤户登陆界⾯不⼀样。系统的主界⾯具有菜单和菜单项,当选择不同的菜单项时,⽤户可以执⾏不同的操作。当程序退出时,主界⾯窗⼝关闭。(2) 类studentDialog界⾯类studentDialog是进⾏操作“添加学⽣”、“修改学⽣”或“删除学⽣”时所需的对话框。当选择主窗⼝中的菜单项“添加学⽣”时,对话框弹出,学⽣成绩管理员输⼊学⽣信
息,然后单击按钮“添加”,系统创建学⽣账户并将之存储在系统中。当选择菜单项“修改学⽣”或。
22、“删除学⽣”时,对话框FindSDialog弹出,学⽣成绩管理员输⼊要修改或删除的学⽣的studentID,单击按钮“OK”提交。系统查询数据库检索到学⽣信息后弹出对话框studentDialog,显⽰学⽣的详细信息,如若是“修改学⽣”,学⽣成绩管理员编辑修改学⽣的有关信息,然后单击按钮“更新”,更新系统中存储的学⽣信息;如若是“删除学⽣”,学⽣成绩管理员则单击按钮“删除”,系统删除所存储的该学⽣信息,当然,与该学⽣有关的其他信息业也⼀并删除。(3) 类FindSDialog界⾯类FindSDialog是⽤来根据学⽣ID号查学⽣的对话框。当主窗⼝中的菜单项“删除学⽣”或“修改学⽣”被选择时,。
23、该对话框弹出,学⽣成绩管理员输⼊学⽣ID,单击按钮“OK”,系统查询数据库中具有指定ID号的学⽣信息。(4) 类teacherDialog界⾯类teacherDialog是进⾏操作“添加教师”、“修改教师”或“删除教师”时所需的对话框。当选择主窗⼝中的菜单项“添加教师”时,对话框弹出,学⽣成绩管理员输⼊教师信息,然后单击按钮“添加”,系统创建教师帐户并将之存储在系统中。当选择菜单项“修改教
师”或“删除教师”时,对话框FindTDialog弹出,学⽣成绩管理员输⼊要修改或删除的教师,单击按钮“OK”提交。系统查询数据库获取教师信息后弹出对话框teacherDialog,显⽰教师的详细信息,如若是。
24、“修改书种”,学⽣成绩管理员编辑修改教师的有关信息,然后单击按钮“更新”,更新系统中存储的教
师信息;如若是“删除教师”,学⽣成绩管理员则单击按钮“删除”,该教师信息从系统中删除,与该教师有关的其他信息也⼀并删除。(5) 类FindTDialog界⾯类FindTDialog是⽤来根据教师ID查教师的对话框。当主窗⼝中的菜单项“删除教师”或“修改教师”被选择时,该对话框弹出,学⽣成绩管理员输⼊教师ID,单击按钮“OK”,系统查询数据库中具有指定ID号的教师信息。(6) 类InpUDialog界⾯类InpUDialog是进⾏输⼊成绩操作或更改成绩操作时所需的对话框。当主窗⼝中的菜单项“输⼊”被选择。
25、时,该对话框弹出,教师输⼊分数,然后单击按钮“OK”,输⼊动作被确认,系统创建并保存成绩记录。当选择菜单项“更改成
绩”时,也弹出该对话框,教师输⼊学号,修改相应信息,然后单击按钮“更改”,系统中的更新记录。(7) 类ResCDialog界⾯类ResCDialog是进⾏操作“选课”或“取消选课”时所需的对话框。当主窗⼝中的菜单项“选课”被选择时,该对话框弹出,学⽣输⼊要选课的信息,然后单击按钮“选课”,选课动作被确认,系统创建并保存选课记录。当选择菜单项“取消选课”时,也弹出该对话框,学⽣输⼊课程名及信息,然后单击按钮“取消选课”,系统中的选课记录被删除。(8) 类MessageWindow信息。
26、窗⼝类LoginDialog是⽤来显⽰提⽰信息的对话框。(9) 类LoginDialog界⾯类LoginDialog是⽤来输⼊⽤户名和密码的对话框。类MainWindow属性及⽅法见下图3.8类StudentDialog属性及⽅法见下图3.9类FindSDialog属性及⽅法见下图3.10图3.10类FindBwrDialog图3.9类BorrowerDialog图3.8类MainWindow
类TeacherDialog属性及⽅法见下图3.11类FindTDialog属性及⽅法见下图3.12类InpUDialog属性及⽅法见下图3.13类ResCDialog属性及⽅法见下图3.14类Messa。
27、geWindow属性及⽅法见下图3.15类LoginDialog属性及⽅法见下图3.16图3.12类FindTDialog图3.11类TitleDialog图3.14类ResCDialog图3.13类InpUDialog图3.16类LoginDialog3.15类MessageWindow3.3 建⽴类图识别出了系统中的类后,还要识别出类间的关系,然后就可以建⽴类图了。可将系统中的类分为3个包:GUI包、adminer包和DB包。包GUI由界⾯类组成,包Adminer由实体类组成,包DB由与数据库有关的类组成。包GUI依赖于包Adminer和包DB,包Adminer依赖于包DB。图3.18 系。
28、统包图3.3.1 包GUI中的界⾯类关系窗⼝MessageWindow和对话框studentDialog、FindSDialog、FindTDialog、teacherDialog、InpUDialog、ResCDialog是主窗⼝MainWindow的⼀部分。它们之间存在组合关系。类LoginDialog与类MainWindow 之间存在“⼀对⼀”的关联关系。类FindSDialog与类studentDialog之间是“⼀对⼀”的关联关系。类FindTDialog与类teacherDialog之间的关系也是“⼀对⼀”的关联关系。3.3.2 包adminer中的实体类关系类student、类te。
29、acher、类courseload、coreload都是永久类,它们都是包DB中的类Persistent的⼦类。类teacher与类student之间存在“多对多”的关联关系,每个teacher对象⾄少有⼀个student对象,每个student对象⾄少对应于⼀个teacher对象。类teacher与类courseload 之间存在“⼀对多的关系,tudent与类courseloa
d之间存在“⼀对多”的关联关系,每个student对象可以没有或可有多个courseload(选课),每个courseload(选课)可由多个student选课,学⽣与成绩之间是⼀对多的关系,⼀个学⽣可以有多门课的成绩。
30、。3.3.3 类ResCDialog和其他类关系3.3.4 InpUDialog和其他类的关系图第4章 动态⾏为模型系统的动态⾏为模型由交互作⽤图(时序图和协作图)、状态图、活动图描述。4.1 建⽴交互作⽤图描述系统⽤例的主要场景的交互作⽤图如下所⽰。4.1.1 添加学⽣“添加学⽣”的过程是:学⽣成绩管理员选择菜单项“添加学⽣”,对话框弹出,学⽣成绩管理员输⼊学⽣信息,提交,系统根据学⽣ID号查询数据库,看数据库中是否已存在学⽣,若不存在,创建学⽣帐户,并存储学⽣信息。“添加学⽣”的时序图如图4.1所⽰,学⽣成绩管理员选择菜单项“添加学⽣”,类MainWindow的⽅法addstudent()。
31、被调⽤,然后通过调⽤类studentDialog的⽅法createDialog()创建对话框,学⽣成绩管理员输⼊学⽣信息后,提交信息,类studentDialog的⽅法addstudentr()被调⽤,通过调⽤类student的findBorrower()⽅法来确定该学⽣的帐户是否已存在,若不存在,则调⽤类student的⽅法newstudent()为学⽣创建帐户,并调⽤类student的⽅法store()存储学⽣信息。图4.1 添加学⽣时序图4.1.2 删除学⽣“删除学⽣”的过程是:学⽣成绩管理员选择菜单项“删除学⽣”,查询对话框弹出,学⽣成绩管理员输⼊学⽣ID号,系统查询数据库,显⽰学⽣信。
32、息(若学⽣信息不存在,显⽰提⽰信息,结束删除动作),按下删除按钮,系统确定是否存在与该学⽣相关的信息记录,若有,给出提⽰信息,结束删除动作;若没有,查询是否存在与该学⽣相关的选课记录,若有,删除选课记录。然后从系统中删除学⽣。“删除学⽣”的时序图如图4.2所⽰,学⽣成绩管理员选择菜单项“删除学⽣”,类MainWindow的⽅法delstudent()被调⽤,然后通过调⽤类FindSDialog 的⽅法createDialog()创建对话框。学⽣成绩管理员输⼊学⽣ID号后,提交信息,类FindSDialog的findstudent()⽅法被调⽤,通过调⽤类student的⽅法findstudent。
33、(id:String)来确定该学⽣的帐户是否存在,若存在,返回student对象的OID,然后调⽤类studentDialog的⽅法createDialog(OID)显⽰学⽣信息,在该⽅法执⾏期间,发送消息getstudent(OID)给类student获得学⽣信息。学⽣成绩管理员单击确认按钮删除(若学⽣记录⾮空,则该学⽣不能被删除),实现⽅法如下。类studentDialog的delstudent()⽅法被调⽤,发送消息getnewsLoans()判断学⽣是否有与他有关的记录信息。如果有,则显⽰提⽰信息,终⽌“删除学⽣”的活动(这个替代流未在图中⽰出);如果没有,类student的⽅法get。
34、newsResC()被调⽤,返回学⽣的选课记录的数⽬,如果返回值等于0,则跳过下述循环,如果返回值⾮零对每个选课记录都要执⾏如下操作(也就是说此处是⼀个循环次数为选课记录数的循环,图4.2所⽰描述的是选课记录数为1的情况)。调⽤⽅法getcourseload()获得制定索引的选课记录,然后调⽤类Reservecourse的⽅法getkind()获得所选课的课程类kind对象,再调⽤类kind的⽅法delReserve
course()删除“选课记录”,调⽤类Reserve course的⽅法delete()删除“选课记录”对象。最后调⽤类student的⽅法delete()删除学⽣信息。图4.。
35、2 删除学⽣时序图4.1.3 添加教师“添加教师”的过程是:学⽣成绩管理员选择菜单项“添加教师”,对话框弹出,学⽣成绩管理员输⼊教师信息,提交,系统根据教师ID号查询数据库,看数据库中是否已存在该教师,若不存在,创建教师帐户,并存储教师信息。“添加教师”的时序图如图4.1所⽰,学⽣成绩管理员选择菜单项“添加教师”,类MainWindow的⽅法addteacher()被调⽤,然后通过调⽤类teacherDialog的⽅法createDialog()创建对话框,学⽣成绩管理员输⼊学⽣信息后,提交信息,类teacherDialog的⽅法addteacher()被调⽤,通过调⽤类teacher的fin。
36、dteacher()⽅法来确定该教师的帐户是否已存在,若不存在,则调⽤类student的⽅法newteacher()为学⽣创建帐户,并调⽤类teacher的⽅法store()存储教师信息。4.1.4 删除教师“删除教师”的过程如下。“删除教师”的过程是:学⽣成绩管理员选择菜单项“删除教师”,查询对话框弹出,学⽣成绩管理员输⼊教师ID号,系统查询数据库,显⽰教师信息(若教师信息不存在,显⽰提⽰信息,结束删除动作),按下删除按钮,系统确定是否存在与该教师相关的信息记录,若有,给出提⽰信息,结束删除动作;若没有,查询是否存在与该教师相关的授课记录,若有,删除授课记录。然后从系统中删除学⽣。“删除教师。
37、”的时序图如图4.2所⽰,学⽣成绩管理员选择菜单项“删除教师”,类MainWindow的⽅法delteacher()被调⽤,然后通过调⽤类FindTDialog的⽅法createDialog()创建对话框。学⽣成绩管理员输⼊教师ID号后,提交信息,类FindTDialog的findteacher()⽅法被调⽤,通过调⽤类teacher的⽅法findteacher(id:String)来确定该教师的帐户是否存在,若存在,返回教师对象的OID,然后调⽤类teacherDialog的⽅法createDialog(OID)显⽰教师信息,在该⽅法执⾏期间,发送消息getteacher(OID)给类tea。
38、cher获得教师信息。学⽣成绩管理员单击确认按钮删除(若教师记录⾮空,则该教师不能被删除),实现⽅法如下。类教师Dialog的delteachert()⽅法被调⽤,发送消息getnewsLoans()判断教师是否有与他有关的记录信息。如果有,则显⽰提⽰信息,终⽌“删除教
师”的活动(这个替代流未在图中⽰出);如果没有,类teacher的⽅法getnewsResC()被调⽤,返回教师的授课记录的数⽬,如果返回值等于0,则跳过下述循环,如果返回值⾮零对每个选课记录都要执⾏如下操作(也就是说此处是⼀个循环次数为授课记录数的循环,图4.2所⽰描述的是授课记录数为1的情况)。调⽤⽅法getcourselo。
39、ad()获得制定索引的授课记录,然后调⽤类Reservecourse的⽅法getkind()获得所选课的课程类kind对象,再调⽤类kind的⽅法delReserve course()删除“授课记录”,调⽤类Reserve course的⽅法delete()
删除“授课记录”对象。最后调⽤类teacher的⽅法delete()删除教师信息。图4.4 删除教师4.1.5 选课“选课”的过程是:学⽣选择菜单项“选课”,对话框弹出,学⽣输⼊要选课程名,提交。系统查询数据库,确定该课程否存在。若存在,查询学⽣信息,确定学⽣是否能选,若能,创建并存储选课记录,并将选课记录添加到学⽣信息中,若不能,提⽰信息。
40、;若不存在,则显⽰提⽰信息,学⽣重新输⼊选课课程名或中⽌选课操作。“选课”的时序图如图4.7所⽰。学⽣选择菜单项“选课”,类MainWindow的reserve course()⽅法被调⽤,然后通过调⽤类ResDialog的⽅法reserve course()被调⽤,发送消息findcourse()、findstudent()给类courseload和student查询指定的课程信息和学⽣信息,返回满⾜条件的student对象的OID,接着调⽤⽅法getstudent()返回对应OID的student对象。发送消息给Reserve course,创建courseload对象,调⽤类Reserv。
41、e course的⽅法store()将选课记录存储到数据库中。发送消息addcourse()给student,将选课记录添加到学⽣信息中,然后调⽤类student的⽅法update()更新数据库中的student对象。并存储更改信息。图如下:图4.7 预定书刊4.1.6 取消选课“取消选课”的过程是:学⽣选择菜单项“取消选课”,对话框弹出,学⽣输⼊要取消选课的课程名,提交。系统查询数据库,确定该课程否存在。若不存在,退出系统。查询与之相关的信息,若存在相关信息,弹出提⽰信息,删除相关信息或终⽌删除,退出系统。 学⽣选择菜单项“取消选课”,类MainWindow的cancel course()⽅。
42、法被调⽤,然后通过调⽤类CanCDialog的⽅法cancel course()被调⽤,发送消息findcourse()和findstudent()给类courseload和student查询指定的课程信息和与之相关的学⽣信息,返回满⾜条件的student对象的OID,接着调⽤⽅法getstudent()返回对应OID的student对象。发送消息给cancel course,调⽤类cancel course的cancelNews()的⽅法删除相关信息,再调⽤cancel course的⽅法store()将删除记录存储到数据库中。然后调⽤类student的⽅法update()更新数据库中的st。
43、udent对象。并存储更改信息。4.1.7输⼊成绩“输⼊成绩”的过程是:教师选择菜单项“输⼊成绩”,对话框弹出,教师输⼊要写成绩的学⽣名,提交。系统查询数据库,确定该学⽣是否存在。存在,输⼊成绩,更改相应信息,并将输⼊记录添加到学⽣信息中。若不存在,弹出提⽰信息。教师重新输⼊选课课程名或中⽌选课操作。“输⼊成绩”的时序图如下图所⽰。教师选择菜单项“输⼊成绩”,类MainWindow的inputscore()⽅法被调⽤,然后通过调⽤类InpUscore的⽅法inputscore()被调⽤,发送消息findstudent()给类student 查询指定的学⽣信息,返回满⾜条件的student对象的O。
44、ID,接着调⽤⽅法getstudent()返回对应OID的student对象。发送消息给inputscore(),创建scoreload对象,调⽤类inputscore的⽅法store()将选课记录存储到数据库中。发送消息addscore()给student,将成绩记录添加到学⽣信息中,然后调⽤类student的⽅法update()更新数据库中的student对象。并存储更改信息。4.1.8更新成绩“更改成绩”的过程是:教师选择菜单项“更改成绩”,对话框弹出,教师输⼊要更改成绩的学⽣名,提交。系统查询数据库,确定该学⽣是否存在。若不存在,退出系统。
若存在,并查询与之相关的信息,若存在相关信息,。
45、弹出提⽰信息,删除相关信息并更改信息或终⽌删除,退出系统。 教师选择菜单项“更改成绩”,类MainWindow的updata score()⽅法被调⽤,然后通过调⽤类InpUDialog的⽅法Updata score()被调⽤,发送消息findstudent()给类student查询指定学⽣的信息,返回满⾜条件的student对象的OID,接着调⽤⽅法getstudent()返回对应OID的student对象。发送消息给Updata score(),调⽤类updata score的⽅法store()将更改成绩记录存储到数据库中。然后调⽤类student的⽅法update()更新数据库中的stu。
46、dent对象。并存储更改信并存储更改信息。4.1.9 登录“登录”的时序图如图4.11所⽰,管理员,教师和学⽣登陆系统的⽅式相同,只是所拥有的权限不同,所以,本登陆系统以管理员登陆为例说明。学⽣成绩管理员运⾏系统,类LoginDialog的⽅法createDialog()被调⽤,创建对话框。学⽣成绩管理员键⼊⽤户名和密码,提交,类LoginDialog的⽅法validate()被调⽤,验证⽤户名和密码是否正确,如若正确,发送消息createWindow()给类MainWindow,启动系统,显⽰系统主界⾯。4.2 建⽴状态图4.2.1 对象score的状态图对象score有两个状态:“exis。
47、tence”(有成绩)状态和“Unexistence”(⽆成绩)状态。对象score开始处于“Unexistence”状态,当事件“input score()”(输⼊成绩)发⽣时,对象跃迁到“Loaned”状态,同时执⾏动作store()将成绩存储到数据库中。如果对象处于“Loaned”状态,事
件“updata()”(更改)发⽣,同时执⾏动作store()将成绩存储到数据库中。4.2.2 对象course的状态图对象course有两个状
态:“Reserved”(选中)和“Unreserved”(未选课)状态。对象开始处于“Unreserved”状态,事件“Reserved()”发⽣,对象跃迁到。