您好,欢迎来到飒榕旅游知识分享网。
搜索
您的当前位置:首页C#实验报告

C#实验报告

来源:飒榕旅游知识分享网


学 生 实 验 报 告

(理工类)

课程名称:C#程序设计实验 专业班级:11计算机科学与技术(单)

学生学号: 22 学生姓名: 姜飞

所属院部: 信息技术学院 指导教师: 蔡群

20 13 ——20 14 学年 第 1 学期

金陵科技学院教务处制

实验项目名称:C#概述 实验学时: 2 同组学生姓名: 实验地点: 1416 实验日期: 实验成绩: 批改教师: 批改时间: 一、实验目的

1、 熟悉Visual 的基本操作方法。 2、 掌握了C#应用程序的基本操作过程。

3、 掌握简单窗体控件:Label、TextBox和Button的基本用法。 4、 初步理解C#程序的特点。

二、实验要求

1、 熟悉Windows系统的基本操作。 2、 认真阅读本章相关内容,尤其是案例。 3、 实验前进行程序设计,完成源程序的编写任务。 4、 反复操作,直到不需要参考教材、能熟练操作为止。

三、实验设备及环境

设备:奔腾4及奔腾4以上计算机 环境:Visual Studio .NET 2010

四、实验任务

1、设计一个简单的C#控制台应用程序,逐行显示自己的学号、姓名、专业等信息。 2、设计一个C# Windows窗体应用程序,实现个人信息(包括学号、姓名、性别、年龄、专业等)的输入操作。

五、核心代码

1、

namespace 11 {class Program

{ static void Main(string[] args) { (\"my number is:22\"); (\"\\n\"); (\"my name is:姜飞\");(\"\\n\"); (\"my major is:计算机\"); (\"\\n\"); ();}}}

实验结果: my number is:22 my name is:姜飞 my major is:计算机 2、

private void btnConfirm_Click(object sender,EventArgs e) {

(”学号:”+ + ”,姓名:”+ +”,性别:”+ +”,年龄:”+ +”,专业:”+: }

实验结果:

学号:22 姓名:姜飞 性别:女 年龄:21

专业:计算机科学与技术

六、实验体会

本次实验是初次接触c#程序设计,感觉很陌生,但在实验过程中,却也体会到了很多乐趣。例如对c#中输入输出的方法不熟练,经常把write和writeline等用错地方,但随着语句越写越多,也会发现其实C#编程还是很方便很有意思的。另外本次实验,我掌握了简单窗体控件:label、textbox、button的基本用法等,在以后的实验中,我觉得会更加有趣,学到的东西也会越来越丰富。

实验项目名称:C#程序设计基础 实验学时: 2 同组学生姓名: 实验地点: 1416 实验日期: 实验成绩: 批改教师: 批改时间: 一、实验目的

1、理解C#的值类型、常量和变量的概念。 2、掌握C#常用运算符以及表达式的运行规则。

3、了解C#的引用类型,理解数据类型转换、装箱和拆箱的区别。

二、实验要求

1、 熟悉Visual 的基本操作方法。 2、 认真阅读本章相关内容,尤其是案例。 3、 实验前进行程序设计,完成源程序的编写任务。 4、 反复操作,直到不需要参考教材、能熟练操作为止。

三、实验设备及环境

设备:奔腾4及奔腾4以上计算机 环境:Visual Studio .NET 2010

四、实验任务

1、设计一个简单的Windows应用程序,在文本框中随意输入一个日期,单击“确定”按钮时显示“这一天是星期几”。

2、设计一个简单的计算器,实现两个数的加、减、乘、除、求幂等计算。 3、设计一个简单的Windows程序,输入多个数字,然后排序并输出。

五、核心代码

1、

namespace _21

{ public partial class Form1 : Form { public Form1(){InitializeComponent();}

enum Weekday { 星期天,星期一,星期二,星期三,星期四,星期五,星期六 }; private void button1_Click(object sender, EventArgs e) { DateTime dt = ;

Weekday wd = (Weekday); = \"这一天是\"+wd+\".\";}}}

实验结果:

在文本框中输入2013-11-14,则显示: 这一天是星期四。

2、

private void button1_Click(object sender, EventArgs e) {

double a = ; double b = ;

+= a + \"加\" + b + \"的和是\" ; += a + b+\".\";

}

private void button2_Click(object sender, EventArgs e) {

double a = ; double b = ;

+= a + \"减\" + b + \"的差是\"; += a - b + \".\"; }

private void button3_Click(object sender, EventArgs e) {

double a = ; double b = ;

+= a + \"乘\" + b + \"的积是\"; += a * b + \".\"; }

private void button4_Click(object sender, EventArgs e) {

double a = ; double b = ;

+= a + \"除\" + b + \"的商是\"; += a /b + \".\"; }

private void button5_Click(object sender, EventArgs e) {

double a = ; double b = ;

+= a + \"的\" + b + \"次方是\"; += (a, b) + \".\"; } 实验结果: a:3 b:3 3加3的和是6 3减3的差是0 3乘3的积是9 3除3的商是1 3的3次方是27

3、

float[ ] a = new float[5]; int i=0;

private void btnAdd_Click(object sender ,EventArgs e) {

a[i] = ;

+ = a[i] + “”; i++; }

private void btnSort_Click(object sender ,EventArgs e) { (a);

+ =”\\n排序之后为:”;

+ =a[0]+” ”+a[1]+” ”+a[2]+” ”+a[3]+” ”+a[4]; }

实验结果:

输入5个数据: ,则输出:

排序之前为: 排序之后为:

六、实验体会

通过本次C#实验,我对C#Windows应用程序有了进一步的了解,比上次实验更加熟练地运用窗体中的label、button和txtBox等控件。并且了解了C#的值类型、常量和变量的概念,掌握了C#常用运算符以及表达式的运行规则等。而且自己设计窗体界面,也让我对C#的实验更加感兴趣。

实验项目名称:C#程序的流程控制 实验学时: 2 同组学生姓名: 实验地点: 1416 实验日期: 实验成绩: 批改教师: 批改时间: 一、实验目的

1、理解分支和循环的逻辑意义。

2、掌握C#的if、switch分支语句的使用方法。

3、掌握C#的while、do/while、for、foreach等循环语句的使用方法。

二、实验要求

1、熟悉Visual 的基本操作方法。 2、认真阅读本章相关内容,尤其是案例。 3、实验前进行程序设计,完成源程序的编写任务。

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

三、实验设备及环境

设备:奔腾4及奔腾4以上计算机 环境:Visual Studio .NET 2010

四、实验任务

1、修改上机实验2的第三个实验任务,将输入的n个数字,通过for语句排序并输出。注意,不允许使用()方法排序。

2、设计一个Windows应用程序,实现如下功能。 (1)输入学生姓名和考试成绩并保存到结构体数组中。 (2)使用foreach语句最高分并输出对应的姓名。

3、设计一个Windows应用程序,输入一行字符,检索是否存在重复的双字词汇,输出重复的次数。

五、核心代码

1、

namespace _31

{ public partial class Form1 : Form { public Form1()

{ InitializeComponent();}

double [] a = new double[50]; int i = 0;

private void button1_Click(object sender, EventArgs e) { a[i] = ; += a[i] + \" \"; i++; }

private void button2_Click(object sender, EventArgs e) { double t; int j = 0,k; += \"\\n排序之后为:\"; for(j=0;jif (a[j] > a[k]) { t = a[j]; a[j] = a[k]; a[k] = t; } for (j = 0; j < i; j++) += a[j] + \" \"; }}} 实验结果:

输入5个数据: ,则输出: 排序之前为: 排序之后为:

2、

namespace -32

{ public partial class Form1 : Form { public Form1(){InitializeComponent();} struct student

{ public string name; public float score; } student[] persons = new student[10]; int i = 0; private void button1_Click(object sender, EventArgs e) { persons[i].name = ; persons[i].score = ;

+= persons[i].name+\" \" + persons[i].score+\" \"; i++; }

private void button2_Click(object sender, EventArgs e) { float t=0; string j=null ; foreach (student c in persons) {

if (t < { t = ; j = ; = \"最高分:\" + j + \" \" + t; }} }

} }

实验结果:

输入:张三65添加 李四78添加 王二 84 添加 钱一 80 则显示学生成绩:张三65李四78王二 84钱一 80 最高分:王二 84

3、

private void button1_Click(object sender, EventArgs e)

{

int n = 0;

string[] words = new string[10]; int[] times = new int[10]; for (int i = 0; i < - 2; i++) {

bool isSame = false; string source = 2); int j = i + 2; while (j < - 2) {

string target = 2); if (source == target) {

times[n]++;

if (words, target) == -1) {

isSame = true; words[n] = target; } } j++; }

if (isSame) n++;

}

= (\"一共有{0}个重复的词汇!\\n其中,\ for (int i = 0; i < 10; i++) {

if(!(words[i]))

+=(\"“{0}”重复{1}次\ }

实验结果:

在Text中输入中国人永远爱中国,世世代代永远在中国大地上拼搏!,则显示: 一共有2个重复的词汇!

其中,“中国”重复3次,“永远”重复2次

六、实验体会

本次实验又加深了我对label、button和textBox等控件的应用,前两次自己设计窗体界

面还不太熟练,这次实验更加得到了锻炼,印象更加深刻了。也掌握了C#的if、switch分支语句和while、do/while、for、foreach等循环语句的使用方法。

实验项目名称:面向对象程序设计入门 实验学时: 2 同组学生姓名: 实验地点: 1416 实验日期: 实验成绩: 批改教师: 批改时间: 一、实验目的

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

2、区分类的不同数据成员,包括常量、字段、和属性的定义方法,并学会控制其可访问性。 3、掌握类的方法成员的声明与调用,理解各种参数在方法中的意义及使用。

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

二、实验要求

1、熟悉Visual 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 = ;

y1=Convert .ToInt16 ); x2 = ); y2 = ;

Point p1 = new Point(x1, y1); Point p2 = new Point(x2, y2); = (p2).ToString();} class Point { public int X, Y;

public Point(int I, int J) { X = I; Y = J; } public double Distance(Point p) { return - * - + - * - ); } } 实验结果:

输入:x1:0 y1:0 , x2:3 y2:4 则显示:5

2、

控件 Text1 Text2 Text3 属性设置 “” “” “” 控件 Labe1 Label2 Button 属性设置 : : +

private void button1_Click(object sender, EventArgs e) { Time t=new Time(); = ()); = ()); = ());} class Time

{ int hour, minute, second; public int Gethour(){return hour; } public int Getminute(){ return minute; } public int Getsecond(){return second; } public Time()

{ hour = minute = second = } public Time(int h, int m, int s)

{ hour = h; minute = m; second = s; } public void AddSecond() { second++;

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

实验结果:

在text1、text2、text3中分别输入21、49、25,则获取当前时间21:49:25,按+即加1秒,隔几秒不点+后,再按+则加相应的值。

3、

namespace _43 { class Program

{ private static StudentList stulist; static void Main(string[] args); { stulist=new StudentList();

Student stu1=new Student(“01”,”zhangsan”,90,85,); Student stu2=new Student(“02”,”lisi”,75,85,94); Student stu3=new Student(“03”,”wanger”,90,79,80); Student stu4=new Student(“04”,”qianyi”.30,50,55); Student stu5=new Student(“05”,”sunwu”,45,67,38); (stu1); (stu2); (stu3); (stu4); (stu5); string str; str=();

if(“语文”)||(“数学”)||(“英语”)) (str); else (str); ();}

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) { =number; =name; =chinese; =math; =english; } public string Number { get { return ;} } public string Name { get { return ;} } public float Chinese

{ set{ =value;} get{ return ;} } public float Math

{ set { =value;} get{ return ;} } public float English

{ set{ =value;} get{ return ;} } public float Total

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

{ private Listlist=new List(); private float chieseAver; private float mathAver; private float englishAver; private float totalAver;

public void Add(Student s) { public float ChineseAver { get

{ float s=0;

foreach(Student stu in list) { s+=;} chineseAver=s/; return chineseAver; } } public float MathAver { get

{ float s=0;

foreach(Student stu in list) { s+=;} mathAver=s/; return mathAver; } } public float EnglishAver { get

{ float s=0;

foreach(Student stu in list) { s+=;} englishAver=s/; return englishAver; } } public float TotalAver { get

{ float s=0;

foreach(Student stu in list) { s+=;}

totalAver=s/;

return totalAver; } }

public void searchName(string name) { foreach(Student stu in list)

{ if (“学号:{0},姓名:{1},语文:{2},数学:{3},英语:{4}”,,,,,; } }

public voic searchSubject(string subject) { switch(subject) { case”语文”; float max=0;

foreach(Student stu in list) { if(max< max=; if<60)

(“学号:”++”姓名:{0},语文:{1}”,,); }

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

float max1=0; foreach(Student stu in list) { if(max1< max1=; if<60)

(“学号:”++”姓名:{0},语文:{1}”,,); }

(“最高分{0}”,max1);

break; case”英语”;

float max2=0; foreach(Student stu in list) { if(max2< max2=; if<60)

(“学号:”++”姓名:{0},语文:{1}”,,; }

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

输入:zhangsan之后,按查询, 则显示:2

六、实验体会

本次实验主要是围绕对象、类、构造和析构函数的,而之前在其它语言中我们也学习过,

这次实验让我更加理解面向对象的概念,掌握了C#的定义类和创建对象的方法,理解了构造函数和析构函数的作用机制。

实验项目名称:面向对象的高级程序设计 实验学时: 2 同组学生姓名: 实验地点: 1416 实验日期: 实验成绩:

批改教师: 批改时间: 一、实验目的

1、区别静态类与非静态类,掌握静态字段、静态方法和静态构造函数的定义方法。 2、理解类的继承性与多态性,掌握其应用方法。

3、理解抽象类、接口的概念,掌握抽象类与接口的定义及使用方法。 4、理解分部类和命名空间的概念,掌握分部类和命名空间的使用方法。

二、实验要求

1、熟悉Visual 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、

控件 Label1 Label2 Label3 Label4 Label5 属性设置 姓名: 年龄: 语文/必修课: 数学/选修课: 英语: 控件 Button1 Button2 Button3 Label6 属性设置 小学生 中学生 大学生 public abstract class Student { protected string name; protected int age; public static int number;

public Student(string name, int age) { = name; = 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)

{ = chinese; = 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)

{ = chinese; = math; = 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) { = xuanxiu; = bixiu; }

public override double Average() { return (xuanxiu+bixiu)/2; } }

private void button1_Click(object sender, EventArgs e) {

string n=; int a=; double ch=; double ma=;

Pupil P1 = new Pupil(n, a, ch, ma);

lable6 .Text += \"总人数:\" + + \姓名:\" + + \小学生,平均成绩为:

\" + (); }

private void button2_Click(object sender, EventArgs e) {

string n = ; int a = ; double ch = ; double ma = ; double en = ;

Middle M1 = new Middle (n, a, ch, ma,en );

+= \"总人数:\" + + \姓名\" + + \中学生,平均成绩为:\" + () ; }

private void button3_Click(object sender, EventArgs e) { string n = ; int a = ; double bx = ; double xx = ;

College C1 = new College (n, a,bx ,xx );

+= \"总人数:\" + + \姓名\" + + \大学生,平均成绩为:\" + ();}

实验结果:

输入张伟 10 96 98;赵恒 15 85 86 87;李静 21 81 83后,按小学生,中学生,大学生之后结果为:

总人数:1,姓名:张伟,小学生,平均成绩为:97 总人数:2,姓名:赵恒,中学生,平均成绩为:86 总人数:3,姓名:李静,大学生,平均成绩为:82

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 * ; } } 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 (textBox1 .Text)); += \"圆的面积是\" + ();}

private void button2_Click(object sender, EventArgs e) { JX A1 = new JX, );

+= \"\\n矩形的面积是\" + ();}

private void button3_Click(object sender, EventArgs e) { SJX B1 = new SJX, );

+= \"\\n三角形的面积是\" + ();}

实验结果:

输入5,6,分别按圆,矩形,三角形之后 ,结果分别显示: 圆面积为: 矩形面积为:30 三角形面积为:15 3、

控件 Button1 Button2 Button3 Button4 属性设置 MP3 AVI 上一首 停止 控件 Button5 Button6 Button7 Label1 属性设置 播放 暂停 下一首 IPlayer iplayer; MP3 mp3; AVI avi;

private void button3_Click(object sender, EventArgs e) { = ();}

private void button4_Click(object sender, EventArgs e) { = ();}

private void button5_Click(object sender, EventArgs e) { = ();}

private void button6_Click(object sender, EventArgs e) { = ();} private void button7_Click(object sender, EventArgs e) { = ();} 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视频!\"; } }

实验结果:

当按MP3,再按播放,则显示正在播放MP3歌曲! 当按AVI,再按播放,则显示正在播放AVI视频!

六、实验体会

本次实验程序,整体没有多大困难,主要都是关于类的内容,因此,实验加深了我们对类的了解。通过本次实验,我理解了类的继承性与多态性,并且掌握了其应用方法,以后的实验也会努力完成的。

实验项目名称: 集合、索引器与泛型 实验学时: 2 同组学生姓名: 实验地点: 1416

实验日期: 实验成绩: 批改教师: 蔡群 批改时间: 一、实验目的

1、初步掌握常用集合的创建和操作方法。 2、初步掌握索引器的定义与使用。

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

二、实验要求

1、熟悉Visual 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) {Teacher tForeach = (Teacher)t; += \"\\n\" + (); } } public Form1(){InitializeComponent();

private void btnAdd_Click(object sender, EventArgs e) {string n= ; string c = ;

Teachert1 = new Teacher(n, c);(t1); = \"\";Foreach(); } private void btnDele_Click(object sender, EventArgs e)

{int key = ; (key); = \"\";Foreach();}

private void lblShow_Click(object sender, EventArgs e){ } }} {class Teacher

{string name;string zhicheng;

public Teacher(string name, string zhicheng) { = name; = zhicheng;} public string showmsg() {return (\"姓名:{0},职称:{1}\ public abstract class StudentBase{int age;string name; public virtual void walk();{}

public class Pupil:StudentBase{public override void walk() {} }

public interface IClass{} public class ClassA:IClass{public list NumberList;}

2、

namespace _62

{public partial class Form1 : Form class Student

{ string name;string number;

public Student(string name, string number) { = name; = number;} public string showmsg(){return (\"姓名:{0},学号:{1}\ class ClassList{ Student[ ] students;

public ClassList(int n) { students= new Student[n];} } public Student this[int index]

{ get{ if(index<0 || index>= { return null; } return students[index]; } set { if(index<0 || index>= {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) { Xiaoxuesheng);

+= (“\\n添加Xiaoxuesheng{0}成功”,; }

Private void btnZhongxuesheng_Click( object sender,EventArgs e) { Zhongxuesheng);

+= (“\\n添加Zhongxuesheng{0}成功”,; }

Private void btnDaxuesheng_Click( object sender,EventArgs e) { Daxuesheng);

+= (“\\n添加Daxuesheng{0}成功”,; } public abstract class Xuesheng

{ protected string name;

public Xuesheng(string name){ = name;} public abstract string Act( ); } public class(Xiaoxuesheng: Xuesheng

{ public Xiaoxuesheng(string name): base(name) { } public override string Act( )

{return (“{0}:我是Xiaoxuesheng,我要玩!”,name);} } public class(Zhongxuesheng: Xuesheng

{ public Zhongxuesheng(string name): base(name) { } public override string Act( )

{return (“{0}:我是Zhongxuesheng,我要看书!”,name);} } public class(Dagxuesheng: Xuesheng

{ public Daxuesheng(string name): base(name) { } public override string Act( )

{return (“{0}:我是Daxuesheng,我要兼职!”,name);} } public class Banji where T : Xuesheng {private List xueshengs = new List; public List Xueshengs {get { return xueshengs;} }}}}

六、实验体会

通过这次实验,我掌握了常用集合的创建和操作方法,也知道了索引器的该如何定义与使用,知道了在应用程序中怎么构造各种不同的类,学会了泛型接口、泛型类、泛型属性和泛型方法的使用。

实验项目名称: 程序调试与异常处理 实验学时: 2 同组学生姓名: 实验地点: 1416 实验日期: 实验成绩: 批改教师: 蔡群 批改时间: 一、实验目的

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

2、掌握Visual 2010的调试器的使用方法

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

二、实验要求

1、熟悉Visual 2010 的基本操作方法。 2、认真阅读本章相关内容,尤其是案例。 3、实验前进行程序设计,完成源程序的编写任务。 4、反复操作,直到不需要参考教材、能熟练操作为止。

三、实验设备及环境

设备:奔腾4及奔腾4以上计算机 环境:Visual Studio .NET 2010

四、实验任务

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

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

3、设置“for(int i=0;i<;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()

{InitializeComponent();}

private void btnSort_Click(object sender, EventArgs e) {string[] sources = ','); int[] a = new int[];

for (int i = 0; i < ; i++) {a[i] = (sources[i]);} for (int i = 0; i < ; i++) { int k = i;

for(int j=i+1;j<;j++) {if (a[k] > a[j]) k = j;}

int t = a[i];a[i] = a[k];a[k] = t; } foreach (int t in a) { += (\"{0,-4:D}\

private void Form1_Load(object sender, EventArgs e) { int[ ]a={1,2,3,4,5,6,7,8,9}

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

private void Form1_Click(object sender, EventArgs e) { int k=-1;

for(int i=1;i<;i++)

{if(a[i]=={ k=i;=”一切正常”;} else if (a[i]))

{ =”检索失败,终止循环!”; break;}} if(k!=-1) =”检索成功,索引号为:”+ k;}

private void btnOk_Click(object sender, EventArgs e) { try

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

catch (Exception ex){ = ; } }}}

六、实验体会

通过这次实验,我知道了程序错误有三种类型(语法错误、逻辑错误、运行时错误)和异常的概念,还有对异常的处理。掌握了Visual 2010的调试器的使用方法,可选择“调试”菜单的“逐语句”命令或者按F11键。也掌握了C#的try-catch、finally和throw语句的使用方法。

实验项目名称: 基于事件驱动的程序设计技术 实验学时: 2 同组学生姓名: 实验地点: 1416 实验日期: 实验成绩: 批改教师: 蔡群 批改时间: 一、实验目的

1、掌握事件的概念,理解事件处理的机制。 2、掌握委托的声明、实例化与使用。

3、理解事件驱动编程的思想,理解Windows应用程序事件驱动编程方法。 4、掌握事件编程方法,包括事件的声明、预订和引用。

二、实验要求

1、熟悉Visual 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、

需要添加的控件及其属性

控件 Label1 Label2 TextBox1 TextBox1 属性 Text Text Name Name Text Button1 Name btnCreateArray 属性设置 排序前: Button2 排序后: txtSource txtTarget 生成数组 Button3 Text Name Text 降序排列 btnAseSort 升序 控件 属性 Name 属性设置 btnDescSort namespace _81

{ public partial class Form1 : Form { public Form1()

{ InitializeComponent(); } int[] a = new int[10];

delegate bool Compare(int X,int y); void SortArray(Compare compare) {for(int i=0;i<;i++) for(int j=0;j<=1;j++) if(compare(a[i],a[j]))

{ 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()

{ =\"\";foreach(int i in a) { +=i+\"\\r\\n\";}

}

private void btnCreateArray_Click(object sender, EventArgs e) { =\"\";=\"\";Random r=new Random();

for(int i=0;i< ;i++){a[i]=(100); +=a[i]+\"\\r\\n\";}}

private void btnDescSort_Click(object sender, EventArgs e) { SortArray(new Compare(Desecding));display(); }

private void btnAscSort_Click(object sender, EventArgs e) { SortArray(new Compare(Ascending));display();} }}

实验结果:

点击按钮“生成数组”,则随机生成10个数,例如这10个数(排序前)为: 35 0 49 26 69 34 56 56 1,则点击“升序排列”按钮,显示(排序后)为:0 1 26 34 35 49 56 56 69,若点击“降序排列”按钮,则将这10个数降序排列。

2、

需要添加的控件及其属性

控件 Label1 Label2 Label3 TextBox1 属性 Text Text Name Name Text Button1 Name btnStart 属性设置 说明,本系统…… Button2 气压: lblShow txtPressure pictureBox1 启动锅炉 SizeMode Zoom Timer1 Text Name Image 手动降压 autoTimer 自定义锅炉图片 控件 属性 Name 属性设置 btmManual namespace _82

{ public partial class Form1 : Form { private Boiler boiler; public Form1()

{ InitializeComponent();

boiler = new Boiler(); if == null)

+= new EventHandler(boiler_Alarm); }

private void boiler_Alarm(object sender, BoilerArgs e) { if > 50 && < 80) = \"黄色警告!\"; else if >= 80 && < 90) = \"橙色警告!\"; else if >= 90 && < 100) = \"红色警告!\"; else if == 100) { = \"已经降压!……\"; = 30 + \"MPa\"; = 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 onAlarm; public void ProcessAlarm() { (this, new BoilerArgs(k)); } }

private void btnStart_Click(object sender, EventArgs e) { (); }

private void btnManual_Click(object sender, EventArgs e) { = 30 + \"MPa\"; = 30; }

private void autoTimer_Tick() { ++;

= + \"MPa\"; (); } } }

六、实验体会

本次实验又加深了我对label、button和textBox等控件的应用,掌握了事件的概念,理解了事件处理的机制,掌握了委托的声明、实例化与使用。在设计程序的过程中理解了事件驱动编程的思想和Windows应用程序事件驱动编程方法,也掌握到事件的编程方法,包括事件

的声明、预订和引用。

实验项目名称: Windows程序的界面设计 实验学时: 2 同组学生姓名: 实验地点: 1416 实验日期: 实验成绩: 批改教师: 蔡群 批改时间: 一、实验目的

1、掌握常用Windows控件的主要属性、方法、事件,度把它们应用于具体的程序设计中。 2、掌握常用菜单、工具栏和状态栏的使用并能编程实现。

二、实验要求

1、熟悉Visual 2010 的基本操作方法。 2、认真阅读本章相关内容,尤其是案例。 3、实验前进行程序设计,完成源程序的编写任务。 4、反复操作,直到不需要参考教材、能熟练操作为止。

三、实验设备及环境

设备:奔腾4及奔腾4以上计算机 环境:Visual Studio .NET 2010

四、实验任务

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

(1) 该程序包括一个RichTextBox控件、一个Label控件、三个GroupBox控件、一个

ComboBox控件。其中第一个 GroupBox控件中含有4个CheckBox控件,另外两个一个GroupBox控件中各有4 个RadioButton控件。

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

(3)初始化font和ComboBox控件的Items属性,双击窗体,进入源代码编辑窗口,为窗体的Load事件添加代码。

(4)设置“字形与效果”组合框,双击“粗体”复写框控件,进入源代码编辑窗口,为其CheckedChanged事件添加代码。

(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 = ; = }

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) {

float size = ;

font = new Font, size);

= font; }

private void checkBox1_CheckedChanged(object sender, EventArgs e) {

FontStyle fontStyle1, fontStyle2, fontStyle3, fontStyle4; fontStyle1 = ; fontStyle2 = ; fontStyle3 = ; fontStyle4 = ; if {

fontStyle1 = ; } if {

fontStyle2 = ; } if {

fontStyle3 = ; } if {

fontStyle4 = ; }

font = new Font(font, fontStyle4);

fontStyle1 fontStyle2 fontStyle3 | | | = font; }

private void radioButton1_CheckedChanged(object sender, EventArgs e) {

string fontFamily = if fontFamily = ; else if fontFamily = ; else if fontFamily = ; else fontFamily = ;

font = new Font(fontFamily, , ; = font; }

private void radioButton5_CheckedChanged(object sender, EventArgs e) {

Color color = ; if color = ; else if color = ; else if color = ; else color = ; = 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();

= \"initial catalog=TongXunLu;Data Source=(local);integrated security=true;\"; ();

SqlCommand cmd = ();

string AddString = \"INSERT INTO Contact(姓名,生日,电话,邮箱,地址) VALUES('\" + + \"','\" + + \"','\" + + \"','\" + + \"','\" + + \"')\"; = AddString; ();

(\"添加联系人成功!\"); (); (); (); (); (); (); }

private void button_Search_Click(object sender, EventArgs e) { try

{ if==\"\"){(\"查找的姓名不能为空!\");} else if != \"\"&&)

{string searchString = \"select * from Contact where 姓名='\" + + \"'\"; SqlConnection conn = new SqlConnection(); =

\"initial

catalog=TongXunLu;Data

Source=(local);integrated

security=true;\"; ();

SqlDataAdapter dataSelect = new SqlDataAdapter(searchString, conn); DataTable dt = new DataTable(); (dt); = ; = true; (); ();}

else{ (\"没有您要查找的内容!\"); = \"\"; ();} }

catch(Exception exc) { ()); } } }}

六、实验体会

通过这次实验,我理解了Windows窗体应用程序中窗体、控件、事件的基本概念,掌握了Windows窗体和控件的常用属性和一些常用的Windows窗体控件的的使用,知道了Windows

窗体控件的共同特性。

实验项目名称: C#数据库编程技术 实验学时: 2 同组学生姓名: 实验地点: 1416 实验日期: 实验成绩: 批改教师: 蔡群 批改时间: 一、实验目的

掌握在Visual 2010中使用数据库控件对数据库进行简单操作,并掌握常用的数据库控件的使用方法。

二、实验要求

1、熟悉Visual 2010 的基本操作方法。 2、认真阅读本章相关内容,尤其是案例。 3、实验前进行程序设计,完成源程序的编写任务。 4、反复操作,直到不需要参考教材、能熟练操作为止。

三、实验设备及环境

设备:奔腾4及奔腾4以上计算机 环境:Visual Studio .NET 2010

四、实验任务

1、MyBookShop数据库的Books表结构如表10-14所示,设计一个Windows,该程序界面由一个ListBox和一个Button构成,编写程序,连接MyBookShop,用SqlDataReader获取所有书名并显示在ListBox控件中。

表10-14 Books表

字段名 ID 类型 int 其他属性 非空,主键,标识列 说明 书目编号 Title Author UnitPrice nvarchar(200) nvarchar(200) money 非空 书名 作者 单价 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)\";

SqlParameter[] para = new SqlParameter[] {new SqlParameter(\"@OrderID\ new SqlParameter(\"@BookID\

new SqlParameter(\"@UnitPrice\ } (sql, para); } public static List GetDetailOrderById(int id) {List list = new List(); string sql = \"SELECT * FROM OrderBook WHERE OrderID = @OrderID\"; DataTable table = (sql, new SqlParameter(\"@OrderID\ foreach (DataRow dr in

{OrderBook book = new OrderBook(); = (int)dr[\"Id\"];

= ((int)dr[\"OrderID\"]);

= (int)dr[\"Quantity\"]; = (decimal)dr[\"UnitPrice\"]; = ((int)dr[\"BookID\"]); (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(); (dataSet, \"MyData\"); = [0]; }

private void button2_Click(object sender, EventArgs e)

{SqlCommandBuilder builder = new SqlCommandBuilder(dataAdapter); (dataSet, \"MyData\"); }}}

3、

namespace PhoneBook

{ public partial class frmMain : Form { public frmMain(){InitializeComponent();} private string strConn = \"ConnectionString\"];

private void frmMain_Load(object sender, EventArgs e) { LoadGroup(); if > 0){ = [0]; LoadList();} else {();}}

private void LoadGroup() { try

{ conn = new SqlConnection(strConn); SqlCommand cmd = new SqlCommand(); = conn;

= \"select distinct 组别 from 联系人 where 用户名='\"++\"'\"; ();SqlDataReader sdr = (); while ()){ } }

private void LoadList(){ if == 0) { ();return; } if >= 0) { string strGroup = ();\"姓名\ \"工作单位\联系电话\

\"电子邮箱\ SqlCommand cmd = new SqlCommand(); = conn;

= \"select 编号,姓名,工作单位,联系电话,电子邮箱 from 联系人 where 组别='\" + strGroup + \"' and 用户名='\" + + \"'\"; ();SqlDataReader sdr = ();int count = 0; while ()){ListViewItem lvi = new ListViewItem(); = sdr[\"姓名\"].ToString();\"工作单位\"].ToString()); \"联系电话\"].ToString());\"电子邮箱\"].ToString()); = sdr[\"编号\"]; = 0; count++;} = \"共计\"+()+\"个联系人\"; ();();} catch{ }}}

六、实验体会

通过此次实验,我了解了的功能和组成,知道了Connection对象连接到数据库和Command对象操作数据的方法,掌握了DataSet、DataAdapter、DataReader对象的作用和使用方法,并且会使用DataGridView结合对数据库进行修改和查询操作。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sarr.cn 版权所有 赣ICP备2024042794号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务