网上选课系统某学校的网上选课系统主要包括如下功能:管理员通过系统管理界面进入,建立本学期要开的各种课程,将课程信息保存在数据库中并可以对课程进行修改和删除。学生通过客户机浏览器根据学号和密码进入选课界面,在这里学生可以进行二种操作,查询已选课程,选课。同样,通过业务层,这些操作结果存入数据库中。用例建模•Actor:Registar,Student,抽象出People;Database•Usecase:SelectCourse,QueryCourse,AddCourse,ModifyCourse,DeleteCourse.PeopleStudentRegistarSelectCourseQueryCourseAddCourseModifyCourseDatabaseDeleteCourse添加课程事件流•(1)管理员选择进入管理界面,用例开始•(2)系统提示输入管理员密码•(3)管理员输入密码•(4)系统验证密码•A1:密码错误•(5)进入管理界面,系统显示目前所建立的全部课程信息•(6)管理员选择添加课程•(7)系统提示输入新课程信息•(8)管理员输入信息•(9)系统验证是否和已有课程冲突•A2:有冲突•(10)系统添加新课程,提示课程添加成功•(11)系统重新进入管理主界面,显示所有课程•(12)用例结束其他事件流•A1:密码错误•(1)系统提示再次输入•(2)用户确认•(3)三次错误,拒绝再次访问•(4)否则进入添加课程事件流(5)•A2:有冲突•(1)系统提示有冲突,显示冲突课程信息•(2)用户重新输入•(3)进入添加课程事件流(10)选课事件流•(1)学生进入选课登陆界面,用例开始•(2)系统提示输入学号和密码•(3)学生输入学号和密码•(4)系统验证•A1:验证失败•(5)进入选课主界面•(6)学生点击选课•(7)系统显示所有课程信息•(8)学生选择课程•(9)系统验证课程是否可选•A2:不可选•(10)系统提示课程选择成功,用例结束错误流•A1:验证失败•(1)系统提示验证失败,提示重新输入•(2)三次失败,拒绝访问•(3)成功,转选课事件流(5)•A2:课程不可选•(1)系统提示课程不可选及原因•(2)学生重新选课•(3)转选课事件流(10)考虑:•删除课程事件流和修改课程事件流活动图•以AddCourse用例为例来说明。•(1)管理员输入信息•(2)系统验证是否和已有课程冲突•A2:有冲突•(3)系统添加新课程,提示课程添加成功•(4)系统重新进入管理主界面,显示所有课程•(5)用例结束输入课程各项信息显示添加成功信息验证课程创建课程对象判断添加课程是否合法[不合法]/提示重新输入判断添加课程是否成功在数据库中查询课程在数据库中添加该课程[合法]成功数据库接口业务逻辑接口用户接口SelectCourse创建序列图•(1)寻找对象•(2)寻找角色•对象:界面,课程,业务层的控制对象•角色:学生,数据库SelectCourse用例交互序列•(1)学生通过界面发送选课命令•(2)界面向控制对象请求课程信息•(3)控制对象向数据库发送查询数据信息•(4)控制对象暂存数据库的查询结果•(5)界面对象从控制对象中取得所有的课程信息•(6)在界面上显示所有的课程信息•(7)界面对象发送命令要求控制对象删除课程信息•(8)学生选择课程•(9)界面对象要求学生输入学号•(10)界面对象向控制对象发送信息,查询该生是否可以选择特定的课程•(11)控制对象从数据库中查询关联信息•(12)控制对象判断是否可以选课•(13)如果可以选课,则向数据库中添加关联信息。•(14)向界面对象返回信息。stu:Studentstu:StudentForm:FormViewForm:FormViewcourses:Coursecourses:Coursecontrol:ControlObjectcontrol:ControlObjectdb:Databasedb:Database1:SelectCommand()2:GetAllCourse()3:QueryCourse()4:Creat(String,int,String,String)5:GetCourseInfo()6:DisplayCourseList()7:DestroyCourse()8:GetCourseID()9:QueryAssociation(int,int)10:QueryAssociation(int,int)11:CanSelect()12:AddAssociation(int,int)13:ShowSuccessInfo()14:GetStudentID()admin:Registaradmin:Registarform:FormViewform:FormViewcontrol:ControlObjectcontrol:ControlObjectdb:Databasedb:Database1:GetRegistarinfo()2:VerifyRegistar(int,string)3:QueryPasswd(int,string)4:ChechPasswd()5:ShowSuccessInfo(string)stu:Studentstu:Studentform:FormViewform:FormViewcourses:Coursecourses:Coursecontrol:ControlObjectcontrol:ControlObjectdb:Databasedb:Database1:QuerySelectedCourse(int)2:QueryCourseList(int)3:QuerySelectedCourse(int)5:DisplayCourseList(Course[])4:Creat(String,int,String,String)6:DestroyCourse()admin:Registaradmin:Registarform:FormViewform:FormViewcourses:Coursecourses:Coursecontrol:ControlObjectcontrol:ControlObjectdb:Databasedb:Database1:GetCourseInfo()2:Creat(String,int,String,String)3:VerifyCourse(Course)4:GetCourseInfo()5:QueryCourse(int)6:Canadd()7:AddCourse(Course)8:ShowSuccessInfo(String)9:DestroyCourse()考虑:•可以自己做出其他用例的活动图,比如选课•做出其他用例的序列图,比如AddCourse,ModifyCourse,DeleteCourse,QueryCourse。类图•实体类:课程类(Course)•边界类:界面类:FormObject•控制类:控制对象类ControlObject•角色:Student,Registar,People(父类),Database•关系:角色之间的继承关系,学生,管理员与系统交互时,都有一个界面与之对应,一个界面可能和多个课程相关,控制对象负责课程的处理,处理结果在街面上显示,控制对象完成对数据库的操作,界面请求控制对象的服务People•Nameint姓名•Ageint,初始值是0年龄•GetName()查询姓名•SetName()设置姓名•GetAge()•SetAge()Student•StudentIDint•Student()•GetstudentID()•SetStudentID()