C#程序设计主讲教师:杨剑1项目12:文件操作及编程技术——记事本一、教学内容及要求能力培养:1、理解文件与流的区别,了解常用的操作流的类的功能。2、掌握文本文件读写方法。3、熟悉文件操作控件,掌握利用这些控件来打开或保存文件的实现方法。核心技能点:1、文本文件读写。2、文件操作控件使用。教学内容:1、项目介绍。任务1:记事本程序的介绍(5分钟)2、案例演示:文本文件的读写任务2:熟练进行文本文件的读写。(30分钟)如:实践,熟练进行文本文件的读写。3、案例演示:文件和目录操作任务4:掌握使用File类和Directory类进行文件和目录操作的方法。(10分钟)如:实践,熟练进行和文件和目录操作。4、项目实现:任务5:记事本程序的实现(45分钟)5、案例演示:读写二进制文件(45分钟)任务4:掌握使用BinaryReader和BinaryWriter类进行二进制文件操作的方法。(45分钟)如:实践,熟练进行二进制文件读写。6、课内实践:任务6:增加编辑菜单,实现剪切、复制、粘贴、查找和替换功能。(45分钟)二、教学重点、难点及解决办法教学重点:掌握文本文件读写方法教学方法:基于CDIO的课程改革,应用了CDIO教育模式。以“做中学”为出发点,实施“知识讲解案例化、课内课外协作化、实战演练一体化”的教学模式。由传C#程序设计主讲教师:杨剑2统的教师引导课堂转变为以学生为主体,课本中的知识点讲解转变为“项目”主导,将传统的课堂模式转变为了以实际经验为核心。三、教学设计1、教学进程工程化将教学内容按CDIO理念,以项目为核心,并结合课程内容设计了四个环节的内容,包括构思环节、设计环节、实现环节、运作环节,同时,在课程的教学过程中,主要采用“做中学”的教学理念来实现“教学做”一体化。以项目为载体,将抽象的知识融入到项目中,通过项目的学习将知识点分解,将“工程”教学思想体现在教学中,进而提高学生的学习效果。2、教学设计递进化根据“工程化”的思想,教学模式的设计呈递进化趋势,每一个教学项目的实现将分成四个部分来完成:任务的明确,实施方案的编写,项目的实施和项目的评价3、实践设计层次化在项目的实施过程中,主要组织层次化教学。在教学中,采取“基础实验”“综合实验”,“综合性课程设计”的设计。4、课程考核工程化考核以过程考核和工程验收测试相结合的方式进行。本门课程采取的是形成性考核方式,考试成绩由本门课程学习期间的多项过程成绩组合而成5、知识讲解案例化根据CDIO的思想,对知识点采取案例化教学法,6、课内课外协作化7、实战演练一体化为了让学生对所学课程加深理论知识,并能够将相关知识结合到实际应用中,学生需要自选一个相关主题进行综合项目的开发,提高综合应用能力。在这个环节中,学生是主体,教师主要负责引导和监控,学生需要在这个阶段发挥自身能力,以团队的形式完成项目,并由此锻炼学生的团队合作意识。四、教学过程1、项目介绍。任务1:记事本程序的介绍(5分钟)设计一个简单的MDI写字板程序,提供的功能包括:能创建新文档,也能打开和保存文件;能够设置文档的默认存盘路径;能够更改文档的格式和颜色;能够退出应用程序等。C#程序设计主讲教师:杨剑32、案例演示:文本文件的读写任务2:熟练进行文本文件的读写。(30分钟)(1)为什么需要操作文件(2)文件的应用场合(3)如何读写文本文件(4)创建文件流①需要引入System.IO命名空间---提供文件操作的类②文件流用于(FileStream类)读写文件(5)创建写入器①文本文件写入器:StreamWriterC#程序设计主讲教师:杨剑4②文本文件读取器:StreamReader(6)读取文本文件(7)文本文件不使用文件流的读写①StreamWriter允许直接将字符串写入文件②StreamReader允许直接读取文件内容(8)实践,熟练进行文本文件的读写。将数据写入文本文件C#程序设计主讲教师:杨剑53、案例演示:文件和目录操作任务4:掌握使用File类和Directory类进行文件和目录操作的方法。(10分钟)(1)文件操作①文件操作还包括拷贝、移动、删除等等②.NET提供一个File类,提供各种操作文件方法(2)目录操作Directory类提供对文件夹的拷贝、移动、删除等操作C#程序设计主讲教师:杨剑6(3)实践,熟练进行和文件和目录操作。4、项目实现:任务5:记事本程序的实现(45分钟)设计一个简单的MDI写字板程序,提供的功能包括:能创建新文档,也能打开和保存文件;能够设置文档的默认存盘路径;能够更改文档的格式和颜色;能够退出应用程序等。核心操作:(1)首先设计主窗体设计,将主窗体的IsMdiContainer属性设置为true,然后添加以下控件:MenuStrip、StatusStrip、OpenFileDialog、SaveFileDialog、FontDialog、ColorDialog。其中,OpenFileDialog和SaveFileDialog的Filter属性设置为“文本文件(*.txt)|*.txt|RTF文件|*.rft|所有文件(*.*)|*.*”。MenuStrip的Name属性设置为“MainMenu”,。(2)添加并设计“选项设置”窗体SetDialog,用来设置文档的默认存盘位置。(3)添加并设计“文档”窗体DocForm,用来显示和编辑文档。在该窗体中添加一个RichTextBox控件,其Name属性设置为“txtSource”,Dock属性设置为“Fill”。(4)在“选项设置”窗体SetDialog中,定义公共属性以返回所设置的默认文档路径,并编写各按钮的Click事件方法。其主要代码如下:publicstringdocPosistion//公共属性,返回所设置的默认文档路径{get{returntxtPosition.Text;}}privatevoidbtnOk_Click(objectsender,EventArgse){this.Hide();//暂时隐藏当前对话框}privatevoidbtnCancel_Click(objectsender,EventArgse){txtPosition.Text=;C#程序设计主讲教师:杨剑7this.Hide();}(5)在新添加的“文档”窗体DocForm中定义一个公共属性Source,以便主窗体的菜单命令通过该属性来操作RichTextBox控件,实现文档编辑、显示、存储、设置格式和颜色等功能。代码如下:publicRichTextBoxSource{get{returntxtSource;}set{txtSource=value;}}(6)在主窗体类中定义3个私有字段:privateintwCount=0;//窗体记录数器,对已创建的“文档”窗体进行记数privatestringinitialPos=;//打开或保存文档时的默认位置privateDocFormdoc;//文档窗体对象(7)为各菜单命令编写Click事件方法,能够设置默认存盘路径、新建文档、打开文档、保存文档、设置文档字体和颜色格式、退出等。代码如下://新建文档privatevoidNewFile_Click(objectsender,EventArgse){wCount++;//窗体记数器的值增加1doc=newDocForm();//创建“文档”窗体对象doc.MdiParent=this;//设置主窗口为“文档”窗体的父窗口doc.Text=文档+wCount;//设置“文档”窗体的标题doc.Show();//显示“文档”窗体}//设置打开或保存文档时的默认路径privatevoidOptionMenu_Click(objectsender,EventArgse){SetDialogdlg=newSetDialog();//创建“选项设置”对话框对象C#程序设计主讲教师:杨剑8dlg.ShowDialog();//显示“选项设置”对话框initialPos=dlg.docPosistion;//获得已设置的默认文档位置dlg.Close();//关闭“选项设置”对话框openFileDialog1.InitialDirectory=initialPos;//设置“打开”对话框的默认文件夹saveFileDialog1.InitialDirectory=initialPos;//设置“另存为”对话框的默认文件夹}//打开文档privatevoidOpenFile_Click(objectsender,EventArgse){if(openFileDialog1.ShowDialog()==DialogResult.OK)//显示“打开”对话框{RichTextBoxStreamTypefileType;switch(openFileDialog1.FilterIndex)//判断文档类型{case1:fileType=RichTextBoxStreamType.PlainText;break;case2:fileType=RichTextBoxStreamType.RichText;break;default:fileType=RichTextBoxStreamType.UnicodePlainText;break;}wCount++;doc=newDocForm();doc.MdiParent=this;doc.Text=openFileDialog1.FileName;//设置“文档”窗体的标题//加载文档,输出到RichTextBox控件中doc.Source.LoadFile(openFileDialog1.FileName,fileType);doc.Show();//显示“文档”窗体}}//保存文档privatevoidSaveFile_Click(objectsender,EventArgse){if(saveFileDialog1.ShowDialog()==DialogResult.OK)//显示“另存为”对话框{RichTextBoxStreamTypefileType;switch(saveFileDialog1.FilterIndex){C#程序设计主讲教师:杨剑9case1:fileType=RichTextBoxStreamType.PlainText;break;case2:fileType=RichTextBoxStreamType.RichText;break;default:fileType=RichTextBoxStreamType.UnicodePlainText;break;}//把RichTextBox控件中的文本输出并保存doc.Source.SaveFile(saveFileDialog1.FileName,fileType);}}//修改“文档”窗口已选中的文档的字体privatevoidfontMenuItem_Click(objectsender,EventArgse){if(fontDialog1.ShowDialog()==DialogResult.OK&&doc!=null){doc.Source.SelectionFont=fontDialog1.Font;}}//修改“文档”窗口已选中的文档的颜色privatevoidcolorMenuItem_Click(objectsender,EventArgse){if(colorDialog1.ShowDialog()==DialogResult.OK&&doc!=null){doc.Source.SelectionColor=colorDialog1.Color;}}//退出并终止应用程序运行privatevoidcloseFile_Click(objectsender,EventArgse){Application.Exit();}5、案例演示:读写二进制文件(45分钟)任务4:掌握使用BinaryReader和B