《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语言中没有提供访问控制的特性,不同成员函数之间的访问权限不能进行限制。
面向对象程序设计(C#)实训报告
江门职业技术学院《面向对象程序设计》课程实训报告班别_____________学号_____________姓名_____________江门职业技术学院电子与信息技术系编实训一Windows窗体基本控件的应用【实训目的】1.熟悉C#的编译环境。
2.掌握编写Windwos项目程序的一般步骤3.掌握Windows窗体基本控件的使用方法。
4. 掌握使用C#集成开发环境编译调试程序。
【实训内容】◆练习1、时钟实例◆练习2、加法练习器实例◆练习3、项目选择器实例◆练习4、倒计时器实例◆练习5、英文字母练习器实例【实训报告】实训二数据库的创建和管理【实训目的】掌握:1、SQL Server2000数据库的创建方法2、由已经生面的数据库产生SQL Server脚本的方法3、查看、修改数据库属性的方法4、数据库删除的方法。
【实训内容】1、用企业管理器创建XXXXXX数据库2、用T—SQL语句创建XXXXXX数据库3、查看、修改XXXXXX数据库属性4、XXXXXX数据库删除【实训报告】实训三数据表的创建与管理【实训目的】掌握:1、表的创建方法2、修改表的结构3、能够向已经创建的表中添加、删除及修改数据【实训内容】分别使用T_SQL命令、企业管理器向前面所建XXXXXX数据库做:1、创建关系模式中的表2、管理表3、对表添加、修改和删除数据【实训报告】实训四(1)数据查询【实训目的】1、理解查询的概念和方法2、掌握查询分析器的使用方法3、掌握SELECT语句的应用、多表查询、复杂查询的方法【实训内容】分别使用T_SQL命令、企业管理器向前面所建数据库做(至少对每个实体表一个查询):1、单表查询2、多表查询3、进行嵌套查询4、另用新表存储以上其中一个查询结果5、查询统计汇总【实训报告】实训四(2)视图的创建与使用【实训目的】掌握创建视图、测试、更改视图的方法【实训内容】分别使用T_SQL命令、企业管理器向前面所建数据库创建、管理视图(至少8个)【实训报告】实训五设计数据完整性【实训目的】掌握:1、掌握约束的概念及实施方法2、掌握规则的概念及实施的方法3、掌握默认值的概念及实施的方法【实训内容】分别使用T_SQL命令向前面所建数据库做:1、建立表与表之间的联系,建立必要的外键与主键、外键、唯一、非空、检查、缺省约束。
C#面向程序设计上机报告
《面向对象程序设计》上机实验报告
测绘1301 杨乐1301060127
一、上机课中的操作步骤
1、在第一次上机实验课中,我们的任务比较简单,首先是熟悉visual studio的运行环境,练习“类”的新建及属性关系。
步骤:体系结构——新建关系图——UML类图——确定——保存路径;生成的页面如下:
2、第二次课程的学习与练习当中,我们学习了项目的新建及基本方法的操作运行。
项目的新建步骤:文件——新建——项目——visual c#——控制台应用程序——保存路径;生成的页面如下:
举例:题目1.3.2,如下:
设置断点运行,结果如下:
3、在第三次上机课程中,练习了书本当中的相关程序语句,在实践中掌握相关理论知识。
举例如下:
二、上机心得体会
1、注意细节
在第三次的上机实验中,前三题对于结构体或者方法的定义我像课本上一样放在了程序的最后,但是在第五题练习过程中,我发现排版不对,一检查才发现,这些定义也应该与main并列而非在整个程序之外;
2、细心操作
做题时若一味追求速度,就会有很多疏忽。
比如,把“class”错写为“clsss”,出现错误,幸亏发现及时;
3、思维转换
C语言我们已经学习了一年,所以很多时候会与c#的某些知识点混淆,比如,字符串的定义。
软件比较灵敏,能帮我们检查错误,但是平时的学习也要注意,避免失误。
(面向对象程序设计C)实践考核报告书
九江学院信息科学与技术学院《面向对象程序设计(C++)》课程设计(实训)报告书题目:C++类与对象的设计专业:应用电子技术班级:B1321班姓名:缪谢非学号:21311100136同组人员:指导老师:设计时间:年月日1.课程设计(实训)计划完成银行贷记卡模拟系统,具体要求如下:●客户余额的输出采用“5元5角5分”●允许客户存款、取款,并允许客户取款透支●设计一个主程序进行基本情况的演示2.功能分析与设计(根据课题的要求进行简单的分析,设计相应的类图和基本流程)(1)、需求与功能分析随着社会经济的发展,信息化程度的不断深入,银行的传统业务己愈来愈不能满足银行客户的需要。
现今,人们的金融意识、科技意识己经有了很大的提高,在紧张忙碌的生活中,己越来越来不习惯每月奔忙于各银行营业柜台之问去排队缴各种各样的费用了;同时,各种经营单位如电信、移动、供电、煤气、自来水、证券等等一是为了提高服务质量、方便客户,二是为了减轻自己日趋繁重的工作量,纷纷委托银行为其开展代收代付业务:同时,随着我国加入世贸组织的日益临近,我国的银行业将面临更加激烈的同业竞争,如何提供更多的金融产品和更优质的服务,如何吸引更多的客户,如何利用计算机技术加强银行帐户信息管理、进行银行业务再造,提高银行的工作效率和业务竟争能力是摆在各家银行面前的一个迫切需要解诀的问题。
近几年来,各商业银行加快了与社会各业的合作,利用自身的网点优势和业务特点,为其提供各种高效、快捷的代收代付业务,也就是中间代理业务,目前以与广大人民群众生活密切相关的各项缴费业务如水电费、电话费、手机费等代收业务为主,这些业务开展方式多种多样,但一般都离不开计算机的高效管理支持。
随着代理业务不断发展,业务品种越来越多,各项业务做法互有差异,这就对银行的电子化水平和相应的管理水平提出了更高的要求。
如何利用电子化的手段构建一个高效统一的、通用灵活的系统来管理各种各样的业务,是每个商业银行所要研究的课题。
《面向对象程序设计_C++》实验报告
《⾯向对象程序设计_C++》实验报告C++实验报告实验⼀ Visual C++6.0开发环境应⽤⼊门(验证性实验2学时)1.⽬的要求:了解Visual C++6.0的特点,熟悉了解Visual C++6.0的开发环境,学习使⽤Visual C++6.0编写标准的C++控制台应⽤程序。
2.实验内容:使⽤Visual C++来建⽴⼀个⾮图形化的标准C++程序,编译、运⾏教材中的例3-3,⽤公式法求解PI的数值,并尝试利⽤其他⽅法求解并获得相同的结果。
π=16arctan(1/5)-4arctan(1/239)arctan(x)=x-x3/3+x5/5-x7/7+…求π=?(1)源代码和说明:#includeusing namespace std;double arctan(double x){double sqr=x*x;double e=x;double r=0;int i;while(e/i>1e-15){double f=e/i;r=(i%4==1)?r+f:r-f;e=e*sqr;i+=2;}return r;}int main(){double a=16.0*arctan(1/5.0);double b=4.0*arctan(1/239.0);cout<<"PI="<return 0;}2)运⾏结果:1实验⼆ C++简单程序设计实验(验证性实验4学时)1.⽬的要求:会编写简单的C++程序;复习基本数据类型变量和常量的应⽤;复习运算符与表达式的应⽤;复习结构化程序设计基本控制结构的应⽤;复习⾃定义数据类型的应⽤;练习使⽤简单的输⼊输出;观察头⽂件的作⽤;学会使⽤VC6.0开发环境中的debug调试功能;熟练程序设计中的技巧;2.实验内容:1)给定⼀个字符变量输出其⼆进制形式。
例如char a=’a’;其⼆进制为00100001。
1)源代码和说明#includeusing namespace std;int main(){char ch;int j,k[8]={0};cout<<"请输⼊⼀个字符:"<cin>>ch;for(j=0;j<=7;j++){if(ch){if(ch%2==0)k[j]=0;elsek[j]=1;ch=(ch-(ch%2))/2;}}for(j=7;j>=0;j--){cout<}cout<}2)运⾏结果:2)给定⼀个字符变量输出其⼆进制反转形式。
面向对象程序设计实验报告
面向对象程序设计实验报告实验一C++基础1.1实验目的1.了解并熟悉开发环境,学会调试程序;2.熟悉C++中简单的标准输入输出函数的使用方法;3.理解const修饰符的作用并学会应用;4.理解内联函数的优缺点并学会其使用场合;5.理解并学会函数重载;6.理解并熟练掌握使用new和delete来分配内存;7.理解并熟练掌握引用的使用方法。
1.2实验内容1.2.1程序阅读1.理解下面的程序并运行,然后回答问题。
#include<iostream.h>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 d1=0.0;double d2=0.0;x1=max_def(5,6);x2=max_def(2,3,4);d1=max_def(2.1,5.6);d2=max_def(12.3,3.4,7.8);-------------------------------------------------------①cout<<"x1="<<x1<<endl;cout<<"x2="<<x2<<endl;cout<<"d1="<<d1<<endl;cout<<"d2="<<d2<<endl;--------------------------------------------------------②return 1;}问题一:上述程序的输出结果是什么?答:输出结果为问题二:①处调用的是哪个函数?答:①处调用的是double max_def(double x,double y)函数问题三:②处的输出结果为什么是d2=12,而不是d2=12.3?答:因为调用的int max_def(int x,int y,int z)函数返回值为整型。
面向对象程序设计》C实验报告
面向对象程序设计》C实验报告《面向对象程序设计》实验报告学院:专业:班级学号:姓名:学期:教师:实验一 C++基础练习院(系):课程名称:面向对象程序设计教师签名:实验目的和要求1.掌握C++程序的基本格式与规范,学会编写简单的C++程序。
2.理解C++程序结构的特点。
3.熟悉C++程序基本的输入和输出操作。
4.掌握C++数据类型常量和变量以及修饰符的使用方法。
5.掌握函数定义、函数调用和函数说明的方法。
6.熟悉作用域运算符的功能和基本使用方法。
7.掌握C++内存的动态分配与释放方法。
8.理解引用的概念,掌握引用的使用方法。
实验内容和步骤1. 调试如下的代码并回答问题。
#include <iostream.h>void main(){//First c++ programchar name[10];cout<<"please input your name:";cin>>name;cout<<"welcome "<<name<<endl;}(1)C++的注释和C有何不同?答:C语言的注释有一种,用/*……….*/作为注释分界符号C++除保留了这种注释方式之外,还提供了一种更有效的注释方式,该注释以“//”开始,到行尾结束。
(2)C++的输入和输出所使用的函数及其相应头文件与C有何不同?答:在C中进行输入输出操作时,常使用函数scanf和printf。
C++除了可以照常使用这两个函数进行输入输出外,还增加了标准输入流对象cin和标准输出流对象cout来进行输入和输出。
Iostream是C++系统定义的一个头文件,在这个文件中声明了程序所需要的输入和输出操作的有关信息。
在C语言中头文件中用“.h”作为后缀,如stdio.h、math.h等。
2. 单步调试如下的代码并回答问题。
#include <iostream.h>inline int f(int x){ return 2*x*x+4*x+5; }inline double f(double x){ return 2*x*x+4*x+5; }void main(){ int x=5;double y=5.2;cout<<f(x)<<endl;cout<<f(y)<<endl;}(1)inline的含义和作用是什么?答:含义:在函数说明前冠以关键字“inline”,该函数就被声明为内联函数,每当程序中出现对该函数的调用时C++编译器使用函数体中的代码插入到调用该函数的语句处,同时用实参取代形参。
面向对象程序设计实验报告
面向对象程序设计实验报告实验一C++基础1.1实验目的1.了解并熟悉开发环境,学会调试程序;2.熟悉C++中简单的标准输入输出函数的使用方法;3.理解const修饰符的作用并学会应用;4.理解内联函数的优缺点并学会其使用场合;5.理解并学会函数重载;6.理解并熟练掌握使用new和delete来分配内存;7.理解并熟练掌握引用的使用方法。
1.2实验内容1.2.1程序阅读1.理解下面的程序并运行,然后回答问题。
#include<iostream.h>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 d1=0.0;double d2=0.0;x1=max_def(5,6);x2=max_def(2,3,4);d1=max_def(2.1,5.6);d2=max_def(12.3,3.4,7.8);-------------------------------------------------------①cout<<"x1="<<x1<<endl;cout<<"x2="<<x2<<endl;cout<<"d1="<<d1<<endl;cout<<"d2="<<d2<<endl;--------------------------------------------------------②return 1;}问题一:上述程序的输出结果是什么?答:输出结果为问题二:①处调用的是哪个函数?答:①处调用的是double max_def(double x,double y)函数问题三:②处的输出结果为什么是d2=12,而不是d2=12.3?答:因为调用的int max_def(int x,int y,int z)函数返回值为整型。
C++面向对象程序设计基础实验报告
C++面向对象程序设计基础实验报告C++面向对象程序设计基础实验报告 (1)1面向对象的程序设计 (3)1.1基本概念 (3)1.1.1 类的特征 (3)1.1.2 基类 (3)1.1.3 子类 (3)2C++语言基础 (3)2.1C++优势 (3)2.2头文件变化 (3)2.3输入输出变化 (4)2.4数据类型 (4)2.5表达式 (4)2.6语句 (4)3类和对象 (4)3.1类 (4)3.2构造函数和析构函数 (5)3.3对象数组与对象指针 (5)4静态成员与友元 (5)4.1静态成员 (5)4.2友元 (5)5派生类与继承 (5)5.1继承 (5)5.2派生类 (5)5.3继承的两种方式 (6)6多态性 (6)6.1多态 (6)6.2函数重载 (6)6.3运算符重载 (6)6.4三大原则 (6)6.5模板 (6)6.5.1 模板 (6)6.5.2 函数模板 (7)6.5.3 类模板 (7)7虚函数 (7)8实验内容 (7)8.1输入3个整数,按由小到大的顺序输出 (7)8.2输入3个字符串,按由小到大的顺序输出 (8)8.3写一函数,将一个3X3的矩阵转置 (10)8.4两个字符串的比较 (11)8.5输出100以内的所有素数 (13)8.6实现10个整数的冒泡排序 (14)8.7求三个数的最大公约数与最小公倍数 (15)8.8用递归的方法求n! (17)8.9n个人围成一圈,顺序排号 (18)8.10给链表结点赋值 (20)8.11n个整数位置移动 (22)8.12计算矩形的周长和面积 (23)8.13学校在册人员类 (25)8.14构造一个日期时间类 (27)8.15设计一个汽车类 (29)9心得体会 (31)1面向对象的程序设计1.1基本概念面向对象的程序设计是通过对类、子类和对象等的设计来体现的,类是面向对象程序设计技术的核心。
类:定义了对象特征以及对象外观和行为的模板。
1.1.1类的特征(1).封装性:隐藏了类中对象的内部数据或操作细节,只看到外表信息。
面向对象程序设计实验报告
实验一 Visual C++环境实验名称:实验一Visual C++环境实验目的:⒈熟悉VC++的集成开发环境,学习运行一个C++程序的步骤。
⒉了解几种运算符的使用规则。
⒊掌握变量命名规则,学会变量的定义和使用。
实验原理:利用VC++编辑环境的便利来编写程序。
实验设备:电脑,VISUAL C++6.0实验内容:⒈通过一个最简单的程序熟悉用VC++来调试Dos程序的步骤:⑴使用Visual C++6.0对一个C++程序进行编辑、编译、连接和运行。
#include <iostream.h>void main(){cout<<”I am a student”<<endl;}实验代码:#include <iostream.h>void main(){cout<<"I am a student"<<endl;cout<<"THIS IS A 。
"<<endl;}实验结果:I am a student实验心得:THIS IS A 。
通过实验,我熟悉了VC++编辑环境,以及C++运算符及变量的特点。
整个实验过程为:1.开始、Microsoft visual sduio 6.0、Microsoft visual C++ 6.0打开创天中文VC++。
2.文件、新建、C++ source file输入程序、保存为meng.cpp。
3.编译、程序没有错误,(如有按要求修改)。
4.编译菜单下的执行meng.exe。
5.屏幕中弹出结果窗口。
实验二结构化程序设计实验名称:实验二结构化程序设计实验目的:⒈熟悉和理解C++语言中的类型简单数据(整型、实型、字符型)、运算、表达式;⒉掌握常见格式控制字符对输出结果的控制作用;⒊能利用学习的数据类型,编制简单的C++程序;⒋初步学习调试方法。
实验原理:利用对条件、循环语句、数组的掌握进行编程。
面向对象程序设计课程实验报告
课程实验报告课程名称:面向对象程序设计院系:专业班级:学号:姓名:指导教师:目录实验一.面向过程的整型栈编程 (1)1.需求分析 (1)1.1题目要求 (1)1.2需求分析 (2)2.系统设计 (2)2.1概要设计 (2)2.2详细设计 (3)4.软件测试 (5)5.特点与不足 (6)5.1技术特点 (6)5.2不足和改进的建议 (6)6.过程和体会 (6)6.1遇到的主要问题和解决方法 (6)6.2课程设计的体会 (7)7.源码和说明 (7)7.1文件清单及其功能说明 (7)7.2用户使用说明书 (7)7.3源代码 (7)实验二.面向对象的整型栈编程 (17)1.1题目要求 (17)1.2需求分析 (18)2.系统设计 (18)2.1概要设计 (18)2.2详细设计 (18)3.软件开发 (20)4.软件测试 (20)5.特点与不足 (20)5.1技术特点 (20)5.2不足和改进的建议 (21)6.过程和体会 (21)6.1遇到的主要问题和解决方法 (21)6.2课程设计的体会 (21)7.源码和说明 (21)7.1文件清单及其功能说明 (21)7.2用户使用说明书 (21)7.3源代码 (21)实验三.基于算符重载的整型栈编程 (27)1.需求分析 (27)1.2需求分析 (28)2.系统设计 (28)2.1概要设计 (28)2.2详细设计 (28)3.软件开发 (29)4.软件测试 (29)5.特点与不足 (29)5.1技术特点 (29)5.2不足和改进的建议 (29)6.过程和体会 (30)6.1遇到的主要问题和解决方法 (30)6.2课程设计的体会 (30)7.源码和说明 (30)7.1文件清单及其功能说明 (30)7.2用户使用说明书 (30)7.3源代码 (30)实验四. 面向对象的整型队列编程 (35)1.需求分析 (35)1.1题目要求 (35)2.系统设计 (36)3.软件开发 (36)4.软件测试 (36)5.特点与不足 (37)5.1技术特点 (37)5.2不足和改进的建议 (37)6.过程和体会 (37)6.1遇到的主要问题和解决方法 (37)6.2课程设计的体会 (37)7.源码和说明 (37)7.1文件清单及其功能说明 (37)7.2用户使用说明书 (38)7.3源代码 (38)实验五. 基于组合的整型队列编程 (43)1.需求分析 (43)1.1题目要求 (43)1.2需求分析 (44)2.系统设计 (44)4.软件测试 (44)5.特点与不足 (45)5.1技术特点 (45)5.2不足和改进的建议 (45)6.过程和体会 (45)6.1遇到的主要问题和解决方法 (45)6.2课程设计的体会 (45)7.源码和说明 (45)7.1文件清单及其功能说明 (45)7.2用户使用说明书 (45)7.3源代码 (46)实验六. 基于继承的整型队列编程 (52)1.需求分析 (52)1.1题目要求 (52)1.2需求分析 (53)2.系统设计 (53)3.软件开发 (53)4.软件测试 (53)5.1技术特点 (54)5.2不足和改进的建议 (54)6.过程和体会 (54)6.1遇到的主要问题和解决方法 (54)6.2课程设计的体会 (54)7.源码和说明 (55)7.1文件清单及其功能说明 (55)7.2用户使用说明书 (55)7.3源代码 (55)实验一.面向过程的整型栈编程1.需求分析1.1题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。
- 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.写一个函数,实现两个字符串的比较。