数据结构课程设计文章编辑器-论文.doc_第1页
数据结构课程设计文章编辑器-论文.doc_第2页
数据结构课程设计文章编辑器-论文.doc_第3页
数据结构课程设计文章编辑器-论文.doc_第4页
数据结构课程设计文章编辑器-论文.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构课程设计文章编辑器-论文1.课程设计目的信息社会的高科技,商品经济化的高效益,使计算机的应用已普及到经济和社会生活的各个领域。计算机虽然与人类的关系愈来愈密切,还有人由于计算机操作不方便继续用手工劳动。为了适应现代社会人们高度强烈的时间观念,文章编辑软件给了人们很大的方便。数据结构主要分析待处理的对象的特性以及各处理对象之间存在的关系。建立数学模型的线性数据结构,来解决线性表的线性关系。它包括网络、集合代数论、格、关系等方面。 这次课程设计的任务是简单的做一个文章编辑程序,一共分为5个模块,能统计出文字、数字、字符串空格的个数,能删除某一个字符。根据这些功能,程序需要分别调用函数stdio、stdlib、malloc、string和conio,给出了一些简单的定义,如black、letter、word、number、string等的定义。程序主要运用了模块化思想,运用顺序串和线性表来解决问题。而这些问题都可以用数据结构的知识来实现,这是个可性行的设计方案。2.课程设计的主要的内容和功能: 输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共N行;要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出统计的文章里面全部字母数、数字个数、空格个数、文章总字数(3)输出删除某一字符串后的文章。3.设计方案论证3.1程序详细设计根据程序所具有功能可以分成以下十个功能模块:3.1.1 void initstring() 初始化函数:初始化、创建一个空串;3.1.2 void assign() 赋值函数:对所创建串进行赋值;3.1.3 void C_letter() 字母统计函数:对所输入的文章进行字母统计,并按一定的格式输出文章中的字母个数:字母的数目可根据字符的ASC值来确定,从文章的第一个字符开始,判断其ASC值是否在英文字母所处的ASC值之中,如果是,此时的letter累加1;否则,letter值不变接着比较下一个字符,直到遇到Enter或i大于字符串的长度,最后输出统计结果。3.1.4 void C_blank() 空格统计函数:对所输入的文章进行空格统计,并按一定的格式输出文章中的空格个数:空格的数目可直接从文章的第一个字符开始,逐个比较字符的ASC值是否与空格的ASC相等;相等,则:blank(空格数)累加1;负责blank的值不变。接着比较下一个字符,直到遇到Enter或i大于字符串的长度,最后输出统计结果。3.1.5 void C_word() 字数统计函数:对所输入的文章进行字数统计,并按一定的格式输出文章中的总字数:单词的数目可以由非字母字符出现的次数决定。如果测出某一字符为字母,而它前面的字符为非字母,则表示“新的单词开始了”,此时使单词数累加。如果当前字符为字母而其前面的字符也是字母,则意味着仍然是原来那个单词的继续,单词不应再累加1。前面一个字符是否非字母可以从fag的值可以看出来,若fag 0,则表示前一字符是非字母;如果fag1,意味着前一个字符为字母。3.1.6 void C_number() 数字统计函数:对所输入的文章进行字数统计,并按一定的格式输出文章中的数字个数:数字的数目可根据字符的ASC值来确定,从文章的第一个字符开始,判断其ASC值是否在数字(1-9)所处的ASC值之中,如果是:此时的num(数字数)累加1;否则:num值不变接着比较下一个字符,直到遇到Enter或i大于字符串的长度,最后输出统计结果。3.1.7 void C_string() 字符串统计函数:程序运行后,从输入端输入任意一字符串,将会统计该字符串在文章中出现的次数,并按一定的格式输出该字符串在文章中出现的次数:利用输入函数,输入任意一字符串string,并将其长度赋给si,在主串S中从i(i的初始值为0)个字符起,长度和串string相等的子串,比较的过程中用j(j的初始值为0)指向字符串string的第j号字符,一次比较结束后,如果j=si,则表示在主串S中找到一个与串string相等的子串,此时使strnum(字符串个数,其初始值为0)加1,j=0;直到条件i小于等于主串长度s-len不成立。3.1.8 void Del_str() 字符串删除函数:程序运行后,从输入端输入任意一字符串,将会在文章中删除所有该字符串,并将其后的文章内容前移,最后输出删除该字符串后的文章内容。在main( )函数外用typedef定义一结构体的类型st,并定义全局结构体类型变量ss,然后将该程序分成十个模块,首先用main( )函数在各自模块中进行调用初始化函数,创建一空串,接着调用赋值函数对其赋值;赋值完毕后,按Enter键输出“人性化”的界面,然后调用选择功能函数,根据“人性化”的提示输入指令代码,执行相应的操作。 各模块自定义一函数,自定义的子函数包括:初始化函数、赋值。用的函数有字母统计函数、空格统计函数、字数统计函数、数字统计函数、标点符号统计函数、字符串统计函数、字符串删除函数以及功能选择函数等。 模块之间的调用关系图如下: ,免费, 102数据结构课程设计文章编辑器4.程序编码#define true 1#define false 0#include #include #include #include #include #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef struct char *base; char *top; int stacksize; SqStack;SqStack S,q;typedef struct char cc99; int no; Array; Array a100; int m,n,i,j; char name40; char t=n; FILE *fp;/* construct an emputy shed*/void InitStack() S.base=(char *)malloc(STACK_INIT_SIZE*sizeof(char); if(S.base=NULL) exit(1); S.top=S.base; S.stacksize=STACK_INIT_SIZE;void push(char e)if(S.top-S.base=S.stacksize) S.base=(char*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(char); /* Attempts to shrink or expand the previously allocated block to size bytes. Returns the address of the reallocated block which can be different than the original address. If the block cannot be reallocated address. If the block cannot be S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; *S.top+=e;char pop() char e; if(S.top=S.base) return false; e=*(-S.top); return e;void ClearStack() S.top=S.base; void DestroyStack() free(S.base); S.top=S.base;int StackEmpty( ) if (S.top=S.base) return true;return false;void Buffer( ) n=0; m=1; while (S.top!=S.base) n=n+1; am.no=am.no+1; am.ccn=*(S.top-1); S.top-; void save() printf(nnfile name:); scanf(%s,&name); fp=fopen(name,wb); for (i=1;i=m;i+) void main() 需要完整内容的请联系 ,本文免费, char ch,e; printf(nnnttt welcome to use the whole screen editor); printf(nn press F6 if you want to save the file,you can save the file when you seeZ n);printf(n*nn); InitStack(); ch=getchar(); while(ch!=EOF) while(ch!=EOF&ch!=n) switch(ch) case #:e=pop();break; case :ClearStack();break; default:push(ch);break; ch=getchar();数据结构课程设计文章编辑器 Buffer( ); ClearStack(); if(ch!=EOF) ch=getchar(); save( ); DestroyStack();main( ) char c; st ss; clrscr( ); printf(nntttPlease input your passage!n); printf( *n ); initstring(&ss); assign(&ss); printf(n *n); print( );print( );printf(nt WELCOM TO USE THE WHOLE SCREEN EDITOR ); printf(nt COUNT BLANKS ); printf(nt COUNT LETTER ); printf(nt COUNT WORD ); printf(nt COUNT NUMBER ); printf(nt COUNT STRING ); printf(nt DELETE ONESTR ); print(); print(); C_blank(&ss); C_letter(&ss); C_word(&ss); C_number(&ss); C_string(&ss); Del_str(&ss);5.设计结果与分析5.1开始步骤: 5.1.1使用编辑软件TE.EXE进行源程序的编写. 5.1.2使用汇编软件MASM.EXE对源程序汇编. 5.1.3使用连接软件LINK.EXE对目标文件进行连接.生成.EXE文件执行出现如图 图5-15.2 任意输入一段文章按回车键后,屏幕出现程序的运行结果,程序自动统计空格、字母、字符、数字和字符串的个数,进入另一画面,然后出现查找某一个字符在文章里出现的个数,如图5-2: 图5-25.3 输入某个字母如w,再按回车键,程序自动查询w在文章里面出现的个数,结果如图5-3:数据结构课程设计文章编辑器 图5-3 5.4 最后是删除某个字符的功能,随便输入一个文章里面的某个字母,如w,然后按回车键,程序自动将文章里面出现的所有的w删除,画面出现删除w的文章结果如图5-4: 图5-4 5.5 在编译结束运行完程序后,在同目录下生成了三个文件,文本文件里有文章的代码,其中包括生成的MPR1.c文本文档、MPR1.Obj和MPR1.Exe可执行文件,按照格式输入一段字母、空格和数字,然后按回车,程序出现“人性化”界面,包括已经完成的统计功能,下面是选择项目,输入正确的操作指令,程序正常执行其他相应的功能;否则跳出程序,程序验证正确. 5.6程序包括的字母统计函数、空格统计函数、字数统计函数、数字统计函数、标点符号统计函数、字符串统计函数,它们的时间复杂度都是O(n);而字符串删除函数虽然不采用递归手法,采用重新建立一颗不含要删结点的二插排序树,但是它的时间复杂度也是O(n).6.设计体会 这次课程设计作业使我对用高级语言编程产生了极大兴趣.通过这次课程设计也着实让自己感受到了一次编程的乐趣,从中也学到了不少知识.虽然都说“程序数据结构算法”,但我在学习运用数据结构编程之前,并没能深刻体会到这一点,直到这次课设实践. 总的来说自己感受最深的一点是:以前用C编程,只是注重如何编写函数能够完成所需要的功能,似乎没有明确的战术,只是凭单纯的意识和简单的语句来堆砌出一段程序.感觉有点像张飞打仗,有勇无谋,只要能完成任务就行.但现在编程感觉完全不同了.在编写一个程序之前,自己能够综合考虑各种因素,首先选取自己所需要的数据结构,是树还是图或是别的什么?然后选定一种或几种存储结构来具体的决定后面的函数的主要风格.最后在编写每一个函数之前,仔细斟酌比对,挑选出最适合当前状况的算法.这样,即使在完整的程序还没有写出来之前,自己心中已经有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论