C课程设计-简易文本编辑器.doc_第1页
C课程设计-简易文本编辑器.doc_第2页
C课程设计-简易文本编辑器.doc_第3页
C课程设计-简易文本编辑器.doc_第4页
C课程设计-简易文本编辑器.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录 第一章 课程设计目的和要求.1 1.1 课程设计的目 1 1.2 基本要求 1 第二章 课程设计任务内容.2 2.1 设计背景 2 2.2 简易文本编辑器设计内容 2 第三章 详细设计.3 3.1 总体结构图 3 3.2 函数分析 3 3.3 主函数程序流程图 4 3.4 子函数流程图 5 第四章 程序编码与调试.7 4.1 程序编码 7 4.2 编码调试 8 4.3 运行结果 9 第五章 课程设计心得与体会.11 附录 1 参考文献 .12 附录 2 源程序代码 .13 1 第一章 课程设计目的和要求 C 语言课程设计是一门实践性非常强的课程,不但要注重 c 语言程序设计基本 知识的学习,更要注重程序设计技能的培养,使学生能够允许渐进地把握 c 语言程 序设计的技能。通过课程设计,培养学生阅读和编写程序的能力,培养计算机程序 设计的能力和素质,以及思维方法。初步积累编程经验,打下良好的计算机应用基 础。 1.1 课程设计的目 1.通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能力, 能更好的巩固c 语言程序设计课程学习的内容 2.掌握工程软件设计的基本方法,强化上级动手编程能力,闯过理论与实践相 结合的难关!更加了解了 c 语言的好处和其可用性。 3.掌握基本的程序设计过程和技巧,掌握基本的分析问题合理性,通过计算机 求解问题的能力,具备初步的高级语言程设计能力。为后续个门计算机课程 的学习和毕业设计打下结实基础。 4.通过 c 语言课程设计,使学生了解高级程序设计语言的结构。 1.2 基本要求 1.基本要求: 要求用 VC 中的 MFC 控件打开和保存文件。 要求在设计的程序中至少能完成六种编辑功能。 完成的程序界面要美观,能够完成六种编辑的全过程。 2.创新要求: 在记事本中增加工具栏,工具栏中应有常使用的工具按钮; 在记事本中增加状态栏; 2 第二章 课程设计任务内容 2.1 设计背景 随着计算机在社会生活深红越来越深入而广泛的应用,在文件中有些文件需要 改动,比如插入,替换,删除等一系列操作,为了更好的修改文件,不得不进行一 系列的操作来修改,因此,文件的修改操作是十分重要的。 2.2 简易文本编辑器设计内容 1.具有显示总行数 ; 2.具有:查找,替换(等长,不等长),插入(插串,文本块的插入),块移动 (行块,列块移动),删除; 3.可正确存盘,取盘。 3 第三章 详细设计 3.1 总体结构图 该程序是用 c 语言编译成的,主要能够实现查找功能、复制功能、粘贴功能、 替换功能和剪切功能。 图 3-1 总体结构图 3.2 函数分析 ID_FILE_NEW:新建 ID_FILE_OPEN:打开 ID_FILE_PRINT:打印 DECLARE_MESSAGE:删除 ID_EDIT_FIND:查找 ID_EDIT_REPLACE:替换 ID_EDIT_CUT:剪切 ID_EDIT_COPY:粘贴 ID_EDIT_HELP:帮助 ID_EDIT_ALL :全选 主要模块 复 制 模 块 粘 贴 模 块 替 换 模 块 剪 切 模 块 查 找 模 块 4 3.3 主函数程序流程图 开始 定义函数 数据处理 选择操作 插 入 替 换 查 找 删 除退 出 结束 图 3-2 主函数流程图 为了添加工具按钮,要使用 ActiveX 控件中的 Microsoft Windows Common Control 6.0 控件。请按上述方法添加。选择其中一个叫 ImageList 的控件来装载 图像。在程序界面上添加它,然后右键单击此控件,左键单击“属性”,弹出“属 性页”对话框的“图像”,再单击“插入图片”就可以一次性装载图片了(如不满 意,以后还可以添加)。图片可在 C:Microsoft Visual StudioCommonGraphicsBitmapsTlBr_W98 下选择(假设 VB 安装在 C 盘下)。在插 入图片时给每一张图片注明关键字,以便在引用图片时不至于混乱。如插入“新建” 的图片,我们在“关键字”栏注明“New”。 图片有了,接下来在程序界面添加工具栏(ToolBar)。添加后工具栏就出现在菜 单下面,右键单击它,选择“属性”,在弹出的“属性页”对话框中的“通用”项 作些设置,主要如下两项: 5 “图像列表”:选择 ImageList1 “样式”:根据喜爱选择 1-trbStandard 或者 2-trbFlat 继续点击“属性页”的“按钮”选项,插入若干按钮。按钮有多种样式,请根据需 要设置。这里请一定注意:每一个与用户操作有关的按钮都必须注明关键字、装载 图片,如“新建”按钮,在“关键字”项注明“新建” ,在“图像”项键入“New” (即 ImageList1 中的图片关键字),需要的话还可以在“工具提示文本”项填入适 当的提示语。 3.4 子函数流程图 YES NO 图 3-3 ID_EDIT_FIND 查找流程图 这是实现查找功能的函数。首先我们要输入想要查找的内容。然后点击确定。 程序根据输入的内容,检索文本。如果检索到输入的内容就显示出来,如果没有就 要求重新输入。 开始 输入查找内容 显示查找内容要求重新输入 6 图 3-4 ID_EDIT_REPLACE 替换流程图 这是实现替换功能的函数。首先要选中要替换的内容,然后输入想要替换的内 容。点击替换按钮,电脑会检索文本。然后用项替换的内容,替换选中的内容。 图 3-5 ID_EDIT_CUT 剪切流程图 这是实现剪切功能的函数。首先要选中剪切的内容。然后剪切,程序会把剪切 的内容放到建立的缓存中。 选中要替换的内容 输入要替换的内容 开始 替换 结束 开始 选中剪切的 内容 存放在缓存中 结束 剪切 7 第四章 程序编码与调试 4.1 程序编码 1.设计方法和基本原理: (1)问题的解决方案: 根据问题描述,可以将问题解决分为三步: 绘制界面:新建一个标准 EXE 工程,点击 Icon 属性给它找个合适的 Icon 图标。 编辑菜单。按 Ctrl+E 调出菜单编辑器,设置菜单编辑器的菜单项。 编写代码。 添加工具按钮 编写工具按钮代码 (2)主要技术问题的描述: 为了将要编辑的文档显示出来,要添加一个控件。使用单击菜单“工程”-“部件” ,在弹出的“部件”对话框里找到 Microsoft RichText Box 6.0 并选中它,“确定” 按钮。这时左边的工具栏上出现了该控件的图标。在窗体上绘制 RichText Box,其 大小和位置可不用理睬,我们将在代码中处理,为了在打开和编辑文件时有垂直滚 动条,可以把它的 ScrollBar 属性设为 2-rtfVertical。 将 ActiveX 控件中的公共对话框 Microsoft Common Dialog 6.0 控件添加到控件 箱中,以便提供一组标准的操作对话框,进行诸如打开和保存文件,设置打印选项, 以及选择颜色和字体等操作。 参考教材第五章的内容,编写程序代码。 为了添加工具按钮,要使用 ActiveX 控件中的 Microsoft Windows Common Control 6.0 控件。请按上述方法添加。选择其中一个叫 ImageList 的控件来装载 图像。在程序界面上添加它,然后右键单击此控件,左键单击“属性”,弹出“属 性页”对话框的“图像”,再单击“插入图片”就可以一次性装载图片了(如不满 意,以后还可以添加)。图片可在 C:Microsoft Visual StudioCommonGraphicsBitmapsTlBr_W98 下选择(假设 VB 安装在 C 盘下)。在插 入图片时给每一张图片注明关键字,以便在引用图片时不至于混乱。如插入“新建” 的图片,我们在“关键字”栏注明“New”。 8 图片有了,接下来在程序界面添加工具栏(ToolBar)。添加后工具栏就出现在菜 单下面,右键单击它,选择“属性”,在弹出的“属性页”对话框中的“通用”项 作些设置,主要如下两项: “图像列表”:选择 ImageList1 “样式”:根据喜爱选择 1-trbStandard 或者 2-trbFlat 继续点击“属性页”的“按钮”选项,插入若干按钮。按钮有多种样式,请根据需 要设置。这里请一定注意:每一个与用户操作有关的按钮都必须注明关键字、装载 图片,如“新建”按钮,在“关键字”项注明“新建”,在“图像”项键入“New” (即 ImageList1 中的图片关键字),需要的话还可以在“工具提示文本”项填入适 当的提示语。 编写工具栏的按钮代码:工具栏按钮的代码编辑很简单,可以按照下面的格式去 编写: Private Sub ToolBar1_ButtonClick(ByVal Button As MSComctlLib.Button) On Error Resume Next 出错处理 Select Case Button.Key 按关键字选择 Case “新建“ mnuNew_Click 等于菜单项“新建”被单击 Case “打开“ 等于菜单项“打开”被单击 mnuOpen_Click (继续编写其它按钮的代码) End Select 4.2 编码调试 根据数据结构、函数功能和主要的流程图,进行源代码操作。 在编码时,注意代码的书写规范,包括命名惯例、注释、分隔和缩进等,这样使程 序层次清晰,增强可读性和可维护性。 编码完成后,检查错误,编译直到正常运行,达到预期效果。 9 4.3 运行结果 运行结果及部分运行界面截图如下: 图 4-1 初始状态 图 4-2 替换操作 10 图 4-3 查找操作 11 第五章 课程设计心得与体会 步入大学,我们接触到了更多的计算机专业知识。在大一第二学期,学 习了 c+程序设计,大二的时候又学习了数据结构课程。而这学期的课程设 计,对我来说是一个新的挑战。从开始到现在,课程设计的每一个环节,我 自己都精心准备,让我对编程有了更深刻的认识,也是我知道了自己的不足 之处。 在老师刚布置下来任务之后,我便开始在网上和图书管理搜集资料,虽 然关于这方面的资料很多,但是好多都和我的不相匹配。于是我每一本书都 仔细阅读,筛选出了对我的程序设计有用的信息。然后,看懂了是一方面, 自己动手做,又是另一个挑战。我发现如果不是透彻的弄懂了,在实际操作 的时候,根本实现不了结果。于是,我又把资料仔细的阅读,并询问老师和 同学们,再加上自己的摸索,最终提早完成了任务。 我设计的是简易文本编辑器,要求有查找,插入,替换,块移动,删除 功能,在这次课程设计作业的过程中,虽然课程设计有明确的目的及要求, 但由于在设计方面我们没有经验,理论基础知识掌握得不牢固,在设计中难 免会出现这样那样的问题。在编写过程中也有许多小问题,比如没有定义, 缺少符号等等,但经过仔细的修改以及寻求别人的帮助把问题也改正了,大 多数是因为自己的粗心而引起的。 在设计过程中,要独立的完成自己的设计思路。在学习理论知识的同时 也要参加实践活动,把课本上的知识运动到实践当中去,也是我们学习专业 理论知识的最终目的。本次的课程设计,培养了我 C+语言,C 语言及其他 课程的理论知识和理论联系实际,应用生产实际知识解决实际问题的能力; 在设计的过程中还培养独立自主的能力。在今后的学习过程中我们会更加努 力。 12 附录 1 参考文献 1.谭浩强:C+程序设计,清华大学出版社,2004 年 6 月第一版 2.严蔚敏:数据结构(C 语言版) ,清华大学出版社,1997 年 4 月第一版 3.王大刚:c 语言编程宝典 4.鲁沐浴:c 语言最新编程技巧 200 例 ,电子工业出版社,1997 年 1 月 5.梁翎,李爱齐:c 语言程序设计使用技巧与程序实例 ,上海科普出版社,1996 年 5 月 6.陈国章:Turbo c 程序技巧与应用实例 ,天津科学技术出版社,1995 年 5 月 7.王士元:c 高级使用程序设计 ,清华大学出版社,1996 年 6 月 8.Herbert Schildt:C:The Complete Reference 9.黄明,梁旭,万红丽:c 语言课程设计 ,电子工业出版社,2006 年 10.郭翠英:c 语言程序设计案例精编 ,中国水利水电出版社,2005 年 13 附录 2 源程序代码 11A081_INCLUDED_) / 简单文本.cpp : Defines the class behaviors for the application. / #include “stdafx.h“ #include “简单文本.h“ #include “MainFrm.h“ #include “简单文本 Doc.h“ #include “简单文本 View.h“ #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE = _FILE_; #endif / / / CMyApp BEGIN_MESSAGE_MAP(CMyApp, CWinApp) /AFX_MSG_MAP(CMyApp) ON_COMMAND(ID_APP_ABOUT, OnAppAbout) / NOTE - the ClassWizard will add and remove mapping macros here. / DO NOT EDIT what you see in these blocks of generated code! /AFX_MSG_MAP / Standard file based document commands ON_COMMAND(ID_FILE_NEW, CWinApp:OnFileNew) ON_COMMAND(ID_FILE_OPEN, CWinApp:OnFileOpen) / Standard print setup command ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp:OnFilePrintSetup) END_MESSAGE_MAP() / / / CMyApp construction CMyApp:CMyApp() / TODO: add construction code here, 14 / Place all significant initialization in InitInstance / / / The one and only CMyApp object CMyApp theApp; / / / CMyApp initialization BOOL CMyApp:InitInstance() AfxEnableControlContainer(); / Standard initialization / If you are not using these features and wish to reduce the size / of your final executable, you should remove from the following / the specific initialization routines you do not need. #ifdef _AFXDLL Enable3dControls();/ Call this when using MFC in a shared DLL #else Enable3dControlsStatic();/ Call this when linking to MFC statically #endif / Change the registry key under which our settings are stored. / TODO: You should modify this string to be something appropriate / such as the name of your company or organization. SetRegistryKey(_T(“Local AppWizard-Generated Applications“); LoadStdProfileSettings(); / Load standard INI file options (including MRU) / Register the applications document templates. Document templates / serve as the connection between documents, frame windows and views. CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CMyDoc), RUNTIME_CLASS(CMainFrame), / main SDI frame window 15 RUNTIME_CLASS(CMyView); AddDocTemplate(pDocTemplate); / Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); / Dispatch commands specified on the command line if (!ProcessShellCommand(cmdInfo) return FALSE; / The one and only window has been initialized, so show and update it. m_pMainWnd-ShowWindow(SW_SHOW); m_pMainWnd-UpdateWindow(); return TRUE; / / / CAboutDlg dialog used for App About class CAboutDlg : public CDialog public: CAboutDlg(); / Dialog Data /AFX_DATA(CAboutDlg) enum IDD = IDD_ABOUTBOX ; /AFX_DATA / ClassWizard generated virtual function overrides /AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support /AFX_VIRTUAL / Implementation protected: /AFX_MSG(CAboutDlg) / No message handlers /AFX_MSG 16 DECLARE_MESSAGE_MAP() ; CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD) /AFX_DATA_INIT(CAboutDlg) /AFX_DATA_INIT void CAboutDlg:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CAboutDlg) /AFX_DATA_MAP BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) /AFX_MSG_MAP(CAboutDlg) / No message handlers /AFX_MSG_MAP END_MESSAGE_MAP() / App command to run the dialog void CMyApp:OnAppAbout() CAboutDlg aboutDlg; aboutDlg.DoModal(); / / / CMyApp message handlers / MainFrm.h : interface of the CMainFrame class / / / #if !defined(AFX_MAINFRM_H_2B4A6574_EC9D_4C5B_802E_9FFB04EF8786_INCLUDED_) #define AFX_MAINFRM_H_2B4A6574_EC9D_4C5B_802E_9FFB04EF8786_INCLUDED_ #if _MSC_VER 1000 #pragma once 17 #endif / _MSC_VER 1000 class CMainFrame : public CFrameWnd protected: / create from serialization only CMainFrame(); DECLARE_DYNCREATE(CMainFrame) / Attributes public: / Operations public: / Overrides / ClassWizard generated virtual function overrides /AFX_VIRTUAL(CMainFrame) virtual BOOL PreCreateWindow(CREATESTRUCT /AFX_VIRTUAL / Implementation public: virtual CMainFrame(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext #endif protected: / control bar embedded members CStatusBar m_wndStatusBar; CToolBar m_wndToolBar; / Generated message map functions protected: /AFX_MSG(CMainFrame) afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); / NOTE - the ClassWizard will add and remove member functions here. / DO NOT EDIT what you see in these blocks of generated code! /AFX_MSG DECLARE_MESSAGE_MAP() ; / 18 / /AFX_INSERT_LOCATION / Microsoft Visual C+ will insert additional declarations immediately before the previous line. #endif / !defined(AFX_MAINFRM_H_2B4A6574_EC9D_4C5B_802E_9FFB04EF8786_INCLUDED_) / 简单文本.h : main header file for the 简单文本 application / #if !defined(AFX_H_1DD5B072_4F80_4F7C_9F05_2FFBCD7DE7F3_INCLUDED_) #define AFX_H_1DD5B072_4F80_4F7C_9F05_2FFBCD7DE7F3_INCLUDED_ #if _MSC_VER 1000 #pragma once #endif / _MSC_VER 1000 #ifndef _AFXWIN_H_ #error include stdafx.h before including this file for PCH #endif #include “resource.h“ / main symbols / / / CMyApp: / See 简单文本.cpp for the implementation of this class / class CMyApp : public CWinApp public: CMyApp(); / Overrides / ClassWizard generated virtual function overrides /AFX_VIRTUAL(CMyApp) public: virtual BOOL InitInstance(); /AFX_VIRTUAL 19 / Implementation /AFX_MSG(CMyApp) afx_msg void OnAppAbout(); / NOTE - the ClassWizard will add and remove member functions here. / DO NOT EDIT what you see in these blocks of generated code ! /AFX_MSG DECLARE_MESSAGE_MAP() ; / / /AFX_INSERT_LOCATION / Microsoft Visual C+ will insert additional declarations immediately before the previous line. #endif / !defined(AFX_H_1DD5B072_4F80_4F7C_9F05_2FFBCD7DE7F3_INCLUDED_) / 简单文本 Doc.h : interface of the CMyDoc class / / / #if !defined(AFX_DOC_H_55667EB4_AB9C_44C9_B790_E5E249118EB1_INCLUDED_) #define AFX_DOC_H_55667EB4_AB9C_44C9_B790_E5E249118EB1_INCLUDED_ #if _MSC_VER 1000 #pragma once #endif / _MSC_VER 1000 class CMyDoc : public CDocument protected: / create from serialization only CMyDoc(); DECLARE_DYNCREATE(CMyDoc) / Attributes public: / Operations public: 20 / Overrides / ClassWizard generated virtual function overrides /AFX_VIRTUAL(CMyDoc) public: virtual BOOL OnNewDocument(); virtual void Serialize(CArchive /AFX_VIRTUAL / Implementation public: virtual CMyDoc(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext #endif protected: / Generated message map functions protected: /AFX_MSG(CMyDoc) / NOTE - the ClassWizard will add and remove member functions here. / DO NOT EDIT what you see in these blocks of generated code ! /AFX_MSG DECLARE_MESSAGE_MAP() ; / / /AFX_INSERT_LOCATION / Microsoft Visual C+ will insert additional declarations immediately before the previous line. #endif / !defined(AFX_DOC_H_55667EB4_AB9C_44C9_B790_E5E249118EB1_INCLUDED_) / 简单文本 View.h : interface of the CMyView class / / / 21 #if !defined(AFX_VIEW_H_1E4AC431_E4C9_4EE2_86C3_195FF811A081_INCLUDED_) #define AFX_VIEW_H_1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论