版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
下一页VisualC#程序设计教程
上一页第1章程序设计语言与程序设计方法1.1程序设计语言人们使用计算机处理问题时,与计算机交换信息所使用的语言叫计算机语言,也就是程序设计语言。它是人为地设计而成的约定信息。章节目录上一页下一页1.1.1机器语言机器语言是计算机能执行的指令代码,这种语言是由若干0和1的序列组成的指令,也就是人们常说的二进制代码。用机器语言设计的程序,称为机器语言程序。这是一种最低级的计算机语言程序。章节目录上一页下一页1.1.2汇编语言
使用一种比较直观、便于记忆的指令符号来代替二进制数字的机器指令代码,这就是汇编语言。汇编语言的每条指令通常使用英文单词的缩写形式表示,也叫助记符。汇编语言需用一个专门的程序将其转换为机器指令代码,这个负责转换的程序叫汇编程序。章节目录上一页下一页1.1.3高级语言
高级语言接近人们熟悉的自然语言,高级语言与具体的计算机指令系统没有直接关系,因此用高级语言设计的程序可以在各种类型的计算机上运行。
必须将高级语言程序转换为机器语言程序,才能在计算机上得以执行,这种转换的过程叫“翻译”。翻译分解释和编译,在“翻译”过程中会自动检查源程序中的语法错误。章节目录上一页下一页1.2算法
1.2.1算法的概念
所谓算法,是指为解决一个问题而采取的方法和步骤,或者说是解题步骤的精确描述。广义地说,处理任何问题都有一个“算法”问题。计算机算法,即计算机能执行的算法。
计算机的算法可分为两大类:数值运算算法和非数值运算算法。
章节目录上一页下一页1.2.2算法的表示
1.用自然语言表示算法
可以用人们日常生活中使用的语言即自然语言来表示算法,用自然语言表示算法的好处是人人都懂,人人都会。
但是,自然语言表示的算法容易非常冗长,有时会产生“二义性”。
章节目录上一页下一页2.用流程图表示算法
起止框判断框处理框输入输出框流程线连接点图1-1流程图符号用流程线将各种操作图符号连接在一起就构成了一个完整的算法流程图。这种流程图称为传统流程图。
章节目录上一页下一页N-S流程图中,完全去掉了流程线。全部算法写在一个大矩形框中,在某一矩形框中还可以包含一些属于它的小矩形框。这种流程图又称为盒图。
章节目录上一页下一页章节目录上一页下一页
传统流程图
N-S流程图1.3程序设计方法
1.3.1结构化程序设计方法
结构化程序设计方法是一种传统的程序设计方法。结构化程序设计方法从编程思想上要求自顶向下,逐步求精,从程序的具体结构上要求程序是模块化,要求程序语言中有直接实现顺序结构、选择结构和循环结构这三种基本结构的语句,要求程序代码由三种基本结构组成,复杂的结构应该由基本结构进行组合嵌套来实现,整个程序或程序中的模块或控制结构只有一个入口和一个出口。
章节目录上一页下一页1.顺序结构
章节目录上一页下一页ABAB2.选择结构
章节目录上一页下一页3.循环结构
章节目录上一页下一页当P为真(是)
A1.3.2面向对象程序设计方法
在程序的设计中,算法总是与特定的数据结构密切相关的,算法含有对数据结构的访问,特定的算法只适用于特定的数据结构,因此算法与数据结构在编程中应该是一个密不可分的整体,这个整体叫对象。面向对象的程序设计通过类、对象、继承、多态等机制形成一个完善的编程体系。面向对象的程序设计多采用可视化的方式。章节目录上一页下一页1.类和对象可以把类比作一种蓝图,而对象则是根据蓝图所创建的实例,可以把类比作生产模具,而对象则是由这种模具产生的实例(产品)。所以人们又把对象叫做类的实例。类是对事物的定义,而对象则是该事物本身。章节目录上一页下一页2.对象的属性、事件和方法(1)对象的属性
C#中的对象属性可以看作是表现对象特征的数据的扩展。在面向对象的编程中,控件对象的常见属性有文本(Text)、背景色(BackColor)、字体大小(Font)、是否可见(Visible)等。
(2)对象的事件
所谓事件(Event),是预先定义好的、能够被对象识别的动作。如单击(Click)事件。章节目录上一页下一页
章节目录上一页下一页
2.Microsoft中间语言(MSIL)和JIT即时编译
在VisualStudio.NET环境中,各种编程语言编译器负责完成编译工作的第一步,即把源代码转换为一种中间代码(MicrosoftIntermediateLanguage,MSIL)。
MSIL是一种非常接近机器语言的代码,但还不能在计算机上运行,还要通过第二步编译工作将MSIL变为真正的机器语言,这个工作由即时编译器(Just-In_time,JIT)完成。
章节目录上一页下一页2.1VisualStdio.Net简介
2.2.1起始页
1.项目
2.联机资源
(1)开始 (5)联机搜索
(2)新增功能 (6)下载
(3)网上社区 (7)XMLWebservices(4)标题新闻 (8)Web宿主
章节目录上一页下一页
2.2.2设计器视图与代码视图设计器视图与代码视图是程序设计最常用的两个子窗口。设计器视图用来设计Windows窗体或Web窗体,代码视图用于设计程序源代码。在设计器视图中可以为Windows或Web界面添加控件。代码视图实质上是一个纯文本编辑器,在该视图中可以进行通常的文本编辑操作,如选定、复制、移动、撤消、恢复等。
章节目录上一页下一页
2.2.3解决方案资源管理器与类视图
1.解决方案资源管理器
使用VisualStudio.NET开发的每一个应用程序叫解决方案,每一个解决方案可以包含一个或多个项目。一个项目通常是一个完整的程序模块,一个项目可以有多个项。“解决方案资源管理器”子窗口显示VisualStudio.NET解决方案的树型结构。在“解决方案资源管理器”中可以浏览组成解决方案的所有项目和每个项目中的文件,可以对解决方案的各元素进行组织和编辑。
章节目录上一页下一页
2.类视图“类视图”以树型结构显示VisualStudio.NET当前项目中的类和类型的层次信息。在“类视图”中,可以对类的层次结构浏览、组织和编辑。如果双击“类视图”中的某一个类名称,将打开该类定义的代码视图,并定位在该类定义的开始处,如果双击类中的某一成员,将打开该类定义的代码视图,并定位在该成员声明处。
章节目录上一页下一页
2.2.4属性与动态帮助
1.属性“属性”子窗口用于设置解决方案中各个子项的属性,当选择设计器视图、解决方案、类视图中的某一子项时,“属性”子窗口将以两列表格的形式显示该子项的所有属性。单击“事件”按钮,窗口将显示被选择窗体或控件的事件列表,
章节目录上一页下一页
2.动态帮助“动态帮助”对用户当前操作提供相关的帮助主题列表。当用户在VisualStudio.NET环境中进行某一项操作时,“动态帮助”将搜索MSDN库(MicrosoftDeveloperNetwork),查找与该操作相关的帮助主题并把它认为可能最有用的主题列在第一位。单击一个链接后,默认情况下此主题将会显示在VisualStudio.NET窗口中。当在代码窗口中编辑源代码时,“动态帮助”窗口会显示正在输入的关键字和类的帮助主题。
章节目录上一页下一页
2.2.5工具箱与服务器资源管理器
1.工具箱“工具箱”用于向Windows应用程序或Web应用程序添加控件。“工具箱”使用选项卡分类管理其中的控件,打开“工具箱”将显示VisualStudio项目中使用的各个不同的控件列表。根据当前正在使用的设计器或编辑器,“工具箱”中可用的选项卡和控件会有所变化。
章节目录上一页下一页
2.服务器资源管理器“服务器资源管理器”是VisualStudio.NET的服务器管理控制台。使用服务器资源管理器可以打开数据连接,登录服务器,浏览它们的数据库和系统服务。可以将管理器中的对象从服务器资源管理器拖放到VisualStudio.NET设计器上。这将创建新的数据组件,这些组件预配置为引用所拖放的对象。
章节目录上一页下一页
2.2.6子窗口的操作
在主区域显示的窗口,以选项卡的形式叠放在一起。用右上角关闭按钮关闭当前窗口。主区域周围的窗口,有停靠与浮动两种情况,停靠又有隐藏与固定显示两种状态,这两种状态通过图钉按钮控制。
章节目录上一页下一页
2.2.7使用VisualStudio.NET的帮助
1.MSDN帮助
(1)目录
(2)索引
(3)搜索
(4)收藏夹2.智能感知
动态显示成员列表
动态显示该方法功能和不同用法
章节目录上一页下一页
2.3窗体对象与控件对象
2.3.1窗体对象
1.窗体的结构
2.窗体的属性
Name(名称)BackColor(背景色)BackgroundImage(背景图像)Enabled(可用)Font(字体)
章节目录上一页下一页ForeColor(前景色)Location(位置)Locked(锁定)MaximizeBox(最大化按钮)MinimizeBox(最小化按钮)Opacity(透明)Size(尺寸)Text(文本)WindowState(窗口状态)
章节目录上一页下一页3.窗体的方法CenterToScreen()方法Close()方法Hide()方法Show()方法调用方法的一般格式:对象名.方法名(参数列表);静态方法调用的一般格式:类名.静态方法名(参数列表);
章节目录上一页下一页
4.窗体事件Activated事件Click事件Closed事件GotFocus事件Load事件
章节目录上一页下一页2.3.2几种常用控件
1.添加与编辑控件
(1)添加控件
(2)选择控件(3)调整控件的位置与大小
(4)控件布局
章节目录上一页下一页
2.按钮按钮(Button)控件是应用程序中使用最多的控件对象之一,常用来接收用户的操作信息,激发相应的事件。按钮是用户与程序交互的最简便的方法。
3.标签标签(Label)控件主要功能是输出信息,可以用来标识其他无法显示标题的控件,也可以向用户显示相关信息。
章节目录上一页下一页4.文本框
文本框中的Text属性不象窗体对象与标签对象那样是控件对象的标题,而是文本框中的内容。
(1)特有属性HideSelection(隐藏选择)Lines(行)MaxLength(最大长度)Multiline(多行)
章节目录上一页下一页
PasswordChar(密码字符)ReadOnly(只读)SelectedText(选定的文本)SelectionLength(选择长度)TextLength(文本框长度)WordWrap(文本换行)
章节目录上一页下一页
(2)操作文本的方法
AppendText(追加文本)方法Clear(清除)方法Copy(拷贝)方法Cut(剪切)方法Paste(粘贴)方法SelectAll(全选)方法
章节目录上一页下一页
2.4应用程序开发的一般步骤
2.4.1创建控制台应用程序1.新建项目2.编写代码3.运行调试程序4.保存程序
章节目录上一页下一页
2.4.2创建Windows应用程序
1.新建项目2.添加控件和设置控件属性(1)添加控件(2)修改属性
3.编写代码
4.运行调试程序
5.保存程序
章节目录上一页下一页2.5VisualStudio2005简介
界面
窗体设计章节目录上一页下一章代码设计章节目录上一页下一章工具栏章节目录上一页下一章
章节目录上一页下一页2.命名空间命名空间既是VisualStudio.NET提供系统资源的分层组织方式,也是分层组织程序的方式。因此,命名空间有两种,一种是系统命名空间,一种是用户自定义命名空间。系统命名空间使用using关键字导入,System是VisualStudio.NET中的最基本的命名空间,在创建项目时,VisualStudio.NET平台都会自动生成导入该命名空间,并且放在程序代码的起始处。
章节目录上一页下一页3.类和方法C#中,必须用类来组织程序的变量与方法。C#要求每个程序必须且只能有一个“Main”方法。“Main”方法必须放在某一个类中。“Main”方法是应用程序的入口。4.语句语句就是C#应用程序中执行操作的指令。C#中的语句必须用分号“;”结束。可以在一行中书写多条语句,也可以将一条语句书写在多行上。
章节目录上一页下一页5.大括号在C#中,括号“{”和“}”是一种范围标志,是组织代码的一种方式,用于标识应用程序中逻辑上有紧密联系的一段代码的开始与结束。大括号可以嵌套,以表示应用程序中的不同层次。
章节目录上一页下一页3.1.2C#程序的格式
1.缩进与空格缩进用于表示代码的结构层次,这在程序中不是必须的,但是缩进可以清晰地表示程序的结构层次,在程序设计中应该使用统一的缩进格式书写代码。空格有两种作用,一种是语法要求,必须遵守,一种是为使语句不至于太拥挤。例如:intia=3;
章节目录上一页下一页2.字母大小写C#中的字母可以大小写混合,但是必须注意的是,C#把同一字母的大小写当作两个不同的字符对待,如,大写“A”与小写“a”对C#来说,是两个不同的字符。3.注释C#中的注释基本有两种,一是单行注释,一是多行注释。单行注释以双斜线“//”开始,不能换行。多行注释以“/*”开始,以“*/”结束,可以换行。
章节目录上一页下一页3.2基本数据类型
3.2.1数值类型
1.整数类型整数类型又有有符号整数与无符号整数。有符号整数可以带正负号,无符号整数不需带正负号,默认为正数。有符号整数包括sbyte(符号字节型)、short(短整型)、int(整型)、long(长整型)。无符号整数包括byte(字节型)、ushort(无符号短整型)、uint(无符号整型)、ulong(无符号长整型)。
章节目录上一页下一页2.实数类型实数类型包括float(单精度浮点型)、double(双精度浮点型)、decimal(十进制型)。3.2.2字符类型1.Unicode字符集Unicode是一种重要的通用字符编码标准是继ASCII字符码后的一种新字符编码,如UTF-16允许用16位字符组合为一百万或更多的字符。C#支持Unicode字符集。
章节目录上一页下一页2.char(字符型)char(字符型):数据范围是0~65535之间的Unicode字符集中的单个字符,占用2个字节。char(字符型)表示无符号16位整数,char(字符型)的可能值集与Unicode字符集相对应。3.string(字符串型)string(字符串型):指任意长度的Unicode字符序列,占用字节根据字符多少而定。string(字符串型)表示包括数字与空格在内的若干个字符序列,允许只包含一个字符的字符串,甚至可以是不包含字符的空字符串。
章节目录上一页下一页3.2.3布尔类型和对象类型bool(布尔型):表示布尔逻辑量。bool(布尔型)数据范围是“true”(真)和“false”(假)。bool(布尔型)占用一个字节。bool(布尔型)的值“true”(真)和“false”是关键字。object(对象型):可以表示任何类型的值,其占用字节视具体表示的数据类型而定。object(对象型)是所有其他类型的最终基类。C#中的每种类型都是直接或间接从object类型派生的。
章节目录上一页下一页3.3变量与常量
3.3.1变量
1.变量命名规则在C#中,变量命名规则如下:①
变量名的第一个字符必须是字母(包括汉字)或下划线,其余字符必须是字母(包括汉字)、数字或下划线。②
变量名不能是C#的关键字或库函数名。例如,sum,_S,都是合法的变量名,而int,2A,NumberOfStudent是非法变量名。章节目录上一页下一页2.声明变量声明变量最简单的格式为:数据类型名称变量名列表;例如:intnumber;//声明一个整型变量boolopen;//声明一个布尔型变量decimalbankBlance;//声明一个十进制变量可以一次声明多个变量,例如:sbytea,b;//声明两个有符号字节型变量如果一次声明多个变量,变量名之间用逗号分隔。
章节目录上一页下一页3.变量赋值C#规定,变量必须赋值后才能引用。为变量赋值需使用赋值号“=”。例如:intnumber;number=32;//为变量赋值32也可以使用变量为变量赋值,例如:boolclose;close=open;//为变量赋值true(假设open为已声明的bool型变量,其值为true)章节目录上一页下一页可以为几个变量一同赋值,例如:inta,b,c;a=b=c=32;可以在声明变量的同时为变量赋值,相当于将声明语句与赋值语句合二为一。例如:doublearea,radius=16;章节目录上一页下一页3.3.2常量1.直接常量(1)整型常量整型常量即整数,整型常量有三种形式:十进制形式,即通常意义上的整数,如,123,48910等。八进制形式,输入八进制整型常量,需要在数字前面加“0”,如,0123,038等。十六进制形式,输入十六进制整型常量,需要在数字前面加“0x”或“0X”,如,0x123,0X48910等。
章节目录上一页下一页(2)实型常量实型常量即带小数的数值,实型常量有两种表示形式:小数形式,即人们通常的书写形式,如0.123,12.3,.123等等。指数形式,也叫科学记数,由底数加大写的E或小写的e加指数组成,例如,123e5或123E5都表示123×105。章节目录上一页下一页(3)字符常量字符常量表示单个的Unicode字符集中的一个字符,通常包括数字、各种字母、标点、符号和汉字等。字符常量用一对英文单引号界定,如,'A','a','+','汉'等等。在C#中,有些字符不能直接放在单引号中作为字符常量,这时需要使用转义符来表示这些字符常量,转义符由反斜杠“\”加字符组成,如
'\n'。
章节目录上一页下一页(4)字符串常量字符串常量是由一对双引号界定的字符序列,例如:"欢迎使用C#!""Iamastudent."需要注意的是,即使由双引号界定的一个字符,也是字符串常量,不能当做字符常量看待,例如,'A'与"A",前者是字符常量,后者是字符串常量。
(5)布尔常量布尔常量即布尔值本身,如前所述,布尔值true(真)和false(假)是C#的两个关键字。
章节目录上一页下一页2.符号常量符号常量使用const关键字定义,格式为:
const类型名称常量名=常量表达式;常量定义中,“常量表达式”的意义在于该表达式不能包含变量及函数等值会发生变化的内容。常量表达式中可以包含其他已定义常量。
由于符号常量代表的是一个不变的值,所以符号常量不能出现在赋值号的左边。如果在程序中非常频繁地使用某一常量,可以将其定义为符号常量。
章节目录上一页下一页3.3.3类型转换数据类型的转换有隐式转换与显式转换两种。1.隐式转换隐式转换是系统自动执行的数据类型转换。隐式转换的基本原则是允许数值范围小的类型向数值范围大的类型转换,允许无符号整数类型向有符号整数类型转换。
2.显式转换显式转换也叫强制转换,是在代码中明确指示将某一类型的数据转换为另一种类型。显式转换的一般格式为:
(数据类型名称)数据例如:intx=600;shortz=(short)x;显式转换中可能导致数据的丢失,例如:decimald=234.55M;intx=(int)d;章节目录上一页下一页
章节目录上一页下一页3.使用方法进行数据类型的转换(1)Parse方法Parse方法可以将特定格式的字符串转换为数值。Parse方法的使用格式为:数值类型名称.Parse(字符串型表达式)例如:intx=int.Parse("123");(2)ToString方法ToString方法可将其他数据类型的变量值转换为字符串类型。ToString方法的使用格式为:变量名称.ToString()例如:intx=123;strings=x.ToString();
章节目录上一页下一页
3.4运算符与表达式
3.4.1运算符与表达式类型1.算术运算符与算术表达式算术运算符有一元运算符与二元运算符。①
一元运算符:-(取负)、+(取正)、++(增量)、--(减量)。②
二元运算符:+(加)、-(减)、*(乘)、/(除)、%(求余)。由算术运算符与操作数构成的表达式叫算术表达式。
章节目录上一页下一页“-”与“+”只能放在操作数的左边。增量与减量量符只能用于变量。二元运算符的意义与数学意义相同,其中%(求余)运算符是以除法的余数作为运算结果,求余运算也叫求模。例如:intx=6,y=2,z;z=x%y;//x除以y的结果不是3(商),而是0(余数)要注意数据类型。例如:inta,b=39;a=b/2;//a的值为18
章节目录上一页下一页2.字符串运算符与字符串表达式字符串运算符只有一个,即“+”运算符,表示将两个字符串连接起来。例如:stringconnec="abcd"+"ef";//connec的值为“abcdef”“+”运算符还可以将字符型数据与字符串型数据或多个字符型数据连接在一起,例如:stringconnec="abcd"+'e'+'f';//connec的值为“abcdef”
章节目录上一页下一页3.关系运算符与关系表达式>,<,>=,<=,==,!=。依次为大于,小于,大于等于,小于等于,等于,不等于。用于字符串的关系运算符只有相等“==”与不等“!=”运算符。4.逻辑运算符与逻辑表达式在C#中,最常用的逻辑运算符是!(非)、&&与、||(或)。
章节目录上一页下一页例如:boolb1=!true;//b1的值为falseboolb2=5>3&&1>2;//b2的值为falseboolb3=5>3||1>2//b3的值为true5.条件运算符与条件表达式条件运算符是C#中唯一的三元运算符,条件运算符由符号“?”与“:”组成,通过操作三个操作数完成运算,其一般格式为:布尔类型表达式?表达式1:表达式2
章节目录上一页下一页6.赋值运算符与赋值表达式在赋值表达式中,赋值运算符左边的操作数叫左操作数,赋值运算符右边的操作数叫右操作数。左操作数通常是一个变量。复合赋值运算符,如“*=”、“/=”、“%=”、“+=”、“-=”等。
3.4.2运算符的优先级与结合性
1.优先级
①一元运算符的优先级高于二元和三元运算符。②不同种类运算符的优先级有高低之分,算术运算符的优先级高于关系运算符,关系运算符的优先级高于逻辑运算符,逻辑运算符的优先级高于条件运算符,条件运算符的优先级高于赋值运算符。③有些同类运算符优先级也有高低之分,在算术运算符中,乘、除、求余的优先级高于加、减;在关系运算符中,小于、大于、小于等于、大于等于的优先级高于相等与不等;逻辑运算符的优先级按从高到低排列为非、与、或。章节目录上一页下一页
章节目录上一页下一页可以使用圆括号明确运算顺序。例如:strings=x>y?"greaterthan":x==y?"equalto":"lessthan";strings=x>y?"greaterthan":(x==y?"equalto":"lessthan");括号还可以改变表达式的运算顺序
:b*c+db*(c+d),
章节目录上一页下一页4.1.2复合赋值语句与连续赋值语句
1.复合赋值语句
复合赋值语句是使用+=、-=、*=、/=等运算符构成的赋值语句,这种语句首先需要完成特定的运算然后再进行赋值运算操作。例如:intx=5;x+=6;strings="abcd";s+="efjh";
章节目录上一页下一页2.连续赋值语句连续赋值语句是在一条语句中使用多个赋值运算符进行赋值的语句,这种语句可以一次为多个变量赋予相同的值。例如:intx,y,z;x=y=z=6;strings1,s2,s3;s1=s2=s3="efjh";
章节目录上一页下一页
4.2输入与输出4.2.1控制台应用程序的输入与输出方法1.输方入法Read与ReadLine方法的功能是接受从键盘上输入的数据
例如:charc=(char)Console.Read();strings=Console.ReadLine();inti=int.Parse(Console.ReadLine());
章节目录上一页下一页2.输出方法Write与WriteLineConsole.Write("abcd");Console.WriteLine("abcd");格式化输出。例如:
Console.WriteLine("{0};{1};{2}",10,20,30);Console.WriteLine("{0}{1},{2}","这两个数是:",10,20);
章节目录上一页下一页4.2.2Windows应用程序的输入与输出
1.焦点与Tab键顺序
焦点是控件接收用户鼠标或键盘输入的能力。
GotFocus或LostFocus事件。获得焦点的语法格式为:对象名称.Focus();
章节目录上一页下一页
所谓Tab键序指的是在用户按下〈Tab〉键时,焦点在控件间移动的顺序。通过设置TabIndex属性来改变一个控件的Tab键顺序。控件的TabIndex属性决定了它在Tab键顺序中的位置。按照缺省规定,第一个建立的控件其TabIndex值为0,第二个的TabIndex值为1,以此类推。将控件的TabStop属性设为false,便可将此控件从键序中排除,但仍然保持它在实际Tab键序中的位置,只不过在按〈Tab〉键时这个控件将被跳过。
章节目录上一页下一页2.使用标签与文本框实现输入与输出从使用程序的用户的角度看,文本框和标签控件的主要区别在于标签控件是一个只能向用户显示输出数据的控件,而文本框控件既可以让用户在其中输入数据,也可以向用户显示输出数据。3.使用链接标签
LinkColor设置控件中未被单击过的文字颜色VisiteLinkColor设置控件中被单击过的文字颜色ActiveLinkColor单击鼠标时文字的颜色
章节目录上一页下一页LinkVisited超链接是否被访问过,False表示未被访问过(默认值)Links控件中所有链接的集合,属于类LinkLabel.LinkConnectionLinkArea设置Text值(字符串)的链接子串LinkClicked用户单击LinkLabel控件时触发的事件
章节目录上一页下一页4.3使用图片框与图片列表控件4.3.1使用图片框(PictureBox)图片框控件PictureBox用来在窗体上显示一个图片。
图片框的BorderStyle属性可设置其边框样式:值None表示没有边框;FixedSingle表示单线边框;Fixed3D表示立体边框。
章节目录上一页下一页SizeMode属性值及说明
AutoSize:PictureBox控件调整自身大小,使图片能正好显示其中CenterImage:若控件大于图片则图片居中;若图片大于控件则图片居中,超出控件的部分被剪切掉Normal:图片显示在控件左上角,若图片大于控件则超出部分被剪切掉StretchImage:若图片与控件大小不等,则图片被拉伸或缩小以适应控件
章节目录上一页下一页5.1选择结构程序的设计在C#中,提供两种选择语句实现流程的改变:if语句,用于判断特定的条件能否满足,用于单分支选择,也可以通过嵌套实现多分支选择。switch语句,用于多分支选择。
章节目录上一页下一页5.2单分支选择结构(if语句)
if语句是程序设计中基本的选择语句,它根据条件表达式的值选择要执行的后面的内嵌语句序列。一般用于简单选择,即选择项中有一个或两个分支,语句执行的过程中根据不同的情况进行选择其中一个分支执行。格式为:
if(布尔条件表达式)
内嵌语句序列1;else
内嵌语句序列2;图5-1if语句的流程图条件表达式内嵌语句序列1内嵌语句序列2TrueFalse图5-1if语句的流程图
章节目录上一页下一页说明:①若布尔表达式的值为真时,程序执行内嵌语句序列1,否则执行内嵌语句序列2。②ifelse语句中,内嵌语句序列1和内嵌语句序列2可以是简单语句,也可以是复合语句。如果内嵌语句序列中为多个执行语句要使用花括号({…})组合为一个语句块。③也可以省去else和内嵌语句序列2,即当程序满足布尔表达式的值为真时,执行语句序列1。该结构的流程图如图5-1所示。
章节目录上一页下一页5.2.1if…else语句根据布尔条件表达式的值进行判断,当该值为真时执行if语句后的语句序列,当为假时,执行else语句后的语句序列。该结构一般用于两种分支的选择。下面结合实例介绍if…else语句的使用方法。【例5-1】某商店为了吸引顾客,采取以下优惠活动:所购商品在1000元以下的,打9折优惠;所购商品多于1000元的,打8折优惠。试采用if语句实现该优惠。
章节目录上一页下一页分析:该问题属于数学分段函数问题,当所购商品总额<1000元时,打折后的商品总额为(所购商品总额*0.9);当所购商品总额>1000时,打折后的商品总额为(所购商品总额*0.8)。(1)建立项目在VisualStudio.NET中,打开“文件”菜单,依次选择“新建→项目”命令,打开“新建项目”对话框,选择“VisualC#项目”,选择“Windows应用程序”输入项目的名称和存放位置。
图5-2实现打折优惠
章节目录上一页下一页(2)设计窗体单击工作区左侧的“工具箱”或单击工具栏上工具箱图标,工具箱将显示在工作区左侧。添加相应的控件。(3)编辑代码选中按钮控件,单击鼠标右键,在弹出的菜单中选择“查看代码”命令,或通过“视图”菜单中的“代码”命令,切换到代码视图。也可以双击控件直接在事件中添加代码。代码为:
章节目录上一页下一页privatevoidbutton1_Click(objectsender,System.EventArgse){doublek,m;k=double.Parse(tCost.Text);if(k<1000){m=k*0.9;}else{m=k*0.8;}pCost.Text=m.ToString();}
章节目录上一页下一页(4)编译、运行程序单击工具栏上的启动按钮,或按〈F5〉键执行程序,显示Windows窗体。在“请输入所购商品的总金额”文本框中输入相关金额,单击【打折】按钮,完成相应的功能。【例5-2】编辑框的PasswordChar属性可以隐蔽用户通过键盘输入的字符,常用来编写检查用户口令的程序。使用选择语句实现该操作。
分析:本题使用编辑框实现命令接受工作,使用if语句实现判断。采用基本的控件实现如图5-4所示。图5-4口令验证
章节目录上一页下一页代码如下。privatevoidbutton1_Click(objectsender,System.EventArgse){if(textBox1.Text=="abc")//设口令为“abc”label2.Text="欢迎使用本系统!";//如果输入正确,显示"欢迎使用本系统!"else//如果输入不正确
label2.Text="对不起,您的口令有误,您无权使用该系统!";}
章节目录上一页下一页5.2.2if…else…if语句
if…else语句也可以用于多种分支的选择结构,这种情况也就是if语句嵌套结构。if语句中,内嵌语句可以是复合语句,也就是说,内嵌语句中可以包含选择语句、循环语句等。那么,if语句可以嵌套,但应注意if…else的配对问题。在默认情况下,else语句总是和最近的if语句配对。下面通过【例5-3】了解if语句的嵌套方法。
章节目录上一页下一页【例5-3】将百分制成绩转换为五分制成绩。转换标准如下:90分以上为“优秀”,80分以上为“良”,70分以上为“中”,60分以上为“及格”,60分以下为“不及格”。程序运行结果如图5-5左图所示。
图5-5成绩转换设计
章节目录上一页下一页程序运行时,单击【转换】按钮执行的代码如下:privatevoidbutton1_Click(objectsender,System.EventArgse)
{intk=int.Parse(textBox2.Text);if(k>90)textBox1.Text="优";elseif(k>80)textBox1.Text="良";
章节目录上一页下一页elseif(k>70)textBox1.Text="中";elseif(k>60)textBox1.Text="及格";elseif(k<60)//此指令可省略
textBox1.Text="不及格";}上例中使用了if语句的嵌套实现,其中因为条件判断后只用一个语句,如“textBox1.Text="良";”,所以,可以省略{},当存在多条语句时,要使用{}表示为一个语句块。
1.break语句break语句用于停止贯穿语句的执行。即在switch语句结构中,break语句用于选择分支的语句运行。也可使用goto语句实现语句转移,但是,应尽量避免使用这种方法。2.default标签在switch语句中,常常用到default标签来处理不满足case语句的值,定义default标签可以增强处理相应的异常章节目录上一页下一页【例5-5】某航空公司规定在旅游的旺季7~9月份,如果订票数超过20张,票价优惠15%,20张以下,优惠5%;在旅游的淡季1~5月份、10月份、11月份,如果订票数超过20张,票价优惠30%,20张以下,优惠20%;其他情况一律优惠10%设计程序,根据月份和订票张数决定票价的优惠率(如图5-8)
章节目录上一页下一页图5-8计算优惠价该问题属于多分支选择问题。该问题中旅游的淡季1~5月份、10月份、11月份的优惠率一样,在switch语句中,这几种情况可以使用同一种操作;旅游的旺季7~9月份的优惠率一样,可以使用同一种操作。“计算优惠率”按钮实现代码如下。privatevoidbutton1_Click(objectsender,System.EventArgse){ intmon; intsum;mon=Convert.ToInt32(textBox1.Text);sum=Convert.ToInt32(textBox2.Text);章节目录上一页下一页
switch(mon){case1:case2:case3:case4:case5:case10:case11:if(sum>20)label3.Text="优惠率为30%";elselabel3.Text="优惠率为20%";break;case7:
章节目录上一页下一页case8:case9:if(sum>20)label3.Text="优惠率为15%";elselabel3.Text="优惠率为5%";break;default:label3.Text="优惠率为10%";break;
}}章节目录上一页下一页5.4使用单选按钮与复选框控件5.4.1单选按钮(RadioButton)单选按钮也叫选项按钮,为用户提供从多个选项中选择一个选项的功能,因此单选按钮顾名思义是一种“多选一”的控件。【例5-6】设计Windows应用程序,单击【显示】按钮,根据对单选按钮的选择,分别显示日期或时间。程序运行结果如图5-11和图5-12所示。章节目录上一页下一页1.break语句break语句用于停止贯穿语句的执行。即在switch语句结构中,break语句用于选择分支的语句运行。也可使用goto语句实现语句转移,但是,应尽量避免使用这种方法。章节目录上一页下一页(1)设计窗体和设置属性章节目录上一页下一页图5-11显示日期图5-12显示时间(2)设计代码privatevoidbutton1_Click(objectsender,System.EventArgse){if(ShowDate.Checked)//显示日期
lblDateTime.Text=DateTime.Now.Year+"年"+DateTime.Now.Month+"月"+DateTime.Now.Day+"日";if(ShowTime.Checked)//显示时间
lblDateTime.Text=DateTime.Now.Hour+"时"+DateTime.Now.Minute+"分"+DateTime.Now.Second+"秒";}章节目录上一页下一页
在编写程序过程中,往往出现相同类型操作需要重复出现,如实现1+2+…+100,则需要做99次加法,这类问题使用循环语句解决,可以使问题变得简单。即循环语句用于实现语句块的重复执行。根据问题的具体情况,C#中提供了四种不同的循环机制:for循环、while循环、do…while循环和foreach循环。这里介绍前三种循环机制,foreach循环将在数组中介绍。6.1for循环语句
for循环常常用于已知循环次数的情况,使用该循环时,测试是否满足某个条件,如果满足条件,则进入下一次循环,否则,退出该循环。章节目录上一页下一页6.1.1for语句的语法格式for循环语句格式为:for(表达式1;表达式2;表达式3){循环语句序列;}其中表达式1用于参与循环条件变量的初始化,该表达式仅执行一次;表达式2为条件判断表达式,即每次循环体开始之前,判断该表达式是否成立,如果成立,进入下一次循环,否则,循环结束;表达式3用于参与循环条件变量的运算,一般为递增或递减的循环计数器。循环语句序列用于描述重复执行的语句,当语句序列中仅含有一条语句时,花括号可以省略。章节目录上一页下一页流程图如图6-1所示。该结构中,表达式1、表达式2、表达式3是可选的,但应该注意死循环的发生。如表达式2省略,并且不采用转移语句,会导致死循环的发生。可以在循环体中的任何位置放置break语句来强制终止for循环——随时跳出for循环。break语句通常包含于if语句中。章节目录上一页下一页图6-1for循环流程图6.1.2for循环语句的使用根据下面的实例,了解for语句的工作流程及实现方法。【例6-1】计算1+2+3+…100。使用for语句实现。分析:该问题属于重复执行加法的问题,并且参与运算的两个操作数不断的按规律增加。该类问题可以通过循环进行解决。(1)建立项目(2)设计窗体(3)设计代码章节目录上一页下一页在窗体设计图上,双击按钮button1编写【计算】按钮的Click(单击)事件代码为:privatevoidbutton1_Click(objectsender,System.EventArgse){intsum;sum=0;for(intk=1;k<=100;k=k+1){sum=sum+k;}label1.Text="从1加到100值为"+sum.ToString();}章节目录上一页下一页
程序的运行结果如图6-2所示的左图,单击“计算”按钮,将在标签上显示运行结果。章节目录上一页下一页图6-2程序运行结果【例6-2】计算n!,假设n=10。分析:该例实现阶乘的运算,可以使用改变乘数的值进行实现,使用循环可以方便的实现该类问题。程序的运行结果如图6-3左图所示。章节目录上一页下一页图6-3计算n!编写【计算】按钮的Click(单击)事件代码为:privatevoidbutton1_Click(objectsender,System.EventArgse){intsum,k;sum=1;for(k=1;k<=10;k++){sum=sum*k;}textBox1.Text=sum.ToString();}章节目录上一页下一页6.2while循环语句与for循环语句比较,while语句使用的频率要低一些,它可以用于不知道循环次数的情况;用于在循环时判断是否满足某个条件。每一次在循环的顶部进行检测循环是否继续,当循环的条件为假时,退出循环。6.2.1while循环语句的语法格式while循环语句的格式为:while(布尔条件表达式){语句序列;}布尔条件表达式是每次循环开始前进行判断的条件,当条件表达式的值为真时,执行循环;否则,退出循环。该语句结构的流程图如图6-4所示。章节目录上一页下一页说明如下:①布尔条件表达式是一个具有boolean值的条件表达式,为循环的条件。②作为循环体的语句序列可以是简单语句、复合语句和其他结构语句。③while循环的执行过程:首先计算条件表达式的值,如果为真(True),则执行后面的循环体,执行完后,再开始一个新的循环;如果为假(False),则终止循环,执行循环体后面的语句。章节目录上一页下一页④可以在循环体中的任何位置放置break语句来强制终止while循环——随时跳出while循环。break语句通常包含于if语句中。⑤可以在循环体中的任何位置放置continue语句,在整个循环体没有执行完就重新判断条件,以决定是否开始新的循环。continue语句通常包含于if语句中。章节目录上一页下一页图6-4while程序流程图6.2.2while循环语句的使用【例6-3】设有一张厚为xmm,面积足够大的纸,将它不断地对折。试问对折多少次后,其厚度可达珠穆朗玛峰的高度(8844.43m)。设对折后纸的厚度为hmm,计数器为n。在没有对折时,纸厚为xmm,每对折一次,其厚度是上一次的2倍,在未到达8844.43m时,重复对折。在程序中,纸的厚度就是对折后纸的厚度,所以用一个变量h。章节目录上一页下一页建立应用程序用户界面与设置对象属性,如图6-5所示。章节目录上一页下一页图6-5用户界面及程序运行结果章节目录上一页下一页【计算】按钮的Click(单击)事件代码为:privatevoidbutton1_Click(objectsender,System.EventArgse){intn=0;floath;h=float.Parse(textBox1.Text);while(h<8844430){n=n+1;h=2*h;}textBox2.Text=n.ToString();}程序运行结果如图6-5所示。章节目录上一页下一页6.3do…while循环do…while循环非常类似于while循环。一般情况下,可以相互转换使用。它们之间的差别在于while循环的测试条件在每一次循环开始时执行,而do…while循环的测试条件在每一次循环体结束时进行判断。同样的,do…while可以解决一些循环问题,但使用的频率较少。6.3.1do…while的语法格式do…while语法的一般格式为:do{语句序列;}while(布尔条件表达式)章节目录上一页下一页6.3.2do…while的使用【例6-4】使用do…while语句实现1+2+3+…100。窗体及控件的属性设计见【例6-1】。【计算】按钮的Click(单击)事件代码为:privatevoidbutton1_Click(objectsender,System.EventArgse){intsum;sum=0;intk=1;
章节目录上一页下一页do{sum=sum+k;k=k+1;}while(k<=100);label1.Text="从1加到100值为"+sum.ToString();//将sum显式转换为字符串}章节目录上一页下一页6.5循环的嵌套当一个循环(称为“外循环”)的循环语句序列内包含另一个循环(称为“内循环”),称为循环的嵌套,这种语句结构称为多重循环结构。内循环中还以包含循环,形成多层循环(循环嵌套的层数理论上无限制)。三种循环(while循环、do…while循环、for循环)可以互相嵌套。在多重循环中,需要注意的是循环语句所在循环的层数。如以下代码:intsum=0;for(inti=1;i<=10;i=i+1)for(intk=1;k<=i;k=k+1)sum=sum+k;章节目录上一页下一页【例6-6】编程实现九九乘法表。分析:本例中实现每一个一位数i显示从1乘到i,对于i的取值要从取到9,所以可以使用两重循环实现,程序设计如图6-8所示。使用label1控件实现乘法表的显示。章节目录上一页下一页图6-8九九乘法表本例的界面设计如图6-8右图,使用label1控件实现乘法表的显示。本例使用两重循环实现,其中外层循环实现乘法表中第二乘数i取值范围为1到9,内层循环在外层循环的基础上计算第一个乘数k的取值范围为1到i,其乘积以及表达式在label控件中显示。运行结果如图6-8左图所示。【九九乘法表】按钮的Click(单击)事件代码为:privatevoidbutton1_Click(objectsender,System.EventArgse){label1.Text="";strings="";intsum;
章节目录上一页下一页for(inti=1;i<10;i=i+1){s="";for(intk=1;k<=i;k=k+1){sum=k*i;s=s+k.ToString()+"×"+i.ToString()+"="+sum.ToString()+";";}label1.Text+=s+"\n";//显示并换行
}}章节目录上一页下一页6.4跳转语句使用跳转语句,可以使程序执行跳转到程序中其它部分。C#中提供四种转移语句:goto语句、break语句、continue语句、return语句。1.goto语句
goto语句可以将程序控制直接转移给标签制定的语句。但由于goto语句改变了程序的正常流程,使得程序特别容易出错,所以尽量不要用。而且,用goto语句实现的循环完全可以用循环语句实现,因此,goto语句很少使用。章节目录上一页下一页2.break语句在第5章中介绍了break在switch中的用法,break语句也可以用于退出所在的最近循环,使用break语句时,将结束循环,执行后面的语句。break不能放在循环语句或switch语句后,否则发生错误。3.continue语句continue语句用于循环语句中,类似于break语句,但仅从当前的循环迭代中退出,然后执行下一次迭代循环。【例6-10】使用计数器循环语句了解continue语句的使用,要求输出大于5的数章节目录上一页下一页本例使用控制台程序实现。【计算】按钮的Click(单击)事件代码为:staticvoidMain(string[]args){for(inti=1;i<=10;i=i+1){if(i<5)continue;Console.WriteLine(i);}Console.ReadLine();}章节目录上一页下一页本程序的运行结果为5678910该例中当i<5时通过continue退出本次循环,所以运行结果中不显示1、2、3、4数字。章节目录上一页下一页6.5列表框和组合框6.5.1列表框(ListBox)ListBox控件为用户提供了选项的列表,用户可以从列表中进行选择输入。如果项目数目超过列表框可显示的数目,控件上将自动出现滚动条,它是一种规范输入的好工具。1.列表框的常用属性、方法和事件2.列表框应用实例【例6-11】计算并输出从sum=1+…+(k-1)+k。满足sum>1000是退出循环。章节目录上一页下一页分析:该例属于循环中语句转移的情况,本例中使用listBox控件用于显示sum的值,使用button控件实现该事件。程序设计如图6-12所示。章节目录上一页下一页图6-12计算sum的值【计算】按钮的Click(单击)事件代码为:privatevoidbutton1_Click(objectsender,System.EventArgse){intk=1;intsum=0;while(k<100){sum=sum+k;listBox1.Items.Add("0+…"+k.ToString()+"="+sum.ToString());k=k+1;if(sum>1000)break;}}章节目录上一页下一页6.5.2组合框(ComboBox)组合框是一个文本框和一个列表框的组合。与列表框不同的是列表框只能在给定的列表项中选择,而组合框除了可在给定的列表项中选择还可以直接在文本框中输入(DropDownStyle属性被设置DropDownList时除外)。1.ComboBox常用属性和事件2.ComboBox应用实例章节目录上一页下一页【例6-12】要求单击【开始】按钮,将两个组合框中指定的年份范围内的所有闰年输出到列表框中。图6-14为显示1955~2005年之间的所有闰年的结果。章节目录上一页下一页
图6-14程序运行结果(1)设计程序界面。(2)设置对象属性。(3)编写程序代码。privatevoidbtnStart_Click(objectsender,System.EventArgse){//如果任一组合框中没有选定年份,则不执行任何操作
if(cboStart.SelectedIndex==-1||cboEnd.SelectedIndex==-1){return;}章节目录上一页下一页intyearStart=int.Parse(cboStart.SelectedItem.ToString());intyearEnd=int.Parse(cboEnd.SelectedItem.ToString());if(yearStart>yearEnd)return;lstOut.Items.Clear();//清除上次判断显示的内容
for(inti=yearStart;i<=yearEnd;i=i+1)if(i%4==0&&i%100!=0||i%400==0)lstOut.Items.Add(i);//将闰年的年份追加到列表框}章节目录上一页下一页【清除】按钮被单击时执行的事件代码如下:privatevoidbtnClear_Click(objectsender,System.EventArgse){lstOut.Items.Clear();//清空列表}章节目录上一页下一页6.6使用计时器控件(Timer)计时器(Timer)控件在工具箱的图标为,它是一种无需用户干预,按一定时间间隔周期性地自动触发事件的控件。一般用来检查系统时间,判断是否该执行某项任务,也可以用于后台处理。Timer控件在程序运行时是不可见的,所以将其添加到窗体后显示在窗体设计器下方的组件窗格中。6.6.1计时器控件的属性、方法和事件Timer控件的主要属性、方法和事件见表6-4。在计时器的Tick事件中设计的程序代码,会在该事件不断被触发的过程中,重复执行,从这一点看,计时器具有循环语句的功能。章节目录上一页下一页(2)设置对象属性。章节目录上一页下一页
图6-19运行结果添加代码以保证窗口被激活时txtNumber控件获得焦点,代码如下:privatevoidForm1_Activated(objectsender,System.EventArgse){txtNumber.Focus();//输入文本框获得焦点}章节目录上一页下一页用上面同样方法,选中txtNumber(textBox3)控件,在如图6-24所示的窗口中双击KeyPress,为控件txtNumber添加KeyPress(键盘事件)代码如下:privatevoidtxtNumber_KeyPress(objectsender,System.Windows.Forms.KeyPressEventArgse){if(e.KeyChar=='\r')//按〈Enter〉键则执行下面的代码(开始倒计时)
{if(txtNumber.Text=="")章节目录上一页下一页return;remainder=Convert.ToUInt32(txtNumber.Text)*60;//将分钟换算为秒
timer2.Enabled=false;//第2个计时器终止工作
timer1.Enabled=true;//第1个计时器开始工作
lblTimeEnd.Visible=true;//显示控件
txtTimeEnd.Visible=true;//显示控件
lblTimeStart.Text="开始时间:";//更换标签标题
}}章节目录上一页下一页双击控件timer2添加事件代码如下:privatevoidtimer2_Tick(objectsender,System.EventArgse){//在txtTimeStart文本框中显示时间
txtTimeStart.Text
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 灰尘测量仪产品供应链分析
- 危险品运输行业市场调研分析报告
- 栽种树木土地承包合同
- 小旅馆行业营销策略方案
- 书写工具用墨水产品供应链分析
- 广告空间出租行业相关项目经营管理报告
- 多媒体艺术行业经营分析报告
- 医用激素产品供应链分析
- 电信用自动交换机细分市场深度研究报告
- 化学品的回收利用行业经营分析报告
- 市政府质量奖组织概述
- 临时用地复耕方案
- 二年级上数学老师家长会ppt.ppt
- 办理营业执照委托书
- 危险货物道路运输安全卡4
- 船舶电气安装理论图纸相结合PPT课件
- 道路交通标志与标线PPT课件
- 幕墙打胶工艺
- 新冀教版九年级英语上册第26课课件
- 编写标准必备文件 国家标准 地方标准 行业标准 企业标准 格式模板大全
- 《钻木取火》PPT
评论
0/150
提交评论