软件工程实验三
实验三 数据流图与数据字典

实验三数据流图与数据字典数据流图与数据字典是软件工程中常用的两种工具,用于描述系统的功能和数据流动。
数据流图是一种图形化的工具,用于表示系统内部的数据流动和处理过程,而数据字典则是对数据流图中所使用的数据流、数据存储和处理过程进行详细定义和描述的文档。
在进行数据流图和数据字典的设计和编写时,需要按照一定的标准格式进行,以保证文档的清晰和易读性。
下面我将详细介绍数据流图和数据字典的标准格式及其要求。
一、数据流图的标准格式数据流图通常由四个主要元素组成,包括外部实体、数据流、数据存储和处理过程。
以下是数据流图的标准格式:1. 外部实体(External Entity):外部实体是与系统进行交互的外部对象,可以是人、其他系统或设备等。
外部实体通常用矩形框表示,框内写明实体的名称。
如果有多个外部实体,可以使用不同的矩形框进行区分。
2. 数据流(Data Flow):数据流是在系统中流动的数据,可以是输入数据、输出数据或系统内部传递的数据。
数据流通常用箭头表示,箭头指向数据的流向,并在箭头上方写明数据的名称。
3. 数据存储(Data Store):数据存储是系统中用于存储数据的地方,可以是文件、数据库或其他数据存储设备。
数据存储通常用平行四边形表示,并在图形上方写明存储的名称。
4. 处理过程(Process):处理过程是对数据流进行处理或转换的动作,可以是计算、判断、存储等操作。
处理过程通常用圆角矩形表示,并在图形内部写明过程的名称。
在绘制数据流图时,需要按照以下要求进行:1. 采用层次化的结构,将系统划分为不同的层次,每个层次表示不同的功能模块或子系统。
2. 使用标准的符号和图形进行表示,确保符号的一致性和易读性。
3. 标明数据流的名称和数据类型,如文本、数值、日期等。
4. 标明处理过程的名称和功能描述,确保过程的清晰和易理解。
5. 标明数据存储的名称和存储内容,如数据表、文件等。
6. 使用合适的箭头和线条连接各个元素,表示数据的流向和处理顺序。
软件工程实验(共五次)

软件工程课程实验指导书软件工程是随着计算机系统的发展而逐步形成的计算机科学领域中的一门新兴学科。
通过软件工程课程的学习,能够达到正确的安排软件的结构,合理组织、管理软件的生产的教学目的。
教学的实践环节是本课程的重要部分,通过实验例证理解掌握软件工程各阶段的任务和完成后的文档是什么及完成方法。
本课程实验环节安排10学时,主要完成需求分析、模块设计、数据库设计、详细设计和测试分析六个部分。
具体安排如下:课时分配:内容实验一实验二实验三实验四实验五课时 2 2 2 2 2实验一编写系统需求说明书一、实验题目对系统进行需求分析。
并编写系统需求分析说明书。
二、实验目的通过对选定系统进行系统分析和编写需求说明书,掌握系统需求分析的步骤和方法,明确需求说明书内容和格式。
通过对visio2003的熟悉应用,把系统的逻辑模型画出来。
三、预习1、系统的数据描述、功能描述方法;2、需求分析工具(业务流程图、数据流图、数据字典);3、系统需求分析步骤和内容;四、实验设备与环境1、运行和使用visio2003;2、收集整理资料的资料室和虚拟用户或实际用户。
五、实验内容选定系统后,进行系统分析,然后按如下编写提示撰写需求说明书。
1、引言⑴编写目的说明编写软件需求说明的目的,指出预期的读者。
⑵背景说明说明待开发的软件系统的名称;本项目的任务提出者、开发者、用户及实现该软件的计算机中心或网络中心;该软件系统同其他系统或其他机构的基本的相互来往关系。
⑶定义列出本文件中用到的专门术语的定义和外文首字母组词的原词组。
⑷参考资料列出有关的参考资料及资料的来源。
2、任务概述⑴目标叙述该软件开发的意图、应用目标、作用范围以及其他应向读者说明的有关该软件开发的背景材料。
解释被开发软件与其他有关软件之间的关系。
如果本系统是一项独立的软件,而且全部内容自含,则说明这一点。
如果所定义的系统是一个更大的系统的组成部分,则应说明本系统与该系统中其他各组成部分的关系,用方框图来说明该系统的组成和本系统同其他各个部分的联系和接口。
软件工程导论实验指导书 实验3:代码复查、编译

软件工程导论实验三:代码复查、编译[ 实验日期 ] 年月日[ 实验目的 ]学习如何利用代码复查检查表快速而有效地发现程序中的缺陷。
[ 实验内容 ]按照代码复查脚本规定的流程,对照代码复查检查表检查源代码并记录。
编译程序,测试程序,修复所有缺陷,同时填写缺陷记录日志。
[ 实验原理和步骤]如果想发现和改正程序的每一个缺陷,就必须遵照一个精确的规程。
检查表可以帮助确保遵循这个规程。
检查表也是一个构思的来源。
当按照检查表去做时,就知道如何进行代码复查。
检查表包括了个人的经验。
通过不断地使用和改进个人检查表,可以更好地发现在程序中的缺陷。
[ 实验报告要求]《学生填写》填写代码复查检查表《学生填写》填写缺陷记录日志。
[注意事项][实验总结 ]①对重点实验结果进行分析;比如自己总查不出哪种错误②实验中的问题和提高:对老师或自己的编码进行评价,指出合理和不足之处,提出改进的方案。
③收获与体会:《学生填写》实验总结附录一:代码复查脚本附录而二:代码复查检查表C++代码复查指南和检查表程序名和程序号#一般性说明: 在完成每个复查步骤之后,将发现的某个类型的缺陷的个数记录在右面的栏目中。
如果该步骤没有发现缺陷,就在右面的栏目中打个表示检查无误的交叉符号(X)。
在开始复查下一个程序单元之前,要按照检查表完成对程序,类,对象或方法的检查检查内容函数1 函数2函数3累计数累计%完整性验证设计的所有功能都已经编码XXXIncludes 验证Include语句是完全的XXX初始化检查变量和参数的初始化:●在程序的开始;●在每个循环的开始;●在函数/过程的入口XXX调用检查函数调用的格式:XXX附录三:缺陷类型附录四:缺陷记录日志缺陷记录日志学生日期教员程序号日期编号类型引入阶段排除阶段修复时间相关缺陷。
软件工程实验三-概要设计

软件工程实验三-概要设计人事工资管理系统概要设计目录1.导言 (3)1.1目的 (3)2.系统分析 (4)3.界面设计 (4)图2-5人事管理0层编号1的数据流图 (7)图2-6 人事管理0层编号2的1层数据流图 (8)图2-7 工资管理0层数据流图 (8)4.体系结构 (8)4.1体系结构 (9)4.1.1STRUCT体系结构 (9)4.1.2系统体系结构 (9)4.2系统运行环境 (10)4.2.1网络结构图........................................................................................... 错误!未定义书签。
4.2.2 硬件环境 (10)4.2.3软件环境 (10)5.数据模型 (11)5.1数据库的概念结构模型设计 (11)5.2数据库的逻辑结构模型设计 (11)5.3数据库管理物理结构模型设计 (11)6.模块设计 (12)6.1.1表示层设计 (12)6.1.2控制层 (12)6.1.3模型层 (12)6.2登录管理模块设计 (12)6.2.1表示层设计 (12)6.2.2控制层设计 (13)6.2.3模型层设计 (13)1.导言1.1目的该文档的目的是描述人事工资管理系统项目的概要设计,其主要内容包括:●系统功能简介●系统结构设计●系统接口设计●数据设计●模块设计●界面设计本文档的预期的读者是:●开发人员●项目管理人员●测试人员1.2范围该文档定义了系统的结构和单元接口,但未确定单元的实现方法,这部分内容将在详细设计/实现中确定。
1.3缩写说明UMLUnified Modeling Language(统一建模语言)的缩写,是一个标准的建模语言。
HRHuman resources management(人事工资管理管理)的缩写。
1.4引用标准[1] 《企业文档格式标准》北京长江软件有限公司[2] 《软件概要设计报告格式标准》北京长江软件有限公司软件工程过程化组织1.5参考资料[1] 《实战struct》〔美〕TedHusted机械工业出版社[2] 《软件重构》清华大学出版社2.系统分析本系统可以实现人事工资管理,人事管理者通过该系统进行人事工资管理。
软件工程形考三实验

软件工程形考三实验实验目的本实验旨在通过设计和实现一个软件项目,加深对软件工程理论和实践的应用,提高软件项目设计与开发的能力。
实验内容1. 确定软件项目的需求和目标,并进行需求分析和概要设计。
2. 根据需求和设计编写代码,完成软件项目的详细设计与实现。
3. 进行软件项目的测试,修复bug并进行性能优化。
4. 完成软件项目的文档撰写,包括实验报告和用户手册等。
实验步骤需求分析与概要设计,根据软件项目的需求,进行需求分析与概要设计。
对于此次实验,我们假设软件项目是一个在线购物系统,具备以下功能:用户注册与登录商品浏览与搜索购物车管理订单管理支付与配送在需求分析阶段,分析每个功能的详细需求和用户交互流程,并进行概要设计,确定系统的整体架构和各个模块的关系与功能。
详细设计与实现根据概要设计的结果,进行详细设计与编码实现。
在这个阶段,需要确定每个功能的具体实现方式,设计数据库、界面和业务逻辑等。
在编码实现过程中,要注意编码规范、模块化设计和代码可重用性。
测试与优化完成软件项目的实现后,进行测试。
测试需要分别对每个功能进行单元测试和整体集成测试,发现bug并进行修复。
对软件的性能进行评估,进行性能优化,保证系统能够稳定可靠地运行。
文档撰写,完成软件项目的文档撰写工作。
包括实验报告、用户手册和技术文档等。
实验报告应包括需求分析、详细设计、实现过程和测试结果等内容,用户手册应该详细说明软件的功能和使用方法,技术文档则对系统的架构和实现进行详细说明。
实验通过本次实验,我们深入理解了软件工程的理论和实践,掌握了软件项目的设计与开发流程。
在实践中,我们遇到了各种问题和挑战,但通过团队合作和不断学习,最终成功完成了软件项目的开发。
尽管还有很多不足和改进的地方,但这次实验对我们的软件工程能力提升有着极大的帮助。
参考资料1. 软件工程导论,张海藩,高教出版社2. 软件项目管理实践,曹健,电子工业出版社。
软件工程实验报告

实验一:基于UML的用例模型试验实验目的:1、掌握使用visio绘制用例模型2、掌握Ration Rose绘制用例模型的方法实验内容:1、使用vise绘制用例模型2、使用Ration Rose绘制用例模型的方法实验步骤:1、使用Visio绘制用例模型(1)启动Visio中的UML模型绘制开始时需要新建一个文件存放用例模型,首先选择“开始” 一“程序” -Microsoft office visio 2003选项进入Visio启动页面,在“类别”选项区域中才、选择“软件”项:然后在“模板”选项区域中选择UML模型图,即可打开制作UML模型的全部对彖图集,Vise提供了关于制作UML模型所需要的全部图表,支持开发人员进行面向对彖的分析和设计工作。
(2)保存UML模型通过选择菜单File…Save选项或者单机工具栏的Save按钮,来保存系统模型,保存的文件类型是-VSdo(3)新建立用例图(4)建立用例中的角色(5)建立用例(6)建立角色与用例、用例与角色之间的联系(7)建立活动图2、使用Rational Rose绘制用例模型(1)Rational Rose 的启动:选择"开始"---"程序” ---Rational Software---Rational Rose Enterprise Edetion选项,弹出对话框。
这个对话框用来设置本次启动的初始动作,分为New (新建模型)Existing (打开现有模型)和Recent (最近打开模型)三个标签。
(2)新建用例图在Browser窗I I内的树形列表中选中UseCase包并右击,在弹出的快捷菜单中选择New一UseCase Diagram选项。
此时出现New Diagram用例图名称并允许修改,将NewDiagrain更名为“医疗器材管理系统用例图”双击Biowgram窗I I内树形列表中的“医疗器材管理系统用例图”,在Diagram窗I I中出现“Use CaseDiagiain: Use CaseView/医疗器材管理系统用例图”,可以在该窗1 1中绘制用例图。
实验三 数据流图与数据字典

实验三数据流图与数据字典引言概述:数据流图和数据字典是软件工程中常用的两种工具,用于描述和分析系统中的数据流和数据存储。
数据流图用于表示系统中的数据流动,数据字典则用于详细描述数据流图中的数据元素。
本文将详细介绍数据流图和数据字典的概念、作用以及使用方法。
一、数据流图的概念与作用:1.1 数据流图的定义:数据流图是一种图形化的工具,用于描述系统中的数据流动和处理过程。
它由数据流、处理、数据存储和外部实体组成,通过箭头表示数据的流向。
1.2 数据流图的作用:数据流图可以匡助分析人员更好地理解系统中的数据流动,从而更好地设计和优化系统。
它可以用于需求分析、系统设计和系统维护等阶段,匡助团队成员更好地协作和沟通。
1.3 数据流图的使用方法:- 确定系统的边界:首先确定系统的输入和输出,将其作为数据流图的边界。
- 确定数据流和处理:根据系统的需求,确定数据流和处理的过程。
- 确定数据存储和外部实体:确定系统中的数据存储和外部实体,并将其与数据流和处理关联起来。
- 绘制数据流图:根据以上确定的元素,绘制数据流图,并使用箭头表示数据流的流向。
二、数据字典的概念与作用:2.1 数据字典的定义:数据字典是一种详细描述数据流图中的数据元素的工具,它包含了数据元素的名称、类型、长度、取值范围等信息。
2.2 数据字典的作用:数据字典可以匡助分析人员更好地理解数据流图中的数据元素,从而更好地设计和管理系统中的数据。
它可以用于数据流图的设计、系统测试和系统维护等阶段,匡助团队成员更好地理解和使用数据。
2.3 数据字典的使用方法:- 定义数据元素:根据数据流图中的数据元素,定义其名称、类型、长度、取值范围等信息。
- 组织数据字典:将所有数据元素按照一定的规则组织起来,形成数据字典。
- 更新数据字典:在系统设计和维护的过程中,根据需求的变化更新数据字典。
三、数据流图与数据字典的关系:3.1 数据流图与数据字典的互补性:数据流图和数据字典相互依赖,数据流图描述了数据的流动和处理过程,而数据字典则提供了对数据元素的详细描述。
软件工程 实验三

软件工程实验三软件工程实验三1.引言1.1 目的本文档的目的是描述软件工程实验三的相关内容和要求。
本实验旨在通过设计和实现一个软件系统,应用软件工程的原理和技术,提高学生对软件工程过程和方法的理解和应用能力。
1.2 范围本实验将涉及以下内容:●需求分析和规约●系统设计和建模●软件系统实现●验证和测试2.需求分析和规约2.1 系统描述描述软件系统的功能和特性,包括用户需求和系统需求。
2.2 功能需求列出软件系统的必须功能和期望功能,明确功能的优先级和依赖关系。
2.3 非功能需求列出软件系统的性能需求、安全需求、可靠性需求、可用性需求等。
3.系统设计和建模3.1 系统架构设计描述系统的总体架构和组成模块,包括模块之间的通信和数据流。
3.2 数据模型设计设计系统使用的数据模型,包括实体关系模型、类图等。
3.3 功能模块设计对系统的每个功能模块进行详细设计,包括接口设计、数据结构设计等。
4.软件系统实现4.1 编程语言和开发环境确定使用的编程语言和开发环境,以及必要的开发工具和库。
4.2 模块实现按照设计要求,实现每个功能模块,编写代码并进行测试。
4.3 系统集成将各个功能模块进行集成测试,确保整个软件系统正常运行。
5.验证和测试5.1 单元测试对每个功能模块进行单元测试,确保模块的功能正确。
5.2 集成测试对整个系统进行集成测试,验证各个模块之间的协作和交互。
5.3 系统测试对系统进行系统级测试,模拟实际使用环境,测试系统的性能和稳定性。
6.附件附件1:需求规约文档附件2:系统设计图纸附件3:源代码7.法律名词及注释●著作权:指对于作品享有的法律权益,包括复制、发行和演绎等权利。
●许可证:指授权他人使用软件的一种形式,可以是开源许可证或商业许可证。
●维护费用:指使用软件时需要支付的额外费用,例如维护和支持服务。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
昆明理工大学信息工程与自动化学院学生实验报告(2012———2013 学年第 2 学期)课程名称:软件工程开课实验室:444 2013年5 月17日年级、专业、班学号姓名成绩实验项目名称设计建模实践指导教师丁家满教师评语该同学是否了解实验原理: A.了解□ B.基本了解□ C.不了解□该同学的实验能力: A.强□ B.中等□ C.差□该同学的实验是否达到要求: A.达到□ B.基本达到□ C.未达到□实验报告是否规范: A.规范□ B.基本规范□ C.不规范□实验过程是否详细记录: A.详细□ B.一般□ C.没有□教师签名:年月日一、实验目的1、熟悉sybase powerdesigner绘制图形软件的环境,以及各种模型的绘图功能;2、掌握ClassDiagram_1模型下各种符号的形状和功能,以及在ClassDiagram_1绘制用例图;3、了解和掌握关联、扩展、包含、泛化、实现的基本符号形状及使用范围,能够在类图中准确的表达;4、能够准确的描述类的属性,以及操作方法5、掌握生成报告的方法二、实验内容在sybase powerdesigner的ClassDiagram_1模型下绘制教务管理系统类图。
三、所用仪器、材料(设备名称、型号、规格等)PC机一台、Sybase PowerDesigner 15四、实验原理和步骤1、分析各个角色及其功能绘制用例图,从而绘制类图,分析步骤如下:(1)谁使用了系统的主要功能;(2)谁要系统的支持来完成日常工作任务;(3)谁维护、管理,并保证系统正常运行;(4)系统需要应付或者处理那些硬件设备;(5)系统需要和哪些外部系统交互;(6)谁对系统运行的结果感兴趣。
2、根据以上分析,创建类模型步骤:(1)找出角色和用例图中的名词(2)寻找需要保存的结果(3)完善类的属性(4)确定各个类之间的结构关系(5)绘制类图五、实验结果 (图形、数据、图表、计算等)五、实验分析数据(表、图)I Model information I.1 模型教务管理系统类图的卡片名称教务管理系统类图代码教务管理系统类图注释I Common objectsI.1 AssociationsI.1.1 Model level associations I.1.1.1 关联清单名称代码类B类A角色A角色B多重性A 多重性BAssociatio n_1 association1成绩学生0..1 0..*Associatio n_2 association2学习计划教务管理员0..1 0..*Associatio n_3 association3学习计划学生0..1 0..*Associatio n_4 association4课程学生0..1 0..*Associatio n_5 association5申请教务管理员0..1 0..*I.1.1.2 关联Association_1I.1.1.2.1 关联Association_1的卡片名称Association_1代码association1类B成绩类A学生角色A角色B多重性A0..1多重性B0..*I.1.1.2.2 关联Association_1的扩充属性清单名称数据类型值目标名称roleAContainer ObjectContainer<None> JavaroleAImplementationCla ss ContainerImplementation<None> JavaroleBContainer ObjectContainer java.util.CollectionJavaroleBImplementationCla ss ContainerImplementationjava.util.HashSetJavaI.1.1.3 关联Association_2I.1.1.3.1 关联Association_2的卡片名称Association_2代码association2类B学习计划类A教务管理员角色A角色B多重性A0..1多重性B0..*I.1.1.3.2 关联Association_2的扩充属性清单名称数据类型值目标名称roleAContainer ObjectContainer<None> JavaroleAImplementationCla ss ContainerImplementation<None> JavaroleBContainer ObjectContainer java.util.CollectionJavaroleBImplementationCla ss ContainerImplementationjava.util.HashSetJavaI.1.1.4 关联Association_3I.1.1.4.1 关联Association_3的卡片名称Association_3 代码association3 类B学习计划类A学生角色A角色B多重性A0..1多重性B0..*I.1.1.4.2 关联Association_3的扩充属性清单名称数据类型值目标名称roleAContainer ObjectContainer<None> JavaroleAImplementationCla ss ContainerImplementation<None> JavaroleBContainer ObjectContainer java.util.CollectionJavaroleBImplementationCla ss ContainerImplementationjava.util.HashSetJavaI.1.1.5 关联Association_4I.1.1.5.1 关联Association_4的卡片名称Association_4代码association4类B课程类A学生角色A角色B多重性A0..1多重性B0..*I.1.1.5.2 关联Association_4的扩充属性清单名称数据类型值目标名称roleAContainer ObjectContainer<None> JavaroleAImplementationCla ss ContainerImplementation<None> JavaroleBContainer ObjectContainer java.util.CollectionJavaroleBImplementationCla ss ContainerImplementationjava.util.HashSetJavaI.1.1.6 关联Association_5I.1.1.6.1 关联Association_5的卡片名称Association_5 代码association5类B申请类A教务管理员角色A角色B多重性A0..1多重性B0..*I.1.1.6.2 关联Association_5的扩充属性清单名称数据类型值目标名称roleAContainer ObjectContainer<None> JavaroleAImplementationCla ss ContainerImplementation<None> JavaroleBContainer ObjectContainer java.util.CollectionJavaroleBImplementationCla ss ContainerImplementationjava.util.HashSetJavaI.1 DependenciesI.1.1 Model level dependenciesI.1.1.1 依赖清单名称代码流入对象依赖对象Dependency_1 Dependency_1 学习计划申请Dependency_2 Dependency_2 开设课程学习计划I.1.1.2 依赖Dependency_1I.1.1.2.1 依赖Dependency_1的卡片名称Dependency_1代码Dependency_1流入对象学习计划依赖对象申请I.1.1.2.2 包含依赖Dependency_1的图清单名称代码ClassDiagram_1 ClassDiagram_1I.1.1.3 依赖Dependency_2I.1.1.3.1 依赖Dependency_2的卡片名称Dependency_2代码Dependency_2流入对象开设课程依赖对象学习计划I.1.1.3.2 包含依赖Dependency_2的图清单名称代码ClassDiagram_1 ClassDiagram_1I.2GeneralizationsI.2.1 Model level generalizationsI.2.1.1 泛化清单名称代码父对象子对象Generalization_1 Generalization_1 用户学生Generalization_2 Generalization_2 用户教务管理员Generalization_3 Generalization_3 课程开设课程I.2.1.2 泛化Generalization_1I.2.1.2.1 泛化Generalization_1的卡片名称Generalization_1代码Generalization_1父对象用户子对象学生I.2.1.3 泛化Generalization_2I.2.1.3.1 泛化Generalization_2的卡片名称Generalization_2代码Generalization_2父对象用户子对象教务管理员I.2.1.4 泛化Generalization_3I.2.1.4.1 泛化Generalization_3的卡片名称Generalization_3 代码Generalization_3 父对象课程子对象开设课程IIClass diagrams objectsII.1 ClassesII.1.1 Model level classesII.1.1.1 类清单名称代码父类产生可见性抽象类的类型学习计划学习计划Object-Oriented Model '教务管理系统类图'TRUE public FALSE Class学生学生Object-Oriented Model '教务管理系统类图'TRUE public FALSE Class开设课程开设课程Object-Oriented Model '教务管理系统类图'TRUE public FALSE Class成绩成绩Object-Oriented Model '教务管理系统类图'TRUE public FALSE Class教务管理员教务管理员Object-Oriented Model '教务管理系统类图'TRUE public FALSE Class用户用户Object-Oriented Model '教务管理系统类图'TRUE public FALSE Class申请申请Object-Oriented Model '教务管理系统类图'TRUE public FALSE Class课程课程Object-Oriented Model '教务管理系统类图'TRUE public FALSE Class II.1.1.2 类属性清单名称代码已显示的域数据类型可见性初始值类元只读学号学号TRUE <None> int public 学生FALSE 姓名姓名TRUE <None> char public 学生FALSE 性别性别TRUE <None> char public 学生FALSE 专业专业TRUE <None> char public 学生FALSE 成绩成绩TRUE <None> double public 学生FALSE账号账号TRUE <None> int public 用户FALSE 密码密码TRUE <None> int public 用户FALSE 姓名姓名TRUE <None> int public 用户FALSE 姓名姓名TRUE <None> char public 教务管理员FALSE性别性别TRUE <None> char public 教务管理员FALSE年龄年龄TRUE <None> int public 教务管理员FALSE职称职称TRUE <None> char public 教务管理员FALSE账号账号TRUE <None> int public 教务管理员FALSE密码密码TRUE <None> int public 教务管理员FALSE 成绩单成绩单TRUE <None> double public 成绩FALSE 绩点绩点TRUE <None> double public 成绩FALSE 姓名姓名TRUE <None> char public 成绩FALSE 课程号课程号TRUE <None> int public 成绩FALSE 学院学院TRUE <None> char public 学习计划FALSE专业专业TRUE <None> char public 学习计划FALSE时间时间TRUE <None> Date public 学习计划FALSE内容内容TRUE <None> String public 学习计划FALSE周期周期TRUE <None> Date public 学习计划FALSE教师教师TRUE <None> char public 学习计划FALSE申请时间申请时间TRUE <None> Date public 申请FALSE申请人申请人TRUE <None> char public 申请FALSE申请内容申请内容TRUE <None> String public 申请FALSE课程号课程号TRUE <None> int public 课程FALSE 课程名课程名TRUE <None> char public 课程FALSE 成绩成绩TRUE <None> double public 课程FALSE 教师教师TRUE <None> char public 课程FALSE 课程号课程号TRUE <None> int public 开设课程FALSE 课程名课程名TRUE <None> char public 开设课FALSE程FALSE 成绩成绩TRUE <None> int public 开设课程II.1.1.3 类学习计划II.1.1.3.1 类学习计划的代码预览/************************************************************************ Module: 学习计划.java* Author: student* Purpose: Defines the Class 学习计划***********************************************************************/import java.util.*;/** @pdOid 632da019-1d64-4e38-bdc7-871e4f602440 */public class 学习计划{/** @pdOid dc523ca6-a69c-44cf-a437-e1d1f20eda28 */public char 学院;/** @pdOid 7cb0df5d-9b84-45bb-9948-9b2298b52b33 */public char 专业;/** @pdOid 285f633b-d182-467d-941c-cbef3e25da5c */public Date 时间;/** @pdOid dcb1b4a7-e0d3-4027-9204-825fe7e00a8c */public String 内容;/** @pdOid 4708fd0b-d862-4e64-acdb-8e1cd6e4c6c8 */public Date 周期;/** @pdOid a36a54e8-34d8-404c-8136-28609984c983 */public char 教师;}II.1.1.3.2 类学习计划的标题/************************************************************************ Module: 学习计划.java* Author: student* Purpose: Defines the Class 学习计划***********************************************************************/II.1.1.3.3 类学习计划的导入import java.util.*;II.1.1.3.4 类学习计划的属性学院II.1.1.3.5 类学习计划的属性专业II.1.1.3.6 类学习计划的属性时间II.1.1.3.7 类学习计划的属性内容II.1.1.3.8 类学习计划的属性周期II.1.1.3.9 类学习计划的属性教师II.1.1.4 类学生II.1.1.4.1 类学生的代码预览/*********************************************************************** * Module: 学生.java* Author: student* Purpose: Defines the Class 学生***********************************************************************/ import java.util.*;/** @pdOid 459751ec-ac22-4a6d-9abc-5936cbd03ca4 */public class 学生extends 用户{/** @pdOid 82cb82ea-382d-4786-925c-b77ebdc5366d */public int 学号;/** @pdOid dca40564-bb7e-4665-b987-c46474101b8b */public char 姓名;/** @pdOid 3a6c04ed-efb5-4cca-8ec3-c5702eeb5243 */public char 性别;/** @pdOid 49ab514f-7ef8-4555-a45c-92511d3aa3f7 */public char 专业;/** @pdOid 11b2708f-d6bd-41aa-9d91-265c00a03f48 */public double 成绩;/** @pdRoleInfo migr=no name=学习计划assc=association3 coll=java.util.Collection impl=java.util.HashSet mult=0..* */public java.util.Collection<学习计划> 学习计划;/** @pdRoleInfo migr=no name=课程assc=association4 coll=java.util.Collection impl=java.util.HashSet mult=0..* */public java.util.Collection<课程> 课程;/** @pdGenerated default getter */public java.util.Collection<成绩> get成绩() {if (成绩== null)成绩= new java.util.HashSet<成绩>();return 成绩;}/** @pdGenerated default iterator getter */public java.util.Iterator getIterator成绩() {if (成绩== null)成绩= new java.util.HashSet<成绩>();return 成绩.iterator();}/** @pdGenerated default setter* @param new成绩*/public void set成绩(java.util.Collection<成绩> new成绩) { removeAll成绩();for (java.util.Iterator iter = new成绩.iterator(); iter.hasNext();) add成绩((成绩)iter.next());}/** @pdGenerated default add* @param new成绩*/public void add成绩(成绩new成绩) {if (new成绩== null)return;if (this.成绩== null)this.成绩= new java.util.HashSet<成绩>();if (!this.成绩.contains(new成绩))this.成绩.add(new成绩);}/** @pdGenerated default remove* @param old成绩*/public void remove成绩(成绩old成绩) {if (old成绩== null)return;if (this.成绩!= null)if (this.成绩.contains(old成绩))this.成绩.remove(old成绩);}/** @pdGenerated default removeAll */public void removeAll成绩() {if (成绩!= null)成绩.clear();}/** @pdGenerated default getter */public java.util.Collection<学习计划> get学习计划() {if (学习计划== null)学习计划= new java.util.HashSet<学习计划>();return 学习计划;}/** @pdGenerated default iterator getter */public java.util.Iterator getIterator学习计划() {if (学习计划== null)学习计划= new java.util.HashSet<学习计划>();return 学习计划.iterator();}/** @pdGenerated default setter* @param new学习计划*/public void set学习计划(java.util.Collection<学习计划> new学习计划) { removeAll学习计划();for (java.util.Iterator iter = new学习计划.iterator(); iter.hasNext();) add学习计划((学习计划)iter.next());}/** @pdGenerated default add* @param new学习计划*/public void add学习计划(学习计划new学习计划) {if (new学习计划== null)return;if (this.学习计划== null)this.学习计划= new java.util.HashSet<学习计划>();if (!this.学习计划.contains(new学习计划))this.学习计划.add(new学习计划);}/** @pdGenerated default remove* @param old学习计划*/public void remove学习计划(学习计划old学习计划) {if (old学习计划== null)return;if (this.学习计划!= null)if (this.学习计划.contains(old学习计划))this.学习计划.remove(old学习计划);}/** @pdGenerated default removeAll */public void removeAll学习计划() {if (学习计划!= null)学习计划.clear();}/** @pdGenerated default getter */public java.util.Collection<课程> get课程() {if (课程== null)课程= new java.util.HashSet<课程>();return 课程;}/** @pdGenerated default iterator getter */public java.util.Iterator getIterator课程() {if (课程== null)课程= new java.util.HashSet<课程>();return 课程.iterator();}/** @pdGenerated default setter* @param new课程*/public void set课程(java.util.Collection<课程> new课程) { removeAll课程();for (java.util.Iterator iter = new课程.iterator(); iter.hasNext();) add课程((课程)iter.next());}/** @pdGenerated default add* @param new课程*/public void add课程(课程new课程) {if (new课程== null)return;if (this.课程== null)this.课程= new java.util.HashSet<课程>();if (!this.课程.contains(new课程))this.课程.add(new课程);}/** @pdGenerated default remove* @param old课程*/public void remove课程(课程old课程) {if (old课程== null)return;if (this.课程!= null)if (this.课程.contains(old课程))this.课程.remove(old课程);}/** @pdGenerated default removeAll */public void removeAll课程() {if (课程!= null)课程.clear();}}I.1.1.1.1 类学生的标题/*********************************************************************** * Module: 学生.java* Author: student* Purpose: Defines the Class 学生***********************************************************************/ I.1.1.1.2 类学生的导入import java.util.*;I.1.1.1.3 类学生的属性学号I.1.1.1.4 类学生的属性姓名I.1.1.1.5 类学生的属性性别I.1.1.1.6 类学生的属性专业I.1.1.1.7 类学生的属性成绩I.1.1.1 类开设课程I.1.1.1.1 类开设课程的代码预览/*********************************************************************** * Module: 开设课程.java* Author: student* Purpose: Defines the Class 开设课程***********************************************************************/import java.util.*;/** @pdOid 56abcab7-65ed-4db2-8c00-a21fd1787892 */public class 开设课程extends 课程{/** @pdOid c99859c2-288c-44c3-8b5e-096b623f37b1 */public int 课程号;/** @pdOid cf2e7e30-16d9-4e79-bff1-6eee7cf8b90b */public char 课程名;/** @pdOid 23477338-49fb-4866-bf7c-d62afa528f6f */public int 成绩;}I.1.1.1.2 类开设课程的标题/*********************************************************************** * Module: 开设课程.java* Author: student* Purpose: Defines the Class 开设课程***********************************************************************/ I.1.1.1.3 类开设课程的导入import java.util.*;I.1.1.1.4 类开设课程的属性课程号I.1.1.1.5 类开设课程的属性课程名I.1.1.1.6 类开设课程的属性成绩I.1.1.2 类成绩I.1.1.2.1 类成绩的代码预览/*********************************************************************** * Module: 成绩.java* Author: student* Purpose: Defines the Class 成绩***********************************************************************/ import java.util.*;/** @pdOid bbfc52f6-760e-44d3-a72d-ed2731ea27b1 */public class 成绩{/** @pdOid d7eb25aa-80d1-453f-ac85-77284ef77e55 */public double 成绩单;/** @pdOid 298e94d2-b617-439f-b2f9-11c3022edbae */public double 绩点;/** @pdOid a4d33a79-00df-4231-8a97-4e3cc726f3cf */public char 姓名;/** @pdOid d5fee297-4064-4e59-a426-4ea7f39557b2 */public int 课程号;}I.1.1.2.2 类成绩的标题/*********************************************************************** * Module: 成绩.java* Author: student* Purpose: Defines the Class 成绩***********************************************************************/ I.1.1.2.3 类成绩的导入import java.util.*;I.1.1.2.4 类成绩的属性成绩单I.1.1.2.5 类成绩的属性绩点I.1.1.2.6 类成绩的属性姓名I.1.1.2.7 类成绩的属性课程号I.1.1.3 类教务管理员I.1.1.3.1 类教务管理员的代码预览/*********************************************************************** * Module: 教务管理员.java* Author: student* Purpose: Defines the Class 教务管理员***********************************************************************/ import java.util.*;/** @pdOid 66e9b8d7-1e96-428e-99ff-2401ce1b8a05 */public class 教务管理员extends 用户{/** @pdOid 5f2a61a8-9c06-4b6c-bba8-a92467bda758 */public char 姓名;/** @pdOid 25131a94-e2de-476b-b61a-71bf35b0cf8b */public char 性别;/** @pdOid 62117915-07a2-4ef2-af9a-fedeb1fd9dde */public int 年龄;/** @pdOid 4968d9b2-2a2e-44be-8665-9db3db898a1b */public char 职称;/** @pdOid 30160ef3-9c5b-476a-a903-62968e0a77ec */public int 账号;/** @pdOid b1e55183-21f5-4f06-800b-3dfb9ffa0e7a */public int 密码;/** @pdRoleInfo migr=no name=学习计划assc=association2 coll=java.util.Collection impl=java.util.HashSet mult=0..* */public java.util.Collection<学习计划> 学习计划;/** @pdRoleInfo migr=no name=申请assc=association5 coll=java.util.Collection impl=java.util.HashSet mult=0..* */public java.util.Collection<申请> 申请;/** @pdGenerated default getter */public java.util.Collection<学习计划> get学习计划() {if (学习计划== null)学习计划= new java.util.HashSet<学习计划>();return 学习计划;}/** @pdGenerated default iterator getter */public java.util.Iterator getIterator学习计划() {if (学习计划== null)学习计划= new java.util.HashSet<学习计划>();return 学习计划.iterator();}/** @pdGenerated default setter* @param new学习计划*/public void set学习计划(java.util.Collection<学习计划> new学习计划) { removeAll学习计划();for (java.util.Iterator iter = new学习计划.iterator(); iter.hasNext();)add学习计划((学习计划)iter.next());}/** @pdGenerated default add* @param new学习计划*/public void add学习计划(学习计划new学习计划) {if (new学习计划== null)return;if (this.学习计划== null)this.学习计划= new java.util.HashSet<学习计划>();if (!this.学习计划.contains(new学习计划))this.学习计划.add(new学习计划);}/** @pdGenerated default remove* @param old学习计划*/public void remove学习计划(学习计划old学习计划) { if (old学习计划== null)return;if (this.学习计划!= null)if (this.学习计划.contains(old学习计划))this.学习计划.remove(old学习计划);}/** @pdGenerated default removeAll */public void removeAll学习计划() {if (学习计划!= null)学习计划.clear();}/** @pdGenerated default getter */public java.util.Collection<申请> get申请() {if (申请== null)申请= new java.util.HashSet<申请>();return 申请;}/** @pdGenerated default iterator getter */public java.util.Iterator getIterator申请() {if (申请== null)申请= new java.util.HashSet<申请>();return 申请.iterator();}/** @pdGenerated default setter* @param new申请*/public void set申请(java.util.Collection<申请> new申请) { removeAll申请();for (java.util.Iterator iter = new申请.iterator(); iter.hasNext();) add申请((申请)iter.next());}/** @pdGenerated default add* @param new申请*/public void add申请(申请new申请) {if (new申请== null)return;if (this.申请== null)this.申请= new java.util.HashSet<申请>();if (!this.申请.contains(new申请))this.申请.add(new申请);}/** @pdGenerated default remove* @param old申请*/public void remove申请(申请old申请) {if (old申请== null)return;if (this.申请!= null)if (this.申请.contains(old申请))this.申请.remove(old申请);}/** @pdGenerated default removeAll */public void removeAll申请() {if (申请!= null)申请.clear();}}I.1.1.3.2 类教务管理员的标题/*********************************************************************** * Module: 教务管理员.java* Author: student* Purpose: Defines the Class 教务管理员***********************************************************************/ I.1.1.3.3 类教务管理员的导入import java.util.*;I.1.1.3.4 类教务管理员的属性姓名I.1.1.3.5 类教务管理员的属性性别I.1.1.3.6 类教务管理员的属性年龄I.1.1.3.7 类教务管理员的属性职称I.1.1.3.8 类教务管理员的属性账号I.1.1.3.9 类教务管理员的属性密码I.1.1.4 类用户I.1.1.4.1 类用户的代码预览/*********************************************************************** * Module: 用户.java* Author: student* Purpose: Defines the Class 用户***********************************************************************/ import java.util.*;/** @pdOid 2c5b926e-34ea-4644-b3e7-79a3fdd4470c */public class 用户{/** @pdOid 3a59d246-06d5-44a0-914a-6cf34c87f4f7 */public int 账号;/** @pdOid 01bf70d0-96d1-4316-9d9e-a46a1c745be4 */public int 密码;/** @pdOid 6a1a15d9-5cf3-4086-ad88-faddfa56626a */public int 姓名;}I.1.1.4.2 类用户的标题/*********************************************************************** * Module: 用户.java* Author: student* Purpose: Defines the Class 用户***********************************************************************/ I.1.1.4.3 类用户的导入import java.util.*;I.1.1.4.4 类用户的属性账号I.1.1.4.5 类用户的属性密码I.1.1.4.6 类用户的属性姓名I.1.1.5 类申请I.1.1.5.1 类申请的代码预览/*********************************************************************** * Module: 申请.java* Author: student* Purpose: Defines the Class 申请***********************************************************************/ import java.util.*;/** @pdOid a5b8d2a3-e47b-4e09-ab54-938b7266767e */public class 申请{/** @pdOid ae639bf5-7dc3-42b4-b776-4d4db264ec6b */public Date 申请时间;/** @pdOid 7cd23b7b-6ccd-4933-bd81-a2c863151e25 */public char 申请人;/** @pdOid 5b155d2a-55e5-4016-a90f-dd642a8cde6d */public String 申请内容;}I.1.1.5.2 类申请的标题/*********************************************************************** * Module: 申请.java* Author: student* Purpose: Defines the Class 申请***********************************************************************/ I.1.1.5.3 类申请的导入import java.util.*;I.1.1.5.5 类申请的属性申请人I.1.1.5.6 类申请的属性申请内容I.1.1.6 类课程I.1.1.6.1 类课程的代码预览/*********************************************************************** * Module: 课程.java* Author: student* Purpose: Defines the Class 课程***********************************************************************/ import java.util.*;/** @pdOid 2d1b3d12-3c14-495e-8ec8-eb6fbc7b0134 */public class 课程{/** @pdOid 3b2faa8b-9ba3-4499-91f0-8c6896ac5176 */public int 课程号;/** @pdOid 7d9943d6-950a-4434-930a-0fac946aae62 */public char 课程名;/** @pdOid f25d8d48-34bb-4052-bc47-34444e0d05f5 */public double 成绩;/** @pdOid a8c5254b-56e3-43f4-aaa8-620b58fc225b */public char 教师;}I.1.1.6.2 类课程的标题/*********************************************************************** * Module: 课程.java* Author: student* Purpose: Defines the Class 课程***********************************************************************/ I.1.1.6.3 类课程的导入import java.util.*;I.1.1.6.5 类课程的属性课程名I.1.1.6.6 类课程的属性成绩I.1.1.6.7 类课程的属性教师六、实验总结和体会在实验中进一步了解了面向对象建模的步骤,同时对类图的绘制也有了一个比较清晰的认识和了解;不但在实验中能够分析各个类之间的关系,而且能够通过分析写出类的属性,从而绘制出类图;在实验中也掌握了生成报告的方法,简而言之,我在实验中学到了很多。