面向对象程序设计--实验任务书
- 格式:doc
- 大小:210.00 KB
- 文档页数:13
面向对象程序设计实验指导书(三)
实验名称:类和对象(二)
————类的静态成员及友元练习
实验目的:
掌握类的静态成员的使用方法,掌握友元函数、友元成员和友元类的用法。
实验主要内容:
掌握类中静态数据成员和静态成员函数的用法
掌握友元函数、友元成员和友元类的用法
实验原理及步骤要求:
一、定义一个student(学生)类,该类中的私有成员有学生姓名,年龄和成绩,其中姓名定义成char *,年龄定义成int型,成绩定义成double型;自定义构造函数和析构函数。
二、在上述student类中添加静态数据成员count,该成员是为了记录学生对象的个数,定义多个学生对象,并输出学生对象的个数。
三、在上述student类中添加静态数据成员Sum_Scr,该成员是为了记录学生分数的总和,并能够输出学生的平均分。
四、定义猫类Cat,该类中有私有数据成员char*name,int age, double weight,利用构造函数给三个参数赋值。
定义鼠类Mouse,该类中有私有数据成员char*name,int age, double weight,利用构造函数给三个参数赋值。
定义友元函数showN(Cat &obj1, Mouse &obj2);输出猫和鼠对象的所有属性。
并定义主函数调用函数showN。
五、如题四定义Cat和Mouse类,定义disp( )既为类Mouse的成员函数,又为类Cat的友元函数。
六、如题四定义Cat和Mouse类,类Mouse声明为类Cat的友元。
实验结果:
编写出正确无误的可执行程序。
《面向对象程序设计》课程设计任务书《C++面向对象程序设计》课程实习任务书一、课程设计目的使学生能够更好地掌握C++程序设计语言,更深地理解面向对象程序设计的基本概念与方法,加深对讲授内容的理解,累积经验、学会独立上机调试程序,并且逐步达到综合运用封装、继承和多态等C++难点知识,从而学会利用C++语言解决一般应用问题,并为后续专业课程的学习奠定程序设计基础。
二、课程设计的基本要求1、明确题目要求,进行具体分析;2、进行功能设计,编写设计说明;3、进行程序设计与调试; 4、完成设计报告三、课程设计内容本课程设计要求学生独立完成一个完整的用C++语言编写的面向对象的应用程序,以全面掌握C++面向对象程序设计的基本知识。
课程设计题目可以从下面题目中进行选择,经过老师同意也可以选择其他题目。
(一)通讯录管理程序(学号mod 3=1的同学做)功能要求:1)能建立、修改和增删(含清空)学生通讯录 2)能够按多种方式进行查询。
例如:输入姓名可以查询其本人的电话号码等内容。
要求:通讯信息至少要包括:学生姓名、通讯地址、邮政编码、电话号码、QQ号码(可以根据自己爱好增加其他通讯信息)。
(二)高校学生宿舍信息管理系统(学号mod 3=2的同学做)功能需求:1)系统应该提供学生住宿情况的基本登记。
2系统应提供查询功能,以方便用户对学生住宿情况的查询(要实现按多种条件的查询)。
3)系统还应具有添加、修改、删除学生基本信息的功能。
(三)职工信息管理系统(学号mod 3=0的同学做)功能要求:1)能够实现职工信息录入功能;2)实现删除职工信息的功能;3)实现修职工信息的功能;4)实现用文本文件保存职工的信息;5)按照职工编号或工资对职工信息排序;6)按照编号查找职工;四、课程设计考核方式与标准采用设计表现情况、程序质量、设计报告相结合的考核形式: 1、设计表现(30%)包括出勤情况、调试程序时表现。
缺勤超过1/3者,可以给定不及格。
《C++面向对象程序设计》实验任务书实验四模板和文件By shejz 2016/4/23(一)实验目的1.掌握模板的定义和使用方法;2.理解函数模板、类模板的抽象特性;3.能够根据要求正确定义模板;4.深入理解C++的输入输出的含义及其实现方法;5.掌握标准输入输出流的应用,包括格式输入输出;6.掌握对文件的输入输出操作。
(二)实验内容事先编写好程序,上机调试和运行程序,分析结果。
2.1 类模板将《C++面向对象程序设计(第2版)》第3章例3.14的程序改写为由类声明及类实现的“*.h”头文件和类的使用文件“*.cpp”两个部分组成的程序。
2.2输入输出流输入三角形的三边边长a,b,c,计算三角形的面积的公式是area= s s−a s−b s−c ,s=a+b+c2形成三角形的条件是:a+b>c,b+c>a,c+a>b编写程序,输入三角形的三边边长a,b,c,检查a,b,c是否满足以上条件,如不满足,由cerr输出有关出错信息。
本题是《C++面向对象程序设计(第2版)》第7章习题第1题。
2.3文件操作建立两个磁盘文件file1.dat和file2.dat,编程序实现以下工作:(1)从键盘输入20个整数,分别存放在两个磁盘文件中(每个文件中放10个整数);(2)从file1.dat读入10个数,然后存放到file2.dat文件原有数据的后面;(3)从file2.dat读入20个数,将它们按照从大到小的顺序输出到屏幕并存放到f2.dat(不保留原来的数据)。
本题是参考《C++面向对象程序设计(第2版)》第7章习题第4题改编的。
(三)预习内容《C++面向对象程序设计(第2版)》第3、7章。
(四)实验报告说明本次实验报告试行提交电子版,要求文件名命名规则为:CPP_4_学号_姓名.PDF(转换为PDF格式)。
发送电子邮件到609360949@邮箱。
如:1523023114 张三示例:CPP_4_1523023114_张三.pdf。
《面向对象程序设计》实验指导书2013.11.13目录实验1 VC++ 6.0开发环境应用入门实验2 C++简单程序设计实验3 函数的应用实验1 VC++ 6.0开发环境应用入门一、实验目的(1)了解Visual C++ 6.0的特点。
(2)熟悉Visual C++ 6.0的开发环境。
(3)学习用Visual C++ 6.0编写标准的C++控制台程序。
二、实验任务使用Visual C++ 6.0建立一个非图形化的标准C++程序,编译、运行以下程序:#include <iostream>using namespace std;int main(){cout<<"Hello! \n";cout<<"Welcome to C++! \n";}三、实验步骤1. 启动Visual C++ 6.0开发环境从“开始”菜单中选择“程序”| Microsoft Visual C++ 6.0| Microsoft Visual C++ 6.0,显示Visual C++ 6.0开发环境主窗口。
2. 创建一个项目单击File菜单中的New选项显示New(新建)对话框。
单击Projects标签,在Projects(项目)选项卡中,选择Win32 Console Application(Win32控制台应用程序)。
在Location(位置)文本框中指定一个路径,在Project Name(项目名称)文本框中为项目输入一个名字“lab1_1”,单击OK(确定)按钮。
在弹出Win32 Console Application-Step 1 of 1对话框中选择An empty project单选项,然后单击Finish(完成)按钮。
最后在New Project Information 对话框中单击OK按钮,完成项目的建立。
3. 建立C++源程序文件选择菜单命令Project | Add to Project | New对话框。
09级C++语言程序设计课程设计任务书(适应于09级软件工程、网络工程专业)一、课程设计的目的与要求1.教案目的在《面向对象程序设计》课程理论与实验教案的基础上,根据软件工程的方法与流程,在相对集中的实训教案时间内,通过一个功能较完整的小型应用系统,复习与深入掌握面向对象的程序设计思想与技术方法。
同时,作为整个实践教案体系一部分,系统培养学生采用面向对象的方法分析问题与解决问题的能力及团体组织与协作能力。
2.教案要求从课程设计的目的出发,通过设计工作的各个环节,达到以下教案要求:1)根据实现的功能,划分出合理的对象类,明确对象类间的关系。
2) 为每个对象类设计正确的域和方法,为每个方法设计合理的方法体。
同时,为对象类及内部的域和方法运用正确的修饰符,如访问控制符等。
3)编程简练,程序功能齐全,能正确运行。
4)说明书、流程图要清楚,规范(必须采用UML格式)5)课题完成后必须按要求提交课程设计报告,格式规范,内容详实。
二、课程设计的内容与安排1、题目安排1)动物园动物日常看管系统i)用类族来描述各类动物的关系ii)在派生类中描述各类动物的特性iii)各类动物对象的多样化构建模iv)能把动物的数据存入到文件中,系统初始化时可以读出已有的文件数据2)汽车家族展示系统i)用类族来描述各类汽车的关系,汽车类使用抽像类表示ii)在派生类中描述各类小汽车的特性iii)各类汽车对象的多样化构建模iv)能把汽车的数据存入到文件中,系统初始化时可以读出已有的文件数据3)学生选课系统i)描述学生类的层次结构,不同专业、不同年级的同学选择不同的课程ii)描述出课程类的结构iii)描述出教师与课程的关系iv)能完成基本数据的输入与学生的选课过程,具有数据保存与读取功能。
4) 列车时刻查询系统i) 具有不同类型的列车类的描述ii)有列表时刻表类的描述iii)能完成时刻表的输入、查询、保存等功能iv)多样化的对象建模方式5)个人约会管理系统i)具有不同约会类的层次结构ii)具有不同性质朋友的类层次结构iii)应用类的继承和派生机制来实现iv)具有约会的保存与查询功能6) 学生成绩管理系统i)具有不同课程类的层次结构ii)具有不同专业学生类的层次结构iii)描述出学生与课程之间的关系,应用组合类与派生机制iv)具有学生信息与成绩信息的保存与查询功能2、任务要求(一)目的:(1)要求学生达到熟练掌握C++语言的基本知识和技能;(2)基本掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
河南城建学院《面向对象程序设计》课程设计任务书班级0844121专业软件工程课程名称面向对象程序设计指导教师苏靖枫周二强计算机科学与工程学院2013年6月《面向对象课程设计》任务书一、设计时间及地点1、时间:第17周2、地点:计算机系实验中心205机房、本班教室二、设计目的和要求本课程设计是在学习C++基本理论之后的实践教学环节。
该实践教学是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧。
要求学生在设计中逐步提高程序设计能力,培养科学的软件工作方法。
学生通过课程设计在下述各方面得到锻炼:1.能根据实际问题的具体情况,结合C++的基本理论和基本技巧,正确分析问题,并能设计出解决问题的有效算法与程序。
2.提高程序设计和调试能力。
学生通过上机实习,验证自己设计的算法和程序的正确性。
学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改,进一步提高程序设计水平。
三、设计题目和内容1. 有理数运算问题描述:有理数是一个可以化为一个分数的数,例如2/3,533/920,-12/49都是有理数,而就为无理数。
在C++中,并没有预先定义有理数,需要时可以定义一个有理数类,将有理数的分子和分母分别存放在两个整型变量中。
对有理数的各种操作都可以用重载运算符来实现。
基本要求:定义并实现一个有理数类,通过重载运算符+、-、*、/对有理数进行算术运算,通过重载运算符==实现判定两个有理数是否相等。
写一个优化函数,它的作用是使有理数约去公分母,也即是使保存的有理数分子和分母之间没有公约数(除去1以外)。
此外,还要定义一个将有理数转换为实数的函数,再加上构造函数和有理数输出函数。
测试数据:在应用程序中,创建若干有理数对象,通过带参数的构造函数使得各有理数对象值各不相同,然后分别进行各类运算,输出运算结果,检验其正确性。
实现提示:设有两个有理数a/b和c/d,则有:(1)有理数相加分子=a*d+b*c;分母=b*d(2)有理数相减分子=a*d-b*c;分母=b*d(3)有理数相乘分子=a*c;分母=b*d(4)有理数相除分子=a*d;分母=b*c优化函数在创建有理数对象时应执行,在执行其它各种运算之后也需执行它,这样可保证所存储的有理数随时都是最优的。
《C++面向对象程序设计》课程设计任务书学年学期:2018-2018学年第三学期专业班级:13计算机物联网工程指导教师:陈培芝设计时间:2018/06/08 ~ 2018/07/04学时周数:共2.0周.一、设计目的课程设计是学习C++程序设计的一个重要环节。
通过课程设计的综合训练,可以使学生在学习理论知识并在实验中进行了一系列基本训练的基础上,进一步加强学生对实际问题分析、编程和动手能力的提高,强化综合应用能力,扩充知识,开阔视野。
学生在熟练运用Visual C++ 6.0以后,通过使用Visual C++ 6.0的训练,扩展程序设计的知识面,提高综合应用C++知识能力的要求。
二、设计任务及要求任务一:学校人员信息管理系统设计任务:设计一个学校人员信息管理系统,可以实现对学校人事的信息管理。
基本功能要求:(1)建立人员信息数据包括学号(教工号)、姓名、性别、专业(工作系别部门)、出生时间、年龄。
其中,<1> 对学生,还包括3门课的成绩(Chinese, English, Mathematics)。
三门课的成绩为int型数据。
<2> 对教师,还包括职称(如教授/副教授/讲师),工资(如1432.50)。
工资为double型数据。
【英语命名提示】:姓名: name。
性别:sex。
专业:major。
工作系别:department教授:professor。
副教授:Associate Professor。
讲师:Lecturer工资:salary(2)使用继承的方法构造3个类,对相应的对象放置10个学生(教师)信息。
People类——虚基类Student类——派生类Teacher类——派生类(3)数据基本功能:增加数据:AddData()函数。
删除数据:DeleteData()函数。
根据学号(教工号),删除该人员的记录。
修改数据: UpdateData()函数。
对学生,根据学号,能够修改3门课的成绩;对教师,根据教工号,能够修改“职称”和“工资”。
面向对象程序设计课程实习任务书一、课程实习目的:面向对象程序设计课程实习是集中实践性环节之一, 是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。
要求学生达到熟练掌握C++语言的基本知识和技能; 基本掌握面向对象程序设计的思想和方法; 能够利用所学的基本知识和技能, 解决简单的面向对象程序设计问题, 从而提高动手编程解决实际问题的能力。
二、课程实习题目1) 高校人事管理系统2) 图书管理系统3) 高校工资管理系统4) 公司人员管理系统5) 高校学籍管理系统三、课程实习要求:⑴选题: 每位同学根据自己学号除以5所得的余数选择相应题号的课题, 余数为0则选择第5题。
换题者不记成绩。
⑵根据自己对应的课题完成以下主要工作: ①完成系统需求分析: 包括系统设计目的与意义; 系统功能需求( 系统流程图) ;输入输出的要求。
②完成系统总体设计: 包括系统功能分析; 系统功能模块划分与设计( 系统功能模块图) 。
③完成系统详细设计: 包括数据库需求分析; 类层次图; 界面设计与各功能模块实现。
④系统实现: 系统运行后的测试及使用说明。
⑶按规定格式完成课程实习报告, 将其打印稿(A4纸)上交给老师存档。
⑷不得抄袭她人程序、课程实习报告, 每个人应体现自己的个性设计。
四、实习时间实习时间一周( 第12周) , 周一到周四调试程序, 周五集中检查。
五、考核方式与标准采用实习表现情况、程序质量、实习报告相结合的考核形式:1、实习表现( 20%)实习出勤情况及实习态度2、程序质量与创新能力( 50%)最终完成的程序设计的工作量、质量、难易程度。
3、课程实习报告( 30%)报告的格式与内容。
六、课程实习报告内容:封面内容摘要目录文档正文1、系统需求分析2、总体设计包括系统功能分析; 系统功能模块划分与设计( 系统功能模块图) 。
3、详细设计类层次图; 各功能模块实现等4、系统实现系统运行后的测试及使用说明。
5、实习总结与体会6、附录: 源程序清单参考资料实习报告封面附后格式要求:1、纸张: 用A4纸张, 页边距一律为上、下2.5cm, 左2.5cm、右1.5cm, 装订线在左0.5cm, 行间距取固定值20磅, 字符间距为默认值。
《面向对象程序设计》课程设计任务书一、课程设计目的《面向对象程序设计》是一门重要的计算机专业课程,通过本课程设计,旨在让学生更深入地理解和掌握面向对象程序设计的基本概念、原理和方法,提高学生运用面向对象技术解决实际问题的能力。
具体而言,课程设计的目的包括以下几个方面:1、巩固和加深学生对面向对象程序设计中类、对象、继承、多态等核心概念的理解,培养学生的抽象思维和逻辑思维能力。
2、让学生熟悉面向对象程序设计的开发流程,包括需求分析、设计、编码、测试和维护等阶段,提高学生的软件开发能力。
3、培养学生运用面向对象编程语言(如 C++、Java 等)进行实际编程的能力,提高学生的代码编写规范和调试能力。
4、培养学生的团队合作精神和沟通能力,让学生在团队中共同完成一个较为复杂的项目,学会分工协作和相互交流。
5、激发学生的创新意识和解决实际问题的能力,让学生能够将所学知识应用到实际场景中,开发出具有一定实用价值的软件系统。
二、课程设计要求1、学生需独立完成课程设计任务,不得抄袭他人成果。
2、课程设计题目应具有一定的实用性和挑战性,能够涵盖面向对象程序设计的主要知识点。
3、学生在进行课程设计时,应严格按照面向对象的方法进行分析、设计和实现,确保程序的结构清晰、可读性强、可维护性好。
4、学生需提交课程设计报告,报告内容应包括需求分析、总体设计、详细设计、编码实现、测试结果以及总结等部分。
5、课程设计报告应书写规范、条理清晰、图表完整、数据准确。
三、课程设计题目以下是几个可供选择的课程设计题目,学生可根据自己的兴趣和实际情况选择其中一个进行设计:题目 1:学生成绩管理系统设计一个学生成绩管理系统,能够实现对学生成绩的录入、查询、修改、统计等功能。
系统应具备良好的用户界面,方便用户操作。
题目 2:图书管理系统设计一个图书管理系统,能够实现对图书的入库、借阅、归还、查询等功能。
系统应能够记录图书的基本信息、借阅记录以及读者信息等。
题目:如实验一:C++基本语法实验二:c++函数和作用域姓名: 丁雪华学号: 200911901 班级: 2009119 专业: 计算机科学与技术指导老师: 朱国仲日期:面向对象程序设计C++--实验任务书第一次:C++基本知识实验简介:c++基本知识是学好c++的必要储备,是OOP编程的导引,本次试验从C++的基本语法的各个层面如数据的表示,数据的类型,以及基本的运算符等,另外一点,如何用好VisualC++6.0的C&C++调试环境也会在程序编码的过程中得到体现,进一步锻炼学生的动手能力和知识把握能力。
实验目的:1、复习c语言基础语法2、掌握C++与C语言不同之处3、熟悉VisualC++6.0或BC3.1编辑器,程序调试环境实验要求:程序实现,独立完成实验内容:1、比较两个int型数的大小,并输出较小的那个数;#include<iostream.h>void main(){int a,b;cout<<"输入两个数"<<endl;cin>>a>>b;int *p,*q;p=&a;q=&b;if(a>b)cout<<"max="<<*p<<endl;elsecout<<"max="<<*q<<endl;}2、比较一个int型数与一个float型数的大小,并输出较大的那个数;#include<iostream.h>float max(int i,float j){if(i>j)return i;elsereturn j;}void main(){int n_i;float n_j,x;cin>>n_i>>n_j;x=max(n_i,n_j);cout<<"x="<<x<<endl;}3、输入一个摄氏温度,输出对应的华氏温度;#include<iostream.h>void main(){float kil,mit;cin>>kil;mit=kil*1.60934;cout<<mit<<endl;}4、输入公里数,输出对应的英里数;#include<iostream.h>void main(){float kil,mit;cin>>kil;mit=kil*1.60934;cout<<mit<<endl;}5、输入一个int数,将其低四位置1#include<iostream.h>void main(){int n;cin>>n;n=n|15;cout<<n<<endl;}第二次:C++函数和作用域实验简介:这次试验主要集中在设计模块和数据封装上,函数是这一主要体现,从函数的各个侧面锻炼学生的模块设计能力。
实验7 多态性专业:计算机科学与技术班级学号:姓名:实验地点:工A208 实验时间:2013-11-27 指导教师:李佐勇一、实验目的1.掌握用函数成员实现运算符重载的方法;2.掌握用友元函数实现运算符重载的方法;3.掌握纯虚函数的概念及应用。
二、实验环境一台PC机,Windows XP操作系统,Visual C++ 6.0开发环境。
三、实验内容1、三维坐标类对象之间的直接运算。
三维坐标类有数据成员x、y、z,对象间运算时要求通过函数成员实现“+”、前置“--”、“= =”运算符的重载,通过友元函数实现后置“--”、“+=”、“>>”和“<<”运算符的重载,实现三维坐标类对象间的直接运算。
main()完成对象的定义和有关运算符重载函数的测试。
2、由二维坐标点类(含有带默认形参值的构造函数、getX、getY、show函数)作为基类派生出圆类(含有带默认形参值的构造函数、getR、getarea、show函数);再由圆类作为基类派生出圆柱体类(含有带默认形参值的构造函数、getH、getV、show函数);考虑将show作为虚函数。
3、将实验内容2改为通过纯虚函数show完成数据成员的输出。
四、实验记录1.#include<iostream>using namespace std;class point{public:point(int xx=0,int yy=0,int zz=0):x(xx),y(yy),z(zz){}int getx() {return x;}int gety() {return y;}int getz() {return z;}point operator+(point &p1);point operator--();bool operator==(point &p1)const;friend point operator--(point&p1,int);friend void operator+=(point&p1,point&p2);friend ostream operator<<(ostream & out,const point &p){return out;}friend istream operator>>(istream &in,point &p) {in>>p.x>>p.y>>p.z;return in;}private:int x,y,z;};point point::operator+(point &p1){return point(x+p1.x,y+p1.y,z+p1.z);}point point::operator--(){x--;y--;z--;return *this;}bool point::operator==(point &p1)const{if(x==p1.x&&y==p1.y&&z==p1.z)return true;else return false;}point operator--(point&p,int){point temp=p;--p;return temp;}void operator+=(point &p1,point &p2){p1.x=p1.x+p2.x;p1.y=p1.y+p2.y;p1.z=p1.z+p2.z;}int main(){point p1(3,4,5),p2(5,6,7),p3;cout<<"p1="<<p1<<endl;cout<<"p2="<<p2<<endl;p3=p1+p2;cout<<"p1+p2="<<p3<<endl;p3=--p2;cout<<"p2="<<p2<<endl;cout<<"p3="<<p3<<endl;cout<<"p2==p3?: ";else cout<<"No"<<endl;p3=p2--;cout<<"p2="<<p2<<endl;cout<<"p3="<<p3<<endl;p3+=p2;cout<<"p2="<<p2<<endl;cout<<"p3="<<p3<<endl;return 0;}2.#include<iostream>#define pi 3.1415using namespace std;class point{public:point(int xx=0,int yy=0):x(xx),y(yy){}int getX() {return x;}int getY() {return y;}virtual void show(){cout<<"point.show!"<<endl;cout<<"("<<x<<","<<y<<")"<<endl;}protected:int x,y;};class circle:public point{public:circle(int xx=0,int yy=0,float r=1):point(xx,yy){ radius=r;}float getR() {return radius;}float getarea() {return pi*radius*radius;}void show(){cout<<"圆心坐标:";point::show();cout<<"圆半径:"<<radius<<endl;}protected:float radius;};class cylinder:public circle{public:cylinder(int xx=0,int yy=0,float r=1,float h=1):circle(xx,yy,r){ high=h;}float getH() {return high;}float getV() {return getarea()*high;}void show(){cout<<"cylinder.show:"<<endl;circle::show();cout<<"圆柱高度:"<<high<<endl;}private:float high;};int main(){point p1(1,3),*pp;pp=&p1;pp->show();circle c1(3,3,6);pp=&c1;pp->show();cout<<"circle area is :"<<c1.getarea()<<endl;cylinder cy1;pp=&cy1;pp->show();cout<<"cylinder volume is :"<<cy1.getV()<<endl;return 0;}3.#include<iostream>#define pi 3.1415using namespace std;class point{public:point(int xx=0,int yy=0):x(xx),y(yy){}int getX() {return x;}int getY() {return y;}virtual void show()=0;protected:int x,y;};class circle:public point{public:circle(int xx=0,int yy=0,float r=1):point(xx,yy){radius=r;}float getR() {return radius;}float getarea() {return pi*radius*radius;}void show(){cout<<"circle.show:"<<endl;cout<<"圆心坐标:("<<getX()<<","<<getY()<<")"<<endl;cout<<"圆半径:"<<radius<<endl;cout<<"圆面积:"<<getarea()<<endl;}protected:float radius;};class cylinder:public circle{cylinder(int xx=0,int yy=0,float r=1,float h=1):circle(xx,yy,r){high=h;}float getH() {return high;}float getV() {return getarea()*high;}void show(){cout<<"cylinder.show:"<<endl;circle::show();cout<<"圆柱高度:"<<high<<endl;cout<<"圆柱体体积:"<<getV()<<endl;}private:float high;};int main(){point *pp;circle c1(3,3,6);pp=&c1;pp->show();cylinder cy1;pp=&cy1;pp->show();return 0;}五、思考题虚函数和纯虚函数的应用场合?虚函数声明只能出现在类定义的函数原型声明中,而不能在成员函数实现的时候;纯虚函数是一个在基类中声明的虚函数,它在该基类中没有定义具体的操作内容,要求个派生类根据实际需求给出各自的定义。
软件3141班《面向对象程序设计》课程实训任务书一、目的与要求1、要求学生达到熟练掌握Visual C# .NET的基本知识和技能;2、基本掌握面向对象程序开发的基本思路和方法,熟悉软件开发过程。
3、要求利用面向对象的编程思想以及组件开发原理来完成系统的设计4、能够利用所学的基本知识和技能,进行简单应用程序设计。
5、从“设计任务”中选择一个项目来完成,以小组为单位进行。
小组人数以2~3人为宜。
6、强调独立完成7、强调实际成果8、重视软件测试9、重视文档写作10、课程实训完成后,要求每人提供以下电子文档:(1)根据每人在软件开发过程中的任务不同,撰写课程实训报告书一份(Word格式),具体格式参看“三、课程设计报告格式”。
(2)完整的源程序、答辩时用的演示文稿。
二、任务技术要求1、基本技术要求①主要的数据存储使用Sql Server数据库。
②数据库中表的数目至少3张。
③表中至少有两个外键约束。
④界面使用WPF技术。
⑤程序至少要有3个窗体。
⑥程序中使用Button、TextBox、CheckBox、ComboBox、ListBox、DataGrid、Menu等控件。
⑦程序中业务逻辑等代码要自定义类。
⑧要使用集合类。
⑨要使用多条LINQ语句。
⑩要使用和数据库互操作。
2、高级技术要求①支持数据的导入和导出(文件操作)。
②支持打印和打印预览功能。
③界面漂亮大方,操作方便。
④生成安装程序。
三、任务评分根据根据项目总体的难度和任务量、个人完成的任务量、项目中所使用到的知识点、编码规范和能力、文档写作能力等进行评分。
四、设计任务(从以下任务中任选一个,数据存储建议使用SQL Server 数据库)1、工资管理系统基本要求:(1)员工基本信息的维护。
(2)员工工资由多部分组成,其中有固定的部分,有浮动的部分(如出勤奖)。
(3)每个月员工的浮动工资是不一样的。
2、中国联通(移动)手机费用计算系统(使用类进行设计)基本要求:(1)支持多种套餐。
《面向对象程序设计》大作业要求和任务书一、目的和要求检验学生学习《面向对象程序设计》课程后的学习成果,对于软件程序设计主流方法和思想——面向对象程序设计方法和思想的牢固掌握和熟练应用是一个非常重要的检测,是后续实践课程得以顺利进行的必要保证,对学生的程序设计能力培养和软件工程能力的培养具有重要的作用和意义。
要求学生综合应用已学的相关知识,例如程序设计基本思想和方法、C++语言、面向对象程序设计思想和方法,通过对真实世界的模拟和抽象来解决一些比较简单的实际问题。
要求学生针对比较系统的题目进行编码、测试,并进行设计说明书的撰写,从而培养和锻炼学生初步的工程意识和做法。
加深对所学知识的理解和掌握,巩固课程学习的内容,培养学生掌握面向对象程序设计(OOP)的思想,锻炼其使用面向对象的程序设计思想分析和解决实际问题的能力,培养上机动手能力,培养文档报告书面表达和思辨的能力。
要求学生对自己学过的C++知识进行综合运用,要求要用到类的特性:即类的封装、类的抽象、继承和多态,编写一些小型的具有一定应用价值的程序,通过对真实世界的模拟和抽象来解决一些比较简单的实际问题;掌握在Visual C++集成开发环境下编辑、编译、链接和运行一个C++程序的基本方法。
二、任务内容参考后附的大作业题目,规定每位同学完成两道题目(第一个题目是计算机类,第二个题目从第2-4题中任选一题)。
针对所选题目完成如下具体任务:1. 问题分析和任务定义:根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么?对功能进行说明;2. 类设计:综合考虑系统功能,对问题描述中涉及的操作对象定义相应的数据类型。
抽象数据类型的实现尽可能做到数据封装,充分运用继承、派生、多态等知识,给出用UML描述的类之间的关系图;3. 详细设计:给出各个主要模块的算法,并画出模块之间的调用关系图;要使得系统结构清晰、合理、简单和易于调试,写出主要函数的算法框架;4. 程序编码:把详细设计的结果进一步求精为程序设计语言程序。
实验1 简单C++程序设计专业:计算机科学与技术班级:12计本1班学号:3121101115 姓名:阮克锋实验地点:工A208 实验时间:2012-10-9 指导教师:李佐勇一、实验目的1.熟悉Visual C++6.0 集成开发环境。
2.完成简单C++程序的设计和编码。
3.掌握C++程序的调试方法。
二、实验环境一台PC机,Windows XP操作系统,Visual C++ 6.0开发环境。
三、实验内容1.熟悉Visual C++ 6.0的各个窗口和布局:包括标题栏、菜单栏、工具栏、工作区窗口、输出窗口等)。
2.输入下列简单C++程序,完成编译、连接、运行,熟悉C++程序的开发过程。
#include <iostream> //包含头文件using namespace std; //打开命名空间stdvoid main( ) //主函数,程序入口{ int age; //声明一个变量age= 20; //赋值语句cout<<"The age is:\n"; /输出一个字符串cout<<age<<endl; //输出变量中的值return 0; //主函数返回0} //块作用域结束以上语句有错误吗?如果有,错误在哪里?3. 修改第2章课后习题2-15中C++程序的错误,记录改正后程序的运行结果?4. 编程实现课后习题2-28-(1)或者(2),体会break、continue语句的用法。
5. 用For、while、do…while中的一种循环结构结合穷举法找出50~100之间的质数。
(质数的概念自己上网搜索答案)。
6. 用while或者do…while循环编程实现用户猜数字游戏:给定一个1~50之间的整数,让用户猜这个数字,比较两个数的大小,把结果提示给用户,直到猜对为止。
四、实验记录2.错误的是第三行“void应改成int”,第六行“/输出一个字符串”应改成“//输出一个字符串”。
《面向对象程序设计》实验指导书第一部分实验教学大纲课程名称:面向对象程序设计实验一、课程简介及基本要求面向对象的程序设计是一门实践性很强的课程,每个学生必须完成一定数量的上机作业。
通过上机作业进一步加深对课程基本内容的理解。
同时,在程序设计方法及上机操作等基本技能和科学作风方面受到比较系统的、严格的训练。
由于学生编程和上机的熟悉程度往往差别较大,本大纲所要求的实验为每个学生必须完成的实验,即最低要求。
其它上机内容由学生在教师指导下自选,内容可以是习题中编写的程序,也可以是学生解决实际问题中所编写的程序。
二、实验课程目的与要求实验课是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。
本课程使学生熟悉C++的语法特性,了解C与C++的区别和兼容性;理解面向对象程序设计的基本原理,包括类、对象、抽象、封装、继承和多态性等关键要素以及其关键语法特性—类;掌握用C++编写面向对象程序的一般方法;了解VC++编程环境。
三、主要仪器设备PC机器一台。
装有C++builder 或Visual C++或其他的C++编译软件。
四、实验方式与基本要求要求把每次实验的程序文本和运行结果通过邮件方式发送给实验指导老师.五.考核与报告本课程实验考试方式是考查,按一般课程考试方式进行,主要内容包括实验操作和实验报告,实验成绩占该课程形成性考核成绩的30%。
实验报告的规范:实验完成后填写统一的实验报告,给出实验内容题目、年级、姓名、学号、指导教师、完成日期,并详细填写:实验目的、实验程序、实验结果及分析、存在的问题。
实验0、C++开发环境应用(课外实验 2学时)1、实验目的(1)了解C++开发工具的特点(2)熟悉C++开发环境(2)学习用C++编写标准的C++程序2、实验任务使用C++来建立一个非图形化的标准C++程序,编译、运行下例程序:#include <iostream.h>void main(void){cout<<”Hello!\n”;cout<<”Welcome to C++!\n”;}3、实验步骤(1)启动Visual C++开发环境(2)创建一个项目a.单击File菜单中的New选项,显示示新建对话框b.选择Win32 Console Application(VC++)。
2021秋-《面向对象程序设计》-实验指导书《面向对象程序设计》实验指导书实验一:类的继承和封装1.1实验性质验证性实验(4学时)1.2实验目的Java是完全面向对象(OOP,Object Oriented Programming)的编程语言,任何程序都是基于类,Java中所有的代码都写于类的内部。
面向对象编写的程序则是由对象组成的,这些对象有自己的属性和能够执行的操作。
本实验目的在于通过编程和上机实验进一步理解Java 语言是如何体现面向对象编程基本思想,了解类的封装方法,以及如何创建类和对象,了解成员变量和成员方法的特性,掌握OOP 方式进行程序设计的方法,了解类的继承性和多态性的作用。
深化类的定义,类的继承,及相关语法规则,深化对类成员的使用,理解类的封装。
1.3实验任务1) 2) 3) 4) 5) 6) 7) 8)观察简单类的运行过程体会类集成的机制以及思路查看高级类(抽象类)的使用方法编写一个复数类,实现复数的加、减、乘运算编写一个银行账户类,实现简单的存取编写一个矩形类,并由该类继承出方形类编写一个图形类,完成面积计算回答思考问题1.4实验准备将以下代码输入NetBeans中,若代码存在错误请进行修改,查看输出成果,并对各行语句进行解释,将解释内容和运行结果写入实验报告。
1)简单类示例//EmployeeTest.java import java.util.*; public class EmployeeTest{ public static void main(String[] args) { // 将三个员工对象的数据赋值给职工数组 Employee[] staff = new Employee[3]; staff[0] =new Employee(\张三\ staff[1] = new Employee(\李四\ staff[2] = new Employee(\王五\ for (int i = 0; i < staff.length; i++)staff[i].raiseSalary(5);//每个员工的工资增长5% for (int i = 0; i <staff.length; i++)// 打印输出员工信息 { Employee e = staff[i]; System.out.println(\姓名=\ + \工资=\ + \工作日期=\ } } } class Employee { private String name; private doublesalary; private Date hireDay; public Employee(String n, double s,int year, int month, int day) { name = n; salary = s; GregorianCalendar calendar = new GregorianCalendar(year, month - 1,day); // GregorianCalendar 计算月份从0开始hireDay = calendar.getTime(); } public String getName(){ return name; } public double getSalary() { returnsalary; } public Date getHireDay() { return hireDay; }public void raiseSalary(double byPercent) { double raise = salary *byPercent / 100; salary += raise; } } 2)类的继承 importjava.util.*; public class ManagerTest { public static void main(String[]args) { // 创建一个新的经理并设置他的奖金 Manager boss = newManager(\陈鹏\ 1987, 12, 15); boss.setBonus(5000);Employee[] staff = new Employee[3]; // 建立员工数组和经理一起填充staff[0] = boss; staff[1] = new Employee(\何恒\ staff[2] = newEmployee(\童同\ // print out information about all Employeeobjects for (int i = 0; i < staff.length; i++){ Employee e = staff[i]; System.out.println(\ +\ } } } class Employee { public Employee(String n, double s,int year, int month, int day) { name = n; salary = s; GregorianCalendar calendar = new GregorianCalendar(year, month - 1,day); // GregorianCalendar 方法计算月份从0开始 hireDay =calendar.getTime(); } public String getName() { returnname; } public double getSalary() { return salary; }public Date getHireDay() { return hireDay; } public voidraiseSalary(double byPercent) { double raise = salary * byPercent /100; salary += raise; } private String name; private doublesalary; private Date hireDay; } class Manager extends Employee { /**变量n是员工姓名变量 s t员工工资填充工龄的年、月、日 */public Manager(String n, double s, int year, int month, int day){ super(n, s, year, month, day); bonus = 0; } publicdouble getSalary() { double baseSalary = super.getSalary();return baseSalary + bonus; } public void setBonus(double b){ bonus = b; } private double bonus; } 3)类的高级属性:抽象类的使用 // Employee.java // 抽象类Employee public abstract class Employee{ private String firstName; private String lastName; // 构造函数public Employee( String first, String last ) { firstName = first;lastName = last; } // 返回姓 public String getFirstName(){ return firstName; } // 返回名 public String getLastName() { return lastName; } public String toString() { return firstName + ' ' + lastName; } // Employee抽象方法earnings(); //将被其每个子类以实例继承public abstract double earnings(); } // Boss 类是Employee继承 public final class Boss extends Employee { private double weeklySalary; // 经理Boss 类的构造函数 public Boss( String first, String last, double s){ super( first, last ); // call superclass constructor setWeeklySalary( s ); } // 经理Boss类的工资 public void setWeeklySalary( double s ) { weeklySalary = ( s > 0 ? s : 0 ); } // 确定Boss的薪水 public double earnings() { return weeklySalary; } // 打印姓名 public String toString() { return \经理: \ } } 1.5实验过程(1)定义一个复数类,可以通过构造函数给复数对象赋值,实部和虚部是该类的私有属性,必须有获取和修改属性的方法,并定义它与复数、实数相加和相减及复数间乘的方法。
《⾯向对象程序设计》实验指导书《⾯向对象程序设计》实验指导书实验⼀ Java开发环境⼀、实验⽬的:1、熟悉JAVA开发环境(JBUILDER/JDK)2、认识Java程序结构。
⼆、实验内容:1、配置JDK,编译调试HelloWorld程序。
2、熟悉JAVA开发⼯具,编译调试HelloWorld程序。
三、实验要求:1、HelloWorld程序输出⼀条简单的问候信息;2、实验报告中对程序结构做出详细的解释;3、实验报告中给出配置JDK的步骤。
四、实验学时、性质:2学时、验证性五、实验步骤:1、进⼊Java编程环境;2、新建⼀个Java⽂件,命名为HelloWorld.java;3、定义主⽅法public static void main(String[ ] args);调⽤System.out.println()⽅法,使程序输出⼀条问候信息;4、编译运⾏程序,观察运⾏情况和输出结果。
(如果使⽤JDK环境,调⽤javac.exe和java.exe编译和执⾏程序)实验⼆类与对象⼀、实验⽬的:1、掌握类的定义与成员的封装。
2、掌握对象的创建,对象属性的访问和⽅法的调⽤。
3、掌握包的使⽤。
⼆、实验内容:1、⾃定义⼀个学⽣类。
2、导⼊并访问其他同学定义的学⽣类。
三、实验要求:2、实验报告中记录访问不同属性时编译器的反馈并分析原因。
四、实验学时、性质:3学时、验证性五、实验步骤:1、创建⼀个Java包,以⾃⼰的英⽂名字命名。
2、定义⼀个学⽣类,包含三个属性学号、姓名和性别,访问修饰符分别是private、⽆修饰符和public修饰符。
3、在另⼀个类中创建学⽣类的对象,分别设置三个属性的值,观察实验结果。
4、导⼊同学定义的学⽣类。
分别访问三个属性,观察实验结果。
实验三数据类型与数组⼀、实验⽬的:1、掌握数据类型与数组的定义、初始化与使⽤。
⼆、实验内容:1、查看⾃⼰名字的UNICODE编码。
2、转置⼆维矩阵。
三、实验要求:1、使⽤已知给定的数值初始化⼀个5X5的⼆维数组。
题目:如实验一:C++基本语法实验二:c++函数和作用域姓名: 丁雪华学号: 200911901 班级: 2009119 专业: 计算机科学与技术指导老师: 朱国仲日期:面向对象程序设计C++--实验任务书第一次:C++基本知识实验简介:c++基本知识是学好c++的必要储备,是OOP编程的导引,本次试验从C++的基本语法的各个层面如数据的表示,数据的类型,以及基本的运算符等,另外一点,如何用好VisualC++6.0的C&C++调试环境也会在程序编码的过程中得到体现,进一步锻炼学生的动手能力和知识把握能力。
实验目的:1、复习c语言基础语法2、掌握C++与C语言不同之处3、熟悉VisualC++6.0或BC3.1编辑器,程序调试环境实验要求:程序实现,独立完成实验内容:1、比较两个int型数的大小,并输出较小的那个数;#include<iostream.h>void main(){int a,b;cout<<"输入两个数"<<endl;cin>>a>>b;int *p,*q;p=&a;q=&b;if(a>b)cout<<"max="<<*p<<endl;elsecout<<"max="<<*q<<endl;}2、比较一个int型数与一个float型数的大小,并输出较大的那个数;#include<iostream.h>float max(int i,float j){if(i>j)return i;elsereturn j;}void main(){int n_i;float n_j,x;cin>>n_i>>n_j;x=max(n_i,n_j);cout<<"x="<<x<<endl;}3、输入一个摄氏温度,输出对应的华氏温度;#include<iostream.h>void main(){float kil,mit;cin>>kil;mit=kil*1.60934;cout<<mit<<endl;}4、输入公里数,输出对应的英里数;#include<iostream.h>void main(){float kil,mit;cin>>kil;mit=kil*1.60934;cout<<mit<<endl;}5、输入一个int数,将其低四位置1#include<iostream.h>void main(){int n;cin>>n;n=n|15;cout<<n<<endl;}第二次:C++函数和作用域实验简介:这次试验主要集中在设计模块和数据封装上,函数是这一主要体现,从函数的各个侧面锻炼学生的模块设计能力。
实验目的:1、理解程序设计的模块性概念2、掌握C++函数命名的格式3、进一步熟悉VisualC++6.0或BC3.1编辑器,程序调试环境锻炼调试程序、排除程序错误的能力4、了解作用域的内涵及::的用法实验要求:程序实现,理清清思路,独立完成实验内容:1.求∑i!(i为一个变量n)#include<iostream.h>void main(){int n,p=1,sum=0;cin>>n;int j;for(j=n;j>0;j--){for(n=1;n<=j;n++){p=p*n;}sum=sum+p;p=1;}cout<<"sum="<<sum<<endl;}2.求一个一元二次方程的解,。
讨论下述情况:(1)b*b-4*a*c=0,有两个相等实根;(2)b*b-4*a*c>0,有两个不相等实根;(3)b*b-4*a*c<0,有两个共轭复根;(4)a=0,不是二次方程。
#include<iostream.h>#include<math.h>void main(){float a,b,c;float x1,x2;int i;i*i==-1;float k=sqrt(b*b-4*a*c);float q=sqrt(4*a*c-b*b);cin>>a>>b>>c;if(a<0)cout<<"不是二次方程"<<endl;else{if(b*b-4*a*c==0){x1=x2=-(b/(4*a));}elseif(b*b-4*a*c>0){x1=((-b)+k)/(4*a);x2=((-b)-k)/(4*a);}else{x1=((-b)+q*i)/(4*a);x2=((-b)-q*i)/(4*a);}cout<<"x1="<<x1<<'\n'<<"x2="<<x2<<endl;}}3.编写两个函数,一个是将一个int型数转换成为每两个数字间加一个空格的字符串;另一个是求出转换后的字符串的长度,由主函数输入int型数,并输出转换后的字符串的长度。
#include<iostream.h>#include<string.h>#include<stdlib.h>#include<stdio.h>int len(int p,int q,char ff[256]){p=0;q=0;while(ff[p]!='\0'){q++;p++;}return q;}void main(){ int n;cin>>n;char buf[256];char ss[10];buf[0]='\0';char bb[256];while(n!=0){strcpy(bb,buf);itoa(n%10,ss,10);sprintf(buf,"%s",ss);strcat(buf," ");strcat(buf,bb);n/=10;}int nlen=strlen(buf);buf[nlen-1]='\0';cout<<buf<<endl;int j;int i=0,m=0;j=len(i,m,buf);cout<<j<<endl;}4.编程输出如下图案:** * ** * * * ** * * * * * ** * * * * * * * ** * * * * * ** * * * ** * **------------------------#include<iostream.h>#include<math.h>void main(){cout<<"输出图形"<<endl;for(int i=1;i<=9;i++){double s=fabs(10-i*2);for(int j=1;j<=s;j++)cout<<" ";if(i<=5){for(j=1;j<=2*i-1;j++){cout<<'*';cout<<" ";}cout<<endl;}else{int k=i-4;int z=5*k;for(j=1;j<=(3*i-1-z);j++){cout<<'*';cout<<" ";}cout<<endl;}}}5.编制一库房管理程序,要求对10种产品进行管理(商品内容自定)并实现如下功能:(1)入库管理清单,包括产品名称、数量、单价、入库量、有效期(2)库存管理,对产品数量的变化、单价的变化进行修改,并能显示任意产品的库存情况(3)输出出库清单,包括产品名称、数量、单价、出库量、折扣率,遇到无货或库存不够要有提示(4)进行当日交易额的统计(5)根据产品数量进行库存量的排序,并显示排序结果#include<iostream.h>struct type{char name[10];int m;double price;double mm;int days;double mmm;double n;}ss,sss,ssss;struct type goods[10]={{"EIOWNEJ",290,78.9, 189,365 ,190,0.80},{"DIO",295,78.9,179,365,190,0.80},{"DJIO",278,78.9,168,365,190,0.80},{"QWOP",291,78.9,175,365,190,0.80},{"DJOQ",238,78.9,185,365,190,0.80},{"SNAK",219,78.9,289,365,190,0.80},{"ANK",294,78.9,173,365,190,0.80},{"NAK",278,78.9,181,365,190,0.80},{"CNH",228,78.9,169,365,190,0.80},{"WQOQ",204,78.9,193,365,190,0.80},};void change(struct type);void print(struct type);void f(struct type );void ff(struct type);char menu();int main(){for(;;){char choice;choice=menu();switch(choice){case 'P':print(goods[10]);break;case 'C':change(ss);break;case'F':f(sss);break;case 'J':ff(ssss);case'Q':return 0;default:cout<<"error"<<endl;}}}char menu(){char ch;cout<<"(P)rint\n(C)hange\n(F)\n(J)\n(Q)\nplease choose one:";cin>>ch;return ch;}void print(struct type){ int x=0;struct type *p;for(int i=0;i<10;i++){cout<<' '<<goods[i].m <<' '<<goods[i].price<<' ' <<goods[i].mmm << ' '<<goods[i].n <<endl;x=x+goods[i].m;}for(p=goods;p<goods+10;p++)cout<<p->name<<' ';if(x==0)cout<<"无货或库存不够"<<endl;}void change(struct type){int a[10];float cost;for(int i=0;i<10;i++){cin>>a[i];cin>>cost;if(a[i]!=goods[i].m||cost!=goods[i].price){goods[i].m=a[i];goods[i].price=cost;cout <<' '<<goods[i].m <<' '<<goods[i].price<<' ' <<goods[i].mmm <<' '<<goods[i].n <<' '<<goods[i].mm<<' '<<goods[i].days<<endl;}elseif(a[i]==goods[i].m&&cost==goods[i].price)cout <<' '<<goods[i].m <<' '<<goods[i].price<<' ' <<goods[i].mmm << ' '<<goods[i].n <<' '<<goods[i].mm<<' '<<goods[i].days<<endl;}}void f(struct type){double nn=0;for(int i=0;i<10;i++){nn=nn+goods[i].price*goods[i].mmm;}cout<<nn<<endl;}void ff(struct type){for(int i=0;i<10;i++){for(int j=i+1;j<10;j++){if(goods[i].m<goods[j].m){int t;t=goods[i].m;goods[i].m=goods[j].m;goods[j].m=t;}}}for(int k=0;k<10;k++){cout<<goods[k].m<<endl;}}。