1、课程设计报告课程设计名称: c#程序设计 系部名称:中印计算机软件学院 学生姓名: 尹帅 班 级: 13软件一班 学 号: 20130100038 成 绩: 指导教师: 武珍珍 开课时间:2014-2015学年第 二 学期一、 设计目的和要求这个课题是一个关于文本编辑器的小程序,运用一些简单的记事本的基本操作功能来实现的。该程序利用C#程序编写,在Visual Studio 2010的环境下进行调试运行的。1、 熟悉开发环境,能够使用C#语言在独立设计、开发WINDOWS应用程序。2、 掌握C#语言的异常处理技术,能够使用各种调试方法调试代码,掌握帮助的使用方法。3、掌握握常用控件以及控件的常
2、用属性的使用方法。4、界面要做到简洁易懂,具有人性化等特点。5、程序没有在使用过程中不存在任何的问题。6、掌握并熟练使用RichTextBox、Button、MenuTrip控件。二、主要功能描述1. 程序的基本结构 操作界面的主窗口为文本编辑器的主入口,类似于记事本的形式,菜单栏要如下的几项(),另外还有两个简单的toolstripe式的图片按钮,分别是新建和保存。当点击新建的时候,会弹出我们将要编辑的文档文本窗口,这是我们编写文字的地方。书写完毕后,要先确认是否保存此文件夹,这样就不会发生自己所编辑的内容会丢失。2.程序的主要技术(1)文件操作能够实现:新建文档、保存文档、打开文档、关闭文
3、档、页面设置等。(2)编辑操作能够实现对文本内容的选择、剪切、复制、粘贴、查找、替换等。(3)格式操作能够实现对文本内容的字体、颜色等设置。(4)查看操作能够实现状态栏的显示和隐藏。(5)帮助操作能够显示版本信息等。三、主要算法流程图1. 界面设计打开Visual Studio 2010开发工具,新建一个Windows应用程序,然后在窗体上依次放置1个MenuStrip菜单栏和1个ToolStrip工具栏,如图4-1所示(设置好属性后)。图4-1 编辑器用户界面 运行程序,新建文档。如图4-2所示。图4-2新建文本文档运行程序,设置字体的大小和粗细,以及字体的颜色。如图4-3所示图4-3 字体
4、大小及颜色 图4-4 菜单编辑的功能四 关键源代码编程步骤private void 格式ToolStripMenuItem_Click(object sender, EventArgs e) /通过“新建”菜单项添加子窗口 private void 新建ToolStripMenuItem_Click(object sender, EventArgs e) /创建子窗体 记事本 f = new 记事本(); f.MdiParent = this; count+; f.Text = 新建文本 + count; f.Show(); private void Form1_Layout(object s
5、ender, LayoutEventArgs e) this.LayoutMdi(MdiLayout.ArrangeIcons); private void 打开ToolStripMenuItem_Click(object sender, EventArgs e) /在子窗口中打开文件 CheckSave(); if (openFileDialog1.ShowDialog() = DialogResult.OK) private void CheckSave() if (记事本.ActiveForm.Text != ) if (MessageBox.Show(是否保存当前文件?, 确认, Me
6、ssageBoxButtons.OKCancel) = DialogResult.OK) /MySaveFile(); private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) if (MessageBox.Show(你确认要退出吗?, 提示, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes) this.Close(); private void 关于ToolStripMenuItem_Click(object sender, E
7、ventArgs e) MessageBox.Show(每天都要开心!); private void toolStripButton1_Click(object sender, EventArgs e) 记事本 f = new 记事本(); f.MdiParent = this; count+; f.Text = 新建文本 + count; f.Show(); private void 另存为ToolStripMenuItem_Click(object sender, EventArgs e) /实现另存为功能 this.saveFileDialog1.Filter = txt files(*
8、.txt)|*.txt|rdf files(*.rdf)|*.rdf|all files(*.*)|*.*; this.saveFileDialog1.FilterIndex = 1; if (this.saveFileDialog1.ShowDialog() = DialogResult.OK) filename = this.saveFileDialog1.FileName; try richTextBox1.LoadFile(filename, RichTextBoxStreamType.PlainText); catch if (filename != ) richTextBox1.S
9、aveFile(filename, RichTextBoxStreamType.PlainText); private void 全选ToolStripMenuItem_Click(object sender, EventArgs e) MySaveFile(); private void MySaveFile() if (saveFileDialog1.ShowDialog() = DialogResult.OK) richTextBox1.SaveFile(saveFileDialog1.FileName); private void CheckSave() /提醒用户确认保存 if (记
10、事本.ActiveForm.Text != ) if (MessageBox.Show(是否保存当前文件?, 确认, MessageBoxButtons.OKCancel) = DialogResult.OK) MySaveFile(); private void 打开OToolStripMenuItem_Click(object sender, EventArgs e) /实现打开功能 CheckSave(); if (openFileDialog1.ShowDialog() = DialogResult.OK) richTextBox1.LoadFile(openFileDialog1.F
11、ileName, RichTextBoxStreamType.PlainText); private void 页面设置ToolStripMenuItem_Click(object sender, EventArgs e) /创建页面设置对话框 PageSetupDialog my = new PageSetupDialog(); my.Document = printDocument1; try my.ShowDialog(); catch private void 剪切ToolStripMenuItem_Click(object sender, EventArgs e) /实现剪切功能 i
12、nt CurPosition = richTextBox1.SelectionStart; Clipboard.SetDataObject(richTextBox1.SelectedText); richTextBox1.Text = richTextBox1.Text.Substring(0, CurPosition) + richTextBox1.Text.Substring(CurPosition+richTextBox1.SelectedText.Length); richTextBox1.SelectionStart = CurPosition; private void 复制Too
13、lStripMenuItem_Click(object sender, EventArgs e) /实现复制功能 Clipboard.SetDataObject(richTextBox1.SelectedText); private void 粘贴ToolStripMenuItem_Click(object sender, EventArgs e) /实现粘贴功能 IDataObject idata = Clipboard.GetDataObject(); if (idata.GetDataPresent(DataFormats.Text) string ClipBoardStr = (str
14、ing)idata.GetData(DataFormats.Text); int CurPosition = richTextBox1.SelectionStart; richTextBox1.Text = richTextBox1.Text.Substring(0, CurPosition) + ClipBoardStr + richTextBox1.Text.Substring(CurPosition); richTextBox1.SelectionStart = CurPosition + ClipBoardStr.Length; private void 删除ToolStripMenu
15、Item_Click(object sender, EventArgs e) /实现删除功能 int CurPosition = richTextBox1.SelectionStart; Clipboard.SetDataObject(richTextBox1.SelectedText); richTextBox1.Text = richTextBox1.Text.Substring(0, CurPosition) + richTextBox1.Text.Substring(CurPosition + richTextBox1.SelectedText.Length); / richTextB
16、ox1.SelectionStart = CurPosition; private void 字体ToolStripMenuItem_Click(object sender, EventArgs e) /创建字体对话框 fontDialog1.ShowDialog(); richTextBox1.SelectionFont = fontDialog1.Font; private void 颜色YToolStripMenuItem_Click(object sender, EventArgs e) /创建颜色对话框 colorDialog1.ShowDialog(); richTextBox1.
17、SelectionColor = colorDialog1.Color; private void 撤消ToolStripMenuItem_Click(object sender, EventArgs e) /实现撤消功能 if (this.richTextBox1.CanUndo = true) this.richTextBox1.Undo(); this.richTextBox1.ClearUndo(); private void 全选AToolStripMenuItem_Click(object sender, EventArgs e) /全选文本内容 this.richTextBox1
18、.SelectAll(); private void 打印PToolStripMenuItem_Click(object sender, EventArgs e) /创建打印对话框 PrintDialog p = new PrintDialog(); p.Document = printDocument1; if (p.ShowDialog() = DialogResult.OK) try printDocument1.Print(); catch private void 自动换行WToolStripMenuItem_Click(object sender, EventArgs e) /实现
19、自动换行功能 richTextBox1.WordWrap = 自动换行WToolStripMenuItem.Checked; private void richTextBox1_SelectionChanged(object sender,EventArgs e) 五、 运行结果分析和总结 程序运行调试成功,各项功能都能够准确的实现完成。通过本次的课程设计,让我学会了把书本上的知识用到了实际中来。虽然在这一周中一直沉浸在课程设计中,有的问题一直到了最后才被解决,虽然现在还留有一个问题,但是我认为这未必就不是好事,它的存在激发了我继续深入学习c#开发程序的热情,我会更加努力的去探索,去深入的剖析
20、。这样能锻炼我的意志,磨练我的耐心,失败是成功之母,这话一点都没错,没有失败就没有成功。让我没有失去信心的是关怀我们的老师,当我们有了问题和疑问,老师就很耐心的给予讲解,让我们有了一个良好的学习氛围。当然同学之间的互相帮助也是不容护忽视的,同时也证实了那句话“团结就是力量”。还有让我学会了利用c#的windows程序可以做出这样的小系统,以前只会用c#编写控制台程序,现在让我懂得了如何利用c#来编写窗体代码,我很开心。回顾此次课程设计感觉收获很大,不仅巩固了以前所学的知识,而且学到了很多书本上学不到的东西。通过这次课程设计使我们懂得了理论和实际相结合的重要性,只有把理论和实际相结合,从理论中得出结论,才能真正为社会服务。六、 遇到的问题问题:未考虑到生成文档窗体在主窗体中的显示解决办法:在参照样例程序的时候,发现文档是显示在主窗体内部,结合自己的所学,发现设置主窗体的属性记事本 f = new 记事本(); f.MdiParent = this; count+; f.Text = 新建文本 + count;设置成Mdiparent属性即可。七、参考文献1郑阿奇、梁敬东、钱晓军等,c#实用教程,电子工业出版社,2009年2 钱雪忠、黄学光等,数据库原理及应用,北京邮电大学出版社,2005年9 / 9