




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 二0一四 二0一五 学年第 一 学期计算机科学与技术学院课程设计报告书 题 目: 记事本程序 课程名称: 可视化编程 班 级: 学 号: 姓 名: 指导教师: 张 志 辉二0一四年 十二月十日 目录1、 课程设计的目的与要求22、 题目说明22.1程序开发景.42.2开发工绍.42.3设计流程图.43、 总体设计54、 详细说明64.1 系统实施.64.2 设计步骤124.3控件属性135、 遇到的问题和解决法.146、 课程设计总结.16七、 附录17 7.1 程序完整码17 7.2 参考文献21 一、课程设计的目的与要求 目的: 1、熟悉.NET开发环境,能够使用C#语言在.NET平台上
2、独立设计、开发WINDOWS应用程序。 2、掌握C#语言的异常处理技术,能够使用.NET各种调试方法调试代码,掌握帮助的使用方法。 3、掌握常用控件以及控件的常用属性的使用方法。 要求: 1、程序中应有不少于100300行的自行编写的代码,代码需书写详细注释。 2、软件界面美观大方,操作简洁易用,功能完备可靠。 3. 通过c#课程设计,使学生能将学到的面向对象的程序设计思想用到具体的工作和学习中,加深对类和对象的理解,要求学生能够对现实生活中许多具体事物抽象出类,并掌握继承与派生,基类、虚方法和抽象方法和多态性的概念。二、题目说明 创建支持多文档的记事本,每个子窗口都应包含一个Rich Tex
3、t Box。MDI父窗口具有“格式”菜单,用于子菜单控制活动子窗口中文本的大小、字体和颜色。每个子菜单至少含有三个选项极其快捷键。另外,父菜单还含有“文件”菜单,菜单项有“新建”(创建新的子窗口)、“关闭”(关闭活动子窗体)和“退出”(退出应用程序)。父窗口还有“窗口”菜单显示一系列打开的子窗口及其布局选项。 参考界面如下: 图1主要实现界面2.1程序开发背景 为了满足用户对于记事本的一些基础需求,主要包括“打开”记事本,“新建”、“字体编辑”及保存等功能,所以在老师与自己查阅书籍的情况下,选择编写记事本这一题目。2.2开发工具介绍C#(读做 "C sharp",中文译音暂
4、时没有.专业人士一般读"C sharp",现在很多非专业一般读"C井"。 C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。 但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET windows网络框架的主角。
5、2.3程序设计流程图三、总体设计总体设计思路主要是为了实现用户打开记事本时,通过新建新的文本文档,来记事。用户可以执行的操作有,录入文本后,对文本的字体、颜色、格式等进行编辑,同时还可以进行撤消、剪切、粘贴、全选等操作,是用户方便使用。待文字及其格式做好后,用户可以保存,或者另存为到自己想要的位置。四、详细说明用户可以在记事本里通过新建、编辑、保存等功能实现正常记事本的功能。还可以通过格式里面的字体、颜色等来编辑文字。同时编辑里面的撤销、剪切、粘贴等功能也从不同层面上满足用户的一定需求。通过程序所要实现的功能可以看出,该程序中有文件、格式等主要对象,所以我们可以通过定义生成子窗体、字体窗体、颜
6、色窗体等来实现记事本文字的编辑部分,还要定义类,完成窗体间的转换。4.1 系统实施1、 文件->新建2、 功能简介:通过点击文件下的新建功能,可以弹出多个文本框,方便用实现记事功能。界面截图如下: 图2新建实现效果 关键代码如下: /新建 private void toolStripButton1_Click(object sender, EventArgs e) if (baocun = false) /未保存 if (richTextBox1.Text != "") /确保有内容 if (MessageBox.Show("内容不为空,且未保存,是否保存&
7、quot;, "警告?", MessageBoxButtons.OKCancel) = DialogResult.OK) ; SaveFile(); 2、文件->另存为 功能简介:通过点击文件下的另存为功能,可以弹出窗口,给出用户可以保存文件的位置,方便用户实现保存文本不丢失的功能。 界面截图如下:图3另存为实现效果关键代码如下: /另存为 private void 另存为aToolStripMenuItem_Click(object sender, EventArgs e) filepath = "" SaveFile(); 3、文件->打
8、开功能简介:在新建文本后,通过点击文件下的打开功能,用户可以打开路径文位置的文件。方便随时进行编辑。 界面截图如下:图4页面设置实现效果 关键代码如下: /打开 private void toolStripButton2_Click(object sender, EventArgs e) if (openFileDialog1.ShowDialog() = DialogResult.OK) filepath = openFileDialog1.FileName; /记录打开的文件名 /实例化一个字节流的对象 StreamReader sr = new StreamReader(filepath
9、, Encoding.Default); richTextBox1.Text = sr.ReadToEnd(); /将流中的字符写到文本框中 sr.Close(); /关闭字节流 this.Text = "蓝色风暴记事本" + filepath; /设置窗体标题 baocun = true; /设置文档是已保存 4、文件->退出功能简介:在用户输入文字途中,若要退出当前窗口,可以点击文件下的退出功能,会弹出一个提示框,提醒用户是否确认退出并保存文档。 界面截图如下:图5退出功能 关键代码如下: /退出 private void 退出ToolStripMenuItem_
10、Click(object sender, EventArgs e) if (baocun = false) if (richTextBox1.Text != "") if (MessageBox.Show("当前文本内容不为空,是否保存", "警告", MessageBoxButtons.OKCancel) = DialogResult.OK) if (SaveFile() /如果保存成功 Application.Exit(); /退出 else Application.Exit(); /退出 5、工具->字体 功能简介:在用户
11、输入文字时,若想对内容进行编辑,可以通过字体菜单来实现。字体菜单主要有自动换行、字体、颜色等功能,用户可以有选择的使用。界面截图如下:图6编辑字体实现效果 关键代码如下: /字体 private void 字体ToolStripMenuItem_Click(object sender, EventArgs e) /关联起来 fontDialog1.Font = richTextBox1.Font; fontDialog1.Color = richTextBox1.ForeColor; if (fontDialog1.ShowDialog() = DialogResult.OK) richTex
12、tBox1.Font = fontDialog1.Font; richTextBox1.ForeColor = fontDialog1.Color; baocun = false; 6、帮助->关于功能简介:在用户想要了解记事本版本相关信息时,可以通过帮助下的关于框进行了解。界面截图如下:图7编辑颜色实现效果 关键代码如下: /关于 private void 关于ToolStripMenuItem_Click(object sender, EventArgs e) AboutBox1 ab = new AboutBox1(); ab.Show(); 以上就是该记事本运行可以实现的功能的大
13、部分介绍,希望用户可以方便简单的运用起来。4.2设计步骤1.设置全局变量(路径、保存)。2.用字节流实现打开、保存、和新建。3.实现菜单条、工具条、右键菜单的复制、剪切、粘贴、全选、撤销功能。4.实现对字体的设置。5.实现状态栏的字数统计。6.实现在线帮助和状态栏的链接操作。7.实现退出和关闭事件的操作。8.实现对象的查找和关于对话框的创建。4.3控件属性Main 及其控件的属性设置名称属性属性值MainText蓝色风暴记事本Icon图标Tool strip Container在父类容器中停靠,并隐藏左右栏Menu Strip 1文件(F)/新建/打开/保存/编辑(E)/剪切/复制/粘贴/工具
14、(T)/字体/查找/撤销/帮助(H)/在线帮助/关于/Tool Strip 1Display StyleImage And Textimage工具图标Tool Strip 2Display StyleImage And Textimage工具图标Tool Strip 3Display Style TextText Box输入框Status Strip 1Text Box当前输入字数为:NameMiddleRich Text Box 1停靠方式在父容器中Detect Ur lsTrueContext Menu Strip 1Context MenuContext Menu Strip 1Open
15、 File Dialog 1Text打开Save File Dialog 1Text保存Font Dialog 1Text字体菜单栏边框截图,如下:部分控件具体属性,如下:名称属性属性值名称属性属性值Menu Strip 1VisibleFalseMun CopyText复制(C)Save FileText文件(F)Short cut KeyCTRL +CMerge ActionMatch OnlyMun PasteText粘贴(V)Save CopyEnabledFalseShort cut KeyCTRL +VSave CloseText关闭(C)Save DeleteEnabledFal
16、seMerge ActionInsertText删除(D)Merge Index2Short cut KeyDeleteMun SaveText保存(S)Mun FindText查找(Z)Short cut KeyCTRL +SShort cut KeyAlt +ZMerge ActionInsertMun ReplaceText撤销(S)Merge Index4Short cut KeyAlt +SMun EditText编辑(E)Mun Select ALLText全选(A)Merge ActionInsertShort cut KeyCTRL +AMerge Index1Mun Word
17、 WrapText自动换行Tool Strtip1Merge ActionInsertCheckedTrueMerge Index6Check ClickTrue五、遇到的问题和解决方法例如:1.在没有提前声明System.IO的情况下,使用字节流函数,在设置完字节流之后,没有及时关闭字节流。这样的直接后果就是,在运行程序打开文本时出现了乱码。2.在调用方法 Save File()时,有一个地方漏掉了返回值,后再运行代码时一直报错,直到看过提示之后,在明白过来。3.在用代码实现剪切、复制、粘贴、删除时,起初直接按照自己的思路用代码进行编辑,结果各种麻烦来了,要么没有实现预期功能,要么代码冗长,
18、多步编辑时,错误频出,后来在网上查阅相关资料之后,才明白其实可以直接调用微软提前写好的类快捷语句Cut、Copy、Paste等来实现,这样方便、快捷,效率和准确率高。4.因为在窗体设计时,对控件命名的不规范,直接导致了后期在Click事件方法对应时,出现了事件与方法对应混乱,找寻繁琐。5.在对鼠标右键快捷菜单设置时把Context Menu Strip控件在窗体上的所有属性值都编辑好了,却发现无论程序怎么运行,改控件都不起作用,后来查阅资料后。才明白Context Menu Strip与tool Strip及Menu Strip属性有区别,还要在属性框添加Context Menu Strip属
19、性框,才能真正被应用。6.在对VS文件保存时,因为误操作更改了文件保存路径,结果重新把文件移动到工作文件夹时,系统提示打开文件错误,找不到原始路径文件。后来只好再重新编辑。7.在对软件发布之后,应用程序出现图标丢失问题,在icon属性值上无论怎么添加图片路径都无法导入应用程序图标,后来上网查阅之后才明白,原来VS应用程序图标是应该在项目文件/属性/应用程序下进行添加的。8.在应用筛选器对文件进行筛选时,因为命名错误遗漏了“|”符号,这个细节问题直接导致筛选命名错误,无法进行。9.在添加“关于对话框”时,不了解系统自带编辑框属性,致使程序出现意外空语句错误。10.在运行过程中,会随机地出现未处理
20、“System.NullReferenceException”类型的异常出现在未知模块中及信息,未将对象引用设置到对象的实例,或出现未处理的“System.ArgumentException”类型的异常出现在system.windows.forms.dll 中。”这样的两个异常错误,点击中断后则会出现提示“没有可用的当前代码”。11.据题目要求,需在运行时显示状态栏,这将更好地达多文档的思想。我们采用了加入菜单查看,添加名称为状态的子菜单。双击后在其Click事件中加入它的执行语句:this.statusBar1.Text=this.ActiveMdichile.Text;这样运行后就可以通过
21、点击查看菜单中的状态栏来查看目前处于活动状态的文档是所建立的第几个文档。六、课程设计总结 在此次课程设计中,我设计的记事本基本上实现了记事本的相关功能,比如文档的编辑、修改、保存、打开等功能。在设计初期由于对VS库中原有类的不了解,导致编辑途中出现了各种各样的问题。虽然这些问题最终都得以解决,程序也能较好的应用。但是依旧存在一些小问题待解决:1.在文件保存时,未能像微软开发的记事本一样,默认保存类型text,这样的后果就是不能用记事本打开自己生成的文件,并且每次还得指定用微软记事本打开。2.在查找功能上使用了单一的查找代码,不能及时完成对所有相同结果的同步查找,介于此,替换功能就无法执行下去了
22、。3.在字体编辑方面,虽然较之微软记事本多了“颜色调整”功能,但是在对部分对象进行编辑时,执行后默认对全部对象做出了调整,造成这样的原因是:在将方法用代码实现时,思想不够严密,代码结构简单单一造成的,这在以后的设计中一定要引以为戒,时刻保持思想谨慎、代码逻辑严密。当然,此记事本也并非一无是处,相比微软记事本,还是有属于自己特色的方面的。比如:1.在记事本状态栏用“计数”取代了“定位”,这样方便了解当前输入字数,比单纯定位好多了。2.记事本加入了“工具栏”这项,经常用到的工具可以快速启用。3.对右键菜单个性化设置,提高操作效率。4.字体编辑项加入了颜色选择功能,更加方便。 整个设计的过程中,我们
23、不仅仅只是经历了是失败与成功所带来的启迪,我们还体会到了一种很重要的东西,那就是团体的力量。设计中,我有不懂得地方就请教老师和同学,可以说在大家的帮助下我才得以完整的呈现出我的成果。 这次课程设计让我学到了很多东西。对图形化设计有了更具体的认识,让我们复习了以前学过的知识,也让我们对图形化设计更深刻的理解。团队精神的重要性。总之,这次的设计使我受益颇深。7、 附录7.1程序代码 如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.D
24、rawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;namespace hu_Node public partial class Main : Form string filepath = "" /文件路径 bool baocun = false; /当前文档保存状态 public Main() InitializeComponent(); /打开 private void toolStripButton2_Click(object sender, Eve
25、ntArgs e) if (openFileDialog1.ShowDialog() = DialogResult.OK) filepath = openFileDialog1.FileName; /记录打开的文件名 /实例化一个字节流的对象 StreamReader sr = new StreamReader(filepath, Encoding.Default); richTextBox1.Text = sr.ReadToEnd(); /将流中的字符写到文本框中 sr.Close(); /关闭字节流 this.Text = "蓝色风暴记事本" + filepath; /
26、设置窗体标题 baocun = true; /设置文档是已保存 /保存 private void toolStripButton3_Click(object sender, EventArgs e) SaveFile(); /保存文档 返回是否保存成功 private bool SaveFile() if (filepath = "") /未保存的文档 if (saveFileDialog1.ShowDialog() = DialogResult.OK) filepath = saveFileDialog1.FileName; StreamWriter sw = new S
27、treamWriter(filepath, false, Encoding.Default); sw.WriteLine(richTextBox1.Text); /从文本框中得到内容 sw.Flush(); sw.Close(); baocun = true; this.Text = "蓝色风暴记事本?" + filepath; /设置窗体标题 return true; /保存成功 try-catch else return false; else/不为空 StreamWriter sw = new StreamWriter(filepath, false, Encodin
28、g.Default); sw.WriteLine(richTextBox1.Text); /从文本框中得到内容 sw.Flush(); sw.Close(); baocun = true; return true; /保存成功 /新建 private void toolStripButton1_Click(object sender, EventArgs e) if (baocun = false) /未保存 if (richTextBox1.Text != "") /确保有内容 if (MessageBox.Show("内容不为空,且未保存,是否保存"
29、, "警告?", MessageBoxButtons.OKCancel) = DialogResult.OK) ; SaveFile(); /把所有的东西全部置为初始值 richTextBox1.Text = "" this.Text = "蓝色风暴记事本" baocun = false; filepath = "" /另存为 private void 另存为aToolStripMenuItem_Click(object sender, EventArgs e) filepath = "" Sa
30、veFile(); /剪切 private void toolStripButton4_Click(object sender, EventArgs e) richTextBox1.Cut(); baocun = false; /复制 private void toolStripButton5_Click(object sender, EventArgs e) richTextBox1.Copy(); /粘贴 private void toolStripButton6_Click(object sender, EventArgs e) richTextBox1.Paste(); baocun
31、= false; /全选 private void 全选ToolStripMenuItem_Click(object sender, EventArgs e) richTextBox1.SelectAll(); /字体 private void 字体ToolStripMenuItem_Click(object sender, EventArgs e) /关联起来 fontDialog1.Font = richTextBox1.Font; fontDialog1.Color = richTextBox1.ForeColor; if (fontDialog1.ShowDialog() = Dial
32、ogResult.OK) richTextBox1.Font = fontDialog1.Font; richTextBox1.ForeColor = fontDialog1.Color; baocun = false; /自动换行 private void toolStripButton7_Click(object sender, EventArgs e) if (richTextBox1.WordWrap = false) richTextBox1.WordWrap = true; else richTextBox1.WordWrap = false; /内容改变的时候发生(状态栏) pr
33、ivate void richTextBox1_TextChanged(object sender, EventArgs e) tsslbl_num.Text = richTextBox1.Text.Length.ToString(); baocun = false; private void 在线帮助ToolStripMenuItem_Click(object sender, EventArgs e) System.Diagnostics.Process.Start(" /退出 private void 退出ToolStripMenuItem_Click(object sender
34、, EventArgs e) if (baocun = false) if (richTextBox1.Text != "") if (MessageBox.Show("当前文本内容不为空,是否保存", "警告", MessageBoxButtons.OKCancel) = DialogResult.OK) if (SaveFile() /如果保存成功 Application.Exit(); /退出 else Application.Exit(); /退出 /关闭时发生窗体 private void Main_FormClosing(object
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吉林职业技术学院《文字学与汉字教育》2023-2024学年第二学期期末试卷
- 昆明理工大学津桥学院《过程控制系统》2023-2024学年第二学期期末试卷
- 陕西中医药大学《室内设计与实践》2023-2024学年第二学期期末试卷
- 华中农业大学《公司金融》2023-2024学年第二学期期末试卷
- 湖南吉利汽车职业技术学院《土木工程施工与概预算原理》2023-2024学年第二学期期末试卷
- 广东云浮中医药职业学院《园艺生态学》2023-2024学年第二学期期末试卷
- 长春建筑学院《中学语文微型课训练》2023-2024学年第二学期期末试卷
- 东南大学成贤学院《果树栽培学各论》2023-2024学年第二学期期末试卷
- 扎兰屯职业学院《高等化工热力学》2023-2024学年第二学期期末试卷
- 忻州职业技术学院《地理信息系统原理与方法》2023-2024学年第二学期期末试卷
- 网络营销讲义网络营销产品策略课件
- 《小型混凝土预制件标准化生产管理办法》
- 六年级上册英语教案-Culture 2 Going Green 第二课时 广东开心英语
- 警察叔叔是怎样破案的演示文稿课件
- 青年教师个人成长档案
- 2021译林版高中英语选择性必修三课文翻译
- 2022年华中科技大学博士研究生英语入学考试真题
- 《网店运营与管理》整本书电子教案全套教学教案
- 打印版 《固体物理教程》课后答案王矜奉
- 中考《红星照耀中国》各篇章练习题及答案(1-12)
- Q∕GDW 11612.43-2018 低压电力线高速载波通信互联互通技术规范 第4-3部分:应用层通信协议
评论
0/150
提交评论