您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 文本编辑器课程设计报告
1目录一、问题描述-------------------------------------------------------------------------21、基本要求----------------------------------------------------------------------22、提高要求----------------------------------------------------------------------2二、需求分析-------------------------------------------------------------------------2三、概要设计-------------------------------------------------------------------------3四、详细设计-------------------------------------------------------------------------51、文件操作----------------------------------------------------------------------52、编辑操作----------------------------------------------------------------------103、工具操作----------------------------------------------------------------------194、关于操作----------------------------------------------------------------------20五、编码与调试分析----------------------------------------------------------------20六、使用说明-------------------------------------------------------------------------22七、测试结果-------------------------------------------------------------------------22八、自学知识-------------------------------------------------------------------------26九、课程设计心得体会-------------------------------------------------------------272一、问题的描述设计并编写一个小型文本编辑器,使其具有通常文本编辑器(如Vi、Edlin)应具备的基本功能。1.基本要求:编辑器应具备对文本文件的打开、保存、新建、查找、插人、删除、修改、字符串替换、统计字数,统计行数等功能,对于超过一屏的长文件,应能够分页显示。设计用户接口命令,实现对文本的编辑。2.提高要求:可以支持“*”、“?”等通配符,支持复制、粘贴等功能,支持多文档同时编辑。设计用户接口命令,实现对文本的编辑。二、需求分析文本编辑器的基本功能:该文本编辑器是用windows编写的一个程序,运行后弹出文本编辑器的主界面,由键盘输入或以打开的方式输入或显示文本文件内容。其中程序的编辑项可对当前的文本进行撤销、删除、剪切、复制、粘贴、在文本里显示当前时间、全选、清除、查找、替换、统计等功能。程序的文件项可以对电脑上txt,c++等格式文件的打开、对当前文本的保存和另存、对当前文本的的新建以及退出文本编辑系统。程序的工具项为背景音乐,为用户提供了优美动听的音乐,仅在用户编辑疲惫乏力的时候尽情的享用。最后在程序的帮助项有对该小型文本编辑器的关于,用来介绍该程序,还有访问链接百度,访问114网页大全,为用户提供查找资料等功能服务。输入形式:①直接在文本编辑框中输入文本内容;②以打开的方式打开并在文本框中显示电脑的上文本。输出形式:①对编辑框中尚无文本内容时进行查找、替换、统计等,程序会弹出一个提示尚无文本信息的小对话框,需输入文本后再进行以上操作。②对编辑框中已有文本内容后进行查找、替换、统计操作,程序将弹出3与之对应的对话框,根据所弹出的对话框的按键要求进行之后的操作就可以。保存文件,另存为等功能都异曲同工,撤销、删除、剪切、复制、粘贴、等就直接在主文本编辑框中操作,直接在其显示操作后的文本信息。测试数据要求:任意一文本文件。三、概要设计(1)抽象数据类型:直接运用windows中的的窗口类,通过消息响应,调用API函数实现有关对话框的操作功能,以及自己定义一个仅含有成员函数的普通类对文本字符进行查找、替换、统计的辅助操作,对主对话框和副对话框中函数的回调和参数的回显功能。4(2)主程序流程图(3)模块调用关系:该文本编辑器函数括:WINAPIMain_Proc(),WINAPIChange_Proc(),WINAPIFind_Proc(),WINAPITotal_Proc(),Main_OnInitDialog();Change_OnInitDialog();Find_OnInitDialog();Total_OnInitDialog();Main_OnCommand();Change_OnCommand();Find_OnCommand();Total_OnCommand(),Main_OnClose(),Change_Main_OnClose();Find__OnClose();Total_OnClose();Main_OnSize(),TCHAR*temp(),D_change()等函数;其中每个对话框对应一组函数例如主对话框包括WINAPIMain_Proc(),Main_OnInitDialog(),Main_OnCommand(),Main_OnClose()函数,Main_Proc()函数通过消息响应调用文本编辑器文件编辑工具帮助新建打开保存另存退出复制粘贴剪切清空删除清空撤销查找替换统计全选背景音乐关于连接百度连接1145Main_OnInitDialog()完成对话框的初始化,通过调用Main_OnCommand()函数完成对对话框中控件以其菜单项的响应,通过调用Main_OnClose()关闭对话框。其它的如查找,替换等副窗口也一样。TCHAR*temp(),函数做回调函数用,返回副对话框中已经改变后的主对话框文本框中的文本内容。D_change()是实现替换功能的函数其函数调用关系如下:四、详细设计〔1〕、文件操作:1、文件的新建的实现:intret=MessageBox(NULL,TEXT(是否把更改保存到新建的文本文档!!!),TEXT(温馨提示),MB_YESNO|MB_ICONQUESTION);if(ret==IDYES)//根据选择如果保存{OPENFILENAMEofn;//文件对象charszFile[MAX_PATH];//文件的大小,最大ZeroMemory(&ofn,sizeof(ofn));//文件的初始化ofn.lStructSize=sizeof(ofn);ofn.lpstrFile=szFile;Main_Proc(),Main_OnInitDialog()Main_OnCommand()Main_OnCommand()Change_Proc()Find_Proc()Total_Proc()6ofn.lpstrFile[0]=TEXT('\0');ofn.nMaxFile=sizeof(szFile);ofn.lpstrFilter=TEXT(ALL\0*.*\0Text\0*.TXT\0C++\0*.cpp\0);//保存的文件类型ofn.nFilterIndex=1;ofn.lpstrFileTitle=NULL;ofn.nMaxFileTitle=0;ofn.lpstrInitialDir=NULL;ofn.hwndOwner=hwnd;ofn.Flags=OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST;ofn.lpstrTitle=TEXT(保存);if(GetSaveFileName(&ofn)){FILE*fp;fp=fopen(szFile,w);//打开文件if(fp==NULL){MessageBox(NULL,TEXT(文件无法保存),TEXT(呜呜),MB_OK);}TCHARstr[10000];TCHARend[10000];memset(end,0,10000);GetDlgItemText(hwnd,IDC_EDIT1,str,sizeof(str));fputs(str,fp);fclose(fp);}SetDlgItemText(hwnd,IDC_EDIT1,);}else{SetDlgItemText(hwnd,IDC_EDIT1,);}72、文件打开的实现:caseID_MENUITEMOPEN://文本的打开{OPENFILENAMEofn;charszFile[MAX_PATH];//保存路径变量ZeroMemory(&ofn,sizeof(ofn));在这里我们使用ZeroMemory“函数”,ZeroMemory其实并不是函数,看一下ZeroMemory的定义:ofn.lStructSize=sizeof(ofn);ofn.lpstrFile=szFile;//szFile是一个字符数组,那么szFile这个名字就代表这个字符数组的首地址这是一个指针的应用,把接收选择文件名的数组的地址传递到GetOpenFileName函数中。ofn.lpstrFile[0]=TEXT('\0');ofn.lpstrFile[0]=TEXT('\0');效果等价于ZeroMemory(szFile,sizeof(szFile)/sizeof(char));ofn.nMaxFile=sizeof(szFile);ofn.lpstrFilter=TEXT(ALL\0*.*\0Text\0*.txt\0);文件过滤器*.*就表示所有文件*.txt就表示所有文本文件abc*.*就表示所有以abc开头的文件abc*.txt就表示所有以abc开头的文本文件(txt)ofn.lpstrFilter=TEXT(ALL\0*.*\0Text\0*.TXT\0);用“\0”分割出几个段,每两段是一组过滤器,每组的第一个段代表过滤器的显示的值,而第二段表示真正的过滤器ofn.nFilterIndex=1;//选择一个过滤器ofn.lpstrFileTitle=NULL;windows的一个惯例:结构体的指针类型别名一般是LP+结构体的名字GetOpenFileName(&ofn)而不是GetOpenFileName(ofn),因为GetOpenFileName函数要的是OPENFILENAME的指针(8)只要用户还没关闭对话框,那么GetOpenFileName函数是停住的,同步模式的PlaySound以及getchar、scanf是一样的。用户关闭对话框,GetOpenFileName函数返回,返回值是BOOL,等于TRUE表8示用户选择了文件,如果等于FALSE就表示用户选择了【取消】按钮ofn.nMaxFileTitle=0;ofn.lpstrInitialDir=NULL;ofn.hwndOwner=hwnd;ofn.Flags=OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST;if(GetOpenFileName(&ofn)){FILE*fp;fp=fopen(szFile,r);if(fp==NULL){MessageBox(N
本文标题:文本编辑器课程设计报告
链接地址:https://www.777doc.com/doc-2432286 .html