课程设计
课程设计名称: c#程序设计
系部名称:中印计算机软件学院
学生姓名: 尹帅
班 级: 13软件一班
学 号: 20130100038
成 绩:
指导教师: 武珍珍
开课时间:2014-2015学年第 二 学期
1、设计目的与要求
这个课题是一个关于文本编辑器的小程序,运用一些简单的记事本的基本操作功能来实现的。该程序利用C#程序编写,在Visual Studio 2010的环境下进行调试运行的。
1、熟悉开发环境,能够使用C#语言在独立设计、开发WINDOWS应用程序。
2、掌握C#语言的异常处理技术,能够使用各种调试方法调试代码,掌握帮助的使用方法。
3、掌握握常用控件以及控件的常用属性的使用方法。
4、界面要做到简洁易懂,具有人性化等特点。
5、程序没有在使用过程中不存在任何的问题。
6、掌握并熟练使用RichTextBox、Button、MenuTrip控件。
二、主要功能描述
1. 程序的基本结构
操作界面的主窗口为文本编辑器的主入口,类似于记事本的形式,菜单栏要如下的几项(
),另外还有两个简单的toolstripe式的图片按钮,分别是新建和保存。当点击新建的时候,会弹出我们将要编辑的文档文本窗口,这是我们编写文字的地方。书写完毕后,要先确认是否保存此文件夹,这样就不会发生自己所编辑的内容会丢失。
2.程序的主要技术
(1)文件操作能够实现:新建文档、保存文档、打开文档、关闭文档、页面设置等。
(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 sender, 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("是否保存当前文件?", "确认", MessageBoxButtons.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, EventArgs 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(*.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.SaveFile(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 (记事本.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.FileName, 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)
{
//实现剪切功能
int 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 复制ToolStripMenuItem_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 = (string)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 删除ToolStripMenuItem_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);
// richTextBox1.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.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.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)
{ //实现自动换行功能
richTextBox1.WordWrap = 自动换行WToolStripMenuItem.Checked;
}
private void richTextBox1_SelectionChanged(object sender,EventArgs e)
}
5、运行结果
和总结
程序运行调试成功,各项功能都能够准确的实现完成。
通过本次的课程设计,让我学会了把书本上的知识用到了实际中来。虽然在这一周中一直沉浸在课程设计中,有的问题一直到了最后才被解决,虽然现在还留有一个问题,但是我认为这未必就不是好事,它的存在激发了我继续深入学习c#开发程序的热情,我会更加努力的去探索,去深入的剖析。这样能锻炼我的意志,磨练我的耐心,失败是成功之母,这话一点都没错,没有失败就没有成功。让我没有失去信心的是关怀我们的老师,当我们有了问题和疑问,老师就很耐心的给予讲解,让我们有了一个良好的学习氛围。当然同学之间的互相帮助也是不容护忽视的,同时也证实了那句话“团结就是力量”。
还有让我学会了利用c#的windows程序可以做出这样的小系统,以前只会用c#编写控制台程序,现在让我懂得了如何利用c#来编写窗体代码,我很开心。
回顾此次课程设计感觉收获很大,不仅巩固了以前所学的知识,而且学到了很多书本上学不到的东西。通过这次课程设计使我们懂得了理论和实际相结合的重要性,只有把理论与实际相结合,从理论中得出结论,才能真正为社会服务。
6、遇到的问题
问题:未考虑到生成文档窗体在主窗体中的显示
解决
:在参照样例程序的时候,发现文档是显示在主窗体内部,结合自己的所学,发现设置主窗体的属性记事本 f = new 记事本();
f.MdiParent = this;
count++;
f.Text = "新建文本" + count;
设置成Mdiparent属性即可。
七、参考文献
[1]郑阿奇、梁敬东、钱晓军等,c#实用教程,电子工业出版社,2009年
[2] 钱雪忠、黄学光等,数据库原理及应用,北京邮电大学出版社,2005年