《C#语言程序设计》实 验 报 告--精选文档_第1页
《C#语言程序设计》实 验 报 告--精选文档_第2页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C#语言程序设计实 验 报 告 学院: 信息学院 专业: 计算机科学与技术 指导教师: 报告人: 学号: 班级: 实验一 简单编程练习一、目的与要求1、熟悉Visual Studio.NET集成开发环境(IDE)2、熟悉C#源程序语言的编辑、编译和运行过程3、能够创建、编译和执行一个简单的C#程序二、实验仪器Windows操作系统,Microsoft Visual Studio .NET 2010。三、实验内容1.开发一个简单的控制台应用程序,该程序完成一段字符的输入,然后输出该字符串。2.开发一个简单的Windows应用程序,该程序通过鼠标单击按钮在文本框中显示一行字符串。四、实验过程及结果

2、1.控制台应用程序 (1)启动.NET 2010。 (2)在“文件”菜单上找到“新建”-“项目”,打开“新建项目”对话框。 (3)在模板一栏选择“控制台应用程序”,在名称一栏输入项目的名称。 (4)位置一栏内指定的是项目存放的目录,可以更改为自己定制的目录,也可以使用系统提供的默认路径。 (5)按确定以后用下面的代码替换Program.cs已有的所有代码:using System;namespace TestConsole class Program static void Main() string str; System.Console.WriteLine(Please input a s

3、tring !); 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属性设置为“显示”

4、。(5)在窗体上鼠标双击按钮,在生成的事件处理方法内添加如下的代码:txtContent.Text = hello!;(6)运行应用程序(ctrl + F5)。五、实验总结C#较其他语言比如Java,在可视化界面方面更方便。采用拖拽式的界面设计操作,对新手来说更好入门。除了界面其他方面和其他语言还有一定区别。1、必须借助 .NET Framework类库实现2、必须定义类3、类的代码主要由方法组成4、C#程序中的方法的结构由头部和方法体构成5、C#程序的输入与输出操做:需要借助Console的类方法(ReadLine、WriteLine)实验二 控制结构编程练习一、目的与要求1、掌握分支结构语

5、句的语法书写格式2、掌握循环结构语句的语法书写格式3、综合利用各种结构语句完成特定的任务二、实验仪器Windows操作系统,Microsoft Visual Studio .NET 2010。三、实验内容1. 开发一个简单的控制台应用程序,求1!+2!+3!+10!。2. 开发一个简单的控制台应用程序,该程序完成一个一维数组排序编程,然后输出该数组。四、实验过程及结果1. 1!+2!+3!+10! (1)启动.NET 2010。 (2)在“文件”菜单上找到“新建”-“项目”,打开“新建项目”对话框。 (3)在模板一栏选择“控制台应用程序”,在名称一栏输入项目的名称。(4)按确定以后用下面的代码

6、替换Program.cs已有的所有代码:using System;class Ex2public static void Main()int i,k,m=1,sum=0;for (i=1;i=10;i+)for(k=1;k“项目”,打开“新建项目”对话框。 (3)在模板一栏选择“控制台应用程序”,在名称一栏输入项目的名称。(4)按确定以后用下面的代码替换Program.cs已有的所有代码:using System;namespace shuzuclass maopopublic static void Main()int a=new int10;Console.WriteLine(请输入10个

7、整数);for(int i=0;i10;i+)Console.Write(第0个数:,i+1);ai=Int32.Parse(Console.ReadLine();Console.WriteLine(排序前的十个数是:);for(int i=0;i10;i+)Console.Write(0t,ai);Console.WriteLine();int temp;/临时变量for(int j=0;j 9;j+)for(int i=0;iai+1)temp=ai; ai=ai+1;ai+1=temp;for (int i=0;i10;i+)Console.WriteLine(排序后的结果是:);Con

8、sole.Write(0t,ai);Console.WriteLine();(5)运行应用程序(ctrl + F5)。五、实验总结循环就是重复执行一些语句。这个技术使用起来非常方便,因为可以对操作重复任意多次,而无需每次都编写相同的代码。while循环非常类似于do循环,但有一个重要的区别:while语句中的布尔测试是在循环开始时进行,而不是最后。如果测试结果为false,循环代码将不会被执行,而直接执行循环后面的代码。分支是控制下一步要执行哪些代码的过程。要跳转的代码是由某个条件语句来控制的,这个条件语句使用布尔逻辑,对测试值和一个或多个可能的值进行比较。 C#中的分支结构有以下三种: 1、

9、三元运算 其语法如下: ?:2、if语句 其最简单语法: if() ; 当然也可以将else语句和if语句合并使用,指定其他的代码。如果的结果为false时就执行else语句。其语法结构如下: if() else 3、我们知道当进行的比较少的情况下用if与else语句是很方便的,但是如果我们进行很多的比较时,就应该考虑使用另一种分支结构:switch语句。实验三 类设计练习一、目的与要求1、掌握C#语言定义类的方法。2、掌握派生类的设计方法。3、理解运行时多态的含义。二、实验仪器Windows操作系统,Microsoft Visual Studio .NET 2010。三、实验内容1. 依次定

10、义Rectangle, Circle, Cylinder三个类,Circle类继承于Rectangular,Cylinder继承于Circle。在Rectangle类中需要定义属性,虚拟的Area()方法,虚拟的Name属性,重写ToString()方法;在Circle类中需要定义属性,重写Area()方法,重写Name属性,重写ToString()方法,定义周长方法。在Cylinder类中要定义Volume方法,重写Area,ToString方法,Name属性。 定义一个Test类,加入主方法,在主方法中分别定义三个类的对象和实例;定义Rectangle类的对象数组,将数组元素分别引用到刚定

11、义的三个实例上,然后通过基类对象调用重写的方法。四、实验过程及结果 (1)启动.NET 2010。 (2)在“文件”菜单上找到“新建”-“项目”,打开“新建项目”对话框。 (3)在模板一栏选择“控制台应用程序”,在名称一栏输入项目的名称。using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication2 public class Rectangle public const double pi = Math.PI; private int

12、x, y; private double width, height; public Rectangle(int x, int y, double width, double height) this.x = x; this.y = y; this.width = width; this.height = height; public int Y get return y; set y = value; public int X get return x; set x = value; public double Height get return height; set height = v

13、alue; public double Width get return width; set width = value; public virtual double Area()/定义虚拟方法 return height * width; public virtual string Name /虚拟属性 get return 矩形; public override string ToString() return (左上角坐标 + ( + X + , + Y + ) + 宽 + width + 高 + height); using System;using System.Collectio

14、ns.Generic;using System.Linq;using System.Text;namespace ConsoleApplication2 public class Circle : Rectangle private int xValue, yValue; private double radius; public Circle(int x, int y, double r) : base(x - (int)r, y - (int)r, 2 * r, 2 * r) this.xValue=x; this.yValue=y; this.radius=r; public int Y

15、Value/圆心坐标 get return yValue; set yValue = value; public int XValue get return xValue; set xValue = value; public double Radius get return radius; set radius = value; public double Diameter/直径 get return Width; public double Circumference() return 2*pi*radius; public override double Area() /重写虚拟方法 r

16、eturn pi * radius * radius; public override string Name/重写虚拟属性 get return 圆; public override string ToString() return (圆心: + ( + xValue + , + yValue + ) + 半径 + Radius); using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication2 class Cylinder : Ci

17、rcle private double h; public Cylinder(int x, int y, double r, double h) : base(x, y, r) H = h; public double H get return h; set h = value; public override double Area() return pi * Radius * Radius; public double Volume() return base.Area() * H; public override string Name get return 圆柱; public ove

18、rride string ToString() return base.ToString() + 高 + H; using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication2 public class Test public static string ShowArea(Rectangle Items) string output = ; foreach (Rectangle Item in Items) output += n + I

19、tem.Name + : + Item.ToString() + 面积 + Item.Area(); return output; public static void Main() Rectangle rectangle1 = new Rectangle(0, 0, 35.2, 100); Circle circle1 = new Circle(10, 8, 10); Cylinder Cylinder1 = new Cylinder(12, 6, 10.35, 25.6); Rectangle shape = new Rectangle3; shape0 = rectangle1; sha

20、pe1 = circle1; shape2 = Cylinder1; string output = ShowArea(shape); output += 体积 + Cylinder1.Volume(); Console.WriteLine(output, 运行结果); (4)运行应用程序(ctrl + F5)。五、实验总结类的定义是以关键字class开始,后跟类的名称。类的主体,包含在一对花括号内。虚方法特点总结:1,在父类中把需要设置为虚方法的方法前加virtual标记;2,虚方法在父类中必须有实现,哪怕是空实现3,子类继承父类后,可以选择对虚方法进行重写也可以选择不进行重写;4,当子类重

21、写父类方法的时候,必须保证重写后的方法和原方法的访问修饰符,返回值类型,方法名,参数列表完全一致;5,当方法的标记是virtual和override的时候都可以重写。1.实现继承和接口继承*实现继承:表示一个类型派生于基类型,它拥有该基类型的所有成员字段和函数。在实现继承中,派生类型采用基类型的每个函数的实现代码,除非在派生类型的定义中指定某个函数的实现代码。在需要给现有的类型添加功能,或许多相关的类型共享一组重要的公共功能时,可以使用这种类型的继承。*接口继承:表示一个类型只继承了函数的签名,没有继承任何的代码。在需要指定该类型具有某些可用的特性时,最好使用这种类型的继承。2.多重继承C#不

22、支持多重继承,但C#允许类型派生自多个接口多重接口继承。这说明,C#类可以派生自另一个类和任意多个接口。更准确的说,因为System.Object是一个公共的基类,所以每个C#(除Object之外)都有一个基类,还可以有任意多个接口。3.结构的继承使用结构的一个限制是结构不支持实现继承,但每个结构都自动派生自System.ValueType。不能编码实现类型层次的结构,但结构可以实现接口。同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。换句话说,实际上就是同一个类型的实例调用“相同”的方法,产生的结果是不同的。这里的“相同”打上双引号是因为这里的相同的方法仅仅是看

23、上去相同的方法,实际上它们调用的方法是不同的。实验四 委托事件处理编程一、目的与要求1.掌握代理的定义,代理的实例化和代理的调用。2.掌握代理的本质。3.掌握事件代理的定义,事件的定义,事件的触发以及实例化事件代理和事件处理方法的实现。4.了解事件参数类的定义和使用方法。二、实验仪器Windows操作系统,Microsoft Visual Studio .NET 2010。三、实验内容在一个文本框中输入圆的半径,回车之后,将半径的值赋给circle类(自定义的类)的R属性,从而触发一个事件,在主窗体类中设计事件处理方法,在事件处理方法中要根据半径的值计算对应的圆的面积,周长和对应的球的体积。计

24、算的结果通过文本框的方式显示出来。注意需要定义一个事件参数类来记录半径的值,事件触发后将半径的值传递给事件处理方法,事件处理方法才能根据半径的值进行计算。四、实验过程及结果 1.创建一个名为“EventExample”的Windows应用程序,在主窗体上放置两个TextBox,将第二个TextBox的Multiline属性设置为true,ReadOnly属性设置为true,如下图所示。 2.向应用程序添加一个类,在对应文件中添加如下代码:using System;using System.Collections.Generic;using System.Text;namespace Event

25、Example class RadiusEventArgs : EventArgs /事件参数类的定义 private double r; public RadiusEventArgs(double r) this.r = r; public double R get return r; class Circle /Circle 类的定义 private double r; public delegate void MyDelegate(object ob, RadiusEventArgs e);/定义代理 public event MyDelegate radiusEvent; /定义事件

26、public double R set r = value; 3.回到主窗体的类,添加Circle类的对象;radiusEvent事件的实例化(封装事件处理方法);编写事件处理方法。 public partial class Form1 : Form private Circle c; public Form1() InitializeComponent(); 创建Circle类的实例; c.radiusEvent 事件实例化; void c_radiusEvent(object ob, RadiusEventArgs e) textBox2.Text = 面积= + (Math.PI * e

27、.R * e.R).ToString() + rn + 周长 = + (2 * Math.PI * e.R).ToString() + rn + 体积 = + (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.代理“实例化”:

28、代理声明相当于类的定义。有了类的定义后我们要还需生成这个类的对象;同样有了代理的声明我们还需要“实例化”代理委托是一种引用方法的类型。一旦为委托分配了方法,委托将于该方法具有完全相同的行为。委托的方法的使用可以向其他任何方法一样,具有参数和返回值。委托与代理的比较代理:是把一些事情交给某人帮忙去完成。委托:是当某件事情发生的时候,顺便干某件事情。委托就相当于一个触发器罢了。实验四 WinForm程序设计一、目的与要求1.熟悉Windows应用程序的创建方法。2.掌握代理的本质。3.掌握事件代理的定义,事件的定义,事件的触发以及实例化事件代理和事件处理方法的实现。4.了解事件参数类的定义和使用方

29、法。二、实验仪器Windows操作系统,Microsoft Visual Studio .NET 2010。三、实验内容创建一个Windows应用程序能实现简单的打字功能。首先随机生成一段英文字母序列,这段文本只能由英文大小写字母、数字、空格组成。用户可以在文本框中输入对应的文本,实现打字操作,待完成后,程序能给出此次打字的成绩,并重新随机生成一段文本。程序的界面类似下面的形式: 在窗体上需要安装一个定时器,出题后设置打字总时间启动定时器,定时器每触发一次click事件修改一次剩余时间,当剩余时间为零时不允许再答题。在输入字符的过程中对输错的字符给出提示。四、实验过程及结果1.创建名为Type

30、r的Windows应用程序。2.在主窗体上放置如示例所示的控件。两个TextBox、三个按钮和多个Label,一个richTextBox。分别设置好它们的属性。3.在窗体上放置一个定时器,映射定时器的tick事件。将定时器的Interval属性设置为1000,即一秒钟更新一次label。 if (time 0) time-; int time1 = time / 60; int time2 = time % 60; label3.Text = time1 +:+time2; else timer1.Enabled = false; richTextBox2.Enabled = false; MessageBox.Show(正确 + h + 个); 4.打开主窗体对应的代码文件,在成员定义中加入以下几个成员的定义:存放随机生成的源字符串对象;存放输入字符的目的字符串对象;存放固定字符的字符数组;存放设置字符个数的整型变量。5.在窗体的构造方法中对存放固定字符的数组进行初始化,例如:a = new char 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;6.分别

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论