学习情景4VisualC#结构化程序设计——选择结构程序设计结构化程序设计——选择结构程序设计本讲要点:if语句的作用及其使用switch语句的作用及其使用单选按钮与复选按钮Timer控件选择结构,是一种常用的主要基本结构,是计算机根据所给定选择条件为真或否,而决定从各实际可能的不同操作分支中执行某一分支的相应操作。4.1选择结构的概念if语句一般用于简单选择,即选择项中有一个或两个分支。格式为:if(布尔条件表达式){语句块1;}else{语句块2;}4.2单分支选择结构(if语句)必须是布尔类型的可以是单语句,也可以是多语句可以省略嵌套if语法if(表达式1){if(表达式2){//表达式2为真时执行……}else{//表达式2为假时执行……}}else{//表达式1为假时执行……}嵌套if:if块中又嵌入if在应用这种if…else结构时,要注意else和if的配对关系,此配对关系是:从第1个else开始,一个else总是和它上面离它最近的可配对的if配对。2.用if语句实现多分支选择结构[格式]:if(表达式1){语句块1;}elseif(表达式2){语句块2;}elseif(表达式3){语句块3;}……else{语句块n;}课本实例2.1:掷色子游戏创建2个范围为1~7的trackbar控件,用来确定每个色子的值。privatevoidcheckvalues(){intdie1,die2,total;die1=trackBar1.Value;die2=trackBar2.Value;total=die1+die2;label1.Text=总点数为:+total.ToString();if(total==6)label2.Text=本局:赢;elselabel2.Text=本局:输;}【例4-1】编写一个求成绩等级的程序。要求输入一个学生的考试成绩,输出其分数和对应的等级。共分五个等级:小于60分的为“不及格”;60~69分为“及格”;70~79分为“中等”;80~89分为“良好”;90分以上为“优秀”。图程序运行界面4.3switch结构•C#中的switch语句switch(int/char/string表达式){case常量表达式1:语句1;break;//必须有case常量表达式2:语句2;break;//必须有……default:语句n;break;//必须有}C#【例4-2】编写一个求成绩等级的程序。要求输入一个学生的考试成绩,输出其分数和对应的等级。共分五个等级:小于60分的为“不及格”;60~69分为“及格”;70~79分为“中等”;80~89分为“良好”;90分以上为“优秀”。程序运行界面C#中的switch结构小结•条件判断的表达式类型•——整型或字符型或字符串•break语句的要求:–每个case都有break–default也要有break–特殊情况://示例7中的代码inti;…switch(i){……case4:case6:case9:case11:Console.WriteLine({0}月有30天,i);break;……}case中没有其他语句时,不需要break语句练一练•课本例2.2,理解switch的应用。4.4.1单选按钮(RadioButton)单选按钮也叫选项按钮,为用户提供从多个选项中选择一个选项的功能,因此单选按钮顾名思义是一种“多选一”的控件。常用属性•Checked属性:设置和获取控件的选中状态。使用的语法为:object.Checked=true;//使控件被选中例如:if(radioButton1.Checked==true)……•Text属性:圆圈旁边的指示性文字4.4使用单选按钮与复选框控件4.4.1单选按钮(RadioButton)【例4-3】设计Windows应用程序,单击【计算】按钮,根据对单选按钮的选择,计算加、减、乘、除中的一种运算。结果如图:4.4使用单选按钮与复选框控件4.4使用单选按钮与复选框控件对象名称属性名称属性值textBox1nametxtAtextBox2nametxtBLabel3namelblResultBorderStyleFixed3DradioButton1~radioButton4nameradAdd、radSub、radMult、radDiv4.4使用单选按钮与复选框控件【例4-4】按钮事件代码:privatevoidbutton1_Click(objectsender,EventArgse){inta=int.Parse(txtA.Text);intb=int.Parse(txtB.Text);if(radAdd.Checked)lblResult.Text=两个数的和为:+(a+b);elseif(radSub.Checked)lblResult.Text=两个数的差为:+(a-b);elseif(radMult.Checked)lblResult.Text=两个数的积为:+(a*b);elseif(radDiv.Checked)if(b==0){MessageBox.Show(0不能作除数!);}else{doubleresult=a/b;lblResult.Text=整数+txtA.Text+除以整数+txtB.Text+的商为:+result;}}4.4.2复选按钮(CheckBox)可以在窗口同时选中多个复选框,这是其和单选按钮的区别。检查框与单选钮共享大多数的常用属性、方法和事件。【例4-11】设计Windows应用程序,单击【计算】按钮,根据对复选框的选择,计算加、减、乘、除运算。4.4使用单选按钮与复选框控件【例4-5】运行结果如图:4.4使用单选按钮与复选框控件4.4使用单选按钮与复选框控件【例4-6】控件属性设置如下表:对象名称属性名称属性值textBox1nametxtAtextBox2nametxtBLabel3namelblResultBorderStyleFixed3DcheckBox1~checkBox4namechkAdd、chkSub、chkMult、chkDiv4.4使用单选按钮与复选框控件【例4-7】按钮事件代码privatevoidbutton1_Click(objectsender,EventArgse){lblResult.Text=;inta=int.Parse(txtA.Text);intb=int.Parse(txtB.Text);if(chkAdd.Checked)lblResult.Text+=两个数的和为+(a+b)+\n;if(chkSub.Checked)lblResult.Text+=两个数的差为+(a-b)+\n;if(chkMult.Checked)lblResult.Text+=两个数的积为+(a+b)+\n;if(chkDiv.Checked)if(b==0)MessageBox.Show(0不能作为除数);else{doubleresult=a/b;lblResult.Text+=整数+txtA.Text+除以整数+txtB.Text+的商为+result+\n;}}分组框的作用是将一些控件捆绑成一个组,使用户界面清晰明了。•设计控件时,要先将GroupBox控件拖入窗体内,然后再向框内加入其他控件。•GroupBox控件一般只修改其Text属性,Text是框头的提示性文字。4.5使用分组框控件(GroupBox)Timer控件称计时器,它用来计时。常用属性•Enabled属性:设置计时器的可用性例如:timer1.Enabled=true;•Interval属性:设定计时器的时间间隔,单位为毫秒例如:timer1.Interval=1000;常用的事件•Timer控件的事件只有一个Tick,它在指定的时间间隔发生4.6Timer控件【例4-8】设计一个以0.1秒为单位的秒表,单击【开始】按钮开始计时,单击【停止】按钮停止计时。【开始】按钮的Click事件代码为:privatevoidbtnStart_Click(objectsender,EventArgse){txtSeconds.Text=0;tmrWatch.Enabled=true;}【停止】按钮的Click事件代码为:privatevoidbtnStop_Click(objectsender,EventArgse){tmrWatch.Enabled=false;}计时器控件tmrWatch的Tick事件代码为:privatevoidtmrWatch_Tick(objectsender,EventArgse){txtSeconds.Text=(double.Parse(txtSeconds.Text)+0.1)+;}实例4-9:移动的文字Pointp;privatevoidForm1_Load(objectsender,EventArgse){timer1.Enabled=true;p=label1.Location;}privatevoidtimer1_Tick(objectsender,EventArgse){p.X+=19;if(p.Xthis.Width)p.X=0;label1.Location=p;}【例4-10】设计一个在公共场所展示的信息牌,显示了当天的日期和本地天气。程序中使用的控件如表所示。第四讲选择结构程序设计对象名属性Text初始值控件作用form1天气信息窗体label1label3label5空动态文本,在程序中显示当前的年份、月份、日子label2label4label6年、月、日静态文本,指示性文字Label7空动态文本,在程序中显示今天是星期几label8label9label12天气风向转静态文本,指示性文字label10晴动态文本,在程序中显示当天的天气Label11、label13Label15、16东、南、西、北动态文本,在程序中显示当天的最高气温和最低气温checkBox1显示调整控件控制窗体的折叠和展开radioButton1radioButton2radioButton3晴、阴、雨供用户选择天气checkBox2~checkBox4东、南、西、北供用户选择风向groupBox1调整天气将3个单选钮组成一组groupBox2调整风向将4个组合框组成一组timer1(Interval=1000)控制更新日期和星期的时间间隔第四讲选择结构程序设计运行效果图:第四讲选择结构程序设计主要程序代码:privatevoidForm1_Load(objectsender,EventArgse){this.Height=240;//将窗体折叠起来DateTimenow=DateTime.Now;label1.Text=now.Year.ToString();label3.Text=now.Month.ToString();label5.Text=now.Day.ToString();switch(now.DayOfWeek.ToString()){caseMonday:label7.Text=星期一;break;caseTuesday:label7.Text=星期二;break;caseWednesday:label7.Text=星期三;break;caseThursday:label7.Text=星期四;break;caseFriday:label7.Text=星期五;break;caseSaturday:label7.Text=星期六;break;caseSunday:label7.Text=星期日;break;}第四讲选择结构程序设计radioButton3.Checked=true;//初始化显示天气和气温的控件label10.Text=雨;checkBox2.Checked=true;checkBox4.Checked=true;label11.Text=东;label13.Text=西;label15.Text=;lab