文档库 最新最全的文档下载
当前位置:文档库 › C#实验报告

C#实验报告

实验项目名称:实验学时:同组学生姓名:实验地点:实验日期:实验成绩:批改教师:批改时间:

一、实验目的和要求

实验目的:

1、理解面向对象的概念,掌握c#的定义类和创建对象的方法。

2、区分类的不同数据成员,包括常量、字段、和属性的定义方法,并学会控制其可访问性。

3、掌握类的方法成员的声明与调用,理解各种参数在方法中的意义及使用。

4、理解构造函数和析构函数的作用机制。

实验要求:

1、熟悉visual https://www.wendangku.net/doc/33617707.html,2010的基本操作方法。

2、认真阅读本章相关内容,尤其是案例。

3、实验前进行程序设计,完成源程序的编写任务。

4、反复操作,直到不需要参考教材、能熟练操作为止。

二、实验设备及环境

设备:奔腾4及奔腾4以上计算机

环境:visual studio .net 2010

三、实验任务

1、设计一个简单的windows应用程序,在文本框中输入两个点的坐标值,单击“确定”按钮时显示两点之间的距离。

要求定义一个point类,包括:

(1)两个私有字段表示两个坐标值。

(2)一个构造函数通过传入的参数对坐标值初始化。

(3)两个只读属性对坐标值的读取。

(4)一个方法包含一个point类对象作为形参该对象和自己的距离。

2、自定义一个时间类。该类包含小时、分、秒、字段与属性,具有将秒增加1秒的方法。要求定义一个time类,包括:

(1)三个私有字段表示时、分、秒。

(2)两个构造函数,一个通过传入的参数对时间初始化,另一个获取系统当前的时间。

(3)三个只读属性实现对时、分、秒的读取。

(4)一个方法用于对秒增加1秒(注意60进位的问题)。

3、设计一个windows应用程序,在该程序中定义一个类和班级类,以处理每个学生的学号、姓名,语文、数学和英语三门课程的期末考试成绩,要求:

(1)能查询每个学生的总成绩。

(2)能显示全班前三名的名单。

(3)能显示单科成绩最高分和不及格的学生名单。

(4)能统计全班学生的平均成绩。

(5)能显示各科成绩在不同分数段的学生人数百分比。

设计提示:

(1)定义一个student学生类,包含字段(学号、姓名、语文成绩、数学成绩、英语成绩)和属性(总成绩)等。

(2)定义一个studentlist班级类,包含一个student类型的数组(用来保存全班学生的信息)以及若干个实现上述要求的方法等。

(3)设计用户操作界面,首先让用户能输入一个学生的信息,当单击“添加”按键时把

这些信息添加到班级对象的学生数组中。当单击“完成”按钮时调用班级类的方法来显示所要求统计的统计结果。当用户在查询框中输入学生的名字后,并单击“查询”按钮时显示该学生的总成绩。

四、实验结果与分析

1、

private void button1_click(object sender, eventargs e)

{ int x1, y1, x2, y2;

x1 = convert.toint16 (textbox1.text);

y1=convert .toint16 (textbox2.text );

x2 = convert.toint16(textbox3.text );

y2 = convert.toint16(textbox4.text);

point p1 = new point(x1, y1);

point p2 = new point(x2, y2);

label7.text = p1.distance(p2).tostring();}{ public int x, y;

public point(int i, int j) { x = i; y = j; }

public double distance(point p)

{ return system.math.sqrt((this.x - p.x) * (this.x - p.x) + (this.y - p.y) *(this.y - p.y)); } }

实验结果:

2、

private void button1_click(object sender, eventargs e)

{ time t=new time();

texthour.text = convert.tostring(t.gethour());

textminute.text = convert.tostring(t.getminute());

textsecond.text = convert.tostring(t.getsecond());}

class time

{ int hour, minute, second;

public int gethour(){return hour; }

public int getminute(){ return minute; }

public int getsecond(){return second; }

public time()

{ hour = system.datetime.now.hour;

minute = system.datetime.now.minute;

second = system.datetime.now.second; }

public time(int h, int m, int s)

{ hour = h; minute = m; second = s; }

public void addsecond()if (second >= 60) { second = second % 60; minute++;} if (minute >= 60) { minute = minute % 60; hour++; }

} }

实验结果:

3、

namespace _43

{ class program

{ private static studentlist stulist;

static void main(string[] args);

{ stulist=new studentlist();

student stu1=new student(“1105303001”,”zhangsan”,90,85,89);

student stu2=new student(“1105303002”,”lisi”,75,85,94);

student stu3=new student(“1105303003”,”wanger”,90,79,80);

student stu4=new student(“1105303004”,”qianyi”.30,50,55);

student stu5=new student(“1105303005”,”sunwu”,45,67,38);

stulist.add(stu1); stulist.add(stu2); stulist.add(stu3); stulist.add(stu4); stulist.add(stu5); string str; str=console.readline();

if(str.equal(“语文”)||str.equals(“数学”)||str.equals(“英语”)) stulist.searchsubject(str); else stulist.searchname(str);

console.readline();}

class student

{ private string number;

private string name;

private float chinese;

private float math;

private float english;public student(string number,string name,float chinese,float math,float english) { this.number=number; https://www.wendangku.net/doc/33617707.html,=name; this.chinese=chinese;

this.math=math; this.english=english; }

public string number

{ get { return this.number;} }

public string name

{ get { return https://www.wendangku.net/doc/33617707.html,;} }

public float chinese

{ set{ this.chiese=value;} get{ return this.chinese;} }

public float math

{ set { this.math=value;} get{ return this.math;} }

public float english

{ set{ this.english=value;} get{ return this.english;} }

public float total

{ get{ return chinese+math+english;} }}

class studentlist

{ private list<student>list=new list<student>();

private float chieseaver;

private float mathaver;

private float englishaver;

private float totalaver;

public void add(student s)

{ this.list.add(s);}

public float chineseaver

{ get

{ float s=0;

foreach(student stu in list)

{ s+=stu.chinese;}

chineseaver=s/list.count;

return chineseaver; } }

public float mathaver

{ get

{ float s=0;

foreach(student stu in list)

{ s+=stu.math;}

mathaver=s/list.count;

return mathaver; } }

public float englishaver

{ get

{ float s=0;

foreach(student stu in list)

{ s+=stu.english;}

englishaver=s/list.count;

return englishaver; } }public float totalaver { get

{ float s=0;

foreach(student stu in list) { s+=stu.total;}

totalaver=s/list.count; return totalaver; } }

public void searchname(string name) { foreach(student stu in list) { if(https://www.wendangku.net/doc/33617707.html,.equals(name))

console.writeline(“学号:{0},姓名:{1},语文:{2},数学:{3},英语:{4}”,stu.number,https://www.wendangku.net/doc/33617707.html,,stu.chinese,stu.math,stu.english); } } public voic searchsubject(string subject){ switch(subject) { case”语文”; float max=0;

foreach(student stu in list) { if(max<stu.chinese) max=stu.chinese;

if(stu.chinese<60)

console.writeline(string.format(“学号:”+stu.number+”姓名:{0},语文:{1}”,https://www.wendangku.net/doc/33617707.html,,stu.chinese));}

console.writeline(“最高分{0}”,max); break; case”数学”;

float max1=0; foreach(student stu in list) { if(max1<stu.math) max1=stu.math; if(stu.math<60)

console.writeline(string.format(“学号:”+stu.number+”姓名:{0},语文:{1}”,https://www.wendangku.net/doc/33617707.html,,stu.math));}

console.writeline(“最高分{0}”,max1); break;case”英语”;

float max2=0; foreach(student stu in list) { if(max2<stu.english) max2=stu.english; if(stu.english<60)

console.writeline(string.format(“学号:”+stu.number+”姓名:{0},语文:{1}”,https://www.wendangku.net/doc/33617707.html,,stu.english);}

console.writeline(“最高分{0}”,max2); break; } }} } 实验结果:

五、实验体会

本次实验,重在理解面向对象的概念,掌握c#的定义类和创建对象的方法刚开始时会出现一些问题,经过与同学讨论,最后终于能调试出来,感觉自己有所进步,希望以后能自己独立完成。

实验项目名称:实验学时:同组学生姓名:实验地点:实验日期:实验成绩:批改教师:批改时间:一、实验目的和要求实验目的:

1、区别静态类与非静态类,掌握静态字段、静态方法和静态构造函数的定义方法。

2、理解类的继承性与多态性,掌握其应用方法。

3、理解抽象类、接口的概念,掌握抽象类与接口的定义及使用方法。

4、理解分部类和命名空间的概念,掌握分部类和命名空间的使用方法。

实验要求:

1、熟悉visual https://www.wendangku.net/doc/33617707.html, 2010 的基本操作方法。

2、认真阅读本章相关内容,尤其是案例。

3、实验前进行程序设计,完成源程序的编写任务。

4、反复操作,直到不需要参考教材、能熟练操作为止。

二、实验设备及环境

设备:奔腾4及奔腾4以上计算机环境:visual studio .net 2010

三、实验任务

1、设计一个windows应用程序,在该程序中首先构造一个学生基本类,再分别构造小学生、中学生、大学生等派生类,当输入相关数据,单击不同的按钮(“小学生”、“中学生”、“大学生”)时将分别创建不同的学生对象,并输出当前的学生总人数,该学生的姓名、学生类型和平均成绩。要求如下:

(1)每个学生都有的字段为姓名、年龄。

(2)小学生的字段还有语文、数学,用来表示这两科的成绩。(3)中学生在此基础上增加英语成绩。(4)大学生分为必修课和选修课两项成绩。(5)学生类提供方法来统计自己的总成绩并输出。(6)通过静态成员自动记录学生总人数。(7)成员初始化能通过构造函数完成。

2、设计一个windows应用程序,在该程序中定义平面图形抽象类和其派生类圆、矩形和三角形。该程序实现的功能包括:输入相应图形的参数,如矩形的长和宽,单击相应的按钮,根据输入参数创建图形类并输出该对象的面积。

3、声明一个接口iplayer,包含5个接口方法:播放、停止、暂停、上一首和下一首。设计一个windows应用程序,在该程序中定义一个mp3播放器类和一个avi播放器类,以实现该接口,最后创建相应类的实例测试程序,如果单击avi按钮后,再单击“播放”按钮则应显示“正在播放avi视频!”。

四、实验结果与分析 1、

public abstract class student { protected string name; protected int age;

public static int number;

public student(string name, int age)

{ https://www.wendangku.net/doc/33617707.html, = name; this.age = age; number++; }public string name { get { return name; } }public abstract double average();}public class pupil : student { protected double chinese; protected double math;

public pupil(string name, int age, double chinese, double math) : base(name, age) { this.chinese = chinese; this.math = math; } public override double average() { return (chinese + math) / 2; } } public class middle : pupil { protected double

english;

public middle(string name, int age, double chinese, double math, double english) :base(name, age, chinese, math)

{ this.chinese = chinese; this.math = math; this.english = english; } public override double average()

{ return (chinese +math +english )/3; }} public class college : student

{ protected double xuanxiu; protected double bixiu;

public college(string name, int age, double xuanxiu, double bixiu) : base(name, age) { this.xuanxiu = xuanxiu; this.bixiu = bixiu; } public override double average() { return (xuanxiu+bixiu)/2; } }

private void button1_click(object sender, eventargs e) {

string n=convert.tostring(textbox1.text); int

a=convert.toint16(textbox2.text);

double ch=convert.todouble(textbox3.text); double ma=convert.todouble(textbox4.text); pupil p1 = new pupil(n, a, ch, ma);

lable6 .text += 总人数: + student.number + ,姓名: + https://www.wendangku.net/doc/33617707.html, + ,小学生,平均成绩为: + p1.average(); }

private void button2_click(object sender, eventargs e) {

string n = convert.tostring(textbox1.text); int a = convert.toint16(textbox2.text);

double ch = convert.todouble(textbox3.text); double ma = convert.todouble(textbox4.text); double en = convert.todouble(textbox5.text); middle m1 = new middle (n, a, ch, ma,en );

lable6.text += 总人数: + student.number + ,姓名 + https://www.wendangku.net/doc/33617707.html, + ,中学生,平均成绩为: + m1.average() ; }

private void button3_click(object sender, eventargs e) { string n = convert.tostring(textbox1.text); int a = convert.toint16(textbox2.text);

double bx = convert.todouble(textbox3.text); double xx = convert.todouble(textbox4.text); college c1 = new college (n, a,bx ,xx );

lable6.text += 总人数: + student.number + ,姓名 + https://www.wendangku.net/doc/33617707.html, + ,大学生,平均成绩为: + c1.average();}

实验结果:

2、

public abstract class figure

{ public abstract double area();}

public class circle : figure { double radius; public circle(double r) { radius

= r; }

public override double area(){return radius * radius * 3.14; } } public class

jx : figure{ double ch, k;

public jx(double a, double b) { ch = a; k = b; } public override double area() { return ch*k ; } } public class sjx:figure { double d,g;

public sjx(double a, double b) { d = a; g = b; } public override double area(){return d *g/2 ; }}

private void button1_click(object sender, eventargs e)

{ circle c1=new circle (convert.todouble (textbox1 .text)); label6.text += 圆

的面积是 + c1.area();}

private void button2_click(object sender, eventargs e)

{ jx a1 = new jx(convert.todouble(textbox1.text), convert.todouble(textbox2.text)); label6.text += \n矩形的面积是 + a1.area();} private void button3_click(object sender, eventargs e)

{ sjx b1 = new sjx(convert.todouble(textbox1.text), convert.todouble(textbox2.text)); label6.text += \n三角形的面积是 + b1.area();} 实验结果:

iplayer iplayer;

mp3 mp3; avi avi;

private void button3_click(object sender, eventargs e) { label1.text = iplayer.pre();}

private void button4_click(object sender, eventargs e) { label1.text = iplayer.stop ();}

private void button5_click(object sender, eventargs e) { label1.text = iplayer.play ();}

private void button6_click(object sender, eventargs e) { label1.text = iplayer.pause ();} private void button7_click(object sender, eventargs e) { label1.text = iplayer.next ();} private void button2_click(object sender, eventargs e)

{ avi = new avi();iplayer = (iplayer)avi; }

private void button1_click(object sender, eventargs e) { mp3 = new mp3();iplayer = (iplayer)mp3; } } interface iplayer

{ string play();string stop();string pause();string pre();string next();} public class mp3 : iplayer

{ public string play(){return 正在播放mp3歌曲!;} public string stop(){return 停止播放mp3歌曲!;} public string pause(){return 暂停播放mp3歌曲!;} public string pre(){return 播放上一首mp3歌曲!; }public string next(){return 播放下一首mp3歌曲!; } } public class avi : iplayer

{ public string play(){return 正在播放avi视频!;} public string stop(){return 停止播放avi视频!; } public string pause(){return 暂停播放avi

视频!; } public string pre(){ return 播放上一部avi视频!;} public string next(){return 播放下一部avi视频!; } }

实验结果:

五、实验体会

本次实验程序,重在区分静态类与非静态类,理解类的继承性与多态性,抽象类与接口的

使用方法。并没有太大困难,与之前所学习的相得益彰,加深了我们对类的了解。也能更加

熟练地用c#进行更多的实验。

实验项目名称:实验学时:同组学生姓名:实验地点:实验日期:实验成绩:批改教师:批改时间:一、实验目的和要求实验目的:

1、初步掌握常用集合的创建和操作方法。

2、初步掌握索引器的定义与使用。

3、初步掌握泛型接口、泛型类、泛型属性和泛型方法的使用。

实验要求:

1、熟悉visual https://www.wendangku.net/doc/33617707.html, 2010 的基本操作方法。

2、认真阅读本章相关内容,尤其是案例。

3、实验前进行程序设计,完成源程序的编写任务。

4、反复操作,直到不需要参考教材、能熟练操作为止。

二、实验设备及环境

设备:奔腾4及奔腾4以上计算机环境:visual studio .net 2010

三、实验任务

1、设计一个windows应用程序,定义一个teacher类,包含姓名和职称两个字段和一个输出教师信息的方法,并用arraylist实现与实例6-2相似的功能。

2、设计一个windows应用程序,定义一个student类,包含学号和姓名两个字段,并定义一个班级类classlist,该类包括一个student集合,使用索引器访问该集合,实现与实例6-3类似的功能。

3、设计一个windows应用程序,要求如下:(1)构造一个学生基本类。

(2)分别构造小学生、中学生、大学生等派生类,要求具有不同的特征和行为。(3)定义一个泛型班级类,约束参数类型为学生类,该泛型的班级类包括一个泛型集合,用于存放各种学生对象,并包含一个方法用于输出每个学生的相关信息。(4)仿照实例6-4,定义泛型的班级类对象,完成对学生的添加和信息的输出。

四、实验结果与分析 1、

namespace _61

{public partial class form1 : form

{arraylist alteachers = new arraylist();

private void foreach(){foreach (object t in alteachers)

private void btnadd_click(object sender, eventargs e)

{string n= convert.tostring(textbox1.text); string c = convert.tostring(textbox2.text); teachert1 = new teacher(n, c);alteachers.add(t1); lblshow.text = ;foreach(); } private void btndele_click(object sender, eventargs e)

{int key = convert.toint32(textbox3.text); alteachers.removeat(key); lblshow.text = ;foreach();}

private void lblshow_click(object sender, eventargs e){ } }} {class teacher {string name;string zhicheng;

public teacher(string name, string zhicheng) {https://www.wendangku.net/doc/33617707.html, = name;this.zhicheng = zhicheng;} public string showmsg() {return string.format(姓名:{0},职称:{1}, name, zhicheng); } }} public abstract class studentbase{int age;string name; public virtual void walk();{} public class pupil:studentbase{public override void walk() {} }

public interface iclass<t>{} public class classa:iclass<classa>{public list<studentbase>

numberlist;}

2、namespace _62

{public partial class form1 : form

class student

{ string name;string number;

public student(string name, string number) {https://www.wendangku.net/doc/33617707.html, = name;this.number = number;} public string showmsg(){return string.format(姓名:{0},学号:{1}, name, number);} } class classlist{ student[ ] students;

public classlist(int n) { students= new student[n];} }

public student this[int index]

{ get{ if(index<0 || index>=students.length) { return null; } return students[index]; }

set { if(index<0 || index>=students.length) {return;} students[index]=value; }}}

3、

namespace _63

{ public partial class form1:form

{ banji< xuesheng >mybanji = new banji< xuesheng >( );

private void btnxiaoxuesheng_click( object sender,eventargs e)

{ mybanji.xueshengs.add(new xiaoxuesheng(txtname.text));

lblshow.text+= string.format(“\n添加xiaoxuesheng{0}成功”,txtname.text); } private void btnzhongxuesheng_click( object sender,eventargs e)

{ mybanji.xueshengs.add(new zhongxuesheng(txtname.text));

lblshow.text+= string.format(“\n添加zhongxuesheng{0}成功”,txtname.text); } private void btndaxuesheng_click( object sender,eventargs e)

{ mybanji.xueshengs.add(new daxuesheng(txtname.text));

lblshow.text+= string.format(“\n添加daxuesheng{0}成功”,txtname.text); }

public abstract class xuesheng

{ protected string name;

public xuesheng(string name){ https://www.wendangku.net/doc/33617707.html, = name;}

public abstract string act( ); }

public class(xiaoxuesheng: xuesheng{ public xiaoxuesheng(string name): base(name) { }

public override string act( )

{return string.format(“{0}:我是xiaoxuesheng,我要玩!”,name);} }

public class(zhongxuesheng: xuesheng

{ public zhongxuesheng(string name): base(name) { }

public override string act( )

{return string.format(“{0}:我是zhongxuesheng,我要看书!”,name);} }

public class(dagxuesheng: xuesheng

{ public daxuesheng(string name): base(name) { }

public override string act( )

{return string.format(“{0}:我是daxuesheng,我要兼职!”,name);} }

public class banji<t> where t : xuesheng

{private list<t> xueshengs = new list<t>;

public list<t> xueshengs

{get { return xueshengs;} }}}}

五、实验体会

在本次试验中,我初步掌握了常用集合的创建和操作方法以及索引器的定义和使用,对泛型类也有了一定的了解。基于前几次的实验,我在本次实验更加小心仔细,加上老师在实验前对我们的点拨,实验也没有很大困难,其中需要注意的是,索引的数据类型必须与索引器的索引类型相同。

实验项目名称:实验学时:同组学生姓名:实验地点:实验日期:实验成绩:批改教师:批改时间:

一、实验目的和要求

实验目的:

1、理解程序错误和异常的概念。

2、掌握visual https://www.wendangku.net/doc/33617707.html, 2010的调试器的使用方法。

3、掌握c#的try-catch、finally和throw语句的使用方法。

实验要求:

1、熟悉visual https://www.wendangku.net/doc/33617707.html, 2010 的基本操作方法。

2、认真阅读本章相关内容,尤其是案例。

3、实验前进行程序设计,完成源程序的编写任务。

4、反复操作,直到不需要参考教材、能熟练操作为止。

二、实验设备及环境

设备:奔腾4及奔腾4以上计算机

环境:visual studio .net 2010

三、实验任务

1、设计一个windows应用程序,在一个文本框中输入n个数字,中间用逗号作间隔,然后编程对数字排序并输出。

2、按f11键启用逐语句方式跟踪每一条语句的执行情况,在调试过程中将数组a添加到监视窗口。注意,观察各数组元素的变化过程。

3、设置“for(int i=0;i<sources.length;i++)”语句为断点,然后按f5键启用调试器,当程序中断运行时,将数组sources添加到监视窗口,观察各数组元素的值。

4、上述代码在用户不按规定输入数据时会发生异常。修改源代码,使用try-catch语句添加异常处理功能。

5、然后输入以下数据:“5,3,7,8,1,4;6,9,2”,单击“排序”按钮,注意观察异常信息,分析错误的原因。

四、实验结果与分析

namespace _71

{public partial class form1 : form

{public form1()

private void btnsort_click(object sender, eventargs e)

{string[] sources = txtsource.text.split(,);

int[] a = new int[sources.length];

for (int i = 0; i < sources.length; i++)

{a[i] = convert.toint16(sources[i]);}

for (int i = 0; i < a.length; i++)

{ int k = i;

for(int j=i+1;j<a.length;j++)

{if (a[k] > a[j]) k = j;}

int t = a[i];a[i] = a[k];a[k] = t; }

foreach (int t in a)

{ lblshow.text += string.format({0,-4:d}, t); } }

private void form1_load(object sender, eventargs e)

{ int[ ]a={1,2,3,4,5,6,7,8,9}

for (int i=0;i<a.length;i++) { a[i]=a[i]+a[i+3];}}

private void form1_click(object sender, eventargs e)

{ int k=-1;

for(int i=1;i<a.length;i++)

{if(a[i]==txtsearch.text){ k=i;lblshow.text=”一切正常”;}

else if (string.isnullorempty(a[i]))

{ lblshow.text=”检索失败,终止循环!”; break;}}

if(k!=-1) lblshow.text=”检索成功,索引号为:”+ k;}

private void btnok_click(object sender, eventargs e)

{ try

{for (int i = 0; i < sources.length; i++){ a[i] = convert.toint16(sources[i]); } }

catch (exception ex){ lbshow.text = ex.message; }

}}}

五、实验体会

这次实验的重点在了解程序错误和异常,其中程序错误有三种类型:语法错误、逻辑错误、运行时错误。同时我也掌握了visual https://www.wendangku.net/doc/33617707.html, 2010的调试器的使用方法和c#的try-catch、finally和throw语句的使用方法。

实验项目名称:实验学时:同组学生姓名:实验地点:实验日期:实验成绩:批改教师:批改时间:一、实验目的和要求实验目的:

1、掌握事件的概念,理解事件处理的机制。

2、掌握委托的声明、实例化与使用。

3、理解事件驱动编程的思想,理解windows应用程序事件驱动编程方法。

4、掌握事件编程方法,包括事件的声明、预订和引用。

实验要求:

1、熟悉visual https://www.wendangku.net/doc/33617707.html, 2010 的基本操作方法。

2、认真阅读本章相关内容,尤其是案例。

3、实验前进行程序设计,完成源程序的编写任务。

4、反复操作,直到不需要参考教材、能熟练操作为止。

二、实验设备及环境

设备:奔腾4及奔腾4以上计算机环境:visual studio .net 2010

三、实验任务

1、设计一个windows应用程序,随机生成0—100之间的10个数字,并通过实现升序排列。操作步骤如下:

(1)在windows窗体中添加窗体控件。

(2)切换到源代码编辑视图,在窗体类中定义委托、排序的方法。(3)编写按钮的click 事件方法。(4)运行程序并测试程序。

2、设计一个windows应用程序,模拟高温高压锅炉降压处理。操作步骤如下:(1)在windows窗体中添加窗体控件。其中,timer1为计时器控件,用于产生计时事件;picturebox1是图像框控件,用于显示图片。

(2)切换到源代码编辑视图,在窗体类中定义锅炉数据参数boilerargs和锅炉类boiler。前者在发生警报时传递数据给事件接收器,后者包含警报事件,并且能触发警报。(3)在窗体类的构造函数中,创建锅炉对象并预订警报事件。(4)在窗体类中,声明警报事件方法boiler_alarm。

(5)编写“启动锅炉”和“手动降压”按钮的click事件方法以及timerl控件的tick 事件方法。

(6)运行程序并测试程序。

四、实验结果与分析 1、

需要添加的控件及其属性

{ public partial class form1 : form { public form1()

{ int t=a[i];a[i]=a[j];a[j]=t; }} bool ascending(int x,int y){return x< y;} bool desecding(int x,int y){ return x> y;} void display()

{ txttarget.text=;foreach(int i in a) {txttarget.text +=i+\r\n;} }

private void btncreatearray_click(object sender, eventargs e){ txtsource.text=;txttarget.text=;random r=new random();

实验结果:

2、

需要添加的控件及其属性

namespace _82

{ public partial class form1 : form { private boiler boiler; public form1()

if (boiler.onalarm == null)

boiler.onalarm += new eventhandler<boilerargs>(boiler_alarm); }

private void boiler_alarm(object sender, boilerargs e){ if (e.press > 50 && e.press < 80) lblshow.text = 黄色警告!; else if (e.press >= 80 && e.press < 90) lblshow.text = 橙色警告!; else if (e.press >= 90 && e.press < 100) lblshow.text = 红色警告!; else if (e.press == 100)

{ lblshow.text = 已经降压!??; txtpressure.text = 30 + mpa; boiler.k = 30; } }

private void form1_load(object sender, eventargs e) { }

public class boilerargs : eventargs { private int pressure; public boilerargs(int n) { pressure = n; } public int press { get

{ return pressure; } } }

public class boiler { public int k; public boiler() { k = 0; }

public eventhandler<boilerargs> onalarm; public void processalarm()

{ this.onalarm(this, new boilerargs(k)); } }

private void btnstart_click(object sender, eventargs e) { autotimer.start(); } private void btnmanual_click(object sender, eventargs e) { txtpressure.text = 30 + mpa; boiler.k = 30; }

private void autotimer_tick() { boiler.k++;

txtpressure.text = boiler.k + mpa; boiler.processalarm(); } } }

五、实验体会

本次实验,重在让我们掌握事件的概念,理解事件处理的机制。同时扩展一下关于事件驱动编程的思想,我对委托的声明、实例化与使用也有了一些基本的了解。利用windows应用程序事件驱动编程,在编程的时候需要注意的是事件的声明、预订和引用。

实验项目名称:实验学时:同组学生姓名:实验地点:实验日期:实验成绩:批改教师:批改时间:

一、实验目的和要求

实验目的:

1、掌握常用windows控件的主要属性、方法、事件,度把它们应用于具体的程序设计中。

2、掌握常用菜单、工具栏和状态栏的使用并能编程实现。

实验要求:

1、熟悉visual https://www.wendangku.net/doc/33617707.html, 2010 的基本操作方法。

2、认真阅读本章相关内容,尤其是案例。

3、实验前进行程序设计,完成源程序的编写任务。

4、反复操作,直到不需要参考教材、能熟练操作为止。

二、实验设备及环境

设备:奔腾4及奔腾4以上计算机

环境:visual studio .net 2010

三、实验任务

1、设计一个windows应用程序。对文本框所显示的文字进行简单的格式化,包括改变字体的大小、名称、颜色以及设置粗体、斜体和添加下划线等。

设计提示:

(2)定义窗口类form1的私有字段font,在运行过程中通过修改font来改变字体。在源代码编辑窗口中添加代码。

(5)定义其余三个复选框的checdedchanged事件和“粗体”复选框的checkedchanged 事件为同一事件处理程序。单击“斜体”复选框,“属性”命令,单击“属性”窗口上方的“事件”按钮,进入“事件”窗口,在checkedchanged右边的下拉菜单中选择checkbox1_checkedchanged,其余两个复选框也以相同的方法处理。

(6)设置“字体名称”组合框,双击“宋体”单选按钮,进入源代码编辑窗口,为单选按钮的checkedchanged事件添加代码。

(7)定义其余三个单选按钮的checdedchanged事件和“宋体”单选按钮的checkedchanged 事件为同一事件处理程序。

(8)设置“字体颜色”组合框,双击“红色”单选按钮,进入源代码编辑窗口,为单选按钮的checkedchanged事件添加代码。

(9)定义其余三个单选按钮的checdedchanged事件和“红色”单选按钮的checkedchanged 事件为同一事件处理程序。

(10)设置“字体字号”组合框,双击“字体字号”组合框,进入源代码编辑窗口,为组合框的selectedindexchanged事件添加代码。

2、设计一个通讯录管理软件。该系统主要用于个人通讯录管理;系统主界面是一个带有菜单的mdi窗体,包括菜单、工具栏和状态栏。同时设计一个新建联系人的界面。系统的功能主要包括新建联系人、查看联系人的新建分组。本实验要求完成界面的设计。各窗体的功能和数据操作将在实验10-3中完成。

设计提示:

(1)按教材有关实例完成界面设计和属性设置。

(2)设置窗体为mdi主窗体,需要设置该窗体的ismdicontainer属性为true。

(3)主窗体在mainfrm中打开子窗体newcontact。

(4)按已有知识,自行设计“关于窗体”并关联到主窗体。

四、实验结果与分析

1、

namespace _91

{

public partial class form1 : form{

font font;

public form1()

{

font font;

}

private void form1_load(object sender, eventargs e)

{

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

{

}

font = richtextbox1.font;

}

font = new font(font.fontfamily, size);

richtextbox1.font = font;

}

private void checkbox1_checkedchanged(object sender, eventargs e)

{

fontstyle fontstyle1, fontstyle2, fontstyle3, fontstyle4;

fontstyle1 = fontstyle.regular;

fontstyle2 = fontstyle.regular;

fontstyle3 = fontstyle.regular;

fontstyle4 = fontstyle.regular;

if (checkbox1.checked)

{

fontstyle1 = fontstyle.bold;

}

if (checkbox2.checked)

{

fontstyle2 = fontstyle.italic;

}

if (checkbox3.checked)

{

fontstyle3 = fontstyle.underline;

}

if (checkbox4.checked)

{

fontstyle4 = fontstyle.strikeout;}

font = new font(font, fontstyle1 | fontstyle2 | fontstyle3 | fontstyle4);

richtextbox1.font = font;

}

private void radiobutton1_checkedchanged(object sender, eventargs e)

{

string fontfamily = https://www.wendangku.net/doc/33617707.html,;

if (radiobutton1.checked) fontfamily = radiobutton1.text;

else if (radiobutton2.checked) fontfamily = radiobutton2.text;

else if (radiobutton3.checked) fontfamily = radiobutton3.text;

else fontfamily = radiobutton4.text;

font = new font(fontfamily, font.size, font.style);

richtextbox1.font = font;

}

private void radiobutton5_checkedchanged(object sender, eventargs e)

{

color color = richtextbox1.forecolor;

if (radiobutton5.checked) color = color.red;

else if (radiobutton6.checked) color = color.green;

else if (radiobutton6.checked) color = color.blue;

else color = color.black;

richtextbox1.forecolor = color;

}

}

}

实验结果:

在“字体字号”这个设置的属性中先填好可选择的字号,例如:10 14 18 20 24 28 36 48等,然后点击“字体字号”的下拉菜单,可选择字体的大小;在“字形与效果”中若点击“粗体”前的checkbox,则字体会相应变成粗体,“字体名称”、“字体颜色”与“字形与效果”操作类似。

2、

namespace _91

{

public partial class form1 : form

{

private void button_add_click(object sender, eventargs e)

{

sqlconnection conn = new sqlconnection();

conn.connectionstring = initial catalog=tongxunlu;data source=(local);integrated security=true;;

conn.open();

string addstring = insert into contact(姓名,生日,电话,邮箱,地址) values( +

textbox_name.text + , + textbox_birth.text + , + textbox_phonenum.text + , + textbox_mail.text + , + textbox_address.text + );

cmd.executenonquery();

messagebox.show(添加联系人成功!);

conn.close();

textbox_name.clear();

textbox_birth.clear();

textbox_phonenum.clear();

textbox_mail.clear();

textbox_address.clear();

}

private void button_search_click(object sender, eventargs e)

{ try

{ if(textbox_searchname.text==){messagebox.show(查找的姓名不能为空!);} else if (textbox_searchname.text !=

&&ise.isnameexist(textbox_searchname.text)){string searchstring = select * from contact where 姓名= + textbox_searchname.text + ;

sqlconnection conn = new sqlconnection();

conn.connectionstring = initial catalog=tongxunlu;data source=(local);integrated security=true;;

conn.open();

sqldataadapter dataselect = new sqldataadapter(searchstring, conn);

datatable dt = new datatable();

dataselect.fill(dt);

datagridview_search.datasource = dt.defaultview;

this.datagridview_search.rowheadersvisible = true;

conn.close(); textbox_searchname.clear();}

else{ messagebox.show(没有您要查找的内容!);

textbox_searchname.text = ;textbox_searchname.focus();} } catch(exception exc) {

messagebox.show(exc.tostring());} }

}}

五、实验体会

通过本次实验,我熟悉了visual https://www.wendangku.net/doc/33617707.html, 2010 的基本操作方法,经过认真阅读了有

关这次实验的要点并在实验前进行程序设计,最后完成源程序代码。在本次实验中,因为对

一些程序的运用还不熟练,出现了很大的问题,因为不熟悉,分析代码的时间变得很长导致

实验没有能在课堂上完成。这次实验以后需要多加熟练才行。

实验项目名称:实验学时:同组学生姓名:实验地点:实验日期:实

验成绩:批改教师:批改时间:一、实验目的和要求实验目的:

掌握在visual https://www.wendangku.net/doc/33617707.html, 2010中使用数据库控件对数据库进行简单操作,并掌握常用

的数据库控件的使用方法。

实验要求:

1、熟悉visual https://www.wendangku.net/doc/33617707.html, 2010 的基本操作方法。

2、认真阅读本章相关内容,尤其

是案例。 3、实验前进行程序设计,完成源程序的编写任务。 4、反复操作,直到不需要参

考教材、能熟练操作为止。

二、实验设备及环境

设备:奔腾4及奔腾4以上计算机环境:visual studio .net 2010

三、实验任务

1、mybookshop数据库的books表结构如表10-14所示,设计一个windows,该程序界面

由一个listbox和一个button构成,编写程序,连接mybookshop,用sqldatareader获取

所有书名并显示在listbox控件中。

表10-14 books表

2、设计一个windows应用程序,该程序员面由一个datagridview和两个button构

成,编写程序,连接mybookshop、dataadaper与dataset对象获取所有书目信息并显示在datagridview控件中,同时,可以在datagridview中更新数据。单击“更新”可以把数据

写回到数据库中。

3、完成9-2设计的通讯录管理软件,完成新建联系人、查看联系人和新建分组。程序所

需数据库和表按新建联系人窗体设计。

提示:新建分组可以参照实例10-3完成,新建联系人可以按参照实例10-4完成,在该程

序中,应新建一个窗体用于查看联系人,实现方式可以参照实例10-5完成。

四、实验结果与分析 1、

namespace mybookshopdal

{public static partial class orderbookdeal

{public static orderbook addorderbook(orderbook order)

{string sql = insert orderbook (orderid, bookid, quantity,unitprice) + values (@orderid, @bookid, @quantity,@unitprice);

{orderbook book = new orderbook();book.id = (int)dr[id]; book.orderid = orderdeal.getorderbyid((int)dr[orderid]);

book.quantity = (int)dr[quantity]; book.unitprice = (decimal)dr[unitprice];

book.bookid = bookdeal.getbookbyid((int)dr[bookid]); list.add(book); } return

list; } }}

2、

namespace _102

{public partial class form1 : form

{private void button1_click(object sender, eventargs e)

{string connstring = data source=.;initial catalog=mybookshop;user

id=sa;pwd=123456; sqlconnection connection = new sqlconnection(connstring); string sql = select * from books;

dataadapter = new sqldataadapter(sql, connection); dataset = new dataset();

dataadapter.fill(dataset, mydata); datagridview1.datasource = dataset.tables[0]; } private void button2_click(object sender, eventargs e)

dataadapter.update(dataset, mydata); }}}

3、

namespace phonebook

= system.configuration.configurationmanager.appsettings[connectionstring];

private void frmmain_load(object sender, eventargs e) { loadgroup();

if (trvgroup.nodes.count > 0){ trvgroup.selectednode = trvgroup.nodes[0]; loadlist();} else {lvcontact.clear();}} private void loadgroup() { try

conn.open();sqldatareader sdr = cmd.executereader(); while (sdr.read()){ trvgroup.nodes.add(sdr[0].tostring());} sdr.close();conn.close();} catch{ } }

private void loadlist(){ if (trvgroup.nodes.count == 0) { lvcontact.clear();return; } if (trvgroup.selectednode.index >= 0) { string strgroup = trvgroup.selectednode.text; try

{ lvcontact.clear();lvcontact.columns.add(姓名,100);

lvcontact.columns.add(工作单位, 150); lvcontact.columns.add(联系电话, 100); conn.open();sqldatareader sdr = cmd.executereader();int count = 0; while (sdr.read()){listviewitem lvi = new listviewitem();

lvi.text = sdr[姓名].tostring();lvi.subitems.add(sdr[工作单位].tostring()); lvi.subitems.add(sdr[联系电话].tostring());lvi.subitems.add(sdr[电子邮箱].tostring()); lvi.tag = sdr[编号]; lvi.imageindex = 0; lvcontact.items.add(lvi); count++;} tsslcount.text = 共计+count.tostring()+个联系人; sdr.close();conn.close();} catch{ }}}

五、实验体会

这次的实验与上次的实验有些相通之处,但更多的考验我们的还是程序代码的熟练应用。经过上次的实验的教训,在我勤于练习下,本次实验做的还是比较顺利的。因为一些地方的不完善老师也为我指出了,加深了我对常用的数据库控件的使用。实验项目名称:实验学时:同组学生姓名:实验地点:实验日期:实验成绩:批改教师:批改时间:

一、实验目的

1.理解流、序列化和反序列化的概念,熟悉有关流的读写操作类及其使用方法。

2.掌握openfiledialog、savefiledialog等控件的使用。

二、实验要求

1.熟悉visual https://www.wendangku.net/doc/33617707.html,2010的基本操作方法。

2.认真阅读本章有关内容,尤其是案例。

3.实验前进行程序设计,完成源程序的编写任务。

4.反复操作,直到不需要参考教材、能熟练操作为止。

三、实验设备及环境

1.设计一个web应用程序,实现如图11-7所示的功能。

四、实验任务

五、实验代码与结果

public partial class form1 : form

{

public form1()

{

}

public int count

{

get

{

int i = 0;

while (list[i] != null) i++;

return i;

}

}

private studentlist list = new studentlist();private int current = 0; private void showcurrent()

{

txtno.text = list[current].sno.tostring();

txtname.text = list[current].name;

if (list[current].sex)

rdomale.checked = true;

else

rdofemale.checked = false;

}

private void button1_click(object sender, eventargs e)

{

if (current == 0)

messagebox.show(已°?经-是o?第ì¨2一°?个?学?ì生|¨2!);

else

{

current--;

showcurrent();

}

}

private void button2_click(object sender, eventargs e)

{

if (current == list.count - 1)

messagebox.show(已°?经-是o?最á?后¨?一°?个?学?ì生|¨2!);

else

{

current++;

showcurrent();

}

}

private void button3_click(object sender, eventargs e)

{

int sno = int32.parse(txtno.text);

bool ismale;

if (rdomale.checked)

ismale = true;

else

ismale = false;

student s = new student(sno, txtname.text, ismale);

list[list.count] = s;

current = list.count;

}

private void button4_click(object sender, eventargs e)

{int i = current;

while (i < list.count)

{

list[i] = list[i + 1];

i++;

}

list[i - 1] = null;

if (current == list.count) current--;

showcurrent();

}

private void button5_click(object sender, eventargs e)

{

openfile.showdialog();

}

private void button6_click(object sender, eventargs e)

{

savefile.showdialog();

}

private void openfiledialog1_fileok(object sender, canceleventargs e) { stream stream = openfile.openfile();

binaryformatter bf = new binaryformatter();

list = (studentlist)bf.deserialize(stream);

if (list[0] != null)

{

current = 0;

showcurrent();

}

}

private void savefiledialog1_fileok(object sender, canceleventargs e) { stream stream = savefile.openfile();

binaryformatter bf = new binaryformatter();

bf.serialize(stream, list);

stream.close();

}

}

namespace a

{

[serializable]

public class student

{

相关文档