文章编辑课程设计报告

上传人:cl****1 文档编号:551983292 上传时间:2023-08-29 格式:DOC 页数:30 大小:335.50KB
返回 下载 相关 举报
文章编辑课程设计报告_第1页
第1页 / 共30页
文章编辑课程设计报告_第2页
第2页 / 共30页
文章编辑课程设计报告_第3页
第3页 / 共30页
文章编辑课程设计报告_第4页
第4页 / 共30页
文章编辑课程设计报告_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《文章编辑课程设计报告》由会员分享,可在线阅读,更多相关《文章编辑课程设计报告(30页珍藏版)》请在金锄头文库上搜索。

1、 实 验 报 告(课程设计) 课程名称: 数据结构 实验项目名称:文章编辑 学院: 计算机与软件学院 指导教师: 报告人: 实验时间 实验报告提交时间: 教务处制实验项目名称一、问题描述描述算法设计的内容、约束条件,要求达到的目标等内容。(由老师公布)输入一页文字,每行最多不超过80个字符,共N行;程序可以统计出文字、数字、空格的个数要求在光标下(与记事本相似)做插入、删除等操作要求能够存盘,并能对老文件打开进行修改操作采用的数据结构及其算法:线性结构采用顺序存储方式;查找、插入、删除二、基本要求描述算法设计项目应达到的基本要求。应该实现基本的删除插入查找打开文件以及存盘等操作.并能对打开的文

2、件里的内容进行插入删除查找等操作,并且在进行完这些操作之后能够进行存盘.三、分析与实验分析算法设计方法,拟采用的数据结构(类结构)与主要算法实现原理等内容。拟采用链表进行操作,与字符串结合.主要运用了KMP算法进行查找操作,在删除中也有涉及.void GetNext(string p, int next) /求模式串p的nextj的值 int j = 0, k = -1;next0 = -1;int length = p.length() - 1;while (j length)if (k = -1 | pj = pk)k+;j+;nextj = k;elsek = nextk;int KMP

3、Find(string p, int next, string q,int search) /用KMP算法在主串中查找子串,p为主串,q为子串int i = 0, j = 0, k = 0, plength = p.length(), qlength=q.length(),flag=0,t=0;while (i plength)if (j = -1 | pi = qj)i+;j+;elsej = nextj;if (j = qlength)flag+;searcht= i-qlength;/flag存放的是每一次匹配到的字符的首位置 t+;return flag;Search数组存放子串出现的

4、位置.四、实验步聚详细介绍实验操作步骤(程序流程图及必要说明)。开始操作 主 界 面5406321打开文件,默认在D盘调用系统函数,将文件存到D盘(D盘是代码编写时候的默认盘,可以更改)程序运行结束!输入5之后进入查找页面,输入要查找的字符(串),调用KMP算法将要查找的字符(串)在主串中出现的位置存到定义的数组中,然后在输出的时候将其变色.根据输入的字符(串)进行删除操作,在此过程中调用了KMP算法,找到了要删除的字符(串)在主串中出现的位置,将其存到数组中,然后进行逐个的删除输入数字2之后进行文章的输入,文章输入中不允许输入汉字,其它字符均可,输入#输入停止.插入是根据输入的行和列的位置进

5、行插入输入的字符(串),字符串的输入遇到回车就会停止.根据输入的位置将子串插到主串中.输入的时候,先是根据字符数组进行输入,然后存到链表中,并将输入的字符逐个的存放到刚开始定义的空的字符串中,这样方便进行之后的插入删除查找操作,而且用的KMP算法的操作对象也是字符串,因此将输入的内容存放到字符串中对之后的操作有很大的便利.五、测试与结论粘贴算法设计程序运行的截图,并加以简单文字说明。程序运行必须覆盖算法的各种情况,最后说明算法设计程序是否满足算法设计实验目标和要求。主界面:先打开文件进行操作:删除操作:查找操作:查找一个字符的情况:查找两个字符的情况:查找两个以上字符的情况:删除操作:插入操作

6、:存盘:退出:直接输入进行各种操作:查找操作:插入操作:删除操作:存盘操作:存盘的时候每行存的是80个字符.六、 实验总结主要说明算法的特点,特别是重点说明独创或创新部分,相关实验最有价值的内容,在哪些方面需要进一步了解或得到帮助,以及编程实现算法设计的感悟等内容。刚开始做的时候并没有考虑那么多,只是想实现查找某个字符出现的次数,但是那样太简单了与实验目的不符,最后用KMP算法实现各种个数的字符的查找,并且在此基础上进行各种操作(删除),存盘和打开文件的时候出现一些问题,也自行解决了.在此次试验中意识到数据结构算法的灵活性.之前学的KMP算法是进行子串和主串的匹配,没有考虑那么多,在此次试验中

7、实现了多个循环过程,从而达到实验目的.七、 程序清单程序清单如下:#include#include#include#include #include#include using namespace std;#define Max 100000struct LNode char data;LNode *next;LNode *LinkList;HANDLE hout;string S ;int sum=0,Punnum=0,Fignum=0,Spacenum=0,English=0; /定义全局变量,统计数字字母空格标点符号的个数int nextMax; /定义next数组int searchM

8、ax;LNode *SearchLinkList(LNode *L,int posnum) /查找位置int j;LNode *p;p=L;j=1;while(p & jnext ;j+;if(!p | jposnum)return NULL;return (p);int Search(LNode *L,char item) /查找元素int j=0;LNode *p;p=L;while(p)if(p-data =item)j+;p=p-next ;return j;int InsertLinkList(LNode *L,int item,int pos) / 链表的插入LNode *p,*s

9、;p=SearchLinkList(L,pos-1);if(!p)return -1;s=new LNode;s-data =item;S+=s-data ;s-next =p-next ;p-next =s;return 1;LNode *CreatLinkList(char *ch,int len) /创建单链表int i;LNode *L,*s;if(lendata =ch0;S =ch0;s-next =NULL;L=s;for(i=2;inext ;p-next =p-next -next ;item=q-data ;delete(q);return (item);int ShowL

10、inkList(LNode *L) /链表的输出LNode *p;if(!L)return -1;p=L;while(p-next )coutdata;p=p-next ;coutdata endl;return 1;void blueColor( ) /将字体变为蓝色HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(hOut,FOREGROUND_BLUE | FOREGROUND_GREEN |FOREGROUND_INTENSITY); / 前景色_加强void redColor() /将字体变为红

11、色HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(hOut,FOREGROUND_RED | FOREGROUND_INTENSITY); / 前景色_加强void greenColor() /字体变为绿色HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(hOut,FOREGROUND_GREEN |FOREGROUND_INTENSITY); / 前景色_加强void whiteColor() /将字体恢复为白色HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(hOut,FOREGROUND_BLUE | FOREGROUND_RED |FOREGRO

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号