《C#语言程序设计》实 验 报 告.docx

上传人:b****7 文档编号:16013410 上传时间:2023-07-09 格式:DOCX 页数:26 大小:125.76KB
下载 相关 举报
《C#语言程序设计》实 验 报 告.docx_第1页
第1页 / 共26页
《C#语言程序设计》实 验 报 告.docx_第2页
第2页 / 共26页
《C#语言程序设计》实 验 报 告.docx_第3页
第3页 / 共26页
《C#语言程序设计》实 验 报 告.docx_第4页
第4页 / 共26页
《C#语言程序设计》实 验 报 告.docx_第5页
第5页 / 共26页
《C#语言程序设计》实 验 报 告.docx_第6页
第6页 / 共26页
《C#语言程序设计》实 验 报 告.docx_第7页
第7页 / 共26页
《C#语言程序设计》实 验 报 告.docx_第8页
第8页 / 共26页
《C#语言程序设计》实 验 报 告.docx_第9页
第9页 / 共26页
《C#语言程序设计》实 验 报 告.docx_第10页
第10页 / 共26页
《C#语言程序设计》实 验 报 告.docx_第11页
第11页 / 共26页
《C#语言程序设计》实 验 报 告.docx_第12页
第12页 / 共26页
《C#语言程序设计》实 验 报 告.docx_第13页
第13页 / 共26页
《C#语言程序设计》实 验 报 告.docx_第14页
第14页 / 共26页
《C#语言程序设计》实 验 报 告.docx_第15页
第15页 / 共26页
《C#语言程序设计》实 验 报 告.docx_第16页
第16页 / 共26页
《C#语言程序设计》实 验 报 告.docx_第17页
第17页 / 共26页
《C#语言程序设计》实 验 报 告.docx_第18页
第18页 / 共26页
《C#语言程序设计》实 验 报 告.docx_第19页
第19页 / 共26页
《C#语言程序设计》实 验 报 告.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

《C#语言程序设计》实 验 报 告.docx

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

《C#语言程序设计》实 验 报 告.docx

《C#语言程序设计》实验报告

 

《C#语言程序设计》实验报告

 

学院:

信息学院

专业:

计算机科学与技术

指导教师:

报告人:

学号:

班级:

实验一简单编程练习

一、目的与要求

1、熟悉VisualStudio.NET集成开发环境(IDE)

2、熟悉C#源程序语言的编辑、编译和运行过程

3、能够创建、编译和执行一个简单的C#程序

二、实验仪器

Windows操作系统,MicrosoftVisualStudio.NET2010。

三、实验内容

1.开发一个简单的控制台应用程序,该程序完成一段字符的输入,然后输出该字符串。

2.开发一个简单的Windows应用程序,该程序通过鼠标单击按钮在文本框中显示一行字符串。

四、实验过程及结果

1.控制台应用程序

(1)启动.NET2010。

(2)在“文件”菜单上找到“新建”->“项目”,打开“新建项目”对话框。

(3)在模板一栏选择“控制台应用程序”,在名称一栏输入项目的名称。

(4)位置一栏内指定的是项目存放的目录,可以更改为自己定制的目录,也可以使用系统提供的默认路径。

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

usingSystem;

namespaceTestConsole

{

classProgram

{

staticvoidMain()

{

stringstr;

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!

";

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

五、实验总结

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

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

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

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

2、必须定义类

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

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

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

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

实验二控制结构编程练习

一、目的与要求

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

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

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

二、实验仪器

Windows操作系统,MicrosoftVisualStudio.NET2010。

三、实验内容

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

+2!

+3!

+……+10!

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

四、实验过程及结果

1.1!

+2!

+3!

+……+10!

(1)启动.NET2010。

(2)在“文件”菜单上找到“新建”->“项目”,打开“新建项目”对话框。

(3)在模板一栏选择“控制台应用程序”,在名称一栏输入项目的名称。

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

usingSystem;

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!

+2!

+3!

+……+10!

={0}",sum);

}

}

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

2.一维数组排序编程

(1)启动.NET2010。

(2)在“文件”菜单上找到“新建”->“项目”,打开“新建项目”对话框。

(3)在模板一栏选择“控制台应用程序”,在名称一栏输入项目的名称。

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

usingSystem;

namespaceshuzu

{

classmaopo

{

publicstaticvoidMain()

{

int[]a=newint[10];

Console.WriteLine("请输入10个整数");

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

{

Console.Write("第[{0}]个数:

",i+1);

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

}

Console.WriteLine("排序前的十个数是:

");

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

{

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

}

Console.WriteLine();

inttemp;//临时变量

for(intj=0;j<9;j++)

{

for(inti=0;i<9-j;i++)

{

if(a[i]>a[i+1])

{

temp=a[i];

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

a[i+1]=temp;

}

}

}

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

{

Console.WriteLine("排序后的结果是:

");

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

}

Console.WriteLine();

}

}

}

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

五、实验总结

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

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

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

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

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

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

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

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

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

<条件运算>?

<运算真的结果>:

<运算假的结果>

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

if(<条件运算>)<运算真的结果>;当然也可以将else语句和if语句合并使用,指定其他的代码。

如果<条件运算>的结果为false时就执行else语句。

其语法结构如下:

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

switch语句。

实验三类设计练习

一、目的与要求

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

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

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

二、实验仪器

Windows操作系统,MicrosoftVisualStudio.NET2010。

三、实验内容

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

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

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

定义一个Test类,加入主方法,在主方法中分别定义三个类的对象和实例;定义Rectangle类的对象数组,将数组元素分别引用到刚定义的三个实例上,然后通过基类对象调用重写的方法。

四、实验过程及结果

(1)启动.NET2010。

(2)在“文件”菜单上找到“新建”->“项目”,打开“新建项目”对话框。

(3)在模板一栏选择“控制台应用程序”,在名称一栏输入项目的名称。

usingSystem;

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);

}

}

}

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

namespaceConsoleApplication2

{

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//直径

{

get

{

returnWidth;

}

}

publicdoubleCircumference()

{

return2*pi*radius;

}

publicoverridedoubleArea()//重写虚拟方法

{

returnpi*radius*radius;

}

publicoverridestringName//重写虚拟属性

{

get{return"圆";}

}

publicoverridestringToString()

{

return("圆心:

"+"("+xValue+","+yValue+")"+"半径"+Radius);

}

}

}

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

namespaceConsoleApplication2

{

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

{

get

{

return"圆柱";

}

}

publicoverridestringToString()

{

returnbase.ToString()+"高"+H;

}

}

}

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

namespaceConsoleApplication2

{

publicclassTest

{

publicstaticstringShowArea(Rectangle[]Items)

{

stringoutput="";

foreach(RectangleIteminItems)

output+="\n"+Item.Name+":

"+Item.ToString()+"面积"+Item.Area();

returnoutput;

}

publicstaticvoidMain()

{

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);

output+="体积"+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.了解事件参数类的定义和使用方法。

二、实验仪器

Windows操作系统,MicrosoftVisualStudio.NET2010。

三、实验内容

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

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

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

四、实验过程及结果

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

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

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

namespaceEventExample

{

classRadiusEventArgs:

EventArgs//事件参数类的定义

{

privatedoubler;

publicRadiusEventArgs(doubler)

{

this.r=r;

}

publicdoubleR

{

get

{

returnr;

}

}

}

classCircle//Circle类的定义

{

privatedoubler;

publicdelegatevoidMyDelegate(objectob,RadiusEventArgse);

//定义代理

publiceventMyDelegateradiusEvent;//定义事件

publicdoubleR

{

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()+"\r\n"+"体积="+(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应用程序的创建方法

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2