软件工程实验三
实验三 数据流图与数据字典
实验三数据流图与数据字典数据流图与数据字典是软件工程中常用的两种工具,用于描述系统的功能和数据流动。
数据流图是一种图形化的工具,用于表示系统内部的数据流动和处理过程,而数据字典则是对数据流图中所使用的数据流、数据存储和处理过程进行详细定义和描述的文档。
在进行数据流图和数据字典的设计和编写时,需要按照一定的标准格式进行,以保证文档的清晰和易读性。
下面我将详细介绍数据流图和数据字典的标准格式及其要求。
一、数据流图的标准格式数据流图通常由四个主要元素组成,包括外部实体、数据流、数据存储和处理过程。
以下是数据流图的标准格式: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.法律名词及注释●著作权:指对于作品享有的法律权益,包括复制、发行和演绎等权利。
●许可证:指授权他人使用软件的一种形式,可以是开源许可证或商业许可证。
●维护费用:指使用软件时需要支付的额外费用,例如维护和支持服务。
合肥师范学院软件工程第三次实验报告
使用Rational Rose软件建立系统的用例模型,先确定参与者,然后确定用例。
4.实验结果
电梯系统的用例图
电梯系统的类图、顺序图
pos机系统的用例图
写出图书管理系统的需求陈述,然后创建其用例图
在图书管理系统中,管理员为每个读者建立一个账户,账户内存储读者个人的详细信息,并依据读者类别的不同给每个读者放借书卡(提供借书卡号、姓名、部门或班级等信息)。
读者可以凭借书卡在图书馆进行图书的借、还、续借、查询等操作,不同类别的读者在借书限额、还书期限以及可续借的次数上要有所不同。借阅图书时,由管理员录入借书卡号,系统首先验证该卡号的有效性,若无效,则提示无效的原因;若有效,则显示卡号、姓名、借书限额、已借数量、可再借数量等信息,本次实际借书的数量不能超出可再借数量的值。完成借书操作的同时要修改相应图书信息的状态、读者信息中的已借数量、在借阅信息中添加相应的记录。归还图书时,由管理员录入借书卡号和待归还的图书编号,显示借书卡号、读者姓名、读书编号、读书名称、借书日期、应还日期等信息,并自动计算是否超期以及超期的罚款金额,若进行续借则取消超期和罚款等信息;若图书有损坏,由管理员根据实际情况从系统中选择相应的损坏等级,系统自动计算损坏赔偿金额。完成归还操作的同时,修改相应图书信息的状态、修改读者信息中的已借数量、在借书信息中对相应的借书记做标记、在还书信息中添加相应的记录。
图书管理员可以对图书借阅信息进行添加、修改和删除等操作,在图书尚未归还的情况下不能对图书信息进行删除。在读者还有未归还的图书的情况下不能进行删除读者信息。
系统管理员主要进行图书的增加与删除,对读者信息和管理员信息的维护。
合肥师范学院实验报告
姓名:杨亮课程名称:软件工程
院(系):计算机学院专业/年级:软件工程(2)班
软件工程形考三实验2023简版
软件工程形考三实验软件工程形考三实验实验背景软件工程是现代软件开发过程中的一门重要学科,其涉及到软件的设计、开发、测试、维护等方面。
为了全面了解和掌握软件工程的基本知识和技能,培养学生的软件开发能力,软件工程面向对象课程通常会设置一系列实验。
实验目的本次实验旨在帮助学生理解软件工程的基本理论和实践技能,在实际项目中应用所学的知识,通过团队合作完成一个小型软件项目。
实验要求实验要求学生以小组为单位,完成一个小型软件项目,项目的主题和功能要求由教师提供。
每个小组需要按照软件工程的规范进行需求分析、设计、编码、测试等工作,并提交相应的文档和代码。
实验步骤1. 需求分析根据教师提供的项目主题和功能要求,小组成员需要分析用户需求,明确软件的功能需求和非功能需求,并将其记录在需求分析文档中。
在需求分析过程中,需要与教师和用户充分沟通,确保对需求的理解准确。
2. 系统设计在系统设计阶段,小组成员需要根据需求分析结果,设计软件的体系结构、模块划分和接口设计。
可以使用UML图等工具进行系统设计,将设计结果记录在系统设计文档中。
3. 编码实现根据系统设计文档,小组成员需要编写代码实现软件的各个功能模块。
在编码过程中,需要遵循编码规范,保持代码的可读性和可维护性。
4. 单元测试在完成代码编写后,小组成员需要进行单元测试,验证代码的正确性。
可以使用单元测试框架进行测试,并记录测试结果和测试覆盖率等指标。
5. 系统测试在整个软件开发过程完成后,小组成员需要对整个系统进行测试。
可以进行功能测试、性能测试、压力测试等,确保软件能够满足用户的需求。
测试结果需要记录在系统测试文档中。
6. 文档编写在以上各阶段完成后,小组成员需要根据实际开发情况撰写相应的文档,包括需求分析文档、系统设计文档、单元测试文档、系统测试文档等。
文档需要按照Markdown格式编写,以方便阅读和分享。
实验评估本次实验将根据小组提交的文档和代码进行评估。
评估的主要内容包括需求分析的完整性、系统设计的合理性、代码的规范性、测试结果的准确性等。
软件工程实验三
用户购买建立图书订单的图:
工作人员处理图书订单的时序图:
工作人员处理图书订单的协作图:
管理人员维护图书信息的时序图:
管理人员维护图书信息的协作图:
心得体会:
通过本次试验我基本掌握了利用Rational Rose时序图和协作图的基本操作流程,经过仔细阅读老师给的课件信息和上网查找自己不太明白的东西,我很快就画出了自己所想的时序图和协作图,当然还有很多不完美的地方,我系统”为例,完成系统的时序图和协作图的设计与实现。
实验内容:利用Rational Rose工具建立系统重要用例的时序图和协作图。
实验要求:建立“顾客建立图书订单”用例的时序图和协作图;建立“员工处理图书订单”用例的时序图和协作图;建立“管理人员维护图书信息”用例的时序图和协作图。
天津理工大学实验报告
学院(系)名称:计算机与通信工程学院
姓名
晴小天
学号
2013xxxx
专业
计算机科学与技术
班级
2013级2班
实验项目
实验三:系统设计与对象动态交互模型
课程名称
软件工程
课程代码
0668046
实验时间
2015年12月14日8:00-11:00
实验地点
主校区信息安全实验室7-219
批改意见
软件工程实验报告
软件工程实验报告实验报告(Reports)实验一Microsoft Visio 软件的使用实验项目名称:Microsoft Visio 软件的使用实验目的:1) 熟悉Visio的工作环境及组成;2) 掌握用Visio软件绘制图表的基本操作;3) 能熟练运用Visio 软件绘制各种较复杂的专业图表;4) 掌握各种图表文档创建方法。
实验内容:使用Microsoft Visio 2003来设计一个基本流程图模型。
实验步骤:1) 通过打开模板并向图表添加形状来开始创建图表。
2) 在图表中移动形状并调整形状的大小。
3) 向图表添加文本。
4) 连接图表中的形状。
5) 设置图表中形状的格式。
6) 保存图表以示完成,并向演示图表。
1.Visio软件的功能与特点2.Visio软件绘制流程图的主要操作步骤步骤1:步骤2:步骤3:………3. 实验小结实验二软件需求分析实验项目名称:软件需求分析实验目的:1) 根据所选定题目进行需求分析工作;2) 通过实例掌握结构化数据流分析技术;3) 进行业务需求分析、用户需求、功能需求、非功能需求分析;4) 写出需求规格说明书(含数据流图)。
实验内容:用结构化数据流分析技术进行软件系统需求分析,得出系统得数据流图和数据字典。
实验步骤:1) 到相关单位进行需求分析。
2) 综合利用Internet 网和相关书籍整理并完善需求分析。
3) 画出系统数据流图(分清系统是事务型还是加工型)。
4) 得出系统数据字典。
1.软件系统需求描述:(从功能,性能上进行描述)2.软件系统数据流图(由加工、数据流、文件、源点和终点四种元素组成):1) 顶层数据流2) 1层数据流图3) 2层数据流图3.软件系统数据字典:1) 数据流条目2) 加工条目3) 文件条目4. 实验小结实验三软件概要设计实验项目名称:软件概要设计实验目的:1) 建立初始结构图;2) 对初始结构图进行改进、优化;3) 写出概要设计说明书。
软件测试-实验三
计算机与信息工程学院实验报告姓名:学号:专业:软件工程年级: 2017级课程:软件测试主讲教师:辅导教师:实验时间: 2019年4月3、10日上午8时至10时,实验地点 201 实验题目:实验三白盒测试实验目的:针对实验一编写的样本程序,进行白盒测试。
实验环境(硬件和软件)操作系统:Windows;单元测试环境:Eclipse集成开发环境;实验内容:根据实验伙伴提供的程序流程图,进行分析,设计达到以下覆盖要求的测试用例:(1) 条件组合覆盖(2) 基本路径覆盖实验步骤:一、条件组合覆盖设计足够的测试用例,使得判断中每个条件的所有可能组合至少出现一次,并且每个判断本身的判定结果也至少出现一次。
二、基本路径覆盖第一步:画出控制流图第二步:计算圈复杂度第三步:确定基本路径集合第四步:设计测试用例实验数据记录(按照实验指导要求的前三项):三角形判定(1)条件组合覆盖:如图对于M:(a+b)>c,(b+c)>a,(a+c)>b取真取假时分别为T1,F1,T2,T3, F2,F3对于N:a==b, b==c取真取假时分别为T4,F4,T5,F5对于O:a==b,b==c, a==c取真取假时分别为T6,F6,T7,F7,T8,F8 对于P:a*a+b*b==c*c,a*a+c*c==b*b,b*b+c*c==a*a取真取假时分别为T9,F9,T10,F10,T11,F11(2)基本路径覆盖:圈复杂度V(G)=5可确定5条独立的路径P1:1P2:2-3P3:2-4-5P4:2-4-6-7P5:2-4-6-8设计用例问题讨论(作业题):教材第三章思考题4(明确:每个判定的右分支是“真”分支、下分支是“假”分支)4.根据如图3-16所示程序流程图,分别用最少的测试用例完成语句覆盖、判定覆盖、条件覆盖和路径覆盖的测试设计。
编号:语句覆盖判定覆盖条件覆盖:对于测试用例:对于M:X>0取真时为T1,取假时F1Y>10取真时为T2,取假时F2对于N:X<-10取真时为T3,取假时F3Y<0取真时为T4,取假时F4路径覆盖补充:修正的条件/判定覆盖(MC/DC)要求对于多个独立条件构成的判定式:●判定中的每个条件的所有可能结果至少取值一次;●判定中的每个条件曾经独立地对判定的结果产生影响;对于n个条件组成的判定式,需要n+1个测试用例满足MC/DC要求。
软件工程-实验三
/**
*判断是否是三角形。是返回ture;不是返回false
*/
public static boolean isTriangle(Triangletriangle){
boolean isTriangle=false;
// 判断边界,大于0小于或等于Long.MAX_VALUE,出界返回false
if((triangle.lborderA > 0&& triangle.lborderA<= Long.MAX_VALUE/2)
(2)JUnit的特征
A、使用断言方法判断期望值和实际值差异,返回Boolean值。
B、测试驱动设备使用共同的初始化变量或者实例。
C、测试包结构便于组织和集成运行。
D、支持图型交互模式和文本交互模式。
(3)JUnit框架组成
A、对测试目标进行测试的方法与过程集合,可称为测试用例(TestCase)。
(一)相关概念
黑盒测试——把测试对象看作一个封闭的盒子,针对程序的功能来设计测试数据。
白盒测试——把测试对象看作一个打开的盒子,程序内部的逻辑结构和其他信息对测试人员是公开的。
回归测试——软件或环境的修复或更正后的“再测试”,自动测试工具对这类测试尤其有用。
单元测试——是最小粒度的测试,以测试某个功能或代码块。一般由程序员来做,因为它需要知道内部程序设计和编码的细节。
F、JUnit Framework中的出错异常(AssertionFailedError)。
JUnit框架是一个典型的Composite模式:TestSuite可以容纳任何派生自Test的对象;当调用TestSuite对象的run()方法是,会遍历自己容纳的对象,逐个调用它们的run()方法。(可参考《程序员》2003-6期)。
软件工程实验(四个实验)
武汉轻工大学软件工程实验报告院系:数学和计算机学院班级:软件工程1504姓名:赵佳璐学号:1508100065实验一结构化分析实验1实验目的:通过此实验了解结构化分析的特点和步骤,以及结构化分析所采用的基本图形工具。
2.实验内容:假设你在一所职业高中工作,负责该校信息系统的建设和维护。
财务科长请你研究用学校拥有的pc机生成工资明细表和各种财务报表的可能性。
3.实验要求:1.问题定义:请在这个阶段描述你需要解决的问题。
包括用户面临的问题和预期的项目规模。
最后生成一份问题定义报告书。
2.可行性研究:在这个阶段产生处理工资事务的大致过程,画出高层逻辑模型,并且画出相应的数据流图,建立数据字典。
3.对此系统进行成本效益分析。
4.实验步骤:4.1问题定义报告书1.项目名称:工资支付2.问题描述:该校一直由会计人工计算工资并编制财务报表,随着学校规模扩大工作量也越来越大。
目前每个月都需要两名会计紧张工作半个月才能完成,不仅效率低而且成本高。
今后学校规模将进一步扩大,人工计算工资的成本还会进一步提高。
3.项目目标:1)研究开发费用较低的新工资支付系统的可能性。
4项目规模:1)开发成本应该不超过7.2万元5.初步设想:1)用学校自己的计算机系统生成工资明细表和财务报表6.可行性研究:为了更全面地研究工资支付项目的可能性,建议进行大约历时两周的可行性研究。
这个研究的成本不超过4000元。
4.2可行性研究:1.处理工资事务的大致过程:1)每月月末教师把他们当月实际授课时数登记在课时表上,由各系汇总后交给财务科,职工把他们当月完成承包任务的情况登记在任务表上,汇总后交给财务科。
2)两名会计根据这些原始数据计算每名教职工的工资,编制工资表、工资明细表和财务报表。
然后,把记有每名教职工工资总额的工资表报送银行。
3)由银行把钱打到每名教职工的工资存折上,同时把工资明细表发给每名教职工。
2高层逻辑模型:3.数据流图:4.数据字典:1)名字:授课情况登记表别名:描述:记录每个教师的当月完成的课时及任务。
软件工程导论实验报告
软件工程导论实验报告软件工程导论实验报告导论软件工程是一门涉及软件开发、测试和维护的学科,它的目标是提高软件开发的效率和质量。
为了更好地理解软件工程的概念和实践,我们进行了一系列的实验。
本报告将介绍我们在软件工程导论实验中所学到的知识和经验。
实验一:需求分析在软件开发过程中,需求分析是至关重要的一步。
我们的第一个实验是对一个虚拟的在线购物系统进行需求分析。
通过与团队成员的合作,我们学习了如何收集用户需求、分析需求的重要性和优先级,并将其转化为软件功能和特性。
实验二:软件设计软件设计是软件工程的核心环节之一。
在第二个实验中,我们学习了不同的软件设计模式和架构,如MVC(Model-View-Controller)和微服务架构。
通过实际操作,我们掌握了如何将需求转化为软件设计图,并理解了设计决策对软件开发的影响。
实验三:编码与测试编码和测试是软件开发的具体实施阶段。
在第三个实验中,我们使用了常见的编程语言和开发工具,如Java和Eclipse,来实现我们的软件设计。
同时,我们还学习了测试的重要性,并使用JUnit等测试框架进行单元测试和集成测试。
实验四:软件项目管理软件项目管理是确保软件开发项目按时、按质量完成的关键。
在第四个实验中,我们学习了项目管理的基本原理和方法,如项目计划、进度跟踪和风险管理。
通过实践,我们意识到合理的项目管理可以极大地提高团队的工作效率和项目的成功率。
实验五:软件质量保证软件质量保证是确保软件产品符合用户需求和质量标准的重要环节。
在最后一个实验中,我们学习了软件测试的不同方法和技术,如黑盒测试和白盒测试。
我们还了解了软件质量标准和认证,如ISO 9001和CMMI。
总结通过这一系列的实验,我们深入了解了软件工程的各个方面。
我们学会了如何分析用户需求、设计软件系统、实施编码和测试,并掌握了软件项目管理和质量保证的方法。
这些实验不仅提高了我们的理论知识,也培养了我们的团队合作和问题解决能力。
软件工程实践实验三
《软件工程实践》姓名:班级:学号:课题:集成编程环境与编码规范指导教师:目录1.实验目的 (1)2.基本要求 (1)3.实验内容 (1)4.关于Java的介绍 (1)5.关于Ecplise的安装和环境搭建 (2)6.Eclipse的使用 (6)7.Ecplise平台调试技术 (9)7.1调试 Java (9)7.2设置断点: (10)7.3条件断点: (11)7.4对表达式求值: (11)7.5查看变量: (12)7.6远程调试 (12)7.7调试其它语言: (13)8.Java的设计模式简介 (13)实验三集成编程环境与编码规范1.实验目的学习PHP、.Net、JAVA集成编程环境,熟悉各语言的编码规范。
2.基本要求(1)学习PHP语言基础,学习PHP集成编程环境EPP,了解常用插件,掌握Zend debuger PHP断点调试功能;(2)学习.C#语言基础,学习.Net集成编程环境,掌握集成环境中的调试技术;(3)学习JAVA集成编程环境Eclipse,参考《Java编码规范及实践》了解JAVA设计模式。
3.实验内容选择JAVA集成编程环境Eclipse,了解JAVA语言以及Eclipse的安装与使用。
4.关于Java的介绍Java是由Sun Microsystems公司推出的Java面向对象程序设计语言(以下简称Java 语言)和Java平台的总称。
由James Gosling和同事们共同研发,并在1995年正式推出。
Java最初被称为Oak,是1991年为消费类电子产品的嵌入式芯片而设计的。
1995年更名为Java,并重新设计用于开发Internet应用程序。
用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态Web、Internet计算。
从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器均支持Javaapplet。
另一方面,Java技术也不断更新。
软件工程 实验三
软件工程实验三软件工程实验三实验目的本实验旨在通过设计和实现一个简单的软件系统来加深对软件工程原理和方法的理解,并提高编码能力。
实验要求1. 设计一个系统,满足以下需求:- 系统能够实现用户登录和注册功能- 系统能够管理用户的个人信息- 系统能够实现用户之间的消息发送和接收2. 使用合理的软件工程原理和方法来设计和实现系统3. 测试系统的功能,确保系统运行稳定和可靠设计思路系统架构本系统采用三层架构,包括展示层、业务逻辑层和数据访问层。
- 展示层负责用户交互界面的展示和用户输入的接收- 业务逻辑层负责系统的核心业务逻辑的处理- 数据访问层负责与数据库的交互功能设计用户注册和登录功能用户注册功能包括用户输入用户名和密码,并将用户信息保存到数据库中。
用户登录功能需要验证用户输入的用户名和密码是否正确,并根据结果进行相应的处理。
用户个人信息管理功能用户可以查看和修改自己的个人信息,包括用户名、密码、个人简介等。
消息发送和接收功能用户可以发送消息给其他用户,并接收其他用户发送的消息。
系统需要保存用户之间的消息记录,并能够及时地将消息发送给目标用户。
数据库设计本系统需要设计以下数据表:- 用户表(User):存储用户的基本信息,包括用户名和密码等- 个人信息表(Profile):存储用户的个人信息,包括用户名、密码、个人简介等- 消息表(Message):存储用户之间的消息记录,包括发送者、接收者、发送时间和消息内容等实验步骤1. 根据系统设计思路,完成系统的需求分析和概要设计2. 根据概要设计,完成系统的详细设计和数据库设计3. 实现系统的各个功能模块,并进行单元测试4. 整合系统的各个功能模块,进行系统级别的测试和调试5. 完成实验报告,总结实验经验和收获实验结果经过实验,我们成功设计和实现了一个满足要求的软件系统。
该系统具有用户注册和登录功能、用户个人信息管理功能、消息发送和接收功能。
系统经过测试,运行稳定可靠,能够满足用户的需求。
- 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 类课程的属性教师六、实验总结和体会在实验中进一步了解了面向对象建模的步骤,同时对类图的绘制也有了一个比较清晰的认识和了解;不但在实验中能够分析各个类之间的关系,而且能够通过分析写出类的属性,从而绘制出类图;在实验中也掌握了生成报告的方法,简而言之,我在实验中学到了很多。