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(登录)本用例描述了用户如何登录进入软件系统。在识别出参与者和用例后,要想建立用例图,还需要识别出他 们之间的关系。“Reserve course(选课)Cancel coursew(取 消选课)这些动作是由“Student”执行的,“input score(输入 成绩)、“update score”(更、改成绩)是由“teacher”执行的,但是对于软件系统来说,这些操作是由“Adminer”通过系统赋予给 他们的,也即以上操作实际上是操作者在允许条件下与系统的交互。“Student
6、”“teacher”和参与者Adminer”之间存在着依赖关系,即“Student借助Adminer”完成这些工作。用例Maintain student Info”(维护学生信息)、Maintain teacher Info”(维护教师信 息)、“Maintain system Info”(维护物系统信息)也是与参与者“Adminer”交互。为了系统的安全性,系统还需要提供进行身份验 证的功能,以确保只有具有权限的“Adminer”才可以使用系统的功 能,所以“Adm所er”必须与用例“登录”交互,也即“Adm所er”在使用系统前,要使用用户名和密码进行登录,系统验证用户的密 码正确后,用户才
7、可以执行进一步的操作。系统的用例图如下图所示:tencher图2.1系统用例图2.3用例的事件流描述用例的事件流是对完成用例行为所需的事件的描述。它描述系统应 该做什么,而不是描述系统应该怎样做。开始,只是对执行用例的常规流所需的步骤的简单描述。随着分析 的进行,通过添入更多的详细信息,步骤不断细化。最后,将例外流添 加到用例的事件流描述中。学生成绩管理系统的用例事件流描述如下:2.3.1选课在这个用例开始前,student必须登录到系统中。如果这个用例成功,在系统中建立并存储选课记录,否则,系统的状态没有变化。当学生选课时,用例启动。学生打开系统的选课系统,出现选课界 面,支流ST:开课目录
8、。支流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)o(2)删除选课记录。E-1:若选课记录不存在,系统显示提示信息,用例终止。
9、2.3.3输入成绩在这个用例开始前,teacher必须登录到系统中。如果这个用例成功,系统建立输入成绩记录。否则,系统的状态没有变化。当teacher输入成绩时,用例启动。(1)检索学生。(E-1)(2)输入成绩。(3)将选课成绩存储在系统中。E-1:该学生不存在,系统显示提示信息,用例终止。E-2:系统中不存在该学生,系统显示提示信息,用例终止。2.3.4更改成绩在这个用例开始前,teacher必须登录到系统中。如果这个用例成功,系统修改选课成绩。否则,系统的状态没有变化。(1)检索学生(E-l)o(2)修改成绩记录。(3)将修改记录存入系统E-1:该学生不存在,系统显示提示信息,用例终止。
10、2.3.5维护学生信息在这个用例开始前,Adminer必须登录到系统中。如果这个用例成功,系统添加、修改或删除学生信息。否则,系统的状态没有变化。当Adminer 想维护学生信息时,用例启动。系统要求Adminer选择所想执行的活动(添加学生、删除学生、修改学生)。如果所选的活动是“添加学生”,则执行分支流S-1:添加学生。如果所选的活动是“删除学生”,则执 行分支流S-2:删除学生。如果所选的活动是“修改学生”,则执行分 支流S-3:修改学生。S-1:添加学生(1)提供学生的信息,如姓名、学号等。(2)系统存储学生信息(E-l)oS-2:删除学生(1)提供学生的信息。(2)查询学生(E-2)
11、o(3)查询学生的记录(E-3)o(4)从系统中删除学生的信息,以及学生的选课记录。S-3:更改学生(1)提供学生的信息。(2)查询并显示学生的信息(E-2),修改相应的信息。(3)更新系统中学生的信息。E-1:若学生已存在,系统显示提示信息,用例终止。E-2:若查询不到学生,系统显示提示信息,用例终止。E-3:若无记录,系统显示提示信息,用例终止。2.3.6维护教师信息在这个用例开始前,Adminer必须登录到系统中。如果这个用例成功,系统添加、修改或删除教师信息。否则,系统的状态没有变化。当Adminer 想维护教师信息时,用例启动。系统要求Adminer选择所想执行的活动(添加教师、删除
12、教师、修改教师)如果所选的活动是“添加教师”,则 执行分支流S-1:添加教师信息。如果所选的活动是“删除教师”,则 执行分支流S-2:删除教师信息。如果所选的活动是“修改教师”,则 执行分支流S-3:修改教师信息。S-1:添加教师信息(1)提供教师名字、所教课程名等信息。(2)在系统中添加该教师信息(E-l)oS-2:删除教师生信息(1)提供所要删除的教师信息。(2)查询所要删除的教师(E-2)o(3)删除该教师的记录(E-3)o(4)从系统中删除教师信息,以及相关的记录。S-3:更改教师信息(1)提供教师信息。(2)查询并显示教师信息(E-2),并做相应修改。(3)更新系统中的学生信息。E-
13、1:若教师信息已存在,系统显示提示信息,用例终止。E-2:若查询不到该书老师,系统显示提示信息,用例终止。E-3:若无记录,系统显示提示信息,用例终止。2.3.7维护系统信息在这个用例开始前,Adminer必须登录到系统中。如果这个用例成功,系统添加、修改或删除系统信息。否则,系统的状态没有变化。当Adminer 想维护系统信息时,用例启动。系统要求Adminer选择所想执行的活动(添加信息、删除信息、修改信息)。如果所选的活动是“添加系统消息”,则执行分支流S-1:添加系统信息。如果所选的活动是“删除系统信息”,则执行分支流S-2:删除系统信息。如果所选的活动是“修改系统信息”,则执行分支流
14、S-3:修改系统信息。S-1:添加系统信息(1)提供添加信息种类。(2)查询信息种类(kind),确定系统中已存在该书刊种类(E-1)o(3)创建信息名。(4)将系统信息存储到系统中。S-2:删除系统信息(1)提供系统信息种类。(2)查询信息名(newname)(E-2)o(3)删除系统信息。(4)从系统中删除系统信息后,并更新相关信息。S-3:修改物理学生信息(1)提供系统信息种类。(2)查询系统信息种类(kind)(ET)。(3)查询并显示该系统信息的所有消息。(4)选择信息名修改其信息。(5)更新系统中系统信息的信息。E-1:若系统中不存在该信息种类,添加该书刊种类信息E-2:若存在该信
15、息,则删除。2.3.8登录如果用例成功,参与者可以启动系统并使用系统所提供的功能。反 之,系统的状态不变。当用户希望登录到系统中时,用例启动。(1)系统提示用户输入用户名和密码。(2)用户输入用户名和密码。(3)系统验证输入的用户名和密码,若正确(E-1),则用户登录到系统 中。E-1:如果用户输入无效的用户名和/或密码,系统显示错误信息。用户可以选择返回基流的起始点,重新输入正确的用户名和/或密 码;或者取消登录,用例结束。第3章静态结构模型进一步分析系统需求,发现类以及类之间的关系,确定它们的静态 结构和动态行为,是面向对象分析的基本任务。系统的静态结构模型 主要用类图和对象图描述。3.1
16、定义系统对象系统对象的识别可以通过寻找系统域描述和需求描述中的名词来 进行。从前述的系统需求描述中可以找到的名词有:学生(student)、教 师(teacher)管理员(adminer),这些都是对象图中的候选对象。判断是否应该为这些候选对象创建类的方法是:是否有与该对象相 关的身份和行为?(1)学生(student)学生是有身份的,具有相同名字和不同账号的两个人也是不同 的。在这个系统中,学生有相关的行为,学生可以选课、取消选课,所以学生应该成为系统中的一个对象。(2)教师(teacher)教师也有身份,具有相同名字和不同账号的两个人也是不同的。在这个系统中,教师有相关的行为,教师可以上传
17、成绩、修改成绩,所以教师应该成为系统中的一个对象。(3)选课记录(course load)选课记录也有身份,选课记录可以被彼此区别,不会被搞混。例 如,同一个人关于不同课程的选课记录是不同的,同一门课程被不 同学生的选课记录也是不同的。(4)成绩记录(score load)成绩记录也有身份的,成绩记录可以被彼此区别,不会被搞 混。例如,同一个人关于不同课程的成绩记录是不同的,同一门课 程被不同学生的成绩记录也是不同的。上述4个类都是实体类,都是持久性的,需要存储在数据库中。本 系统采用面向对象数据库模型,为了便于从数据库文件中引用和检索 对象,需要一个描述对象ID的类。另外,由于上述4个类都是
18、持久性类,因此还可以抽象出一个代表持久性的父类,该类实现了面向对象数据库 文件的读、写、存储、检索、删除、更新等操作。综上所述,系统中还 应该有两个与数据库有关的类:对象ID(OID)和持久类(Persistent)(5)类 Persistent类 Persistent 是类 student teacher、course load 的父类。类Persistent为商业对象的持久存储提供了支持,它的子类必须实 现从数据库文件中读、写对象属性的操作。(6)类0ID实现了对象ID。类0ID的对象可用来引用系统中的持久皿对象,使得从数据库文 件中引用和检索对象变得容易。抽象出系统中的类后,需要确定这些
19、对象的属性和行为。可以根据 前述的系统需求分析、用例图、用例的事件流描述和描述脚本的交互作 用图,来确定并细化系统中的类、类的操作和属性。下面对系统中的类、类的属性及操作逐一进行描述。(未标注返回值类型的方法使用缺省返回 类型void)。类student属性、方法见下图3.1 类teacher属性、方法见下图3.2 类course load属性、方法见下图3.3 Score load属性、方法见下图3.4 类Persistent属性、方法见下图3.5 类0ID属性、方法见下图3.6StudentTeacherName:stringName:stringstudentID:stringteach
20、er ID:stringcourseloans:OIDcourseloans:OIDscordloans:OIDscoreloans:OIDNewstudentONewteacherOFindstudentOFindteacherOGetstudentOGetteacherOAddcourseloadOAddcourseloadOGetcourseloans()GetcourseloansODelcourseloans()DelcourseloansO,WriteOWteOReadQReadQSetcoursenameOSetcoursenameOSetcourselDOSetcourselD
21、OsetnameOsetnameOgetIDOgetIDOgetscoreOset sco reO1 出i,心/6-G:NUc i图 3.1、3.2、3.3 类Courseload Name:string ID:integer Newcourse 0 FiadcourseO DelcourseO setIDO getlDQ writeO readQScoreload Name:string ID integerCID:integerTID:integer Read()GetscoreQPersistent 电oid:OIDPnew PersistentO getObject。getOID()s
22、tore。|jdeleteO PupdateO F/vHte()I Bread()OID第className:String 惑dNumber:IntegerOnew OID()getClassName()getldNumber()equalTo()Fvrite。read()图 3.5 类 Persistent图36类OID在定义类、类的方法和属性时,建立动态模型的时序图是很有帮助的,类图和时序图的建立是相辅相成的,因为时序图中出现的消息基本上都 会成为类中的方法,因此在设计阶段绘制系统的时序图时,要尽量使用 类的已识别出的方法来描述消息,若出现无法用类的已识别出的方法 来描述的消息,就要考虑消
23、息是否是类的一个待识别的方法,若是,就 要将这个方法及时添加到类的操作类表中,并用这个新方法来描述消息。3.2定义用户界面类通过对系统的不断分析和细化,可识别出下述界面类、类的操作和属 性。(1)类 MainWindowMainWindow是系统的主界面,不同的用户登陆界面不一样。系 统的主界面具有菜单和菜单项,当选择不同的菜单项时,用户可以 执行不同的操作。当程序退出时,主界面窗口关闭。(2)类 studentDialog界面类studentDialog是进行操作“添加学生”、“修改学生”或“删除学生”时所需的对话框。当选择主窗口中的菜单项“添加学生”时,对话框弹出,学生成 绩管理员输入学生
24、信息,然后单击按钮“添加”,系统创建学生账 户并将之存储在系统中。当选择菜单项“修改学生”或“删除学生”时,对话框F indSDialog弹出,学生成绩管理员输入要修改或删除 的学生的studentID,单击按钮“0K”提交。系统查询数据库检索到 学生信息后弹出对话框studentDialog,显示学生的详细信息,如若 是“修改学生”,学生成绩管理员编辑修改学生的有关信息,然后 单击按钮“更新”,更新系统中存储的学生信息;如若是“删除学 生”,学生成绩管理员则单击按钮“删除,系统删除所存储的该 学生信息,当然,与该学生有关的其他信息业也一并删除。(3)类 F indSDialog界面类F in
25、dSDialog是用来根据学生ID号查找学生的对话框。当主窗口中的菜单项“删除学生”或“修改学生”被选择时,该对 话框弹出,学生成绩管理员输入学生ID,单击按钮“0K”,系统查询 数据库中具有指定ID号的学生信息。(4)类 teacherDialog界面类teacherDialog是进行操作“添加教师”、“修改教师”或“删除教师”时所需的对话框。当选择主窗口中的菜单项“添加 教师”时,对话框弹出,学生成绩管理员输入教师信息,然后单击 按钮“添加”,系统创建教师帐户并将之存储在系统中。当选择菜 单项“修改教师”或“删除教师”时,对话框F indTDialog弹出,学生成绩管理员输入要修改或删除的
26、教师,单击按钮“0K”提交。系统查询数据库获取教师信息后弹出对话框teacherDialog,显示教 师的详细信息,如若是“修改书种”,学生成绩管理员编辑修改教 师的有关信息,然后单击按钮“更新”,更新系统中存储的教师信 息;如若是“删除教师”,学生成绩管理员则单击按钮“删除”,该教师信息从系统中删除,与该教师有关的其他信息也一并删除。(5)类 F indTDialog界面类F indTDialog是用来根据教师ID查找教师的对话框。当 主窗口中的菜单项“删除教师”或“修改教师”被选择时,该对话 框弹出,学生成绩管理员输入教师ID,单击按钮“OK”,系统查询数 据库中具有指定ID号的教师信息。
27、(6)类 InpUDialog界面类InpUDialog是进行输入成绩操作或更改成绩操作时所需 的对话框。当主窗口中的菜单项“输入”被选择时,该对话框弹出,教师输入分数,然后单击按钮“0K”,输入动作被确认,系统创建并 保存成绩记录。当选择菜单项“更改成绩”时,也弹出该对话框,教师输入学号,修改相应信息,然后单击按钮“更改”,系统中的更新记录。(7)类 ResCDialog界面类ResCDialog是进行操作“选课”或“取消选课”时所需 的对话框。当主窗口中的菜单项“选课”被选择时,该对话框弹出,学生输入要选课的信息,然后单击按钮“选课”,选课动作被确认,系统创建并保存选课记录。当选择菜单项“
28、取消选课”时,也弹出该对话框,学生输入课程 名及信息,然后单击按钮“取消选课”,系统中的选课记录被删除。(8)类 MessageWindow信息窗口类LoginDialog是用来显示提示信息的对话框。(9)类 LoginDialog界面类LoginDialog是用来输入用户名和密码的对话框。类MainWindow属性及方法见下图3.8 类StudentDialog属性及方法见下图3.9 类F indSDialog属性及方法见下图3.10MairiVWndow Studenfloads Teacher loads courseloads scoreloadsCreate Window Reser
29、ve。our se。Cancel course。I 华 utScoreO UpdataScoreO AddkindO AddstudentQ AddteacherO DelkindO DelstudentQ Delte&cherQ AddnewsQ DelnewsQStudenOialog Scordotn Cour sei oan StudentlottiCreaieDialog3OeicourmOOetscoreOAddstudenlQDelstuderiQwww nf Oi G1 iFindSDialog Nameiataing ID:istegBf N exrib oxFmdftude
30、it()OetftudentO DelstudestQCWWW.nt O l Q L W0.CH图 3.8 类 MainWindow图 3.9 类 B orrowerDialog 图 3.1 0 类 F indB wrDialog类TeacherDialog属性及方法见下图3.11 类F indTDialog属性及方法见下图3.12 类InpUDialog属性及方法见下图3.13 类ResCDialog属性及方法见下图3.14 类MessageWindow属性及方法见下图3.15 类LoginDialog属性及方法见下图3.16TeacherDialogScordoan Courseloan
31、StudentloanFindTDialogName:stringNewsboxCreateDialog3 GetcourseQ G etscoreQ AddteacheiQ DelMche出 瑞那Fmdteacher()0 etieacherO DelteacherOmriteOwww.n.EOf/八gi2G.etv 一c图 3.11 类 TitleDialog 图 3.12 类 F indTDialogInpU dialog Score CourseInput score。Input courseO G et scoreQ Get course。Up data scor e()ReadQ
32、WhtepR,QDialog Name:stringDiiieger N ew courscOFindcourseO WriteOReadQ OetcoumODelcourseO 一卬wiv;iE 5www.ntOL图 3.1 3 类 InpUDialog 图 3.1 4 类 ResCDialogMessagew indow弱待定LoginDialog3createWindow()3.1 5 类 MessageWindow|createDialog()|validate。松ubmW|图 3.1 6 类 Loginbialog3.3建立类图识别出了系统中的类后,还要识别出类间的关系,然后就可以建
33、立类 图了。可将系统中的类分为3个包:G UI包、adminer包和DB包。包G UI 由界面类组成,包Adminer由实体类组成,包DB由与数据库有关的类组 成。包G UI依赖于包Adminer和包DB,包Adminer依赖于包DB。图3.18系统包图3.3.1包GUI中的界面类关系窗口 MessageWindow 和对话框 studentDialog F indSDialog、F indTDialog teacherDialog InpUDialog ResCDialog 是主窗口 MainWindow的一部分。它们之间存在组合关系。类LoginDialog与类MainWindow之间存在
34、“一对一”的关联关系。类F indSDialog与类studentDialog之间是一对一”的关联关系。类 F indTDialog与类teacherDialog之间的关系也是“一对一”的关联关 系。图 3.19 MainWindow3.3.2包admi ner中的实体类关系类 student、类 teacher、类 courseload、coreload 都是永久类,它 们都是包DB中的类Persistent的子类。类teacher与类student之间存在“多对多”的关联关系,每个teacher对象至少有一个student对象,每个student对象至少对应于 一个teacher对象。类t
35、eacher与类course load之间存在“一对多的关 系,tudent与类courseload之间存在“一对多”的关联关系,每个 student对象可以没有或可有多个courseload(选课),每个 courseload(选课)可由多个student选课,学生与成绩之间是一对多的 关系,一个学生可以有多门课的成绩。图 3.20 Persistent3.3.3类ResCDialog和其他类关系图 3.21 ResCDialog/4内www niOi G:MG cn3.3.4 InpUDialog和其他类的关系图图 3.21 ResCDialogiuwvu:nt GLMG.cn第4章动态行
36、为模型系统的动态行为模型由交互作用图(时序图和协作图)、状态图、活动 图描述。4.1建立交互作用图描述系统用例的主要场景的交互作用图如下所示。4.1.1 添加学生“添加学生”的过程是:学生成绩管理员选择菜单项“添加学生”,对话框弹出,学生成绩管理员输入学生信息,提交,系统根据学生ID号 查询数据库,看数据库中是否已存在学生,若不存在,创建学生帐户,并存储学生信息。“添加学生”的时序图如图4.1所示,学生成绩管理 员选择菜单项“添加学生”,类MainWindow的方法addstudent()被调 用,然后通过调用类studentDialog的方法createDialogO创建对话框,学生成绩管理
37、员输入学生信息后,提交信息,类studentDialog的方法 addstudentr()被调用,通过调用类student的f indB orrower()方法来 确定该学生的帐户是否已存在,若不存在,则调用类student的方法 newstudent()为学生创建帐户,并调用类student的方法store()存储 学生信息。图4.1添加学生时序图4.1.2 删除学生“删除学生”的过程是:学生成绩管理员选择菜单项“删除学生”,查询对话框弹出,学生成绩管理员输入学生ID号,系统查询数据库,显 示学生信息(若学生信息不存在,显示提示信息,结束删除动作),按下 删除按钮,系统确定是否存在与该学生相
38、关的信息记录,若有,给出提 示信息,结束删除动作;若没有,查询是否存在与该学生相关的选课记 录,若有,删除选课记录。然后从系统中删除学生。“删除学生”的时序图如图4.2所示,学生成绩管理员选择菜单项“删除学生,类MainWindow的方法delstudent()被调用,然后通过 调用类F indSDialog的方法createDialog()创建对话框。学生成绩管理 员输入学生ID号后,提交信息,类F indSDialog的findstudent()方法 被调用,通过调用类student的方法findstudent(id:String)来确定 该学生的帐户是否存在,若存在,返回student对
39、象的0ID,然后调用 类studentDialog的方法createDialog(OID)显示学生信息,在该方法 执行期间,发送消息getstudent(0ID)给类student获得学生信息。学 生成绩管理员单击确认按钮删除(若学生记录非空,则该学生不能被删 除),实现方法如下。类studentDialog的delstudent()方法被调用,发送消息getnewsLoans()判断学生是否有与他有关的记录信息。如果有,则显示提示信息,终止“删除学生”的活动(这个替代流未在图中示出);如果没有,类student的方法getnewsResCO被调用,返回学生的选课 记录的数目,如果返回值等于0
40、,则跳过下述循环,如果返回值非零对 每个选课记录都要执行如下操作(也就是说此处是一个循环次数为选课 记录数的循环,图4.2所示描述的是选课记录数为1的情况)。调用方法 getcourseloadO获得制定索引的选课记录,然后调用类Reservecourse 的方法getkind()获得所选课的课程类kind对象,再调用类kind的方 法delReserve course。删除“选课记录”,调用类Reserve course的 方法delete。删除“选课记录”对象。最后调用类student的方法 delete。删除学生信息。JVULnWcndnw:crmwDU(ogf):-D出印空“dwigj
41、Ar)Mitwiwt 7L/“绅7”C()CT,詈5Il gvtJriM()d,?MMtrJed WW)1JH:delebH)I4:delctd)ff7小汴中 n节汨图4.2删除学生时序图4.1.3添加教师“添加教师”的过程是:学生成绩管理员选择菜单项“添加教师”,对话框弹出,学生成绩管理员输入教师信息,提交,系统根据教师ID号 查询数据库,看数据库中是否已存在该教师,若不存在,创建教师帐户,并存储教师信息。“添加教师”的时序图如图4.1所示,学生成绩管理 员选择菜单项“添加教师,类MainWindow的方法addteacher()被调 用,然后通过调用类teacherDialog的方法cre
42、ateDialogO创建对话框,学生成绩管理员输入学生信息后,提交信息,类teacherDialog的方法 addteacher()被调用,通过调用类teacher的findteacher()方法来确 定该教师的帐户是否已存在,若不存在,则调用类student的方法 newteacher()为学生创建帐户,并调用类teacher的方法store()存储 教师信息。添加教师www.ntOi(5iM(5:cn4.1.4删除教师“删除教师”的过程如下。“删除教师”的过程是:学生成绩管理员选择菜单项“删除教师”,查询对话框弹出,学生成绩管理员输入教师ID号,系统查询数据库,显 示教师信息(若教师信息不
43、存在,显示提示信息,结束删除动作),按下 删除按钮,系统确定是否存在与该教师相关的信息记录,若有,给出提 示信息,结束删除动作;若没有,查询是否存在与该教师相关的授课记 录,若有,删除授课记录。然后从系统中删除学生。“删除教师”的时序图如图4.2所示,学生成绩管理员选择菜单项 删除教师,类MainWindow的方法delteacher()被调用,然后通过 调用类F indTDialog的方法createDialog()创建对话框。学生成绩管理 员输入教师ID号后,提交信息,类F indTDialog的findteacher()方法 被调用,通过调用类teacher的方法findteacher(
44、id:String)来确定 该教师的帐户是否存在,若存在,返回教师对象的0ID,然后调用类 teacherDialog的方法createDialog(OID)显示教师信息,在该方法执行 期间,发送消息getteacher(0ID)给类teacher获得教师信息。学生成 绩管理员单击确认按钮删除(若教师记录非空,则该教师不能被删除),实现方法如下。类教师Dialog的delteachert()方法被调用,发送消息 getnewsLoans()判断教师是否有与他有关的记录信息。如果有,则显示 提示信息,终止“删除教师”的活动(这个替代流未在图中示出);如果 没有,类teacher的方法getnew
45、sResC()被调用,返回教师的授课记录 的数目,如果返回值等于0,则跳过下述循环,如果返回值非零对每个 选课记录都要执行如下操作(也就是说此处是一个循环次数为授课记录 数的循环,图4.2所不描述的是授课记录数为1的情况)。调用方法 getcourseloadO获得制定索引的授课记录,然后调用类Reservecourse 的方法getkind()获得所选课的课程类kind对象,再调用类kind的方 法delReserve course。删除授课记录,调用类Reserve course的 方法delete。删除“授课记录”对象。最后调用类teacher的方法delete。删除教师信息。打工如Io
46、q|期=H d/dof加id电色,,工鱼包图4.4删除教师4.1.5选课“选课”的过程是:学生选择菜单项“选课”,对话框弹出,学生 输入要选课程名,提交。系统查询数据库,确定该课程否存在。若存在,查询学生信息,确定学生是否能选,若能,创建并存储选课记录,并将 选课记录添加到学生信息中,若不能,提示信息;若不存在,则显示提 示信息,学生重新输入选课课程名或中止选课操作。“选课”的时序图如图4.7所示。学生选择菜单项选课,类MainWindow的reserve course。方法 被调用,然后通过调用类ResDialog的方法reserve course。被调用,发送消息 findcourse()
47、、findstudent()给类 courseload 和 student 查询指定的课程信息和学生信息,返回满足条件的student对象的0ID,接着调用方法getstudent()返回对应0ID的student对象。发送消息给 Reserve course,创建 course load 对象,调用类 Reserve course 的方 法store()将选课记录存储到数据库中。发送消息addcourse()给 student,将选课记录添加到学生信息中,然后调用类student的方法 update。更新数据库中的student对象。并存储更改信息。图如下:4.1.6 取消选课“取消选课”的
48、过程是:学生选择菜单项“取消选课”,对话框弹 出,学生输入要取消选课的课程名,提交。系统查询数据库,确定该课 程否存在。若不存在,退出系统。查询与之相关的信息,若存在相关信 息,弹出提示信息,删除相关信息或终止删除,退出系统。学生选择菜单项“取消选课”,类MainWindow的cancel course()方法被调用,然后通过调用类CanCDialog的方法cancel course。被调 用,发送消息 findcourse()和 findstudent()给类 courseload和 student 查询指定的课程信息和与之相关的学生信息,返回满足条件的student 对象的0ID,接着调用
49、方法getstudent 0返回对应0ID的student对象。发送消息给 cancel course,调用类 cancel course 的 cancelNews()的方法删除相关信息,再调用cancel course的方法store()将删除记 录存储到数据库中。然后调用类student的方法update。更新数据库中 的student对象。并存储更改信息。04.1.7 输入成绩“输入成绩”的过程是:教师选择菜单项“输入成绩”,对话框弹 出,教师输入要写成绩的学生名,提交。系统查询数据库,确定该学生 是否存在。存在,输入成绩,更改相应信息,并将输入记录添加到学生 信息中。若不存在,弹出提示
50、信息。教师重新输入选课课程名或中止选 课操作。“输入成绩”的时序图如下图所示。教师选择菜单项“输入成绩”,类MainWindow的input score。方法 被调用,然后通过调用类InpUscore的方法inputscore()被调用,发送 消息findstudent()给类student查询指定的学生信息,返回满足条 件的student对象的0ID,接着调用方法getstudent()返回对应0ID的 student对象。发送消息给inputscore(),创建scoreload对象,调用 类inputscore的方法store()将选课记录存储到数据库中。发送消息 addscore()给