《C#面向对象程序设计.docx》由会员分享,可在线阅读,更多相关《C#面向对象程序设计.docx(26页珍藏版)》请在三一办公上搜索。
1、面向对象程序设计实验指导书长春大学软件学院戴银飞2009.7实验一 !#概述实验二C#数据类型实验三C#控制结构实验四C#面向对象程序设计(一) 实验五 C#面向对象程序设计(二) 实验六类的继承实验七多态编程练习实验八委托与事件编程练习实验九基本控件使用实验十菜单的使用-3-6 -9 -14 -17 -19 -20 -21 -22 -23 -24 -25 -实验十二数据库编程实验十一文本编辑器实验一C#概述一、实验目的1. 熟悉Visual C#,NET集成开发环境。2. 掌握控制台应用程序的开发方法。3. 掌握Windows应用程序的开发方法。二、实验要求1. 整理上机步骤,总结经验和体会
2、。2. 完成实验日志和上交程序。三、实验内容题目一:用最原始的方法开发C#程序(1) 打开记事本,输入下面内容:using System;namespace sumpublic class Hellopublic static void Main()int a,b;Console.Write (请输入第一个整数:);a=Convert.ToInt32 (Console.ReadLine();/将输入的字符串转化为整数Console.Write (”请输入第二个整数:”);b=Convert.ToInt32 (Console.ReadLine();/将输入的字符串转化为整数Console.Wri
3、teLine (a=0,b=1”,a,b);Console.WriteLine (a+b=0”,a+b);Console.Read ();(2) 将文件命名为 sum.cs,保存在.Microsoft Visual Studio 8VC 目录下。(3) 选择“开始”“程序” “Microsoft Visual Studio 2005” 一 “Visual Studio Tools” “Visual Studio 2005命令提示”命令,在命令提示行中输入如下命 令:csc d:sum.cs然后按【Enter】键执行,并观察命令的执行情况。(4) 查看.Microsoft Visual Stud
4、io 8VC目录下是否存在名为“sum.exe”的可执行 文件。若存在,则双击打开该文件,按照提示输入数据并运行,同时观察运行 情况;若不存在,思考出错原因。题目二:创建控制台应用程序(1) 选择 “开始” 一“程序” 一“Microsoft Visual Studio 2005” 一 “MicrosoftVisual Studio 2005”命令,启动Visual Studio 2005,并仔细观察起始页的内容。(2)选择“文件” i “新建” i “项目”命令,弹出“新建项目”对话框。仔 细观察对话框的内容。在“项目类型”列表框中选中Visual C#选项;在“模 板”列表框中选中“控制台
5、应用程序”选项;在“名称”文本框中输入项目名 称;在“位置”文本框中输入或选择项目的保存位置。单击“确定”按钮,将 显示控制台应用程序代码编辑窗口,在该窗口内显示系统自动生成的相应代 码。仔细观察并分析这些代码。(3)在代码编辑窗口内的Main()方法中添加如下代码:Console.Write(-当前系统的日期为:);将系统的日期转换为长日期字符串表示形式进行输出Console.WriteLine(DateTime.Now.ToLongDateString();Console.Read();(4)选择“文件” “全部保存”命令,保存项目。(5)选择“调试”“开始执行(不调试)”命令或按【Ctr
6、l+F5】组合键运行程 序,并观察运行情况。(6)在项目的保存位置处查看项目中过的所有文件。题目三:创建Windows应用程序(1)从开始菜单启动Visual Studio 2005。(2)选择“文件”“新建”“项目”命令,弹出“新建项目”对话框。在“项目类型”列表框中选中Visual C#选项;在“模板”列表框中选中“Windows 应用程序”选项;在“名称”文本框中输入项目名称;在“位置”文本框中输 入或选择项目的保存位置。单击“确定”按钮,将显示窗口设计器窗口。(3)切换到“属性”窗口、“解决方案资源管理器”窗口和“类视图”窗口,查看 窗体的属性、项目的组成结构以及项目所设计的所有类。(
7、4)双击打开“解决方案资源管理器”窗口中的各个文件,在代码编辑器窗口内查 看系统自动生成的与该项目有关的代码。(5)选择“调试”“启动调试”命令,运行程序,查看运行结果,然后关闭窗 体。(6)在窗体上添加一个PictureBox控件和两个Button控件。设置窗体和各控件的 属性,如表1-1所示。表1-1窗体及各控件的主要属性控件属性属性值Form1窗体Text(标题)Windows应用程序测试PictureBox1BorderStyle (边框类型)Fixed3DButton1 按钮Text (标题)画图Button2 按钮Text (标题)退出(7) 调整窗体大小以及各个控件的位置,如图1
8、-1所示。图1-1调整控件位置后的界面(8) 双击Button1按钮,在其Click事件内添加代码:Graphics g = this.pictureBox1.CreateGraphics();Pen p1 = new Pen(Color.Red, 5);g.DrawRectangle(p1, 80, 50, 100, 50);(9) 双击Button1按钮,在其Click事件内添加代码:if (MessageBox.Show(你确定要退出吗?,请确认.,MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes)Ap
9、plication.Exit(); /退出应用程序(10)选择“调试”“启动调试”命令,或按【F5】键,或单击工具栏上的按钮,运行程序,查看运行结果。(11)在项目的保存位置处查看项目中过的所有文件。实验二C#数据类型一、实验目的1. 了解。#中的各种数据类型及其相互转换方法。2. 了解。#中的常量和变量。3. 掌握C#中的常用的操作符与表达式。4. 进一步熟悉。#程序的开发过程。二、实验要求1. 分析程序,上机验证结果。2. 写出程序,并调试程序,要给出测试数据和实验结果。3. 整理上机步骤,总结经验和体会。4. 完成实验日志和上交程序。三、实验内容题目一:程序分析(1) 分析程序,写出程序
10、的运行结果,并上机进行验证。using System;public class BoolTestpublic static void Main()Console.Write(请请输入一个字符:”);char c = (char) Console.Read();if (Char.IsLetter(c)if (Char.IsLower(c)Console.WriteLine(字符是小写的。”); elseConsole.WriteLine(字符是大写的。”); elseConsole.WriteLine(”字符不是字母。”);(2) 分析程序,写出程序的运行结果,并上机进行验证。 using Sy
11、stem;class testpublic static void Main()string a = u0068ello ”;string b = world;Console.WriteLine( a + b );Console.WriteLine( a + b = hello world);(3) 分析程序,写出程序的运行结果,并上机进行验证。using System;namespace _1class Programstatic void Main()int a = 10;Console.WriteLine(a=0”, a);int b = new int();Console.WriteL
12、ine(1:b=0”, b);b = 10;Console.WriteLine(2:b=0”, b);Int32 c = 10;Console.WriteLine(c=0”, c);Int32 d = new Int32();Console.WriteLine(1:d=0”, d);d = 10;Console.WriteLine(2:d=0”, d);Console.WriteLine(int:01”, int.MinValue,int.MaxValue);Console.Read();(4) 分析程序,写出程序的运行结果,并上机进行验证。using System;namespace _1c
13、lass Programstatic void Main()char c1 = a;char c2 = x0062;char c3 = u0063;Console.WriteLine(c1:0nc2:1nc3:2n”,c1,c2,c3);Console.Read();(5) 分析程序,写出程序的运行结果,并上机进行验证。using System;namespace _1class Programenum WeekDay sun,mon,tue,wed,thu,fri,satstatic void Main()WeekDay a = WeekDay.sun;Console.WriteLine(a
14、);WeekDay b = (WeekDay)4;Console.WriteLine(b);Console.Read();题目二:程序编写(1) 编写程序,定义一个包括学生基本资料的结构类型数据(要求包括学号、姓名、 性别、年龄、家庭住址等),并对其进行测试。(2) 编写程序,将一年中的12个月建立一个枚举类型,并对其进行测试。(3) 编写程序,使用int类型数据进行装箱与拆箱转换。实验三C#控制结构一、实验目的1. 掌握C#中选择结构语句的使用。2. 掌握C#中循环结构语句的使用。3. 掌握C#中的跳转结构语句。二、实验要求1. 分析程序,上机验证结果。2. 写出程序,并调试程序,要给出测试
15、数据和实验结果。3. 整理上机步骤,总结经验和体会。4. 完成实验日志和上交程序。三、实验内容题目一:程序分析(1) 分析程序,写出程序的运行结果,并上机进行验证。using System;namespace _1class Programstatic void Main(string args)int口口 jagArray=new int2new int5,new int3;for (int i = 0; i jagArray.GetLength(0); i+) for (int j = 0; j jagArrayi.Length; j+) jagArrayij = i + j;for (i
16、nt k = 0; k 2;k+)Console.WriteLine(jagArray0:,k);for(int m=0;mjagArrayk.Length;m+)Console.Write(0,-3”,jagArraykm);Console.WriteLine();Console.Read();(2) 分析程序,写出程序的运行结果,并上机进行验证。using System;namespace _1class Programstatic void Main(string args)object x;x = 1;Console.WriteLine(1:x=0,type is 1;”,x,x.Ge
17、tType();x = 10.01;Console.WriteLine(2:x=0,type is 1;”, x, x.GetType();x = u0061;Console.WriteLine(3:x=0,type is 1;”, x, x.GetType();x = Hello!”;Console.WriteLine(”4:x=0,type is 1;”,x, x.GetType();Console.Read();(3) 分析程序,写出程序的运行结果,并上机进行验证。using System;namespace _1class Programstatic void Main(string
18、args)Console.Write(请输入1-12之间的任意一个整数:”);string s=Console.ReadLine();int month =int .Parse(s);switch(month)case 1:Console.WriteLine(”January”);break;case 2:Console.WriteLine(”February”);break;case 3:Console.WriteLine(”March”);break;case 4:Console.WriteLine(”April”);break;case 5:Console.WriteLine(”May”
19、);break;case 6:Console.WriteLine(”June”);break;case 7:Console.WriteLine(”July”);break;case 8:Console.WriteLine(”August”);break;case 9:Console.WriteLine(”September”);break;case 10:Console.WriteLine(”October”);break;case 11:Console.WriteLine(”Noveber”);break;case 12:Console.WriteLine(”December”);break
20、;default:Console.WriteLine(”输入错误,转换失败。);break;Console.Read();(4) 分析程序,写出程序的运行结果,并上机进行验证。using System;namespace _1class Programstatic void Main(string args)int, a = new int5, 5;a0, 0 = 1;for (int i = 1; i 5; i+)ai, 0 = 1;ai, i = 1;for (int j = 1; j i; j+)ai, j = ai - 1, j - 1 + ai - 1, j;for (int i =
21、 0; i 5; i+)for (int j = 0; j = i;j+ )Console.WriteLine(0t”, ai, j);Console.WriteLine();Console.Read();(5) 分析程序,写出程序的运行结果,并上机进行验证。using System;namespace _1class Programstatic void Main(string args)int odd = 0, even = 0;int array = new int 0, 4, 7, 8, 9, 10, 14, 17, 19, 24, 56 ; foreach (int i in arr
22、ay)if (i % 2 = 0)even+;elseodd+;Console.WriteLine(0个奇数,1个偶数”,odd, even);(6) 分析程序,写出程序的运行结果,并上机进行验证。using System;public class TestDoWhilepublic static void Main ()int x;int y = 0;dox = y+;Console.WriteLine(x);while(y 5);(7) 分析程序,写出程序的运行结果,并上机进行验证。using System;namespace _1class Programstatic void Main
23、(string args)Console.WriteLine(break);for (int i = 0; i 10; i+)if (i = 5) break;Console.WriteLine(i is + i);Console.WriteLine(continue);for (int i = 0; i 10; i+)if (i = 5) continue;Console.WriteLine(i is + i);Console.Read();题目二:程序编写(1) 编写程序,分别用for、while、dowhile语句实现求前n个自然数之和。(2) 编写程序,输出九九乘法表。实验四C#面向对
24、象程序设计(一)一、实验目的1. 理解c#语言是如何体现面向对象编程基本思想。2. 掌握类对象的定义。3. 了解类的封装方法,以及如何创建类和对象。4. 了解成员变量和成员方法的特性。5. 掌握静态成员的用法。二、实验要求1. 分析程序,上机验证结果。2. 写出程序,并调试程序,要给出测试数据和实验结果。3. 整理上机步骤,总结经验和体会。4. 完成实验日志和上交程序。三、实验内容题目一:程序分析(1) 分析下面两个程序,确定那个程序好,说明理由。程序要求:定义一个圆类,计算圆的面积和周长。程序1:public class circlepublic static void Main()doub
25、le radium, delimeter, square;const double pai = 3.1415926;radium = Convert.ToInt32(Console.ReadLine();delimeter = 2 * pai * radium;square = pai * pai * radium;Console.WriteLine(delimeter=0,square=1, delimeter, square);Console.ReadLine();程序2:public class circledouble delimeter, square;const double pa
26、i = 3.1415926;public void calculate(double rad)delimeter = 2 * pai * rad;square = pai * pai * rad;Console.WriteLine(delimeter=0,square=1”,delimeter,square);public static void Main()double radium;circle cir = new circle();radium = Convert.ToInt32(Console.ReadLine();cir.calculate(radium);Console.ReadL
27、ine();(2) 分析程序,写出程序的运行结果,并上机进行验证。Using System;public class studentsstring id,name;int age;public students(string id,string name,int age )this.id = id;this.name = name;this.age = age;public void Display()Console.WriteLine(id=0,name=1,age=2”,id,name,age);public static void Main()/string id, name;/int
28、age;students stu = new students(0001”,zhangsan”,16);stu.Display();Console.ReadLine();(3) 分析程序,写出程序的运行结果,并上机进行验证。public class Dateprivate int Year, Month, Day;public Date(int Year, int Month,int Day)this.Year=Year;this.Month=Month;this.Day=Day;public Date(System.DateTime dt)Year = dt.Year;Month = dt.
29、Month;Day = dt.Day;public void DisplayDate()Console.WriteLine(0年1月2日,Year,Month,Day);public class Testerpublic static void Main()System.DateTime currentTime=System.DateTime.Now;Date dt=new Date(2008,7,18);dt.DisplayDate();Date dt2 = new Date(currentTime);dt2.DisplayDate();Console.ReadLine();题目二:程序编写
30、(1) 实现一个包含类属性方法的简单加法程序,并能显示结果。(2) 实现一个Person类,要求:属性包含姓名、年龄、身份证号、工作、工资等,并 显示各属性的值。实验五C#面向对象程序设计(二)一、实验目的1. 掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义 和重载构造函数。能够根据给定的要求定义类并实现类的成员函数。2. 理解类的成员的访问控制的含义,公有、私有和保护成员的区别。3. 掌握参数传递的用法。4. 掌握属性的作用和使用。二、实验要求1. 分析程序,上机验证结果。2. 写出程序,并调试程序,要给出测试数据和实验结果。3. 整理上机步骤,总结经验和体会。4.
31、 完成实验日志和上交程序。三、实验内容题目一:程序分析(1)分析程序,写出程序的运行结果,并上机进行验证,然后回答后面问题。public class BankAccountstatic int totalAccountNumber=0;string BankAccountId;double initialDepositAmount = 0.00;public BankAccount(string myId)this.BankAccountId = myId;this.initialDepositAmount = 0.00;totalAccountNumber+;public void disp
32、layid()Console.WriteLine(mbaid=0,initialDepositAmount=1”,this.BankAccountId,this. initialDepositAmount);public static void display()Console.WriteLine(totalAccountNumber=0”, totalAccountNumber);public class Testerpublic static void Main() BankAccount mba = new BankAccount(37000001);BankAccount mba2 =
33、 new BankAccount(3700002);BankAccount mba3 = new BankAccount();BankAccount mba4 = new BankAccount(3700004);/ Console.WriteLine(mba2ID=0”, mba2.BankAccountId);mba2.displayid();BankAccount.display();Console.ReadLine();请回答问题:(1) 按你自己的算法修改以上程序,比如可只输出生成的账户数。(2) 把注释去掉后会怎样,为什么?(3) 为什么display用类名直接引用,可以用对象来引
34、用么?尝试输出结果。(4) 类的静态变量和非静态变量的引用区别。判断一下语句的正确性:静态方法只能使用静态变量,不能使用实例变量。因为对象实例化之前,实例变量不可 用。这个观点真确么?()类的静态变量只有一个版本,所有实例对象引用的都是同一个版本。()对象实例化后,每个实例变量都被制作了一个副本,它们之间互不影响。()题目二:程序编写1. 编写一个传值调用的程序。程序功能要求:程序首先给整型变量乂和y赋初值3, 5,然后使用传值调用方式调 用方法对x和y做乘方并及输出x和y的乘方值,最后输出x和y得值。再将此方法给为 对象调用加ref修饰查看输出结果差异。【思考题】1. 方法的参数传递有哪些方
35、式?区别时什么?2. 什么是构造方法。实验六类的继承一、实验目的1. 掌握继承的工作机制和意义。2. 掌握派生类的定义方法和实现。3. 掌握base关键字的使用。4. 编写体现类的继承性(成员变量,成员方法,成员变量隐藏)的程序。二、实验要求1. 写出程序,并调试程序,要给出测试数据和实验结果。2. 整理上机步骤,总结经验和体会。3. 完成实验日志和上交程序。三、实验内容1. 进一步理解继承的含义新类可从现有的类中产生,并保留现有类的成员变量和方法并可根据需要对它们加以修 改。新类还可添加新的变量和方法。这种现象就称为类的继承。当建立一个新类时,不 必写出全部成员变量和成员方法。只要简单地声明
36、这个类是从一个已定义的类继承下来 的,就可以引用被继承类的全部成员。被继承的类称为父类或超类Superclass),这 个新类称为子类。2. 进一步理解继承的意义C#提供了一个庞大的类库让开发人员继承和使用。设计这些类是出于公用的目的,因 此,很少有某个类恰恰满足你的需要。你必须设计自己的能处理实际问题的类,如果你 设计的这个类仅仅实现了继承,则和父类毫无两样。所以,通常要对子类进行扩展,即 添加新的属性和方法。这使得子类要比父类大,但更具特殊性,代表着一组更具体的对 象。继承的意义就在于此。题目一:类的继承和基类构造方法的应用程序功能要求如下:编写一个学生和教师数据输入和显示程序,学生数据有
37、编号、姓名、班级和成绩,教师 数据有编号、姓名、职称和部门。要求将编号、姓名输入和显示设计成一个类person, 并作为学生数据操作类student和教师类数据操作类teacher的基类。题目二:类的继承和构造函数的灵活应用编写一个程序计算出球、圆柱和圆锥的表面积和体积。要求:定义一个基类圆,至少含有一个数据成员半径;定义基类的派生类球、圆柱、圆锥,都 含有求体积函数,可以都在构造函数中实现,也可以将求体积和输出写在一个函数中, 或者写在两个函数中,请比较使用。定义主函数,求球、圆柱、圆锥的和体积。实验七多态编程练习一、实验目的1. 掌握虚拟方法和重载方法的使用。2. 掌握抽象类和抽象方法的使
38、用。3. 理解虚函数在类的继承层次中的作用,虚函数的引入对程序运行时的影响,能够对使用 虚函数的简单程序写出程序结果。二、实验要求1. 写出程序,并调试程序,要给出测试数据和实验结果。2. 整理上机步骤,总结经验和体会。3. 完成实验日志和上交程序。三、实验内容1. 理解类的多态性类的继承发生在多个类之间,而类的多态只发生在同一个类上。在一个类中,可以定义多个 同名的方法,只要确定它们的参数个数和类型不同。这种现象称为类的多态。多态使程序简 洁,为程序员带来很大便利。在OOP中,当程序要实现多个相近的功能时,就给相应的方法 起一个共同的名字,用不同的参数代表不同的功能。这样,在使用方法时不论传
39、递什么参数, 只要能被程序识别就可以得到确定的结果。类的多态性体现在方法的重载(overload)上, 包括成员方法和构造方法的重载。2. 构造方法的重载方法的重载是指对同名方法的不同使用方式。构造方法的名称和类同名,没有返回类型。尽 管构造方法看起来和一般的成员方法没有差别,但它不是方法,也不是类的成员。因此,构 造方法不能直接调用,只能由new操作符调用。构造方法对于类是十分重要的,对象的初始 化任务要靠构造方法来完成。重载构造方法的目的是提供多种初始化对象的能力,使程序员 可以根据实际需要选用合适的构造方法来初始化对象。题目:多态程序练习:功能要求如下基类shape类是一个表示形状的抽象
40、类,area()为求图形面积的函数。请从shape类派 生三角形类(triangle)、圆类(circles)、并给出具体的求面积函数,并在主函数中多态地实 现调用。实验八委托与事件编程练习一、实验目的1. 了解委托的概念,掌握委托的使用。2. 掌握多重委托应用。3. 理解事件的含义,掌握事件的使用。二、实验要求1. 理解委托和事件应用的程序。2. 写出委托和事件应用程序。3. 调试程序,要给出测试数据和实验结果。4. 整理上机步骤,总结经验和体会。5. 完成实验日志和上交程序。三、实验内容题目一:委托及其方法的实现程序程序功能:定义一个含有两个整型参数名叫Calculation返回类型为do
41、uble的委托,分别实 现两个匹配的求和、求平均值的方法,并在主函数中测试它。题目二:多重委托程序实现程序功能:定义一个名叫Greeting无返回值的多重委托,自行定义两个实现方法,并分别用 +操作符、+二操作符、-操作符和-=操作符进行实现多重委托的使用。实验九基本控件使用一、实验目的1. 掌握基本控件的重要属性、事件。2. 熟练掌握在窗体上建立上述控件的操作方法。3. 熟练掌握事件过程代码的编写。4. 初步掌握建立基于图形界面的应用程序的过程。二、实验要求1. 做好实验预习,掌握,并熟悉本实验中所使用的相应的控件。2. 写出实验报告,内容是:1)程序的界面设计。2)程序主要代码。3)运行结
42、果。4)实验总结。三、实验内容题目:设计一密码修改程序,要求:1)当单击“确定”按钮后,首先比较“用户名”和“原密码”是否一致,若一致且都 为“admin”,则继续执行步骤2;否则弹出消息框,提示用户出错,并让用户重新 输入。2)比较“新密码(N) ”和“新密码(S) ”,若两者一致,弹出密码修改成功消息框,程 序终止执行。否则弹出错误消息,并让用户重新输入。3)当单击“取消”按钮后,程序终止执行。图9-1程序主界面实验十菜单的使用一、实验目的1. 掌握菜单的建立与使用。2. 理解菜单相关的属性、事件、方法。二、实验要求1. 写出程序,并调试程序,要给出测试数据和实验结果。2. 整理上机步骤,
43、总结经验和体会。3. 完成实验日志和上交程序。三、实验内容题目:编写包含菜单的计算程序建立一个如图10-1所示的应用程序,掌握菜单和工具栏的应用,并实现相应的功能。图10-1 程序主界面实验十一文本编辑器一、实验目的1 .掌握C#中Windows应用程序设计基础。2. 了解并掌握Windows基本控件的常用属性和方法。3. 了解C#中Windows应用程序的文件构成。4. 掌握Windows程序设计思想。二、实验要求1. 写出程序,并调试程序,要给出测试数据和实验结果。2. 整理上机步骤,总结经验和体会。3. 完成实验日志和上交程序。三、实验内容本次试验为 Windows 基础控件的使用,如 ComboBox, ListBox, Label, Button, TextBox。 其中要用到这些控件的常用属性和方法。题目:文本编辑器设计建立一个如图11-1所示的应用程序,掌握基础控件的应用,并按照窗体所列按钮实现 相应的功能。图11-1 程序主界面实验十二数据库编程一、实验目的1. 熟悉ADO.NET的体系结构和对象模型。2. 熟悉常用的数据库连接方式。3. 掌握C#基本的数据库操作方式。4. 通过实验内容,能够进行简单的数据库程序开发。二、实验要
链接地址:https://www.31ppt.com/p-4883244.html