




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
算法与数据结构课程设计报告书姓名 班级 10(17) 学号 指导教师 盐城师范学院信息科学与技术学院问题描述: 设计一个简单的文本编辑器,使其具有通常编辑器(如Notepad)具备的功能。设计的软、硬件环境: Windows xp Microsoft Visual Studio 6.0ADT(数据结构与算法)设计与功能模块:该文本编辑器使用的数据结构为单链表操作。该链表操作有3部分:PreTempNext另有全局变量*head,作为文章的头指针。故创建了以下结构体: typedef struct _list char data80;/记录一行字符int length;/记录一行字符长度 struct _list *next;/ 后继指针struct _list *pre;/前趋指针int row;/记录整篇文章的行数LinkList;在文章内容创建部分中使用线性表的链式存储,并使用全局变量对文本的各种信息进行存储;文章的内容统计、删除、查找、插入都采用链表操作完成。本程序在菜单中使用了大量的do while 语句。主菜单:1. CreatWord() 文本输入函数,实现菜单功能1,对文本的内容进行输入;2. PrintWord() 当前文本内容输出函数,实现菜单功能2,将当前存储在链表中的文本内容输出;3. CountWord() 文章内容统计函数,实现菜单功能3,对存储在链表中文本内容进行统计,包括对文本内容中的大写字母、小写字母、数字、标点符号、空格以及文章所有字数的个数的统计;图2是对其完整描述;子菜单3:子菜单4:程序输入与结果输出:主菜单:子菜单1: 子菜单3:子菜单4:实验结果分析及收获: 通过这次实训,增加了我学习软件技术的兴趣,虽然还不明确软件技术包含的具体内容,但从C语言这门课程开始,已发现程序设计的乐趣,在学习C+语言的过程中也学到了许多计算机应用基础知识,对计算机的机体也有了一个大体的了解。 通过实际操作,学会C+语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。深刻体会到“没有做不到的,只有想不到的”,“团结就是力量”,“实践是检验真理的标准”,“不耻下问”的寓意。正文 宋体 小四 行间距固定值22磅 图表中的文本为宋体 5号 行间距固定值12磅附录(源程序清单)#includestdio.h#includemalloc.h#includestring.h#includeiostream.h#includestdlib.h#includeconio.h#define Link_Size 100int NUM,C,N;typedef struct list char data80; int length; struct list *next; struct list *pre; int row; LinkList;LinkList *head;void HeadWord()/system(cls); printf(tt*n);printf(tt* 欢迎使用简单的文本编辑器 *n);printf(tt*n);LinkList *CreatWord() LinkList *temp; char ch; int i,j; head-next=(LinkList *)malloc(sizeof(LinkList); head-pre=NULL; temp=head-next; temp-pre=NULL; temp-length=0; for(i=0;idatai=0;printf(开始创建文本,请输入文章(输入#号结束):n);for(j=0;jLink_Size;j+) for(i=0;idatai=ch; temp-length+; if(ch=#) NUM=j; break; if(ch=#) temp-length=i; temp-next=NULL; break; temp-next=(LinkList *)malloc(sizeof(LinkList) ; temp-next-pre=temp; temp=temp-next; for(i=0;idatai=0;temp-row=NUM+1;system(cls);return temp;void PrintWord()int i,j;LinkList *p;p=head-next;system(cls); HeadWord();printf(n当前文章的内容是:);for(j=0;j=NUM&p!=NULL;j+)for(i=0;(idatai)!=#;i+)printf(%c,p-datai);p=p-next;void CountWord() LinkList *temp; char ch; int i,j,t; int WORD=0,word=0,space=0,num=0,punct=0,sum=0; temp=head-next; for(j=0;j=NUM;j+) for(i=0;(idatai)!=#;i+) ch=temp-datai; if(ch=A)&(ch=a)&(ch=0)&(chnext; strcpy(Data,str1); for(i=0;i=NUM;i+) for(j=0;jdataj)=Datak) k+; else if(Datak!=0)j=j-k;k=0; if(Datak=0) sum+;j=j-k+1;printf(tt第%d次出现在第%d行第%d列n,l,i+1,j+1);l+;k=0;continue; temp=temp-next; printf(ttt字符串总共出现次数为:%dnn,sum); C=sum;N=i*80+j; void DeleteWord(char *str2) char Data20; LinkList *temp,*term; int i,j,k,m,y,num; strcpy(Data,str2); for(y=0;yC;y+) num=80;k=0,m=0; temp=head; for(i=0;inext; for(j=0;jdataj)=Datak) k+; else if(Datak!=0) j=j-k;k=0; if(Datak=0) num=j;break; if(num80) break; for(;i=NUM;i+) for(;j80;j+) if(j+1data80-k+num=temp-dataj+1; elsetemp-dataj-k+1=temp-dataj+1; term=temp; temp=temp-next; j=0; LinkList * InsertWord(LinkList *temp) char Data20; int h,l; printf(ntt请输入要插入的字符或字符串:);getchar();gets(Data);printf(ntt当前文章内容为:);PrintWord();printf(ntt请输入要插入的行:);scanf(%d,&h);printf(ntt请输入要插入的列:);scanf(%d,&l); int i=(h-1)*80+l; LinkList *a;int n=strlen(Data);int m ;int insertRow=i/80+1;int row=temp-row;int j;if(insertRow=row)for(m=temp-length-1;m=(i%80)&n0;m-)temp-datam+n=temp-datam;for(m=(i%80),j=0;mdatam=Dataj; elseint r=0;for(int p=insertRow; plength-1-r;m=0&n0;m-)temp-datam+n=temp-datam;a=temp;temp = temp-pre;temp-length = 80;for(m = temp-length-n,j=0;mlength;m+,j+)a-dataj=temp-datam;for(m=temp-length-n-1;m=(i%80);m-) temp-datam+n=temp-datam;for(m=(i%80),j=0;mdatam =Dataj;return temp;void Bmenu(LinkList *temp) char str120;char str220;int a;doHeadWord();printf(ntt*n);printf(tt* 文章内容处理菜单 *n);printf(tt*n);printf(tt* 1、查找文章中的字符或者字符串 *n);printf(tt* 2、删除文章中的字符或者字符串 *n);printf(tt* 3、向文章中插入字符或者字符串 *n);printf(tt* 4、显示当前文章内容 *n);printf(tt* 5、返回主菜单 *n);printf(tt* 6、直接退出系统 *n);printf(tt*n);printf(tt 请选择:);scanf(%d,&a);switch(a)case 1: system(cls); HeadWord(); printf(ttt请输入您需要查找的字符或字符串:); getchar(); gets(str1); SearchWord(str1,temp); printf(按回车键继续);getchar();getchar();system(cls); break;case 2: system(cls); HeadWord(); printf(ttt请输入您需要删除的字符或字符串:); getchar(); gets(str2); SearchWord(str2,temp); DeleteWord(str2); printf(ttt删除 %s 后的文章为:,str2); PrintWord(); printf(按回车键继续);getchar();getchar();system(cls); break;case 3: system(cls); HeadWord(); InsertWord(temp); printf(ttt插入字符或字符串后文章为:); PrintWord(); printf(按回车键继续);getchar();getchar();system(cls); break;case 4: system(cls); HeadWord(); PrintWord(); printf(按回车键继续);getchar();getchar();system(cls); break;if(a=5) system(cls); break;if(a=6) exit(0); while(1); void menu(LinkList *temp)int t;doHeadWord();printf(n);printf(tt*n);printf(tt 主菜单 n);printf(tt*n);printf(tt* 1、文章内容输入 *n);printf(tt* 2、显示当前文章内容 *n);printf(tt* 3、进入文章内容统计菜单 *n);printf(tt* 4、进入文章内容处理菜单 *n);printf(tt* 5、退出文本编辑器 *n);printf(tt*n);printf(tt*n);printf( tt 请选择:);scanf(%d,&t);if(t6)&(t1) printf(对不起,无此功能,请输入正确的功能序号!n);elseswitch(t) case 1: system(cls); HeadWord(); temp=CreatWord(); break; case 2: system(cls); PrintWord(); pr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中级银行从业资格之中级银行业法律法规与综合能力预测复习带答案详解ab卷
- 中级银行从业资格之中级银行业法律法规与综合能力题库检测题型附参考答案详解【典型题】
- 重难点解析在职硕士章节测评练习题(含答案解析)
- 自考专业(计算机应用)能力检测试卷(重点)附答案详解
- 工业领域CCS技术应用案例分析:环保产业公共服务平台新功能
- 注册电气工程师考试历年机考真题集附参考答案详解(完整版)
- 中级银行从业资格之中级银行业法律法规与综合能力提分评估复习带答案详解(培优b卷)
- 主管护师(中级)试题预测试卷(突破训练)附答案详解
- 环保公司无形资产管理规定
- 环保公司广告投放审批办法
- 【完整版】2025年二级建造师《建筑实务》考试真题及答案
- 水库维修承包合同协议书范本
- 2025年浙江省中考英语真题(解析版)
- 2025年广西中考道法真题卷含答案解析
- 2025年国企中层干部竞聘笔试题及答案
- 2025年人民检察院公开招聘用制书记员考试题及答案
- 数学小升初试卷真题打印版
- 医院学术委员会组织职责
- 国际经济法课件马工程版
- 重庆临时摊点管理办法
- 3.4中国的海洋资源课件-八年级地理上册商务星球版
评论
0/150
提交评论