课程设计文本编辑器的设计(1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《高级语言程序设计》
课程设计报告
题目: 文本编辑器的设计 专业: 计算机科学与技术 班级: 14计科一班
**: ** 指导教师: **
成绩:
计算机学院 2015年4月24日
2014-2015学年 第2学期
目录
1 设计内容及要求................................... 错误!未定义书签。
1.1设计内容..................................... 错误!未定义书签。
1.2具体要求 (2)
2 概要设计 (2)
2.1系统的功能简介 (2)
2.2系统功能模块图............................... 错误!未定义书签。
2.3各个模块之间的主要关系 (3)
3 详细设计 (4)
3.1文件操作 (4)
3.2编辑操作 (9)
3.3工具操作 (17)
4 程序运行结果与调试 (19)
4.1 在调试过程中出现的一些问题 (19)
4.2 实验结果 (20)
5 课程设计总结与感想 (24)
参考文献 (24)
源代码 (25)
1 设计内容及要求
1.1设计内容
该文本编辑器运行后弹出文本编辑器的主界面,由键盘输入或以打开的方式输入或显示文本文件内容。其中程序的编辑项可对当前的文本进行撤销、删除、剪切、复制、粘贴、在文本里显示当前时间、全选、清除、查找、替换、统计等功能。程序的文件项可以对电脑上txt,c++等格式文件的打开、对当前文本的保存和另存、对当前文本的的新建以及退出文本编辑系统。程序的工具项为背景音乐,为用户提供了优美动听的音乐,仅在用户编辑疲惫乏力的时候尽情的享用。最后在程序的帮助项有对该小型文本编辑器的关于,用来介绍该程序,还有访问链接百度,访问114网页大全,为用户提供查找资料等功能服务。
1.2具体要求
基本要求:编辑器应具备对文本文件的打开、保存、新建、查找、插人、删除、修改、字符串替换、统计字数,统计行数等功能,对于超过一屏的长文件,应能够分页显示。设计用户接口命令,实现对文本的编辑
2 概要设计
2.1系统的功能简介
输入一页文字,程序实现文字、数字、空格的统计;可以删除一行信息;查找定位单词;定行位置插入;文件存盘;装入文件;并能显示输入及其他功能。
2.2系统功能模块图
运行所需环境:win7及以下各版本windows,visual C++6.0。
2.3各个模块之间的主要关系
该系统的功能主要是实现文本的输入,并对文本的相应信息进行的操作。各个模块之间的关系是相互联系的。首先,主函数包含了所有的子函数。主函数是整个系统的核心。子函数之间也是有联系的,对文本信息的显示、删除、统计、查找、插入,存储,装入,必须是在文本信息输入的情况下进行的。因此对文本的输入是非常重要的。在文本的删除、统计、查找、插入、存储、装入、保存所有的子函数之间是没有多大联系的。
3 详细设计
3.1文件操作
(1)文件的新建的实现:
int ret=MessageBox(NULL,TEXT("是否把更改保存到新建的文本文档"),TEXT("温馨提示"),MB_YESNO | MB_ICONQUESTION);
if(ret==IDYES) //根据选择如果保存
{
OPENFILENAME ofn; //文件对象
char szFile[MAX_PATH]; //文件的大小,最大
ZeroMemory(&ofn,sizeof(ofn)); //文件的初始化
ofn.lStructSize = sizeof(ofn);
ofn.lpstrFile = szFile;
ofn.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);
}
TCHAR str[10000];
TCHAR end[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,"");
}
(2)文件打开的实现:
case ID_MENUITEMOPEN: //文本的打开
{
OPENFILENAME ofn;
char szFile[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开头的文件