学 生 实 验 报 告
(理工类)
课程名称: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;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 List 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 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 六、实验体会 通过这次实验,我掌握了常用集合的创建和操作方法,也知道了索引器的该如何定义与使用,知道了在应用程序中怎么构造各种不同的类,学会了泛型接口、泛型类、泛型属性和泛型方法的使用。 实验项目名称: 程序调试与异常处理 实验学时: 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 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 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 {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
本站由北京市万商天勤律师事务所王兴未律师提供法律服务