面向对象的程序设计C#实验教案_第1页
面向对象的程序设计C#实验教案_第2页
面向对象的程序设计C#实验教案_第3页
面向对象的程序设计C#实验教案_第4页
面向对象的程序设计C#实验教案_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、课 程 教 学 日 历课程名称: 面向对象的程序设计(C#) 学期:2014-2015-1周次章节及教学内容累计学时2实验一 熟悉V S开发环境24实验二 基本数据类型和流程控制语句26,8实验三 类和结构,接口委托与事件410实验四 泛型与LINQ与文件操作212,14实验五 WPF应用程序及WPF控件416实验六 WPF样式及数据验证和数据库应用2实验一 熟悉VS开发环境【学时数:2学时】一、实验目的1. 掌握Visual Studio.NET2012的基本操作方法。2. 掌握#控制台应用程序、Windows应用程序的基本操作过程。3. 初步理解#程序的结构和特点,掌握基本的编译和调试方法

2、。二、实验内容1. 熟悉Visual Studio.NET2012集成开发环境的使用。启动VS2012,熟悉它的基本界面。建立源程序文件,输入、编译程序文件。构建可执行文件。运行程序,查看结果2. 设计一个简单的#控制台应用程序,逐行显示自己的学号、姓名、专业信息。(参考教材P5页例)3. 设计一个Windows应用程序,在窗体上显示三个标签框,标签框里的内容分别为自己的学号、姓名、专业。(参考教材P20页例1-4)4. 阅读教材并录入教材例1-2,例1-5,例1-6程序,运行并输出结果,了解#窗体应用程序的创建。并思考:(1)namespace关键字声明命名空间有何作用?using关键字指明

3、引用的命名空间有何作用?三、实验报告完成本次实验的报告,写清实验目的和要求、实验内容和实验结果。实验二 基本数据类型和流程控制语句【学时数:2学时】一、实验目的1. 理解#的值类型、常量和变量的概念。2. 掌握理解数据类型的转换以及数据类型的转换用法;3. 掌握#的常用运算符以及表达式的运算规则。4. 掌握#的两种分支语句(if、switch)的使用方法。5. 掌握#的种循环语句(while、do/while、for、foreach)的使用方法。6. 掌握引用类型中的字符串、数组的使用。二、实验内容1. 设计一个控制台程序,从键盘输入一个人的名字,在显示器中显示对输入姓名的问候。比如输入:张三

4、;输出:张三,欢迎你!提示:输入字符串放入s中,将s+” ,欢迎你!”,再输出。2. 编写一个控制台程序,输入一个学生的成绩,输出其等级。(优:>=90;良:>=80;中:>=70;及格:>=60;不及格:<60)。分别用if语句及switch-case语句实现。3. 编写一个控制台应用程序,求100之内的所有“素数”。4. 打印输出杨辉三角形。三、实验报告完成本次实验的报告,写清实验目的和要求、实验内容和实验结果。四、参考程序1. /* program e2-1*/using System;namespace p21 class program static v

5、oid Main() Console.Write("please inter a person's name"); string s; s=Console.ReadLine(); Console.WriteLine("s+ 欢迎你!"); 2. using System;namespace p23 class program static void Main() Console.Write("please inter a number to x "); int x; x=int.parse(Console.ReadLine()

6、; if(x>=90) Console.WriteLine("优秀!"); else if(x>=80) Console.WriteLine("良!"); else if(x>=70) Console.WriteLine("中!"); else if(x>=60) Console.WriteLine("及格!"); else Console.WriteLine("差!"); using System;namespace p23 class program static v

7、oid Main() Console.Write("please inter a number to x "); int x; x=int.parse(Console.ReadLine(); int i=x/10; switch(i) case 10: case 9: Console.WriteLine("优秀!"); break; case 8: Console.WriteLine("良!"); break; case 7: Console.WriteLine("中!");break; case 6: Conso

8、le.WriteLine("及格!");break; default: Console.WriteLine("差!");break; 3. using System;namespace p23 class program public static bool prime(int m) for(ing i=2;i<m;i+) if(m%i=0) return false; return true; public static void Main() int m,k,n=1; Console.Write("0,-4",2); for

9、(m=3;m<100;m+=2) if(prime(m); Console.Write("0,-4",m); if(+n%10=0) Console.WriteLine("n"); 4.using System; class p24 public static void Main() int i,j,k,m; k=7; int Y=new int k;/定义二维锯齿状数组 for(i=0;i<Y.Length;i+) Yi=new inti+1; Yi0=1; Yii=1; for(i=2;i<Y.Length;i+) for(j=1;

10、j<Yi.Length-1;j+)/Yi.Length是Yi这个数组的长度 Yij=Yi-1j-1+Yi-1j; for(i=0;i<Y.Length;i+) for(j=0;j<Yi.Length-1;j+) Console.Write("0,5:d",Yij); Console.WriteLine( ); 实验三 类和结构,接口委托与事件【学时数:4学时】一、实验目的1. 熟悉C#类、对象、方法的概念与用法;2. 掌握编写简单的面向对象的应用程序;3. 熟悉并掌握C#构造方法及其重载方法的用法;4. 熟悉并掌握类和成员的访问修饰符的用法。5. 掌握抽象

11、类与接口的定义及使用方法。6. 掌握抽象类与接口的定义及使用方法。二、实验要求1. 编写一个Windows 窗体应用程序,实现以下功能。(1) 定义一个CourseInfo累,该类包含以下成员。l 具有CourseName(课程名),CourseTime(开课时间),BookName(书名),Price(定价)4个属性,期中开课时间为枚举类型值(秋季,春季)。l 具有一个静态变量Counter,每创建一个Course实例,给变量值自动加1。l 提供无参数构造函数,在构造函数中设置相应的属性值。l 提供一个print方法,现实该实例的4个属性值。(2) 在主窗体的代码实现中,分别创建Course

12、Info实例,测试类中提供的功能,并将结果显示出来。2. 单一继承:用C#编写一个程序,使用Animal和Mammal两个类来说明一般动物和哺乳动物的继承关系。Animal具有名称、所属门类等属性,需要提供方法实现以接收和显示这些属性的值。Mammal类具有代表哺乳动物习性的属性,这些属性表明哺乳动物与其他类型动物的区别。同样地,需要提供方法实现以接收和显示这些属性的值。3. 使用抽象类和抽象方法计算不同形状的面积:编写一个程序,使用抽象类和抽象方法来计算不同形状的面积。4. 使用委托和事件实现模拟闹铃:编写一个模拟闹铃的程序,具有闹铃,继续闹铃,打会盹儿,停止闹铃的功能。(编写一个程序用来模

13、拟闹钟闹起床流程,有一个闹钟类AlarmClock,催促起床类WakeMeUp,使用类AlarmDriver。调用类引发开始闹铃事件,闹钟类调用委托方法进行处理,催促起床类和用户进行交互。)三、参考程序四、参考程序1. 1. /*CourseInfo.cs using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ClassTest enum CourseTime 春季, 秋季 class CourseInfo

14、public static int Counter = 0; / <summary> / 课程名 / </summary> public string CourseName get; set; / <summary> / 开课学期 / </summary> public CourseTime CourseSemester; / <summary> / 书名 / </summary> public string BookName get; set; / <summary> / 定价 / </summary&

15、gt; public double Price get; set; public CourseInfo() Counter+; CourseName = BookName = "<null>" CourseSemester = CourseTime.春季; Price = 0; public CourseInfo(string couseName, string bookName, CourseTime courseSemester,int price) Counter+; CourseName = couseName; BookName = bookName;

16、 CourseSemester = courseSemester; Price = price; public string Print() return string.Format( "0,-101,-102,-103,5", CourseName, CourseSemester, BookName, Price); /*Mainform.csusing System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;usi

17、ng System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace ClassTest public partial class MainForm : Form public MainForm() InitializeComponent(); this.Load += MainForm_Load; void MainForm_Load(object sender, EventArgs e) listBox1.Items.Add(string.Format( &quo

18、t;0,-101,-102,-103,5", "课程名","开设学期","书名","定价"); var course1= new CourseInfo CourseName="数据结构", CourseSemester= CourseTime.春季, BookName="数据结构", Price=40 ; listBox1.Items.Add(course1.Print(); var course2 = new CourseInfo("操作系统"

19、, "操作系统", CourseTime.秋季, 45); listBox1.Items.Add(course2.Print(); var course3 = new CourseInfo("软件工程", "软件工程", CourseTime.春季, 38); listBox1.Items.Add(course2.Print(); /*program.csusing System;using System.Collections.Generic;using System.Linq;using System.Threading.Task

20、s;using System.Windows.Forms;namespace ClassTest static class Program / <summary> / 应用程序的主入口点。 / </summary> STAThread static void Main() Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm(); 2. using System;using System.Co

21、llections.Generic;using System.Text;namespace SingleInher    /一般动物类    class Animal            protected string _name;  /动物名称        protected string _type;  /动物所属门类  

22、60;     /接收名称和门类        public void AcceptDetails()                    Console.WriteLine("请输入动物名称:");       &#

23、160;    this._name = Console.ReadLine();            Console.WriteLine("请输入所属门类:");            this._type = Console.ReadLine();      

24、60;         /显示动物的名称和所属门类         public void DisplayDetails()                    Console.WriteLine();     

25、60;      Console.WriteLine("0 动物的详细信息如下:", this._name);            Console.WriteLine("姓名:0", this._name);            Console.WriteLine("门类:0

26、", this._type);                /哺乳动物类,继承一般动物类    class Mammal : Animal            private double _temperature;   /恒定温度值private string _isViviparous; 

27、/是否为胎生        /接收哺乳动物的特征信息        public void AcceptCharacter()                    Console.WriteLine("请输入哺乳动物的恒定温度:");  

28、          try                            _temperature = Convert.ToDouble(Console.ReadLine();     

29、60;                  catch /捕捉异常,例如:若输入字母,在转换成Decimal时会引发异常                            Con

30、sole.WriteLine("请为温度输入数字!");                        Console.WriteLine("该哺乳动物是否胎生:");            _isViviparous = Con

31、sole.ReadLine();                /显示哺乳动物的特征信息        public void DisplayCharacter()                    Con

32、sole.WriteLine();            Console.WriteLine("0 的特征包括:", this._name);            Console.WriteLine("恒定温度:0", _temperature.ToString();      

33、;      Console.WriteLine("是否胎生:0", _isViviparous);                class Program            static void Main(string args)     

34、               Mammal objM = new Mammal();            objM.AcceptDetails();/访问父类方法            objM.AcceptCharacter(); &#

35、160;          objM.DisplayDetails();/访问父类方法            objM.DisplayCharacter();            3. using System;abstract class Figure/抽象类定义,表示一个抽象图形&#

36、160;   protected double x = 0, y = 0;    public Figure(double a, double b)    x = a; y = b;     public abstract void Area();  /抽象方法,无实现代码,抽象图形无法计算面积class Square : Figure            

37、;       /类Square定义,矩形类    public Square(double a, double b)        : base(a, b)        public override void Area()    /不能使用new,必须用override Console.WriteLine("矩形面积是:0", x * y);

38、      /显示矩形面积class Circle : Figure                 /类Circle定义,圆类    public Circle(double a)        : base(a, a)        p

39、ublic override void Area()    Console.WriteLine("圆面积是:0", 3.14 * x * y);     /显示圆的面积class Class1    static void Main(string args)            Square s = new Square(20, 30);    

40、    Circle c = new Circle(10);        s.Area();        c.Area();    4. using System;using System.Collections.Generic;using System.Text;namespace EventSample    /    

41、 / 定义事件参数类    /    public class AlarmEventArgs : EventArgs            private readonly bool snoozePressed;        private readonly int nrings;       

42、/构造函数        public AlarmEventArgs(bool snoozePressed, int nrings)                    this.snoozePressed = snoozePressed;         

43、   this.nrings = nrings;                / 定义属性,私有字段nrings         public int NumRings                

44、0;   get return nrings;                 / 定义属性,返回私有字段snoozePressed        public bool SnoozePressed               &

45、#160;    get return snoozePressed;                 / 下面的属性返回一个字符串        public string AlarmText               

46、;     get                            if (snoozePressed)               

47、                     return ("别打打盹儿,快起床!");                          &

48、#160;     else                                    return ("起床!");      

49、;                                  / 声明自定义代理类型,它的事件参数的类型为AlarmEventArgs    public delegate void AlarmEventHandler(object sender, AlarmE

50、ventArgs e);    / 包含事件和触发事件方法的类    public class AlarmClock            private bool snoozePressed = false;        private int nrings = 0;        privat

51、e bool stop = false;        / 定义两个属性        public bool Stop                    get return stop;        &

52、#160;    set stop = value;                 public bool SnoozePressed                    get return snoozePressed;   

53、;          set snoozePressed = value;                 / 声明事件,它所使用的代理类型为AlarmEventHandler         public event AlarmEventHandler Alarm;  

54、;      / 触发事件的方法        protected virtual void OnAlarm(AlarmEventArgs e)                    if (Alarm != null)      

55、0;                     / 通过代理调用事件处理方法                Alarm(this, e);          &#

56、160;                 / 在该方法中循环调用OnAlarm方法来触发事件,直到        / stop字段的值为true        public void Start()           

57、       for (; ; )                      nrings+;            if (stop)      &

58、#160;                       break;                          else if (s

59、noozePressed)                             / 程序暂停1秒钟               System.Threading.Thread.Sleep

60、(1000);    / 创建事件参数对象实例                AlarmEventArgs e = new AlarmEventArgs(snoozePressed, nrings);             OnAlarm(e);   / 触发事件,在事件处理方

61、法中会             / 相应地设置snoozePressed和stop              / 字段的值(通过属性来设置)                

62、;                           else                         

63、60;     / 程序暂停0.3秒                System.Threading.Thread.Sleep(300);                AlarmEventArgs e = new AlarmEventArgs(snoozeP

64、ressed,   nrings);               OnAlarm(e);       / 触发事件                       

65、                    / 包含事件处理方法的类    public class WakeMeUp            / 事件处理方法        / 在该方法中根据用户的输入来通过事件参数sender &#

66、160;      / 设置事件发送者属性,        public void AlarmRang(object sender, AlarmEventArgs e)                Console.WriteLine(e.AlarmText + "n");    

67、;    if (!(e.SnoozePressed)                  if (e.NumRings % 10 = 0)                    Console.WriteLine("继续

68、闹铃?输入Y");           Console.WriteLine("打会盹儿?输入N");           Console.WriteLine("停止闹铃?输入Q");           String input = Console.

69、ReadLine();           if (input.Equals("Y") | input.Equals("y") return;           else if (input.Equals("N") | input.Equals("N")    

70、60;                    / 通过事件参数sender来访问触发事件的对象             (AlarmClock)sender).SnoozePressed = true;        &

71、#160;      return;                        else           (AlarmClock)sender).Stop = true;  

72、0;          return;                                          

73、;     else                   Console.WriteLine(" 继续闹铃?输入Y");          Console.WriteLine(" 停止闹铃?输入Q");   &

74、#160;      String input = Console.ReadLine();          if (input.Equals("Y") | input.Equals("y") return;          else     &#

75、160;                    (AlarmClock)sender).Stop = true;               return;          &#

76、160;                         / 包含程序入口方法的类    public class AlarmDriver            / 入口方法        publi

77、c static void Main(string args)                    / 创建事件接收者对象实例            WakeMeUp w = new WakeMeUp();        

78、60;   / 创建事件发送者对象实例            AlarmClock clock = new AlarmClock();            / 把事件处理方法绑定到发送者的事件上            clock.Alarm +=

79、new AlarmEventHandler(w.AlarmRang);            clock.Start();            实验四 泛型与LINQ与文件操作【学时数:2学时】一、实验目的1. 掌握泛型的使用2. 掌握path类和directory类的操作。Ø 3. 掌握文本文件二进制文件,及内存文件的读写。二、实验内容1.输入教材P118 例5-

80、2并运行该程序2.创建文件字节读写应用程序:先写字节数组数据到文件,然后这一个文件所有字节到数组并在屏幕显示的程序,然后测试移动文件读写位置。3. 创建删除、移动、复制文件的应用程序:先判断用户输入的文件路径是否存在,如存在则进行删除、移动、复制等操作。三、实验报告完成本次实验的报告,写清实验目的和要求、实验内容和实验结果。四、参考程序1. 参见教材118页。2. using System;using System.Collections.Generic;using System.Text;using System.IO;/使用文件必须引入的命名空间namespace FileStreamEx

81、  class Program    static void Main(string args)         WriteStream();     ReadStream();     SeekStream();     static  void WriteStream()  byte data

82、= new byte10;/建立字节数组  for (int i = 0; i < 10; i+)/为数组赋值  datai = (byte)i;  FileStream fs = new FileStream("d:/g1.bin", FileMode.Create);/建立流对象  fs.Write(data, 0, 10);/写data字节数组中的所有数据到文件 fs.Close();/不再使用的流对象,必须关闭。垃圾收集器不能自动清除流对象   static v

83、oid ReadStream() FileStream fs = new FileStream("d:/g1.bin", FileMode.Open);/ byte data = new bytefs.Length; long n = fs.Read(data, 0, (int)fs.Length);/n为所读字节数 fs.Close();  Console.WriteLine("文件的内容如下:");  foreach (byte m in data)  

84、;Console.Write("0,", m); static void SeekStream()   FileStream fs = new FileStream("d:/g1.bin", FileMode.Open);/无第3个参数 fs.Seek(-4, SeekOrigin.End);/文件读写位置移到从文件尾部向前5个字节 Console.WriteLine("读写位置:0,能定位:1", fs.Position, fs.CanSeek); Console

85、.WriteLine("能读:0,能写:1", fs.CanRead, fs.CanWrite); fs.Close();   3. using System;using System.Collections.Generic;using System.Text;using System.IO;namespace FileExm    class Program         static void Main(string args) 

86、             DeleteFile();        CopyFile();       MoveFile();      static void DeleteFile()      Console.WriteLine("请键入要删除的文件的路径:");    string path = Console.ReadLine();/从键盘读入路径,输入回车结束     if (File.Exists(path)/表示其后字符串不包括转义字符       File.Delete(path);     else    

温馨提示

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

评论

0/150

提交评论