面向对象程序设计实验报告-实验一(4800字)

来源:m.fanwen118.com时间:2021.7.28

北京理工大学珠海学院实验报告

ZHUHAI CAMPAUS OF BEIJING INSTITUTE OF TECHNOLOGY

班级:13级计算机3班 学号:130201031037 姓名:郑永雄 指导教师:谭忠兵 实验题目:类和对象 实验时间:2014-04-09 成绩:

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

一、实验内容

程序1.声明一个日期类,日期的属性有年、月和日。方法有构造函数、析构函数、日期的显示。要求使用构造函数的重载,分别定义无参构造函数(使年月日的值分别为2013、1、1)和有参构造函数,并编写程序测试日期类。

程序2.创建一个Employee类,该类中有字符数组,表示姓名、街道地址、邮政编码。其功能有修改姓名、显示输出数据。要求函数放在类定义中,构造函数初始化每个成员,显示信息函数要求把对象中的完整信息打印出来。

程序3.建立类cylinder,cylinder的构造函数被传递了两个double值,分别表示圆柱体的半径和高度。用类cylinder计算圆柱的体积,并存储在一个double变量中。在类cylinder中包含一个成员函数vol,用来显示每个cylinder对象的体积。

程序4.定义一个复数类,要求定义构造函数和析构函数,并能够为用户提供复数的加法和减法运算。编写程序测试复数类。

程序5.定义一个矩形类。矩形的属性是左上角的顶点、长和宽,方法有构造函数、析构函数、显示、移动等。编写程序测试矩形类。

二、问题分析(类的数据成员、成员函数等的确定,对象的创建等)

程序1:首先声明一个日期类date,日期的属性(数据成员)有年year、月month和日day。成员函数是构造函数date、析构函数、日期的显示show()。在主函数中使用构造函数的重载,分别定义无参构造函数(使年月日的值分别为2013、1、1)和有参构造函数,并调用输出成员函数显示结果。

程序:2:首先创建一个Employee类,该类中有数据成员字符数组,表示姓名name、街道地址stree、邮政编码num。成员函数有修改姓名setname、显示输出数据show。在主函数中用构造函数初始化每个成员,调用显示信息函数把对象中的完整信息打印出来。

程序3:首先定义类cylinder,cylinder的构造函数被传递了两个double值,分别表示圆柱体的半径r和高度h。用类cylinder计算圆柱的体积,并存储在一个double变量v中。在类cylinder中包含一个成员函数vol,用来显示每个cylinder对象的体积。

程序:4:首先定义一个复数类complex,并定义构造函数和析构函数,设置成员函数set()为用户提供复数的加法和减法运算。并用输出函数print输出结果。

程序:5:定义一个矩形类。矩形的数据成员是左上角的顶点(x,y)、长long和宽wide,并 1

定义构造函数、析构函数、还有成员函数print显示、move移动等。

三、程序实现(完整程序)

第一题:

#include<iostream>

using namespace std;

class Date

{

private:

int year,month,day;

public:

Date()

{

year=2013;

month=1;

day=1;

}

Date(int y,int m,int d)

{

year=y;

month=m;

day=d;

}

2

~Date()

{

cout<<"析构函数"<<endl;

}

void show()

{

cout<<"显示日期"<<year<<"."<<month<<"."<<day<<endl;

}

};

int main()

{

Date a;

a.show();

Date b(2014,4,10);

b.show();

getchar();

getchar();

return 0;

}

第二题

#include<iostream>

3

#include<cmath>

using namespace std;

class Employee{

private:

char *name,*stree;

int post;

public:

Employee(char *x,char *y,int z)

{

strcpy(name,x);

strcpy(stree,y);

post=z;

}

void setname(char *a)

{

strcpy(name,a);

}

void Print_employee()

{

cout<<name[10]<<" "<<stree[50]<<" "<<post<<endl; }

};

4

int main()

{

Employee m("ben","zhbit",519000); char *b;

cin>>b;

m.setname(b);

m.Print_employee();

return 0;

}

第三题:

#include<iostream>

#include<cmath>

using namespace std;

class cylinder

{

private:

double radius,high; public:

cylinder(double h,double r) {

radius=r;

5

high=h;

}

double jisuan()

{

double v,pi=3.14159262; v=pi*radius*radius*high; return v;

}

void vol(double m) {

cout<<"体积="<<m<<endl; }

};

int main()

{

cylinder m(2,2);

double n;

n=m.jisuan();

m.vol(n);

getchar();

getchar();

return 0;

}

6

第四题:

#include<iostream>

#include<cmath>

using namespace std;

class Complex

{

private:

double real,imag; public:

Complex(double r,double i) {

real=r;

imag=i;

}

~Complex()

{

cout<<"析构函数"<<endl; }

void jisuan(double x,double y) {

real=real+x;

imag=imag+y;

}

7

void show()

{

cout<<"复数:"<<real<<"+"<<imag<<"i"<<endl; }

};

int main()

{

Complex m(5,7);

m.jisuan(2,2);

m.show();

getchar();

getchar();

return 0;

}

第五题:

#include<iostream>

#include<cmath>

using namespace std;

class Rectangle

{

private:

8

double x,y,lond,wide;

public:

Rectangle(double a,double b,double c,double d) {

x=a;

y=b;

lond=c;

wide=d;

}

~Rectangle()

{

cout<<"析构函数"<<endl;

}

void jisuan(double a,double b)

{

x=a+x;

y=b+y;

}

void show()

{

cout<<"左上角坐标"<<"("<<x<<","<<y<<")"<<endl; cout<<"右上角坐标"<<"("<<x+lond<<","<<y<<")"<<endl; 9

cout<<"左下角坐标"<<"("<<x<<","<<y+wide<<")"<<endl;

cout<<"右下角坐标"<<"("<<x+lond<<","<<y+wide<<")"<<endl; }

};

int main()

{

Rectangle n(0,4,5,3);

cout<<"显示矩形:"<<endl;

n.show();

cout<<"移动矩形"<<endl;

n.jisuan(2,2);

n.show();

getchar();

getchar();

return 0;

}

四、调试与运行

程序1:

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

程序2:

10

程序3:

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

程序4:

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

程序5:

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

五、实验总结:

1、学到了构造函数的构建,还有析构函数,成员函数等。通过对象调用成员函数实现某些功能。还有学会了运用string函数,简化了程序。

2、遇到了什么问题,如何解决的。

在运用new分配空间时,发现自己对字符串的知识忘记了很多。后来发现后面学习的string类很好用,可以简化程序。总的来说第一次试验都比较简单,做的比较顺利。

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

11

3、实验中需要特别注意什么,有哪些细节和技巧。

做实验前要熟悉试验运用的知识,写程序前最好先构思好再写。构造函数要注意没有返回类型的,可以有形参,而析构函数是没有参数的。

12


第二篇:面向对象程序设计实验报告 11800字

面向对象的程序设计实验

实验一 C#概述

一、实验目的

1. 熟悉Visual C#.NET集成开发环境。

2. 掌握控制台应用程序的开发方法。

3. 掌握Windows应用程序的开发方法。

二、实验要求

1. 整理上机步骤,总结经验和体会。

2. 完成实验日志和上交程序。

三、实验内容

题目一:最简单C#程序的开发

(1) 观察对话框的内容。在“项目类型”列表框中选中Visual C#选项;在“模板”列表框中选中“控制台应用程序”选项;在“名称”文本框中输入项目名称;在“位置”文本框中输入或选择项目的保存位置。单击“确定”按钮,将显示控制台应用程序代码编辑窗口,在该窗口内显示系统自动生成的相应代码。仔细观察并分析这些代码。

(2) 在代码编辑窗口内的Main()方法中添加如下代码:

using System;

namespace hello

{

class HelloWorld

{

public static void Main()

{

Console.WriteLine("Hello world!");

}

}

}

(1) F5】键,或单击工具栏上的

按钮,运行程序,查看运行结果。

(2) 在项目的保存位置处查看项目中过的所有文件。

题目二:创建控制台应用程序

(1) 选择Microsoft Visual Studio 2005 “Microsoft

Visual Studio 2005”命令,启动Visual Studio 2005,并仔细观察起始页的内容。

(2) “项目”命令,弹出“新建项目”对话框。仔

细观察对话框的内容。在“项目类型”列表框中选中Visual C#选项;在“模板”列表框中选中“控制台应用程序”选项;在“名称”文本框中输入项目名称;在“位置”文本框中输入或选择项目的保存位置。单击“确定”按钮,将显示控制台应用程序代码编辑窗口,在该窗口内显示系统自动生成的相应代码。仔细观察并分析这些代码。

(3) 在代码编辑窗口内的Main()方法中添加如下代码:

Console.Write("当前系统的日期为:");

//将系统的日期转换为长日期字符串表示形式进行输出

Console.WriteLine(DateTime.Now.ToLongDateString());

Console.Read();

(4) “全部保存”命令,保存项目。

(5) 选择“调试”“开始执行(不调试)”命令或按【Ctrl+F5】组合键运行程

序,并观察运行情况。

(6) 在项目的保存位置处查看项目中过的所有文件。

实验二 C#数据类型

一、实验目的

1. 了解C#中的各种数据类型及其相互转换方法。

2. 了解C#中的常量和变量。

3. 掌握C#中的常用的操作符与表达式。

4. 进一步熟悉C#程序的开发过程。

5. 掌握C#中选择结构语句的使用。

6. 掌握C#中循环结构语句的使用。

7. 掌握C#中的跳转结构语句。

二、实验要求

1. 分析程序,上机验证结果。

2. 写出程序,并调试程序,要给出测试数据和实验结果。

3. 整理上机步骤,总结经验和体会。

4. 完成实验日志和上交程序。

三、实验内容

题目一:程序分析

(1) 分析程序,写出程序的运行结果,并上机进行验证。 using System;

public class BoolTest

{

public static void Main()

{

Console.Write("请输入一个字符: ");

char c = (char) Console.Read();

if (Char.IsLetter(c))

if (Char.IsLower(c))

Console.WriteLine("字符是小写的。"); else

Console.WriteLine("字符是大写的。"); else

Console.WriteLine("字符不是字母。");

}

}

(2) 分析程序,写出程序的运行结果,并上机进行验证。 using System;

class test

{

public static void Main()

{

string a = "\u0068ello ";

string b = "world";

Console.WriteLine( a + b );

Console.WriteLine( a + b == "hello world" );

}

}

(3) 分析程序,写出程序的运行结果,并上机进行验证。

using System;

namespace _1

{

class Program

{

static void Main()

{

int a = 10;

Console.WriteLine("a={0}", a);

int b = new int();

Console.WriteLine("1:b={0}", b);

b = 10;

Console.WriteLine("2:b={0}", b);

Int32 c = 10;

Console.WriteLine("c={0}", c);

Int32 d = new Int32();

Console.WriteLine("1:d={0}", d);

d = 10;

Console.WriteLine("2:d={0}", d);

Console.WriteLine("int:{0}~~{1}", int.MinValue,int.MaxValue); Console.Read();

}

}

}

(4) 分析程序,写出程序的运行结果,并上机进行验证。

using System;

namespace _1

{

class Program

{

static void Main()

{

char c1 = 'a';

char c2 = '\x0062';

char c3 = '\u0063';

Console.WriteLine("c1:{0}\nc2:{1}\nc3:{2}\n",c1,c2,c3); Console.Read();

}

}

}

(5) 分析程序,写出程序的运行结果,并上机进行验证。 using System;

namespace _1

{

class Program

{

enum WeekDay { sun,mon,tue,wed,thu,fri,sat}

static void Main()

{

WeekDay a = WeekDay.sun;

Console.WriteLine(a);

WeekDay b = (WeekDay)4;

Console.WriteLine(b);

Console.Read();

}

}

}

(6) 分析程序,写出程序的运行结果,并上机进行验证。 using System;

namespace _1

{

class Program

{

static void Main(string[] args)

{

int[][] jagArray=new int[2][]{new int[5],new int[3]}; for (int i = 0; i < jagArray.GetLength(0); i++) {

for (int j = 0; j < jagArray[i].Length; j++) jagArray[i][j] = i + j;

}

for (int k = 0; k < 2;k++)

{

Console.WriteLine("jagArray[{0}]:",k);

for(int m=0;m<jagArray[k].Length;m++)

Console.Write("{0,-3}",jagArray[k][m]); Console.WriteLine();

}

Console.Read();

}

}

}

(7) 分析程序,写出程序的运行结果,并上机进行验证。 using System;

namespace _1

{

class Program

{

static void Main(string[] args)

{

object x;

x = 1;

Console.WriteLine("1:x={0},type is {1};",x,x.GetType()); x = 10.01;

Console.WriteLine("2:x={0},type is {1};", x, x.GetType()); x = '\u0061';

Console.WriteLine("3:x={0},type is {1};", x, x.GetType()); x = "Hello!";

Console.WriteLine("4:x={0},type is {1};", x, x.GetType()); Console.Read();

}

}

}

(8) 分析程序,写出程序的运行结果,并上机进行验证。 using System;

namespace _1

{

class Program

{

static void Main(string[] args)

{

Console.Write("请输入1-12之间的任意一个整数:"); string s=Console.ReadLine();

int month =int .Parse(s);

switch(month)

{

case 1:Console.WriteLine("January");break;

case 2:Console.WriteLine("February");break; case 3:Console.WriteLine("March");break;

case 4:Console.WriteLine("April");break;

case 5:Console.WriteLine("May");break;

case 6:Console.WriteLine("June");break;

case 7:Console.WriteLine("July");break;

case 8:Console.WriteLine("August");break;

case 9:Console.WriteLine("September");break; case 10:Console.WriteLine("October");break;

case 11:Console.WriteLine("Noveber");break;

case 12:Console.WriteLine("December");break;

default:Console.WriteLine("输入错误,转换失败。");break; }

Console.Read();

}

}

}

(9)分析程序,写出程序的运行结果,并上机进行验证。

using System;

namespace _1

{

class Program

{

static void Main(string[] args)

{

int[,] a = new int[5, 5];

a[0, 0] = 1;

for (int i = 1; i < 5; i++)

{

a[i, 0] = 1;

a[i, i] = 1;

for (int j = 1; j < i; j++)

a[i, j] = a[i - 1, j - 1] + a[i - 1, j];

}

for (int i = 0; i < 5; i++)

{

for (int j = 0; j <= i;j++ )

Console.WriteLine("{0}\t", a[i, j]);

Console.WriteLine();

}

Console.Read();

}

}

}

(10)分析程序,写出程序的运行结果,并上机进行验证。

using System;

namespace _1

{

class Program

{

static void Main(string[] args)

{

int odd = 0, even = 0;

int[] array = new int[] { 0, 4, 7, 8, 9, 10, 14, 17, 19, 24, 56 }; foreach (int i in array)

{

if (i % 2 == 0)

even++;

else

odd++;

}

Console.WriteLine("{0}个奇数,{1}个偶数", odd, even);

}

}

}

(11)分析程序,写出程序的运行结果,并上机进行验证。

using System;

public class TestDoWhile

{

public static void Main ()

{

int x;

int y = 0;

do

{

x = y++;

Console.WriteLine(x);

}

while(y < 5);

}

}

(12)分析程序,写出程序的运行结果,并上机进行验证。

using System;

namespace _1

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("---break---");

for (int i = 0; i < 10; i++)

{

if (i == 5) break;

Console.WriteLine("i is " + i);

}

Console.WriteLine("---continue---");

for (int i = 0; i < 10; i++)

{

if (i == 5) continue;

Console.WriteLine("i is " + i);

}

Console.Read();

}

}

}

题目二:程序编写

(1) 编写程序,定义一个包括学生基本资料的结构类型数据(要求包括学号、姓名、

性别、年龄、家庭住址等),并对其进行测试。

(2) 编写程序,将一年中的12个月建立一个枚举类型,并对其进行测试。

(3) 编写程序,使用int类型数据进行装箱与拆箱转换。

(4) 编写程序,分别用for、while、do…while语句实现求前n个自然数之和。

(5) 编写程序,输出九九乘法表。

实验三 C#面向对象程序设计

一、实验目的

1.理解C#语言是如何体现面向对象编程基本思想。

2.掌握类对象的定义。

3.了解类的封装方法,以及如何创建类和对象。

4.了解成员变量和成员方法的特性。

5.掌握静态成员的用法。

二、实验要求

1. 分析程序,上机验证结果。

2. 写出程序,并调试程序,要给出测试数据和实验结果。

3. 整理上机步骤,总结经验和体会。

4. 完成实验日志和上交程序。

三、实验内容

题目一:程序分析

(1)分析下面两个程序,确定那个程序好,说明理由。 程序要求:定义一个圆类,计算圆的面积和周长。 程序1:

public class circle

{

public static void Main()

{

double radium, delimeter, square;

const double pai = 3.1415926;

radium = Convert.ToInt32(Console.ReadLine());

delimeter = 2 * pai * radium;

square = pai * pai * radium;

Console.WriteLine("delimeter={0},square={1}", delimeter, square); Console.ReadLine();

}

}

程序2:

public class circle

{

double delimeter, square;

const double pai = 3.1415926;

public void calculate(double rad)

{

delimeter = 2 * pai * rad;

square = pai * pai * rad;

Console.WriteLine("delimeter={0},square={1}",delimeter,square);

}

public static void Main()

{

double radium;

circle cir = new circle();

radium = Convert.ToInt32(Console.ReadLine());

cir.calculate(radium);

Console.ReadLine();

}

}

(2)分析程序,写出程序的运行结果,并上机进行验证。 Using System;

public class students

{

string id,name;

int age;

public students(string id,string name,int age )

{

this.id = id;

this.name = name;

this.age = age;

}

public void Display()

{

Console.WriteLine("id={0},name={1},age={2}",id,name,age); }

public static void Main()

{

//string id, name;

//int age;

students stu = new students("0001","zhangsan",16); stu.Display();

Console.ReadLine();

}

}

(3)分析程序,写出程序的运行结果,并上机进行验证。 public class Date

{

private int Year, Month, Day;

public Date(int Year, int Month,int Day)

{

this.Year=Year;

this.Month=Month;

this.Day=Day;

}

public Date(System.DateTime dt)

{

Year = dt.Year;

Month = dt.Month;

Day = dt.Day;

}

public void DisplayDate()

{

Console.WriteLine("{0}年{1}月{2}日",Year,Month,Day);

}

}

public class Tester

{

public static void Main()

{

System.DateTime currentTime=System.DateTime.Now;

Date dt=new Date(2008,7,18);

dt.DisplayDate();

Date dt2 = new Date(currentTime);

dt2.DisplayDate();

Console.ReadLine();

}

}

题目二:程序编写

(1) 实现一个包含类属性方法的简单加法程序,并能显示结果。

(2) 实现一个Person类,要求:属性包含姓名、年龄、身份证号、工作、工资等,并

显示各属性的值。

实验四 C#面向对象程序设计(二)

一、实验目的

1. 掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。能够根据给定的要求定义类并实现类的成员函数。

2. 理解类的成员的访问控制的含义,公有、私有和保护成员的区别。

3. 掌握参数传递的用法。

4. 掌握属性的作用和使用。

二、实验要求

1. 分析程序,上机验证结果。

2. 写出程序,并调试程序,要给出测试数据和实验结果。

3. 整理上机步骤,总结经验和体会。

4. 完成实验日志和上交程序。

三、实验内容

题目一:程序分析

(1) 分析程序,写出程序的运行结果,并上机进行验证,然后回答后面问题。 public class BankAccount

{

static int totalAccountNumber=0;

string BankAccountId;

double initialDepositAmount = 0.00;

public BankAccount(string myId)

{

this.BankAccountId = myId;

this.initialDepositAmount = 0.00;

totalAccountNumber++;

}

public void displayid()

{

Console.WriteLine("mbaid={0},initialDepositAmount={1}",this.BankAccountId,this.initialDepositAmount);

}

public static void display()

{

Console.WriteLine("totalAccountNumber={0}", totalAccountNumber);

}

}

public class Tester

{

public static void Main()

{

BankAccount mba = new BankAccount("37000001");

BankAccount mba2 = new BankAccount("3700002");

BankAccount mba3 = new BankAccount("");

BankAccount mba4 = new BankAccount("3700004");

// Console.WriteLine("mba2ID={0}", mba2.BankAccountId);

mba2.displayid();

BankAccount.display();

Console.ReadLine();

}

}

请回答问题:

(1)按你自己的算法修改以上程序,比如可只输出生成的账户数。

(2)把注释去掉后会怎样,为什么?

(3)为什么display 用类名直接引用,可以用对象来引用么?尝试输出结果。

(4)类的静态变量和非静态变量的引用区别。判断一下语句的正确性:

静态方法只能使用静态变量,不能使用实例变量。因为对象实例化之前,实例变量不可用。这个观点真确么?()

类的静态变量只有一个版本,所有实例对象引用的都是同一个版本。()

对象实例化后,每个实例变量都被制作了一个副本,它们之间互不影响。()

题目二:程序编写

1. 编写一个传值调用的程序。

程序功能要求:程序首先给整型变量x 和y 赋初值3,5,然后使用传值调用方式调用方法对x 和y 做乘方并及输出x 和y 的乘方值,最后输出x和y得值。再将此方法给为对象调用加ref修饰查看输出结果差异。

【思考题】

1. 方法的参数传递有哪些方式?区别时什么?

2. 什么是构造方法。

实验五:创建Windows应用程序

一、实验目的

1.了解C#中的各种控件的属性赋值方法。

2.了解C#中控件的事件中输出的方法。

3.进一步熟悉C#程序的开发过程。

二、实验要求

1. 分析程序,上机验证结果。

2. 写出程序,并调试程序,要给出测试数据和实验结果。

3. 整理上机步骤,总结经验和体会。

4. 完成实验日志和上交程序。

三、实验内容

(3) 从开始菜单启动Visual Studio 2005。

(4)

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

“项目”命令,弹出“新建项目”对话框。在

“项目类型”列表框中选中Visual C#选项;在“模板”列表框中选中“Windows应用程序”选项;在“名称”文本框中输入项目名称;在“位置”文本框中输入或选择项目的保存位置。单击“确定”按钮,将显示窗口设计器窗口。

(5) 切换到“属性”窗口、“解决方案资源管理器”窗口和“类视图”窗口,查看

窗体的属性、项目的组成结构以及项目所设计的所有类。

(6) 双击打开“解决方案资源管理器”窗口中的各个文件,在代码编辑器窗口内查

看系统自动生成的与该项目有关的代码。

(7) 体。

(8) 在窗体上添加一个PictureBox控件和两个Button控件。设置窗体和各控件的

属性,如表1-1所示。

(9) 调整窗体大小以及各个控件的位置,如图1-1所示。

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

图1-1 调整控件位置后的界面

(10) 双击Button1按钮,在其Click事件内添加代码:

Graphics g = this.pictureBox1.CreateGraphics();

Pen p1 = new Pen(Color.Red, 5);

g.DrawRectangle(p1, 80, 50, 100, 50);

(11) 双击Button1按钮,在其Click事件内添加代码:

if (MessageBox.Show("你确定要退出吗?", "请确认...", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)

Application.Exit(); //退出应用程序

(12) F5】键,或单击工具栏上的

按钮,运行程序,查看运行结果。

(13) 在项目的保存位置处查看项目中过的所有文件。

更多类似范文
┣ 华中科技大学计算机学院C++实验报告 实验二 5200字
┣ 华中科技大学计算机学院C++实验报告 实验四 4500字
┣ 面向对象课程设计任务书 11900字
┣ 更多面向对象程序设计实验报告
┗ 搜索类似范文