C#上机实验指导书_第1页
C#上机实验指导书_第2页
C#上机实验指导书_第3页
C#上机实验指导书_第4页
C#上机实验指导书_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

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

文档简介

PAGEword文档可自由复制编辑面向对象程序设计C#实验指导书目录实验一C#与.NET环境初步 21:控制台的输入与输出 22:建立Windows窗体应用程序 33:一个简单的IP地址结构体 5实验二C#基础知识运用 61:枚举和Switchcase 62:浮点型数组排序 83:从1到9的乘法口诀表 10实验三在C#中实现面向对象编程 111:队列类的应用程序 122:this关键字的使用 143:构造函数的重载和普通函数的重载 16实验四WinForms程序设计初步 181:创建Windows窗体个人简历应用程序 182:创建一个计算器应用程序 24实验五调试、测试和异常处理 281:调试应用程序 282:处理异常 313:创建自定义异常 33实验六数据库编程:连接数据库 361:用command和Connection实现系统登录界面 372:多表查询的应用 41实验七数据库编程:检索操作数据 441:使用BindingSource和BindingNavigator控件操作数据库 442:在SQLServer数据库中存储图像 46实验八C#高级编程 471:单一继承 482:使用抽象类和抽象方法计算不同形状的面积 503:使用委托和事件实现模拟闹铃 51实验九数组、集合对象和泛型 571:使用Hashtable对象存储数据项 582:员工数据输入 61实验十WinForms高级编程 641:使用菜单、工具栏来改变窗口的大小与颜色 64实验十一三层结构数据库系统开发 76实验十二简单设计模式及应用 871:学校登录系统 872:多文档系统 903:大陆生态系统 94实验十三文件和注册表操作 951:创建文件字节读写应用程序 952:创建删除、移动、复制文件的应用程序 973:序列化 99实验一C#与.NET环境初步实验目的:了解.NETFramework的结构。理解.NETFramework的基本概念了解.NETFramework命名空间了解C#程序的基本结构熟悉VisualStudio.NET的配置熟悉如何创建一个控制台应用程

实验内容:编写第一个控制台的输入与输出程序建立第一个Windows窗体应用程序定义一个简单的IP地址结构体实验设备仪器:PC50台,要求:windows7/xp/2000/2003操作系统,配置Vc#2005/2008运行环境,安装SQLServer2000/2005/2008数据库管理系统实验步骤:1:控制台的输入与输出问题在控制台上实现文本的输入与输出。问题说明按照提示输入自己的姓名,程序输出你输入的名字,并欢迎使用C#语言。主要使用Console(控制台)对象的WriteLine和Write方法实现显示;使用ReadLine方法读入字符。分析Main()是应用程序(可执行)的入口点,它必须包含在一个类中,且仅有一个类能使用该标志定义。参考步骤:(1)为解决方案创建一个控制台应用程序的项目“Example_1”。(2)将“Program.cs”类文件重命名为“Welcome.cs”。(3)将以下代码添加到“Welcome.cs”中。usingSystem;

//给System名字空间加一个using指令,不再需要规定名字空间,就可以使用它们的方法和属性usingSystem.Collections.Generic;usingSystem.Text;namespaceExample_1{

classWelcome

{

/*这种注释

跨越多行*/

staticvoidMain(string[]args)

{

//这是单行注释

Console.Write("请输入你的姓名:");

//Write与WriteLine不同的地方在于它输出

时不换行

stringstrName=Console.ReadLine();

Console.WriteLine("{0}+,你好!\n欢迎使用C#语言!",strName);

//{0}代替

WriteLine方法的参数表中紧随格式串后的第一个变量

}

}}(4)选择“生成”→“生成解决方案”选项,以生成此项目。(5)选择“调试”→“开始执行(不调试)”选项来执行此应用程序。

此应用程序的输出结果如图1.1所示。图1.1Welcome.cs的输出结果2:建立Windows窗体应用程序问题设计一个窗口,可以将用户输入的两个操作数进行加法计算,并显示计算结果。问题说明首先要新建Windows应用程序类型的项目,创建成功后,可以得到一个名为Form1的空白窗体。可以从左边工具箱中的公共控件组中选择控件往窗体上拖放。在Windows窗体上添加两个文本输入框供用户输入操作数,再添加一个按钮来对输入的操作数进行加法计算,最后将计算结果显示在第三个输入框中。分析VisualStudio.Net使开发图形界面程序简单,把需要的控件从工具箱拖放到Windows窗体上即可。使用VisualStudio.Net可以减少开放人员编写的代码量,使开放人员集中精力解决业务问题。推荐步骤:(1)建立一个Windows应用程序项目,命名为“WinForm”。(2)往Form1窗体上拖放3个Label和TextBox控件和一个Button控件,并对它们相应的Text属性进行修改,效果如图:(3)双击ADD按钮,出现代码编辑界面,把以下代码添加到“Form1.cs”中。usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;namespaceWinForm{

publicpartialclassForm1:Form

{

publicForm1()

{

InitializeComponent();

}

privatevoidbutton1_Click(objectsender,EventArgse)

{

longoper1,oper2,result;

//如果操作数为空,显示警告信息

if((textBox1.Text=="")||(textBox2.Text==""))

{

MessageBox.Show(this,"操作数不能为空","提示信息",

MessageBoxButtons.OK,MessageBoxIcon.Information);

return;

}

try

{

//将文本框中的数据(字符串型)转换成long型数据

oper1=Convert.ToInt64(textBox1.Text);

oper2=Convert.ToInt64(textBox2.Text);

result=oper1+oper2;

//将和写入结果文本框

textBox3.Text=Convert.ToString(result);

}

catch(Exceptione1)

{

//捕捉异常,例如:若输入字母,在转换成long类型时会引发异常

MessageBox.Show(this,e1.Message,"警告信息",

MessageBoxButtons.OK,MessageBoxIcon.Warning);

}

}

}}(4)选择“生成”→“生成解决方案”选项,以生成此项目。(5)选择“调试”→“开始执行(不调试)”选项来执行此应用程序。

此应用程序的输出结果如图1.2所示。图1.2Form1窗体的运行结果3:一个简单的IP地址结构体问题使用4个byte类型的变量来对IP地址进行存储,并将这4个变量组成定义一个结构体。问题说明struct类型是一种可包含构造函数、常数、字段、方法、属性、索引器、运算符和嵌套类型的值类型。分析此问题要求使用一个结构体来接受和储存IP地址中的4个十进制数。该结构体可通过以下方式声明:IPsampleStruct;在C#中,类与结构体在语义上是不同的,结构是值类型,不需要实例化,而类是引用类型。推荐步骤:(1)为解决方案创建一个控制台应用程序的项目“Example_2”。(2)将“Program.cs”类文件重命名为“SampleStruct.cs”。(3)将以下代码添加到“SampleStruct.cs”中。usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceExample_2{

//定义一个IP结构体

structIP

{

publicbyteb1,b2,b3,b4;

}

classSampleStruct

{

staticvoidMain(string[]args)

{

IPsampleStruct;

sampleStruct.b1=192;

sampleStruct.b2=168;

sampleStruct.b3=1;

sampleStruct.b4=101;

Console.Write("{0}.{1}",sampleStruct.b1,sampleStruct.b2);

Console.Write("{0}.{1}",sampleStruct.b3,sampleStruct.b4);

}

}}(4)选择“生成”→“生成解决方案”选项,以生成此项目。(5)选择“调试”→“开始执行(不调试)”选项来执行此应用程序。此应用程序的输出结果如图1.3所示。图1.3SampleStruct.cs的输出结果实验总结根据实验内容和步骤,写出实验体会。实验二C#基础知识运用实验目的:通过本章的学习,主要把握以下内容:在C#中定义变量和常量使用C#中的基本数据类型理解装箱和拆箱的概念使用C#中的运算符,选择结构和循环结构定义和使用数组,了解结构和枚举熟悉C#中的预处理指令熟悉C#中的字符串处理实验设备仪器:PC50台,要求:windows7/xp/2000/2003操作系统,配置Vc#2005/2008运行环境,安装SQLServer2000/2005/2008数据库管理系统实验内容:编写一个使用枚举和Switchcase选择语句的程序浮点型数组排序编写1到9的乘法口诀表程序实验步骤:1:枚举和Switchcase问题枚举类型的构建和使用;通过Switchcase语句来对符合条件值进行输出。问题说明编写一个Degrees的枚举,然后引用这个枚举。分析在此问题中首先需要定义一组不同类型的学位。为此,可通过以下方式创建枚举。EnumDegrees{

Bachelor,

//学士

Master,

//硕士

Doctor

//博士}然后,可以使用switch结构,根据传递到此switch结构的枚举成员来决定要显示的信息。参考步骤:(1)为解决方案创建一个控制台应用程序的项目“Example_3”。(2)将“Program.cs”类文件重命名为“EnumDemo.cs”。(3)将以下代码添加到“EnumDemo.cs”中。usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceExample_3{

//学位枚举列表

enumDegrees

{

//枚举成员

Bachelor,

Master,

Doctor

}

///<summary>

///此程序演示枚举和switchcase的用法。

///</summary>

classEnumDemo

{

///<summary>

///应用程序的主入口点。

///</summary>

[STAThread]

staticvoidMain(string[]args)

{

//用switchcase来为相应的case显示信息。

switch(Degrees.Master)

{

caseDegrees.Bachelor:

Console.WriteLine("你的学位为学士");

break;

caseDegrees.Master:

Console.WriteLine("你的学位为硕士");

break;

caseDegrees.Doctor:

Console.WriteLine("你的学位为博士");

break;

default:break;

}

Console.ReadLine();

}

}}(4)选择“生成”→“生成解决方案”选项,以生成此项目。(5)选择“调试”→“开始执行(不调试)”选项来执行此应用程序。此应用程序的输出结果如图1.1所示。图1.1EnumDemo.cs的输出结果2:浮点型数组排序问题用户输入6个浮点型数组,程序根据其值的大小,进行排序输出。问题说明编写一个程序来接受用户输入的6个浮点数值,把这些数存放到一个数组里,然后对这些数组里面的值进行排序。分析此问题要求使用一个数组来接受和存储用户输入的6个值。该数组可通过以下方式声明://声明长度为6的数组

float[]elements=newfloat[6];用冒泡法对数组进行排序:需要使用一个for循环来接受用户输入的值。再用一个嵌套for循环比较数组中的元素。参考步骤:(1)为解决方案创建一个控制台应用程序的项目“Example_4”。(2)将“Program.cs”类文件重命名为“ArrayDemo.cs”。(3)将以下代码添加到“ArrayDemo.cs”中。usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceExample_4{

///<summary>

///此程序演示数组和嵌套for循环的用法。

///</summary>

classArrayDemo

{

///<summary>

///应用程序的主入口点。

///</summary>

[STAThread]

staticvoidMain(string[]args)

{

//声明长度为6的数组

float[]elements=newfloat[6];

//计数器变量

intindex;

//临时变量

floattemp;

Console.WriteLine("输入要进行排序的6个浮点数值:");

//For循环接受用户输入的值

for(index=0;index<elements.Length;index++)

{

elements[index]=float.Parse(Console.ReadLine());

}

Console.WriteLine("\n已排序的数组:");

//嵌套for循环对值进行比较

for(index=0;index<elements.Length;index++)

{

for(intj=index+1;j<elements.Length;j++)

{

//如果值不以升序排序,就交换这些值

if(elements[index]>elements[j])

{

temp=elements[index];

elements[index]=elements[j];

elements[j]=temp;

}

}

Console.WriteLine(elements[index]);

}

}

}}(4)选择“生成”→“生成解决方案”选项,以生成此项目。(5)选择“调试”→“开始执行(不调试)”选项来执行此应用程序。此应用程序的输出结果如图1.2所示。图1.2ArrayDemo.cs的输出结果

3:从1到9的乘法口诀表问题编写程序输出从1到9的乘法口诀表。问题说明口诀表的前一部分如下:

1*1=1;

1*2=2;2*2=4;

1*3=3;2*3=6;3*3=9;

1*4=4;2*4=8;3*4=12;4*4=16;分析使用两个嵌套for循环来实现,父循环从1到9,子循环从1到父循环的当前值。推荐步骤:(1)建立一个控制台应用程序项目,命名为“multiplicationTable”。(2)把以下代码添加到“Program.cs”中。usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespacemultiplicationTable{

classProgram

{

staticvoidMain(string[]args)

{

for(inti=1;i<10;i++)

{

//输出一行

for(intj=1;j<=i;j++)

{

Console.Write(j.ToString()+"*"+i.ToString()+";");

}

Console.Write("\n");//换行

}

}

}}(3)选择“生成”→“生成解决方案”选项,以生成此项目。(4)选择“调试”→“开始执行(不调试)”选项来执行此应用程序。此应用程序的输出结果如图1.3所示。图1.3Program.cs的运行结果实验总结根据实验内容和步骤,写出实验体会。实验三在C#中实现面向对象编程实验目的:通过本章的学习,主要把握以下内容:理解C#的类和对象使用C#构造函数和析构函数使用C#访问修饰符使用方法在C#中使用方法的重写理解属性及其不同的类型、实现理解和使用索引器理解命名空间实验内容:编写一个队列类的C#程序。this关键字的使用。构造函数的重载和普通函数的重载。实验设备仪器:PC50台,要求:windows7/xp/2000/2003操作系统,配置Vc#2005/2008运行环境,安装SQLServer2000/2005/2008数据库管理系统实验步骤:1:队列类的应用程序问题在数据结构中已经学习了队列,请用C#编写一个类实现队列的功能,并编写一个测试类测试该队列的功能。(参考.Net的类库中已经封装好了的队列类:System.Collections.Queue,可以将自己做好的类,和它进行比较)问题说明队列是限定所有的插入操作在表的一端进行,而删除操作在表的另一端进行的线性表,具有先进先出的特性。确定该队列中存储的值类型为整数类型。分析一个队列有入排和出排动作,可以编写两个函数分别命名为EnQueue和DeQueue;还应该有一个属性Length:判断队列中的元素个数;一个打印的函数Print:将队列中所有的值进行打印输出。参考步骤:(1)新建一个名为“QueueWithCSharp”的基于控制台应用程序的项目。(2)添加一个类,名为:Queue,添加以下代码。usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceQueueWithCSharp{

publicclassNode

{

publicintdata;

publicNodeprior,next;

publicNode()

{

prior=null;

next=null;

data=0;

}

}

publicclassQueue

{

Nodehead,rear;

intlength;

publicintLength

{

get

{

returnlength;

}

}

publicQueue()

{

//

//

TODO:

在此处添加构造函数逻辑

//

head=rear=null;

length=0;

}

publicvoidEnQueue(intdata)

//

追加

{

if(rear==null)

{

rear=newNode();

head=rear;

rear.data=data;

length++;

}

else

{

rear.next=newNode();

rear.next.data=data;

length++;

rear=rear.next;

}

}

publicintDeQueue()

//删除

{

if(length<=0)

{

rear=head=null;

Console.WriteLine("队列中没有元素");

return0;

}

intdata=head.data;

head=head.next;

length--;

returndata;

}

publicvoidPrint()

//打印

{

stringstr="";

Nodecurrent=head;

while(current!=null)

{

if(current==head)

{

str+=current.data.ToString();

}

else

{

str+="

<-

"+current.data.ToString();

}

current=current.next;

}//

end

while

current

Console.WriteLine(str);

}

}}(3)在Program.cs类中调用Queue类,代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceQueueWithCSharp{

classProgram

{

staticvoidMain(string[]args)

{

//定义一个队列类

QueuedemQueue=newQueue();

//数据入排

demQueue.EnQueue(10);

demQueue.EnQueue(19);

demQueue.EnQueue(50);

demQueue.EnQueue(99);

//数据出排

demQueue.DeQueue();

//打印队列中的数据

demQueue.Print();

}

}}(4)生成项目。(5)选择“调试”→“开始执行(不调试)”选项来执行此应用程序,输出结果如图1.1所示。图1.1

1的输出结果2:this关键字的使用问题this关键字的使用指导问题说明this引用有三种典型的使用方式。第一种方式是限定被参数掩藏的实例变量;publicvoidFunction1(inti){

This.i=i;}第二种用法是把当前对象作为参数传给另一个方法;publicvoidMethod1(){

OtherClassobj=newOtherClass();

obj.Method2(this);}第三种方法与索引器有关。publicClassthis[stringtitle]{

get

{

foreach(…)

returnclass;

}}分析定义一个汽车类,这个类有多个构造函数,因为这些构造函数之间有部分功能是重叠的,所以可以进行相互调用。在进行构造函数的互相调用时,this关键字调用参数最匹配的那个构造函数。参考步骤:(1)使用VisualStudio.NET2005新建一个基于控制台的项目“CallConstructor”。(2)将“Program.cs”类文件重命名为“Car.cs”。(3)将以下代码添加到“Car.cs”中。usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceCallConstructor{

publicclassCar

{

intpetalCount=0;

strings="null";

Car(intpetalCount)

{

this.petalCount=petalCount;

//this的第一种用法

Console.WriteLine("Constructorw/intargonly,petalCount="+petalCount);

}

Car(Strings,intpetals)

:this(petals)

//this关键字调用参数最匹配的那个构造函数

{

this.s=s;

Console.WriteLine("String&intargs");

}

Car():this("hi",47)

{

Console.WriteLine("defaultConstructor");

}

staticvoidMain(string[]args)

{

Carx=newCar();

}

}}(4)生成项目。(5)选择“调试”→“开始执行(不调试)”选项来执行此应用程序。此程序的输出结果如图3.2所示。图3.22的输出结果3:构造函数的重载和普通函数的重载问题构造函数的重载和普通函数的重载问题说明方法的重载仅仅是根据方法的参数列表来决定是否两个同名的函数是不同的,而不包括方法的返回值。以下声明两个不同的函数是非法的:Voidf(){}intf()

{}分析定义一个Tree类,该类对构造函数和info函数进行重载。最后在main函数中,采用不同的参数去实例Tree类对象和调用info方法。参考步骤:(1)创建一个名为“Overloading”的控制台应用程序。(2)将以下代码添加到“Program.cs”中。usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceOverloading{

classProgram

{

classTree

{

intheight;

publicTree()

{

Console.WriteLine("Plantingaseedling");

height=0;

}

publicTree(inti)

{

Console.WriteLine("CreatingnewTreethatis"+i+"feettall");

height=i;

}

internalvoidinfo()

{

Console.WriteLine("Treeis"+height+"feettall");

}

internalvoidinfo(strings)

{

Console.WriteLine(s+":Treeis"+height+"feettall");

}

}

staticvoidMain(string[]args)

{

for(inti=0;i<5;i++)

{

Treet=newTree(i);

();

("overloadedmethod");

}

newTree();

}

}}(3)生成并执行该程序。此程序的输出结果如图3.3所示。图3.33的输出结果实验总结根据实验内容和步骤,写出实验体会。实验四WinForms程序设计初步实验目的:理解Windows窗体使用基本控件如标签、文本、按钮、列表框和组合框掌握窗体的常用属性和方法使用WinForms中的高级控件Ø

单选按钮Ø

图片框Ø

选项卡控件Ø

滚动条Ø

进度条实验内容:建立个人简历的Windows应用程序。建立一个模拟的计算器应用程序。建立一个媒体播放机应用程序。实验设备仪器:PC50台,要求:windows7/xp/2000/2003操作系统,配置Vc#2005/2008运行环境,安装SQLServer2000/2005/2008数据库管理系统实验步骤:Windows窗体是VisualStudio.NET提供的集成开发环境(IDE),可用于Windows应用程序开发。它带有可用于创建GUI(GraphicalUserInterface,图形用户界面)的所有现成界面组件。1:创建Windows窗体个人简历应用程序问题请编写一个简单的个人简历程序,要求可以通过文本框输入姓名,通过单选按钮设置性别,通过下拉列表框选择文化程度,通过文本区域填写其他个人信息;通过文件对话框选择照片并显示;通过两个下拉列表框来关联选择籍贯。指导教师分析解题思路该问题需要开发一个窗体,要求对用户的简历信息进行登记。该应用程序主要用到按钮、文本输入框、图片显示框、下拉列表框和列表框等控件。分析主要通过对窗体和各控件相应的事件处理函数进行编程,包括窗体的Load、下拉框的SelectedIndexChanged、按钮的Click事件。参考步骤:先看看窗体的界面效果:图5.1

登录屏幕(1)新建一个名为“PersonalResume”的基于Windows应用程序的项目。(2)将文件“Form1.cs”重命名为“PersonInfo.cs”。(3)设计窗体,方法是添加五个标签控件、一个文本框、两个按钮、两个单选按钮、一个图片显示框、一个下拉列表框和列表框。如表5.1所示列出了每个控件的属性。表5.1

窗体的控件属性控件类型Name属性Text文本说明Labellab_name姓名:

Labellab_sex性别:

Labellab_nativePlace籍贯:

Labellab_photo照片:

Labellab_otherInfo其他信息:

TextBoxtbx_name

RadioButtonrbn_male男性

RadioButtonrbn_female女性

ComboBoxcbx_province

ListBoxlbx_city

PictureBoxpbx_photo

RichTextBoxrtbx_otherInfo

Buttonbtn_browse浏览

Buttonbtn_OK确定

(4)在窗体的Load事件中编写下列代码。

privatevoidPersonInfo_Load(objectsender,EventArgse)

{

cbx_province.Items.Add("浙江省");

cbx_province.Items.Add("江苏省");

cbx_province.SelectedIndex=0;

}(5)在cbx_province的SelectedIndexChanged事件中编写下列代码。

privatevoidcbx_province_SelectedIndexChanged(objectsender,EventArgse)

{

if(cbx_province.SelectedItem!=null)

{

stringprovinceStr=cbx_province.SelectedItem.ToString().Trim();

string[]zjCitys={"杭州市","宁波市","温州市","绍兴市","台州市","湖州市","金

华市","嘉兴市","衢州市","丽水市","舟山市"};

string[]jsCitys={"常州市","淮安市","连云港市","南京市","南通市","苏

州市","宿迁市","泰州市","无锡市","徐州市","盐城市","扬州市","镇江市"};

lbx_city.Items.Clear();

//清空所有的Item项

switch(provinceStr)

{

case"浙江省":

lbx_city.Items.AddRange(zjCitys);

//添加浙江省的城市

break;

case"江苏省":

lbx_city.Items.AddRange(jsCitys);

//添加江苏省的城市

break;

}

}

}(6)在btn_browse的Click事件中编写下列代码。

privatevoidbtn_browse_Click(objectsender,EventArgse)

{

OpenFileDialogimageDialog=newOpenFileDialog();

imageDialog.Filter="BMP(*.BMP)|*.BMP|JPEG(*.JPEG)|*.JPEG|JPG(*.JPG)|*.JPG|GIF

(*.GIF)|*.GIF|PNG(*.png)|*.png";

imageDialog.Title="选择照片";

if(imageDialog.ShowDialog()==DialogResult.OK)

{

pbx_photo.ImageLocation=imageDialog.FileName;

}

}(7)在btn_OK的Click事件中编写下列代码。

privatevoidbtn_OK_Click(objectsender,EventArgse)

{

if(tbx_name.Text==""&&tbx_name.Text.Length<1)

{

MessageBox.Show("请填写姓名!","提示",MessageBoxButtons.OK,

MessageBoxIcon.Information);

return;

}

if(lbx_city.SelectedItem==null)

{

MessageBox.Show("请选择籍贯!","提示",MessageBoxButtons.OK,

MessageBoxIcon.Information);

return;

}

MessageBox.Show("你的简历信息将会保存到数据库中,\n以便招聘企业查询!","提示",

MessageBoxButtons.OK,MessageBoxIcon.Information);

this.Close();

}(8)完整的代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;namespacePersonalResume{

publicpartialclassPersonInfo:Form

{

publicPersonInfo()

{

InitializeComponent();

}

privatevoidcbx_province_SelectedIndexChanged(objectsender,EventArgse)

{

if(cbx_province.SelectedItem!=null)

{

stringprovinceStr=cbx_province.SelectedItem.ToString().Trim();

string[]zjCitys={"杭州市","宁波市","温州市","绍兴市","台州市","湖州市","金华

市","嘉兴市","衢州市","丽水市","舟山市"};

string[]jsCitys={"常州市","淮安市","连云港市","南京市","南通市","苏州

市","宿迁市","泰州市","无锡市","徐州市","盐城市","扬州市","镇江市"};

lbx_city.Items.Clear();

//清空所有的Item项

switch(provinceStr)

{

case"浙江省":

lbx_city.Items.AddRange(zjCitys);

//添加浙江省的城市

break;

case"江苏省":

lbx_city.Items.AddRange(jsCitys);

//添加江苏省的城市

break;

}

}

}

privatevoidbtn_browse_Click(objectsender,EventArgse)

{

OpenFileDialogimageDialog=newOpenFileDialog();

imageDialog.Filter="BMP(*.BMP)|*.BMP|JPEG(*.JPEG)|*.JPEG|JPG(*.JPG)|*.JPG|GIF

(*.GIF)|*.GIF|PNG(*.png)|*.png";

imageDialog.Title="选择照片";

if(imageDialog.ShowDialog()==DialogResult.OK)

{

pbx_photo.ImageLocation=imageDialog.FileName;

}

}

privatevoidbtn_OK_Click(objectsender,EventArgse)

{

if(tbx_name.Text==""&&tbx_name.Text.Length<1)

{

MessageBox.Show("请填写姓名!","提示",MessageBoxButtons.OK,

MessageBoxIcon.Information);

return;

}

if(lbx_city.SelectedItem==null)

{

MessageBox.Show("请选择籍贯!","提示",MessageBoxButtons.OK,

MessageBoxIcon.Information);

return;

}

MessageBox.Show("你的简历信息将会保存到数据库中,\n以便招聘企业查询!","提示",

MessageBoxButtons.OK,MessageBoxIcon.Information);

this.Close();

}

privatevoidPersonInfo_Load(objectsender,EventArgse)

{

cbx_province.Items.Add("浙江省");

cbx_province.Items.Add("江苏省");

cbx_province.SelectedIndex=0;

}

}}(9)通过从菜单中选择“生成”→“生成解决方案”,来生成该解决方案。(10)通过从菜单中选择“调试”→“开始执行(不调试)”选项来执行此应用程序。程序运行效果图2:创建一个计算器应用程序问题构建一个简单的计算器指导问题说明该计算器提供加减乘除功能,支持小数输入。分析该问题需要一个窗体,添加0-9数字按钮,和一个小数点按钮;4个数学运算符按钮、一个清除按钮和一个等号(计算)按钮;一个文本框用来显示输入的数和计算结果。参考步骤:新建一个“Windows”应用程序项目。将“Form1.cs”文件的名称更改为“Calculator.cs”。(1)在Button0-Button9单击事件处理函数如下:

privatevoidbutton0_Click(objectsender,EventArgse)

{

if(blnClear)//如果准备输入下一个加数,应先清除textBox1显示内容

{

textBox1.Text="0";

blnClear=false;

}

Buttonb1=(Button)sender;

if(textBox1.Text!="0")

textBox1.Text+=b1.Text;

else

textBox1.Text=b1.Text;

}(2)为“.”按钮事件处理函数添加如下代码:

privatevoidbtn_dot_Click(objectsender,EventArgse)

{

if(blnClear)//如果准备输入下一个数,应先清除textBox1显示内容

{

textBox1.Text="0";

blnClear=false;

}

intn=textBox1.Text.IndexOf(".");

if(n==-1)//如果没有小数点,增加小数点,防止多次输入小数点

textBox1.Text+=".";

}(3)在加、减、乘、除单击事件处理函数如下:

privatevoidbtn_add_Click(objectsender,EventArgse)

{

doubledbSecond=Convert.ToDouble(textBox1.Text);

if(!blnClear)//如果未输入第二个操作数,不运算

switch(strOper)//按记录的运算符号运算

{

case"+":

sum+=dbSecond;

break;

case"-":

sum-=dbSecond;

break;

case"*":

sum*=dbSecond;

break;

case"/":

sum/=dbSecond;

break;

}

if(sender==btn_add)

strOper="+";

if(sender==btn_sub)

strOper="-";

if(sender==btn_mul)

strOper="*";

if(sender==btn_div)

strOper="/";

if(sender==btn_equ)

strOper="=";

textBox1.Text=Convert.ToString(sum);

blnClear=true;

}(4)完整的代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;namespacee3_22{

publicpartialclassCalculator:Form

{

doublesum=0;

boolblnClear=false;

stringstrOper="+";

publicCalculator()

{

InitializeComponent();

}

privatevoidbutton0_Click(objectsender,EventArgse)

{

if(blnClear)//如果准备输入下一个加数,应先清除textBox1显示内容

{

textBox1.Text="0";

blnClear=false;

}

Buttonb1=(Button)sender;

if(textBox1.Text!="0")

textBox1.Text+=b1.Text;

else

textBox1.Text=b1.Text;

}

privatevoidbtn_dot_Click(objectsender,EventArgse)

{

if(blnClear)//如果准备输入下一个数,应先清除textBox1显示内容

{

textBox1.Text="0";

blnClear=false;

}

intn=textBox1.Text.IndexOf(".");

if(n==-1)//如果没有小数点,增加小数点,防止多次输入小数点

textBox1.Text+=".";

}

温馨提示

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

评论

0/150

提交评论