您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 项目7:集合、索引器和泛型——图片浏览器
C#程序设计主讲教师:杨剑1项目7:集合、索引器和泛型——图片浏览器一、教学内容及要求能力培养:1、理解数组的概念2、声明和创建数组3、通过索引来访问数组4、遍历数组中的所有元素5、使用for和foreach循环语句来遍历数组中的元素6、理解集合的概念7、熟练使用集合访问数据8、理解泛型概念9、熟练使用各种泛型集合核心技能点:1、C#语言中一维数组和字符串的概念及其使用方法2、集合、索引器、泛型的定义与使用扩展技能点:1、多维数组、数组型数组的概念2、索引器的作用、定义与使用方法3、泛型的概念和意义,泛型的定义和使用方法教学内容:1、项目介绍。任务1:图片浏览器(5分钟)2、案例演示:数组任务2:数组的定义和使用。(20分钟)如:实践,一维数组的定义和使用。任务3:使用foreach对数组元素进行遍历。(15分钟)如:实践,利用foreach对数组元素进行遍历。任务4:二维数组的定义和使用。(15分钟)如:实践,二维数组的定义和使用。3、案例演示:字符串任务5:掌握字符串及字符串方法的使用。(25分钟)如:实践,对文件名以及邮箱有效性进行检查。4、项目实现:任务6:用数组实现图片浏览器(35分钟)C#程序设计主讲教师:杨剑25、案例演示:索引器任务7:熟练掌握索引器的定义与使用。(35分钟)如:实践,用索引器实现图片浏览器6、案例演示:集合任务8:掌握ArrayList的使用方法(25分钟)如:实践,用ArrayList实现图片浏览器任务9:掌握HashTable的使用方法(20分钟)如:实践,用HashTable实现图片浏览器7、案例演示:泛型集合任务10:掌握ListT的使用方法(20分钟)如:实践,用ListT实现图片浏览器任务11:掌握DictionaryK,V的使用方法(10分钟)如:实践,用DictionaryK,V实现图片浏览器二、教学重点、难点及解决办法教学重点:1.数组的声明和创建2.通过索引来访问数组;3.集合和泛型的使用4.字符串及其常用方法教学难点:1、通过索引来访问数组2、集合和泛型的使用教学方法:基于CDIO的课程改革,应用了CDIO教育模式。以“做中学”为出发点,实施“知识讲解案例化、课内课外协作化、实战演练一体化”的教学模式。由传统的教师引导课堂转变为以学生为主体,课本中的知识点讲解转变为“项目”主导,将传统的课堂模式转变为了以实际经验为核心。三、教学设计1、教学进程工程化将教学内容按CDIO理念,以项目为核心,并结合课程内容设计了四个环节的内容,包括构思环节、设计环节、实现环节、运作环节,同时,在课程的教学过程中,主要采用“做中学”的教学理念来实现“教学做”一体化。以项目为载体,将抽象的知识融入到项目中,通过项目的学习将知识点分解,将“工程”教学思想体现在教学中,进而提高学生的学习效果。C#程序设计主讲教师:杨剑32、教学设计递进化根据“工程化”的思想,教学模式的设计呈递进化趋势,每一个教学项目的实现将分成四个部分来完成:任务的明确,实施方案的编写,项目的实施和项目的评价3、实践设计层次化在项目的实施过程中,主要组织层次化教学。在教学中,采取“基础实验”“综合实验”,“综合性课程设计”的设计。4、课程考核工程化考核以过程考核和工程验收测试相结合的方式进行。本门课程采取的是形成性考核方式,考试成绩由本门课程学习期间的多项过程成绩组合而成5、知识讲解案例化根据CDIO的思想,对知识点采取案例化教学法,6、课内课外协作化7、实战演练一体化为了让学生对所学课程加深理论知识,并能够将相关知识结合到实际应用中,学生需要自选一个相关主题进行综合项目的开发,提高综合应用能力。在这个环节中,学生是主体,教师主要负责引导和监控,学生需要在这个阶段发挥自身能力,以团队的形式完成项目,并由此锻炼学生的团队合作意识。四、教学过程1、项目介绍。任务1:图片浏览器(5分钟)2、案例演示:数组任务2:数组的定义和使用。(20分钟)(1)为什么需要数组一次C#内部测试结束后,老师给令狐冲分配了一项任务,计算全班(30人)的平均分我们的编程时也存在类似问题,又很多不同类型的数据,如int、float型、C#程序设计主讲教师:杨剑4char等,也需要进行分类存放。引导学生回答,某个班的考试成绩,可不可以存放在一起?是不是可以用数组来解决啊。(2)数组在内存中的存储(3)数组定义数组是一个变量,存储相同数据类型的一组数据(4)如何使用数组①声明数组:int[]a;②分配空间:a=newint[5];③赋值:a[0]=8;④处理数据:a[0]=a[0]*10;(5)数组的声明①声明数组:告诉计算机数据类型是什么②语法:数据类型[]数组名;③示例:int[]score;//C#成绩string[]name;//学生姓名(6)数组初始化①分配空间:告诉计算机分配几个格子②语法:声明数组并分配空间C#程序设计主讲教师:杨剑5数据类型[]数组名=new数据类型[大小];③示列:score=newint[30];avgAge=newint[6];name=newString[30];(7)数组赋值①赋值:向分配的格子里放数据②示例:score[0]=89;score[1]=79;score[2]=76;……③能不能一起赋值方法1:边声明边赋值int[]score={89,79,76};int[]score=newint[]{89,79,76};方法2:动态地从键盘录入信息并赋值for(inti=0;i30;i++){score[i]=int.parse(Console.ReadLine());}(8)示列:使用数组求平均值:对数据进行处理:计算5位学生的平均分int[]score={60,80,90,70,85};doubleavg;avg=(score[0]+score[1]+score[2]+score[3]+score[4])/5;//访问数组成员:使用“标识符[下标]”int[]score={60,80,90,70,85};intsum=0;doubleavg;for(intindex=0;indexscore.Length;index++){sum=sum+score[index];}avg=sum/score.length;(9)数组—小结C#程序设计主讲教师:杨剑6①通过在变量类型后添加一对方括号声明数组int[]MyArray1;int[,]MyArray2;②创建数组的示例int[]numbers=newint[5];int[,]numbers=newint[4,5];③创建类型为Object的数组object[]animals=newobject[100];④初始化数组int[]numbers={10,9,8,7,6,5,4,3,2,1,0};numbers[4]=5;⑤访问数组成员string[]animal={Mouse,Cat,Lion};animal[1]=“Dog;stringsomeAnimal=animal[2];(10)实践,一维数组的定义和使用。任务3:使用foreach对数组元素进行遍历。(15分钟)①使用foreach语句为数组中的每一个元素反复执行嵌入的代码②示例:int[]numbers={4,5,6,1,2,3,-2,-1,0};foreach(intiinnumbers){Console.WriteLine(i);}③实践,利用foreach对数组元素进行遍历。任务4:二维数组的定义和使用。(15分钟)(1)二维数组①二维数组的声明数据类型[,]数据名;如:int[,]a;②二维数组的初始化数据类型[,]数组名={{...},{...}....};Double[,]score={{78,76,87},{89,98,78}};③二维数组的使用Score[1][0]=93;C#程序设计主讲教师:杨剑7(2)实践,二维数组的定义和使用。3、案例演示:字符串任务5:掌握字符串及字符串方法的使用。(25分钟)(1)字符串①使用String对象存储字符串示例:Strings=有志者事竟成;②String类具有丰富的方法计算字符串的长度;连接字符串;比较字符串;提取字符串(2)实践,对文件名以及邮箱有效性进行检查。分析:①合法的文件名应该以.CS结尾②合法的邮箱名中至少要包含“@”和“.”,并检查“@”是否在“.”之前4、项目实现:任务6:用数组实现图片浏览器(35分钟)核心代码;放大图片:inthigh=Convert.ToInt32(pictureBox1.Height*1.2);pictureBox1.Height=high;intwidth=Convert.ToInt32(pictureBox1.Width*1.2);pictureBox1.Width=width;Middle();缩小图片inthigh=Convert.ToInt32(pictureBox1.Height/1.2);pictureBox1.Height=high;intwidth=Convert.ToInt32(pictureBox1.Width/1.2);pictureBox1.Width=width;Middle();图片居中:intw=splitContainer1.Panel2.Width;inth=splitContainer1.Panel2.Height;intpw=pictureBox1.Width;intph=pictureBox1.Height;intx=(w-pw)/2;inty=(h-ph)/2;Pointp=newPoint(x,y);pictureBox1.Location=p;添加图片:C#程序设计主讲教师:杨剑8openFileDialog1.Filter=图形文件(*.jpg)|*.jpg;DialogResultr=openFileDialog1.ShowDialog();if(r==DialogResult.OK){Photop=newPhoto(openFileDialog1.FileName);if(index5)album[index++]=p;else{MessageBox.Show(容量超限!);}}下一张图片:loc=(loc+1)%index;Photop=album[loc];if(p!=null){pictureBox1.Image=Image.FromFile(p.Path);this.Text=p.Title;}上一张图片:loc=(loc-1+index)%index;Photop=album[loc];if(p!=null){pictureBox1.Image=Image.FromFile(p.Path);this.Text=p.Title;}5、案例演示:索引器任务7:熟练掌握索引器的定义与使用。(35分钟)(1)索引器①索引器(indexer)是一种属性,它允许以数组的方式索引对象②语法[访问修饰符]数据类型this[数据类型标识符]{get{};set{};}③定义和调用索引器示例:Photo以Title属性表示照片C#程序设计主讲教师:杨剑9classPhoto{string_title;publicPhoto(stringtitle){this._title=title;}publicstringTitle{get{return_title;}}}Album将照片存放于数组photos中classAlbum{//该数组用于存放照片Photo[]photos;publicAlbum(intcapacity){photos=newPhoto[capacity];}publicPhotothis[intindex]{//带有int参数的Photo索引器get{//验证索引范围if(index0||index=photos.Length){Console.WriteLine(索引无效);returnnull;//使用null指
本文标题:项目7:集合、索引器和泛型——图片浏览器
链接地址:https://www.777doc.com/doc-4711072 .html