学生成绩管理系统UML面向对象设计 下载本文

《学生成绩管理系统》文档

姓 名: 李欢

班级名称: 2013级软件工程 指导教师: 王新年

实验日期: 2014年4月

日期 <4/28/2014> 版本 <1.0> 描述 <李欢> 作者 2014年4月

目 录

1. 概述 ................................................................................................................................. - 3 -

1.1 系统简述 ............................................................................................................... - 3 - 1.2 软件设计目标 ....................................................................................................... - 4 - 1.2.1功能目标 ....................................................................................................... - 4 - 1.2.2性能目标 ....................................................................................................... - 5 - 1.3 参考资料 ............................................................................................................... - 5 - 2. 术语表 ............................................................................................................................. - 5 - 3. 设计概述(此处请用简单的结构化描述) ................................................................. - 6 -

3.1 简述 ....................................................................................................................... - 6 - 3.2 系统结构设计 ....................................................................................................... - 7 - 4. 用例 ................................................................................................................................. - 9 -

4.1 用例图 ................................................................................................................... - 9 - 4.2 用例描述 ............................................................................................................. - 11 - 4.3 系统界面 ............................................................................................................. - 13 - 5. 对象模型 ....................................................................................................................... - 19 -

5.1 类定义 ................................................................................................................. - 19 - 5.2 类关联描述 ......................................................................................................... - 22 - 5.3 对象模型图 ......................................................................................................... - 23 - 6. 对象数据字典描述 ....................................................................................................... - 24 -

6.1 数据流描述 ......................................................................................................... - 24 - 6.2 子系统中的对象 ................................................................................................. - 26 - 7. 动态模型 ....................................................................................................................... - 37 -

7.1 场景(Scenarios) ............................................................................................. - 37 - 7.2事件定义(Events) ........................................................................................... - 38 - 7.3 状态图 ................................................................................................................. - 42 - 8. 数据库定义 ................................................................................................................... - 43 -

8.1概念结构设计 ...................................................................................................... - 43 - 8.2逻辑结构设计 ...................................................................................................... - 45 - 8.3物理结构设计 ...................................................................................................... - 46 - 9. 部署图 ........................................................................................................................... - 48 - 10. 非功能性需求 ............................................................................................................. - 49 -

1. 概述 1.1 系统简述

随着网络通信技术的迅速发展和信息技术的广泛应用,计算机的应用已普及到经济和社会生活的各个领域。教育领域也不例外,现今已经出现了各种远程网络在线教育系统、图书馆管理系统、学籍管理系统??其中学生成绩管理是任一院校都不可缺少的部分,它的内容对于学校的决策者和教学管理者来说都至关重要,而传统的人工管理方式效率较低,为数据的查询、更新和维护代来了极大的不便。所以学生学籍管理信息系统的开发和应用是必要的,它能够为管理人员提供充足的信息和快捷的查询手段,提高学校学籍管理的效率。

系统的可行性分析

(1)系统实施运行的可行性:

各教师,学生都已熟练掌握计算机的基本实用方法和操作技能,对新系统的开发,表现出极大的热情。提出了很多好的建议和要求。

(2)技术可行性:

校园网已正常运行;开发人员已熟练掌握开发工具。技术上实现系统是可行的。 (3)经济可行性:

校园内部局域网络已经建成;硬件投入不需要很大。

学生成绩管理在大学里是一件非常耗时的活动,学校还面临着给学生缺考的问题。在学生选择那些课程后,教务处将这些信息输入到一个计算机系统,然后给没一人打印一份课表和对应的成绩表给学生。一旦给所有学生都登记好了成绩,突然出现成绩错误是,教务处就需要询问学生以便得到其他选择。改学生成绩管理系统是一个面向学生,教师用来进行对学生成绩管理的管理信息系统。

该信息系统能够为师生提供各种管理服务:

- 3 -

(1)学生成绩查询系统能够为一定数目的学生提供服务,每个学生都能够有唯一的账号,每一个账号包括个人的编号和个人信息,系统通过一个单独的程序为学生提供服务,不需要人员的干预,这些服务包括:查询成绩、修改自己的密码;

(2)学生的成绩需要教师对其进行录入、修改或删除,既学生不直 接与系统交互,教师代其与系统进行交互,当然教师也可以进行对成绩的查询;

(3)而系统管理员主要负责的是对教忙或者学生的信息进行管理,并且管理员还得对本系统设置权限,或者可以通过师生的唯一账号对成绩进行查询。

运行环境简述: 1、硬件环境 CPU:P4 3.0 G以上 内存:2GB 硬盘:硬盘120G 2、软件环境

数据库: SQL Server 2005 应用服务器:Tomcat 6.0服务器 开发平台: Visual Studio 2008 操作系统: Windows 7

1.2 软件设计目标

系统管理员登录系统后,通过身份验证,能够对学生的基本信息进行管理,包括如下:添加学生信息、查询学生信息、修改学生信息、删除学生信息。

1.2.1功能目标

(1)输入一个同学的姓名和学号,系统能够输出学生所在的学院、班级、成绩等学生信息;

- 4 -

(2)对于已经录入学生成绩管理系统的学生信息可以进行修改,例如:删除、添加。对于没有录入学生成绩管理系统的学生信息可以添加到系统(此项功能的实现需要对用户身份进行核查);

(3)能够对学生的信息进行保存,即退出系统时,成绩成绩不能丢失; (4)能够登录和退出系统。

1.2.2性能目标

能够比较准确快捷地完成上述学生成绩管理系统所要求的功能即可。 (1)保证模型和代码高度一致 (2)支持多种语言

(3)为团队开发提供强有力的支持 (4)支持模型的Internet发布 (5)生成使用简单且定制灵活的文档 (6)支持关系型数据库的建模

1.3 参考资料

[1] 林.巴斯等. 软件构架实践. 清华大学出版社, 2003.8 [2] 张海藩. 软件工程导论. 清华大学出版社, 2002.6 [3] 郑人杰等. 实用软件工程. 清华大学出版社, 2001.1

[4] 吴建,郑潮等. UML基础与建模案例. 人民邮电出版社, 2005.6

2. 术语表

对本文档中所使用的各种专业术语、容易引起歧义的术语以及自定义的术语进行说明。如果一些术语在需求规格说明书中已经说明过了,此处不用再重复,可以指引读者参考需求说明。

- 5 -

术语 类图 说明 提供了对类及其关系进行建模的一种图形化表示法 描述了有着共同的结构和语义的一组链接 指定一个类与其关联类的单个实例可能相关的实例数目 从一个对象到另一个对象的明确的单向信息流动 由满足布尔表达式而引起的事件 在绝对时间上或在某个时间间隔内发生的事情所引起的事件 从一个状态到另一个状态的瞬时变化 系统在某个特定的执行期内所发生的一系列事件 关联 多重性 信号事件 变更事件 时间事件 迁移 场景 3. 设计概述 3.1 简述

生成绩管理系统是专门针对学校所开发的一种以管理为基础的信息管理系统,它涵盖成绩管理服务的所有环节,将原始的人工统计方法转换为先进的电脑管理模式。

UML的目标是以面向对象图的方式来描述任何类型的系统,具有很宽的应用领域。其中最常用的是建立软件系统的模型,但它同样可以用于非软件领域的系统,如机械系统、企业机构或业务过程,以及处理复杂数据的信息系统、具有实时要求的工业系统或工业过程等。

- 6 -

UML是一个通用的标准建模语言,可以对任何具有静态结构和动态行为的系统进行建模。此外,UML适用于系统开发过程中从需求规格描述到系统完成后测试的不同阶段。在需求分析阶段,可以用用例来捕获用户需求。通过用例建模,描述对系统感兴趣的外部角色及其对系统(用例)的功能要求。分析阶段主要关心问题域中的主要概念(如抽象、类和对象等)和机制,需要识别这些类以及它们相互间的关系,并用UML类图来描述。

总之,标准建模语言UML适用于以面向对象技术来描述任何类型的系统,而且适用于系统开发的不同阶段,从需求规格描述直至系统完成后的测试和维护。

3.2 系统结构设计

Rational Unified Process(RUP,统一开发过程)是一套面向对象的软件工程过程。RUP说明了如何有效地使用成熟技术开发软件。

RUP中有9个核心工作流,分为6个核心过程工作流(Core Process Workflows)和3个核心支持工作流(Core Supporting Workflows)。9个核心工作流在项目中轮流被使用,在每一次迭代中以不同的重点和强度重复。业务建模(Business Modeling)理解系统的组织结构及其商业运作,确保所有参与人员对开发系统有共同的认识。

3.2.1 顶层系统结构

学生管理系统逻辑流程图如下图所示:

- 7 -

学生成绩管理系统 管理员登入 学生成绩查询系统 学生成绩管理系统 查 询 条 件 学生成绩的录入 学生成绩的修改 学生成绩的删除 学生成绩的排序 学生成绩的分类 学生成绩及其他相关信息 数 据 保 存 退 出 系 统

图3.1 学生管理系统逻辑流程图

顶层数据流图,如图3.2所示:

- 8 -

图3.2 顶层数据流图 3.2.2 子系统结构

图3.3 学生成绩管理数据流图

4. 用例

本系统是一个学生成绩管理系统,主要功能是为教师和学生方便查询成绩。下面使用了用例图的方式表现了整个系统的所有功能。

4.1 用例图

1.参与者:管理员、教师、学生 2.管理员用例图:

- 9 -

<>登录系统找回密码管理员<>查询学生信息添加学生信息<>信息管理<>修改学生信息删除学生信息

图4.1 管理员用例图

3.教师用例图

<>登录系统找回密码<>教师<>查询学生信息添加学生成绩信息<><>成绩管理<>修改学生成绩信息保存成绩删除学生成绩信息

图4.2 管理员用例图

4.学生用例图

- 10 -

<>登录系统<>学生查询个人成绩选择课程找回密码

图4.3 管理员用例图

4.2 用例描述

用例1:学生查询成绩 学生在浏览过程中,选中相应操作。 参与者 学生、成绩管理系统 前置条件 用户身份验证。 后置条件 若学生登录成功,且成绩查询无误,则该学生可以关闭该窗口,根据自己的意愿进行其他相关操作;如果登录不成功则终止操作。 工作流描述 1.系统确认用户已登录; 2.学生浏览想要查询的成绩; 3.确认成绩无误,关闭该窗口; 4.若成绩有误,直接向系统提出修改申请; 5.由系统进行数据库查询,核实成绩,把修改结果反馈给学生; 6.系统提示已批阅申请; 7.学生再次查看成绩,确认无误; 8.退出系统。 例外 学生忘记登录密码、找回密码 限制 学生只能查询自己的成绩 注释 无 表4.1 学生查询成绩用例描述

用例2:教师录入学生成绩 教师录入相关学生的成绩到系统内。 参与者 教师、成绩管理系统 前置条件 学生成绩管理系统正常运行,用户身份验证通过。 后置条件 若管理员登陆成功,则教师可将相关学生的成绩录入到系统;否则管理员不可执行该操作。 工作流描述 1.教师进入学生成绩管理系统; - 11 -

例外 限制 注释 2.教师进入成绩管理界面; 3.教师输入相应成绩; 4.教师提交信息; 5.系统输出添加成功提示。 教师忘记登录密码、找回密码 教师只能录入自己学生的成绩 无 表4.2 教师录入学生成绩用例描述

用例3:管理员修改信息 管理员修改相应用户信息 参与者 管理员、成绩管理系统 前置条件 学生成绩管理系统正常运行,用户身份验证通过。 后置条件 若管理员登陆成功,且相应用户信息存在,则管理员可以修改相应用户信息;否则管理员不可执行该操作。 工作流描述 1.管理员进入学生成绩管理系统后台; 2.管理员进入用户管理界面; 3.管理员搜索相应用户,点击修改按钮; 4.管理员修改用户信息; 5.管理员提交信息; 6.系统输出修改成功提示。 例外 管理员忘记登录密码、找回密码 限制 管理员不能超越自己的权限进行修改 注释 系统只有一个超级管理员 表4.3 管理员修改信息用例描述

用例4:用户登录 用户根据自己的用户名和密码,登录到成绩管理系统。 参与者 学生、教师、管理员、成绩管理系统 前置条件 学生成绩管理系统正常运行,用户身份验证通过。 后置条件 若用户登陆成功,该用户可进行权限范围内的相关操作;否则终止登录。 工作流描述 用户启动系统; 系统提示用户输入用户名和密码; 用户输入用户名和密码; 系统进行验证,给出验证信息; 若通过,用户选择相关信息进行修改查询 系统允许进行权限范围内的相关操作; 若不通过 系统进入错误界面,并输出提示信息。 例外 用户忘记登录密码、找回密码 限制 用户不能超越自身权限进行某些操作 注释 无 - 12 -

表4.4 用户登录用例描述

4.3 系统界面

(1) 查询所有学生成绩部分:可以查询所有学生的成绩。如图4.4所示:

图4.4 查询所有学生成绩

(2) 按学号查询成绩:输入要查询的学生学号,点击查询就可以查看学生的学号、姓名、课程的名称和对应的成绩,并且会计算该学生的平均分。如图4.5所示:

- 13 -

图4.5 按学号查询学生成绩

(3) 按课程查询学生成绩:选择要查询的课程,点查询,就可以查看选择该课程的学生学号、姓名和对应的成绩,并且可以查看该们课程的最高分,最低分和平均分。如图4.6所示:

- 14 -

图4.6 按课程查询学生成绩

(4) 单个学生成绩录入:输入学生学号,选择课程,输入对应的分数,如果该学生这门课分数不为空,则不能添加,提示相应的错误信息,如果该学生这门课分数为空,则可添加。如图4.7所示:

- 15 -

图4.7 单个学生成绩录入

(5) 批量学生成绩录入:选择课程,则会显示出选择了这门课的所有学生学号,姓名和成绩,就课进行成绩录入。如图4.8所示:

- 16 -

图4.8 批量学生成绩录入

(6) 学生成绩修改:输入要修改的学生的学号,选择要修改的课程,该学生之前的成绩就显示出来,再进行修改成绩。如图5.9所示:

- 17 -

图4.9 学生成绩修改

(7) 学生成绩删除:输入要删除的学生的学号,选择要删除的课程,点击删除按钮,就可以改学生该们课程的成绩,成功就提示成功删除,否则提示相应的错误信息。如图4.10所示:

- 18 -

图4.10 学生成绩删除

5. 对象模型 5.1 类定义

在类图中类用矩形框来表示,它的属性和操作分别列在分格中。如不需要表达详细信息时,分格可以省略。一个类可能出现在好几个图中。同一个类的属性和操作可只在一种图中列出,在其他图中可省略。关系用类框之间的连线来表示,不同的关系用连线上和连线端头处的修饰符来区别。

系统类:

(1) Students(学生类)

属性:学号、姓名、性别、出生年月、专业、家庭住址、联系方式

- 19 -

方法:设置学号、获得学号、设置姓名、获得姓名、设置性别、获得

性别、设置出生年月、获得出生年月、设置专业、获得专业、设置家庭住址、获得家庭住址、设置联系方式、获得联系方式 (2) Teachers(教师类)

属性:教师号、姓名、性别、出生年月、院系、家庭住址、联系方式 方法:设置教师号、获得教师号、设置姓名、获得姓名、设置性别、

获得性别、设置出生年月、获得出生年月、设置院系、获得院系、设置家庭住址、获得家庭住址、设置联系方式、获得联系方式 (3) Manager(管理员类)

属性:帐号、密码、身份

方法:设置帐号、获得帐号、设置密码、获得密码、设置身份、获得

身份

(4) Courses(课程类)

属性:课程号、课程名称、开课学期、学时、学分

方法:设置课程号、获得课程号、设置课程名称、获得课程名称、设

置开课学期、获得开课学期、设置学时、获得学时、设置学分、获得学分 (5) Grades(成绩类)

属性:学号、课程号、成绩

方法:设置学号、获得学号、设置课程号、获得课程号、设置成绩、

获得成绩

学生类、教师类和管理员类继承自Person类,其类图如下:

- 20 -

图5.1 Person类继承关系图

系统成绩管理整体类图如下图所示:

图5.2 系统整体类图

- 21 -

成绩和课程类图:

图5.3 成绩与课程类图

5.2 类关联描述

类关联描述如下表所示:

类关联 关联关系 意义 1 学生与课程 1:1 一个学生查看当前课程成绩 2 教师与课程 n:n 一个教师教授多门课程;一门课程被多位老师教授 3 学生与成绩 1:n 一个学生可以查看多门成绩 - 22 -

4 教师与成绩 1:n 一个教师可以给他教授的多门课程录入成绩 5 管理员与成绩 1:n 管理员可以修改任何输入有误的成绩 表5.1 类关联表

5.3 对象模型图

图5.4 对象模型图

- 23 -

6. 对象数据字典描述

数据流图表达了数据和处理的关系,数据字典则是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果。数据字典在数据库设计中占有很重要的地位。数据字典通常包括数据项、数据结构、数据流、数据存储和处理过程5个部分。其中数据项是最小组成单位,若干个数据项可以组成一个数据结构,数据字典通过对数据项和数据结构的定义来描述数据流、数据存储的逻辑内容。

6.1 数据流描述

数据流编号:A01

数据流名称:查询所有学生成绩 简述:有学生选课记录并有成绩

数据流来源:点击查询所有学生成绩按钮,访问数据库,显示所有学生的成绩 数据流去向:数据库中存在的表的信息 数据流组成:学生学号+姓名+课程名称+成绩

数据流编号:A02

数据流名称:按学号查询成绩 简述:该学生存在

数据流来源:输入要查询的学生学号,点击查询,根据要求访问数据库,显示该

学生所选的所有课的成绩并计算平均分

数据流去向:数据库中存在的表的信息 数据流组成:学号+姓名+课程名称+成绩

数据流编号:A03

数据流名称:按课程查询成绩

- 24 -

简述:该课程存在并且有人选择这么课程

数据流来源:选择要查询的课程,点击查询,根据要求访问数据库,显示选择了

这么课程的所有学生的学号、姓名和分数,并且计算最高分、最低分、平均分

数据流去向:数据库中表的信息 数据流组成:课程名+学号+姓名+成绩

数据流编号:A04

数据流名称:单个学生成绩录入

简述:该学生存在并且选修了选中的课程

数据流来源:输入学号并选择课程,输入成绩,点击录入成绩,如果录入成功则

显示添加成功,否则显示相应的错误信息

数据流去向:数据库中表的信息 数据流组成:学号+课程+成绩+录入

数据流编号:A05

数据流名称:批量学生成绩录入

简述:该课程存在并且有学生选择这门课程

数据流来源:选择要添加成绩的课程,则会出现选择了这么课程的所有学生的学

号、姓名,在成绩那一栏添加成绩,添加完成后点击录入成绩,成功则显示成绩添加成功,否则提示相应的错误信息

数据流去向:数据库中表的信息

数据流组成:课程名称+学号+姓名+成绩+录入

数据流编号:A06

数据流名称:学生成绩修改

简述:要修改的学生存在,选修了相应的课程,并且之前有成绩

数据流来源:输入要修改的学生的学号,选择要修改的课程,就会显示该学生的

- 25 -

成绩,修改该成绩,修改完成后点击修改,成功就会提示修改成功,否则就提示相应的错误信息

数据流去向:数据库中表的信息 数据流组成:学号+课程+成绩+修改

数据流编号:A07

数据流名称:学生成绩删除

简述:该学生存在并且选修了该课程

数据流来源:输入要删除的学生的学号,选择要删除的课程,点击删除,成功就

会提示成功删除,否则就提示相应的错误信息

数据流去向:数据库中表的信息 数据流组成:学号+课程+删除

6.2 子系统中的对象

6.2.1 对象:Student

用途:记录学生基本信息 约束:临时对象

持久性:从学生登录到退出 6.2.1.1 属性描述: 1. 属性:Name 类型:String 描述:学生姓名 约束:无 2. 属性:Sex 类型:String 描述:学生性别 约束:无

- 26 -

3. 属性:Birth 类型:Date 描述:学生生日 约束:无 4. 属性:Major 类型:String 描述:学生所学专业 约束:无 5. 属性:Address 类型:String 描述:学生家庭住址 约束:无

6.2.1.2 方法描述: 1. 方法:SetName 返回类型:void 参数:Name 返回值:无

读取/修改的属性:修改调用的方法:无 2. 方法:GetName 返回类型:Name 参数:无

返回值:Name属性值 读取/修改的属性:读取调用的方法:无 3. 方法:SetSex 返回类型:void 参数:Sex

- 27 -

返回值:无

读取/修改的属性:修改 调用的方法:无 4. 方法:GetSex 返回类型:Sex 参数:无

返回值:Sex属性值 读取/修改的属性:读取 调用的方法:无 5. 方法:SetBirth 返回类型:void 参数:Birth 返回值:无

读取/修改的属性:修改 调用的方法:无 6. 方法:GetBirth 返回类型:Birth 参数:无

返回值:Birth属性值 读取/修改的属性:读取 调用的方法:无 7. 方法:SetMajor 返回类型:void 参数:Major 返回值:无

读取/修改的属性:修改 调用的方法:无 8. 方法:GetMajor

- 28 -

返回类型:Major 参数:无

返回值:Major属性值 读取/修改的属性:读取 调用的方法:无 9. 方法:SetAddress 返回类型:void 参数:Address 返回值:无

读取/修改的属性:修改 调用的方法:无 10. 方法:GetAddress 返回类型:Address 参数:无

返回值:Address属性值 读取/修改的属性:读取 调用的方法:无 6.2.2 对象:Teacher

用途:记录教师基本信息 约束:临时对象

持久性:从教师登录到退出6.2.2.1 属性描述: 1. 属性:Name 类型:String 描述:教师姓名 约束:无 2. 属性:Sex 类型:String

- 29 -

描述:教师性别 约束:无 3. 属性:Birth 类型:Date 描述:教师生日 约束:无 4. 属性:College 类型:String 描述:教师所在学院 约束:无 5. 属性:Address 类型:String 描述:教师家庭住址 约束:无

6.2.2.2 方法描述: 1. 方法:SetName 返回类型:void 参数:Name 返回值:无

读取/修改的属性:修改调用的方法:无 2. 方法:GetName 返回类型:Name 参数:无

返回值:Name属性值 读取/修改的属性:读取调用的方法:无 3. 方法:SetSex

- 30 -

返回类型:void 参数:Sex 返回值:无

读取/修改的属性:修改 调用的方法:无 4. 方法:GetSex 返回类型:Sex 参数:无

返回值:Sex属性值 读取/修改的属性:读取 调用的方法:无 5. 方法:SetBirth 返回类型:void 参数:Birth 返回值:无

读取/修改的属性:修改 调用的方法:无 6. 方法:GetBirth 返回类型:Birth 参数:无

返回值:Birth属性值 读取/修改的属性:读取 调用的方法:无 7. 方法:SetCollege 返回类型:void 参数:Major 返回值:无

读取/修改的属性:修改

- 31 -

调用的方法:无 8. 方法:GetCollege 返回类型:College 参数:无

返回值:College属性值 读取/修改的属性:读取 调用的方法:无 9. 方法:SetAddress 返回类型:void 参数:Address 返回值:无

读取/修改的属性:修改 调用的方法:无 10. 方法:GetAddress 返回类型:Address 参数:无

返回值:Address属性值 读取/修改的属性:读取 调用的方法:无 6.2.3 对象:Manager

用途:记录用户基本信息 约束:永久对象

持久性:系统初始化时创建并一直存在,直到人为销毁 6.2.3.1 属性描述: 1. 属性:Account 类型:String

描述:用户登录帐号(学生、教师或管理员) 约束:无

- 32 -

2. 属性:Password 类型:String 描述:登录密码 约束:无 3. 属性:Identity 类型:Enum

描述:UserStudent,UserTeacher,UserManager 约束:无

6.2.3.2 方法描述: 1. 方法:SetAccount 返回类型:void 参数:Account 返回值:无

读取/修改的属性:修改 调用的方法:无 2. 方法:GetAccount 返回类型:Account 参数:无

返回值:Account属性值 读取/修改的属性:读取 调用的方法:无 3. 方法:SetPassword 返回类型:void 参数:Password 返回值:无

读取/修改的属性:修改 调用的方法:无 4. 方法:GetPassword

- 33 -

返回类型:Password 参数:无

返回值:Password属性值 读取/修改的属性:读取 调用的方法:无 5. 方法:SetIdentity 返回类型:void 参数:Identity 返回值:无

读取/修改的属性:修改 调用的方法:无 6. 方法:GetIdentity 返回类型:Identity 参数:无

返回值:Identity属性值 读取/修改的属性:读取 调用的方法:无 6.2.4 对象:Course

用途:记录课程基本信息 约束:永久对象

持久性:从系统初始化到课程生命周期结束(学校不再开授此课) 6.2.4.1 属性描述: 1. 属性:Name 类型:String 描述:课程名称 约束:无 2. 属性:Term 类型:String

- 34 -

描述:本课程开课学期 约束:无 3. 属性:Time 类型:int

描述:本课程开课学时 约束:无 4. 属性:Score 类型:String 描述:该课程学分 约束:无

6.2.4.2 方法描述: 1. 方法:SetName 返回类型:void 参数:Name 返回值:无

读取/修改的属性:修改调用的方法:无 2. 方法:GetName 返回类型:Name 参数:无

返回值:Name属性值 读取/修改的属性:读取调用的方法:无 3. 方法:SetTerm 返回类型:void 参数:Term 返回值:无

读取/修改的属性:修改- 35 -

调用的方法:无 4. 方法:GetTerm 返回类型:Term 参数:无

返回值:Term属性值 读取/修改的属性:读取 调用的方法:无 5. 方法:SetTime 返回类型:void 参数:Time 返回值:无

读取/修改的属性:修改 调用的方法:无 6. 方法:GetTime 返回类型:Time 参数:无

返回值:Time属性值 读取/修改的属性:读取 调用的方法:无 7. 方法:SetScore 返回类型:void 参数:Score 返回值:无

读取/修改的属性:修改 调用的方法:无 8. 方法:GetScore 返回类型:Score 参数:无

- 36 -

返回值:Score属性值 读取/修改的属性:读取 调用的方法:无

7. 动态模型

这部分的作用是描述系统如何响应各种事件。例如,可以建立系统的行为模型。一般使用顺序图和状态图。

确定不同的场景(Scenario)是第一步,不需要确定所有可能的场景,但是必须至少要覆盖典型的系统用例。不要自己去想当然地创造场景,通常的策略是描述那些客户可以感受得到的场景。

7.1 场景(Scenarios)

7.1.1 场景:学生登录系统

描述:学生登录系统以查询所修课程成绩 动作1:登录系统 动作2:查询成绩 7.1.2 场景:教师登录系统

描述:教师登录系统以录入各个学生所修课程成绩 动作1:登录系统 动作2:录入成绩 7.1.3 场景:管理员登录系统

描述:管理登录系统以更改学生信息、教师信息或者成绩信息 动作1:登录系统 动作2:修改信息 动作3:删除信息

- 37 -

7.2事件定义(Events)

(1) 登录

学生、教师或管理员通过输入登录界面上显示的用户名和密码,系统与数据库中的数据进行校验,如果一致,则在登录界面提示成功登录的信息,进而让用户进入系统。

(2) 成绩查询

学生成绩的信息查询等。学生向系统提供课程名或课程编号,数据库查询后返回对应的课程成绩。 (3) 录入成绩

教师将按照课程编号对每位选修了该课程的学生录入成绩,录入成绩后相应的课程则可查看或修改成绩。 (4) 删除信息

管理员可以删除退学或者毕业的学生信息,也可以删除学校已经不再教授的课程信息。 (5) 退出

学生、教师或管理员完成了想要完成的操作后,点击退出系统按钮,系统则清除用户名和缓存,然后返回登录界面,以等待学生、教师或管理员的下次登录。

管理员管理学生信息顺序图:

- 38 -

: 管理员:登录界面:修改学生信息界面学生信息数据库1: 输入用户名密码2: 输入要修改的学生信息3: 核查学生信息4: 修改学生信息5: 返回修改成功信息6: 显示修改成功信息图7.1 修改学生信息顺序图

:登录界面 : 管理员1: 输入用户名密码:删除学生信息界面学生信息数据库2: 请求学生信息3: 核查学生信息4: 删除学生信息5: 返回删除成功信息6: 显示删除成功信息

- 39 -

图7.2 删除学生信息顺序图

教师录入学生成绩信息顺序图:

:登录界面 : 教师1: 输入用户名密码:录入学生信息界面学生信息数据库2: 输入学生成绩信息3: 核查学生信息4: 录入学生成绩信息5: 返回录入成功信息6: 显示录入成功信息图7.3 教师录入学生成绩顺序图

教师修改学生成绩顺序图:

- 40 -

:登录界面 : 教师1: 输入用户名密码:修改学生信息界面学生信息数据库2: 输入学生成绩信息3: 核查学生信息4: 修改学生成绩信息5: 返回修改成功信息6: 显示修改成功信息7.4 教师修改学生成绩顺序图

学生查询成绩序列图:

:登录界面 : 学生1: 输入用户名密码:查询学生信息界面学生信息数据库2: 选择要查询的课程3: 获取个人成绩信息4: 返回个人成绩信息5: 显示个人成绩信息

7.5 学生查询成绩顺序图

- 41 -

7.3 状态图

描述类的对象所有可能的状态,以及事件发生时状态的转移条件。可以捕获对象、子系统和系统的生命周期。他们可以告知一个对象可以拥有的状态,并且事件(如消息的接收、时间的流逝、错误、条件变为真等)会怎么随着时间的推移来影响这些状态。一个状态图应该连接到所有具有清晰的可标识状态和复杂行为的类;该图可以确定类的行为,以及该行为如何根据当前的状态变化,也可以展示哪些事件将会改变类的对象的状态。状态图是对类图的补充。

管理员状态图:

输入账号密码登录界面管理学生信息新生报到添加学生信息查询学生信息毕业或休学信息变更修改学生删除学生信息信息图7.6 管理员状态图

教师状态图:

- 42 -

输入账号密码登录界面查询学生信息没有成绩成绩错误录入学生成绩信息修改学生成绩信息删除学生成绩信息成绩多余图7.7 教师状态图

学生状态图:

输入账号密码登录界面选择课程查询个人成绩信息

图7.8 学生状态图

8. 数据库定义 8.1概念结构设计

在需求分析阶段所得到的应用需求应该首先抽象为信息世界的结构,才能更好地、更准确地用某一DBMS实现这些需求。概念结构能真实、充分地反应显示世界,包括事物和事物之间的联系,能满足用户对数据的处理要求,是对现实世界的一个真实模型;易于理解,从而可以用它不熟悉计算机的用户交换意见,永不的积极参与是数据可设计成功的关键;易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充;易于向关心、网状、层次等各种数据模型转化。

概念结构是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定。

8.1.1概念设计阶段的任务与目标

(1)选择中层数据流为切入点,通常选中实际系统中的子系统

- 43 -

(2)逐一设计分E-R图

(3)生成初步E-R图,通过合并方法,做到各子系统尸体、属性、联系统一 (4)生成全局E-R图,消除冲突和不必要的冗余

8.1.2 E-R图

观察实体下的所有属性,能唯一标识学生这个实体的只有学号这个属性,故学号就是学生这个实体集的主键。同样唯一标识课程这个实体的只有课程号这个属性,故课程号成为课程这个实体集的主键。

学生信息E-R图如下:

图8.1 学生信息

课程信息E-R图如下:

图8.2 课程信息 8.1.2.1 实体及其联系图

实体学生、实体课程及关系的E-R图:

- 44 -

图8.3 总体E-R图

8.1.3 各E-R图实体的属性:

学生信息(学号,姓名,性别,出生时间,家庭地址,专业,总学分,备注) 课程信息(课程号,课程名称,开课学期,学时,学分)

8.2逻辑结构设计

概念结构是独立于任何一种数据模型的信息结构。逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。从理论上将,设计逻辑结构应该选择最适于相应概念结构的数据模型,然后对支持这种数据模型的各种DBMS进行比较,从中选出最合适的DBMS。但实际情况往往是已给定了某种DBMS,设计人员没有选择的余地。目前DBMS产品一般支持关系、网状、层次三种模型中的某一种,对某一种数据模型,各个机器系统又有许多不同的限制,提供不同的环境与工具。所以逻辑结构设计一般要分3步进行:

(1) 将概念结构转换为一般的关系、网状、层次模型;

(2) 将转换来的关系、网状、层次模型向特定DBMS支持下的数据模型转换; (3) 对数据模型进行优化。 8.2.1 逻辑结构设计的任务与目标

- 45 -

根据上面的数据库E-R图,现在需要将上面的数据库概念结构转化为SQL

Server2008数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。在上面的实体及尸体之间关系的基础上,形成数据库中的表格以及各个表格之间的关系。具体内容包括数据组织(将E-R图转换成关系模型、模型优化、数据库模式定义、用户子模式设计)、数据处理(画出系统功能模块图)两大任务。

8.2.2 数据组织

8.2.2.1 将E-R图转换为关系模式 实体型转换为关系模式,实体的属性就是关系的属性,实体的码就是关系的码。对于实体间的联系则有下不同情况:

一个m:n联系转换为一个关系模式,与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。

一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并,如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。

一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。三个或三个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。

3个或3个以上实体间的一个多元联系可以转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。

具有相同码的关系模式可以合并。

学生(学号,姓名,性别,出生时间,家庭地址,专业,总学分,备注) 课程信息(课程号,课程名称,开课学期,学时,学分) 选课(学号,课程号,成绩) 8.2.2.2 模型优化

关系模式tb_studentid,tb_courseid,tb_score不存在非主属性对主属性的部分函数依赖,也不存在传递函数依赖,已经达到了3NF。

8.3物理结构设计

8.3.1 物理设计的任务与目标

数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于选定的数据库管理系统。为一个给定的逻辑数据模型选取一个最合适应用要求的物理结构的过程,就是数据库的物理设计。

数据库的物理设计通常分为两步:

(1) 确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构。 (2) 对物理结构进行评价,评价的重点是时间和空间效率。

- 46 -

8.3.2 数据存储方面

为数据库中各基本表简历的索引如下:

对tb_student学生信息表中的“studentid学号”字段创建聚集索引,因为“studentid学号”字段在整个列表中是唯一的;对学生信息表中的“name学生姓名”字段创建非聚集索引,因为“name学生姓名”字段可能会出现重复值;对tb_course课程信息表中的“coursename课程名称”字段创建唯一索引。

8.3.3 数据表的设计 表示SQL Server中最基本的数据库对象,包含了数据库中所有数据,其他数据库对象的操作都依赖于表来进行。对表的各项操作,特别是对表中数据操作是使用频率最高的,它直接影响数据库的效率。表设计的好坏直接决定着一个数据库的优劣,在创建表之前一定要进行详细的设计。

在表的设计过程当中,主要需要完成以下任务:

(1)确定表中的字段,并为其选择合适的数据类型和数据长度。 (2)确定字段的值是否允许为空。

(3)是否要为某些字段设置默认值或约束等。 (4)选择合适的字段作为表的主键。 8.3.3.1 表中基本概念

(1)记录:表中包含了若干行数据,表中的一行称为一个记录。

(2)字段:每个记录由若干个数据项构成,将构成记录的每个数据项称为字段。 (3)关键字:若表中的某一字段或字段组合能唯一标识记录,则称该字段或阻断组合为候选关键字。若一个表有多个候选关键字,则选定其中一个为主关键字,也称为主键,当一个表仅有唯一的一个候选关键字时,该候选关键字就是主关键字。

(4)空置:通常也称NULL值,表示未知、不可用或将在以后添加的数据。若一个列允许为空置,则向表中输入记录值时可不为该列给出具体值;若不允许为空值,则在输入时必须给出具体值。需要注意的是,空值不能与数值数据0或字符类型的空字符串混为一谈。任意两个空值都不相等。表中的关键字不允许为空值。

(5)默认值:是指向表中添加新纪录时自动添加到字段的值。设置默认值主要是为了简化输入操作。

(6)标识属性:对任何表都可创建一个由系统自动生成序号的标识列,通常称为自动增长列,该序号值能唯一标识表中的一行,通常作为主键。定义标识属性时,可指定其种子(即起始)值、增量值。需要注意的是,每个表只能为一个列设置标识属性,该列只能是decimal、int、numeric、smallint、bigint或tinyint数据类型。

8.3.3.2 确定表及表中字段

本项目是针对“学生成绩管理系统”,该系统主要需要建立三张表:tb_student(学生表),tb_course(课程表),tb_score(成绩表)。表中的主要字段如下:

tb_student:student(学号),name(姓名),sex(性别),birthday(出生时间),address(家庭地址),specialty(专业),sumcredit(总学分),nate(备注)。

tb_course:courseid(课程号),coursename(课程名称),term(开课学期),

- 47 -

classhour(学时),credit(学分)。

tb_score:studentid(学号),courseid(课程号),score(成绩)。

8.3.3.3 为字段选择合适的数据类型,并设置相关属性

通常根据实际应用情况选择一个合适该字段使用的数据类型;如学号是一个长度固定的字符串,可以选择char作为其数据类型;如出生时间是一个日期,可以选择smalldatatime作为其数据类型;如家庭地址是一个长度不固定的字符串,可以选择varchar作为其数据类型;由于字段较多,就不一一赘述。

选择合适的数据类型之后,还需要为某些字段设置相关属性。如姓名不允许为空置,性别只能是男或女,将学号设为学生表的主键,等等。

在为字段选择数据类型及长度时,并不唯一,主要是根据实际需要,把握正确够用的原则。表与表之间常常存在着联系,在确定每张表的结构之后,通常还需要建立表跟表之间的关系,一般通过外键约束来实现。本项目中也是通过外键约束来实现表中的联系,参照表为tb_score,被参照表为tb_student和tb_course。

9. 部署图

系统部署图如下图所示:

图9.1 系统部署图

- 48 -

10. 非功能性需求

容错性:MTBF(故障间的平均时间)MTTR(故障修理的平均时间)达到实用性标准。

易恢复性:故障后根据数据集重建,性能水平并恢复直接受影响数据量要求降低,以及为达到此目的所需时间和努力有关的软件,要求表单数据自动保存等

易用性是与一组规定或者潜在的用户为使用其软件所需做的努力和对这样的使用所作的评价有关的一组属性。具体包括:

(1)易理解性:与用户为人质逻辑概念即其应用范围所花的努力有关的软件属性。

(2)易学习性:用户使用该系统可直接使用,简单易学。 (3)易操作性:带首字母筛选功能的下拉列表等 方便操作。

这类非功能需求通常是全局的,他除了与系统运行环境、平台选择、代码质量相关之外,还会涉及部分技术性功能需求,特别是容错性、易恢复性的实现都需要一些具体的功能来支持。

- 49 -