《C#语言程序设计》实验总结报告文档格式.docx

上传人:b****4 文档编号:17102835 上传时间:2022-11-28 格式:DOCX 页数:23 大小:125.97KB
下载 相关 举报
《C#语言程序设计》实验总结报告文档格式.docx_第1页
第1页 / 共23页
《C#语言程序设计》实验总结报告文档格式.docx_第2页
第2页 / 共23页
《C#语言程序设计》实验总结报告文档格式.docx_第3页
第3页 / 共23页
《C#语言程序设计》实验总结报告文档格式.docx_第4页
第4页 / 共23页
《C#语言程序设计》实验总结报告文档格式.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

《C#语言程序设计》实验总结报告文档格式.docx

《《C#语言程序设计》实验总结报告文档格式.docx》由会员分享,可在线阅读,更多相关《《C#语言程序设计》实验总结报告文档格式.docx(23页珍藏版)》请在冰豆网上搜索。

《C#语言程序设计》实验总结报告文档格式.docx

System.Console.WriteLine("

Pleaseinputastring!

"

);

str=System.Console.ReadLine();

System.Console.WriteLine(str);

}

}

(6)运行应用程序(ctrl+F5)。

2.Windows应用程序

(1)新建项目,选择Windows应用程序,输入名称为:

TestWindows。

(2)在主窗体上放置一个TextBox和一个Button。

(3)选中TextBox,展开它的属性面板(单击鼠标右键,选择属性),将它的Name属性设置为txtContent,Text属性设置为空。

(4)选中Button,展开它的属性面板,将它的Name属性设置为btnType,Text属性设置为“显示”。

(5)在窗体上鼠标双击按钮,在生成的事件处理方法内添加如下的代码:

txtContent.Text="

hello!

;

五、实验总结

C#较其他语言比如Java,在可视化界面方面更方便。

采用拖拽式的界面设计操作,对新手来说更好入门。

除了界面其他方面和其他语言还有一定区别。

1、必须借助.NETFramework类库实现

2、必须定义类

3、类的代码主要由方法组成

4、C#程序中的方法的结构由头部和方法体构成

5、C#程序的输入与输出操做:

需要借助Console的类方法(ReadLine、WriteLine)

实验二控制结构编程练习

1、掌握分支结构语句的语法书写格式

2、掌握循环结构语句的语法书写格式

3、综合利用各种结构语句完成特定的任务

1.开发一个简单的控制台应用程序,求1!

+2!

+3!

+……+10!

2.开发一个简单的控制台应用程序,该程序完成一个一维数组排序编程,然后输出该数组。

1.1!

(4)按确定以后用下面的代码替换Program.cs已有的所有代码:

classEx2

publicstaticvoidMain()

inti,k,m=1,sum=0;

for(i=1;

i<

=10;

i++)

{

for(k=1;

k<

=i;

k++)

m=m*k;

sum=sum+m;

m=1;

}

Console.WriteLine("

1!

+……+10!

={0}"

sum);

}

(5)运行应用程序(ctrl+F5)。

2.一维数组排序编程

(1)启动.NET2010。

namespaceshuzu

classmaopo

publicstaticvoidMain()

int[]a=newint[10];

Console.WriteLine("

请输入10个整数"

for(inti=0;

10;

Console.Write("

第[{0}]个数:

i+1);

a[i]=Int32.Parse(Console.ReadLine());

排序前的十个数是:

{0}\t"

a[i]);

Console.WriteLine();

inttemp;

//临时变量

for(intj=0;

j<

9;

j++)

9-j;

if(a[i]>

a[i+1])

temp=a[i];

a[i]=a[i+1];

a[i+1]=temp;

for(inti=0;

排序后的结果是:

循环就是重复执行一些语句。

这个技术使用起来非常方便,因为可以对操作重复任意多次,而无需每次都编写相同的代码。

while循环非常类似于do循环,但有一个重要的区别:

while语句中的布尔测试是在循环开始时进行,而不是最后。

如果测试结果为false,循环代码将不会被执行,而直接执行循环后面的代码。

分支是控制下一步要执行哪些代码的过程。

要跳转的代码是由某个条件语句来控制的,这个条件语句使用布尔逻辑,对测试值和一个或多个可能的值进行比较。

C#中的分支结构有以下三种:

1、三元运算其语法如下:

<

条件运算>

?

<

运算真的结果>

:

运算假的结果>

2、if语句其最简单语法:

if(<

)<

当然也可以将else语句和if语句合并使用,指定其他的代码。

如果<

的结果为false时就执行else语句。

其语法结构如下:

){<

}else{<

}3、我们知道当进行的比较少的情况下用if与else语句是很方便的,但是如果我们进行很多的比较时,就应该考虑使用另一种分支结构:

switch语句。

实验三类设计练习

1、掌握C#语言定义类的方法。

2、掌握派生类的设计方法。

3、理解运行时多态的含义。

1.依次定义Rectangle,Circle,Cylinder三个类,Circle类继承于Rectangular,Cylinder继承于Circle。

在Rectangle类中需要定义属性,虚拟的Area()方法,虚拟的Name属性,重写ToString()方法;

在Circle类中需要定义属性,重写Area()方法,重写Name属性,重写ToString()方法,定义周长方法。

在Cylinder类中要定义Volume方法,重写Area,ToString方法,Name属性。

定义一个Test类,加入主方法,在主方法中分别定义三个类的对象和实例;

定义Rectangle类的对象数组,将数组元素分别引用到刚定义的三个实例上,然后通过基类对象调用重写的方法。

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

namespaceConsoleApplication2

publicclassRectangle

publicconstdoublepi=Math.PI;

privateintx,y;

privatedoublewidth,height;

publicRectangle(intx,inty,doublewidth,doubleheight)

this.x=x;

this.y=y;

this.width=width;

this.height=height;

publicintY

get{returny;

set{y=value;

publicintX

get{returnx;

set{x=value;

publicdoubleHeight

get{returnheight;

set{height=value;

publicdoubleWidth

get{returnwidth;

set{width=value;

publicvirtualdoubleArea()//定义虚拟方法

returnheight*width;

publicvirtualstringName//虚拟属性

get

return"

矩形"

publicoverridestringToString()

return("

左上角坐标"

+"

("

+X+"

"

+Y+"

)"

宽"

+width+"

高"

+height);

publicclassCircle:

Rectangle

privateintxValue,yValue;

privatedoubleradius;

publicCircle(intx,inty,doubler):

base(x-(int)r,y-(int)r,2*r,2*r)

this.xValue=x;

this.yValue=y;

this.radius=r;

publicintYValue//圆心坐标

get{returnyValue;

set{yValue=value;

publicintXValue

get{returnxValue;

set{xValue=value;

publicdoubleRadius

get{returnradius;

set{radius=value;

publicdoubleDiameter//直径

returnWidth;

publicdoubleCircumference()

return2*pi*radius;

publicoverridedoubleArea()//重写虚拟方法

returnpi*radius*radius;

publicoverridestringName//重写虚拟属性

get{return"

圆"

圆心:

+xValue+"

+yValue+"

半径"

+Radius);

classCylinder:

Circle

privatedoubleh;

publicCylinder(intx,inty,doubler,doubleh):

base(x,y,r)

H=h;

publicdoubleH

get{returnh;

set{h=value;

publicoverridedoubleArea()

returnpi*Radius*Radius;

publicdoubleVolume()

returnbase.Area()*H;

publicoverridestringName

圆柱"

returnbase.ToString()+"

+H;

publicclassTest

publicstaticstringShowArea(Rectangle[]Items)

stringoutput="

foreach(RectangleIteminItems)

output+="

\n"

+Item.Name+"

+Item.ToString()+"

面积"

+Item.Area();

returnoutput;

Rectanglerectangle1=newRectangle(0,0,35.2,100);

Circlecircle1=newCircle(10,8,10);

CylinderCylinder1=newCylinder(12,6,10.35,25.6);

Rectangle[]shape=newRectangle[3];

shape[0]=rectangle1;

shape[1]=circle1;

shape[2]=Cylinder1;

stringoutput=ShowArea(shape);

体积"

+Cylinder1.Volume();

Console.WriteLine(output,"

运行结果"

(4)运行应用程序(ctrl+F5)。

类的定义是以关键字 

class 

开始,后跟类的名称。

类的主体,包含在一对花括号内。

虚方法特点总结:

1,在父类中把需要设置为虚方法的方法前加virtual标记;

2,虚方法在父类中必须有实现,哪怕是空实现

3,子类继承父类后,可以选择对虚方法进行重写也可以选择不进行重写;

4,当子类重写父类方法的时候,必须保证重写后的方法和原方法的访问修饰符,返回值类型,方法名,参数列表完全一致;

5,当方法的标记是virtual和override的时候都可以重写。

1.实现继承和接口继承

  *实现继承:

表示一个类型派生于基类型,它拥有该基类型的所有成员字段和函数。

在实现继承中,派生类型采用基类型的每个函数的实现代码,除非在派生类型的定义中指定某个函数的实现代码。

在需要给现有的类型添加功能,或许多相关的类型共享一组重要的公共功能时,可以使用这种类型的继承。

  *接口继承:

表示一个类型只继承了函数的签名,没有继承任何的代码。

在需要指定该类型具有某些可用的特性时,最好使用这种类型的继承。

  2.多重继承

  C#不支持多重继承,但C#允许类型派生自多个接口————多重接口继承。

这说明,C#类可以派生自另一个类和任意多个接口。

更准确的说,因为System.Object是一个公共的基类,所以每个C#(除Object之外)都有一个基类,还可以有任意多个接口。

  3.结构的继承

使用结构的一个限制是结构不支持实现继承,但每个结构都自动派生自System.ValueType。

不能编码实现类型层次的结构,但结构可以实现接口。

同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。

换句话说,实际上就是同一个类型的实例调用“相同”的方法,产生的结果是不同的。

这里的“相同”打上双引号是因为这里的相同的方法仅仅是看上去相同的方法,实际上它们调用的方法是不同的。

实验四委托事件处理编程

1.掌握代理的定义,代理的实例化和代理的调用。

2.掌握代理的本质。

3.掌握事件代理的定义,事件的定义,事件的触发以及实例化事件代理和事件处理方法的实现。

4.了解事件参数类的定义和使用方法。

在一个文本框中输入圆的半径,回车之后,将半径的值赋给circle类(自定义的类)的R属性,从而触发一个事件,在主窗体类中设计事件处理方法,在事件处理方法中要根据半径的值计算对应的圆的面积,周长和对应的球的体积。

计算的结果通过文本框的方式显示出来。

注意需要定义一个事件参数类来记录半径的值,事件触发后将半径的值传递给事件处理方法,事件处理方法才能根据半径的值进行计算。

1.创建一个名为“EventExample”的Windows应用程序,在主窗体上放置两个TextBox,将第二个TextBox的Multiline属性设置为true,ReadOnly属性设置为true,如下图所示。

2.向应用程序添加一个类,在对应文件中添加如下代码:

namespaceEventExample

classRadiusEventArgs:

EventArgs//事件参数类的定义

privatedoubler;

publicRadiusEventArgs(doubler)

this.r=r;

publicdoubleR

returnr;

classCircle//Circle类的定义

publicdelegatevoidMyDelegate(objectob,RadiusEventArgse);

//定义代理

publiceventMyDelegateradiusEvent;

//定义事件

set

r=value;

3.回到主窗体的类,添加Circle类的对象;

radiusEvent事件的实例化(封装事件处理方法);

编写事件处理方法。

publicpartialclassForm1:

Form

privateCirclec;

publicForm1()

InitializeComponent();

创建Circle类的实例;

c.radiusEvent事件实例化;

voidc_radiusEvent(objectob,RadiusEventArgse)

textBox2.Text="

面积="

+(Math.PI*e.R*e.R).ToString()+"

\r\n"

周长="

+(2*Math.PI*e.R).ToString()+"

体积="

+(4.0/3*Math.PI*e.R*e.R*e.R).ToString();

4.映射textBox1的KeyDown事件,判断当输入回车时修改Circle类的R属性。

c.R=Convert.ToDouble(textBox1.Text);

5.运行程序,测试设计的功能。

代理就是用来定义指向方法的引用

1.代理声明的语法:

[public/private]delegate<

返回值类型>

代理名称>

(<

参数列表>

2.代理“实例化”:

代理声明相当于类的定义。

有了类的定义后我们要还需生成这个类的对象;

同样有了代理的声明我们还需要“实例化”代理

委托是一种引用方法的类型。

一旦为委托分配了方法,委托将于该方法具有完全相同的行为。

委托的方法的使用可以向其他任何方法一样,具有参数和返回值。

委托与代理的比较

代理:

是把一些事情交给某人帮忙去完成。

委托:

是当某件事情发生的时候,顺便干某件事情。

委托就相当于一个触发器罢了。

实验四WinForm程序设计

1.熟悉Windows应用程序的创建方法。

2.掌握代理的本质

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 生产经营管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1