1、,项目二:书店应收帐款的统计,学习目标 1、熟悉C#的输入、输出控件的使用方法 2、熟悉C#的顺序结构的组成及执行过程 3、熟悉C#的选择结构的组成及执行过程 4、熟悉C#的循环结构的组成及执行过程 5、熟悉循环结构的嵌套的使用方法 6、灵活运用三种结构及综合运用解决实际问题,2.1: 设计一个计数的简单程序,设计一个简单的计数器,通过单击点我按钮来进行计数。项目结果如图所示,项目实现步骤:,1、启动Visual Studio 2008 2、文件 新建 项目,打开“新建项目”对话框 3、在项目类型窗格中选择Visual C#下的Windows选项,然后在“模板”窗格中“Windows应用程序”
2、选项 4、确定该项目名称和项目保存位置,单击“确定”按钮,出现Visual Studio的编程界面,项目实现步骤:略,分析与讨论:本项目的一个重点是数据类型的转换,通过代码可以实现,在下面的任务中,将着重讨论顺序结构的特点、执行过程及输入、输出控件的使用方法,任务一: 顺序结构程序设计,特点:1、声明变量2、赋初值3、数据处理4、输出结果,执行过程 由上至下依次执行,任务二: 输入及输出的方法,程序中输入及输出是两个必不可少的步骤,在C#中通常使用文本框输入数据,输出则由文本框及标签两个控件完成。以上两个控件的使用方法我们在项目一中进行了讲解。需要注意的是在使用两个控件进行输入输出数据时,要进
3、行数据类型的转换。,完成2.1项目的程序设计,2.2: 电梯设置,电梯厂商为了提高电梯的利用率,需要一个控制程序,实现如下功能:输入楼层数,如果楼层是15,显示提示“请走楼梯!”;如果楼层是615,显示提示“请进电梯”;如果输入的是115之外的数据,显示提示“本楼只有115层,输入数据错误,请重新输入!” 。请编程实现以上的功能。,讨论分析: 首先输入楼层数; If(x)在115之外,显示提示“本楼只有115层,输入数据错误,请重新输入!”; If(x)在15之间,显示提示“请走楼梯!”; If(x)在615之间,显示提示“请进电梯!”; 此案例关键在于条件的建立,项目创建的步骤 略 项目展示
4、,分析与讨论 此项目与前面所学的程序有何不同 本项目中使用了If语句,这是本章要熟练掌握的第一个任务,也是本章学习的重点,任务一:掌握If语句的使用方法及其应用,一、If语句 1、格式:If(表达式) 语名体 2、说明:(1)表达式是C#中合法的表达式(2)语句体可以是一条语句,也可以是复合语句。,3、流程图,4、执行过程(1)首先计算表达式的值(2)如果表达式的值为真(非零),则执行If子句,然后执行后续语句(3)如果表达式的值为假(零),则跳过If子句执行If子句的后续语句,2.3: 信息登录,根据输入的年龄,判断是否是成年人。示例如下图所示,项目实现步骤: 略,项目展示:,分析与讨论:在
5、这个项目中涉及了条件不成立的结果,我们将学习在选择结构中如何实现,任务二:ifelse结构,二、ifelse语句1、格式if (表达式)语句1;else语句2; 2、说明:(1)表达式可以C#中合法的表达式(2)语句1、2可以是单条语句也可以是复合语句(3)else语句不是单独的语句,它是if语句的一部分,3、流程图,4、执行过程(1)首先计算表达式的值(2)如果表达式为真则执行if子句(语句1),然后执行后续语句(3)否则跳过if子句去执行else子句(语句2),然后执行后续语句,案例一:输入两个数,输出其中的大数,分析:主要是判断条件的写法,案例二:输入一个数,判断它是否能被3整除, 若能
6、被3整除,输出YES,否则输出NO,分析:主要是判断条件的写法,案例三:提示 用户输入密码,如果密码是888888,则提示正确,否则提示错误,分析:主要是判断条件的写法 如果把888888看成是数值型,会出现什么样的错误,案例四:判断输入的字母是大写字母还是小写字母,分析:主要是判断条件的写法 出现的问题是:除了大写字母以外的任何字符均输出了小写字母。如何解决这样的问题,我们将学习下面的任务,if的嵌套,任务三:if的嵌套,三、if嵌套1、格式:(1) if(表达式)if(表达式) 语句1;else 语句2;说明:在一个if语句中又包含了另一个if语句,从而构成了if语句的嵌套,(2) if(
7、表达式) 语句1else 语句2if(表达式) 语句3else 语句4 说明:在else子句中又嵌套了另一个if语句if与else配对原则:else子句总是和前面最近的不带else子句的if语句配对,与书写格式无关,案例五:读下列程序片断,写出结果,Int a=2, b=-1, c=2; If(ab) if(b0) c=0; elsec+=1;求 C的结果,分析与讨论 要有良好的输写习惯 习惯与子句加上一对大括号,Int a=2, b=-1, c=2; If(ab) if(b0) c=0;elsec+=1;求 C的结果,案例六:读程序片断,写出结果,int a=3, b=4, s; s=a;
8、if(ab)s=b; s*=s;求出 S的结果,int a=3, b=4, s; s=a; if(ab) s=b; s*=s;,分析与讨论s*=s, 是if语句的后续语句,所以执行子句后,还应执行它的后续语句 如果将子句加上大括号,就不会引起错觉,案例七: 对年龄特征的程序改进,如果年龄在20岁以上者为成年人,否则如果年龄在10岁以上20岁以下者为少年,否则为婴幼儿,分析与讨论 条件判断式的写法 在else子句下的if语句嵌套,案例八:编程实现如下功能,提示用户输入用户名及密码,如果用户名为admin及密码为888888,提示输入正确,否则提示用户名或密码错误,如果用户名不是admin则提示用
9、户名不存在,分析与讨论 关键在于判断条件的输写,逻辑表达式 注意嵌套问题,案例九:提示用户输入年龄,如果年龄大于等于18岁,则可以查看,如果用用户小于10岁,则告之不可以查看,如果大于或等于10岁,则提示用户是否继续查看(yes或No)如果输入的是Yes则提示可以继续查看,否则提示不允许查看,分析与讨论 判断条件的书写 嵌套的位置,2.4: 显示员工的身份,假设某公司中,1代表总经理 2代表部门经理 3代表项目经理 4代表普通员工 。编程输入ID号输出与其相对应的职位,项目实现的步骤: 略,分析与讨论 本项目与前面所学的if语句有何不同 此项目属于多分支语句 在下面的任务中我们将学习switc
10、h语句,任务四:掌握switch语句的使用方法及其应用,一、switch 语句 1、作用:switch语句是多分支选择语句,它通过switch表达式的值与多个不同值进行比较,选择相应的case语句来处理多个选择,2、格式switch (表达式) case 常数常数 1:语句组 1; break;case 常数常数 2:语句组 2;break;case 常数常数 n:语句组 n;break;default: 语句组n+1; break;,3、说明:(1)表达式必须是一个整型、字符型或字符串类型的表达式,且结果必须是常量(2)case中的值必须是常量,不能是变量及表达式,且它们的值不同,常量只起到
11、一个标号的作用,并不是起到一个判断的作用(3)case中的break语句不能省略(4)一个switch语句中最多只能有一个default标签,它与case的书写的先后顺序无关(5)多个case标签可共用同一个语句组,4、执行过程(1)首先计算switch表达式的值(2)将该值与case标签后的常数进行比较(3)若两者相等,则执行该case标签后的语句(4)若所有case标签后的常数都不等于表达式的值,则执行default标签后面的语句(5)若不存在default标签,则switch语句执行结束,案例九:模拟自动饮料收款机,按界面显示输入选择合法的数字,输出可获得的相应饮料的名称,分析与讨论 界
12、面如何设计 对各种选择如何响应,案例十:编写程序,输入该年的某月份,输出该月的天数。假设要处理的年份为2011年,分析与讨论: 1、3、5、7、8、10、12这7个月的天数为31天 2月为28天 4、6、9、11这4个月为30天 Case标签后的语句相同,可简化switch语句 如果输出语句放在最后会怎样?,案例十一:假设商场打折,一次性购买的商品金额越多,优惠就越多,标准如下:金额500元 没有优惠 500=金额1000元 9.5折 1000=金额3000元 9折 3000=金额5000元 8.5折金额5000元 8折 设计程序实现该优惠标准的实现,分析与讨论 在优惠标准中金额不是一个常数,
13、而是一个数值范围,因此从表面上看不能简单地switch语句来实现 但分析此问题不难发现,优惠标准的变化是有一定规律的,即优惠的变化点都是500的倍数,将购买的金额整除以500得到的商只有11个整数值,可以利用这11个常数,结合switch语句来实现该程序,这11个常数分别为=5000 8折 设常数为m m=(int)(money/500) 没有优惠折价率为 cutRate=1,总结 If语句的表达式表示的是一个数值范围 Switch表达式必须是一个具体的常量是一个离散的值 Switch语句可以用if语句完成,但if语句不一定能用switch语句完成 C#中的break语句是不能省略的,否则会报
14、错,2.6:请为超市编写一个收费系统,如果你在超市工作,领导让你为超市编写一个收费系统,你能做到吗?当你接到这个任务时,你要知道整个收费系统的工作过程,当顾客从超市购物出来要付款的时候,顾客把购买的商品交给收银员,收银员以所有的商品条形码扫描,扫描一个就得到该商品的价格并自动累加,最后扫描完,收银员按回车,就能得到总价格,这个超市收费系统到底是如何实现的呢?实现的界面如图所示:,项目实现步骤: 略,项目展示,分析与讨论 收银员对商品条形码扫描的过程就是把商品的价格进行输入的过程 收银员要重复对商品价格进行扫描 在求总价格的时候可以假设有一个盒子S,用来存放所有商品的部总价格,收银员每扫描一次,
15、也就是把该商品的价格放入给X,然后再把X的值转移加入到S盒子里,重复操作,直到收银员按回车,最后输出S盒子中的值,就可得到所有商品的总价格。,任务五:while 语句及while语句构成的程序结构,一、while语句 1、格式while (表达式)循环体语句;,问题的导入,2、说明 条件表达式为关系表达式或逻辑表达式,其结果为true或为false 条件表达式在每执行一次循环体时,就有所变化,目的是为了使循环最终能够结束,而不至于死循环 循环体语句中,至少应包含改变循环变量的语句,以避免陷入死循环 当循环体为多个语句组成时,必须用一对大括号括起来,形成复合语句,3、程序框图,4、执行过程: 首
16、先计算条件表达式的值 当表达式的值为true时,执行循环体语句 然后再去判断条件表达式的值,并重复上述操作 直到表达式的值为false时,退出循环,执行后续语句,5、注意 当表达式一开始就为false时,循环体一次也不执行,读下列程序片断,写出结果,int n=10; While(n7) n-;lblResult.Text+=n.ToString()+”n”; 写出n的结果并判断循环体被执行几次,读程序片断,写出结果,int myint=0;While(myint10)myint+;MessageBox.Show(“共循环”+myint+”次”); ,读程序片断,写出x, y的结果,int x
17、=0, y=0;while(x5 循环体语句是什么,被执行几次,读程序片断,写出a,b,c的结果,int t, a=2, b=3, c=-2; While(abc) t=a; a=b; 判断循环体被执行几次b=t;c+; ,案例十二:输出110之间的数据,分析与讨论 注意条件表达式的写法,及判断 注意自加运算的用法,案例十三:求1100之间的累加器,分析与讨论 注意表达式的写法及判断 注意初始值的设置,一般累加器常常设置为0,案例十四:求110之间的累乘器,分析与讨论 注意表达式的写法及判断 注意初始值的设置,一般累加器常常设置为1,案例十五:要求输 入用户名和密码,只要不是admin和888
18、888,就一直提示重新输入,分析与讨论 循环条件的确定是两个条件只要不满足其中一个,循环体将不执行,任务六:dowhile结构及程序构成,一、dowhile结构1、格式do循环体语句; while(表达式);,问题的导入,2、框图,3、执行过程 首先执行do后面的循环体语句 计算while中表达式的值 如果为true则继续执行循环体 如果为false则退出循环结构,4、与while语句的区别 无论表达式是否成立,循环体至少执行一次 因为是先执行后判断,读程序片断,写出结果,int num=0;donum+; lblResult.Text=num.ToString()+”n”;while(num
19、=2);,读程序片断,写出结果, int x=0, y=0, z=0;do switch (y+) case 1: x+; break;case 3: x+=3; break;default : x=x%2; break;z+; while(y5); ,读程序片断,写出结果,int x=3, y=0;do while(!y) y=-x; while(x-); 写出x、y的结果,提示:x-表达式为0则退出,案例十四:计算整数各位上的数字的和,分析与讨论 将输入的整数与10取余,则为原整数的个位 将输入的整数除以10,商则为去掉个位数 如此反复,将得到各位上的整数,例如:3109/10=310 3
20、109%10=9310/10=31 310%10=031/10=3 31%10=13/10=0 3%10=3,2.7:神探抓贼,在某一黑夜一司机碰伤行人之后落荒而逃,经过警察的调查之后,有3个目击者。 甲说:“车牌号的前两位相同” 乙说:“车牌号的后两位加起来等于6” 丙说:“车牌号是一个四位数,并且能被2整除” 如果你是神探,你能找到这辆车吗?编程界面如下图所示:,项目实现步骤 略,项目展示,方法与讨论 在解决这类问题的时候,关键是先转化为数学问题 车牌号是四位数,那这个数的范围应该是在1000=x=9999之间,也就表明初值为1000,终值为9999,这是实现循环的关键 定义4个变量a,b
21、,c,d分别代表各个位数上的数字,根据甲乙所说,应该有a=b,c+d=6 根据丙所说车牌号能被2整除,即 x%2=0,任务七 for语句及构成的循环结构,一、for语句1、格式for(表达式1;表达式2;表达式3)循环体语句;,2、说明 表达式1的值,通常为循环控制变量赋初值 表达式2的值,即判断循环条件是否为真 表达式3的值,通常写更新循环变量的赋值表达式 for语句可理解为如下的形式for(循环变量赋初值;循环条件;循环变量的增量) 循环体语句;,3、程序流程图,true,4、执行过程 计算表达式1的值 计算表达式2的值,如果为真,执行循环体,否则跳出循环体,执行后续语句 计算表达式3的值
22、,然后回到第二步重复执行,读程序片断,写出结果 int k, s;for(k=2; k6; k+,k+)s=1;s=s+k;label1.Text+=s.ToString()+”n”; 并判断循环体被执行几次,设置断点进行调试,读程序,写出结果,int a, b, t;for(a=3,b=0;!a= =b; a-,b+) if(ab) t=a; a=b; b=t; label.Text=a.ToString()+” “+b.ToString(); 并判断循环体被执行几次,设置断点调试,读程序,写出结果,int sum=0;for( int i=2; i11; i+ )if( i%2= =0 判
23、断循环体被执行几次,并设置断点调试,案例十五 完成项目二的编程过程,案例十六 用for语句完成1100的累加和,分析与讨论 循环控制变量的设置及变化 循环体的构成,案例十七 用for语句完成110的累乘,分析与讨论 循环控制变量的设置及变化 循环体的构成,知识点介绍:输出格式,string Format 方法 1、格式string Format(formats ,参数表) 2、含义formats为包含一个或多个格式的字符串,同时参数表中有一个或多个参数,同时用参数表中的第一个参数去替换格式字符串的第一个格式字符串在格式字符串中,第一个格式是从零开始的,它对应的是参数表中的第一个参数,以此类推。
24、方法返回值为字符串,3、举例,Int i=5, j=10; String Format(“0*1=2”,i,j,i*j),i*j=50,格式化输出说明,2,8 输出九九乘法表,编程实现九九乘法表,如图所示,实现步骤:略,项目展示,分析与讨论 每一个等式的输出格式都是 整数1*整数2=积 整数1相当于被乘数从19;整数2为乘数,且不变等于行号,等式的个数也等于行号 由上得知,内循环确定乘数即行数 外循环确定被乘数,即列数 行数要小于等于列数,任务八 循环嵌套,定义:当一个循环的循环体语句中包含另一个或若干个循环时,称为循环的嵌套,即多重循环结构 作用:利用多重循环可解决较复杂的问题 执行过程:外
25、循环执行一次,内循环执行一遍,读程序片断,写出结果,int i, j, m=0;for(i=1; i=15; i+=4)for(j=3; j=19; j+=4)m+; label1.Text=“m=“+m.ToString(); 并判断内、外循环各多少次,读程序,写结果,int i, b, k=0;for( i=1; i0) b-; k+; label1.Text=b.ToString()+” “+k.ToString(); 判断出循环次数 要找出规律,任务九 循环中断,有时为了任务的要求,需要退出循环体,这种情况被称为循环中断,1、continue语句作用:是结束本次循环。执行continu
26、e语句,将跳过该语句之后的循环体内的语句,返回到循环的起始处,并根据条件决定是否执行下一次的循环。 注意:continue语句单独使用,但它必须置于循环语句内,否则将发生编译错误,2、break语句 作用:执行break语句后,将彻底结循环,转向执行循环体外的后续语句 3、return语句 作用:在循环语句中使用return语句,不仅跳出了该循环,而且将退出该循环所在的事件或方法 4、goto语句 格式:goto 标识符无特殊要求,尽量少用goto语句,读程序,写出结果,int x, y ;for( x=2, y=1; y=10)break;x+=5;label1.Text=x.ToStrin
27、g(); 并判断循环几次 说出break语句在程序中所起到的作用,读程序,写出结果,int i=0, s=0; do if (i%2=1) i+; continue; i+;s+=i; while( i7);MessaegBox.Show(“s=“+s.ToString(); 说明continue在程序中的作用,并判断循环体被执行几次,读程序,写结果,int x=3, y=6, z=0;while(x+!=(y-=1) z+=1;if ( yx )break; MessgeBox.Show(x.ToString+”,”+y.ToString+”,”+z.ToShtring); 说明break语
28、句的作用,并判断循环体被执行几次,读程序,写结果,int i, sum ; Sum=0; for( i=1; i=3; sum+ ) sum+=i; return; label1.Text=sum.ToString();说明return 在程序中的作用,并判断循环体被执行几次,如果程序中没有return语句,程序结果会怎样,综合练习,案例十八:编写程序,输出所有的“水仙花数”,分析与讨论 所谓“水仙数”是指一个三位数,其各位数字的立方和等于该数本身,例如:153是一个水仙数即:153=13+53+33 判断条件如何根据题意来确定 三位数的各个位如何来提取,案例十九:编写程序,使用for循环实现
29、如下功能:用户输入一个整数n,若n为奇数,程序计算出数列1+3+5+n,若为偶数,程序计算出数列:2+4+6+n,分析与讨论 循环控制变量及条件的设置 循环体的写法即奇数列及偶数列的写法,案例二十:输出一个正三角形,分析与讨论 注意循环的嵌套 外循环控制三角形的行数 内循环一控制三角形的空格 内循环二控制三角形的* 注意控制变量的条件,调试书中的例题,结果是怎样的,为什么?,案例二十一: 猜数游戏,先由计算机随机产生一个1100之间的数,如果有人猜对了,则显示你猜对了,否则提示猜错了,产告之,猜的数太大了,还是太小了,然后结束游戏,先由计算机随机产生一个1100之间的数,如果有人猜对了,则结束
30、游戏,并输出此人猜对了多少次才猜对此数,否则计算机给出提示,告之所猜的数是太大了还是太小了,直到猜对为止,先由计算机随机产生一个1100之间的数,如果有人猜对了,则结束游戏,并输出此人猜对了多少次才猜对此数,否则计算机给出提示,告之所猜的数是太大了还是太小了,最多可以猜10次,如果10次仍未猜对,则结束游戏,2.9: 学生成绩统计,本项目知识总结,选择结构与循环结构是程序设计时,经常用到的两种结构,它们的区别在于:选择结构根据特定的条件的成立来决定是否执行某段程序代码,而循环结构可以实现反复执行某段程序代码。这两种结构通常是常常结合使用的,在实际应用中,需要根据特定情况来决定如何应用这两种结构
31、。,单元实训 书店营业额统计,1、实训目的:在书店管理系统中,实现应收帐款的统计,由于还没有学习数据库的基本知识,所以我们只能在窗体上模拟一个数据表。主要考查数据的正确性及选择结构及循环结构的具体应用,从而考查学生是否能用所学知识解决实际问题,单元实训如图所示:,2、实训要求,在C#集成开发环境中,使用窗体设计器、控件工具箱及属性窗口创建所给图示的应用程序界面及运用数据类型及表达式计算相应的数据,完成实训要求写出: 实训步骤 分析讨论 所用控件的功能及计算的过程 实训的感想,评价方法,1、功能评价方法受所学知识的限制,主要评价是否实现了数据的正确统计,而数据是否符合任务要求不是本次评价的重点,2、性能评价方法 选择、循环结构应用的是否合理,