《面向对象程序设计课程设计》教学大纲
课程编号:404921025
课程中文名称:面向对象程序设计课程设计
课程英文名称:Design of Object-Oriented Programming( C++)
课程类别:实践教学
周数:2
学分:2
适用专业:网络工程
一、课程设计的性质、目的
全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法。正确理解掌握C++面向对象程序设计的基本特性:类、对象、继承与派生、多态、虚函数、模板、流类库等。遵循软件过程的各个环节进行系统分析、设计、实现、集成、测试,并相应给出软件规格说明书等制品。了解当前常用的软件开发工具(Visual C++),要求熟练掌握基于MFC的程序设计,培养解决实际问题的能力。
二、课程设计基本要求
(1) 利用面向对象的方法对业务进行系统分析,形成功能规格说明书;
(2) 对各个功能模块分析设计抽象并实现对象类;
(3) 所有数据用文件存储,并通过流类与程序交换;
(4) 用户界面用基于MFC的设计,最后完成一个可运行的程序
(5) 五人一个小组,选择一个题目,要求发挥团队合作精神,分工协助
(6) 设计完成应提交的制品
功能规格说明书(流程)(打印文档)
分析设计说明书(类)(打印文档)
代码实现说明(选择)(打印文档)
分工协作说明(具体说明每个人所做的工作)(打印文档)
可执行程序
三、课程设计教学内容
根据教材《数据结构题集(C语言版)》(严蔚敏、吴伟民主编)选择课程设计题目,或选择下列与实际应用紧密结合的较综合性的题目,要求通过设计,在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解和
综合运用。以下列出一些可供选择的题目:
参考题目1:个人通信录管理
设计一个实用的小型通信录程序,具有查询和删除功能,并且能够打开或修改指定文件及将多个文件组成一个文件。它完全使用类来实现,充分体现了面向对象的程序设计特点。
本程序的参考程序使用双向链表保存数据的底层数据结构,并使用C++标准库提供的list来实现这个链表的结构。由于利用list类,所以实现起来很简单。虽然这种方法超出一般的教材,但只要学习一下标准库,还是容易理解的。C++推荐使用标准库,这也是目前编程的方向,推荐此题目为本课程设计作为选做内容,可以根据实际教学情况决定,目的是使学生熟悉和了解C++的标准库。
参考题目2:人事管理系统
程序应采用面向对象的程序设计方法,程序应提供人员信息的输入、删除、查找、修改等基本功能,并且能够按部门进行各项分类统计,对各部门或整体进行排序和筛选等操作。
参考题目3:工资管理系统
该系统在磁盘上存储了某单位全体职工的工资信息。对于每位职工存储以下信息:职工编号、基本工资、津贴、岗贴、补贴、应发数、个人所得税、应扣数、实发数。个人所得税计算方法设为:工资少于1100元的部分为0,1100—1600元部分为5%,1600—2600部分为10%,2600—3600部分为15%,5600元以上部分为20%。
系统功能要求如下:创建存储职工工资信息的存储文件。添加某职工的工资信息。删除某职工的工资信息。修改某职工的部分工资信息(当月开始增加或减少某些项工资或扣款数变化)。输出指定编号职工的工资信息(查询用)。输出全体职工的工资信息(发工资用)。
参考题目4:图书管理系统
程序采用面向对象的程序设计方法,能够对图书信息进行基本的操作,能够进行模糊查找,并能够按作者、出版社等相关信息的精确查找,能够使用文件进行图书的分类存储,并能够进行维护。
参考题目5:学生成绩管理系统
使用面向对象的程序设计方法,程序的功能主要包括:对学生成绩信息的增、删、查、改等基本功能,并能够按照学号或姓名及成绩等进行排序和筛选,使用文件进行数据的存储和维护,能够按照班级或专业进行分类的管理。
参考题目6:电话号码本管理系统
该系统在磁盘上存储了电话号码序号、姓名、电话号码信息。系统功能要求如下:创建用于存储电话号码信息的存储文件。在函数中用循环结构做一个简单的进行功能选择的菜单
界面。在电话号码本的存储文件中按序号依次增加电话号码。删除电话号码本存储文件中的电话号码。在电话号码本的存储文件中按照姓名查询电话号码。在电话号码本的存储文件中按照姓名修改相应的电话号码。
指导老师还可以根据学生实际掌握程度以及知识技术的更新适当对题目进行调整。(任选三道)
四、课程设计时间分配
五、课程设计考核办法与成绩评定
由指导教师根据学生完成任务的情况、课程设计说明书的质量和课程设计过程中的工作态度等综合打分,成绩评定实行优、良、中、及格和不及格五个等级,从三个方面评定成绩:平时表现;设计报告;程序的演示。不及格者不能得到相应的学分,需重新做课程设计,经指导教师考核及格后,方可取得相应学分。
六、课程设计指导书
[1]郑莉、傅仕星编,《C++面向对象程序设计》,清华大学出版社,2003年9月出版[2]谭浩强编,《C++面向对象程序设计》,清华大学出版社,2005年7月出版
[3]李师贤等译,《C++精髓》,机械工业出版社,2002年8月出版
[4]Davis Chapman,《学用Visual c++ 6.0》,清华大学出版社,2001年7月出版
[5]郑莉、傅仕星编,C++语言面向对象程序设计习题与实验指导,清华大学出版社,2003年9月出版
七、其它说明
1、对系统进行功能需求分析
2、设计合理的数据结构和系统框架
3、编程简练,程序功能齐全,能正确运行
4、说明书、流程图要清楚
5、课题完成后必须按要求提交课程设计报告
执笔人:祁文青审核人:祁文青(盖章)
2009年9 月1 日
第1章习题答案 名词解释 抽象:抽象(Abstract)就是忽略事物中与当前目标无关的非本质特征,而强调与当前目标有关的本质特征,从而找出事物的共性,并把具有共性的事物划为一类。面向对象方法中的抽象,是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。 封装:面向对象方法中的封装就是把将抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。 消息:消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。 填空题 (1) 面向过程的结构化程序设计方法面向对象程序设计方法 (2) 顺序选择循环 (3) 程序=数据结构+算法程序=对象+消息 (4) 过程类 (5) 抽象性封装性继承性多态性 选择题 (1) B (2) C (3) D (4) C (5) D (6) A (7) A (8) B C (9) A D 判断题 (1) t (2) f (3) f (4)f (5) t (6) f (7) f (8) t 简答题 (1) 结构化程序设计方法着眼于系统要实现的功能,从系统的输入和输出出发,分析系统要做哪些事情,进而考虑如何做这些事情,自顶向下地对系统的功能进行分解,来建立系统的功能结构和相应的程序模块结构,有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。 随着程序规模与复杂性的增长,这种面向过程的结构化程序设计方法存在明显的不足之处。首先是数据安全性问题,由于数据被每个模块所共用,因此是不安全的,一旦出错,很难查明原因。其次是可维护性及可重用性差,它把数据结构和算法分离为相互独立的实体,一旦数据结构需要改变时,常常要涉及整个程序,修改工作量极大并容易产生新的错误。每一种相对于老问题的新方法都要带来额外的开销。另外,图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。 (2) 面向对象的程序设计方法中,将程序设计为一组相互协作的对象(Object)而不是一组相互协作的函数。在程序中,属性用数据表示,用来描述对象静态特征;行为用程序代码实现,用来描述对象动态特征。可见,在面向对象的程序设计方法中,对象是数据结构和算法的封装体。对象之间存在各种联系,它们之间通过消息进行通信。程序可表示为: 程序=对象+消息 在面向对象程序设计中,它着重于类的设计。类正是面向对象语言的基本程序模块,通过类的设计,来完成实体的建模任务。类通过一个简单的外部接口,与外界发生关系。一个类中的操作不会处理到另一个类中的数据,这样程序模块的独立性、数据的安全性就有了良好的保障。程序的执行取决于事件发生的顺序,由顺序产生的消息来驱动程序的执行。不必预先确定消息产生的顺序,更符合客观世界的实际。并且面向对象程序设计方法提供了软件重用、解决大问题和复杂问题的有效途径,具有抽象性、封装性、继承性和多态性等特点。
简答题 1、传统的结构化程序设计的优点和缺点是什么? 优点: (1)这种程序设计方法力求算法描述准确。 (2)对每一子过程模块容易进行程序正确性证明。 缺点: (1)这种程序设计方法本质上是面向“过程”的,而“过程”和“操作”又是不稳定和多变的,因此不能直接反映人类求解问题的思路。 (2)程序代码可重用性差。程序中除少数标准库函数外,每设计一个程序时,程序员几乎从零做起。即使重用代码,通常也是通过拷贝或编辑重新生成一份。 (3)维护程序的一致性困难。该种方法将数据与对数据进行处理的程序代码分离。 2、什么是对象? 每个对象都具有属性(Attribute)和方法(Method)这两方面的特征。对象的属性描述了对象的状态和特征,对象的方法说明了对象的行为和功能,并且对象的属性值只应由这个对象的方法来读取和修改,两者结合在一起就构成了对象的完整描述。 3、什么是消息? 在面向对象的程序设计中,由于对象描述了客观实体,它们之间的联系通过对象间的联系来反映。当一个对象需要另外一个对象提供服务时,它向对方发出一个服务请求,而收到请求的对象会响应这个请求并完成指定的服务。这种向对象发出的服务请求就称为消息。4、什么是多态性? 所谓多态性是指当程序中的其他部分发出同样的消息时,按照接收消息对象的不同能够自动执行类中相应的方法。其好处是,用户不必知道某个对象所属的类就可以执行多态行为,从而为程序设计带来更大方便。 5、什么是面向对象的程序设计方法? 这种方法将设计目标从模拟现实世界的行为转向了模拟现实世界中存在的对象及其各自的行为。 在OOP中,将“对象”作为系统中最基本的运行实体,整个程序即由各种不同类型的对象组成,各对象既是一个独立的实体,又可通过消息相互作用,对象中的方法决定要向哪个对象发消息、发什么消息以及收到消息时如何进行处理等。 6、面向对象方法的特点是什么? (1)OOP以“对象”或“数据”为中心。由于对象自然地反映了应用领域的模块性,因此具有相对稳定性,可以被用作一个组件去构成更复杂的应用,又由于对象一般封装的是某一实际需求的各种成分,因此,某一对象的改变对整个系统几乎没有影响。 (2)引入了“类”(class)的概念。类与类以层次结构组织,属于某个类的对象除具有该类所描述的特性外,还具有层次结构中该类上层所有类描述的全部性质,OOP中称这种机制为继承。 (3)OOP方法的模块性与继承性,保证了新的应用程序设计可在原有对象的数据类型和功能的基础上通过重用、扩展和细化来进行,而不必从头做起或复制原有代码,这样,大大减少了重新编写新代码的工作量,同时降低了程序设计过程中出错的可能性,达到了事半功倍的效果。 7、面向对象的程序设计方法与结构化程序设计方法的比较 (1)传统的结构化程序设计方法以过程为中心构造应用程序,数据和处理数据的过程代码是分离的、相互独立的实体,设计出的程序可重用代码少,且当代码量增加时维护数据和代码的一致性困难。
1.绪论 1.1设计的目的与意义 香皂是日常生活中必不可少的洗涤护理用品,香皂质地细腻、去污力强,是肥皂的改良品,本设计就是基于方便、卫生、环保的设计理念进行的设计,而且防护性能好,经济效益高,此设计的市场定位应该适合大部分人群,尤其主要是面向那些较常家居的人群。因此,工艺品包装应当提出具有个性化的包装设计方法,能够使产品在众多同类品牌中脱颖而出,首先从外观上吸引消费者的眼球,进而产生购买欲望;其次通过改良的包装结构,让产品的包装充分循环利用,将具有个性化的设计理念贯穿始终;最后,达到提升品牌形象,扩大产品的销售和影响力的目的并实施具有个性化的包装设计。本设计采用了一层用塑料制成的包装,解决了以前香皂保质期不长,消费者不放心的问题,且卫生、方便。 1.2香皂的市场调查 1963年舒肤佳除菌香皂首次在美国上市(属于宝洁公司的品牌之一),此后畅销于全世界几十个国家和地区。因其显著的抗菌功效,在国际上,舒肤佳品牌已获得多家国际医学专业团体的认可。在中国,舒肤佳的除菌功效也获得了中华医学会的验证,实验证明,舒肤佳能有效去除和抑制可能引起皮肤感染和汗臭的细菌。香皂附加成本增高和国外品牌占主导地位的现状,直接导致了香皂普遍售价高昂这一结果。由于国外香皂注重包装、设计、广告投入、整体策划,使得香皂生产的附加成本增高。因此,其上市产品的价格一开始就定得很高。而且通过调查,我们发现消费者心理注重包装设计精美大方、杀菌止痒功能好、美容功能好、气味清新、泡沫丰富、清洁性好、皂体硬度适中、外观保持性好、品种多样化、广告宣传到位。 2.产品的物性及流通环境的分析 2.1产品的物性 香皂以脂肪酸钠和其他表面活性剂为主要原料,添加品质改良剂和外观改良剂,经过加工成型后制成的产品。香皂的主要成分是脂肪酸钠和表面活性剂,此外还含有1%—1.5%的香精,一般用牛油、羊油和椰子油为原料,制皂前经过精炼、脱色、脱臭等精制处理。香皂使用时会沾上水,进而水分被香皂吸收。使用后,香皂里面的水分要挥发,但由于进入香皂的水分分布不均以及香皂各部分接触空气的程度不同,会导致水分的挥发程度不同,进而致使香皂出现裂痕。如果长期存放,香皂原料中含有的不饱和脂肪酸会被氧、光、微生物等氧化,有时会出现酸败现象,香皂中的水分也会散失,影响使用效果。舒肤佳香皂含有抗菌活性成份迪保肤,在清洗过程中能有效去除皮肤表面的暂留微生物。清洗后,舒肤佳留在皮肤上的抗菌活性成分迪保肤能有效抑制皮肤表面细菌的再生。
1 什么是面向对象程序设计,它与传统的结构式程序有什么不同。 面向对象程序设计是一种适用于设计、开发各类软件的范型。它是将软件看成是一个由对象组成的社会:这些对象具有足够的智能,能理解从其他对象接受的信息,并以适当的行为作出响应;允许低层对象从高层对象继承属性和行为。通过这样的设计思想和方法,将所模拟的现实世界中的事物直接映射到软件系统的解空间。 与传统的结构式程序设计相比,面向对象程序设计吸取了结构式程序设计的一切优点(自顶向下、逐步求精的设计原则)。而二者之间的最大差别表现在: ·面向对象程序采用数据抽象和信息隐藏技术使组成类的数据和操作是不可分割的,避免了结构式程序由于数据和过程分离引起的弊病。 · 面向对象程序是由类定义、对象(类实例)和对象之间的动态联系组成的。而结构式程序是由结构化的数据、过程的定义以及调用过程处理相应的数据组成的 2 用面向对象方法建立模型的思维过程是怎样的。 用面向对象方法建立拟建系统的模型的过程就是从被模拟现实世界的感性具体中抽象要解决的问题概念的过程。这种抽象过程分为知性思维和具体思维两个阶段,其中:·知性思维是从感性材料中分解对象,抽象出一般规定,形成了对对象的普遍认识。·具体思维是从知性思维得到出的一般规定中揭示的事物的深刻本质和规律,其目的是把握具体对象的多样性的统一和不同规定的综合。 3 解释以下概念: ①对象:在现实世界中,对象就是可以感觉到的实体。每个对象具有一个特定的名字以 区别于其他对象;具有一组状态用来描述它的某些特性;具有一组操作,每一个操作决定对象的一种功能或行为(为自身服务的操作和为其他对象提供服务的操作)。而在面向对象系统中,对象是可以标识的存储区域。每个对象的状态被保存在此区域中,而实现一类对象行为的操作(代码)被保存在另外相关的存储器区域中。 ②消息:消息是要求某个对象执行其某种功能操作(方法)的规格说明。因此,消息是 由消息的接收者、消息要求提供的操作(消息名)和必要的参数组成的。 ③类:在现实世界中,类是对一组具有共同特性(属性和行为)的客观对象的抽象。而 在面向对象系统中,类是由程序员自定义的具有特定结构和功能的类型,是一种代码共享的手段。 ④实例:任何一个对象都是该对象所属类的一个具体实例。 ⑤公有消息:是由对象外向对象发送的消息,用于激活该对象的某种方法。 ⑥私有消息:是由对象向自身发送的消息,用于内部操作;该类消息不能从对象外向该 对象发送。 ⑦消息序列:在面向对象系统中一个事件的发生总会有多个对象的多次相互作用才能完 成,使得这些对象能够相互作用的消息组成的序列被称为消息序列。 4 类与实例的关系如何? 类是创建对象的模板,而对象是实现类的实例。属于同一类的不同实例必须具有: ·相同的操作集合; ·相同的静态属性集合; ·不同的对象名和属性动态值。