ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:26.61KB ,
资源ID:4327420      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4327420.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(完整版郑州轻工业学院本科数据结构毕业课程设计总结报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

完整版郑州轻工业学院本科数据结构毕业课程设计总结报告.docx

1、完整版郑州轻工业学院本科数据结构毕业课程设计总结报告郑州轻工业学院本科数据结构课程设计总结报告设计题目:文本编辑器学生姓名:罗启福系 别:计算机科学与工程专 业:计算机科学与技术班 级:06-1学 号:指导教师:金保华2008 年 12 月 20 日郑州轻工业学院课 程 设 计 任 务 书题目 文本编辑器 专业、班级 计科06-1 学号 26 姓名 罗启福 主要内容:(1)打开文本文件(2)显示文本内容(3)插入文本行(可一次性插入多行)(4)删除指定文本行(可一次性删除多行)(5)拷贝指定的多行(6)修改行(7)查找指定的字符串 (8)替换指定的字符串(支持全部替换) (9) 统计字数 (1

2、0) 存盘 (11)另存为 (12)系统菜单、右键菜单(右击显示框或其它地方)(13)附带功能(游戏、系统时间、绘图、记事本)基本要求:要求完成:输出整篇文章内容;在文章尾部追加一行;在文章指定行插入新行;修改文章指定行;删除文章指定行;统计某一字符串在文章中出现的次数;统计文章的全部字母数;统计文章的数字个数;保存文章到磁盘指定文件;加载磁盘文章文件。运行环境:WindowsXP, 带有MFC基础类库的VC+6.0操作数据:打开与应用程序在同目录下的me.txt 或file.dat,也可使用浏览功能打开任意文本文件,然后进行各种操作。主要参考资料等:数据结构(C语言版) 作者:严蔚敏 吴伟民

3、 出版社:清华大学出版社Visual C+程序设计-基础与实例分析作者:朱晴婷 等 出版社:清华大学出版社数据结构算法实现及解析 作者:高一凡 出版社:西安电子科技大学出版社完 成 期 限: 一周 指导教师签名: 课程负责人签名: 2008年 12 月 20 日一、 设计题目(任选其一)二、 需求分析三、 运行环境(软、硬件环境)四、 算法设计的思想五、 算法的流程图六、 算法设计分析七、 源代码八、 运行结果分析九、 收获及体会一. 设计题目设计目的:文本编辑程序是一个面向用户的系统服务程序,广泛用于源程序的输入和修改,甚至用于报刊和书籍的编辑排版以及办公室的公文书信的起草和润色。设计内容:

4、文章编辑功能:输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共N行;要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。 存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出全部字母数、数字个数、空格个数、文章总字数(3)输出删除某一字符串后的文章;要求完成:输出整篇文章内容;在文章尾部追加一行;在文章指定行插入新

5、行;修改文章指定行;删除文章指定行;统计某一字符串在文章中出现的次数;统计文章的全部字母数;统计文章的数字个数;保存文章到磁盘指定文件;加载磁盘文章文件。二需求分析随着个人电脑的迅速普及,各种实用的小型软件的开发和设计也变得更要必要了。本软件是为电脑使用者做文本编辑而精心设计的,可以满足文本操作的大部分要求。文本编辑程序是一个面向用户的系统服务程序,广泛用于源程序的输入和修改,甚至用于报刊和书籍的编辑排版以及办公室的公文书信的起草和润色。功能模块描述:1 打开文件:该模块的功能主要是用于打开文本文件用于编辑。用户可直接输入与之在同一个目录下的说有文本文件,也可以实用浏览按钮打开其它任何地方的任

6、何文本文件。默认文件名为me.txt,默认路径为同目录。可使用“打开文件”按钮,也可使用系统菜单中的“文件打开”2显示文本内容: 该模块的功能是显示已经打开的文本文件。可使用“显示文件内容”按钮,也可使用系统菜单中的“编辑显示”3插入行:可使用“插入行”按钮,也可使用系统菜单中的“编辑插入行”或右键菜单中的“插入行”打开插入行数据的对话框。在第一个输入框中输入插入的位置,在第二个输入框中输入插入的总行数。然后可以在弹出的输入框中输入要插入的数据。4.删除行:可使用“删除行”按钮,也可使用系统菜单中的“编辑删除行” 或右键菜单中的“删除行”打开删除行数据的对话框。在第一个输入框中输入删除的起始位

7、置,在第二个输入框中输入删除的总行数。5.拷贝行:可使用“拷贝行”按钮,也可使用系统菜单中的“编辑拷贝行”打开拷贝行数据的对话框。在第一个输入框中输入拷贝的起始位置,在第二个输入框中拷贝删除的总行数.在第三个输入框中输入要吧拷贝的数据插入的位置。6.修改行:可使用“修改行”按钮,也可使用系统菜单中的“编辑修改行”打开修改行数据的对话框。在第一个输入框中输入修改的行位置,在弹出输入框中输入新数据内容。7.查找字符串:可使用“查找字符串”按钮,也可使用系统菜单中的“编辑查找字符串”打开查找字符串数据的对话框。在输入框中输入要查找的字符串。8.替换字符串:可使用“替换字符串”按钮,也可使用系统菜单中

8、的“编辑替换字符串”打开替换字符串数据的对话框。在第一个输入框中输入要替换的字符串,在第二个输入框中输入新数据内容。9.存盘或另存为: 该模块可以保存文本内容到指定的文件。10.统计各种字符的个数: 该模块可以统计出中文、英文、空格、数字及其它字符的个数和总字符数。11.附加功能: 附加功能有游戏、绘图、记事本及查看系统时间。功能分析:本系统主要是用于文本编辑者的文档编辑,文本编辑程序是一个面向用户的系统服务程序,广泛用于源程序的输入和修改,甚至用于报刊和书籍的编辑排版以及办公室的公文书信的起草和润色。三.运行环境VisualC+6.0带MFC基础类库,WindowsXP环境Intel Pen

9、tium以上CPU、64MB以上内存推荐使用PIII以上CPU、128MB以上内存四.算法设计的思想 计算机上的非数值处理的对象基本上都是字符串数据,随着语言加工程序的发展,产生了字符串处理的一系列的操作。本软件所使用的基本操作和存储结构为采用串的堆分配存储结构,并定义相应的操作函数。文本编辑的操作函数调用这些方法并结合MFC的库函数实现文本编辑的图形界面。串的堆分配存储: struct HString char *ch; / 若是非空串,则按串长分配存储区,否则ch为NULL int length; / 串长度 ; 串的堆分配存储的实现函数: Status StrAssign(HString

10、 &T,char *chars); Status StrCopy(HString &T,HString S); Status StrEmpty(HString S); int StrCompare(HString S,HString T); int StrLength(HString S); Status ClearString(HString &S); Status Concat(HString &T,HString S1,HString S2); Status SubString(HString &Sub, HString S,int pos,int len); void InitStri

11、ng(HString &T); int Index(HString S,HString T,int pos) ;/ 严蔚敏数据结构算法4.1 Status StrInsert(HString &S,int pos,HString T); / 算法4.4; Status StrDelete(HString &S,int pos,int len); Status Replace(HString &S,HString T,HString V); void DestroyString(); void StrPrint(HString T);现在主要分析一下Index(S,T,pos)和StrInser

12、t的基本思想:Index(S,T,pos):在主串S中取第i(i的初值为pos)个字符起、长度和串T相等的字串和串T比较,若相等,则求出函数值为i,否则i值增1直至串S中不存在和串T相等的子串为止。StrInsert(&S,pos,T):为串S重新分配大小等于串S和串T长度之和的存储空间,然后进行复制。文本编辑的操作函数:void Open(); char* List(); void Insert(); void Delete(); void Copy(); void Modify(); void Search(); void Replace(); void Save();五. 算法的流程图主

13、程序的流程图:六. 算法设计分析本软件所使用的基本操作和存储结构为采用串的堆分配存储结构,并定义相应的操作函数。文本编辑的操作函数调用这些方法并结合MFC的库函数实现文本编辑的图形界面。串的堆分配存储:struct HString char *ch; / 若是非空串,则按串长分配存储区,否则ch为NULL int length; / 串长度;串的堆分配存储的主要实现函数分析: Status StrCopy(HString &T,HString S) / 初始条件: 串S存在。操作结果: 由串S复制得串T int i; if(T.ch) free(T.ch); / 释放T原有空间 T.ch=(c

14、har*)malloc(S.length*sizeof(char); / 分配串空间 if(!T.ch) / 分配串空间失败 exit(OVERFLOW); for(i=0;i0) n=StrLength(S); m=StrLength(T); i=pos; while(iMAX_LEN) MessageBox(hWnd,插入行太多n,提示,MB_OK|MB_ICONEXCLAMATION ); return; if(n=l-1&l0) for(i=n-1;i=l-1;i-) Ti+m=Ti; n+=m; for(i=l-1;il-1+m;i+) CInsertInforDlg indlg;

15、if(IDOK=indlg.DoModal()/顺序输入待插入内容: strcpy(str,indlg.m_insertinfor.GetBuffer(0); InitString(Ti); StrAssign(Ti,str); else MessageBox(hWnd,行超出范围n,提示,MB_OK|MB_ICONEXCLAMATION );上述算法是对插入行数据函数的定义,它和MFC的一些库函数有很多的嵌套调用,需要包含很多头文件。先调用输入框的对话框输入插入的起始位置,第二个输入框是插入的总行数,它可以支持插入多行。void Replace() / 替换字符串 int i,k,f=1,c

16、ount=0; / f为继续替换标志 HString s,t; CReplaceDlg dlg; if(dlg.DoModal()=IDOK)/ 输入待替换的字符串: strcpy(str,dlg.m_replacey.GetBuffer(0); strcpy(strr,dlg.m_replaceh.GetBuffer(0); InitString(s); StrAssign(s,str); InitString(t); StrAssign(t,strr); for(i=0;in&f;i+) / 逐行查找、替换 k=1; / 由每行第1个字符起查找 while(k) k=Index(Ti,s,

17、k); / 由本行的第k个字符开始查找 if(k) / 找到 count+; CString strS; strS.Format(第%d行: %sn第%d个字符处找到。是否替换(Y/N)? ,i+1,Ti.ch,k); if(IDYES=MessageBox(hWnd,strS,提示,MB_YESNO|MB_ICONQUESTION ) StrDelete(Ti,k,StrLength(s); StrInsert(Ti,k,t); if(IDNO=MessageBox(hWnd,继续替换吗(Y/N)?n,提示,MB_YESNO|MB_ICONQUESTION ) / 中断查找、替换 f=0;

18、break; else k+=StrLength(t); if(f) MessageBox(hWnd,没找到n,提示,MB_OK); CString strT; strT.Format(共替换 %d个n,count); strT+=dlg.m_replacey; MessageBox(hWnd,strT,替换结果,MB_OK|MB_ICONEXCLAMATION );上述算法是对替换数据函数的定义,它和MFC的一些库函数有很多的嵌套调用,需要包含很多头文件。先调用输入框的对话框输入要被替换的字符串,第二个输入框是输入新字符串,它可以支持一次替换多行,甚至全部替换。七. 源代码以下为自己添加的头

19、文件程序:/ c1.h (程序名) #include #include #include / malloc()等 #include / INT_MAX等 #include / EOF(=Z或F6),NULL #include / atoi() #include / eof() #include / floor(),ceil(),abs() #include / exit() #include / cout,cin / 函数结果状态代码 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -

20、1 / #define OVERFLOW -2 因为在math.h中已定义OVERFLOW的值为3,故去掉此行 typedef int Status; / Status是函数的类型,其值是函数结果状态代码,如OK等 typedef int Boolean; / Boolean是布尔类型,其值是TRUE或FALSE/ c4-2.h 串的堆分配存储 struct HString char *ch; / 若是非空串,则按串长分配存储区,否则ch为NULL int length; / 串长度 ; Status StrAssign(HString &T,char *chars); Status StrC

21、opy(HString &T,HString S); Status StrEmpty(HString S); int StrCompare(HString S,HString T); int StrLength(HString S); Status ClearString(HString &S); Status Concat(HString &T,HString S1,HString S2); Status SubString(HString &Sub, HString S,int pos,int len); void InitString(HString &T); int Index(HSt

22、ring S,HString T,int pos) ;/ 算法4.1 Status StrInsert(HString &S,int pos,HString T); / 严蔚敏数据结构算法4.4; Status StrDelete(HString &S,int pos,int len); Status Replace(HString &S,HString T,HString V); void DestroyString(); void StrPrint(HString T);/textedit.h 文本行编辑 #includec1.h #includec4_2.h / 采用串的堆分配存储结构,

23、包含串的堆分配基本操作 #define MAX_LEN 200 / 文件最大行数 #define LINE_LEN 200 / 每行字符数最大值+1 #define NAME_LEN 50 / 文件名最大长度(包括盘符、路径)+1 void Open(); char* List(); void Insert(); void Delete(); void Copy(); void Modify(); void Search(); void Replace(); void Save();以下为自己添加的源文件程序(即各种函数的实现部分):/c4_2.cpp文件#includeStdAfx.h#in

24、cludec4_2.hStatus StrAssign(HString &T,char *chars) / 生成一个其值等于串常量chars的串T int i,j; if(T.ch) free(T.ch); / 释放T原有空间 i=strlen(chars); / 求chars的长度i if(!i) / chars的长度为0 T.ch=NULL; T.length=0; else / chars的长度不为0 T.ch=(char*)malloc(i*sizeof(char); / 分配串空间 if(!T.ch) / 分配串空间失败 exit(OVERFLOW); for(j=0;ji;j+)

25、/ 拷贝串 T.chj=charsj; T.length=i; return OK; Status StrCopy(HString &T,HString S) / 初始条件: 串S存在。操作结果: 由串S复制得串T int i; if(T.ch) free(T.ch); / 释放T原有空间 T.ch=(char*)malloc(S.length*sizeof(char); / 分配串空间 if(!T.ch) / 分配串空间失败 exit(OVERFLOW); for(i=0;iT,则返回值0;若S=T,则返回值=0;若ST,则返回值0 int i; for(i=0;iS.length&iT.length;+i) if(S.chi!=T.chi) return S.chi-T.chi; return S.length-T.length; int StrLength(HString S) / 返回S的元素个数,称为串的长度 re

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1