面向对象的分析与设计大作业文档

合集下载

面向对象分析与设计开发文档

面向对象分析与设计开发文档

目录第一部分面向对象基础 (3)1.面向对象编程的三大原则 (3)2.对象世界协作模式----客户-提供者消息协作模式 (3)3.类与类之间的关系及代码实现 (6)4.面向对象程序设计的任务 (13)5.面向对象系统分析与设计的过程与产出 (26)第二部分需求分析 (26)第三部分系统分析 (26)1.系统需求说明 (27)2.用例图: (28)3.业务处理过程: (29)4.活动图: (29)(1)按客户陈述绘制活动图 (29)(2)对活动图进行分块 (30)5.基本用例叙述: (35)6.系统时序图: (36)7.系统操作约定: (37)8.创建域模型: (38)9.一个颠覆常规的域模型案例 (40)10.对象消息序列图: (40)第四部分系统设计方案1:控制台应用程序+无数据库 (40)1.系统总体结构设计 (40)(1)业务层设计----设计系统总体类图: (40)2.详细设计: (44)(1)业务层定义 (44)<1>类声明: (44)<2>确定类图: (49)<3>Jackson图 (49)<4>算法流程图 (49)3.编码 (50)4.测试 (50)第五部分系统设计方案2:控制台应用程序+数据库系统 (50)1.业务层设计 (50)(1)每个数据访问对象直接与数据库打交道 (50)(2)增加一个单例对象DBOperation (52)(3)使用Hibernate框架 (52)2.数据层设计 (54)(1)E-R图: (54)(2)关系模式设计 (56)(3)物理模型设计 (56)第六部分系统总体设计方案3:人机交互界面+业务处理+DBMS (57)1.人机交互界面----表示层设计 (58)(1)状态图: (58)<1>状态图的概念 (58)<2>订餐系统的状态图: (60)<3>菜谱状态图: (60)<4>顾客订单的状态图: (61)<5>订单的状态图 (62)(2)表示层设计: (62)(3)表示层的实现: (64)<1>基于窗体的表示层 (64)<2>基于web页面的表示层 (64)2.数据层设计 (64)3.业务层设计 (64)(1)单机模型: (64)(2)分布式模型 (65)<1>C/S模型 (65)<2>B/S模型 (65)<3>基于Web的三层系统体系结构 (65)4.系统整体架构 (66)(1)0人机交互界面+业务处理+DBMS具体实施方案: (66)第七部分系统架构与框架技术 (66)(1)系统体系结构 (66)(2)技术框架Framework (66)(3)系统体系结构的发展进程 (67)<1>单机版 (67)<2>基于C/S架构的系统体系结构 (67)<3>基于Web的系统体系结构 (67)<4>基于Web的三层系统体系结构 (67)<5>基于Web的四层系统体系结构 (70)第八部分详细设计 (71)1.表示层详细设计: (71)2.业务层详细设计: (71)3.数据层详细设计: (71)第九部分设计原则 (71)1.拙劣设计的症状 (71)(1)症状 (71)(2)案例 (72)(3)原因分析 (72)(4)问题解决 (72)2.设计原则 (72)(1)单一职责原则 (72)(2)开放-封闭原则 (72)(3)Liskov替换原则 (72)(4)依赖倒置原则 (72)(5)接口分离原则 (72)第十部分设计模式 (73)1. 设计模式分类 (73)(1) 创建型 (73)<1> 简单工厂设计模式 (73)<2> 工厂方法模式 (77)(3)MFC 之工厂模式(C++ & java) (84)<3> 抽象工厂模式 (85)第十一部分 系统测试 (87)1. 测试阶段划分................................................................................................ 87 2. 测试技术........................................................................................................ 87 3. 测试优先的益处.. (87)这是面向对象的世界,客户向服务器提出请求是为服务器分配职责的唯一标准。

面向对象分析与设计实验报告

面向对象分析与设计实验报告

面向对象分析与设计实验报告题目:宿舍管理系统学号: 200***********姓名: ******班级: 09软件*****04完成时间:目录参考文献 ................................................................ 错误!未定义书签。

1.系统的功能需求我校学生公寓现为手工管理,效率低、易出错、手续繁琐,而且耗费大量的人力,物力,财力。

故设计一个学生公寓管理系统,管理学生住宿情况,员工情况,处理学生离校,管理人员来访情况等功能。

通过此系统,后勤人员可以对学生公寓的各项情况实行电脑化管理,以提高工作效率,也使得公寓管理所需的各项信息能方便快速进行录入,查询,删除和更新。

面对学生公寓管理工作的特点以及该管理工作的具体问题, 本系统可以解决以下问题: (1)录入公寓各学生的基本情况。

(2)全面查询学生的基本情况。

(3)对学生离校进行处理。

(4)每学期对学生住宿进行注册。

(5)对来访人员进行出入管理。

(6)对学生的财务进行登记管理。

(7)对楼栋物资和楼栋的管理。

(8)对各项情况进行修改,删除,更新。

(9)友好的操作界面, 以及简单快速的操作.(10)多种查询方式。

本系统针对学生公寓管理日常的工作程式, 对学生公寓的各项情况例如:学生信息,学生个人财产信息,来访人员信息等进行有效管理,并能通过各方法进行快速方便的查询。

使学生公寓管理工作运作简明、清晰,各状况一目了然,使学生公寓管理工作更加科学化、规范化。

管理系统模块:实现用户退出功能。

查询学生模块:该模块包括五个子模块1.按学号查询——实现按学号查询学生信息2.按姓名查询——实现按姓名查询学生信息3.按学生班级查询——实现按学生班级查询学生信息4.按家庭住址查询——实现按家庭住址查询学生信息5.混合查询——实现按混合查询学生信息6.图1 查询模块的主要业务流程图学生管理模块:包括四个子模块1.基本情况录入——录入入住学生的基本信息2.学生离校处理——处理离校学生的情况3.按学期注册——对学生每学期的公寓交费情况进行注册4.个人财物处理——登记学生个人财产图2 学生管理模块的主要业务流程图资料修改模块:包括;两个子模块1. 学生修改——完成学生基本资料修改,个人财物修改和学期注册情况修改2. 登记修改——实现来访登记修改和货物出楼修改图3 资料修改模块的主要业务流程图楼栋管理模块:对于楼栋的宿舍楼号,楼层,房间,家具,楼长,保洁员,楼栋管理员。

(完整word版)面向对象分析与设计试题及其答案

(完整word版)面向对象分析与设计试题及其答案

面向对象分析与设计试题B卷一、单项选择题( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。

每小题2 分,共20 分)1.到20世纪末,面向对象软件工程已经逐渐发展成熟,特别是()的形成和广泛使用,采用面向对象分析与编程的软件开发方法已成为软件开发的主流方法。

A. Simula67语言B. Smalltalk语言C. Java语言D. 统一建模语言(UML)的标准2. 面向对象的运动产生了多种面向对象的语言, 其中()是一种混合性面向对象语言, 既支持面向过程的程序设计方法,又支持面向对象的程序设计方法,有广泛应用的基础和丰富开发环境的支持,因而使面向对象的程序设计能得到很快普及。

A. SmalltalkB. EiffelC. C++D. Java3.下列不属于面向对象技术的基本特征的是()。

A. 封装性B. 模块性C. 多态性D. 继承性4. 面向对象程序设计将描述事物的数据与( ) 封装在一起,作为一个相互依存、不可分割的整体来处理。

A. 信息B. 数据隐藏C. 对数据的操作D. 数据抽象5. 关于面向对象方法的优点,下列不正确的叙述是()。

A. 与人类习惯的思维方法比较一致B. 可重用性好C. 以数据操作为中心D.可维护性好6. ()是从用户使用系统的角度描述系统功能的图形表达方法。

A. 类图B. 对象图C. 序列图D. 用例图7. ( ) 是表达系统类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作图和其他图的基础。

A.对象图 B. 组件图 C. 类图 D. 配置图8.()描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之间传递消息的时间顺序。

A.对象图 B. 协作图 C. 状态图 D. 序列图9.()就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系统中软件和硬件的物理架构。

A. 组件图B. 协作图C. 状态图D. 配置图10. 使用UML进行关系数据库的()时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。

[计算机]《面向对象的系统分析与设计》课程项目大作业任务要求、评分标准

[计算机]《面向对象的系统分析与设计》课程项目大作业任务要求、评分标准

《面向对象的系统分析与设计》课程项目大作业任务要求一、目的为了能够让学生掌握企业应用系统项目开发中所涉及的各种规范和技术,以提高学生毕业后的就业竞争力,在课程设计的教学环节中希望能够达到如下的教学目标。

1、注重软件工程的思想和原则、体系架构等方面知识的具体应用。

2、体验软件开发过程中的各个环节、任务和目标,并把握软件设计模式的思想和具体在实际项目开发中的应用、增强团队协作和交流的意识。

3、牢记“多层架构和松耦合”的设计原则和改原则在实际项目开发中的具体应用及实现,获得实际的企业级项目开发的体验和锻炼,增强软件开发过程中各个阶段所需要的各种形式的标准化文档和编码规范化方面的意识。

4、增强对课堂中所学习过的各种技术和知识合理地综合应用的能力,软件开发流程的完整体验。

二、任务及要求1、软件项目厦门理工学院社团组织管理系统2、项目分组和人员角色分工原则(1)项目组中的各个角色成员构成和分配的基本原则同一班级中不同的学生在学习的能力、技术的熟练程度和项目开发方面的接触深度都是有差别的,为了能够让不同层次的学生在课程设计中都能够有所收获,课程设计的知道教师应该合理地进行项目分组和项目组内各个角色成员的合理分配。

这也就要求指导教师对每个学生的技术水平和能力都应该了解,才有可能达到“各尽所能、各负其责和各有收获”和“合适的学生干合适的事情”的培养效果。

当然,指导教师可以提前通过测试或则摸底了解每个学生的个性和技术能力。

建议项目组内各个角色成员构建和分配的基本原则如下:各尽所能、各有收获。

不同层次和不同技术能力的学生都能够获得锻炼、提升。

●互相帮助、共同进步。

课程设计的教学目标应该是提升学生的整体技能。

●相互交流、团结协作。

增强团队合作、协作开发的意识。

(2)每个项目组的人员角色分配1)项目组长人员角色(1人)2)技术总监人员角色(1人)3)项目功能实现的编码人员角色(3人)4)界面开发及集成测试人员(1人)3、项目开发各阶段的任务为了保证课程设计在有限的时间内能够让学生按时、按量和按质地完成,指导教师需要仔细思考、深入了解学生的个性和技术水平,并按照软件开发的基本过程布置项目开发各个阶段的任务。

面向对象程序设计大作业(C++)

面向对象程序设计大作业(C++)

面向对象分析/设计课程大作业银行业务处理系统13级软件学院测试班1367004029曾丹1.需求分析随着社会经济的发展,信息化程度的不断深入,银行的传统业务己愈来愈不能满足银行客户的需要。

现今,人们的金融意识、科技意识己经有了很大的提高,在紧张忙碌的生活中,己越来越来不习惯每月奔忙于各银行营业柜台之问去排队缴各种各样的费用了;同时,各种经营单位如电信、移动、供电、煤气、自来水、证券等等一是为了提高服务质量、方便客户,二是为了减轻自己日趋繁重的工作量,纷纷委托银行为其开展代收代付业务:同时,随着我国加入世贸组织的日益临近,我国的银行业将面临更加激烈的同业竞争,如何提供更多的金融产品和更优质的服务,如何吸引更多的客户,如何利用计算机技术加强银行帐户信息管理、进行银行业务再造,提高银行的工作效率和业务竟争能力是摆在各家银行面前的一个迫切需要解诀的问题。

近几年来,各商业银行加快了与社会各业的合作,利用自身的网点优势和业务特点,为其提供各种高效、快捷的代收代付业务,也就是中间代理业务,目前以与广大人民群众生活密切相关的各项缴费业务如水电费、电话费、手机费等代收业务为主,这些业务开展方式多种多样,但一般都离不开计算机的高效管理支持。

随着代理业务不断发展,业务品种越来越多,各项业务做法互有差异,这就对银行的电子化水平和相应的管理水平提出了更高的要求。

如何利用电子化的手段构建一个高效统一的、通用灵活的系统来管理各种各样的业务,是每个商业银行所要研究的课题。

支持决策系统的,需要在数据库的基础上,进行联机分析处理,每次处理的数据量大,响应时间长。

特别是银行每天要处理大量的存取款事件,做好存取款是银行工作重要的环节,然而要有效处理必须要有良好的程序和数据管理系统来建立一个良好的软件系统来实现快速、有效、准确、安全的处理银行事物。

主要用于银行的储蓄卡管理系统,它可以帮助我们有效、准确、并且高效实现的完成存取事件。

此系统操作方便效率、安全性高,只要客户开户并设定好密码就可以轻松的实现存取款。

(更新10.17)作业2 面向对象设计与分析

(更新10.17)作业2  面向对象设计与分析

作业2 面向对象设计与分析(更新2012.10.17)一、实验目的1、掌握类的概念、类的定义格式、类的成员属性和类的封装性;2、掌握类对象的定义;3、理解类的成员的访问控制的含义,公有、私有和保护成员的区别;4、掌握构造函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。

能够根据给定的要求定义类并实现类的成员函数。

5、掌握数组Array、ArrayList和List泛型类、HashTable类等6、了解Web系统三层结构设计及使用二、实验内容1、定义一个表示学生信息的类student,要求如下:(1)类student的成员变量(根据实际数据的情况,自定类型):sNO表示学号,sName 表示姓名,sSex表示性别,sAge表示年龄,sAspnet语言课程的成绩。

(2)类student的方法成员:getNO()获得学号,getName()获得姓名,getSex()获得性别,getAge()获得年龄,getAspnet()获得Aspnet课程成绩。

(3) 按照上题中学生类student的定义,创建两个该类的对象,存储并输出两个学生的信息,计算并输出这两个学生Aspnet课程成绩的平均成绩。

2、目前市场上流通的图书,一般都具有书名、ISBN号、作者、出版社、出版日期、单价等要素。

在开发简单图书管理系统的时候,有若干问题需要处理,问题如下:(1)定义一个Book类,该类具有书名、ISBN编号、作者、出版社、出版时间、单价成员属性,对于每个属性提供相应的get和set方法。

(2)在Book类中,通过构造方法的重载灵活实现成员变量的初始化。

要求:a、无参的构造方法;b、只有书名一个参数的构造方法;c、有书名、出版社两个参数的构造方法;d、有书名、出版社、ISBN号三个参数的构造方法;e、有书名、出版社、ISBN号、作者、单价五个参数的构造方法。

(3)定义一个方法GetMoney,求得购买数量的总金额。

面向对象分析与设计开发参考文档

目录第一部分需求分析 (2)第二部分系统分析 (2)1.系统需求说明 (3)2.用例图: (3)3.业务处理过程: (4)4.活动图: (5)(1)按客户陈述绘制活动图 (5)(2)对活动图进行分块 (6)5.基本用例叙述: (9)6.系统时序图: (10)7.系统操作约定: (11)8.创建域模型: (12)9.对象消息序列图: (14)第三部分系统设计 (15)1.系统设计相关概念: (15)(1)系统体系结构 (15)(2)技术框架Framework (15)(3)系统体系结构的发展进程 (15)<1>单机版 (15)<2>基于C/S架构的系统体系结构 (15)<3>基于Web的系统体系结构 (16)<4>基于Web的三层系统体系结构 (16)<5>基于Web的四层系统体系结构 (19)2.系统总体设计第一种方案:控制台应用程序+无数据库。

(20)(1)人机交互界面----表示层设计 (20)<1>状态图: (20)<2>表示层设计: (22)<3>表示层详细设计: (23)(2)系统总体类图设计----业务层设计: (23)(1)业务层详细设计: (26)<1>类定义 (26)<2>Jackson图 (29)<3>算法流程图 (29)(3)数据层设计 (29)<1>E-R图: (29)<2>关系模式设计 (30)<3>物理模型设计 (30)<4>数据层详细设计: (31)3.详细设计 (31)4.系统总体设计第二种方案:控制台应用程序+DAO+sqlserve (32)5.系统总体设计第三种方案:JSP+servlet+javabean+sqlserve (32)6.系统总体设计第四种方案:SSH+数据库。

(32)第四部分设计模式 (33)1.面向对象设计原则 (33)2.设计模式分类 (33)(1)创建型 (33)<1>简单工厂设计模式 (33)<2>工厂方法模式 (37)(3)MFC之工厂模式(C++ & java) (44)<3>抽象工厂模式 (45)第五部分系统测试 (47)这是面向对象的世界,客户向服务器提出请求是为服务器分配职责的唯一标准。

面向对象分析与设计第四章作业

1.论述类与对象之间的关系以及关联与链之间的关系。

这四者之间的联系。

答:一.类与对象之间的关系:a.类提供了对具有相同属性和操作的一组对象的抽象描述,对象是类的实例。

b.在面向对象方法中,通过对具有相同的属性的对象的抽象,构造出类,而使用类构造出系统模型。

在系统运行时,又有类去创建出对象。

C.一个类的所有对象具有相同属性。

二.关联与链之间的关系:a. 链是对象间的关系,关联时类之间的关系,也就是说,链是关联的实例化。

B.两个存在的有关联关系的类被实例化后,类之间的关联关系就实例化成链。

三.四者之间的关系:链是对象间的关系,关联是类之间的关系。

对象是类的实例化,链是关联的实例化。

类类对象对象实例化实例关联链2.在什么情况下使用组合关系进行建模?答:当一部分类的对象在一个时刻至多属于一个整体类的对象,且整体类的对象管理他的部分类的对象时,用组合关系进行建模。

3.总结继承关系的用途答:a.一般类的定义中存在没有实现也不打算在该类中实现的操作,需要子类进行继承实现该操作。

B.有超过两个特殊类时,使用继承关系进行简化。

从而不必重复的进行定义。

C.继承关系有助于软件复用。

5.举例说明类继承结构中的重载与多态。

答说明:图1:股东类和职员类继承了公司人员类,个人收入可以定义一个虚函数,没有实现操作,下边的股份和工资为具体操作,这个就是类继承中的多态。

图2:重载,长方形公司人员姓名个人收入股东 职员 股份 。

工资************面积长方形 圆形 长:a 宽:b半径 R求面积的函数f1(int a,int b),圆形求面积函数f1(int R)。

6.面包是由面包片组成的。

面包与面包片之间的关系是聚合还是组合。

答:组合,生命期相同。

面包不存在,面包片也不会存在。

面包片是面包的一部分。

只能属于一个面包所有。

7.一本书含有若干章,一章有若干节,一节有一些片段和图组成,一个段落由一些句子组成。

请给出一个描述上述事物以及它们之间关系的类图。

面向对象程序设计大作业报告模板

面向对象程序设计大作业------计算器类学院名称信息科学与工程学院专业班级学生姓名 ***** 学号指导教师完成时间: 2012年06月25日计算器类1.编程目的1.1、巩固并加深学生对C++语言程序设计知识的理解;1.2、培养学生面向对象的程序设计思想,使学生认识面向过程和面向对象两种设计方法的区别;1.3、进一步掌握和应用VC++ 6.0集成开发环境;1.4、提高运用C++语言解决实际问题的能力;1.5、初步掌握开发小型实用软件的基本方法,能独立设计、实现基本的MIS系统;1.6、掌握书写程序设计开发文档的能力(书写课程设计实验报告)。

2.系统简介2.1系统目标我们在学习生活中,常会遇到一些繁杂的数值运算,这时候我们就必须用到科学计算器,所以便着手开发了这个计算器程序,以便用于自己的学习工作。

要计算功能有以下几个方面:加法,减法,乘法,除法,求Sin,求Cos。

2.2主体功能1、十进制数的加、减、乘、除、乘方等简单计算。

2、科学计算函数,包括正弦、余弦、正切、余切、指数等函数运算。

3、进制间的相互转换函数。

2.3开发环境W indows操作系统,VC++ 6.0, OFFICE WORD3.编程思路3.1我们建立一个calculator类,再通过向这个类中添加各种函数,逐渐完善计算器的各种功能。

3.2对calculator类中的各个函数进行定义,使之能进行所需的运算。

3.3最后通过主函数完成运算。

4.总体设计(附类图)图3-1 系统流程图5.源代码#include<iostream>#include<cmath>#include<string>using namespace std;const double pi = 3.14159265;const double e = 2.718281828459;const int SIZE = 1000;typedef struct node{char data;node *next;}node;typedef struct stack_num//存储数的栈{double *top;double *base;}stack_num;typedef struct stack_char//存储运算符号的栈{char *top;char *base;}stack_char;stack_num S_num;stack_char S_char;char fu[18] = {'\n', ')', '+', '-', '*', '/', '%', '^','Q', 'L', 'C', 'S', 'T', 'c', 's', 't', '('};int compare[1000];double shu[1000];double dai_result;int biao = 0;char line[SIZE];void init()//初始化{compare[fu[0]] = -2;//用数字的大小表现出符号的优先级compare[fu[1]] = -1;compare[fu[2]] = 2;compare[fu[3]] = 2;compare[fu[4]] = 4;compare[fu[5]] = 4;compare[fu[6]] = 4;compare[fu[7]] = 5;for(int i = 8; i <= 15; i++)compare[fu[i]] = 6;compare[fu[16]] = 7;S_num.base = (double*)malloc(sizeof(double)*SIZE);//为栈开辟空间S_char.base = (char*)malloc(sizeof(char)*SIZE);//同上S_num.top = S_num.base;S_char.top = S_char.base;}void push_num(double n)//数字进栈{* ++S_num.top = n;}void push_char(char c)//运算符号进栈{* ++S_char.top = c;}double pop_num()//数字出栈{double m = *S_num.top;S_num.top--;return m;}char pop_char()//运算符号出栈{char cc = *S_char.top;S_char.top--;return cc;}char get_top_char()//得到运算符号的栈中最顶端的运算符号{return *S_char.top;}double operate(double y, char c, double x){double r;if(c == '-')r = x - y;else if(c == '+')r = x + y;else if(c == '/' && y != 0)r = x / y;else if(c == '*')r = x * y;else if(c == '^'){r = 1;for(int i = 1; i <= y; i++)r *= x;}else if(c == '%'){int r0 = (int)x % (int)y;r = double(r0);}return r;}double operate_one(double one, char cc){double r;if(cc == 'Q')r = sqrt(one);else if(cc == 'C')r = cos(one);else if(cc == 'S')r = sin(one);else if(cc == 'T')r = tan(one);else if(cc == 'c')r = acos(one);else if(cc == 's')r = asin(one);else if(cc == 't')r = atan(one);return r;}double operate_L(double a, double b, char dian)//求对数的值{double r = log(b) / log(a);return r;}double compute()//对整个表达式的计算{char c;//表示运算符号int p = 0;//用于shu[++p], 先初始化int i, j;init();//进行初始化push_char('\n');line[strlen(line)] = '\n';line[strlen(line)+1] = '\0';if(biao)push_num(dai_result);biao = 0;for(i = 0; line[i] != '\0';){int flag = 0;int flag1 = 1;//标记是否是运算符号int flag2 = 1;//标记是否出现'_';double h = 0;int ge;//位数int biao_dian = 0;//是否是小数的类型while(1){flag1 = 1;for(j = 0; j <= 16; j++){if(line[i] == fu[j]){flag1 = 0;break;}}if(line[i] == '_'){break;}if(line[i] == '.'){i++;ge = 0;biao_dian = 1;}if(line[i] == 'P'){shu[++p] = pi;i++;break;}if(line[i] == 'E'){shu[++p] = e;i++;break;}if(flag1){h = h * 10 + (line[i] - '0');flag = 1;i++;if(biao_dian)ge++;}elsebreak;}if(flag){if(biao_dian){int r = 1;for(int k = 1; k <= ge; k++)r *= 10;h /= r;}shu[++p] = h;//把转化而来的数字存于数组}if(line[i] == '+')shu[++p] = -1;else if(line[i] == '-')shu[++p] = -2;else if(line[i] == '*')shu[++p] = -3;else if(line[i] == '/')shu[++p] = -4;else if(line[i] == '%')shu[++p] = -5;else if(line[i] == '^')shu[++p] = -6;else if(line[i] == 'Q')shu[++p] = -7;else if(line[i] == 'L')shu[++p] = -8;else if(line[i] == 'C')shu[++p] = -9;else if(line[i] == 'S')shu[++p] = -10;else if(line[i] == 'T')shu[++p] = -11;else if(line[i] == 'c')shu[++p] = -12;else if(line[i] == 's')shu[++p] = -13;else if(line[i] == 't')shu[++p] = -14;else if(line[i] == '(')shu[++p] = -15;else if(line[i] == ')')shu[++p] = -16;else if(line[i] == '\n')shu[++p] = -17;i++;}i = 1;while(shu[i] != -17 || get_top_char() != '\n'){double m = shu[i];if(m >= 0){push_num(m);i++;}else{if(m == -1)c = '+';else if(m == -2)c = '-';else if(m == -3)c = '*';else if(m == -4)c = '/';else if(m == -5)c = '%';else if(m == -6)c = '^';else if(m == -7)c = 'Q';else if(m == -8)c = 'L';else if(m == -9)c = 'C';else if(m == -10)c = 'S';else if(m == -11)c = 'T';else if(m == -12)c = 'c';else if(m == -13)c = 's';else if(m == -14)c = 't';else if(m == -15)c = '(';else if(m == -16)c = ')';else if(m == -17)c = '\n';char ch = get_top_char();//得到最顶端运算符号if(compare[ch] < compare[c])//运算符号级别的比较{push_char(c);i++;}else if(ch == '(' && c == ')'){pop_char();i++;}else if(compare[ch] >= compare[c] && ch != '(' && ch != '\n'){if(ch == 'Q' || ch == 'C' || ch == 'S'|| ch == 'T'|| ch == 'c' || ch == 's' || ch == 't'){double one = pop_num();char dian = pop_char();push_num(operate_one(one, dian));}else if(ch == 'L'){double one_L = pop_num();double two_L = pop_num();char dian = pop_char();push_num(operate_L(two_L, one_L, dian));}else{double x = pop_num();double y = pop_num();char dian = pop_char();if(dian == '/' && x == 0)//判断是否除了"零"{cout<<"由于您除了零,结果将是错误的"<<endl;}push_num(operate(x, dian, y));//把进行一次计算的结果入栈}}else{push_char(c);i++;}}}double result = pop_num();//得到结果return result;}int check_kuohao()//检查表达式括号是否匹配{int i, f = 0;int kuo[SIZE], key = 1;memset(kuo, 0, sizeof(kuo));for(i = 0; line[i] != '\0'; i++){if(line[i] == '(')kuo[++f] = 1;else if(line[i] == ')'){if(kuo[f] == 1){kuo[f] = 0;f--;}else{key = 0;break;}}}if(key && f == 0)return 1;elsereturn 0;}int check_char()//检查运算符号是否合法(如: 1 +* 4) {int i, ge;for(i = 0; line[i] != '\0'; ){ge = 0;while(line[i] == '+' || line[i] == '-' || line[i] == '*'|| line[i] == '/' || line[i] == '%' || line[i] == '^'|| line[i] == 'Q' || line[i] == 'L' || line[i] == 'S'|| line[i] == 'C' || line[i] == 'T' || line[i] == 's'|| line[i] == 'c' || line[i] == 't'){ge++;i++;}i++;}if(ge >= 3)return 0;elsereturn 1;}void output(double result)//打出结果{printf("所得结果是: ");cout<<result<<endl;}void check()//检查表达式是否合法{void introduce();char cc;//决定计算器按哪种功能进行计算double result;//结果void input();//定义if( check_kuohao() && check_char() )//看是否合法, 合法则计算{result = compute();output(result);cout<<"输入一个字符'M'或'D'或'F', 决定是否继续: "<<endl;while(cin>>cc){if(cc == 'M'){system("cls");introduce();printf("您上次所得结果为: ");cout<<result<<endl;cout<<"在上次计算结果的基础上, 请继续输入想计算的表达式"<<endl;dai_result = result;biao = 1;input();//输入表达式break;}else if(cc == 'D'){system("cls");introduce();cout<<"计算器已清零, 请输入您所要计算的表达式"<<endl;input();//输入表达式break;}else if(cc == 'F'){system("cls");cout<<"计算器关闭, 谢谢使用!"<<endl;break;}else{cout<<"所输入字符无效, 请输入一个字符'M'或'D'或'F'!"<<endl;continue;}}}else//不合法,分两种不合法{if(check_kuohao() == 0 && check_char() == 1){cout<<"您所输入的表达式括号不匹配, 请重新输入:"<<endl;input();//输入表达式}else{cout<<"您所输入的表达式不合法, 请重新输入:"<<endl;input();//输入表达式}}}void tackle_fuhao()//处理负号{node *root, *head, *p, *q, *p1;root = head = new node;head->next = NULL;int i;for(i = 0; line[i] != '\0'; i++)//建立链表{p = new node;p->data = line[i];p->next = head->next;head->next = p;head = p;}q = (node*)malloc(sizeof(node));head = root;if(root->next->data == '+' || root->next->data == '-')//处理第一个字符{p = new node;p->data = '0';p->next = head->next;head->next = p;}if(root->next != NULL){for(q = root->next; q; q = q->next){if(q->data == '(' && (q->next->data == '-' || q->next->data == '+')){p = new node;p->data = '0';p->next = q->next;q->next = p;}}}p1 = new node;int qi = -1;for(p1 = root->next; p1; p1 = p1->next){line[++qi] = p1->data;}line[++qi] = '\0';}void input()//输入{cin>>line;if(biao == 0)tackle_fuhao();//处理负号check();//检查表达式是否合法}void introduce()//对计算器的符号功能的简要介绍{cout<<"★★★★★★★★★欢迎使用本计算器★★★★★★★★★"<<endl;cout<<"*******************计算器简要介绍*******************"<<endl;cout<<"C(cos) S(sin) T(tan) a(arccos) c(arcsin) "<<endl;cout<<"7 8 9 / on t(arctan) "<<endl;cout<<"4 5 6 * % L(log)"<<endl;cout<<"1 2 3 - M(M+) Q(sqrt) "<<endl;cout<<"0 . + ^ F(off) Enter(=) "<<endl;cout<<"☆☆☆☆☆☆☆关于计算器的一些输入说明☆☆☆☆☆☆☆"<<endl;; cout<<"*******对于对数输入 L2_5 表示以2为底5的对数*********"<<endl; cout<<"*M(继续上次的计算,如:上次结果为10,现输入+10.5*2)*"<<endl; cout<<"*****************D(清零并继续输入)******************"<<endl;cout<<"********************F(程序结束)*********************"<<endl;cout<<"**输入 P 就代表输入圆周率, 输入 E 代表输入自然对数**"<<endl<<endl; }void if_start()//是否启动计算器{introduce();//对计算器的简要介绍cout<<"现在,请输入您所要计算的表达式"<<endl;input();//输入所要计算的表达式}int main(){if_start();//调用是否启动计算器函数return 0;}6.测试(主界面及各功能模块的运行图及说明)进入主菜单,选择要进行的运算。

面向对象分析与设计(UML)课程大作业题目及要求

面向对象分析与设计(UML)课程大作业题目及要求《面向对象分析与设计(UML)课程大作业》题目一、课程大作业目的和要求1.初步了解UML语言的概念、结构、语义与表示方法;2.掌握UML建模工具Rational Rose的使用方法;3.给出某个简单系统的模型,能够熟练地使用Rose工具表达;二、课程大作业主要内容及要求课程设计的主要任务:1.根据所收集的简单需求,利用UML和Rational Rose工具对系统进行建模;2.根据前述需求的分析,进行需求建模,绘制系统的用例图和活动图;3.根据用例模型,进行架构建模,绘制系统的时序图,状态图,类图和交互图;4.绘制系统中某些重要功能的对象图;5.绘制系统的组件图和部署图;6.程序实现(选做)选题如下:1.网上选课系统主要包括如下功能:管理员通过系统管理界面进入,建立本学期要开的各种课程,将课程信息保存在数据库中并可以对课程进行改动和删除。

学生通过客户机浏览器根据学号和密码进入选课界面,在这里学生可以进行三种操作:查询已选课程、选课以及付费。

同样,通过业务层,这些操作结果存入到数据库中。

2.设计运动会的计分系统本运动会在若干各会场进行,每个会场进行若干个项目。

有若干支运动队参赛,每支运动队有数名运动员。

各赛事分预决赛,预赛成绩部分带入决赛。

成绩由裁判员给出,计分员记录。

要求在比赛结束后,产生各队排名表及运动员的详细成绩表。

3. 试题管理系统其中试题分正式试题和临时试题,出题人设置课程名和试卷难度等内容后,系统自动出卷。

对试题要进行管理,并提供查询功能。

4. 工资管理系统一个公司下分若干部门,每个部门有若干名职员和经理,每个部门经销若干种产品。

工资由基本工资、产品销售业绩、若干种保险的扣除等组成。

其中的销售业绩:职员按其完成额5%提成,经理按该部门的完成额的1%提成。

每个月要生成一个工资表,每年末再按个人的总销售额发放1%的奖金。

5.宿舍楼管理系统该系统涉及到的事物有:宿舍楼、楼层、房间、家具;室长、楼长、保洁员、学生;学生所属的系。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

面向对象的分析与设计课程结课大作业学号学生姓名专业班级塔里木大学教务处制《面向对象的分析与设计》课程结课作业 一 二 三 四 五 六 七 总结 总分总分 5 15 15 15 10 10 10 20 100 得分提示:1、请将答案写在此文档的相应位置,图形需在Rational Rose 下绘制,大小可以根据个人需求定制(宽不超过页面1/3);2、请将相关的文档,包括程序的相关文档进行压缩,并将压缩文档上传到ftp://210.26.176.123“大作业电子版文档”文件夹下命名为“班级-学号-姓名” ,纸质版于2015年6月12日上午10:00—13:00交到逸夫楼109。

一、选题(此题5分)请根据你抽中的题号,请将其所对应的题目写到下方,并将你要描述的界面进行截图。

题目:照相(即手机的“相机”软件)该 相机 软件为SONY XPERIA Z 系列手机的自带相机软件。

图中第五行第二列的软件。

相机题号分值用例图用到的界面:A D E F类图用到的界面:B C D E F序列图和协作图用到的界面:A C状态图用到的界面:A C活动图用到的界面:A B C D E F部署图用到的界面:AA B CD E F二、用例图建模(此题15分)请根据自己所选择的题目,描述一段不少于100字的需求分析,并绘制相应的用例图。

此题要求:用例图中,用例的粒度不少于5个,必须绘制参与者和用例,尽量使用用例图中所有的要素,用例图的数量不少于2个。

请注意:文字描述要与用例图相对应。

1、需求分析如下所示:图1 用户用例图:需户对相机进行各方面的操作,例如用户对照相、摄像、相册、模式、前后置摄像头的切换、闪光灯、设置等进行操作。

图 2 用户设置用例图:需要用户能在设置中对照片设置、视频设置、相机设置等,对相机的参数进行修改。

图 3 用户拍照用例图:需要用户能切换前后置摄像头进行拍照,成像系统生成图像,显示在显示屏上,并且存储照片。

2、用例图截图如下所示:图1 用户用例图图2 用户设置用例图图3 用户拍照用例图三、类图建模(此题15分)请根据自己所选择的题目,描述一段不少于100字的需求分析,并绘制相应的类图。

此题要求:类图中,类的个数不少于5个,尽量使用类图中所有的要素,类图的数量不少于1个。

请按照,找类——确定关系(关联关系需要确定其多重性,约束条件,限定符)——确定职责,的顺序进行绘制。

请注意:文字描述要与类图相对应。

1、需求分析如下所示:用户设定类图:需要用户对模式、闪光灯、设置(包括照片、视频、相机设置)、前后置摄像头的切换进行设定。

其中模式中要有增强自动、手动、AR效果、创意效果等几个类、闪光灯要有自动、闪光灯补光等的设置项目,其他各个设定也要有各种类。

2、类图截图如下所示:图4 用户设定类图四、序列图和协作图建模(此题15分)请根据自己所选择的题目,描述一段不少于100字的需求分析(主要是按时间顺序描述事件流),并绘制相应的序列图。

此题要求:1、序列图中,对象的个数不少于3个,尽量使用序列图中所有的要素,序列图的数量不少于1个。

2、协作图中,对象的个数不少于4个,尽量使用协作图中所有的要素,协作图的数量不少于1个。

请注意:文字描述要与序列图和协作图相对应。

1、需求分析如下所示:拍照过程序列图与协作图:用户打开相机,显示屏显示主界面,用户拍照选择拍照模式,模式选择成功后向用户显示切换模式成功,拍照系统根据当前模式,呈现出相对的显示效果,用户点击快门,成像系统记录拍照的的图片,再将照片保存在存储器当中,此时拍照成功,屏幕预览拍好的照片。

2、序列图截图如下所示:图5 拍照过程序列图3、协作图截图如下所示:图6 拍照过程协作图五、状态图建模(此题10分)请根据自己所选择的题目,描述一段不少于100字的需求分析,并绘制相应的状态图。

此题要求:状态图中,状态的个数不少于4个,尽量使用状态图中所有的要素,标明事件或动作,状态图的数量不少于1个。

请注意:文字描述要与状态图相对应。

1、需求分析如下所示:照相摄像状态图:用户能改变照相、摄像的不同状态,完成拍摄。

拍照模式切换协作图:用户选择不同模式,切换不同的模式,完成不同效果的拍照。

2、状态图截图如下所示:图7 照相摄像状态图图8 拍照模式切换状态图六、活动图建模(此题10分)请根据自己所选择的题目,描述一段不少于100字的需求分析,并绘制相应的活动图。

此题要求:活动图中,活动的个数不少于4个,尽量使用活动图中所有的要素,标明事件或动作,最少使用一次分支与合并或者分叉与结合,活动图的数量不少于1个。

请注意:文字描述要与活动图相对应。

1、需求分析如下所示:拍照活动图:用户进入相机界面,点击设置,进行相应的设置,设置完成后,再次进入相机界面,用户改变拍照模式,根据自己的喜好和拍照需求,选择相应的模式,模式设置成功后,进入不同模式下的拍照主界面,点击快门,就可以完成拍照。

2、活动图截图如下所示:图9 拍照活动图七、部署图建模(此题10分)请根据自己所选择的题目,描述一段不少于100字的需求分析,并绘制相应的部署图。

此题要求:部署图中,节点的个数不少于3个,尽量使用部署图中所有的要素,部署图的数量不少于1个。

请注意:文字描述要与部署图相对应。

1、需求分析如下所示:相机部署图:相机必须有四个节点:摄像头、相机系统、存储器、显示屏,摄像头负责捕获图像,相机系统内是各种复杂的参数,能对照片效果、照片要求、照片质量等进行计算,成像完成后,保存到存储器上,显示屏则给用户显示照片。

2、部署图截图如下所示:图10 相机部署图总结请阐述通过该课程的学习,你学到了哪些内容。

请按照如下格式进行叙述:一、用例图1、作用:用例图是指由参与者(Actor)、用例(Use Case)以及它们之间的关系构成的用于描述系统功能的动态视图。

用例图(User Case)是被称为参与者的外部用户所能观察到的系统功能的模型图,呈现了一些参与者和一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。

2、组成元素:参与者用例系统边界关联(包含)关联(扩展)关联(泛化)3、彼此之间的关系:元素之间的关系,例之间的关系,角色之间的关系,用例和角色之间的关系。

4、实例:二、类图1、作用:类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。

类图不显示暂时性信息。

2、组成元素:类接口依赖关系泛化关系关联关系实现关系对象链3、彼此之间的关系:依赖关系泛化关系关联关系实现关系4、实例:三、序列图1、作用:序列图(Sequence Diagram)是把用例表达的需求,转化为进一步、更加正式层次的精细表达。

用例常常被细化为一个或者更多的序列图。

序列图除了在设计新系统方面的用途外,它们还能用来记录一个存在系统(称它为“遗产”)的对象现在如何交互。

2、组成元素:对象生命线激活消息3、彼此之间的关系:序列图将交互关系表示为一个二维图。

纵向是时间轴,时间沿竖线向下延伸。

横向轴代表了在协作中各独立对象的类元角色。

类元角色用生命线表示。

当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。

消息用从一个对象的生命线到另一个对象生命线的箭头表示。

箭头以时间顺序在图中从上到下排列。

4、实例:四、协作图1、作用:又作“通信图”。

即Communication Diagram,而“协作”作为一个结构事物用于表达静态结构和动态行为的概念组合,表达不同事物相互协作完成一个复杂功能。

2、组成元素:对象消息链3、彼此之间的关系:协作图作为表示对象间相关作用的图形表示,也可以有层次结构。

可以把多个对象作为一个抽象对象,通过分解,用下层协作图表示出这多个对象间的协作关系,这样可缓解问题的复杂度。

4、实例:五、状态图1、作用:状态图(Statechart Diagram)是描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的事件做出反应的。

通常我们创建一个UML状态图是为了以下的研究目的:研究类、角色、子系统、或组件的复杂行为。

2、组成元素:状态初始状态终止状态转换事件动作监护条件3、彼此之间的关系:状态图用于显示状态机(它指定对象所在的状态序列)、使对象达到这些状态的事件和条件、以及达到这些状态时所发生的操作。

4、实例:六、活动图1、作用:活动图(activity diagram,动态图)是阐明了业务用例实现的工作流程。

业务工作流程说明了业务为向所服务的业务主角提供其所需的价值而必须完成的工作。

业务用例由一系列活动组成,它们共同为业务主角生成某些工件。

工作流程通常包括一个基本工作流程和一个或多个备选工作流程。

工作流程的结构使用活动图来进行说明。

2、组成元素:状态初始状态终止状态转换分叉与结合分支与合并泳道对象流3、彼此之间的关系:一个活动图可能包括以下元素关系:活动状态表示在工作流程中执行某个活动或步骤。

转移表示各种活动状态的先后顺序。

这种转移可称为完成转移。

它不同于一般的转移,因为它不需要明显的触发器事件,而是通过完成活动(用活动状态表示)来触发。

决策,为其定义了一组警戒条件。

这些警戒条件决定在活动完成后将执行一组备选转移中的哪一个转移。

您也可以使用判定图标来表示线程重新合并的位置。

决策和警戒条件使您能够显示业务用例的工作流程中的备选线程。

同步示意条用于显示平行分支流。

同步示意条使您能够显示业务用例的工作流程中的并行线程。

4、实例:七、部署图1、作用:部署图(deployment diagram,配置图)是用来显示系统中软件和硬件的物理架构。

从部署图中,您可以了解到软件和硬件组件之间的物理关系以及处理节点的组件分布情况。

使用部署图可以显示运行时系统的结构,同时还传达构成应用程序的硬件和软件元素的配置和部署方式。

2、组成元素:结点结点实例结点类型物件连接结点容器3、彼此之间的关系:一个UML部署图(对象管理组织2001)描述了一个运行时的硬件结点,以及在这些结点上运行的软件组件的静态视图。

部署图显示了系统的硬件,安装在硬件上的软件,以及用于连接异构的机器之间的中间件。

4、实例:。

相关文档
最新文档