《C++面向对象程序设计基础》实验报告
面向对象程序设计-试验报告

《面向对象程序设计》实验报告一.实验目的与要求1.学习类与对象的定义。
2.掌握类与对象的使用方法。
3.学习类与对象的声明。
4.学习数据成员与成员函数的访问方式。
5.理解构造函数和析构函数的定义与执行过程。
6.学会构造函数的重载方法。
二.实验准备与内容1.可以定义出一个类,并且在程序中创建一个该类的对象。
2.实现类的定义,借助VC++的方法建立一个新的类。
3.体现出构造函数和析构函数的调用。
4.重载构造函数。
5.为了提高对相关知识的综合应用能力,编写一个较为复杂的类和对象的应用程序。
三.实验设计(分析)1.建立一个空的工程chap2。
2.在工程chap2中,建立一个源程序文件,在此文件中建立一个新的类。
将新建的类命名为Rect。
//--------------------------------------------------------------------------------------------------class Rect{public:int Area_int();double Area_double();Rect(double1, doublew);Rect(int 1,int w);virtual ~Rect();private:int nLength;int nWidth;double dLength;double dWidth;};//--------------------------------------------------------------------------------------------------3.向Rect类中添加数据成员及成员函数,并完善成员函数功能。
如设计一个Area_int()函数,计算机边长为整形的长方形的面积;设计一个Area_double()函数,计算机边长为double的长方形的面积。
4.重载构造函数。
一种构造函数用整形变量记录长方形的长和宽,另一种构造函数用double型记录。
面向对象程序设计C++实验报告书1

//取得计数器值 //给原值加 1 //给原值减 1
//显示计数
int main() {
Counter c; cout<<"number="; c.getvalue(); c.increment(); cout<<"increment="; c.print(); c.decrement(); cout<<"decrement="; c.print(); return 0; }
cout<<"给定的日期不正确,将以默认值初始化!"<<endl; setDate(1900,1,1); return ; } year=yr; month=mo; day=dy; } int Date::getDay(){ return day; } int Date::getMonth(){ return month; } int Date::getYear(){ return year; } void Date::print(){ cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl; } bool Date::isLeapYear(){ if((year%4==0&&year%100!=0)||(year%400==0))return true; else return false; } int Date::monthDays(){
date.print(); //system("pause"); return 0; } 四、上机结果及分析 1、
面向对象程序设计试验报告

面向对象程序设计通讯录(c语言版)学院:信息学院班级:A0611学号:05:赵光斌指导老师:吴维勇2008.11.18面向对象程序设计报告———通讯录简析根据老师的要求和我自己的构想,这个学期的试验课我准备做一个通讯录系统,就是可以实现一个人的信息的输入,查询,浏览,插入,删除等功能,并尽量使界面友好。
下面,我来介绍下我的整个设计过程和编码中遇到的问题和解决方法。
首先是实现什么样的功能,这个我已经在上面介绍过了,那么,现在要实现这样的一个功能,究竟要怎么样的程序才能做到呢?我们先来画个系统功能图来看下:通过这个功能图,我们可以清楚的看到这个系统到底是要实现什么样的作用,我们要根据这个图来当做模板,做出自己的系统。
好了,功能都清楚了,现在就是去实现了。
但是在实现之前,我们还要知道如何去实现这个系统。
因为一个系统,要实现有一定的顺序,模块和模块之间的关系都是不同的,要通过不同的手段来实现。
下面我们还是通过系统流程图来观察下:通过上图,我们应该知道这个系统的大概流程是什么了。
下面我要选择用C语言实现它。
首先,我们要确定一点,我们这个系统的操作对象或者说是研究对象是什么。
这个程序应该有2个操作对象,一个是用户的注册信息,即账号和密码信息,一个是通讯录里成员的信息。
这2个信息是我们在系统里一直使用和修改的。
这2个信息也有不同,用户的注册信息是不能修改的,只能在注册和登陆是使用一次,其他情况下不能调用;而通讯录里用户的信息是可以进行操作的。
这点需要注意。
struct txl //定义一个成员结构体,里面定义了通讯录里成员的信息。
{char name[15]; //定义用户姓名char sex[5]; //定义用户性别int age; //定义年龄char tel[13]; //定义电话char major[20];//定义专业char school[30];//定义学校char others[90];//定义其他信息};struct zh //定义一个账号结构体,里面定义账号密码信息。
C++面向对象程序设计》实验报告

《C++面向对象程序设计》实验内容实验1 C++程序设计初步1.实验目的(1)了解在C++编译系统(Visual C++6.0)上如何编辑、编译、连接和运行一个C++程序。
(2)通过运行简单的C++程序, 初步了解C++源程序的结构和特点。
(3)掌握简单C++程序的编写和调试方法。
(4)掌握重载函数的定义方法。
(5)能正确使用引用型变量。
2.实验内容和步骤(1)在Visual C++环境下编译和运行C++程序①先进入Visual C++6.0环境。
②在自己指定的子目录中建立一个名为test.cpp的新文件。
③从键盘输入以下程序int main(){int a,b;c=a+b;cout>> “a+b=”>>a+b;}选择Build→Compile test.cpp命令, 对此源程序进行编译。
观察和分析编译信息。
⑤根据编译信息指出的错误, 修改程序。
再进行编译, 如果还有错, 再重复此过程, 直到编译不出错为止。
⑥选择Build→Build test.exe命令, 对程序进行连接, 如果不出错, 就会生成可执行程序test.exe。
⑦选择Build→Execute test.exe命令, 执行可执行程序test.exe。
观察屏幕的变化。
在输出窗口应显示程序运行结果。
⑧分析结果是否正确, 如果不正确或认为输出格式不理想, 可以修改程序, 然后重新执行以上④和⑧步骤。
改过后的程序:#include<iostream>using namespace std;int add(int x,int y){int z;z=x+y;return(z);}int main(){int a,b,c;cin>>a>>b;c=add(a,b);cout<<"a+b="<<c<<endl;return 0;}实验2 C++对C的扩充(2)编一个程序, 用来求2个或3个正整数中的最大数。
面向对象程序设计实验一及实验报告样式

《面向对象程序设计》实验一实验报告1 实验目的:(1)了解在VC++、C-free中如何编辑、编译、连接和运行一个C++程序;(2)掌握声明类的方法,类和类的成员的概念以及定义对象的方法(3)了解多文件的C++程序结构2 实验任务(1)输入两个整数,将它们按由大到小的顺序输出。
要求使用变量的引用;(2)编写一个程序,将两个字符串连接起来,结果取代第一个字符串;(3)声明Animal 类,数据成员有age,成员函数有SetAge()等。
首先把数据成员声明为公有的,在main()函数中访问,再把它改为私有的,指出在main()函数中访问会出现怎样的情况,如何避免?该程序需要在同一个文件中分别给出类的声明、类的实现、类的演示每部分的代码。
(4)声明日期类,数据成员有year、month、day,成员函数有输出日期、加一天等。
练习使用多文件结构来组织程序。
3 程序清单实验一:#include"iostream"using namespace std;int main(){int i,j;cout<<"input two number"<<endl;cin>>i>>j;swap(i,j);cout<<i<<","<<j<<endl;return 0;}void swap(int &a,int &b){int temp;temp=a;a=b;b=temp;}实验二:#include"iostream"#include"string"using namespace std;int main(){string string1,string2;cout<<"please input two string:";cin>>string1>>string2;string1=string1+string2;cout<<string1<<endl;return 0;}实验三:4 运行结果图1.1 任务一运行结果图2.1任务二运行结果5 总结或感悟(对运行结果所作的分析以及本次调试程序所取得的经验。
太原理工大学C面向对象程序设计实验报告

本科实验报告课程名称:C++面向对象程序设计实验地点:专业班级:学号:学生姓名:指导教师:2016年 5 月3 日Complex::Complex(int real, int image) { real = 20;image = 40; }Complex::Complex(Complex &c){ real = c.real;image = c.image; }int main(){ Complex c1;Complex c2(0, 0);Complex c3(c1);cout <<"c1=";c1.Display();cout <<"c2=";c2.Display();cout <<"c3=";c3.Display();return 0; }二.#include"stdafx.h"#include<iostream>using namespace std;class score{int No,Math,Phi,Data,ave;char Name[8];public:void Write(score &b){ cout<<"请输入学号:"<<endl;cin>>b.No;cout<<"请输入姓名:"<<endl;cin>>;cout<<"请输入数学成绩:"<<endl;cin>>b.Math;cout<<"请输入物理成绩:"<<endl;cin>>b.Phi;cout<<"请输入数据结构成绩:"<<endl; cin>>b.Data; }int Average(score &a){ a.ave=(a.Data+a.Math+a.Phi)/3;return a.ave; }void Display(){ cout<<No<<'\t'<<Name<<'\t'<<Math<<'\t'<<Phi<<'\t'<<Data<<'\t'<<ave<<endl; }};int main (){ score s[3];int i;for(i=0;i<3;i++){ s[i].Write(s[i]);s[i].Average(s[i]); }cout<<"学号\t"<<"姓名\t"<<"数学\t"<<"物理\t"<<"结构\t"<<"平均\t"<<endl;for(i=0;i<3;i++)s[i].Display();}三. #include"stdafx.h"#include"iostream"using namespace std;class Rectangle{public:Rectangle(double l, double t, double r, double b) :left(l), top(t), right(r), bottom(b) {}三. #include"stdafx.h"#include"iostream"using namespace std;class Person {public:char Name[8];char Sex;int Birthday;};class Student :public Person{public:int Class;int No;char Professnation[50];int English;int Math;void Display(char Name[8], char Sex, int Birthday, int Class, int No, char Professnation[50], int English, int Math){cout <<"学生姓名为"<<Name<< endl;cout <<"学生性别为"<<Sex<< endl;cout <<"出生年月"<<Birthday<< endl;cout <<"班级为"<<Class<< endl;cout <<"学号为"<<No<< endl;cout <<"专业为"<<Professnation<< endl;cout <<"英语成绩"<<English<< endl;cout <<"数学成绩"<<Math<< endl;};};class Employee :public Person{public:。
C++面向对象程序设计基础实验报告

{
int x;
float radius,length,width,sidelength,area;
do
{cout<<"计算图形的面积,请选择: 1.圆形2.长方形3.正方形0.退出"<<endl;
cin>>x;
switch(x)
{
case 1: cout<<"请输入半径:";
cin>>radius;
程序可计算圆形长方形正方形的面积运行时先提求用户选择图形的类型然后再要求用户对圆形输入半径值对长方形输入长与宽对正方形输入边长计算出面积的值后在屏幕上显示出来
太原理工大学现代科技学院
面向对象程序设计基础A课程实验报告
实验名称c++基础、类对象、继承与派生、多态性
专业班级计算机
学号
姓名
指导教师王幸民
实验二C++基础
cout<<"年龄:"<<a.age<<endl;
}
int laborage::count(laborage &b)
{
b.fsalary=b.ssalary-b.security;
return b.fsalary;
}
void laborage::display(laborage &a)
{
cout<<"工资:"<<a.fsalary<<endl;
(3)掌握构造函数、析构函数的概念以及使用方法;
(4)理解构造函数与析构函数的调用过程。
面向对象c 实验报告

面向对象c 实验报告实验报告:面向对象C程序设计一、实验目的本次实验旨在通过设计一个面向对象的C程序,来加深对面向对象程序设计的理解,并实践C语言中面向对象的编程思想。
二、实验过程1. 设计类和对象:在C语言中,没有类的概念,但可以通过以下方式模拟类和对象。
- 定义一个结构体来表示一个类,结构体中包含该类的成员变量和成员函数指针。
- 定义一些函数来模拟类的成员函数,函数的第一个参数是结构体类型的指针,该指针指向当前对象。
2. 创建对象:定义一个结构体变量,该变量称为对象,通过调用构造函数来初始化对象的成员变量,将对象传递给成员函数。
3. 调用成员函数:使用对象调用该对象的成员函数,通过函数指针实现多态性。
4. 析构对象:在不再使用对象时,调用析构函数来释放对象占用的资源,避免内存泄漏。
5. 运行程序:编译并运行C程序,观察程序的输出结果。
三、实验结果在C语言中实现面向对象的程序设计,可以提供一种思路和方式来实现面向对象的编程思想。
通过将相关的数据和函数封装在一个表示类的数据结构中,并通过该数据结构的函数指针来调用成员函数,可以模拟出面向对象的效果。
四、实验总结通过本次实验,我对于C语言中如何实现面向对象编程有了进一步的理解。
尽管C语言本身没有类的概念,但通过结构体和函数指针的方式,我们可以模拟出类和对象的概念,并实现封装、继承和多态等面向对象的特性。
C语言中面向对象的编程思想可以使程序更加模块化、灵活和易于维护。
通过将相关的数据和函数封装在一个结构体中,我们可以将代码组织得更加清晰,降低代码的耦合度,提高代码的重用性。
此外,通过函数指针的方式来调用成员函数,可以实现多态性,使得代码更加灵活和可扩展。
当然,C语言中实现面向对象编程也存在一些限制和不足。
相比于面向对象编程语言,如C++和Java,C语言中的面向对象编程需要手动管理对象的生命周期,容易出现内存泄漏的问题。
此外,C语言中没有提供访问控制的特性,不同成员函数之间的访问权限不能进行限制。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西安交通大学《C++面向对象程序设计基础》实验报告学院:电子与信息工程学院班级:计算机科学与技术3x班学号:213姓名:指导教师:一、面向对象的程序设计1.1基本概念面向对象的程序设计是通过对类、子类和对象等的设计来体现的,类是面向对象程序设计技术的核心。
类:定义了对象特征以及对象外观和行为的模板。
类的特征:封装性:隐藏了类中对象的内部数据或操作细节,只看到外表信息。
继承性:任何类都可以从其它已有的类中派生,新类保持了父类中的行为和属性,但增加了新的功能。
体现了面向对象设计方法的共享机制。
多态性:相同的操作可作用于多种类型的对象上,并获得不同的结果。
抽象性:提取一个类或对象与众不同的特征,而不对该类或对象的所有信息进行处理。
基类:系统本身提供的类称为基类。
基类包括容器类和控件类。
容器类是其他对象的集合,如表格、选项按钮组;控件类是单一的对象,不包含其他对象,如命令按钮、文本框。
子类:以其他类定义为起点,对某一对象所建立的新类。
新类将继承任何对父类所做的修改。
二、C++语言基础2.1C++既可以用于面向过程的结构化程序设计,也可用于面向对象的程序设计。
C++对C的增强体现在两个方面:1.对原来的面向过程机制做了扩充。
2.增加了面向对象的机制。
学习C++之后,既可以进行面向对象的程序设计,也可以进行面向过程的程序设计。
2.2为了与C兼容,C++保留了C语言中的一些规定,例如头文件的文件名,以C语言里头文件的扩展名是.h,许多C++编译系统保留了这种扩展名,近年推出的C++编译系统新版本,推出了一批不带扩展名的头文件如iostream,string ,cmath 等。
为了兼容C++仍允许使用带扩展名的头文件。
由于C语言无命名空间,因此使用带扩展名的头文件时不用using namespace std。
2.3C++相对与c程序来说变化不大。
头文件从原来的studio.h 文件变成了iostream 标准输入输出流文件,从而输入输出方式也从printf、Scanf,变成cin、cout 。
虽然cin 、cout 输入输出方式简单,但格式设计不方便,而且耗时较大。
本质上,c++与c程序区别不大,两者主要区别在于c++使用全新的面向对象思想。
2.4C++基本数据类型有整数类型(int)、字符类型(char)、浮点类型(float)和双精度类型(double)、布尔类型(bool)、空类型(void)六种类型。
2.5C++中的表达式有算术表达式(+、-、*、/、%)、赋值表达式(=)、增量表达式(++和--)、关系表达式(>、<、>=、<=、!=)、逻辑表达式(!、&&、||)、条件表达式(操作数1?操作数2:操作数3)、逗号表达式(操作数1,操作数2,…,操作数n)。
2.6C++中的基本语句有空语句({})、表达式语句、声明语句、条件(if)语句、switch语句、循环语句(for循环语句、while循环语句、do-while循环语句、break语句、continue语句)。
三、类和对象3.1类是一个全新的概念,与c程序中结构体类似,但与其不同的是类中自带类内函数且在类中数据成员和成员函数的类型分为三种:public、private、protected,这三种数据类型有不同的访问权限:public可以被外界直接调用,而private与protected 需要通过函数才能被使用。
类对象:在C++中,对象是类的实际变量。
对象的使用格式有对象名.数据成员名/成员函数名(实参表)。
在类的外部,只有公有数据成员和公有成员函数才可以通过类的对象进行访问,而私有数据成员和成员函数只能在类的内部被访问。
3.2构造函数和析构函数:构造函数和析构函数使类对象能够轻松被创建和撤销。
构造函数创建类对象,初始化类成员,析构函数撤销类对象。
它们是类的特殊成员函数。
3.3对象数组与对象指针:对象数组就是每一个数组元素都是类的对象的数组,对象指针就是用于存放对象地址的变量。
对象数组定义的一般格式是类名对象数组名[下标表达式],使用方法是对象数组名[下表表达式].成员名,对象指针的声明方式是类名*对象指针名。
四、静态成员与友元4.1在类定义中,类的成员可以用关键字static声明为静态的,这些成员就是静态成员,它被这类所有对象共享。
类的私有成员只能在类的内部被访问,在外部要访问时,友元机制提供了很好的途径和方法。
4.2(a)友元函数:不是类的成员函数,在外部定义时,不需要加上(::)。
在声明为友元函数时,需要在其函数名前加上关键字friend。
(b)友元成员:一个类的成员函数要声明为另一个类的友元函数时,必须要先定义这个类。
(c)友元类:友元类的声明方法是在另一个类中加入形如“friend class 类名”的语句。
当一个类做另一个类的友元时,友元类中的所有成员函数都可以访问另一个类的所有成员(包括私有成员)。
五、派生类与继承5.1继承是在已有类的基础上创建新类的过程,新类就是派生类,已有类就是基类。
派生类不仅可以继承基类的功能,而且还能对基类的功能进行扩充、修改或重定义。
5.2派生类:派生类有三种继承方式,公有继承(public)、私有继承(private)、保护继承(protect)。
对于public继承,基类的public和protect成员分别继承为派生类的public和protect成员,基类的private成员在派生类中被隐藏。
5.3继承:继承有单一继承和多重继承两种方式。
单继承的定义格式是class 派生类名:继承方式基类名{…}。
多重继承的声明方式是class 派生类名:继承方式1 基类名1,继承方式2 基类名2,……,继承方式n 基类名n{…}。
在C++中,要使公共基类只产生一个拷贝,应该把这个基类声明为虚基类。
使用关键字virtual,语法形式是class 派生类名:virtual 继承方式基类名{…}。
六、多态性6.1多态:多态性是指用一个名字定义不同的函数,这些函数执行不同但又类似的操作。
这样可以极大地提高代码利用效率。
6.2重载:函数重载,c++允许定义多个同名函数,只要这些函数属于不同的类或有不同的参数列表(类型,个数或不同类型参数的顺序至少有一个不同)。
在调用重载函数时,为某类操作取一个通用的名字,而由编译器解决具体由哪个函数来执行。
(析构函数无法重载)运算符重载:通过运算符重载可以使运算符在不同的上下文有不同的含义,便于程序功能的实现与修改。
三大原则:1.重载不改变优先级2.重载不改变运算符操作数个数3.重载不能创造新运算符6.3模板:模板可以利用以下的代码实现Template<class T> \\class也可以换为typename函数模板:模板函数可以实现多个不同类型的函数运用同种功能。
模板的使用可以进行显示实例化与隐式实例化,同时,函数模板也可以进行重载。
类模板:定义一个类模板是以关键字template开始,定义格式是:template<class 类型参数>Class 类名{……};七、虚函数当通过基类指针或引用将派生类对象作为基类使用时,覆写机制会失效,即只能访问基类中定义的成员。
定义虚函数的方法是Virtual 返回类型函数名(参数表){、函数体}在派生类中重新定义时,该函数的函数原型(包括返回类型,函数名,参数列表)必须与基类中的函数原型完全相同。
注意,一个类的构造函数不能是虚函数,析构函数可以为虚函数。
八、实验内容1.输入3个整数,按由小到大的顺序输出输入输出格式如下:输入:2 1 3输出:1 2 3设计程序如下:#include <iostream>using namespace std;int main(){int a,b,c,*p1,*p2,*p3,*p;cin>>a>>b>>c;p1=&a;p2=&b;p3=&c;if(a>b) {p=p2;p2=p1;p1=p;}else {if(b>c) {p=p3;p3=p2;p2=p;}if(a>c) {p=p3;p3=p2;p2=p;}}cout<<*p1<<" "<<*p2<<" "<<*p3;return 0;}2.输入3个字符串,按由小到大的顺序输出输入输出格式如下输入cbaabcbac输出abcbaccba设计程序如下:#include <iostream>#include<string>using namespace std;int main(){string a1,a2,a3,temp;cin>>a1>>a2>>a3;if (a1>a2){temp=a1;a1=a2;a2=temp;} if (a3<a2){if (a3<a1)cout<<a3<<endl<<a1<<endl<<a2; elsecout<<a1<<endl<<a3<<endl<<a2;}elsecout<<a1<<endl<<a2<<endl<<a3;return 0;}3.写一函数,将一个3X3的矩阵转置提示:矩阵可存放到二维数组中,用指针完成数的交换(swap)操作输入输出示例如下输入1 2 34 5 67 8 9输出1 4 72 5 83 6 9设计程序如下:#include <iostream>using namespace std;int main(){ int i,j,t;int a[3][3],(*p)[3],*q;for(i=0;i<3;i++)for(j=0;j<3;j++)cin>>a[i][j];p=a;q=a[0];for(i=0;i<3;i++)for(j=i;j<3;j++){ t=*(q+3*i+j);*(q+3*i+j)=*(q+3*j+i); *(q+3*j+i)=t; }for(p=a;p<a+3;p++){q=*p;cout<<*q<<" ";q++;cout<<*q<<" ";q++;cout<<*q<<endl; }return 0;}4.写一个函数,实现两个字符串的比较。