《程序设计课程设计》

上传人:d**** 文档编号:117928389 上传时间:2022-07-10 格式:DOCX 页数:13 大小:110.35KB
返回 下载 相关 举报
《程序设计课程设计》_第1页
第1页 / 共13页
《程序设计课程设计》_第2页
第2页 / 共13页
《程序设计课程设计》_第3页
第3页 / 共13页
点击查看更多>>
资源描述
课程名称:课程设计题目:姓 名:系:专 业:年 级:学 号:指导教师:职 称:计算机系计算机科学与技术课程设计报告程序设计课程设计类似于“记事本”的文本编辑器2011年 11月 7日1设计目的32设计题目及要求33设计算法分析33.1模块调用层次图33. 2核心算法描述63.3系统特点64程序代码65调试情况116结论11参考文献 12类似于“记事本”的文本编辑器1. 设计目的本课程设计的目的就是要通过一次集中的强化训练,使学生能及时巩固己学的知识,补 充未学的但又必要的内容。进行课程设计目的在于加深对程序设计基础中基础理论和基本知 识的理解,促进理论与实践的结合,进一步提高程序设计的能力。具体目的如下:1. 使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。2. 培养学生综合运用所学知识独立完成课题的能力。3. 培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位 考虑问题等科学技术人员应具有的素质。4. 提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。5. 培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解 决问题的新途径的悟性,初步培养工程意识和创新能力。6. 对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、 书面及1头表达能力进行考核。2. 设计题目及要求1 类似于“记事本”的文本编辑器设计一个文本编辑器,具有对文本等进行读写等基本操作,类似于Wmdows中的 记事本。2 要求实现如下功能:(1) 能够实现基本的文本文件读取、保存、设置字体等功能。(2) 具有菜单、工具栏和状态栏。(3) 实现其它相关功能(如字体、剪贴板的操作,查找、打印预览等功能)(4) 实现多文档界面3. 设计算法分析3. 1模块调用层次图1变量描述定义形式/名称含义/作用结构体CHOOSECOLORCHOOSEFONT一个是VC类库给出 的设置颜色的结构 体,另一个是VC类 库给出的设置字体的 结构体全局变量CNotepadApp tlieApp用tlieApp这个全局变 量来获取当前应用程 序实例的句柄liliistance文件头文件:ChildFimh MauiFrm.h notepad.h notepadDoc.h notepadView.h resource.! StdAfx.h源文件:ChildFrm.cppMainFniLcpp notepad, cpp notepadDoc.cpp notepadView.cpp StdAfx.cpp定义了从 CMDICluldWnd 派 生的文档框架窗口对 象 CTChildFrame 定义了从 CMDIFrameWnd 派生的框架窗口对象CMainFrame定义了从 CDocument 派生的文档对象 CTDoc定义了从CView派 生的视图对象 CTView标准AFX头文件函数void CNotepadView: :OnColor()void CNotepadView: :OiiFontQ用来改变字体颜色用来改变字体大小和格式2系统模块调用层次图基于而向对象的设计,没有模块调用层次图。程序的实现过程如卜:设计窗11类I注册窗11类I创建窗11显小窗I I更新窗11消息循环窗11处理函数首先由全局变量theApp,链接到VC类库中的_tWuiMam()函数,找到这个windows框架结构的入II函数后,再依次以上图示意调用各个类,最后产生文本编辑器这个框架程序。构成应用程序的对象之间的关系:3. 2核心算法描述主边框窗I I对象CMDIFrameWnd工具条对象CToorBar文档边框窗II对象CMDIChildFrame视对象CView状态栏对象CStatusB3.3系统特点1 特点:一个多文档的界面的类似于“记事本”的文本编辑器。该编辑器与记事本相比多了改变字体大小、颜色、自体类型的功能,还增加了 查找,替换,显示图片,显示时间等功能。2 分工:本程序的编写完全由我个人完成,未和任何人分组。4. 程序代码1程序代码void CNoteView:OnFont()/ TODO: Add youi conmiand handler code hereCFontDialog dig;if(IDOK=dlg.DoModal()memcpy(&lf,dlg.m_cf.lpLogFont,sizeof(LOGFONT);if(m_fbnt.m_hObject)m_font.DeleteObject();m_fbnt.CreateFontIiiduect(&lf);Invalidate。;Update Wiiidow();void CTm_font);TEXTMETRIC tm;dc.GetTextMetncs(&tm);if(0x0d=nChar)fm_stiLme .Empty。;nvptOrigm.y+tm.tniHeight;else if(0x08=nChai)fCOLORREF ch=dc.SetTextColoi(dc.GetBkColorQ);dc.TextOut(m_ptOrigm.xjik_ptOrigm.y,m_strLine);m_stiLme=m_stiLiiie.Left(m_strLine.GetLength()-1);dc.SetTextColor(clr);elsefm_stiLme+=nChar;C Size sz=dc. GetTextExtent(m_strLme);CPoint pt;pt.x=m_ptOrigin.x+sz.cx;pt.y=m_ptOngin.y;SetCaietPos(pt);dc.TextOut(m_ptOiigm.X4ii_ptOrigm.y,m_stiLine);CView: OnChai (nChan iiRepCnt, iiFlags);void CoteView:OnLButtoiiDown(UINT iiFlags, CPoint point)/ TODO: Add youi message handler code here and/or call defaultSetCaietPos(point);m_strLiiie .Empty ();m_ptOrigiii=point;C View: OiiLButtoiiDown(iiFlags, point);hit CNoteView:OnCreate(LPCREATESTRUCT IpCreateStiuct)if (CView:OnCreate(lpCreateStmct) = -1)return -1;/ TODO: Add your specialized creation code hereCClientDC dc(this);TEXTMETRIC tm;dc.GetTextMetncs(&tm);CieateSolidCaret(tm.tniAveChaiWidtlv8jm.tniHeight);ShowCaietQ;return 0;用CView生成的记事本的编写void CNoteView:OnFont()/ TODO: Add youi conmiand handler code hereCHARFORMAT m_charFormat;GetCharForniatSelection();CFontDialog dlg(m_charfdrmat,CF_BOTH|CF_NOOEMFONTS);if(dlg.DoModal0=IDOK)dlg.GetChaiFormat(m_chai-format);SetCharForniat(m_chaifdnnat);在CricKEditView类中用CfontDialog实现字体的变更static UINT indicators=ID_SEPARATOR,/ status line indicatorID_INDICATOR_CLOCK/为状态栏增加一个窗格ID INDICATOR CAPS,ID INDICATOR NUM.ID_INDICATOR_SCRL,;void CMainFrame: :OnTuner(UINT iiIDEvent)/ TODO: Add your message handler code here and/or call defaultCTime time;tmie=CTmie: GetCunentTime();/ 获得系统时间CStrmg s=tiine.Format(M%H: %M”);m_wndStatusBai-.SetPaneText(m_wndStatusBar.ConmiandToIiidex(ED_INDICArOR_CLOCK),s);更新时间窗格显示的时间CMDIFiameWnd: OnTmiei (iiIDEvent);void CMainFrame: :OnClose()/ TODO: Add your message handler code here and/or call defaultCMDIFiameWnd :OnClose();mt CMaiiiFiame:OnCieate(LPCREATESTRUCT IpCreateStmct)SetTiiner( 1,1000.NULL);retuin 0;在 CMamFrame:OnCreate 中添加2程序执行结果:我用上面的5?映实可以实现2)中的功能,但是上面【,以及2)的作用怎么在上面的程序中体现出来的?在MFC中建立基于对话框的程序,在上面加了rich edit和BUTTC 1Notepal字体字体但):字形也):大小(S):仿宋 _GB2312云宋珀体书 彩仿琥楮隶 体文文文文文 黑华华华华华 %0000粗体 粗斜体常规确定取消效果示例删除跋催)下划线(U)颜色():微软中文羽字符集():CHINESE_GB2312(3结果的讨论结果不是很让人满意,因为始终不能实现根据用户的选择更改字体的愿望,不过能实现基本 的字的输入、删除、空格等操作。5. 调试情况在调试过程中出现的一些问题:VC提供的类库函数对大小写的要求是十分严格的,所以很容易出现错误, 根据编译时提供的错误信息进行修正还是很有帮助的。成员变量要定义在头文件中,否则在程序还没有生成的时候这个变量会在 程序还没有生成之前就被析构了,就不能得到我们预期的效果了。View类始终是覆盖在框架类之上的,所以我们要捕获鼠标左键点击的操 作时要在View中进行,如果在框架类中进行编程,就会造成不必要的麻烦, 添加编程的麻烦。6. 结论这个文本编辑器的代码编写还是相对较简单的,用VC6.0的MFC开发工具,直接就可 以生成一个基于wmdows的框架类程序,不用编写很烦杂的框架程序调用函数,只需了解 MFC这个编程工具,学会查询MSDN调用微软提供的类库及各种接II,就会使编写这个记 事本程序简单很多。但是第一次接触MFC,并且MFC庞大的库函数也并不不易理解,在编 程过程中也耗费了大量的时间,主要是去学习windows框架程序的内部调用机制,以及VC 封装的各种库函数的点用方法。我用的是C+这个高级程序语言开发工具,通过这次的课程设计,增加了对MFC编程 环境的认识,也加深了对C+语言的认识了解,基本能明白windows框架程序内部生成的一 个过程以及其内部调用的机制,一定程度上也深一步地认意识到面向对象的思想。参考文献1. C+实用教程丁有和编著电子工业出版社2009年2. C+语言程序设计(第3版)郑莉董渊张瑞丰编著清华大学出版社2009年3. 数据结构(C语言版)严蔚敏吴伟民编著清华大学出版社2010年4. 软件工程导论(第5版)张海藩 编著清华大学出版社2011年5. MFC深入浅出李久进 编著1999年
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!