面向对象的分析与设计大作业文档
(完整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)等。
[计算机]《面向对象的系统分析与设计》课程项目大作业任务要求、评分标准
![[计算机]《面向对象的系统分析与设计》课程项目大作业任务要求、评分标准](https://img.taocdn.com/s3/m/ac72658c0b1c59eef9c7b44a.png)
《面向对象的系统分析与设计》课程项目大作业任务要求一、目的为了能够让学生掌握企业应用系统项目开发中所涉及的各种规范和技术,以提高学生毕业后的就业竞争力,在课程设计的教学环节中希望能够达到如下的教学目标。
1、注重软件工程的思想和原则、体系架构等方面知识的具体应用。
2、体验软件开发过程中的各个环节、任务和目标,并把握软件设计模式的思想和具体在实际项目开发中的应用、增强团队协作和交流的意识。
3、牢记“多层架构和松耦合”的设计原则和改原则在实际项目开发中的具体应用及实现,获得实际的企业级项目开发的体验和锻炼,增强软件开发过程中各个阶段所需要的各种形式的标准化文档和编码规范化方面的意识。
4、增强对课堂中所学习过的各种技术和知识合理地综合应用的能力,软件开发流程的完整体验。
二、任务及要求1、软件项目厦门理工学院社团组织管理系统2、项目分组和人员角色分工原则(1)项目组中的各个角色成员构成和分配的基本原则同一班级中不同的学生在学习的能力、技术的熟练程度和项目开发方面的接触深度都是有差别的,为了能够让不同层次的学生在课程设计中都能够有所收获,课程设计的知道教师应该合理地进行项目分组和项目组内各个角色成员的合理分配。
这也就要求指导教师对每个学生的技术水平和能力都应该了解,才有可能达到“各尽所能、各负其责和各有收获”和“合适的学生干合适的事情”的培养效果。
当然,指导教师可以提前通过测试或则摸底了解每个学生的个性和技术能力。
建议项目组内各个角色成员构建和分配的基本原则如下:各尽所能、各有收获。
不同层次和不同技术能力的学生都能够获得锻炼、提升。
●互相帮助、共同进步。
课程设计的教学目标应该是提升学生的整体技能。
●相互交流、团结协作。
增强团队合作、协作开发的意识。
(2)每个项目组的人员角色分配1)项目组长人员角色(1人)2)技术总监人员角色(1人)3)项目功能实现的编码人员角色(3人)4)界面开发及集成测试人员(1人)3、项目开发各阶段的任务为了保证课程设计在有限的时间内能够让学生按时、按量和按质地完成,指导教师需要仔细思考、深入了解学生的个性和技术水平,并按照软件开发的基本过程布置项目开发各个阶段的任务。
面向对象程序设计大作业(C++)

面向对象分析/设计课程大作业银行业务处理系统13级软件学院测试班1367004029曾丹1.需求分析随着社会经济的发展,信息化程度的不断深入,银行的传统业务己愈来愈不能满足银行客户的需要。
现今,人们的金融意识、科技意识己经有了很大的提高,在紧张忙碌的生活中,己越来越来不习惯每月奔忙于各银行营业柜台之问去排队缴各种各样的费用了;同时,各种经营单位如电信、移动、供电、煤气、自来水、证券等等一是为了提高服务质量、方便客户,二是为了减轻自己日趋繁重的工作量,纷纷委托银行为其开展代收代付业务:同时,随着我国加入世贸组织的日益临近,我国的银行业将面临更加激烈的同业竞争,如何提供更多的金融产品和更优质的服务,如何吸引更多的客户,如何利用计算机技术加强银行帐户信息管理、进行银行业务再造,提高银行的工作效率和业务竟争能力是摆在各家银行面前的一个迫切需要解诀的问题。
近几年来,各商业银行加快了与社会各业的合作,利用自身的网点优势和业务特点,为其提供各种高效、快捷的代收代付业务,也就是中间代理业务,目前以与广大人民群众生活密切相关的各项缴费业务如水电费、电话费、手机费等代收业务为主,这些业务开展方式多种多样,但一般都离不开计算机的高效管理支持。
随着代理业务不断发展,业务品种越来越多,各项业务做法互有差异,这就对银行的电子化水平和相应的管理水平提出了更高的要求。
如何利用电子化的手段构建一个高效统一的、通用灵活的系统来管理各种各样的业务,是每个商业银行所要研究的课题。
支持决策系统的,需要在数据库的基础上,进行联机分析处理,每次处理的数据量大,响应时间长。
特别是银行每天要处理大量的存取款事件,做好存取款是银行工作重要的环节,然而要有效处理必须要有良好的程序和数据管理系统来建立一个良好的软件系统来实现快速、有效、准确、安全的处理银行事物。
主要用于银行的储蓄卡管理系统,它可以帮助我们有效、准确、并且高效实现的完成存取事件。
此系统操作方便效率、安全性高,只要客户开户并设定好密码就可以轻松的实现存取款。
(更新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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象的分析与设计课程结课大作业学号______________学生姓名___________专业______________班级______________塔里木大学教务处制《面向对象的分析与设计》课程结课作业\题分\号值\——一二三四五六七总结总分总分5020100得分提示:1、请将答案写在此文档的相应位置,图形需在Rational Rose下绘制,大小可以根据个人需求定制(宽不超过页面1/3);2、请将相关的文档,包括程序的相关文档进行压缩,并将压缩文档上传到“大作业电子版文档”文件夹下命名为“班级-学号-姓名”,纸质版于2015年6月12日上午10:00 —13:00交到逸夫楼109。
一、选题(此题5分)请根据你抽中的题号,请将其所对应的题目写到下方,并将你要描述的界面进行截图。
题目:照相(即手机的“相机”软件)XPERIA Z系列手机的自带相机软件。
图中第五行第该相机软件为SONY 二列的软件。
相机用例图用到的界面:A D E F 类图用到的界面:B C D E F 序列图和协作图用到的界面:A C 状态图用到的界面:A C活动图用到的界面:AB C D E F 部署图用到的界面:ADEF./ * 1S<KI4I l>Vf九—X IJ .鈕 EuHo StiilE 拍untflimhwiiBMiiriifnQi-A1 i a口Xnt^tt帕.9*自怕笑Kt*n关闻寸慎毛连拍JI人■注册O Q• O■□Q:9c口X快走总谕填理杯记•®D将害・瞳用朴isn^g C»内序科11诬・4k aC3 Q)gv>W BF\j o Q! A ◎a o X白拘Jt笑隘快门(鞭牆)Xnn-:•nt窒恙(>o■U K>QiA B手动创息啟JR、用例图建模(此题15 分)请根据自己所选择的题目,描述一段不少于100字的需求分析,并绘制相应的用例图。
此题要求:用例图中,用例的粒度不少于5个,必须绘制参与者和用例,尽量使用用例图中所有的要素,用例图的数量不少于2个。
请注意:文字描述要与用例图相对应。
1、需求分析如下所示:图1用户用例图:需户对相机进行各方面的操作,例如用户对照相、摄像、相册、模式、前后置摄像头的切换、闪光灯、设置等进行操作。
图2用户设置用例图:需要用户能在设置中对照片设置、视频设置、相机设置等,对相机的参数进行修改。
图3用户拍照用例图:需要用户能切换前后置摄像头进行拍照,成像系统生成图像,显示在显示屏上,并且存储照片。
2、用例图截图如下所示:图1用户用例图圧片诸首用1«in€ludB» 述图2用户设置用例图、类图建模(此题15分)请根据自己所选择的题目,描述一段不少于100字的需求分析,并绘制相应的类图。
此题要求:类图中,类的个数不少于5个,尽量使用类图中所有的要素,类图的数量不少于1个。
请按照,找类一一确定关系(关联关系需要确定其多重性,约束条件,限定符)一一确定职责,的顺序进行绘制。
请注意:文字描述要与类图相对应。
1、需求分析如下所示:用户设定类图:需要用户对模式、闪光灯、设置(包括照片、视频、相机设置)、前后置摄像头的切换进行设定。
其中模式中要有增强自动、手动、AR效果、创意效果等几个类、闪光灯要有自动、闪光灯补光等的设置项目,其他各个设定也要有各种类。
2、类图截图如下所示:/ 垢户•斤口e Use Viw)£图4用户设定类图前砌蝶头切檢SA 鳥¥前宕桥停」檢'«r<Udr^>图3用户拍照用例图■■甜晞宇动购xl i咼应天打补卅场手电超比0>^L'R 订険枫些黑肛罚7 ■现折)毎litr■m蟹愕匕记屯讣1KJH碱乐H吞屮闹巨件JZ胡阳伸-承曹命H4># (四、序列图和协作图建模(此题15 分)请根据自己所选择的题目,描述一段不少于100字的需求分析(主要是按时间顺序描述事件流),并绘制相应的序列图。
此题要求:1、序列图中,对象的个数不少于3个,尽量使用序列图中所有的要素,序列图的数量不少于1个。
2、协作图中,对象的个数不少于4个,尽量使用协作图中所有的要素,协作图的数量不少于1个。
请注意:文字描述要与序列图和协作图相对应。
1、需求分析如下所示:拍照过程序列图与协作图:用户打开相机,显示屏显示主界面,用户拍照选择拍照模式,模式选择成功后向用户显示切换模式成功,拍照系统根据当前模式,呈现出相对的显示效果,用户点击快门,成像系统记录拍照的的图片,再将照片保存在存储器当中,此时拍照成功,屏幕预览拍好的照片。
2、序列图截图如下所示:跡屛舶典模弍糸统血像耳城坦材即询I式7-----------------------2十1拘用凶僅贰£--------- -------- ―十I瞇屛亀宋携记录国片:P&存捕賂片9柏瀬站屏前丄咀图5拍照过程序列图3、协作图截图如下所示:图6拍照过程协作图骑保存照片1应弔当甘嗨匸冇蒔5.妙成金摯6显宗当前书贞五、状态图建模(此题10分)请根据自己所选择的题目,描述一段不少于100字的需求分析,并绘制相应的状态图。
此题要求:状态图中,状态的个数不少于4个,尽量使用状态图中所有的要素,标明事件或动作,状态图的数量不少于1个。
请注意:文字描述要与状态图相对应。
1、需求分析如下所示:照相摄像状态图:用户能改变照相、摄像的不同状态,完成拍摄。
拍照模式切换协作图:用户选择不同模式,切换不同的模式,完成不同效果的拍照。
2、状态图截图如下所示:图7照相摄像状态图六、活动图建模(此题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作用:序列图(Sequenee Diagram)是把用例表达的需求,转化为进一步、更加正式层次的 精细表达。
用例常常被细化为一个或者更多的序列图。
序列图除了在设计新系统方面的用途 外,它们还能用来记录一个存在系统(称它为“遗产”)的对象现在如何交互。
2、组成元素:对象 生命线激活消息3、彼此之间的关系:序列图将交互关系表示为一个二维图。
纵向是时间轴,时间沿竖线向 下延伸。
横向轴代表了在协作中各独立对象的类元角色。
类元角色用生命线表示。
当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。
消息用从一个对象的生命线到另一个对象生命线的箭头表示。
箭头以时间顺序在图中从上到下排 列。
4、实例:察手动 ◎氏啟担聊斶"耕TMlr liveM 光坊 0迪 時円卅蚪朴比 心a卜::甲 赛电苟r 后护赛土幻样A用户上坦爭柏冋s 式7 hriiT 屛咽片设置/用户碾加贞用理停口2幻桶刃凶愎齐四、协作图1作用:又作"通信图”。
即Communication Diagram ,而"协作”作为一个结构事物用于 表达静态结构和动态行为的概念组合,表达不同事物相互协作完成一个复杂功能。
2、 组成元素:对象消息链3、 彼此之间的关系:协作图作为表示对象间相关作用的图形表示,也可以有层次结构。
可 以把多个对象作为一个抽象对象,通过分解,用下层协作图表示出这多个对象间的协作关系, 这样可缓解问题的复杂度。
4、实例:五、状态图1作用:状态图(Statechart Diagram )是描述一个实体基于事件反应的动态行为,显示了该实 体如何根据当前所处的状态对不同的事件做出反应的。
通常我们创建一个 UML 状态图是为 了以下的研究目的:研究类、角色、子系统、或组件的复杂行为。
2、 组成元素:状态 初始状态终止状态转换事件动作监护条件3、 彼此之间的关系: 状态图用于显示状态机(它指定对象所在的状态序列)、使对象达到这 些状态的事件和条件、以及达到这些状态时所发生的操作。
4、 实例:~~] 按下职13犍-. _____ __ 「-奸懂曹叶亠帚懈 |扌汀快1六、活动图1作用:活动图(activity diagram ,动态图)是阐明了业务用例实现的工作流程。
业务工作 流程说明了业务为向所服务的业务主角提供其所需的价值而必须完成的工作。
业务用例由一 系列活动组成,它们共同为业务主角生成某些工件。
工作流程通常包括一个基本工作流程和一个或多个备选工作流程。
工作流程的结构使用活动图来进行说明。
9:保存照片1应弔岂潼.匸方寺 10 EWJ&2、组成元素:状态初始状态终止状态转换分叉与结合分支与合并泳道对象流3、彼此之间的关系:一个活动图可能包括以下元素关系:活动状态表示在工作流程中执行某个活动或步骤。