学生成绩管理系统数据流图
时间:2025-05-11
时间:2025-05-11
.3.3.1 创建实体关系图
(1) 在需求收集的过程中,要求客户列出应用软件或业务过程涉及到的"事物",将其演化成数据对象;
(2) 一次考虑一个对象,分析员和客户定义这个对象和其他对象之间是否存在连接;
(3) 如果存在连接,应创建一个或多个关系;
(4) 对每一个关系,确定其关联类型;
(5) 重复步骤(2)到步骤(4),直到定义了所有关系。
(6) 定义每个实体的属性;
(7) 形式化并复审实体关系图;
(8) 重复步骤(1)到(7),直到数据建模完成。
举例分析:
* 实体:学生、课程、成绩。
* 实体属性定义:
学生:学号、姓名、性别、出生日期、入学年月
课程:课程编号、课程名称、课程学分、课程描述
成绩:学号、课程编号、分数、考核日期
* 实体关系图:
首先分析"学生成绩管理系统"的用户要求,找出该系统应该包括的实体。显然,学生、课程和成绩都是系统的实体,并且可以初步定义它们的属性(见上)。教务人员虽然是系统的用户,但其信息与系统处理无关,因此不用作为实体。那么,学生的选课信息是否需要成为实体呢?由于成绩信息包含了选课信息,因此选课信息不用单独记录。最终,确定系统的实体是学生、课程和成绩。
接着,我们分析这些实体之间的关联关系。从实际情况得知,一个学生可以选多门课程,一门课程也可以有多个学生选修,但每个学生选一门课程必须有一个成绩。根据上述分析,我们得到如图所示的实体关系图。
3.3.3.2 创建数据流模型
通常,数据流图是分层绘制的,整个过程反映了自顶向下进行功能分解和细化的分析过程。顶层(也称第0层)DFD用于表示系统的开发范围,以及该系统与周围环境的数据交换关系;最底层DFD代表了那些不可进一步分解的"原子加工";中间层DFD是对上一层父图的细化,其中的每一个加工可以继续细化,中间层次的多少由系统的复杂程度决定。
(1) 第0层DFD将整个系统表示成一个加工;
(2) 确定并标记主要的输入和输出;
(3) 分离出下一层中的加工、数据对象和存储,并对其进行细化,一次细化一个加工;
(4) 标记所有加工和箭头;
(5) 重复步骤(3)和(4),直到所有的加工只执行一个简单的操作,可以很容易地用程序实现。 举例分析:
* 第0层DFD图
教务人员维护学生信息和课程信息,并登录学生的选课成绩;
学生查询自己的成绩单。
* 第1层DFD图
对第0层DFD图中的一个加工"学生成绩管理"进行展开。
* 第2层DFD图
对第1层DFD图中的一个加工"查询学生成绩"进行展开。
绘制第0层DFD的时候,将整个系统看成一个加工,然后找出作用于该加工的外部实体,以及相应的数据输入和输出。对于"学生成绩管理系统"而言,整个系统就是一个加工"学生成绩管理"。从用户的需求描述可知,"教务人员"是数据的源点,"学生"是数据的终点。另外,教务人员需要录入学生信息、课程信息和成绩,说明"学生信息"、"课程信息"和"成绩"是数据流;同样,"查询请求"和"查询结果"也是数据流。根据上述分析,得到如图所示的第0层DFD。
绘制下一层数据流图时,细化第0层的加工"学生成绩管理",从而描述系统的主要功能。从第0层DFD得知,"学生信息"是教务人员需要录入的一个信息,因此加入一个加?quot;录入学生信息",同样得到"录入课程信息"、"登记成绩"两个加工。另外,数据流"查询请求"和"查询结果"应该由加工"查询成绩"来完成。这样,我们用"录入学生信息"、"录入课程信息"、"登记学生成绩"和"查询学生成绩"四个加工代替第0层的"学生成绩管理",同时增加这些数据流对应的数据存储,即"学生"、"课程"和"成绩",最后得到如图所示的第1层DFD。
为了继续进行分解,我们分析第1层DFD中的加工"查询学生成绩"。学生查询成绩时需要提供合法性检查,因此,"查询学生成绩"可以分解为"合法性检查"和"查询成绩"两个处理步骤,从而形成如图所示的第2层DFD。
根据以上实例和经验,绘制数据流图应当遵循以下原则:
(1) 分层时,子图的输入、输出数据流必须和父图中相应加工的输入、输出数据流一致;
(2) 加工的编号应该唯一且具有层次性;
(3) 加工不应该只有输入或只有输出,通常既有输入又有输出;
(4) 数据流图不应反映处理的顺序;
(5) 加工之间应通过数据存储进行通信,避免从一个加工直接流到另一个加工;
(6) 数据应通过加工进行流动,避免从一个数据存储直接流到另一个数据存储;
(7) 数据流图中所有元素的命名应当对客户有意义,且与业务相关;
(8) 不要在一个图中绘制7个以上的加工,否则难于绘制和理解。
* 数据字典
以下列出"学生成绩管理系统"的部分数据字典条目: