实验项目名称:实验学时:同组学生姓名:实验地点:实验日期:实验成绩:批改教师:批改时间:
一、实验目的和要求
实验目的:
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
{