版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4章 选择结构程序设计 在前面的章节中,我们使用程序指令顺序执行完成相关的操作。一般情况下,每个程序要求在运行过程中,改变语句的执行顺序达到某种功能的实现,这种情况下要用到程序控制语句。C#程序的控制语句包括选择语句、循环语句和转移语句。本章主要介绍用于选择的选择结构。通过本章的学习,掌握以下内容:l if语句的使用l switch语句的使用及switch语句中break的使用l goto语句的使用4.1 选择结构程序结构的设计 当程序中一个问题出现有两个或多个不同的分支要根据具体情况进行解决,需要使用选择语句控制程序的流程实现。选择语句根据布尔条件表达式的值选择要执行的分支语句,从而实现流
2、程控制。 如学生报到时,会根据不同的系别选择分配班级,同一个班级内根据不同的性别选择分配寝室。那么,本例中含有选择:不同系别分配不同的班级属于多分支条件选择,因为一个学生将从多个系中选择其中一个;同一个班级内根据性别的不同分配男生、女生寝室,属于单条件选择。 在C#中,提供两种选择语句实现流程的改变: if语句,用于判断特定的条件能否满足,用于单分支选择,也可以通过嵌套实现多分支选择。 switch语句,用于多分支选择。条件表达式内嵌语句序列1内嵌语句序列24.2 单分支选择结构(if语句) if语句是程序设计中基本的选择语句,它根据条件表达式的值选择要执行的后面的内嵌语句序列。一般用于简单选
3、择,即选择项中有一个或两个分支,语句执行的过程中根据不同的情况进行选择其中一个分支执行,图4-1 if语句的流程图 格式: if(布尔条件表达式condition) 内嵌语句序列1 else 内嵌语句序列2; 说明: (1) 若布尔表达式的值为真时,程序执行内嵌语句序列1,否则执行内嵌语句序列2。 (2) if else语句中,内嵌语句序列1和内嵌语句序列2可以是简单语句,也可以是复合语句。 (3) 如果内嵌语句序列中为多个执行语句要使用花括号()组合为一个语句块。 (4) 也可以省去else和内嵌语句序列2,即当程序满足布尔表达式的值为真时, 执行语句序列1。该结构的流程图如图4-1。4.2
4、.1 ifelse语句 根据布尔条件表达式的值进行判断,当该值为真时执行if语句后的语句序列,当为假时,执行else语句后的语句序列。该结构一般用于两种分支的选择。 下面结合实例了解ifelse语句的使用方法。例题采用WindowsApplication的项目开发方法进行编写。【例4-1】某商店为了吸引顾客,采取以下优惠活动:所购商品在1000元以下的,打9折优惠;所购商品多于1000元的,打8折优惠。试采用if语句实现该优惠。 图4-2 实现打折优惠 分析:该问题属于数学分段函数问题,当所购商品总额1000时,打折后的商品总额为(所购商品总额*0.8)。该问题可以选择所购商品总额1000为条
5、件,本例中选择所购商品总额1000作为条件完成选择判断。 根据以上分析,画出相应的流程图如图4-3。图4-3 程序流程图 设计步骤如下: (1) 建立项目。在Visual Studio.NET中,打开“文件”菜单,依次选择“新建项目”命令,打开“新建项目”对话框,选择“Visual C#项目”,选择“Windows应用程序”输入项目的名称和存放位置。 (2) 设计窗体。单击工作区左侧的“工具箱”或单击工具栏上工具箱图标,工具箱将显示在工作区左侧。 本例中使用标签控件label显示相应的文本,使用旋钮控件NumericUpDown提供相关的数值,使用按钮控件Button实现交互。窗体及控件的主要
6、属性设计见表4-1。表4-1 窗体及控件的主要属性设计控件名属性属性值说明Form1Textif语句的使用显示窗口标题label1Namelabel1标识该控件Text根据所购商品的金额实现打折优惠在窗体中显示文本信息label2Namelabel2标识该控件Text请输入所购商品的总金额在窗体中显示文本信息label3Namelabel2标识该控件Text打折后商品总额在窗体中显示文本信息button1Namebutton1标识该控件Text打折文本显示numericUpDown1NamenumericUpDown1标识该控件Decimalplaces0描述该控件接受的数据为int类型Max
7、imim接受的最大值numericUpDown2NamenumericUpDown2标识该控件Decimalplaces0描述该控件接受的数据为int类型Maximim接受的最大值 (3) 编辑代码。 选中button1控件,单击鼠标右键,在弹出的菜单中选择“查看代码”命令,或通过“视图”菜单中的“代码”命令,切换到代码视图。也可以双击控件直接在事件中添加代码。代码如下。private void button1_Click(object sender, System.EventArgs e)double k,m;k=(double )numericUpDown1.Value;if(k90)te
8、xtBox1.Text=优;elseif(k80)textBox1.Text=良; else if(k70) textBox1.Text=中; else if(k60) textBox1.Text=及格; else if (k60) /此条指令可以省略 textBox1.Text=不及格;图3-5 成绩转换流程图 双击“关闭”按钮,添加相应的是先窗体关闭的代码如下。private void button2_Click(object sender, System.EventArgs e) this.Close(); 执行运行命令,输入百分制成绩为“56”,单击转换按钮,在五分制成绩中将显示成绩为
9、“不及格”。如图4-6右图。 图4-6 成绩转换设计 上例中使用了if语句的嵌套实现,其中因为条件判断后只用一个语句,如“textBox1.Text=良;”,所以,可以省略 ,当存在多条语句时,要使用 表示为一个语句块。在程序的最后对不及格成绩的判断总使用“if (k20) label3.Text=优惠率为30%; else label3.Text=优惠率为20%;break;case 7:case 8:case 9:if(sum20)label3.Text=优惠率为15%;else label3.Text=优惠率为5%;break;default:label3.Text=优惠率为10%;br
10、eak; 代码中,前7种分支使用公共的代码段,所以共同使用1个break语句;7、8、9三种情况使用相同的代码段。4.4 使用单选按钮与复选框控件 有时,在程序中需要从几种条件中选择其中的一种,这时可以用单选按钮(RadioButton),例如是选择黑体字还是宋体字;如果需要同时考虑几种情况可以使用复选框(CheckBox),例如可以让文字同时具有加粗、倾斜、带下划线的风格。4.4.1 单选按钮(RadioButton) 单选按钮也叫选项按钮,为用户提供从多个选项中选择一个选项的功能,因此单选按钮顾名思义是一种“多选一”的控件。从单选按钮的功能可以看出,这种控件一般都是成组使用而不单独使用。
11、单选按钮的常用属性见表4-3。表4-3 RadioButton常用属性属性属性值说明Checkedfalse/true按钮是否被选中Enabledfalse/true按钮是否可用AppearanceNormal/Button正常外观还是下压按钮外观 Appearance(外观)决定单选按钮以什么样式显示,Normal为标准外观,Button为通常的按钮形式,如图4-9和图4-10所示 图4-9 Normal外观 图4-10 Button外观 在图4-9与图4-10中,右边的按钮处于选中状态,左边的按钮处于未选中状态。 【例4-7】设计Windows应用程序,单击【显示】按钮,根据对单选按钮的选
12、择,分别显示日期或时间。程序运行结果如图4-11和图4-12所示。 程序设计步骤: (1) 设计程序界面 创建Windows应用程序项目,在窗体设计视图中添加一个文本框、一个按钮和两个单选按钮。设置各控件的属性如表4-4所示。表4-4 控件属性设置控件对象名称属性名称属性值说明label1Text标签标题为空Font宋体, 14.25pt, style=Bold宋体,四号,粗体RadioButton1Text显示日期标签标题Checkedfalse未选中RadioButton2Text显示时间标签标题Checkedture选中button1Text显示按钮的标题 程序设计界面如图4-13所示。
13、 图4-11 显示日期 图4-12 显示时间 图4-13 设计界面 (2) 设计代码 在窗体设计视图双击标题为“显示”的按钮,设计按钮的单击事件代码如下:private void button1_Click(object sender, System.EventArgs e)if(radioButton1.Checked) /显示日期label1.Text=DateTime.Now.Year+年+DateTime.Now.Month+月+DateTime.Now.Day+日;if(radioButton2.Checked) /显示时间label1.Text=DateTime.Now.Hour+
14、时+DateTime.Now.Minute+分+DateTime.Now.Second+秒; 在上述代码中,使用两个条件判断语句,决定是执行显示日期的代码,还是执行显示时间的代码。由于单选按钮的Checked属性只能有一个为真(ture),所以两个条件判断必然为一真一假,也就是说只能执行其中一个条件判断中的代码。 显示日期与时间使用了.NET类库中的DateTime结构,代码中的“Now”为DateTime结构的静态成员,从该成员可以获取系统当前日期与时间。代码中的“Year”、“Month”、“Day”、“Hour”、“Minute”、“Second”,分别是系统日期与时间中的年、月、日、时
15、、分、秒。4.4.2 复选按钮(CheckBox) 复选框顾名思义可以同时选中多个选项,也就是说用户可以在窗口同时选中多个复选框,这是其和单选按钮的区别。 复选框的常用属性见表4-5。表4-5 RadioButton常用属性属性属性值说明Checkedfalse/true按钮是否被选中CheckStateUnchecked/Checked/Indeterminate未选中状态/选中状态/不确定状态ThreeStatefalse/true是否启用第三种状态Enabledfalse/true按钮是否可用AppearanceNormal/Button正常外观还是下压按钮外观 从表中可以看到,复选框与
16、单选按钮有相同的一些属性,这些相同的属性的意义与作用也相同。但是,复选框有两个不同于单选按钮的属性,即CheckState(选择状态)与ThreeState(第三种状态)属性,使复选框支持选中与未选中之外的第三种状态,即不确定状态(Indeterminate)。复选框的三种状态如图4-14所示。图4-14 复选框的三种状态 复选框CheckState属性的三个值,Unchecked值与Checked属性值false相关联,Checked值、Indeterminate值与Checked属性值true相关联。也就是说,当设置CheckState属性的值为Unchecked时,Checked属性的值
17、自动变为false;当设置CheckState属性的值为Checked或Indeterminate时,Checked属性的值自动变为true。 在程序设计过程中,可以直接通过CheckState属性将复选框设置为第三种状态。但是在程序运行时,第三种状态无法得到支持,也就是说,程序运行时,反复单击复选框时,复选框只能在选中与未选中两种状态之间切换。要想使复选框在程序运行时支持第三种状态,需将其ThreeState属性设置为true,该属性默认为false。 复选框经常是成组使用的。【例4-8】设计一个Windows应用程序,使程序通过选择单选按钮和复选框以更改字体和字型。程序运行结果如图4-15
18、所示。 程序设计步骤: (1)设计界面 创建Windows应用程序项目。 在窗体设计器视图中添加一个文本框控件,三个单选按钮控件和在三个复选框控件。各控件属性设置见表4-6。表7-3 控件属性设置控件对象名称属性名称属性值说明radioButton1Text黑体单选按钮标题Checkedfalse未选中Font黑体,9pt黑体字,小五号radioButton2Text华文新魏单选按钮标题Checkedfalse未选中Font华文新魏, 8.pt华文新魏,小五号radioButton3Text楷体单选按钮标题Checkedfalse选中Font楷体_GB2312, 9pt楷体字,小五号check
19、Box1Text粗体复选框标题Checkedfalse未选中Font宋体, 9pt, style=Bold宋体,小五号,粗体CheckBox2Text斜体复选框标题Checkedfalse未选中Font宋体, 9pt, style=Italic宋体,小五号,斜体checkBox2Text下划线复选框标题Checkedfalse未选中Font宋体, 9pt, style=Underline宋体,小五号,下划线textBox1Text字体字型设置文本框标题Font宋体, 18pt宋体,小二号字 其他属性取默认值。程序设计界面如图4-16所示。 图4-15 运行结果 图4-16 设计界面 (2) 设
20、计代码 三个单选按钮的默认事件代码如下:private void radioButton1_CheckedChanged(object sender, System.EventArgs e) /创建黑体字体对象if(radioButton1.Checked=true)textBox1.Font=new Font(黑体,textBox1.Font.Size,textBox1.Font.Style);private void radioButton2_CheckedChanged(object sender, System.EventArgs e) /创建华文新魏字体对象if(radioButto
21、n2.Checked=true)textBox1.Font=new Font(华文新魏,textBox1.Font.Size,textBox1.Font.Style);private void radioButton3_CheckedChanged(object sender, System.EventArgs e) /创建楷体字体对象if(radioButton3.Checked=true)textBox1.Font=new Font(楷体_GB2312,textBox1.Font.Size,textBox1.Font.Style); 三个复选框的默认事件代码如下:private void
22、checkBox1_CheckedChanged(object sender, System.EventArgs e) /创建粗体字型if(checkBox1.Checked=true)if(checkBox2.Checked&checkBox3.Checked)textBox1.Font=new Font(textBox1.Font,FontStyle.Bold|FontStyle.Italic|FontStyle.Underline);else if(checkBox2.Checked)textBox1.Font=new Font(textBox1.Font,FontStyle.Bold|
23、FontStyle.Italic);else if(checkBox3.Checked)textBox1.Font=new Font(textBox1.Font,FontStyle.Bold|FontStyle.Underline);else textBox1.Font=new Font(textBox1.Font,FontStyle.Bold);elseif(checkBox2.Checked&checkBox3.Checked)textBox1.Font=new Font(textBox1.Font,FontStyle.Italic|FontStyle.Underline);else if
24、(checkBox2.Checked)textBox1.Font=new Font(textBox1.Font,FontStyle.Italic);else if(checkBox3.Checked)textBox1.Font=new Font(textBox1.Font,FontStyle.Underline);else textBox1.Font=new Font(textBox1.Font,FontStyle.Regular);private void checkBox2_CheckedChanged(object sender, System.EventArgs e) /创建斜体字型i
25、f(checkBox2.Checked=true)if(checkBox1.Checked&checkBox3.Checked)textBox1.Font=new Font(textBox1.Font,FontStyle.Bold|FontStyle.Italic|FontStyle.Underline);else if(checkBox1.Checked)textBox1.Font=new Font(textBox1.Font,FontStyle.Bold|FontStyle.Italic);else if(checkBox3.Checked)textBox1.Font=new Font(t
26、extBox1.Font,FontStyle.Italic|FontStyle.Underline);else textBox1.Font=new Font(textBox1.Font,FontStyle.Italic);elseif(checkBox1.Checked&checkBox3.Checked)textBox1.Font=new Font(textBox1.Font,FontStyle.Bold|FontStyle.Underline);else if(checkBox1.Checked)textBox1.Font=new Font(textBox1.Font,FontStyle.
27、Bold);else if(checkBox3.Checked)textBox1.Font=new Font(textBox1.Font,FontStyle.Underline);else textBox1.Font=new Font(textBox1.Font,FontStyle.Regular);private void checkBox3_CheckedChanged(object sender, System.EventArgs e) /创建下划线字型if(checkBox3.Checked=true)if(checkBox1.Checked&checkBox2.Checked)tex
28、tBox1.Font=new Font(textBox1.Font,FontStyle.Bold|FontStyle.Italic|FontStyle.Underline);else if(checkBox2.Checked)textBox1.Font=new Font(textBox1.Font,FontStyle.Underline|FontStyle.Italic);else if(checkBox1.Checked)textBox1.Font=new Font(textBox1.Font,FontStyle.Bold|FontStyle.Underline);else textBox1.Font=new Font(textBox1.Font,FontStyle.Underline);elseif(che
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年世界艾滋病日防治知识题
- 2026年班组长现场安全管理与隐患排查治理测试
- 2026年张家口市下花园区卫生健康系统人员招聘笔试备考试题及答案解析
- 2026浙江杭州市文三教育集团文三街小学招聘数学教师(非事业)1人考试参考题库及答案解析
- 2026年早教中心课程顾问面试销售话术与家长沟通
- 2026年分析当前形势下的血站人才选拔趋势与挑战
- 2026年四川团员发展对象考试成渝地区双城经济圈
- 2026西安高新第八小学招聘考试参考题库及答案解析
- 2026年南宁市江南区卫生健康系统人员招聘笔试备考试题及答案解析
- 2026年制造业质量数据分析练习题
- 《长方形、正方形面积的计算》教案数学课件
- 2025国防素养大赛试题及答案
- 地理信息安全在线培训考试系统题库及答案
- 2025年上海通管局类安全员b证考试题库及答案
- 绘画班培训招生活动方案
- 软件测试回归测试方案
- 幼儿园托班安全检查自查报告范文
- 茅台集团品牌管理办法
- IT项目月度汇报
- 2026届贵州省贵阳市中考语文考试模拟冲刺卷含解析
- 公司运动俱乐部管理办法
评论
0/150
提交评论