面向对象程序设计文本编辑器.docx
《面向对象程序设计文本编辑器.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计文本编辑器.docx(13页珍藏版)》请在冰点文库上搜索。
![面向对象程序设计文本编辑器.docx](https://file1.bingdoc.com/fileroot1/2023-5/7/47bbdb13-8044-4fb3-a363-771b566ed2ff/47bbdb13-8044-4fb3-a363-771b566ed2ff1.gif)
面向对象程序设计文本编辑器
实训报告
面向对象程序设计
题目:
文本编辑器
专业:
电子信息工程
姓名:
学号:
指导教师:
李登辉、赵志鹏、韩桂明、张锟
日期:
2015年1月16日
桂林电子科技大学信息科技学院
1任务……………………………………3
2方案设计………………………………3
3软件设计………………………………3
4制作与调试过程………………………8
5心得体会………………………………11
6参考文献………………………………12
文本编辑器
1.任务
1.1基本任务
设计一个基于对话框的文本编辑器,实现文本的创建、编辑、显示及保存功能。
1.2基本要求
(1)按照题目要求独立设计文本编辑器所需的所有按钮,并完成程序源码编写、调试及关键代码注释。
(2)能够实现文本文档的创建与保存。
(3)能够实现文本信息的编辑。
2.方案设计
1.1总体设计框图
采用模块化的程序设计方法,即将较大的任务按照一定的原则分为一个个较小的任务,然后分别设计各个小任务。
需要注意的是划分出来的模块应该相对独立但又相关,且容易理解。
可以用模块化层次结构图(即模块图)来分析其任务的划分,一般从上到下进行,最上面一层是主模块,下面各层是其上一层模块的
逐步细化描述。
首先建立一个基于对话框的应用程序,然后添加文本编辑框和三个按钮:
打开、保存、清除按钮。
双击该按钮系统自动生成该类的函数。
1.2各个模块函数说明
第一,打开函数。
实现文件夹的打开,选择打开路径打开相应的的txt文件。
第二,保存函数。
实现文件的保存,选择保存的路径和保存的文件名。
第三,清除函数。
实现文档的清除功能。
3.软件设计
详细设计过程如下,先创建一个基于对话框的应用程序,取工程文件名为:
1152100216缪宇。
即在新建文件的New对话框中,选中Project,然后选择MFC AppWizard(exe)选项,在Project name框中输入:
1152100216缪宇。
在生成的对话框中删除[TODO:
在这里设置对话控制。
]静态框和[取消]、[确定]按钮。
如图所示。
3.1对话框界面设计
1.添加文本编辑框
文本编辑框操作步骤如下:
(1)添加文本编辑框,用于输入文件名。
选定控件工具栏中文本编辑按钮(Edit Box),本编辑框,并调整至合适的大小;历史老照片不能说的秘密慈禧军阀明末清初文革晚清
(2)设置文本编辑框属性。
用鼠标右击该文本编辑 框,在出现的菜单中选择属性(Properyies)菜单项,弹出属性对话框;
(3)选择控件的标识符。
在属性对话框中选择General页,并确认ID 框中的标识符为:
IDC_EDIT,其余属性均维持默认状态;
(4)单击属性对话框右上角的关闭按钮,关闭属性对话框;
2.添加按钮和静态框
给对话框添加打开、保存、清除3个按钮,它们的标识符分别为:
IDC_BUTTON_open、IDC_BUTTON_save、、IDC_BUTTON_clear、。
通过类向导或双击3个按钮的图标,为CShixunDlg类加载OnButtonsave( )、OnButtonopen( )、OnButtonclear( )3个函数,分别完成打开文件、保存文件和查找字符串、清除文档的字和字体设置功能。
最后,添加两个位图装饰窗口。
适当调整各控件位置,使整个界面外观协调一致。
如图所示。
3.2代码设计
1.添加成员变量。
通过类向导,为CShixunDlg添加一个成员变量m_edit。
查找框添加一个成员变量m_FindText。
2.添加程序代码
(1)在项目管理工作区中展开CCShixunApp类,双击该类OnButtonOpen( )函数,将代码区光标移至OnButtonOpen( )函数,并加入如下代码:
voidCShixunDlg:
:
OnButtonOpen()//在类外定义函数
{
//TODO:
Addyourcontrolnotificationhandlercodehere
chartemp;
C;
intlen;
Copendlg(TRUE,"txt",NULL,OFN_HIDEREADONLY,"纯文本(*.txt)|*.txt|ChartFiles(*.xlc)|*.xlc|WorksheetFiles(*.xls)|*.xls||");
//(true就打开,文件扩展名,指定默认文件名,特定风格,可供选择文件类型和相应扩展名以//结尾)弹出路径选择对话框,默认纯文本格式,对话框为TRUE则显示打开对话框,
if(opendlg.DoModal()==IDOK)//根据对话框返回值,判断用户是否按下OK键
{
path=opendlg.GetPathName();//获得用户选择的路径
cfi.Open(path,C);//用读方式打开指定的文件(文件流对象.open(磁盘文件名,输入输出流方式))
len=cfi.GetLength();//获得文件字节数并保存
cfi.Close();//关闭文件
ifstreamin(path,ios:
:
in);//再以流输入方式打开刚才的文件(文件流对象(磁盘文件名,输入输出方式))
if(in)//如果返回值非零说明打开成功
{
m_edit="";//清空现有缓存中的内容
for(inti=0;i{
in.get(temp);
m_edit+=temp;
}
UpdateData(FALSE);//更新文本框内容
in.close();//关闭文件
AfxMessageBox("文件打开OK",MB_ICONASTERISK,0);//提示消息给用户
}
elseAfxMessageBox("文件打开失败",MB_ICONSTOP,0);//文件打开失败,提示用户错误
}
}
(2)在项目管理工作区中展开CCShixunApp类,双击该类OnButtonSave( )函数,将代码区光标移至OnButtonSave( )函数,并加入如下代码:
voidCShixunDlg:
:
OnButtonSave()
{
if(path=="")//判断path是否为空
{
Csavedlg(FALSE,"txt",NULL,OFN_HIDEREADONLY,"纯文本(*.txt)|*.txt||");//如果是,弹出路径选择为FALSE则显示保存对话文件对话框。
if(savedlg.DoModal()==IDOK)//用户是否按下OK
{
path=savedlg.GetPathName();//获得路径并保存至path
ofstreamout(path);//打开文件
UpdateData(TRUE);//将文本框中的内容更新到m_edit变量
out.write(m_edit,strlen(m_edit));//将m_edit中内容保存到文件中
out.close();//关闭文件
AfxMessageBox("文件保存OK",MB_ICONASTERISK,0);//提示用户保存完毕
}
}
else//若path不为空,则直接保存文件到path中指定位置
{
ofstreamout(path);
UpdateData(TRUE);
out.write(m_edit,strlen(m_edit));
out.close();
AfxMessageBox("文件保存OK",MB_ICONASTERISK,0);
}
}
(3)在项目管理工作区中展开CCShixunApp类,双击该类OnButtonClear( )函数,将代码区光标移至OnButtonClear( )函数,并加入如下代码:
voidCShixunDlg:
:
OnButtonClear()
{
m_edit="";//将缓存内容清空
UpdateData(FALSE);//将缓存内容更新到文本框
//AfxMessageBox("成功清空文档内容",MB_ICONASTERISK,0);//提示消息给用户
}
将其编译链接后运行结果如下:
4.制作与调试过程
4.1打开模块
编译运行后点击打开按钮,效果图分别如下所示。
4.2保存模块
点击保存按钮,各步骤效果图分别如下所示。
4.3清除模块
在编辑窗口输入任意字符,点击清除按钮,各步骤效果图分别如下所示。
4.心得体会
每一次实训都会有新的收获,这次实训也不例外。
我想从两方面总结下这次实训。
一是自己,尽管实训的过程也收获一个新的东西,但是模仿的多,创新的少,不如其他实训做的认真。
实训时间从1.1到1.14,15、16号验收,可以说的是给的时间充裕,但是我还是老样子,前期不慌不忙,不抓紧,拖到后期,觉得时间不够了,做的简单,浅尝辄止。
这样的坏毛病,我真得好好改改了。
自制力,计划执行力,都远远不够。
二是别人,在查找资料期间,看到了一位朋友的实训作品,他的实训作品既高大上又十分完美。
突然领悟到人与人之间的差距就是在这样不经意的差别积累中产生的。
如此认真、扎实的学习态度,令我震撼,更令我钦佩。
惊叹之余,唯有尽力完善自己,见贤思齐。
5、参考文献
1.谭浩强编著,C++程序设计第二版[M],北京:
清华大学出版社,2011