江苏海洋大学软件工程面向对象分析与设计综合实验题目及报告
软件工程实验报告实验二
软件工程实验报告实验二实实验报告课程名称软件工程实验项目实验二面向对象分析及面向对象设计实验仪器个人电脑系别___计算机科学与技术系____专业_____计算机科学与技术___组长姓名王海阔2010011187小组成员刘大伟_2010011195郑晓驰2010011192实验日期________2013-5-15_______成绩_______________________指导教师_田英爱1实验内容对航空客运订票系统,利用面向对象的软件工程思想和技术,对该系统进行分析。
2实验要求需要利用UML语言描述分析结果,完成系统的需求分析,并书写实验报告。
3实验工具与方法Micriosoftofficevisio2010画图工具Rationalroseenterpriseedition4实验结果系统名称:航空售票系统4.1根据选定系统,做出问题陈述,给出系统的用例图。
问题陈述:该航空客运售票系统能够实现旅客的订票、退票、查询余票、查询已经订票的旅客的信息、查询航班信息,旅客订票时提供的信息包括旅客姓名、身份证号、座位号、电话、航班号、起飞时间等,退票时提供的信息包括旅客姓名、身份证号、航班号、座位号、起飞时间等,查询余票时需要提供航班号以及飞机起飞时间,查询客户的信息需要提供旅客的姓名以及身份证号,查询航班信息需要提供航班号,下面是该系统的用例图注册收费系统收费退票旅客用户信息用户登录查询机票查询航班查询旅客信息查询现金支付POS机POS机支付自动售票机售票员订票注册成功4.2根据系统用例图,分别给出场景描述说明。
旅客买票前先注册,即在航空售票系统中录入自己的信息,注册成功之后,便可订票。
订票可以在柜台通过售票员直接订票,也可以在自动售票机上自己订票,当然都得先注册。
不管通过哪种方式订票都要缴费,收费系统会将旅客的现金或是通过POS机交的费用录入系统。
旅客退票时要先登录,在柜台或是在自动售票机输入自己的姓名等信息,然后系统会在旅客确认之后删除旅客的信息。
软件工程综合实验报告
软件工程综合实验一、实验目的和要求通过本次实验掌握综合运用软件工程原理和技术进行项目开发与管理的知识,加深对所学书本知识的理解。
要求学生实验前认真消化书本精心准备本次实验本次实验的上机时数为 :8学时。
二、实验环境1. 硬件环境 :PC机2. 软件环境 :Windows系统,C 语言系统或Java、C++等其它语言工具三、实验有关知识1. 分析建模2. 设计建模(以下可以不做)3. 编码4. 测试方法5. 项目维护四、实验内容和要求1. 实验内容 (4 学时 )题目自拟,认真分析所选题目,进行软件需求分析、软件总体设计和详细设计,用书面文字形式描述出来,(以下可以不做)并上机实现所设计的软件程序,进行测试、调试和维护。
2. 实验要求要求使用结构化分析技术结合面向对象方法综合分析课题需求,进行分析建模。
运用模块化与结构化设计原理将分析模型转换为设计模型(面向结构)或运用面向对象设计原理(面向对象)进行设计建模,并进行详细设计。
(以下可以不做)设计测试用例对软件系统进行测试、调试和维护。
五、实验步骤1.围绕指定的题目参考现有系统进行需求分析;2.综合利用Internet网和相关书籍整理并完善需求分析;3.写出需求分析与规格说明书;4.设计软件结构或面向对象设计;5.写出软件设计说明书;6.进行软件详细设计;(以下可以不做)7.编码8.设计测试方案,系统测试与调试9 写出实验报告六、实验思考题1. 在软件工程活动中如何进行项目管理和质量控制?2. UML建模有什么优势?(注:1.必须有以下图形表示描述的模型:数据流图、模块结构框图、用例图、时序图、协作图、活动图、状态图、类图、部署图等,并辅助以文字描述。
2.以上为整个软件设计的过程,根据实际情况,编码以后阶段可以不做。
)。
《面向对象的分析与设计》实验指导书(修订稿)
面向对象的分析与设计实验指导书2012年1月修订实验学时安排注:本学期实验地点全部填写为:计算机应用技术实验室,学时按照上表的分配完成。
目录预备微软UML建摸软件熟悉 (1)实验一Use Case 分析与设计(E05203401) (8)实验二顺序图建模(E05203402) (15)实验三类分析与包(E05203403) (21)实验四设计类图与分析(E05203404) (25)实验五构件图和部署图建模(E05203405) (29)实验六状态图与活动图(E05203406) (33)实验七UML与设计模式(E05203407) (38)扩展实验(可选) (42)实验一数据建模 (42)实验二图书管理系统设计 (51)预备微软UML建摸软件熟悉【实验目的】1.熟悉Rational Rose的安装过程;2.熟悉Rational Rose的建模环境。
【实验性质】验证性实验。
【实验要求】实验设备和器材:Pentium II以上微机,Windows2000以上操作系统,Rational Rose2003安装光盘一张。
【实验内容】本次实验要求每个人都安装一遍Rational Rose 2003。
【实验导读】第一块:熟悉Rational Rose2003的安装。
由于Rational Rose的安装比较麻烦,所以通过安装Rational Rose2003,并在安装过程中,发现一些问题,并解决和理解它。
下面就开始介绍Rational Rose2003的安装过程。
打开光盘,双击Rational Rose 的安装图标,然后就会有如图0-1的界面,它是安装的开始界面,让你选择安装的路径。
其默认路径是C:\Program Files\Rational Rose Enterprise Edition for Windows,你可以选择默认路径,也可以更改路径。
图0-1 选择安装目录接下来,按Next键,进入下一个界面,如图0-2所示,就进入了安装的引导界面。
面向对象原则综合实验实验总结
面向对象原则综合实验实验总结哎,说起来,这次的面向对象原则综合实验,简直是个“大挑战”啊!一开始,我对面向对象编程的理解完全停留在“这好像是个挺复杂的东西”的阶段,根本没有意识到它的“奥秘”就在于那些看似简单的规则。
说实话,刚开始的时候,我就像掉进了一个迷宫,左转右转都找不到出口,心里那个慌乱真的是不言而喻。
但是,经过这次实验之后,我真的是有点恍若大梦初醒的感觉,觉得以前的自己可能真的是“井底之蛙”。
嘿,虽然过程中有点磕磕绊绊,但总算是过来了,自己还是学到了一些真东西。
你知道吗?最让我感触深的就是“封装”这块儿。
说实话,一开始,我总是觉得封装好像就是“把东西藏起来”,有点“躲猫猫”的意思。
但是,做了实验之后,我才真正明白,封装其实就是要把数据和操作数据的代码捆绑在一起,形成一个独立的模块。
听起来是不是有点复杂?其实不然,举个例子吧,就像我们买的手机,外表看起来光鲜亮丽,可是里面的电路板、处理器啥的,都是一堆复杂的东西。
你拿到手里,就能用,什么内部的运作你根本不需要管,它给你提供的只是一个简单而清晰的接口。
这种封装的方式,其实让我们开发代码的时候能更加专注于自己的模块,而不需要去管其他模块的细节,简直就像是隔离了复杂度,让我们能“清心寡欲”地做事。
然后再来说说“继承”吧。
继承,呃,说白了就是“拿来主义”,有点像我们从父母那里遗传了某些优点或者缺点一样。
通过继承,我们可以把已经实现的功能拿来用,而不需要重新发明轮子,这不就太省事了吗?想象一下,如果每次我们都得从头开始写一个新的类,那得累死,效率不说低,程序员的脾气估计也得越来越差。
所以啊,继承就像是给我们提供了一条“捷径”,我们只需要在现有的基础上做改进或者扩展,就能很快搭建起新的功能模块。
这个过程看似简单,实际上大大提升了开发效率。
嘿,说不定你就能像超级英雄一样,轻松地用“遗传”能力打怪升级,毫不费力。
不过呢,光有封装和继承还不够,接下来就得说说“多态”了。
面向对象系统分析和设计综合实验报告4
面向对象系统分析和设计综合实验报告4综合实验报告:面向对象系统分析和设计一、引言面向对象系统分析和设计(Object-Oriented System Analysis and Design,简称OOSAD)是软件工程中的重要环节,它涉及到软件系统的需求分析、设计和建模等过程。
本实验旨在通过一个综合案例,加深对面向对象系统分析和设计的理解,并能够熟练运用相关的建模工具和方法。
二、实验背景本次实验的案例为一个在线购物系统,该系统允许用户浏览商品、添加到购物车、下定单并完成支付等功能。
通过对该系统进行分析和设计,可以掌握面向对象的建模技巧,包括用例图、类图、时序图等。
三、系统需求分析1. 功能需求根据用户的需求,我们确定了以下功能需求:- 用户注册和登录:用户可以通过注册账号并登录系统。
- 浏览商品:用户可以查看系统中的商品列表,包括商品的名称、价格、库存等信息。
- 添加到购物车:用户可以将感兴趣的商品添加到购物车中,以便后续下单。
- 下定单:用户可以选择购物车中的商品,并生成定单。
- 支付定单:用户可以选择支付方式,完成定单的支付。
2. 非功能需求除了功能需求外,我们还需要考虑以下非功能需求:- 性能要求:系统需要能够处理大量的用户请求,并保证响应时间在合理范围内。
- 安全要求:用户的个人信息和支付信息需要进行加密和保护,确保不被恶意攻击者获取。
- 可靠性要求:系统需要具备一定的容错能力,能够在浮现故障时自动恢复,并保证数据的完整性。
四、系统设计1. 用例图根据需求分析,我们可以绘制出以下用例图,用于描述系统的功能和用户之间的交互关系。
(用例图示例)2. 类图在进行系统设计时,我们需要确定系统中的各个类及其之间的关系。
以下是一个简化的类图示例:(类图示例)在类图中,我们可以看到系统中的各个类以及它们之间的关系,如商品类、用户类、购物车类、定单类等。
通过类图,我们可以清晰地看到系统的结构和模块之间的依赖关系。
009.实验九.面向对象分析与设计实验报告.参考答案(2021年整理精品文档)
(完整版)009.实验九.面向对象分析与设计实验报告.参考答案编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整版)009.实验九.面向对象分析与设计实验报告.参考答案)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整版)009.实验九.面向对象分析与设计实验报告.参考答案的全部内容。
软件工程导论试验九、面向对象分析与设计实验报告请不要更改实验报告文件名,仅在后面加上学号和姓名,例如:002。
实验二.软件可行性分析实验报告_0123456789_张三。
docx1)软件为什么一定要建模?什么是UML?在软件工程领域,UML能够被广泛接受的原因是什么?2)用例之间有哪几种关系?用例叙述应该包括哪些基本内容?3)宾馆客房业务管理提供客房预订、预订变更、客房入住、退房结帐、旅客信息查询几个方面的功能。
订房人可以通过电话、短信、网络或面对面等方式预订客房。
允许预订人根据自己情况的变化更改预订信息。
旅客入住客房前需要出示证件并登记,并要预交一定的押金。
旅客提交押金后,柜台工作人员将在电脑上登记旅客信息,分配房间,并打印旅客入住单,旅客持入住单到指定客房入住。
旅客离开宾馆前需要退房结账。
旅客或宾馆管理人员可以随时查询旅客或客房的入住信息。
a)建立该问题的用例模型,并写出用例描述。
b)分析这个问题,提取涉及的类,并画出类图.。
面向对象编程综合实训报告模板
面向对象编程综合实训报告模板一、实训目的本次实训的主要目的是通过实际项目应用,使我们深入理解和掌握面向对象编程(OOP)的核心概念、原理和编程技术。
具体包括:1. 理解并掌握OOP的基本思想,包括封装、继承和多态等;2. 熟悉并掌握至少一种OOP语言(如Java、C++、Python等)的语法和特性;3. 学习和运用OOP在软件开发中的应用,如设计模式、软件架构等;4. 通过团队协作,提高我们的项目管理和团队协作能力。
二、实训内容1. 实训题目我们选择的实训题目是“[项目名称]”。
这是一个基于[技术栈/语言]的[项目类型],主要功能是[简要描述项目功能]。
2. 需求分析我们详细分析了项目的需求,包括功能需求、性能需求、用户界面需求等。
在功能需求方面,我们确定了系统需要实现的主要功能和辅助功能;在性能需求方面,我们设定了系统的响应时间、并发用户数等关键性能指标;在用户界面需求方面,我们设计了友好、易用的用户界面。
3. 系统设计根据需求分析结果,我们设计了系统的总体架构、数据库结构、类图、时序图等。
在总体架构设计上,我们采用了[架构名称]架构,将系统分为表示层、业务逻辑层和数据访问层;在数据库设计上,我们设计了合理的数据库表结构和索引;在类图设计上,我们详细设计了系统的类、属性、方法等;在时序图设计上,我们描述了系统主要功能的执行流程。
4. 编码实现我们按照系统设计,使用[编程语言]实现了项目的所有功能。
在编码过程中,我们遵循了良好的编程规范,保证了代码的可读性和可维护性。
同时,我们也注重代码的性能优化,确保系统能够满足性能需求。
5. 测试与调试我们对项目进行了全面的测试,包括单元测试、集成测试和系统测试。
在单元测试阶段,我们对每个模块进行了详细的测试,确保每个模块的功能都正确实现;在集成测试阶段,我们将各个模块集成在一起进行测试,确保模块之间的接口正确无误;在系统测试阶段,我们对整个系统进行了全面的测试,确保系统能够满足所有的需求。
实验报告面向对象分析设计
实验报告面向对象分析设计1. 引言面向对象分析与设计(Object-Oriented Analysis and Design,简称OOAD)是一种软件开发方法论,它以对象为中心,将软件系统看作是一组互相协作的对象集合。
本实验旨在通过一个具体的案例,通过分析和设计实践,掌握面向对象分析与设计的基本原则和方法。
2. 实验目的通过本实验,我们将学习和掌握以下内容:- 了解面向对象分析与设计的概念和基本原则- 学习使用UML(Unified Modeling Language)进行面向对象分析和设计- 掌握面向对象分析与设计的基本流程和方法- 熟悉常用的面向对象分析与设计工具和技术3. 实验内容及步骤3.1 实验环境本实验使用以下工具和环境:- UML工具:如Visual Paradigm、StarUML等- 编辑器:如Visual Studio Code、Eclipse等- 编程语言:Java、C++等3.2 实验步骤本实验主要分为以下几个步骤:1. 了解案例需求:首先,我们需要明确一个具体的案例,如图书馆管理系统、学生选课系统等。
本实验以图书馆管理系统为例。
2. 创建用例图:使用UML工具,根据需求,创建图书馆管理系统的用例图。
用例图描述系统的功能需求,包括用户角色、用户的需求和系统的功能。
3. 创建类图:基于用例图和需求分析,使用UML工具创建类图。
类图描述系统的静态结构,包括类和类之间的关系。
4. 创建时序图:基于用例图和类图,使用UML工具创建时序图。
时序图描述系统的动态行为,展示对象之间的交互关系和顺序。
5. 完善设计:基于用例图、类图和时序图,进一步完善系统设计。
包括类的属性和方法的设计、系统的架构设计等。
4. 实验结果与分析通过本实验,我们完成了图书馆管理系统的面向对象分析与设计。
通过用例图、类图和时序图的创建,我们清晰地描述了系统的功能需求、静态结构和动态行为。
通过系统设计的完善,我们定义了系统的架构和各个类的属性和方法。
软件工程—面向对象程序设计_实习报告
面向对象程序设计基础训练一实验目的●使学生掌握类与对象机制;●使学生掌握继承与派生机制;●使学生掌握静态绑定与动态绑定的多态机制;●使学生掌握面向对象程序分析与设计方法;二实验环境●所需硬件环境为微机;●所需软件环境为Microsoft Visual C++ 6.0或Code::Blocks ;三实验内容(一)、设计日期时间类CDateTime,并完成测试CDate.h#ifndef CDate_H#define CDate_Hclass CDate{public:CDate(int yearv=0,int monthv=0,int dayv=0);void set1(int yearv);void set2(int monthv);void set3(int dayv);int get1();int get2();int get3();void show();protected:int year,month,day;friend ostream & operator<< (ostream &output,const CDate &s);friend istream & operator>> (istream &input,CDate &s);};#include "CDate.cpp"#endifCDate.cpp#include "CDate.h"CDate::CDate(int yearv,int monthv,int dayv) {year=yearv;month=monthv;day=dayv;}void CDate::set1(int yearv){year=yearv;}void CDate::set2(int monthv){month=monthv;}void CDate::set3(int dayv){day=dayv;}int CDate::get1(){return year;}int CDate::get2(){return month;}int CDate::get3(){return day;}void CDate::show(){cout<<year<<"."<<month<<"."<<day<<endl;}ostream & operator<< (ostream &output,const CDate &s) {return output;}istream & operator>> (istream &input,CDate &s){return input;}CTime.h#ifndef CTime_H#define CTime_Hclass CTime{public:CTime(int hourv=0,int minutev=0,int secondv=0);void set1(int hourv);void set2(int minutev);void set3(int secondv);int get1();int get2();int get3();void show();protected:int hour,minute,second;friend ostream & operator<< (ostream &output,const CTime &s);friend istream & operator>> (istream &input,CTime &s);};#include "CTime.cpp"#endifCTime.cpp#include "CTime.h"#include"CDateTime.h"CTime::CTime(int hourv,int minutev,int secondv){hour=hourv;minute=minutev;second=secondv;}void CTime::set1(int hourv){hour=hourv;}void CTime::set2(int minutev){minute=minutev;}void CTime::set3(int secondv){second=secondv;}int CTime::get1(){return hour;}int CTime::get2(){return minute;}int CTime::get3(){return second;}void CTime::show(){cout<<hour<<":"<<minute<<":"<<second<<endl;}ostream & operator<< (ostream &output,const CTime &s) {return output;}istream & operator>> (istream &input,CTime &s){return input;}CDateTime.h#ifndef CDateTime_H#define CDateTime_H#include "CDate.h"#include "CTime.h"class CDateTime{friend ostream & operator<< (ostream &output,const CDateTime &s);friend istream & operator>> (istream &input,CDateTime &s);public:CDateTime(int yearv=0,int monthv=0,int dayv=0,int hourv=0,int minutev=0,int secondv=0);void show();CDate a;CTime b;CDateTime operator +(CDateTime &c);CDateTime operator +(CDate &d);CDateTime operator +(CTime &e);friend CDateTime & operator+(CTime &,CTime &);friend CDateTime & operator+(CTime &,CDate &);friend CDateTime & operator+(CTime &,CDateTime &);friend CDateTime & operator+(CDate &,CTime &);friend CDateTime & operator+(CDate &,CDate &);friend CDateTime & operator+(CDate &,CDateTime &);friend CDateTime f(CDateTime &e);};#include "CDateTime.cpp"#endifCDateTime.cpp#include "CDateTime.h"#include "CDate.h"#include "CTime.h"CDateTime::CDateTime(int yearv,int monthv,int dayv,int hourv,int minutev,intsecondv):a(yearv,monthv,dayv),b(hourv,minutev,secondv) {a.set1(yearv);a.set2(monthv);a.set3(dayv);b.set1(hourv);b.set2(minutev);b.set3(secondv);}void CDateTime::show(){cout<<"日期:"<<'\t';a.show();cout<<"时间:"<<'\t';b.show();}CDateTime CDateTime::operator +(CDateTime &c) {CDateTime t;t.a.set1(a.get1()+c.a.get1());t.a.set2(a.get2()+c.a.get2());t.a.set3(a.get3()+c.a.get3());t.b.set1(b.get1()+c.b.get1());t.b.set2(b.get2()+c.b.get2());t.b.set3(b.get3()+c.b.get3());return t;}CDateTime CDateTime::operator +(CDate &d){CDateTime t;t.a.set1(a.get1()+d.get1());t.a.set2(a.get2()+d.get2());t.a.set3(a.get3()+d.get3());return t;}CDateTime CDateTime::operator +(CTime &e) {CDateTime t;t.b.set1(b.get1()+e.get1());t.b.set2(b.get2()+e.get2());t.b.set3(b.get3()+e.get3());return t;}CDateTime & operator +(CTime &c,CTime &d) {CDateTime t;t.b.set1(d.get1()+c.get1());t.b.set2(d.get2()+c.get2());t.b.set3(d.get3()+c.get3());return t;}CDateTime & operator +(CTime &c,CDateTime &d) {CDateTime t;t.a.set1(d.a.get1());t.a.set2(d.a.get2());t.a.set3(d.a.get3());t.b.set1(d.b.get1()+c.get1());t.b.set2(d.b.get2()+c.get2());t.b.set3(d.b.get3()+c.get3());return t;}CDateTime & operator+(CTime &c,CDate &d) {CDateTime t;t.a.set1(d.get1());t.a.set2(d.get2());t.a.set3(d.get3());t.b.set1(c.get1());t.b.set2(c.get2());t.b.set3(c.get3());return t;}CDateTime & operator+(CDate &c,CTime &d) {CDateTime t;t.a.set1(c.get1());t.a.set2(c.get2());t.a.set3(c.get3());t.b.set1(d.get1());t.b.set2(d.get2());t.b.set3(d.get3());return t;}CDateTime & operator+(CDate &c,CDateTime &d) {CDateTime t;t.a.set1(c.get1()+d.a.get1());t.a.set2(c.get2()+d.a.get2());t.a.set3(c.get3()+d.a.get3());t.b.set1(d.b.get1());t.b.set2(d.b.get2());t.b.set3(d.b.get3());return t;}CDateTime & operator+(CDate &c,CDate &d) {CDateTime t;t.a.set1(c.get1()+d.get1());t.a.set2(c.get2()+d.get2());t.a.set3(c.get3()+d.get3());return t;}CDateTime f(CDateTime &e){int t=0;if(e.b.get3()>=60){t=(e.b.get3())/60;e.b.set2(e.b.get2()+t);e.b.set3((e.b.get3())%60);}if(e.b.get2()>=60){t=(e.b.get2())/60;e.b.set1(e.b.get1()+t);e.b.set2((e.b.get2())%60);}if(e.b.get1()>=24){t=(e.b.get1())/24;e.a.set3(e.a.get1()+t);e.b.set1(e.b.get1()%24);}int a[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int b[12]={31,29,31,30,31,30,31,31,30,31,30,31};e.a.set1(e.a.get2()/12+e.a.get1());e.a.set2(e.a.get2()%12);if(e.a.get2()/400==0){for(int i=0;i<12;i++){if(i+1==e.a.get2()){t=e.a.get3()/a[i];e.a.set3(e.a.get3()%a[i]);}}e.a.set2(e.a.get2()+t);if(e.a.get2()>=12){e.a.set1(e.a.get1()+1);e.a.set2(e.a.get2()%12);}}else{for(int i=0;i<12;i++){if(i+1==e.a.get2()){t=e.a.get3()/b[i];e.a.set3(e.a.get3()%b[i]);}}e.a.set2(e.a.get2()+t);if(e.a.get2()>=12){e.a.set1(e.a.get1()+1);e.a.set2(e.a.get2()%12);}}}ostream & operator<< (ostream &output,const CDateTime &s){return output;}istream & operator>> (istream &input,CDateTime &s){return input;}Text_CDateTime.cpp#include<iostream.h>#include "CDateTime.h"int main(){CDateTime c1(1,2,3,12,56,31),c2(1,4,7,3,9,12),c3,c6,c9,c31,c32,c13,c23;c3=c1+c2;f(c3);CDate c4(2012,3,4),c5(2934,12,25);c6=c4+c5;f(c6);CTime c7(23,24,21),c8(2,43,53);c9=c7+c8;f(c9);c31=c1+c4;c32=c1+c7;c13=c5+c2;c23=c8+c2;f(c31);f(c32);f(c13);f(c23);c3.show();c6.show();c9.show();c31.show();c32.show();c13.show();c23.show();return 0;}(二)、设计字符串类CString,并完成测试;CString.h#ifndef CString_H#define CString_Hclass CString{public:CString(char *a="");CString(CString &w);~CString();void set(char *g="");char * get();int leng();char search(char *c="");char de(char *d="");char ti(char *e="",char *f="");void show();CString operator +(CString &c);CString operator =(CString &d);protected:char *b;#include "CString.cpp"#endifCString.cpp#include<iostream.h>#include "CString.h" CString::CString(char *a) {int i=0;while(a[i]!='\0'){i++;}b=new char[i+1];for(;i>=0;i--){b[i]=a[i];}}CString::CString(CString &w) {int i=leng();b=new char[i+1];for(;i>=0;i--){b[i]=w.b[i];}}void CString::set(char *g)int i=0;while(g[i]!='\0'){i++;}b=new char[i+1];for(i=0;g[i]!='\0';i++){b[i]=g[i];}cout<<b;}char * CString::get(){return b;}CString::~CString(){cout<<"析构函数被调用";if(b!=NULL){delete []b;}}int CString::leng(){int i=0;while(b[i]!='\0'){i++;}return i;}char CString::search(char *c){int t=0,m=0,n;while(c[t]!='\0'){t++;}n=leng();for(int j=0;b[j]!='\0';j++){if((c[0]==b[j])&&((n-j)>=t)){for(int i=1;c[i]!='\0';i++){if(c[i]==b[j+i]){cout<<"存在,且首字母位置:"<<j+1<<endl;m++;}}}}if(m==0){cout<<"此字符串不存在"<<endl;}char CString::de(char *d){int i,j,t=0,n,m=0;while(d[t]!='\0'){t++;}n=leng();for(j=0;b[j]!='\0';j++){if((d[0]==b[j])&&((n-j)>=t)){for(int i=1;d[i]!='\0';i++){if(d[i]==b[j+i]){m++;}if(m==t-1){cout<<"删除字符串:"<<endl;m=j;break;}}}}for(;b[m+t]!='\0';m++)b[m]=b[m+t];}for(j=0;j<n;j++){if(j>=n-t){b[j]=' ';}}}char CString::ti(char *e,char *f){int t=0,n,m=0;while(e[t]!='\0'){t++;}n=leng();for(int j=0;b[j]!='\0';j++){if((e[0]==b[j])&&((n-j)>=t)){for(int i=1;e[i]!='\0';i++){if(e[i]==b[j+i]){m++;}if(m==t-1){cout<<"替换字符串:"<<endl;m=j;break;}}}}for(int i=0;i<t;i++){b[m+i]=f[i];}}void CString::show(){cout<<b<<endl;}CString CString::operator +(CString &c){cout<<c.b<<endl;cout<<b;CString t;int i=0,m=0,l;m=strlen(c.b)+strlen(b);t.b=new char[m+1];for(i=0;i<strlen(b);i++){t.b[i]=b[i];}for(l=0;l<strlen(c.b);l++){t.b[l+i]=c.b[l];}t.b[l+i]='\0';return t;}CString CString::operator =(CString &d){CString t;int n,m;n=leng();t.b=new char[n+1];for(int i=0;i<n;i++){t.b[i]=d.b[i];}return t;}Text_CString.cpp#include<iostream.h>#include "CString.h"int main(){CString c1("sadasdkqfswe"),c2("dwqk"),c3("weio"),c4;cout<<"字符串长度:"<<c1.leng()<<endl;c1.search("qf");c1.show();c1.de("da");c1.show();c1.ti("sd","rt");c1.show();c1+c2;(c1+c2).show();c2=c3;c2.show();return 0;}(三)、设计人员及其派生类,并完成测试;CPeople.h#ifndef CPeople_H#define CPeople_Hclass CPeople{protected:char *name,*sex;int age;public:CPeople(char *a="",char *b="",int c=0);~CPeople();void show();};#include "CPeople.cpp"#endifCPeople.cpp#include "CPeople.h"#include<iostream.h>#include <string.h>CPeople::CPeople(char *a,char *b,int c){name =new char[strlen(a)+1];strcpy(name,a);sex =new char[strlen(b)+1];strcpy(sex,b);age=c;}CPeople::~CPeople(){if(name!=NULL){delete []name;}if(sex!=NULL){delete []sex;}}void CPeople::show(){cout<<"name:"<<name<<'\t'<<"sex:"<<sex<<'\t'<<"age:"<<age<<endl; }CStudent.h#ifndef CStudent_H#define CStudent_H#include "CPeople.h"class CStudent:public CPeople{public:CStudent(char *a="",char *b="",int c=0,char *t="",int numv=0,int sv=0);~CStudent();void show();protected:int num,score;char *time;};#include "CStudent.cpp"#endifCStudent.cpp#include<iostream.h>#include "CStudent.h"CStudent::CStudent(char *a,char *b,int c,char *t,int numv,int sv):CPeople(a,b,c) {time=new char[strlen(t)+1];strcpy(time,t);num=numv;score=sv;}CStudent::~CStudent(){if(time!='\0'){delete []time;}}void CStudent::show(){CPeople::show();cout<<"学号:"<<num<<'\t'<<"入学时间:"<<time<<'\t'<<"成绩:"<<score<<endl; }CTeacher.h#ifndef CTeacher_H#define CTeacher_H#include "CPeople.h"class CTeacher:public CPeople{public:CTeacher(char *a="",char *b="",int c=0,char *wuv="",char *men="",int ti=0);~CTeacher();void show();protected:char *wu,*bumen;int Ti;};#include "CTeacher.cpp"#endifCTeacher.cpp#include "CTeacher.h"#include<iostream.h>CTeacher::CTeacher(char *a,char *b,int c,char *wuv,char *men,int ti):CPeople(a,b,c){wu=new char[strlen(wuv)+1];strcpy(wu,wuv);bumen=new char[strlen(men)+1];strcpy(bumen,men);Ti=ti;}CTeacher::~CTeacher(){if(wu!=NULL){delete []wu;}if(bumen!=NULL){delete []bumen;}}void CTeacher::show(){CPeople::show();cout<<"职务:"<<wu<<'\t'<<"部门:"<<bumen<<'\t'<<"工作时间:"<<Ti<<endl; }CGraduate.h#ifndef CGraduate_H#define CGraduate_H#include "CStudent.h"class CGraduate:public CStudent{public:CGraduate(char *a="",char *b="",int c=0,char *t="",int numv=0,int sv=0,char *f="",char *s="");~CGraduate();void show();protected:char *fa,*shi;};#include "CGraduate.cpp"#endifCGraduate.cpp#include<iostream.h>#include "CGraduate.h"#include "CStudent.h"#include "CPeople.h"CGraduate::CGraduate(char *a,char *b,int c,char *t,int numv,int sv,char *f,char *s):CStudent(a,b,c,t,numv,sv){fa=new char[strlen(f)+1];strcpy(fa,f);shi=new char[strlen(s)+1];strcpy(shi,s);}CGraduate::~CGraduate(){if(fa!=NULL){delete []fa;}if(shi!=NULL){delete []shi;}}void CGraduate::show(){CStudent::show();cout<<"发展方向:"<<fa<<'\t'<<"导师:"<<shi<<endl;}CGradOnWork.h#ifndef CGradOnWork_H#define CGradOnWork_H#include "CTeacher.h"#include "CGraduate.h"class CGradOnWork:public CTeacher,public CGraduate{public:CGradOnWork(char *a="laingliang",char *b="168441651 ",int c=0,char *wuv="6541616",char *men="6546",int ti=0,char *t="01",int numv=0,int sv=0,char *f="jyjy",char *s="hjlyui");~CGradOnWork(){}void show();};#include "CGradOnWork.cpp"#endifCGradOnWork.cpp#include "CGradOnWork.h"#include<iostream.h>#include "CTeacher.h"#include "CGraduate.h"CGradOnWork::CGradOnWork(char *a,char *b,int c,char *wuv,char *men,int ti,char *t,int numv,int sv,char *f,char *s):CTeacher(a,b,c,wuv,men,ti),CGraduate(a,b,c,t,numv,sv,f,s){}void CGradOnWork::show(){CTeacher::show();CGraduate::show();}Text.cpp#include<iostream.h>#include "CTeacher.h"#include "CGraduate.h"#include "CStudent.h"#include "CPeople.h"#include "CGradOnWork.h"int main(){char a[]="first",b[]="second",c[]="third",d[]="25",e[]="fourth",f[]="sixth";CPeople c1(a,b,1);c1.show();CStudent c2(a,b,1,d,3,4);c2.show();CTeacher c3(a,b,1,c,e,5);c3.show();CGraduate c4(a,b,1,d,3,4,e,f);c4.show();CGradOnWork c5(a,b,1,c,e,5,d,3,4,e,f);c5.show();return 0;}(四)、设计并实现计算不同职称的教师工资Teacher.h#ifndef Teacher_H#define Teacher_Hclass Teacher{public:virtual int salary()=0;virtual void print()=0;};#endifJS.h#ifndef JS_H#define JS_H#include "Teacher.h"class JS:public Teacher{public:JS(int a1=0,int a2=0,int m=0,char *c="");int salary();void show();void print();protected:int b1,b2,n;char *d;};#include "JS.cpp"#endifJS.cpp#include<iostream.h>JS::JS(int a1,int a2,int m,char *c){d=new char[strlen(c)+1];strcpy(d,c);b1=a1;b2=a2;n=m;}int JS::salary(){return (b1+b2*n);}void JS::print(){cout<<"姓名:"<<d<<'\t'<<"课时"<<n<<endl; }FJS.h#ifndef FJS_H#define FJS_H#include "Teacher.h"class FJS:public Teacher{public:FJS(int a1=0,int a2=0,int m=0,char *c="");int salary();void show();void print();protected:int b1,b2,n;char *d;};#include "FJS.cpp"#endifFJS.cpp#include<iostream.h>FJS::FJS(int a1,int a2,int m,char *c){d=new char[strlen(c)+1];strcpy(d,c);b1=a1;b2=a2;n=m;}int FJS::salary()return (b1+b2*n);}void FJS::print(){cout<<"姓名:"<<d<<'\t'<<"课时"<<n<<endl; }Text.cpp#include<iostream.h>#include "JS.h"#include "FJS.h"void print(Teacher *p){p->print();}void salary(Teacher *p){cout<<"salary:"<<p->salary()<<endl;}int main(){JS c1(5000,50,5,"first");print(&c1);salary(&c1);FJS c2(3000,30,5,"second");print(&c2);salary(&c2);JS c3(2000,20,5,"third");print(&c3);salary(&c3);return 0;}(五)、参照教学相关内容设计实现单向链表模板类,要求提供结点插入、结点删除、结点查找和链表输出等功能,利用(一)日期时间类CDateTime 和int 类型分别设计实例测试。
面向对象分析与设计大作业题目
《面向对象分析与设计》大作业题目一.目的面向对象分析与设计课程其目的在于促进学生复习和巩固计算机软件设计知识,加深对软件设计方法、软件设计技术和设计思想的理解,并能运用所学软件设计知识和面向对象技术进行综合软件设计,提高学生的综合应用能力。
通过这次综合题目,要掌握UML(统一建模语言),并能运用UML在Viso中建模。
二.要求:1.3-5人一组。
2.熟悉Viso UML建模环境。
3.掌握UML的基本模型元素(如角色、用例、类等)。
4.熟悉UML,主要了解UML中的9大图:Use case diagram(用例图)、Class diagram(类图)、Sequence diagram(序列图)、Collaboration diagram(协作图)、Statechart diagram(状态图)、Activity diagram(活动图)、Component diagram(组件图)、Deployment diagram(配置图)、datamodel diagram(数据模型图)。
5.进行系统需求分析与系统功能模块设计,绘出系统详细的业务流程图和数据流程图,建立完整的系统数据库的逻辑模型。
6.完成对系统的建模实现。
7.进行检查,并提交设计报告。
三.报告要求:1.实验题目2.实验目的3.实验要求4.实验内容5.系统设计的源程序和文档(包括说明)6.心得体会四.参考资料:1.Wendy Boggs & Michael Boggs 著邱仲潘译《UML与RationalRose2002从入门到精通》电子工业出版社2.Martin Fowler & Kendall Scott:UML Distilled Second Edition ABrief Guide to the Standard Object Modeling Language3.UML参考手册4.Jason T. Roff 著张瑜杨继萍等译《UML基础教程》清华大学出版社五.设计内容可自选题目,但须经过指导教师审查。
[面向对象系统分析和设计综合实验报告范文4]面向对象程序设计实验报告范文
[面向对象系统分析和设计综合实验报告范文4]面向对象程序设计实验报告范文实验名称:实验4设计模型实验2学期:2022-2022学年第二学期一、实验目的1.熟练使用面向对象设计原则对系统进行重构;2.熟练使用面向对象编程语言(JAVA或C++)实现几种常见的设计模式,包括单例模式、策略模式、装饰模式和适配器模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式。
二、实验要求1.选择合适的面向对象设计原则对系统进行重构,正确无误地绘制重构之后的类图;2.结合实例,正确无误地绘制单例模式、策略模式、装饰模式和适配器模式的结构图;3.实现单例模式、策略模式、装饰模式和适配器模式,代码运行正确无误。
三、实验内容1.现实生活中,居民身份证号码具有唯一性,同一个人不允许有多个身份证号码,第一次申请身份证时将号码分配给居民,如果之后因为遗失等原因补办时,还是使用原来的身份证号码,不会产生新号码,现使用单例模式模拟该场景。
类图实现代码:publicclaIdClient{publictaticvoidmain(String[]arg){IdentityCardNo.getIntance();IdentityCardNo.getIntance();}}packageRefactoring1;publicclaIdentityCardNo{ privatetaticIdentityCardNointance;privateStringno;privateIdentityCardNo(){}publictaticIdentityCardNogetIntance(){if(intance==null){Sytem.out.println("第一次办理身份证,分配新号码"); intance=newIdentityCardNo();intance.etNo("No6000654321");Sytem.out.println("身份证号码为:"+intance.getNo()); }ele{Sytem.out.println("重复办理身份证,获取旧号码!");}returnintance;}publicStringgetNo(){returnno;}publicvoidetNo(Stringno){thi.no=no;}}2.每一麻将局都有两个骰子,因此骰子就应当是双例类。
软件工程实验报告
软件工程实验报告软件工程实验报告班级学号姓名指导老师目录实验一结构化需求分析 ..................................................................... . (1)实验二结构化软件设计...................................................................... .. (4)实验三面向对象的软件分析 (7)实验四软件编码与测试...................................................................... .. (11)目录实验一结构化需求分析一(实验目的(1)掌握数据流的分析技术(2)掌握软件需求分析的过程和方法。
(3)熟悉项目开发计划和需求规格说明书的制定方法。
二(实验题目目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还会延误抢救时机。
某医院打算开发一个以计算机为中心的患者监护系统。
医院对患者监护系统的基本要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等),定时记录病人情况以形成患者日志。
当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息,此外,护士在需要时还可以要求系统打印出某个指定病人的病情报告。
三(实验内容和要求(1)用结构化数据流分析技术进行软件系统需求分析,得出系统的数据流图和数据字典。
(2)正确运用图表工具进行表示。
四(需求规格说明书1患者监护系统需求规格说明书1.项目背景:开发软件名称:患者监护系统。
用户:某医院。
项目与其他软件,系统的关系:本项目采用客户机/服务器原理,客户端的程序是建立在Windows NT 系统上以Microsoft Visual C#为开发软件的应用程序,服务器端采用Linux 为操作系统的工作站,是采用MySQL 5的为开发软件的数据库服务程序。
面向对象分析与设计UML实验报告
(此文档为word格式,下载后您可任意编辑修改!)《面向对象分析与设计UML》实验报告实验及作业一一、实验目的了解软件工程等基础知识,为后续的统一建模语言UML知识的学习做好准备工作。
二、实验设备与环境装有Visio、RationalRose的计算机。
三、实验内容1、复习阐述“软件工程开发模型”的相关概念,并分析各种模型的优缺点,写成实验报告。
2、熟悉UML软件设计工具Visio、Rational Rose的安装及环境四、实验过程及结果经过上网搜索相关信息进行了解软件工程开发模型的相关概念与优缺点一,什么是软件工程概念模型模型就是抽象,就是有意识地忽略事物的某些特征。
抽象带来的好处是能够反映模型中元素之间的关系,清晰把握大局。
概念模型是模型的一种,简单说就是抽象程度极高的一种模型。
软件工程概念模型是对软件工程领域进行抽象描述的模型,它能够使我们对软件工程有一个完整把握。
二,软件工程开发模型的种类以及优缺点瀑布模型由W.Royce于1970年首先提出。
根据软件工程生存周期各个阶段的任务,瀑布模型从可行性研究开始,逐步进行阶段性变换,直至通过确认测试并得到用户确认的软件产品为止。
瀑布模型上一阶段的变换结果是下一阶段变换的输入,相邻两个阶段具有因果关系,紧密联系。
一个阶段的失误将蔓延到以后的各个阶段。
为了保障软件开发的正确性,每一阶段任务完成后,都必须对它的阶段性产品进行评审,确认之后再转入下一阶段的工作。
评审过程发现错误和疏漏后,应该及时反馈到前面的有关阶段修正错误或弥补疏漏,然后再重复前面的工作,直至某一阶段通过评审后再进入下一阶段。
瀑布模型如图1.1所示。
瀑布模型有许多优点,如可强迫开发人员采用规范的方法;严格规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证等。
但瀑布模型也存在缺点,其主要表现在:①在软件开发的初始阶段指明软件系统的全部需求是困难的,有时甚至是不现实的。
面向对象分析实验报告
实验二面向对象分析10计科1班游汉 E10620129一、实验目的1.掌握类图的画法;2.掌握顺序图的画法;3.熟悉状态图的画法。
实验过程中形成的图形、文档,下课整理后上交二、实验内容1、基于教材P277页图13-63,在Visio中画出规范的UML类图。
基于教材P274页图13-57和图13-58,在Visio中画出UML通信图和顺序图(Visio 称序列图)。
UML类图UML通信图顺序图3:打印抵押列表:发送成功完成消息2、有以下需求陈述:某银行拟开发一个自动取款机系统,它是一个由自动取款机、中央计算机、分行计算机及营业终端组成的网络系统。
ATM和中央计算机由总行投资购买。
总行拥有多台ATM,分别设在全市各主要街道上。
分行负责提供分行计算机和营业终端。
营业终端设在分行下属的各个储蓄所内。
银行营业员使用营业终端处理储户提交的储蓄事务。
储户可以用现金或支票向自己拥有的某个账户内存款或开新账户,储户也可以从自己的账户中取款。
通常,一个储户可能拥有多个账户。
营业员负责把储户提交的存款或取款事务输进营业终端,接收储户交来的现金或支票,或者付给储户现金。
营业终端与相应的分行计算机通信,分行计算机具体处理针对某个账户的事务并且维护账户。
拥有银行账户的储户有权申请领取现金兑换卡。
使用兑换卡可以通过ATM访问自己的账户。
目前,仅限于用现金兑换卡在ATM上提取现金(即取款),或查询有关自己账户的信息(例如,某个指定账户上的余额)。
将来可能还要求使用ATM办理转账、存款等事务。
所谓现金兑换卡,就是一张特制的磁卡,上面有分行代码和卡号。
分行代码惟一标识总行下属的一个分行,卡号确定了这张卡可以访问哪些账户。
通常,一张卡可以访问储户的若干个账户,但是不一定能访问这个储户的全部账户。
每张现金兑换卡仅属于一个储户所有,但是,同一张卡可能有多个副本,因此,必须考虑同时在若干台ATM上使用同样的现金兑换卡的可能性。
也就是说,系统应该能够处理并发的访问。
面向对象建模实验报告
实验项目:软件工程—面向对象建模姓名: 学号:实验地点:实验时间:1 实验目的与要求:通过实验,使学生理解需求分析的重要性,掌握面向对象的分析技术(OOA)。
要求学生根据分析结果,使用类图建立系统的对象模型,并建立用例模型描述系统功能。
2 实验工具和环境Word / Visio / PowerDesigner3 实验内容和步骤问题的描述:在医院ICU病房里,将病症监视器安置在每个病床,对病人进行监护。
监视器将病人的组合病症信号实时地传送到中央监护系统进行分析处理。
在中心值班室里,值班护士使用中央监护系统对病人的情况进行监控,监护系统实时地将病人的病症信号与标准的病诊信号进行比较分析,当病症出现异常时,系统会立即自动报警,并打印病情报告和更新病历。
根据医生的要求随时打印病人的病情报告,系统还定期自动更新病历。
(1)通过名词识别和系统实体识别等方法分析确定系统的十二个类,补充并标识类的名称、属性和操作。
(2)分析类之间的关系,使用类图建立系统对象模型。
(3)分析上述目标系统,通过下列问题识别并确定系统执行者(角色)。
●谁使用系统主要功能?答:值班护士、医生、病人●谁需要系统的支持以完成日常工作任务?答:值班护士、医生●系统需要应付(或处理)哪些硬件设备?答:监护器、报警系统、网络、打印机●系统需要和哪些外部系统交互?答:标准的病症信号库、病历库●谁(或什么)对系统运行产生的结果感兴趣?答:值班护士、医生根据上述分析,最终确定与系统直接相关的执行者为:值班护士、医生、病人、标准病症信号库(4)回答下列问题,并识别用例。
●与系统实现有关的主要问题是什么?●系统需要哪些输入/输出?这些输入/输出从何而来?到哪儿去?答:输入:病症信号、标准病症信号输出:报警信号(中央监护系统)、病情报告(医生要求或者病症信号异常时病情报告管理自动打印)●执行者需要系统提供哪些功能?答:医生和值班护士:查看病情报告和病历并且进行打印●执行者是否需要对系统中的信息进行读、创建、修改、删除或者存储?答:需要因此,得到的系统用例有:.中央监护、病症监护、提供标准信号、病历管理、病情报告管理(5)确定用例之间的关系(<<include>>、<<extend>>),画出该系统的高层用例图。
软件开发实习报告:面向对象分析与设计的实践与总结
软件开发实习报告:面向对象分析与设计的实践与总结一、引言在我参加软件开发实习的过程中,我主要负责了面向对象分析与设计的工作。
通过实践与总结,我认识到面向对象分析与设计对于软件开发的重要性,并且对面向对象的原理和方法有了更深入的理解。
本报告将围绕面向对象分析与设计的实践经验和总结展开。
二、实践过程1. 需求分析在实践过程中,需求分析是首先需要进行的阶段。
通过与客户的沟通,我了解到客户的需求,并在此基础上进行了需求分析和规划。
我学会了运用UML图来清晰地展示需求,如用例图、活动图等,这对于后续的设计工作起到了指导作用。
2. 面向对象分析在需求分析的基础上,我进行了面向对象的分析工作。
通过识别出系统中的各种对象以及它们之间的关系,我可以更好地理解系统的结构和行为。
我学会了用类图来描述对象的属性和方法,以及它们之间的关系,这使得我能够更好地理解系统的结构和行为。
3. 面向对象设计在面向对象分析的基础上,我进行了面向对象的设计工作。
通过对类图的完善和细化,我可以进一步详细地设计对象的属性和方法。
我学会了用时序图来描述对象之间的交互,以及状态图来描述对象的状态变化。
这对于确保系统的正确性和可靠性至关重要。
4. 实践总结在实践过程中,我遇到了一些问题和挑战。
首先,我发现在面向对象分析与设计中,需求的不明确性是一个常见的问题。
为了解决这个问题,我学会了与客户保持良好的沟通,并时刻关注需求的变化。
其次,我发现在面向对象分析与设计中,设计的复杂性是一个常见的问题。
为了解决这个问题,我学会了运用设计模式和设计原则来降低复杂性。
5. 实践经验通过实践经验,我总结出以下几点:(1)良好的需求分析是面向对象分析与设计的基础。
需求分析不仅仅是了解客户的需求,还包括对需求进行详细的分析和规划。
(2)面向对象分析与设计需要运用多种UML图来描述系统的结构和行为。
熟练使用UML图可以使得系统的设计更加清晰和可理解。
(3)设计的复杂性是需要解决的问题,在面向对象分析与设计中,设计模式和设计原则是降低复杂性的重要手段。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
江苏海洋大学计算机科学系实验报告书
课程名:《软件工程》
题目:面向对象分析与设计综合实验
班级:Z计算机172
学号:2019140367
姓名:孙奥迪
面向对象分析与设计综合实验报告要求
1目的与要求:
1)系统学习和理解面向对象软件工程分析与设计阶段的基本任务、过程以及基本概念、原理、技术和方法;
2)掌握OOA阶段的建模方法和建模工具,如对象模型、动态模型、功能模型及其绘制工具;
3)通过试验要逐步提高运用软件工程基本理论、技术和方法解决实际问题的能力;
4)请借阅有关Microsoft Office Visio 系统或Power Design系统,预习相关UML的建模工具及其使用方法;
5)按照实验题目要求独立完成实验内容,如发现拷贝、抄袭者严肃处理;
6)认真书写实验报告,并按时提交(时间:16周周5前;电子报告全体同学提交,纸质文档提交10份)。
2 实验内容或题目
1.根据自己的兴趣或关注热点,结合实际应用选择一小题目,如教材上的例题和习题:零件
订购系统,银行储蓄系统,铁路民航订票系统,医院患者病情诊断和监控系统,图书管理
系统,学籍管理系统,多媒体播放系统等。
然后进行所选定题目进行面向对象分析和设计,尽量在第五次实验分析建模结果的基础上完成本次综合实验。
2.OOA要求:用类图建立系统的对象模型;用状态图建立系统的动态模型;用用例图建立
系统的功能模型(要配置必要的脚本说明)。
3.OOD要求,根据OOA阶段建立的模型进行系统设计,并给出系统的设计模型,重点以问
题域子系统,人机交互子系统,数据管理子系统进行面向对象设计,并给出设计结果。
3 实验步骤与源程序
1.
2.
4 测试数据与实验结果(可以抓图粘贴)
1)用类图建立系统的对象模型
①关联描述:
②继承描述:
③依赖描述:
2)用状态图建立系统的动态模型管理员管理书籍信息:事件跟踪、状态图时间追踪图:
书籍管理系统:对书籍中的信息进行管理(增删改查)状态图:
3)读者借还书事件追踪图、状态图
状态图:
4)功能模型
5 结果分析与实验体会
对象模型,描述系统的静态数据结构;动态模型,描述系统的交互次序和行为过程;功能模型,描述数据变换结果。
建立对象模型的过程:确定类与对象,确定关联;划分主题;确定属性;识别继承;反复修改。
动态模型是基于事件共享而互相关联的一组对象状态图的集合。
功能模型由一组数据流图组成,描述系统中数据的流动和处理功能。