面向对象程序设计的实训案例的设计

面向对象程序设计的实训案例的设计
面向对象程序设计的实训案例的设计

面向对象程序设计的实训案例的设计

一.引言

今天,面向对象编程技能作为应用软件设计人员的基本工作技能在软件业内已经深入人心:任何一个应用软件设计求职者如果敢于声称自己对面向对象编程一无所知,哪怕他其他方面再优秀,也会被公司拒绝;任何一家招聘应用软件设计职位的公司如果在招聘条件中没有列出“熟悉精通面象对象编程”这个条件,该公司一定认为这是默认的条件,没有单独列出的必要。

遗憾的是,应届大学大专毕业生动手能力不强已成为各软件用人单位的另一个共识,而把,等面向对象语言仅仅当作开发网站快速上手的工具的初学者更是大有人在。面对大街上扑天盖地的各类“计算机职业教育广告”,身为一名计算机专业教师,我觉得有必要为提高学生们的面向对象程序设计水平做点什么了。

提高学生的程序设计水平,公认最佳的途径就是多动手实践。在不给学生加负的前提下,精心选择,设计有代表性的实训案例,切实提高实训的效果,就显得尤为重要。

二.案例的评价标准

一个针对初学者的面向对象程序设计的实训案例应由案例的现实原型,案例分析设计和参考代码三个部分组成。其评价标准大致如下:

1.案例的现实原型应是同学们熟悉的题材,规模和复杂度相对较小,初学者容易把握主题。

2.案例的分析应体现出面向对象的思维方式,让同学们感受到“万物皆对象”,用面向对象的方式构建软件是一件自然而然的事情。

3.案例的设计要结构清晰,具备一定的健壮性和扩展性;在不影响结构优雅的前提下,尽可能全面应用到抽象类,接口,继承,多态,重载,覆盖等

面向对象基本特性,体现面向对象编程的特点。

4.案例的参考代码由源码实现,和伪代码相比,初学者对能编译运行的源代码更有好感。

三.案例的现实原型:

根据案例的评价标准,我选择了大家都比较熟悉的餐厅结账作为我们案例的现实原型,其功能要求如下:

1.程序功能:

这是一个餐厅计费的小程序;根据用户提供的消费清单和所应享受的折扣,算出最后用户的账单;根据用户选择,决定是否继续计算;

2.用户界面:

控制台命令行显示输出信息和接受用户输入信息;

3.折扣规定:

餐厅经营普通食品,海鲜,酒水三大类食品,其享受的折扣不同;折扣分为“进餐等待折扣”“折扣”“代金券折扣”三种。

. 进餐等待折扣:普通食品折,酒水折,海鲜不打折;

折扣:菜单总价折;

代金券折扣:总价每消费,可使用代金券,直接从总价中扣除;

补充说明:如果同时满足折扣,折扣,只能享受折扣.

.帐单规定:

显示消费的食品的每条记录和单价;显示总共应付费用;显示享受折扣的名称和

折扣金额;显示用户实际应付费用;

.用户在输入消费清单和享受折扣信息时,如果非法输入能够给以相应提示,同时程序正常执行下去。

四.案例的分析设计:

.程序所要涉及到的实体:

从需求知道,问题的关注点是生成消费的帐单。经验告诉我们,要得到帐单,我们必须知道用户消费食品的份数和单价,以及用户所享受打折的价格。

食品的份数和单价就是个人消费清单,它需要菜单和用户输入来支持;而菜单则由餐厅所提供的食品来决定。用户所享受打折的价格细分一下,可以划分为同用户相关的用户折扣条件和同用户无关的打折规则两个实体。显然,用户的折扣条件由用户输入信息决定,折扣条件依赖于食品。

当个人消费清单和用户所享受的打折价格都知道了,我们还需要一个计算的实体来处理输入数据,最后通过输出实体将帐单打印出来。

那么,程序需要涉及的实体及其功能如下表:

实体功能

计算:根据消费清单和用户折扣条件打印消费帐单;

菜单:打印菜单,供用户点菜时选择;

提供菜单的内容提供输入信息的依据;

个人消费清单:提供消费的食品的种类和和单价;

折扣规则:根据折扣条件,提供不同的折扣的计算方法;

折扣条件:根据用户输入,提供用户享受的折扣信息;

食品:是菜单和折扣规则的的依据,分为普通食品,海鲜,酒水三类。

信息输入:输入食品消费信息;输入享受折扣信息等;

信息输出:输出菜单信息;输出消费帐单;输出提示信息等;

表-

.实体的相互关系:

根据实体的功能和生命周期,我们可以推出实体间的相互关系如下:

1.计算和折扣规则的关系是聚集;

2.计算和折扣条件,个人消费清单的关系是依赖

3.个人消费清单和菜单的关系是聚集;

4.菜单和食品间的关系是依赖;

5.个人消费清单和食品间的关系是间接依赖;

6.个人消费清单,折扣条件和信息输入的关系是聚集;

7.计算,菜单和信息输出的关系是聚集;

.各实体的类的设计

根据实体的功能和相互间的关系,类设计如下:

计算类:

构造时装载“输出”和“折扣规则”,这里将输出定义为接口,为今后将控制台输出改为界面输出留下扩展的空间;同样出于扩展性的考虑,我们将折扣规则设置成抽象类,由具体子类实现。

对外提供方法打印帐单方法,根据消费清单和用户折扣条件打印消费帐单.

个人消费清单:

构造时装载“菜单”和“输入”。这里的输入也是接口。“菜单”把输入的食品代号和具体食品实例的对应起来,内置变量用来存放消费食品的实例,以便提供提供消费的食品的数量,种类和单价

折扣规则:根据折扣条件,提供不同的折扣的计算方法;

考虑到将来业务需要,对相同的折扣条件,不同的时段也许使用不同的折扣率。这里将折扣类设计成一个抽象类,提供计算不同折扣条件的抽象计算方法或者具体计算方法。继承于它的子类通过实现或者覆盖父类的方法,完成具体的折扣计算;

折扣条件:

根据三种折扣类型设置三个私有变量,保存用户输入的折扣信息,并提供相应的变量获取方法;

食品:

食品类的结构影响着“菜单”和“折扣规则”类的结构,是设计的一个重点,

目前看来,有两种实现思路。一种是用类来描述食品,下设普通食品,海鲜,酒水三个子类,子类的实例就是最终的食品。这中设计的好处是结构清晰,扩展性好,能满足将来食品类增加方法,属性的需求;另一种思路是用枚举类描述食品。这种思路把食品抽象为价格,名称和类型的结合体,用枚举类型来存储食品实现要简单,同时效率要稍好些。

这两种思路各有特点,都可以实现我们的需求。如果在两者间取舍的化,我更倾向于用类来描述食品。在我看来,实体潜在的变化可能性大的,应该用类来描述,因为类更能适应变化;反之,则用枚举合适;在不是特别强调性能的场合里,我通常都优先考虑扩展性。

确定了思路,下面的的工作就很明确了,将食品设为抽象类,下设普通食品,海鲜,酒水三个子类。抽象类提供带参数的构造方法,提供食品的代号,名称,价格的获取方法。注意,这些方法都是具体方法,之所以将设为抽象类,是为了避免这个顶级类实例化。我们生成的食品必将是普通食品,海鲜或者酒水中的一种。

为了将对象的创建和使用分开,我们设计了工厂类创建食品对象。工厂类提供普通食品,海鲜和酒水对象的静态创建方法以及根据食品代码创建食品的静态方法。

食品的价格,名称,代码数据应该存放到数据库或者配置文件中,供食品对象生成时使用。我们为了简化结构,这里使用枚举类存放具体食品信息。

信息输入和信息输出:

定义为和接口,由负责控制台输入,输出的类实现这两个接口,提供信息的输入,输出服务。将来如果需要提供页面输入,打印机输出,替换的类只要实现这两个接口即可,程序其他地方不需要改动。这就是对接口编程的好处。

五.参考代码:

篇幅所限,这里仅摘录部分有代表性的代码:

.类:

类的函数里,首先实例化,,,这些生命周期较长的类,然后进入输入消费食品清单,打印消费帐单的循环。计算类的实例根据折扣条件实例和食品消费清单实例,打印出帐单。

最后()方法获得用户是否继续计算的信息。如果是,计算下一个菜单,否则结束程序。

.重载方法:

重载方法是类中的私有方法;通过提供一系列方法名相同,方法参数不同的构造方法,满足中对于不同显示信息方式的需求。

.菜单的初始化:

菜单的构造函数中最主要的方法就是菜单的初始化方法。此方法将各种食品数据从枚举类中读出,生成菜单里面一个个食品实例,供用户点餐时参考,供用

户输入食品代号时验证参考。注意,类如( : ()){…..}的用法,是以上版本新增

加的功能,用来遍历集合中的每个元素,执行某种操作。该用法和中的循环的用

法相似。

另外,所有食品的实例均由工厂方法创建,将对象的创建和使用分离开来。

如果将来修改食品对象的生成方式,只需要更改工厂方法即可,增将了软件的可

维护性。

.获得输入消费食品输入信息:

获得控制台输入消费信息是本软件的一个相对复杂的地方。我们约定消费信息输入格式为:(前三位是消费品编号,后两位是消费品数量);不同种类的消费品间

用空格分隔;那么,获取消费信息分两个步骤,第一步是获得输入格式正确的输入

字符串,第二步是获取正确的输入信息。如果第二步中输入信息内容不正确,返回

第一步重新执行。

第一步,获取输入格式正确的字符串:

通过输入流的方式取得消费菜单字符串,然后用正则表达式验证输入格式。如果输入格式不正确,返回输入信息,重新输入。

第二步:获取正确的信息:

将格式正确的输入字符串处理为合乎要求的数据类型,我们具体使用来存放处理的数据,使用是因为它可以有序存放输入的数据。然后运用文本分析器将字符串还原为一个个位的字符串,最后将这些字符串按照前三位是消费品编号,后两位是消费品数量的方式分开存入中。如果消费品号不存在,返回空;如有重复的消费品号,消费品的数量在中累加。输入信息处理完成后,将存放信息的返回。

.折扣条件的初始化

为代码结构更紧凑,在折扣条件类的初始化方法中,我们就将用户所享受的折扣信息载入,减少对外的方法。

在这里,没有使用。。。。语句,改用三元操作符“?:”,使程序代码更加简洁。

另外,由于折扣和等待折扣不能同时使用,在给,等初时值为的布尔型全局变量赋值的时候,使用。。。。。。分支语句简化结构。

.显示消费帐单:

计算类的核心方法就是显示帐单的方法;在获得了参数消费列表和所享受的折扣条

件之后,先根据消费列表算出应付的总费用,然后再计算出所享受的折扣分项,最后打印出详细的消费帐单。

注意,我们所需要的消费列表是类型为<>的集合,我们为何不将方法的参数定义为传入一个集合,而是传入类型,然后在方法体中再将<>的集合取出来呢?其实,这是为了使方法的语意更好懂,可维护性更强。显然,消费清单实例和另一个参数消费条件折扣实例是一个层面上的数据,使方法的逻辑性更强。

同理,由上面方法的调用的实例的方法中,包含有五个子方法,其中的()方法只有一条打印语句,而打印语句又是另一个方法,且最终内容仅一条语句。将大的方法按照功能细分为更小的方法,直到在语意上功能不能拆分为止。这不但增加了了代码的可读性,而且大大减少了冗余代码的可能性。也许有人会说,过多的方法调用会影响软件性能,实际上,现代语言几乎已经完全免除了进程内的“函数调用动作的额外开销”,方法调用对软件性能几乎不会造成影响;相反,实践证明,由方法冗余造成的“散弹式修改”才是软件产生的一个重要原因。(“散弹式修改”指的是修改一个地方时,要在其对应的许多位置进行相关的修改工作,极易漏掉应修改项)。

六.结束语:

本案例在题材,程序结构设计,以及代码实现上基本满足设计之前对案例的要求。

当然,由于水平和时间原因,案例中难免会有不妥之处。我将在教学和学习中不断完善教学案例,提高教学水平,为计算机人才培养做一点贡献。

参考文献:

1.。. ’

2.。.

3.阎宏。与模式。电子工业出版社,

4.孙卫琴。面向对象编程。电子工业出版社。

c++面向对象程序设计大作业

《面向对象程序设计》 大作业 题目学生成绩管理系统 学院 专业 班级 姓名 指导教师 2015 年11 月11 日

目录 一大作业的目的 (1) 二大作业的内容............................ . .. (2) 三大作业的要求与数据............... ...... . (3) 四大作业应完成的工作.................. . (4) 五总体设计(包含几大功能模块)........... . (5) 六详细设计(各功能模块的具体实现算法——流程图) (6) 七调试分析(包含各模块的测试用例,及测试结果) (7) 八总结 (8) 十参考资料 (9)

一大作业的目的 《面向对象程序设计》是一门实践性很强的课程,通过大作业不仅可以全方位检验学生知识掌握程度和综合能力,而且还可以进一步加深、巩固所学课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。更好地掌握运用C++语言独立地编写、调试应用程序和进行其它相关设计的技能。 二大作业的内容 对学生信息(包括学号、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出.将学生的成绩信息进行记录,信息内容包含:(1)学生的学号(2)学生的姓名(3)学生的成绩。假设,现收集到了一个班学生的所有成绩信息,要求用C语言编写一个简单的成绩管理系统,可进行录入、查询、修改和浏览等功能。学习相关开发工具和应用软件,熟悉系统建设过程。 三大作业的要求与数据 1、用C++语言实现系统; 2、对学生信息(包括学号、姓名、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出. 3、学生信息包括:其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功能: (1) 每一条记录包括一个学生的学号、姓名、3门课成绩 (2)、成绩信息录入功能:(成绩信息用文件保存,可以一次完成若干条记录 的输入。) (3)、成绩信息显示浏览功能:完成全部学生记录的显示。 (4)、查询功能:完成按姓名查找学生记录,并显示。 (5)成绩信息的删除:按学号进行删除某学生的成绩. (6)、排序功能:按学生平均成绩进行排序。 (7)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!

面向对象程序设计实验指导书讲解

面向对象程序设计实验指导书 实验一、C++开发环境应用入门(2学时)(选做) 1、实验目的 (1)了解C++开发工具的特点 (2)熟悉C++开发环境 (3)学习用C++编写标准的C++程序 2、实验任务 使用C++来建立一个非图形化的标准C++程序,编译、运行下例程序: #include void main(void) { cout<<”Hello!\n”; cout<<”Welcome to C++!\n”; } 3、实验步骤 (1)启动Visual C++或C++Builder开发环境 (2)创建一个项目 A)单击File菜单中的New选项,显示示新建对话框 B)选择Console Wizard(C++Builder) 或Win32 Console Application(VC++)。 C)选择项目所在路径及输入项目的名称 D)依次按‘下一步’直至完成为止。 (3)至此,C++Builder已经建立好工程相关的文件(请不要随意更改其自动生成的文件),在生成的main函数中写入必要的内容即可。 (4)对于VC,请继续下面的步骤: A)建立C++源程序文件 a)选选菜单命令Project|Add to Project|New,弹出New对话框 b)在New对话框的Files选项卡中选择C++ Source File,并填入文件名称,单击OK按钮,完成 新建C++源程序文件 B)编辑C++源程序文件 a)在文件编辑窗口中输入代码 b)完成后,选择菜单File|Save保存这个文件 C)建立并运行可执行程序 a)选择菜单命令Build,建立可执行程序 如果你正确输入了源程序,此时便成功地生成了可执行程序。 如果程序有语法错误,则屏幕下方的状态窗口中会显示错误信息,根据这些错误信息对源 程序进行修改后,重新选择菜单命令Build建立可执行程序。 b)选择菜单命令Run,运行程序,观察屏幕显示内容。 D)关闭工作空间 选择菜单命令File|Colse WorkSpace关闭工作空间。

【经典案例】企业组织结构设计案例及分析

【经典案例】企业组织结构设计案例及分析 引言: 在企业迅猛发展的当今时代,企业规模迅速扩大,员工岗位冗杂,公司组织结构的问题复杂也就显现出来了,并阻碍了公司的进一步发展。企业如何设计科学合理的组织结构成为了企业管理人员心头的一块大石头。基于此,设计符合企业发展,能够改善企业内部的管理现状,为公司发展提供良好的内部组织结构的方案就显得很紧迫了。本文是人力资源专家——华恒智信为某企业设计组织架构方案的项目纪实。 客户评价 对专家委员会的管理模式进行改革,是我们目前非常关注的问 题。华恒智信专家团队为我们提出的“投资委员会+项目专家办 公室”的管理模式,可以有效地配置专家资源,并通过及时的、 专业的专家投资评估与审查,为我们做出投资决策提供帮助。 ——Q开发投资有限公司汪总经理 【客户行业】:投资公司 【问题类型】:组织结构 【客户背景及现状问题】 Q开发投资有限公司是经市人民政府批准,于2001年4月设立的市直属综

合性投资公司。主要承担政府重大建设项目的投融资;接受政府授权持有并运作国有股权;自主开展资本运营,促进资产跨地区、跨行业、跨部门、跨所有制的流动和重组。 Q开发投资有限公司采用集团公司的组织形式,公司目前有6各部门——分别是研究发展部、资本运营部、投资开发部、财务融资部、人力资源部和总经理工作部;公司有3个子公司,现有人员27人。 目前,Q开发投资公司的一把手是新上任的汪总经理,他进入企业后的第一件事就是了解企业内部管理的现状,发现企业当前的优势与劣势,并借助外部第三方专业咨询公司的力量,对组织构架及管控模式进行初步调研与分析后,提出了组织构架新的改进方案。 华恒智信专家团队在对Q公司的临时组织——项目专家组和专家咨询委员会的组织职能与管控模式进行分析时,发现这两个临时组织的内部管理存在着以下的问题。 1.项目专家组和专家咨询委员会职责模糊,界线不清 Q开发投资公司的专家委员会由两个临时的部门构成——项目专家组和专家咨询委员会,两个临时组织的职责范围模糊、界限不清,经常会造成两个部门工作相互重叠的现象。 2.临时性委员会无固定人员维持工作 该开发投资公司总是在出现运营投资项目时,才临时召集专家 组成员组成专家组或咨询专家组参与项目的决策,这些专家组成员并非公司的固定人员,都是公司从外部聘用的兼职专家。因而,当出现投资项目时,临时召集外部专家的工作一直由总经理工作部临时代理。但是随着项目量的逐渐增多,负

2016年电大面向对象程序设计技术-作业题

2015秋季学期计算机科学与技术本科 《面向对象程序设计技术》作业题 (在电大在线该课程讨论区跟帖提交,注明姓名和学号以记录成绩)选择题 1.可以在本类及派生类的成员函数中进行访问的访问控制修饰符是(B) A.private B.protected C.public 2.在IDE中将编程项目采用多文件结构下,类的定义一般放在(A) A.头文件 B.程序文件 C.主程序文件 3.内联成员函数在类外定义时要将其和类定义一起放在(A) A.头文件 B.程序文件 C.主程序文件 4.下面哪个内存区域是C++中的运行时动态内存分配区域?( D ) A.代码区 B.栈区 C.数据区 D.堆区 5.对象作为函数参数使用时,一般使用(A)形式 A.引用 B.指针 C.对象拷贝

6.同类的多个不同对象的数据成员值各有不同,但不同对象可以共享类的成员函数代码, 实际调用成员函数时,是通过(B )来区分不同对象的。 A.显式给出不同对象不同地址 B.隐含的this指针 C.引用 7.下面哪一种情况不会自动调用拷贝构造函数。(E) A.用一个对象初始化另一个对象时 B.当一个对象作为值传递给一个函数时 C.当一个对象作为值从一个函数返回之前,该对象被拷贝到栈区 D.函数调用结束后,栈区中的返回对象拷贝给主调程序的对象 E.建立指向对象的指针并初始化指针值时 8.下列哪些对象的数据成员类型可以不用初始化表的方式进行初始化(D) A.常量数据成员 B.引用数据成员 C.类中对象成员 D.一般数据成员 9.下列哪一种类设计一般无需在类中设计静态数据成员以使建立的多个对象共享静态数 据数据成员。( D ) A.一个链表类的头指针和尾指针 B.一个学生类中用于保存建立了多少个学生对象的计数器 C.银行帐号类中的年利率 D.一般只用于建立一个对象的类 10.一个类中的公有(public)性质的静态数据成员,以下哪一种访问方式是错误的(D) A.对象名.静态数据成员名 B.指向对象的指针—>静态数据成员名 C.类名::静态数据成员名 D.类名.静态数据成员名 11.下列哪一个运算符不能够被类所重载(E) A.“.”成员访问运算符 B.“*”成员指针访问运算符 C.“::”域运算符 D.“?:”条件运算符 E.“=”赋值运算符

第3章 面向对象程序设计基础

第3章面向对象程序设计基础

第3章面向对象程序设计基础 【1】什么是Java程序使用的类?什么是类库? 答:类是将一类事物的特性描述出来,然后如果用这个类来定义对象,则该对象就拥有了这个类所描述的所有特性。 在Java系统中,系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合称为一个包,所有包合称为类库。 【2】如何定义方法?在面向对象程序设计中方法有什么作用? 答:方法的定义由两部分组成:方法声明和方法体。 方法的声明如下: 返回值类型方法名(参数类型形式参数1,参数类型形式参数2…){ 程序代码; 返回值; } 在面向对象程序设计中,方法的作用是完成对类和对象属性操作。 【3】简述构造方法的功能和特点。下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。 void Student(int no,String name) {

studentNo=no; studentName=name; return no; } 答:构造方法的功能是:构造方法是一个特殊的方法,主要用于初始化新创建的对象; 特点:构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。 错误之处:(1)构造方法Student()前不能加void,(2)不能用return语句,(3)类名Student 首字母S改成小写s. 【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。编写Java程序创建student类的对象及测试其方法的功能。 class Student { String id; String name; String sex; int age; void talk(){

《面向对象程序设计》实验指导书

《面向对象程序设计》课程实验指导书

实验一 Java开发环境的安装与配置 一、实验目的: 1. 掌握JDK、Eclipse的安装步骤。 2. 理解环境变量PATH, CLASSPATH的作用,以及Eclipse的配置。 3. 熟悉Eclipse的编辑、编译与调试环境,编写简单的Application程序 编译执行并完成调试。 二、实验内容: 熟悉JDK的安装和配置,学习如何编写并运行简单的Application程序 (能输出一条简单的问候信息); 三、实验要求: 1. 能正确地安装JDK 2. 熟悉环境变量PATH, CLASSPATH设置方法,熟悉编辑环境 3. 调试程序、编译,运行后得到正确的结果 四、实验步骤: 1.从https://www.360docs.net/doc/0a4421597.html,/technetwork/java/index.html上下载最新版本的JDK,并安装。 2.设置环境变量PATH, CLASSPATH, 使得Java程序能正确编译和执行。 3.在Eclipse环境下编写一个HelloWorld.java程序, (1)在主方法static public void main(String[ ] args)中调用System. out.println()方法,使程序输出一条问候信息; (2) 编译运行程序,观察运行情况和输出结果。(使用JDK环境,调用 javac.exe和java.exe编译和执行程序)

实验二 Java语言基础 一、实验目的: 熟悉Java基本语法,基本数据类型,各种运算符及表达式的使用,掌握运算符优先级,熟悉使用Java的选择语句,循环语句。 二、实验内容: 1.编写Java Application程序,输出1900年到2000年之间的所有润年。 (闰年的判断条件:能被4整除且不能被100整除,或能被400整除); 2.金字塔:Pyramid.java 在屏幕上显示一个由星型符号“*”组成的金字塔图案,示例如下: * *** ***** ******* 要求:金字塔高度h,可以由用户设置。 三、实验要求: 1. 正确使用Java语言的选择语句,循环语句; 2. 调试程序、编译,运行后得到正确的结果 3.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提成 示,并给出解决办法。 四、实验步骤: 1.编写主类; 2.在static public void main(String[ ] args)方法中加入实现要求功能 的代码,主要步骤如下: (第一题)从1900到2000循环,按照闰年的判断条件是则输出1900年到2000年之间的所有润年。 (第二题)允许用户设置金字塔高度。 4. 编译运行程序,观察输出结果是否正确。

组织结构设计实训案例

组织结构设计实训案例任务设计组织结构 知识目标 了解影响企业组织结构的主要因素和常见的组织结构类型 熟悉企业组织结构设计的原则 掌握企业组织结构设计的程序、方法和内容 技能目标 能根据组织的职能设计企业组织结构 任务引入 一整天的公司高层例会结束后,D公司S总经理不禁陷入沉思。 例会由S总经理主持、几位副总经理参加。原本他就想商谈一下公司今后的发展方向问题,不过会上的意见争执却出乎自己的预料。很明显,几位高层领导在对公司所面临的主要问题和下一步如何发展的认识上,存在着明显的分歧。 6年来,D公司由初创时的几个人、1 500万元资产、单一开发房地产的公司,发展到今天的1 300余人、5.8亿元资产、以房地产业为主,集娱乐、餐饮、咨询、汽车维护、百货零售等业务于一体的多元化实业公司,已经成为本市乃至周边地区较有竞争实力和有知名度的企业。 作为公司创业以来一直担任主帅的S总经理在成功的喜悦与憧憬中,更多了一层隐忧。在今天的高层例会上,他在发言时也是这么讲的:“公司成立已经6年了,在过去的几年里,经过全体员工努力奋斗与拼搏,公司取得了很大的发展。现在回过头来看,过去的路子基本上是正确的。当然也应该承认,公司现在面临着许多新问题:一是企业规模较大,组织管理中管理信息沟通不及时,各部门协调不力;二是市场变化快,我们过去先入为主的优势已经 逐渐消失,且主业、副业市场竞争都渐趋激烈;三是我们原本的战略发展定位是多元化,在坚持主业的同时,积极向外扩张,寻找新的发展空间,应该如何坚持这一定位?”面对新的形势,就公司未来的走向和目前的主要问题,会上各位高层领导都谈了自己的想法。 管理科班出身、主管公司经营与发展的L副总经理在会上说:“公司的成绩只能说明过去,面对新的局面必须有新的思路。公司成长到今天,人员在膨胀,组织层级过多,部门数量增加,这就在组织管理上出现了阻隔。例如,总公司下设5个分公司,即综合娱乐中心(下有戏水、餐饮、健身、保龄球、滑冰等项目)、房地产开发公司、装修公司、汽车维修公司和物业管理公司。各部门都自成体系,公司管理层次过多,如总公司有3级,各分公司又各有3级以上管理层,最为突出的是娱乐中心的高、中、低管理层次竟达7级,且专业管理机构存在重复设置现象。总公司有人力资源开发部,而下属公司也相应设置人力资源开发部,职能重叠,管理混乱。管理效率和人员效率低下,这从根本上导致了管理成本加大,组织效率下降,这是任何一个公司的发展大忌。从组织管理理论的角度看,一个企业发展到1 000人左右,就应以制度管理代替‘人治',我公司可以说正是处于这一管理制度变革的关口。我们公司业务种类多、市场面广、跨行业的管理具有复杂性和业务多元化的特点,现有的直线职能制组织结构已不能适应公司的发展,所以进行组织变革是必然的,问题在于我们应该构建一种什么样的组织机构以适应企业发展需要。”

面向对象程序设计(答案)

学号:姓名: 第三章面向对象程序设计作业 一、判断题 1、一个Java源程序可有多个类,但只仅有一个public类,而且程序名与public类名相同。对 2、如果类A和类B在同一个包中,则除了私有成员外,类A可以访问类B中所有的成员。对 3、接口中的成员变量全部为常量,方法为抽象方法。对 4、抽象类可以有构造方法,可以直接实例化。错 5、对static方法的调用可以不需要类实例。对 6、包含抽象方法的类一定是抽象类。对 7、方法中的形参可以和方法所属类的属性同名。对 8、接口无构造器,不能有实例,也不能定义常量。错 9、类的实例对象的生命周括实例对象的创建、使用、废弃、垃圾的回收。对 10、Java应用程序的入口main方法只有一种定义法。对 二、选择题 1、下列答案正确的是(A ) A) 在同一个Java源文件中可以包含多个类,只能有一个被声明为public B) 在同一个Java源文件中只能包含一个类,并被声明为public C) 在同一个Java源文件中可以包含多个类,都可以被声明为public D) 在同一个Java源文件中可以包含多个类,只能有一个被声明为default 2、Java实现动态多态性是通过( B )实现的。 A) 重载B) 覆盖 C) 接口D) 抽象类 3、下列哪一个是正确的方法重载描述( A ) A) 重载方法的参数类型必须不同 B) 重载方法的参数名称必须不同 C) 返回值类型必须不同 D) 修饰词必须不同 4、final关键字不可以用来修饰( D ) A) 类B) 成员方法 C) 域D) 接口 5、接口的所有成员方法都具有( B )属性 A) private, final B) public, abstract C) static, protected D) static 6、Java的封装性是通过(A )实现的 A) 访问控制B) 设计内部类 C) 静态域和静态方法D) 包 7、下列接口或类不属于.*包的是( D ) A) Collection B)Vector C) Map D) Integer 8、下述哪一组方法,是一个类中方法重载的正确写法( A ) A) int addValue( int a, int b ){return a+b;}

C++面向对象程序设计实验报告

C++面向对象程序设计实验报告 学院:信息科学与技术学院 班级:卓越电子1201 姓名:刘强 学号:120910115 实验二 C++面向过程程序设计 实验目的 掌握函数声明、定义和使用的方法 掌握函数递归调用的方法 实验内容 1、编写一个函数,求数列运算中从n个不同的数中取r个数的所有选择的个数,要求如下:主程序中设计一个循环,不断从输入接收n和r的值,计算结果并输出,当用户输入0 0时,程序结束; 能检查输入数据的合法性,要求n>=1并且n>=r; 能得到正确结果。 输入:5 3输出:10 输入:10 20;输出:Input Invalid !; 输入:-1 4;输出:Input Invalid!; 步骤: 利用一个函数fn(int n)计算n!, 利用另一个函数Cnr(int n, int r)计算Cnr,在该函数中调用fn(), 程序代码: #include int fn(int n) { int s=1; for(int i=1;i<=n;i++) { s=s*i; } cout<<"n!="<

int Cnr(int n,int r) { cout<<"Please input two numbers:"<>n>>r; if(n==0&&r==0) { cout<<"Programme shutdown."<=1&&n>=r) { int a; int b; int c; int d; a=fn(n); b=fn(r); c=fn(n-r); d=a/(b*c); cout<

面向对象程序设计实验报告完整版

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 综合实验报告 面向对象程序设计 专业名称: 物联网工程 ___班级: _____ 级2班__ ___________姓名: 你哥哥 学号: 02051928 信息科学与工程学院 二零一三年七月

第一题: (1) 1.1题目概述 (1) 1.2设计思路 (2) 1.3设计说明与调试分析 (2) 1.4编码实现 (2) 1.5程序运行结果 (5) 1.6设计心得 (5) 第二题: (6) 2.1题目概述 (6) 2.2设计思路 (7) 2.3设计说明与调试分析 (7) 2.4编码实现 (7) 2.5程序运行结果 (11) 2.6设计心得 (11)

第一题: 1.1题目概述 用抽象类设计计算二维平面图形图形面积的程序, 在基类TDshape中设计纯虚函数area()和printName(), area()用于计算几何图形的面积, printName()用于打印输出几何图形的类名, 如Triangle类的对象就打印输出”Triangle”。每个具体形状的类则从抽象类TDshape派生, 各自需要定义其它独有的数据成员和成员函数, 而且定义area()和printName()的具体实现代码, 如图所示。 要求编写以TDshape为接口的函数, 借以访问具体类如

Triangle和Rectangle类的成员函数area(), printName ()。1.2设计思路 由简到繁, 逐步实现。 1.3设计说明与调试分析 编写基类TDshape->编写虚函数->编写继承类Triangle ->实例化TDshape和Triangle ->调用基类虚函数实现调用继承类相应函数->同样的方式处理继承类Rectangle. 1.4编码实现 #include using namespace std; class TDshape{ public: virtual void area()=0; virtual void printName()=0; }; class Triangle:public TDshape{ private: double width,height;

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

面向对象分析/设计课程大作业 银行业务处理系统 13级软件学院测试班 1367004029 曾丹 1.需求分析 随着社会经济的发展,信息化程度的不断深入,银行的传统业务己愈来愈不能满足银行客户的需要。 现今,人们的金融意识、科技意识己经有了很大的提高,在紧张忙碌的生活中,己越来越来不习惯每月奔忙于各银行营业柜台之问去排队缴各种各样的费用了;同时,各种经营单位如电信、移动、供电、煤气、自来水、证券等等一是为了提高服务质量、方便客户,二是为了减轻自己日趋繁重的工作量,纷纷委托银行为其开展代收代付业务:同时,随着我国加入世贸组织的日益临近,我国的银行业将面临更加激烈的同业竞争,如何提供更多的金融产品和更优质的服务,如

何吸引更多的客户,如何利用计算机技术加强银行帐户信息管理、进行银行业务再造,提高银行的工作效率和业务竟争能力是摆在各家银行面前的一个迫切需要解诀的问题。 近几年来,各商业银行加快了与社会各业的合作,利用自身的网点优势和业务特点,为其提供各种高效、快捷的代收代付业务,也就是中间代理业务,目前以与广大人民群众生活密切相关的各项缴费业务如水电费、电话费、手机费等代收业务为主,这些业务开展方式多种多样,但一般都离不开计算机的高效管理支持。 随着代理业务不断发展,业务品种越来越多,各项业务做法互有差异,这就对银行的电子化水平和相应的管理水平提出了更高的要求。如何利用电子化的手段构建一个高效统一的、通用灵活的系统来管理各种各样的业务,是每个商业银行所要研究的课题。支持决策系统的,需要在数据库的基础上,进行联机分析处理,每次处理的数据量大,响应时间长。 特别是银行每天要处理大量的存取款事件,做好存取款是银行工作重要的环节,然而要有效处理必须要有良好的程序和数据管理系统来建立一个良好的软件系统来实现快速、有效、准确、安全的处理银行事物。 主要用于银行的储蓄卡管理系统,它可以帮助我们有效、准确、并且高效实现的完成存取事件。此系统操作方便效率、安全性高,只要客户开户并设定好密码就可以轻松的实现存取款。 系统实现的主要有储蓄卡开户管理、存取款管理、用户查询历史数据显示、注销等功能。 储蓄卡开户管理模块:卡号、姓名、开户金额、身份证号、地址、电话、密码、确认密码和保存组成。(开户金额必须是数字,密码和确认密码必须一样是六位数字) *注销模块:一旦注销该卡号就不存在且余额提醒你取出。 通过该银行账户管理系统地运行,使办公人员可以轻松快捷的完成对账户管理的任务,提高账目管理效率,使银行的账目管理工作系统化、规范化、自动化。 该银行帐目管理信息系统,优点是设计过程思路清晰、模块划分简洁,设计各阶段分工明确。经过实践证明,该划分是合理的,极大得提高了本系统的实现。

面向对象程序设计完整版

Object- Orien ted Programmi ng C++ 主讲成长生 东华大学计算机科学与技术学院

第一章概述 § 1.1 面向对象程序设计的基本思想 C++是基于C语言发展的,又冲破C语言局限的面向对象的程序设计语言。它与Java 语言都作为当前计算机科学的主流语言, 越来越受到用户的欢迎。 要弄清楚什么是面向对象的程序设计, 首先了解和回顾传统的 ( Pascal(或C))结构化程序设计方法及其设计思想、程序结构及特点。SP(Structure Programming)是60 年代诞生的针对当时爆发的所谓”软件危机” , 为此发展形成了现代软件工程学的基础。 SP的总的设计思想是: . 自顶向下、层次化 . 逐步求精、精细化 程序结构是按功能划分基本模块的树型结构, 使模块间的关系尽可能简单独立。因此SP的程序的基本特点是: . 按层次组织模块(战略上划分战役) . 每一模块只有一个入口, 一个出口 ?代码和数据分离(程序=数据结构+算法) 归纳得到: SP 把数据和过程(代码、函数)分离为相互独立的实体, 用数据代表问题空间中的客体借以表示实际问题中的信 息; 程序代码则用来处理加工这些数据。程序员在编程时 必须时刻考虑所要处理的数据结构和类型。对不同的数据格式即使要作同样

的处理计算, 或者要对相同的数据格式作不同的处理都必须编写不同的程序(如两个整型数和两个浮点数相加)。这样的编程方法,即传统的SP方法设计出来的程序或系统其可重用的成分很少。其次把数据和代码作为不同的分离实体时, 总存在着用错误的数据调用正确的程序模块, 或用正确的数据调用错误的程序模块的危险, 从而使数据与程序始终保持兼容, 已成为程序员 的一个沉重的负担。在开发一个大型软件课题中, 当工程进入到 后期若用户改变了方案要求, 很容易使技术人员的前期工作受到摧毁性的打击,使其前功尽弃。为克服以上的弊端或者该SP方法难以控制处理的矛盾而产生了面向对象程序设计方法, 即Object —Oriented Programming ----------- OOP从二十世纪六十年代提出对象 的雏形, 到七十年代美国国防部的专用语言Ada 语言, 直到当前国际上流行的高品味的Java 和C++(Tc++,Balandc++ 及Vc++), , 应该讲OOP方法与技术吸取了SP的一切优点,同时又正视和顺应现实世界由物质和意识二部分组成。映射到面向对象的解空间就是: 具体事物—对象; 抽象概念—类。 OOP的基本原理是用问题领域的模型来模拟大千世界,从而设计出尽可能直接、自然地表示问题求解方法的软件, 这样的软件由对象组成, 而对象则是完整反映客观世界事物具有不可分割的静态属性(”数据结构” )与动态行为(”方法” )的。而且它们是既有联系又

组织结构管理案例分析

晾衣理论:先抓住衣领 某企业组织架构与人事调整案例 《赢周刊》柏明顿人力资源管理咨询公司郭晓亮 企业组织架构调整是一项理论与实践高度统一的工作,对于企业组织架构调整的一般原理和原则,大家都比较熟悉。但是对于某一具体企业来说,如何运用这些原理和原则?理论如何与实践相结合,以设计出适合自己企业的组织架构?在组织架构调整过程中,应注意哪些事项,以保证组织架构的顺利运作?以下我们(柏明顿公司咨询顾问师)帮助某制造企业客户进行组织架构调整的案例: 背景: 位于内地的某机械公司是一家传统国有企业,公司的规模和技术处于国内领先地位,但由于经营不善,2000年公司被迫进行了破产重组,任命了王总担任新的公司董事长兼总经理。王总上任后一方面加强了公司的市场营销工作,另一方面也进行了一些适应市场的内部管理改革,经营状况逐渐好转。2002年,公司顺利实现赢利,并取得了较快发展速度,到2004年底,公司员工1800多人,年销售额5亿多元,利润3600万元。 随着公司的发展,王总意识到一方面市场竞争越来越激烈,特别是外资企业越来越重视中国市场,使得公司的技术优势荡然无存,反而变成了劣势;另一方面随着国家整个制造业的快速发展,对机械的需求也必将大量增加,公司同时又面临着一个快速发展的机遇期。 在内部管理方面,公司虽然经过了资产重组和减员整顿,但由于公司的组织架构没有进行大的调整,也没有进行科学的定岗定编,因此仍然存在着机构林立、人浮于事、效率低下的情况,加上员工绝大部分还是原来留下来的,员工观念普遍跟不上企业发展要求。 根据对公司情况的分析,王总决定从内部管理抓起,首先对公司的组织架构进行重新设计和调整。考虑到公司内部缺乏专业的人力资源管理人才,而组织架构的调整又涉及到复杂的人事变动和利益调整,公司决定聘请专业顾问来指导进行。2005年初,公司聘请柏明顿公司咨询顾问进行该项目的咨询,对公司的组织架构体系进行了重新设计和调整。

面向对象程序设计作业参考答案

习题一 5、分析下面程序运行的结果。 # using namespace std; int main() { cout<<”This”<<”is”; cout<<”a”<<”C++”; cout<<”program.”< using namespace std; int main() { int a,b,c; a = 10; b = 23; c = a + b; cout<<'a + b ="; cout< using namespace std; int main() { int a, b; a = b = 0; int c = a + b; cout<<”a + b =”<

9、输入以下程序,进行编译,观察编译情况,如果有错误,请修改程序,在进行编译,直到没有错误,然后进行连接和运行,分析运行结果。 修改后的程序如下: #include using namespace std; int add(int x,int y); int main() { int a = 0, b = 0; int c = add(a,b); cout<<" a + b ="<

面向对象程序设计基本概念

面向对象程序设计基本概念 面向对象设计是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。 对象:对象是要研究的任何事物。从一本书到一家图书馆,单的整数到整数列庞大的数据库、极其复杂的自动化工厂、航天飞机都可看作对象,它不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体。从程序设计者来看,对象是一个程序模块,从用户来看,对象为他们提供所希望的行为。 类:类是对象的模板。即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,形成类层次结构。 消息:消息是对象之间进行通信的一种规格说明。一般它由三部分组成:接收消息的对象、消息名及实际变元。 面向对象主要特征: 封装性:封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。 继承性:继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继承其它类的全部描述,同时可修改和扩充。继承具有传递性。继承分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。 多态性:对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。例如:Print消息被发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件而调用的打印方法会完全不同。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在OOPL中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性。

组织结构设计案例分析报告

组织结构分析: 日产汽车起死回生和华为的危机感 (职业经理人十四期) 第七小组

组织结构设计案例分析: 如何设计组织结构 一、企业的大树模型 随着企业规模和管理幅度的不断扩大,企业有必要重新整合外部资源,系 统性地解决企业所面临的和将要面临的问题,由此构建了企业的大树模型。 其中,企业文化和发展战略是首要性的问题,它们犹如大树的根,决定了企 业能否持续健康地成长。由于企业文化可以为战略实施提供行为导向,企业理念 文化具有独特的激励功能,企业文化具有良好的约束功能,因此企业文化日益成 为战略实施的重要手段。企业文化必须与企业战略相互适应和协调。从战略实施 的角度来看,企业文化既要为实施企业战略服务,又可能成为制约企业战略实施 的因素。当企业新的战略要求企业文化与之相配合时,企业原有文化的变革速度 却往往较慢,很难马上对新战略做出反应,这时企业原有文化就可能成为实施企 业新战略的阻力,因此在战略管理过程中,企业部新旧文化更替和协调是战略 实施获得成功的保证。 在企业的具体问题中,组织结构是第一步要考虑的,它犹如大树的躯干,决 定了企业能否枝繁叶茂。营销、研发、生产、人力、总务、财务等共同构成了大树 的主枝,同时,将主枝间衔接起来的核心流程的流向又决定于组织结构。以做事 为主线,以各部门、科室、班组、员工为分枝,以岗位责任制(包含岗位工作指引)、标准作业书、操作规程、技术标准和管理办法等为叶。 从大树发展的角度来说,若根不够深、躯干不够粗,再好的树叶也会枯萎, 更不要说供应能量给大树了,那么,大树就不能正常生长。企业就好比一棵大树, 不断从土壤中汲取养分,经过严寒酷暑的考验,茁壮成长。 二、组织结构设计原则: 1、拔高原则 在为企业进行组织结构的重新设计时,必须遵循拔高原则,即整体设计应紧 扣企业的发展战略,充分考虑企业未来所要从事的行业、规模、技术以及人力资 源配置等,为企业提供一个几年相对稳定且实用的平台。

面向对象程序设计试卷作业答案

《面向对象程序设计》作业答案 作业一: 编写程序,将从键盘读入的所有大小写字母写入名为a.txt的文件中(遇EOF结束)。(本题总分10分,fopen函数使用妥当4分,读入过程正确4分,关闭文件2分。程序结构完整,有不妥之处,酌情扣分。) #include main ( ) { FILE *fptr; fptr = fopen("a.txt","w"); if (fptr==NULL) return 0; char a; a=getchar( ); while(a!=EOF ) { if(a>=’a’ && a<=’z’|| a>=’A’ && a<=’Z’) fputc(a,fptr); a = getchar(); } fclose(fptr); return 0; } 作业二 定义一个矩形类Rectangle,并在main函数中用它声明一个矩形对象,然后利用接口 设置该矩形对象的长和宽、计算面积并输出。(本题总分10分,类结构2分,设置矩阵对象的长与高各1分,计算面积函数2分,输出函数2分,主函数2分。程序结构完整,有不妥之处,酌情扣分。) #include #include class Rectangle { public: int getArea(); void setWidth(int w); void setLength(int l); private: int Length; int Width;

}; int Rectangle::getArea() { return Length*Width; } void Rectangle::setLength(int l) { Length=l; } void Rectangle::setWidth(int w) { Width=w; } main() { int len,wid; Rectangle r1; cout<<"Input the Rectangle's Information"<>len; cout<<"Width:"<>wid; r1.setLength(len); r1.setWidth(wid); cout<<"Rectangle's Area:"< #include struct Node { int item; struct Node *next; };

面向对象程序设计实验

实验一C++ 基础 1.1 实验目的 1.了解并熟悉开发环境,学会调试程序; 2.熟悉 C++ 中简单的标准输入输出函数的使用方法; 3.理解 const 修饰符的作用并学会应用; 4.理解内联函数的优缺点并学会其使用场合; 5.理解并学会函数重载; 6.理解并熟练掌握使用 new 和 delete 来分配内存; 7.理解并熟练掌握引用的使用方法。 1.2 实验内容 1.2.1 程序阅读 1.理解下面的程序并运行,然后回答问题。 #include int max_def(int x, int y) { return (x>y?x:y); } int max_def(int x, int y, int z) { int temp = 0; return (temp=(x>y?x:y))>z?temp:z; } double max_def(double x, double y) { return (x>y?x:y); } int main()

int x1 = 0; int x2 = 0; double di = 0.0; double d2 = 0.0; x1 = max_def(5,6); x2 = max_def(2,3,4); di = max_def(2.1,5.6); d2 = max_def(12.3,3.4,7.8); -------------------------------- cout

相关文档
最新文档