数据结构课程设计建文本编辑器

合集下载

数据结构课程设计_中文文本编辑(文本删除、修改、查询、统计、添加)

数据结构课程设计_中文文本编辑(文本删除、修改、查询、统计、添加)

数据结构课程设计:文本编辑(最后附完整代码)一.问题描述---------------------------------------------1二.设计思路---------------------------------------------1三.系统实现功能1.建立单链表-------------------------------------------22.显示文章内容---------------------------------------- 33.查找文章语句-----------------------------------------34.删除文章语句-----------------------------------------55.替换文章语句-----------------------------------------76.统计文章字数-----------------------------------------107.写入文本结束程序--------------------------------------10四.系统不足及需改进分------------------------------------11五.文件清单说明------------------------------------------11六:附录-------------------------------------------------12一:问题描述本次我所做的课程设计为:文本编辑,主要内容是对中文文本的显示、查找、删除、替换、统计、写入文本。

在程序选择功能后根据提示,输入任意长度中文语句即可对文章进行操作。

二:设计思路文本编辑,顾名思义就是对一遍文章进行编辑,我所设计的是对中文的编辑。

中文有两个字节(汉字、标点),通常情况下通过文件输入流仅仅可以取一个字节或者是以空格为分隔符取单词这仅仅对英文的文章适用,周六周日我从网上搜索相关方法,未找到一条切实可用的对中文字符操作的方法。

数据结构简易文本编辑器

数据结构简易文本编辑器

数据结构简易文本编辑器在当今数字化的时代,文本编辑是我们日常工作和生活中经常进行的操作。

从撰写文章、编辑代码到简单的记事,都离不开文本编辑器的帮助。

而数据结构在文本编辑器的设计和实现中起着至关重要的作用,它决定了编辑器的性能、功能和用户体验。

首先,让我们来了解一下什么是数据结构。

简单来说,数据结构是一种组织和存储数据的方式,以便于对数据进行访问、修改和操作。

常见的数据结构包括数组、链表、栈、队列、树和图等。

在文本编辑器中,通常会用到多种数据结构来实现不同的功能。

对于一个简易的文本编辑器,我们可以使用线性的数据结构来存储文本内容。

一种常见的选择是使用字符数组。

字符数组可以直接存储文本中的字符,通过索引可以快速访问和修改特定位置的字符。

但这种方式存在一些局限性,比如当需要插入或删除大量字符时,可能会导致效率低下,因为需要移动大量后续的字符。

为了提高插入和删除操作的效率,我们可以考虑使用链表。

链表中的每个节点存储一个字符和指向下一个节点的指针。

在进行插入和删除操作时,只需要修改相关节点的指针即可,不需要移动大量的数据。

但链表的随机访问性能较差,如果需要频繁访问特定位置的字符,可能会比较耗时。

除了存储文本内容的数据结构,我们还需要考虑如何实现文本的编辑操作。

比如,当用户输入新的字符时,我们需要将其插入到适当的位置。

如果使用字符数组,我们可以先找到插入位置,然后将后续的字符向后移动,再将新字符插入。

如果使用链表,则可以直接在插入位置创建新的节点,并调整相关指针。

删除操作类似。

对于字符数组,需要将删除位置后的字符向前移动。

对于链表,只需修改相关指针,释放被删除的节点。

为了实现文本的查找和替换功能,我们可以使用一些搜索算法,比如顺序搜索或二分搜索。

如果文本内容是有序的,二分搜索可以大大提高查找的效率。

另外,撤销和重做功能也是文本编辑器中常见的需求。

为了实现这两个功能,我们可以使用栈来保存操作的历史记录。

当执行一个操作时,将其相关信息压入撤销栈。

简单行编辑器 数据结构 课程设计

简单行编辑器 数据结构 课程设计

简单行编辑器数据结构课程设计概述:本文旨在设计一种简单的行编辑器,以满足基本的文本编辑需求。

行编辑器是一种常见的文本编辑工具,它允许用户在文本中进行插入、删除、挪移光标等操作。

为了实现这一目标,我们将采用数据结构来管理文本的存储和操作。

1. 数据结构设计:1.1 文本存储:我们可以使用链表作为文本的基本数据结构,每一个节点存储一个字符。

链表的每一个节点包含一个字符和指向下一个节点的指针。

这样的设计可以方便地进行插入和删除操作,同时保持文本的顺序。

1.2 光标位置:光标的位置可以用一个指针指向链表中的某个节点。

这个指针可以指向一个字符之前、之后或者字符本身的位置。

通过挪移光标指针,用户可以在文本中进行插入、删除和挪移操作。

2. 功能实现:2.1 插入操作:用户可以在光标当前位置插入一个字符。

插入操作包括以下步骤:- 创建一个新节点,存储要插入的字符。

- 将新节点插入到光标所在节点的前面或者后面,更新链表的指针。

2.2 删除操作:用户可以删除光标当前位置的字符。

删除操作包括以下步骤:- 找到光标所在节点。

- 更新链表的指针,将光标所在节点从链表中移除。

2.3 光标挪移操作:用户可以通过挪移光标来改变插入和删除操作的位置。

光标挪移操作包括以下步骤:- 根据用户输入的指令,将光标指针向前或者向后挪移一个节点。

2.4 文本显示:用户可以查看当前编辑的文本内容。

通过遍历链表,将字符挨次输出即可。

3. 用户界面设计:为了方便用户操作,我们可以设计一个简单的用户界面,包括以下组件:- 文本显示区域:显示当前编辑的文本内容。

- 光标位置指示器:显示光标当前位置。

- 命令输入框:接收用户输入的命令。

4. 实例演示:假设用户输入以下命令序列:- 插入字符 'A':光标指向开头,文本变为 "A"。

- 插入字符 'B':光标指向 'A' 后面,文本变为 "AB"。

C语言版数据结构课程设计-文章编辑系统

C语言版数据结构课程设计-文章编辑系统

文章编辑系统1、课程设计目的(1)较熟练地掌握C语言的基本内容及程序设计的基本方法与编程技巧。

(2)较熟练地掌握在系统上编辑、编译、连接和运行C 程序的方法。

(3)通过设计一个完整程序,掌握数据结构的算法编写、类C 语言算法转换成C 程序并上机调试的基本方法。

2、课程设计方案论证2.1 设计思路(1)定义结构体 struct line ,文本行采用顺序存储,行与行之间采用链式存储图1:功能模块图(2)主要函数:int CountNumber(LINE * &head) /*统计数字数*/沈 阳 大 学课程设计说明书 N O.2文章编辑系统统计字符删除字符统计文字查找字符开始*p=head,count=0 int len=str len(p->data)i=0i<lenp->data[i]>=48 && p->data[i]<=57count++i++p=p->next!p=NULL结束NYNYN图2:统计数字函数流程图沈阳大学课程设计说明书 N O.3int FindString(LINE * &head,char *str) /*统计str 在文章中出现的次数*/沈 阳 大 学开始count=0;h=0;len1=0; len2=strlen(str);p->data[i]==str[0]i++k=0;j=0;p->data[i+j]==str[j]k++;j++;k=len2count++; i=i+k-1;结束YNYNNY图3:统计str 在文章中的出现次数2.2 源程序清单#include <string.h>#include <stdio.h>typedef struct line{char *data;struct line *next;}LINE;void Create(LINE * &head){LINE *p;printf ("请输入一页文章,以#为结尾(每行最多输入80字符!):\n");p=(struct line*)malloc(sizeof(struct line)); head=p;char tmp[200];for(;1;){gets(tmp);if(strlen(tmp)>80){printf("每行最多输入80字符");break;}if(tmp[0]==35)break;p=p->next=(struct line*)malloc(sizeof(struct line));p->data=(char*)malloc(strlen(tmp));strcpy(p->data,tmp);if(tmp[strlen(tmp)-1]==35){p->data[strlen(tmp)-1]='\0';沈阳大学break;}}p->next=NULL;head=head->next;}int CountLetter(LINE * &head){LINE *p=head;int count=0;do{int Len=strlen(p->data);for(int i=0;i<Len;i++)if((p->data[i]>='a'&&p->data[i]<='z')||(p->data[i]>='A'&&p->data[i]<='Z'))count++;}while((p=p->next)!=NULL);return count;}int CountNumber(LINE * &head){LINE *p=head;int count=0;do{int Len=strlen(p->data);for(int i=0;i<Len;i++)if(p->data[i]>=48 && p->data[i]<=57)count++;沈阳大学while((p=p->next)!=NULL);return count;}int CountSpace(LINE * &head){LINE *p=head;int count=0;do{int Len=strlen(p->data);for(int i=0;i<Len;i++)if(p->data[i]==32)count++;}while((p=p->next)!=NULL);return count;}/*统计文章的总字数*/int CountAll(LINE * &head){LINE *p=head;int count=0;do{count+=strlen(p->data);}while((p=p->next)!=NULL);return count;}沈阳大学int FindString(LINE * &head,char *str){LINE *p=head;int count=0;int h=0;int len1=0;int len2=strlen(str);int i,j,k;do{len1=strlen(p->data);for(i=0;i<len1;i++){if(p->data[i]==str[0]){k=0;for(j=0;j<len2;j++)if(p->data[i+j]==str[j]) k++;if(k==len2) {count++;i=i+k-1;}}}}while((p=p->next)!=NULL);return count;}void delstringword(char *s,char *str){char *p=strstr(s,str);沈阳大学char tmp[80];int len=strlen(s);int i=len-strlen(p);int j=i+strlen(str);int count=0;for(int m=0;m<i;m++)tmp[count++]=s[m];for(int n=j;n<len;n++)tmp[count++]=s[n];tmp[count]='\0';strcpy(s,tmp); }void DelString(LINE * &head,char *str){LINE *p=head;do{if(strstr(p->data,str)!=NULL)delstringword(p->data,str);}while((p=p->next)!=NULL);}void OutPut(LINE * &head){LINE *p=head;do{printf("%s\n",p->data);}while((p=p->next)!=NULL);沈阳大学void main(){int i=0;int operate;LINE * head;Create(head);printf("输入的文章为:\n");OutPut(head);printf("\n");printf("全部字母数:%d \n",CountLetter(head));printf("数字个数:%d \n",CountNumber(head));printf("空格个数: %d \n",CountSpace(head));printf("文章总字数: %d \n",CountAll(head));char str1[20],str2[20];printf("\n");printf("**********************\n");printf("* 菜单 *\n");printf("**********************\n");printf("* 1---统计字符串 *\n");printf("* 2---删除字符串 *\n");printf("* 0---退出 *\n");printf("**********************\n");do{ printf("请输入你要选择的操作: ");scanf("%d",&operate);switch(operate){沈阳大学case 1:printf("请输入要统计的字符串:");scanf("%s",&str1);printf("%s出现的次数为:%d \n",str1,FindString(head,str1));printf("\n");CountAll(head);CountNumber(head);CountLetter(head);CountSpace(head);break;case 2:printf("请输入要删除的某一字符串:");scanf("%s",&str2);DelString(head,str2);printf("删除%s后的文章为:\n",str2);OutPut(head);break;case 0:;break;}}while(operate!=0);}沈阳大学3、课程设计运行结果与分析图3:初始界面沈阳大学图4:运行界面沈阳大学输入1:统计字符数图5:统计字符界面沈阳大学输入2:删除字符图6:删除字符沈阳大学输入0:退出程序图7:退出程序沈阳大学4、课程设计体会此次课程设计使我对数据结构方面的知识有了更加深入的了解,也使我认识到自己在学习编程方面还有很多的不足。

数据结构文本编辑器

数据结构文本编辑器

数据结构课程设计报告一.需求分析1.题目及要求名称:简单的文本编辑器内容:输入一页文字,程序可以统计出文字、数字、空格的个数。

静态存储一页文章,每行最多不超过80个字符,共N行。

要求:(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一字符或者子串,并将后面的字符前移。

(4)插入某一字符或者子串。

(5)查找某一字符或者子串。

存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。

输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章。

通过题目及其要求可知,本程序应实现以下功能:(1)文章内容的输入:包括字母、标点符号、数字等;(2)文章内容的统计:包括文章中大写字母、小写字母、数字、标点符号、空格以及文章所有字数的个数的统计;(3)文章内容的处理:包括对文章内容的查找、删除以及对指定位置进行插入操作,其中在查找的过程中统计出该字符或字符串在文章中出现的次数;2.问题分析本程序是对一段英文文章的内容进行处理,存储方式采用链式存储,没有文件操作,故本程序对其文本内容的所有操作都是在链表中进行的。

对于文本的输入,采用头插法将文本信息存储到链表已申请好的存储空间中,在此部分设计中最大的问题在于输入文章过程中输入的字符数大于80时如何换行;对于文本内容的统计,使用循环对已存储的文章进行匹配,大写字母数、小写字母数、空格数、数字数直接通过比较即可得到,标点符号通过ASCⅡ比较即可得到;对于文本内容的处理,查找部分仍是使用循环对已存储的文章进行匹配,判断需要查找的字符或者字符串是否与文章中某部分内容相同,如果存在相同的记录相同的个数及位置并输出个数及位置。

数据结构课程设计小型文本编辑器的设计

数据结构课程设计小型文本编辑器的设计

数据结构课程设计小型文本编辑器的设计沈阳航空航天大学课程设计报告课程设计名称:数据结构课程设计课程设计题目:小型文本编辑器的设计院(系):计算机学院专业:班级:学号:姓名:指导教师:目录沈阳航空航天大学 ........................... 错误!未定义书签。

1 程序模块说明 ............................ 错误!未定义书签。

1.1程序模块............................. 错误!未定义书签。

1.2模块功能说明......................... 错误!未定义书签。

2 程序流程图说明 .......................... 错误!未定义书签。

2.1主函数流程图......................... 错误!未定义书签。

2.2显示模块流程图....................... 错误!未定义书签。

2.3查找模块流程图....................... 错误!未定义书签。

2.4替换模块流程图. ...................... 错误!未定义书签。

2.5将文本初始化......................... 错误!未定义书签。

3 函数的描述 .............................. 错误!未定义书签。

3.1串的初始化........................... 错误!未定义书签。

3.2查找函数............................. 错误!未定义书签。

3.3 替换函数........................... 错误!未定义书签。

3.4 串的块链存储....................... 错误!未定义书签。

4 程序测试和运行的结果..................... 错误!未定义书签。

4.1初始化一个串......................... 错误!未定义书签。

数据结构课程设计之文本编辑器

数据结构课程设计之文本编辑器

##大学数据结构课程设计报告题目:简易文本编辑器院(系):计算机工程学院学生姓名:班级:学号:____起迄日期: 2011年6月20日至2011年6月30日指导教师:2010—2011年度第 2 学期一、需求分析1.问题描述:简易文本编辑器主要是针对文字编辑处理,对于如何编辑一个简易文本编辑器程序我们可以利用线性表示实现其功能,线性表便于插入删除查找功能,而文本编辑器需要用到这些功能,因此可以利用线性表实现。

对于文本编辑器应该具有插入、删除、查找等功能,并且可以显示所有输入数据,可正确存盘、取盘,正确显示编辑的文字长度。

2.基本功能:简易文本编辑器应该具有的功能:图形菜单界面:位置查找:数据查找:显示所有输入数据:插入:删除文本信息:可正确存盘、取盘:正确显示长度:3.输入输出:输入数据,数据类型为整形,且输入的字符或数字不多于100个,输出为输出输入的数据,输出输入数据的长度,输出插入元素及插入后的数据,输出查找元素的,输出的数据均为整形。

二、概要设计1.设计思路:首先构造一个线性表, 然后利用线性表的存储结构顺序存储方式,实现文本的编辑添加查找删除.2.数据结构设计:程序采取了线性结构利用顺序存储的方法,采用该结构的原因是线性表利于存储、插入、删除、查找、修改等功能,使用它可以使程序运行简单方便。

定义程序中用到的抽象数据类型;抽象数据类型线性表的定义如下:ADT SqList{数据对象:D={ai | ai∈data,i=1,2,3……,n,n≥0}数据关系:R1={<ai-1,ai>| ai-1,ai∈D,i=1,2,3,……,n}基本操作:InitList(*L)操作结果:构造一个空的线性表L。

GetLength(L)初始条件:线性表L已存在。

操作结果:返回L中数据元素的个数。

GetElem( L, i,*e)初始条件:线性表L已存在,1≤i≤L.Length.操作结果:查找指定的某元素i,并将值赋给e,用e 输出。

简易文本编辑器课程设计报告说明书

简易文本编辑器课程设计报告说明书

简易文本编辑器摘要:此次课程设计设计了一个简易的文本编辑器,该程序主要用于文本编辑的几个操作,主要由C语言实现。

基于对文本编辑的需求该程序的功能在于:输入一页文字,程序可以统计出文字、数字、空格的个数统计某一字符串在文章中出现的次数,并输出该次数;删除某一子串,并将后面的字符前移。

程序算法立足于书本并适当改良,能够实现文本的一些特定操作。

关键词:文本编辑 C语言程序算法Abstract:The curriculum designed a simple text editor, which is mainly used for text editing of several operations, mainly by the C programming language. Based on the needs of the program text editing ,the program can input a text, count the number of words numbers and spaces in the file, statistics the number of a string of in the article, and output the number of times; to remove a substring, and the characters behind the forward. Program algorithm based on the book also have some improvement. Able to achieve some specific text operations.Key words:Text editing C programming language Program algorithm1引言目前社会上文字编辑系统发展飞快,文本编辑软件在人们的日常生活和学习、科研、生产等各个方面有着重要的应用。

简易文本编辑器数据结构课设

简易文本编辑器数据结构课设

摘要当下C++语言是一门重要的课程学习,学会运用并结合其他的知识一起解题是一件值得我们重视的,数据结构是一门结合C++知识的重要课程,因此我们要学会将平时课本的知识运用到我们现实生活当中,这样才能让我们所学的知识更加深刻。

简易文本编辑器的问题就是一个例子,传统的纸质文档已经不能满足大家的需求,有容易丢失、查找不方便等缺点。

计算机信息管理为人们的生活、工作提供了方便,提高了效率。

“简易文本编辑器”就是为了帮助老师、同学或其他一些需要使用文本编辑的人员进行管理和分析的一种计算机应用程序。

关键词:简易文本编辑器,数据结构,顺序表。

目录一、需求分析11.1问题描述11.2基本任务1二、概要设计12.1主界面设计12.2数据结构设计1三、详细设计23.1清空内容模块23.2打开文件模块23.3输入模块23.4插入模块23.5删除模块23.6替换模块23.7显示模块23.8保存模块33.9系统层次图3四、测试结果34.1文本编辑器主界面34.2系统功能4五、调试分析7六、心得体会8七、参考文献9八、程序源代码10一、需求分析1.1问题描述传统的纸质文档已经不能满足大家的需求,有容易丢失、查找不方便等缺点。

计算机信息管理为人们的生活、工作提供了方便,提高了效率。

“简易文本编辑器”就是为了帮助老师、同学或其他一些需要使用文本编辑的人员进行管理和分析的一种计算机应用程序。

1.2基本任务通过用户调查分析和实际需求,系统需要实现如下基本任务:(1)输入数据信息建立文本;(2)打开文本读取已保存的信息;(3)插入新的信息到文本中;(4)删除不再需要的文本信息;(5)替换不需要的文本信息;(6)显示所有的文本信息;(7)保存所输入、插入、替换过的文本信息;(8)清空文本信息。

二、概要设计2.1主界面设计为了实现简易文本编辑器的各项功能,设计一个含有多个菜单项的主控菜单模块以操作系统的各项功能,进而方便用户使用系统。

2.2数据结构设计为实现数据的有序存储,该编辑器应该用顺序存储结构来存储输入的信息。

数据结构课程设计报告-文本编辑器参考模板

数据结构课程设计报告-文本编辑器参考模板

《数据结构》课程设计报告题目:基于顺序结构的文本编辑器的设计专业:计算机科学与技术班级:姓名:学号:指导教师:成绩:2014-2015学年第一学期目录1课程设计内容 (1)1.1 设计内容 (1)1.2 设计任务 (1)1.3 具体要求 (1)2 概要设计 (1)2.1 系统的功能简介 (1)2.2 各个模块之间的主要关系 (2)3 设计过程及代码分析 (2)4 设计结果与分析 (15)5 源程序 (16)6 总结 (24)7 致谢 (24)8 参考文献 (25)1 课程设计内容1.1 设计内容《文本编辑器》主要根据课程设计要求进行设计的,本次课程设计的内容及要求是设计一个文本编辑器,能实现文本内容输入、显示、统计、处理、保存和退出文本编辑器等基本功能,主界面具有图形菜单界面、输入文本、打开文件、显示当前文本内容、进入文本内容统计菜单、进入文本内容处理菜单、保存、退出文本编辑器。

其中文本内容统计菜单包含大小写字母、数字、标点符号、空格、所有字符的统计;文本内容处理菜单包含查找、删除文章中的字符或者字符串,向文章中插入字符或者字符串,从文章中复制字符或者字符串,修改行内容,替换字符或者字符串。

1.2 设计任务主要利用C语言的文件操作能力设计一个简单的文本编辑器,对于文本编辑器来说,数据结构相对简单,使用一个有较大长度的顺序表即可,在程序中可采用一维数组来实现。

使用数组表示的顺序表来存储文本具有简洁、访问方便、输出方便等特点。

1.3 具体要求明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高学生用数据结构进行程序设计的能力,重点提高用C语言进行文件操作和绘图应用的编程技术水平;初步了解软件开发的一般方法和步骤;提高撰写技术文档的能力。

2 概要设计2.1 系统的功能简介该系统的主要功能是实现文本内容输入、显示、统计、处理、保存。

首先,输入文本内容并保存;选择打开文件,打开刚才保存的文件;选择显示当前文章内容,可以预览文件内容;进入文章内容统计菜单,可以对文章中大写字母、小写字母、数字、标点符号、空格、所有字数的统计;进入文章内容处理菜单,查找、删除文章中的字符或者字符串,向文章中插入字符或者字符串,从文章中复制字符或者字符串,修改行内容,替换字符或者字符串。

文本编辑器课程设计

文本编辑器课程设计

文本编辑器 课程设计一、课程目标知识目标:1. 学生能理解文本编辑器的基本功能和操作方法。

2. 学生掌握文本编辑器的排版技巧,包括字体、字号、颜色设置,以及段落格式的调整。

3. 学生了解文本编辑器中的查找与替换功能,并能运用其提高编辑效率。

技能目标:1. 学生能够熟练运用文本编辑器进行文档的创建、编辑和保存。

2. 学生掌握文本编辑器的快捷键操作,提高文本编辑速度。

3. 学生通过实践操作,培养解决问题的能力和团队协作能力。

情感态度价值观目标:1. 学生培养对信息技术课程的兴趣,增强学习动力。

2. 学生认识到文本编辑在日常生活和未来工作中的重要性,提高职业素养。

3. 学生在团队协作中,学会分享与交流,培养合作精神和集体荣誉感。

课程性质:本课程为信息技术课程,旨在让学生掌握文本编辑器的使用技巧,提高文字处理能力。

学生特点:六年级学生已经具备一定的计算机操作基础,对新鲜事物充满好奇心,喜欢动手实践。

教学要求:结合学生特点,注重理论与实践相结合,以任务驱动法引导学生自主探究和合作学习,关注学生的个体差异,使每个学生都能在课程中收获成长。

通过具体的学习成果分解,为后续教学设计和评估提供依据。

二、教学内容1. 文本编辑器简介:介绍文本编辑器的概念、作用和常见类型,使学生对其有一个整体认识。

教材章节:第一章 认识文本编辑器2. 文本编辑器基本操作:包括新建、打开、保存、关闭文档,以及撤销与重做操作。

教材章节:第二章 文本编辑器的基本操作3. 文本格式设置:教授字体、字号、颜色设置,以及段落格式调整。

教材章节:第三章 文本格式设置4. 排版技巧:讲解文本对齐、缩进、行距、项目符号等排版方法。

教材章节:第四章 文本排版技巧5. 查找与替换:介绍文本编辑器中的查找与替换功能,提高编辑效率。

教材章节:第五章 查找与替换6. 文本编辑快捷键:学习常用的文本编辑快捷键,提高编辑速度。

教材章节:第六章 文本编辑快捷键7. 实践操作:安排综合实践任务,让学生运用所学知识完成文档编辑,巩固所学内容。

c设计文本编辑器课程设计

c设计文本编辑器课程设计

c 设计文本编辑器课程设计一、教学目标本课程的设计文本编辑器课程旨在让学生掌握文本编辑器的基本概念、原理和应用,培养学生具备文本编辑器的使用和开发能力。

具体的教学目标如下:1.知识目标:(1)了解文本编辑器的发展历程和基本原理。

(2)掌握文本编辑器的主要功能和特点。

(3)了解文本编辑器的应用领域和前景。

2.技能目标:(1)能够熟练使用常见的文本编辑器。

(2)能够根据实际需求,编写简单的文本编辑器程序。

(3)能够对文本编辑器进行基本的维护和优化。

3.情感态度价值观目标:(1)培养学生对文本编辑器的兴趣,提高学生主动学习的积极性。

(2)培养学生团队协作的精神,提高学生的沟通与协作能力。

(3)培养学生勇于创新、追求卓越的品质,提高学生的自主创新能力。

二、教学内容本课程的教学内容主要包括以下几个部分:1.文本编辑器概述:介绍文本编辑器的发展历程、基本原理和主要功能。

2.文本编辑器的使用:讲解如何熟练使用常见的文本编辑器,包括基本操作和高级功能。

3.文本编辑器程序设计:介绍文本编辑器的程序设计方法,包括界面设计、字符处理、文件操作等。

4.文本编辑器的维护与优化:讲解如何对文本编辑器进行维护和优化,以提高性能和稳定性。

5.文本编辑器的应用案例:介绍文本编辑器在实际应用中的案例,激发学生的学习兴趣和应用能力。

三、教学方法为了提高教学效果,本课程将采用以下教学方法:1.讲授法:通过讲解文本编辑器的基本概念、原理和应用,使学生掌握相关知识。

2.案例分析法:分析文本编辑器的实际应用案例,使学生更好地理解文本编辑器的功能和作用。

3.实验法:让学生动手编写文本编辑器程序,提高学生的实际操作能力和实践能力。

4.讨论法:学生进行小组讨论,培养学生的团队协作能力和沟通与表达能力。

四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:选用一本与文本编辑器相关的教材,作为学生学习的主要参考资料。

2.参考书:提供一些与文本编辑器相关的参考书籍,供学生拓展阅读。

数据结构课程设计文章编辑系统

数据结构课程设计文章编辑系统

数据结构课程设计文章编辑系统在当今数字化的时代,文章编辑系统成为了人们日常工作和学习中不可或缺的工具。

无论是撰写学术论文、创作小说,还是编写简单的报告,一个高效、便捷且功能强大的文章编辑系统都能极大地提高工作效率和质量。

本次数据结构课程设计的目标就是构建这样一个实用的文章编辑系统。

首先,让我们来明确一下这个文章编辑系统的基本需求和功能。

它应该能够支持用户进行文本的输入、修改、删除、查找和替换等操作。

同时,还应该具备对文本进行格式设置的能力,比如字体、字号、颜色、加粗、倾斜等。

此外,为了方便用户对长篇文章的管理,系统需要提供段落的缩进、对齐、分页等功能。

对于用户输入的文本,系统要能够进行有效的存储和读取,以便在需要时能够快速加载和保存用户的工作成果。

为了实现上述功能,我们需要选择合适的数据结构来存储和管理文章的内容。

在这个系统中,字符串是最基本的数据类型,用于存储文本中的字符。

然而,单纯的字符串无法满足复杂的编辑需求,因此我们引入了链表、数组和树等数据结构。

链表是一种非常灵活的数据结构,适合用于存储动态增长的文本内容。

当用户不断输入新的文本时,我们可以通过链表轻松地添加新的节点来扩展存储空间。

而且,在进行文本的删除和修改操作时,链表的删除和插入操作相对简单,能够高效地完成任务。

数组则适用于存储固定长度的文本片段,比如段落。

通过数组,我们可以快速地访问和修改特定位置的文本内容,提高系统的响应速度。

树结构,比如二叉树,可以用于构建索引,以加速文本的查找和替换操作。

通过将文本中的关键字构建成二叉树,我们能够快速定位到需要查找或替换的文本位置,大大提高了系统的性能。

在设计文章编辑系统的界面时,我们要充分考虑用户的使用习惯和操作便捷性。

界面应该简洁明了,各个功能按钮布局合理,易于用户发现和操作。

比如,输入框应该足够大,以方便用户输入较长的文本;格式设置按钮应该清晰地标识出其功能,避免用户产生误解。

同时,系统还应该提供实时的预览功能,让用户能够直观地看到文本的格式效果。

数据结构课程设计--简易文本编辑器

数据结构课程设计--简易文本编辑器

课程设计说明书课程名称:数据结构课程设计专业:电子信息科学与技术班级:2012-1 设计人:山东科技大学2015年 7 月 11 日目录1需求分析说明 (2)1.1主函数模块 (2)1.2菜单显示及输出子模块 (2)1.3查找功能子模块 (2)1.4替换功能子模块 (2)1.5插入功能子模块 (3)1.6块移动功能模块 (3)1.7删除功能模块 (3)1.8读盘功能模块 (3)1.9存盘功能模块 (3)1.10测试数据 (3)2概要设计说明 (4)2.1设计思想 (4)2.2模块调用图 (4)2.3程序代码简介 (4)3详细设计说明 (7)3.1主函数模块 (7)3.2菜单显示及输出子模块 (7)3.3查找功能子模块 (7)3.4替换子模块 (9)3.5插入子模块 (10)3.6块移动模块 (11)3.7删除模块 (12)3.8读盘功能模块 (13)3.9存盘功能模块 (15)3.10流程图 (16)4调试分析 (17)4.1遇到的问题 (17)4.2测试结果 (18)5用户使用说明 (22)6课程设计总结 (24)1需求分析说明简易文本编辑器的总体目标:在Visual Studio的开发环境下,利用所学C 语言和数据结构的相关知识,开发一个具有良好人机界面的简易文本编辑器,实现对文本的简单修改,从而达到编辑文本以及查看文本信息的目的。

基本功能如下:(1)界面友好,易与操作。

采用菜单或其它人机对话方式进行选择。

(2)能正确打开所键入的文本路径,并能够读取相应文本信息。

(3)能对打开的文本进行文本信息显示、替换、查找、块移动、删除等基本操作。

(4)能够正确对修改后的文本内容存盘。

(5)正确显示文本总行数。

以下是各功能模块的功能描述:1.1主函数模块主函数模块的主要功能是初始化菜单界面,功能按键选择并调用相关模块,实现软件功能。

1.2菜单显示及输出子模块菜单显示模块的主要功能是将菜单进行显示,内容包括本设计的主要功能及相关代号。

文字编辑课程设计(数据结构)

文字编辑课程设计(数据结构)

⽂字编辑课程设计(数据结构)摘要设计⼀个⽂字编辑程序,⽤来实现以下功能:分别统计出其中英⽂字母和空格数及整篇⽂章总字数;统计某⼀字符串在⽂章中出现的次数,并输出该次数;删除某⼀⼦串,并将后⾯的字符前移;插⼊⼀⼦串,并输出插⼊⼦串后的⽂章。

⽤线性表实现存储。

关键词:⽂字编辑、线性表、串⽬录1.问题描述 (1)2.需求分析 (1)3.概要设计 (1)3.1抽象数据类型定义 (1)3.2模块划分 (2)4.详细设计 (3)4.1函数定义 (3)4.2主要算法的描述 (4)5.测试分析 (7)6.课程设计的总结与体会 (8)参考⽂献 (9)附录(源程序清单) (10)1.问题描述输⼊⼀页⽂字,程序可以统计出⽂字、数字、空格的个数。

(1) 分⾏输出⽤户输⼊的各⾏字符;(2) 分4⾏输出"全部字母数"、"数字个数"、"空格个数"、"⽂章总字数";(3) 输出删除某⼀字符串后的⽂章。

2.需求分析(1)静态存储⼀页⽂章,每⾏最多不超过80个字符,共N⾏(2)分别统计出其中英⽂字母数和空格数及整篇⽂章总字数;(3)统计某⼀字符串在⽂章中出现的次数,并输出该次数;(4)删除某⼀⼦串,并将后⾯的字符前移;(5)插⼊⼀⼦串,并输出插⼊⼦串后的⽂章;(6)存储结构使⽤线性表,分别⽤⼏个⼦函数实现相应的功能。

3.概要设计3.1抽象数据类型定义(1)定义最⼤⾏数为10#define LINK_INIT_SIZE 10 ;(2)定义全局变量,Num⽤来记录⾏号,C⽤来记录⼦串在主串中出现的总次数int NUM,C,N;(3)线性表的定义typedef struct _list{char s[80];int length;struct _list *next;struct _list *pre;int row;}linklist;linklist *head;(4)定义⼦函数Get(),⽤来输⼊⽂章linklist * Get()接收输⼊字符ch=getchar();(5)定义⼦函数out,⽤来输出⽂章void Out()。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机学院网络工程专业数据结构课程设计题目:简易文本编辑器班级:网工10101班姓名:同组人姓名:起迄日期: 2011-12-27~2011-12-30 课程设计地点: E3-A513指导教师:徐晓蓉完成日期:2011年12月计算机学院网络工程专业数据结构课程设计题目:简易文本编辑器班级:网工10101班姓名:学号:201017030143起止日期: 2011-12-27~2011-12-30 设计地点: E3-A513指导教师:完成日期:2011年12月目录一. 设计的目的和要求 (1)课程设计的目的 (1)基本要求 (1)二. 课程设计任务要求 (1)需求分析 (1)三. 具体设计 (1)主程序流程图 (1)详细设计功能分析 (1)函数分析源程序代码 (6)四. 调试分析和测试结果 (19)代码测试截图结果分析 (19)问题解决与分析 (23)五. 总结心得与体会 (24)附录一参考文献 (25)一.课程设计目的和要求●设计目的数据结构课程设计是一门实践性非常强的课程,不但结合了C语言的设计基本知识,更加注重技能的培养,是学生能够允许渐进的把握C语言C++的程序设计的技能。

通过此课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高,同时提以下几个方面的能力。

1.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。

●设计要求1.在C环境下可以运行2.完成老师任务书上面的要求二.课程设计任务要求●需求分析1.具有图形菜单界面;2.查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除3.可正确存盘、取盘;4.正确显示总行数。

三.具体设计●主程序流程图如(图1)所示●程序中用链表来保存文本,每一行为一个单向链表,每一行的表头保存在一个行链表中,形成了一个2维链表,结构如下(图2)所示:●详细设计功能实现(一)打开文件1.提示用户输入文件路径2.判断文件路径是否有效,若无效,则提示错误信息并返回,否则继续执行。

3.若文件成功打开并且文件指针没有到文件尾,则从文件中一次读取一个字符,并将该字符添加到一列单链表节点中,直至遇到换行符(ASCII码10)。

当列单链表形成后,它的首地址将被保存至行单链表的相应节点的数据域中,如此动作,直至文件指针指向文件尾部而结束。

(二)新建文件1.若行链表中有数据存在,则提示用户保存文件。

2.提示用户输入新建文件的保存路径。

3.测试新文件路径是否有效。

(三)保存文件1.打开文件。

2.遍历行单链表,遍历行单链表节点指向的列单链表,并将数据输出到文件,每个列单链表遍历完后,输出换行符到文件。

3.关闭文件(图1)(四)插入字符串1.提示用户输入要插入字符串的位置(行号row,列号col)以及要插入的字符串。

2.先在行单链表中找到该行(第row行),若超出现有行数,则添加空行补齐;3.将字符串插入该行(第row行)节点指向的列链表中的col-1位置,若超出现有节点数,则添加保存字符为空格的节点补齐。

(五)删除字符串(1)提示用户输入要删除字符串的开始位置(行号row,列号col)以及要插入的字符串的长度len。

(2)在链表中定位到该行节点,若不存在,则提示无法删除并返回;否则继续执行。

(3)在该行中定位到该col字符节点node,若不存在,则提示无法删除并返回;否则继续执行。

(4)删除从node字符节点开始的len个节点。

若不满len个,则全部删除。

(六)查找替换1.提示用户输入要查找的字符串。

2.遍历链表,找到每一个出现此字符串的位置并输出。

3.询问用户是否要进行替换。

若选是,则提示用户输入要替换后的字符串,然后先在链表中删除原字符串,再在该位置插入要替换为的字符串。

(七)行移动1.提示用户输入要移动的行row和移动后的位置pos。

2.将行链表中的row-1节点移动到pos-1位置。

(八)列移动1.提示用户输入要移动的列col和移动后的位置pos。

2.遍历每一行(列链表),将每一行的col-1节点移动到pos位置处;若col-1节点不存在则不处理。

(九)显示文本(1)遍历行、列链表,并将数据输出到控制台;行链表表头行1行2行3行4(图2)函数分析源程序代码#include <iostream>#include <fstream>#include <string>using namespace std;//#include "Struct.h"//1、具有图形菜单界面;//2、查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除//3、可正确存盘、取盘;//4、正确显示总行数。

//字符节点struct Node{char ch;Node* next;};//行节点struct Row{Node* line;Row* next;};//创建一个Node对象Node* createNode(char ch){Node* p = new Node;p->ch=ch;p->next=NULL;return p;}//创建一个Row对象Row* createRow(Node* line) {Row* p=new Row;p->line=line;p->next=NULL;return p;}//定位到index处Node* locate(Node* line,int index) {Node* p=line;int i=-1;while(p!=NULL&&i<index){p=p->next;i++;}return p;}Row* locate(Row* list,int index) {Row* p=list;int i=-1;while(p!=NULL&&i<index){p=p->next;i++;}return p;}//插入节点bool insert(Node* list,int index,char c) {Node* p= locate(list,index-1);if(p){Node* node=createNode(c);node->next=p->next;p->next=node;return true;}return false;}bool insert(Row* list,int index,Node* line) {Row* p= locate(list,index-1);if(p){Row* row=createRow(line);row->next=p->next;p->next=row;return true;}return false;}//删除节点bool remove(Node* list,int index){Node* p=locate(list,index-1);Node* q=NULL;if(p&&p->next){q = p->next;p->next=q->next;delete q;return true;}return false;}//清空链表void clear(Node* line){Node* p=line->next;Node* q;while(p){q=p->next;delete p;p=q;}}bool remove(Row* list,int index){Row* p=locate(list,index-1);Row* q=NULL;if(p&&p->next){q = p->next;p->next=q->next;clear(q->line); //清空字符链表delete q->line; //删除字符链表表头delete q;return true;}return false;}void clear(Row* text){Row* p=text->next;Row* q;while(p){q=p->next;clear(p->line);delete p->line; //删除字符链表表头delete p;p=q;}}void Line(int i){if(i==1){cout<<"-----------------------------------------------------------------------"<<endl;}else if(i==2){cout<<"========================================================== ============="<<endl;}}int YesOrNo(){char c;cin>>c;if(c=='Y'||c=='y'){return 1;}else if(c=='N'||c=='n'){return 0;}return -1;}//主菜单void Menu(){cout<<"******************************************************************* ***"<<endl;cout<<"* 简易文本编辑器*"<<endl;cout<<"******************************************************************* ***"<<endl;cout<<"\t1.打开文件"<<endl;cout<<"\t2.新建文件"<<endl;cout<<"\t3.保存文件"<<endl;cout<<"\t4.插入字符串"<<endl;cout<<"\t5.删除字符串"<<endl;cout<<"\t6.查找替换"<<endl;cout<<"\t7.行移动"<<endl;cout<<"\t8.列移动"<<endl;cout<<"\t9.显示文本"<<endl;cout<<"\t0.退出"<<endl;Line(1);}//输出当前文本void PrintText(Row* text){cout<<endl;Line(2);cout<<"当前文本为:"<<endl;Line(1);Row* p=text->next;Node* q;int i=0;while(p!=NULL){i++;cout<<"行"<<i<<" ";q = p->line->next;while(q!=NULL){cout<<q->ch;q=q->next;}cout<<endl;p=p->next;}Line(1);cout<<"总共"<<i<<" 行"<<endl;Line(2);}//打开文件bool OpenFile(char * fileName,Row* text) {ifstream file(fileName,ios::in);if(!file)cout<<"文件读取失败!"<<endl;return false;}char c;Row* rp;rp=text;while(!file.eof()){Node* line=new Node;line->next=NULL;Node* p=line;file.get(c);while(c!=10&&!file.eof()){Node* q=createNode(c);q->next=NULL;p->next=q;p=p->next;file.get(c);}/*if(c==10){row.add('\n');}*/if(!file.eof()){Row* rq = createRow(line);rp->next=rq;rp=rp->next;}}file.close();cout<<"文件读取完成!"<<endl;return true;}//创建文件bool CreateFile(const char * fileName,Row* text) {ofstream file(fileName);if(!file){cout<<"文件创建失败!"<<endl;return false;file.close();cout<<"文件创建成功!"<<endl;return true;}//保存bool SaveFile(const char * fileName,Row* text) {ofstream file(fileName);if(!file){cout<<"文件保存失败!"<<endl;return false;}Row* p=text->next;Node* q=NULL;while(p!=NULL){q = p->line->next;while(q!=NULL){//if(q->data=='\n')file<<q->ch;q=q->next;}file<<endl;p=p->next;}file.close();cout<<"文件保存成功!"<<endl;return true;}//插入字符串void InsertStr(Row* text,int row,int col){int i=-1,j=-1;Row *rp,*rq;Node *np,*nq;rp=text;while(rp->next&&i<row)rp=rp->next;i++;}while(i<row){nq=createNode(' ');//定义一个新行链表rq=createRow(nq);rp->next=rq;rp=rp->next;i++;}np=rp->line;while(np->next&&j<col-1){np=np->next;j++;}while(j<col-1){nq=createNode(' ');np->next=nq;np=np->next;j++;}cin.get();string s;getline(cin,s);for(int k=0;k<s.length();k++){nq=createNode(s[k]);nq->next=np->next;np->next=nq;np=np->next;}}//行移动bool MoveRow(Row* text,int row,int poz){if(row==poz){return true;}Row* p=locate(text,row-1);Row* t=locate(text,poz-1);Row* q;if(p&&p->next&&t){q=p->next;p->next=q->next;q->next=t->next;t->next=q;return true;}return false;}//列移动void MoveCol(Row* text,int col,int poz){if(col==poz)return;Row* rp=text->next;while(rp){Node* np=locate(rp->line,col-1);Node* nt=locate(rp->line,poz-1);Node* nq;if(np&&np->next&&nt){nq=np->next;np->next=nq->next;nq->next=nt->next;nt->next=nq;}rp=rp->next;}}//查找替换void FindStr(Row* text){string str,rep;int pos,k=0,row=1,col=0;cout<<"请输入你要查找的字符串:"<<endl;cin>>str;Row* p=text->next;while(p){string line;Node* nq=p->line->next;while(nq){line.append(1,nq->ch);nq=nq->next;}pos=line.find(str.c_str(),0);while(pos!=string::npos){col=pos;k++;cout<<str<<" 第"<<k<<"次出现的位置是:第"<<row<<"行,第"<<col+1<<"列"<<endl;cout<<"是否替换?(Y/N) ";int yon=YesOrNo();while(yon==-1){cout<<"是否替换?(Y/N) ";yon=YesOrNo();}if(yon==1){cout<<"将"<<str<<" 替换为:";cin>>rep;int j;for(j=0;j<str.length();j++){remove(p->line,col);}for(j=0;j<rep.length();j++){insert(p->line,col+j,rep[j]);}cout<<"替换成功!"<<endl;}pos=line.find(str.c_str(),col+str.length());}row++;p=p->next;}if(k==0){cout<<"当前文本中找不到该字符串!"<<endl;}}void DelStr(Row* text,int row,int col,int len){Row* rp = locate(text,row);if(rp==NULL){cout<<"无法删除,因为该位置没有字符串!"<<endl;return;}Node* np = locate(rp->line,col-1);if(np==NULL){cout<<"无法删除,因为该位置没有字符串!"<<endl;return;}Node* nq=np->next;string s;int k=0;while(nq&&k<len){s.append(1,nq->ch);np->next=nq->next;delete nq;nq=np->next;k++;}cout<<"成功删除字符串"<<s<<endl;}int main(){bool flag=false;int sel,row,col,poz;Row* text=new Row;text->next=NULL;string fileName;Menu();cout<<"请选择操作:";cin>>sel;while(sel!=0){switch(sel){case 1: //打开文件cout<<"请输入要打开的文件路径(例如E:\\1.txt):";cin>>fileName;flag = OpenFile((char *)fileName.c_str(),text);if(flag){PrintText(text);}break;case 2: //新建文件if(flag){cout<<"要保存前一个文件吗?(Y/N) ";int yon=YesOrNo();while(yon==-1){cout<<"要保存前一个文件吗?(Y/N) ";yon=YesOrNo();}if(yon==1){SaveFile((char *)fileName.c_str(),text);}flag = false;}clear(text);cout<<"请输入要新建的文件路径(例如E:\\1.txt):";cin>>fileName;flag = CreateFile((char *)fileName.c_str(),text);if(flag){PrintText(text);}break;case 3: //保存文件if(flag){SaveFile((char *)fileName.c_str(),text);flag = false;}else{cout<<"请输入文件路径:";cin>>fileName;flag = SaveFile((char *)fileName.c_str(),text);}break;case 4: //插入字符串cout<<"请选择要插入的位置(第x行第y个字符之后):"<<endl;cout<<"行: ";cin>>row;cout<<"列:";cin>>col;cout<<"请输入要插入的字符串:";row--;col--;InsertStr(text,row,col);cout<<"插入成功!"<<endl;PrintText(text);break;case 5: //删除字符串int len;cout<<"请选择要删除的字符串的开始位置(第x行第y个字符):"<<endl;cout<<"行: ";cin>>row;cout<<"列:";cin>>col;cout<<"请输入要删除的字符串的长度:";cin>>len;row--;col--;DelStr(text,row,col,len);PrintText(text);break;case 6: //查找替换字符串FindStr(text);PrintText(text);break;case 7: //行移动cout<<"请选择你要移动的行:";cin>>row;cout<<"你想要将第"<<row<<"行移动到第几行之前?>:";cin>>poz;row--;poz--;if(MoveRow(text,row,poz)){cout<<"移动完成!"<<endl;}else{cout<<"无法移动!"<<endl;}PrintText(text);break;case 8: //列移动cout<<"请选择你要移动的列:";cin>>col;cout<<"你想要将第"<<col<<"列移动到第几列之前?>:";cin>>poz;col--;poz--;MoveCol(text,col,poz);cout<<"移动完成!"<<endl;PrintText(text);break;case 9: //显示文本PrintText(text);break;default:break;}cout<<"请选择操作:";cin>>sel;}if(flag){cout<<"要保存前一个文件吗?(Y/N) ";int yon=YesOrNo();while(yon==-1){cout<<"要保存前一个文件吗?(Y/N) ";yon=YesOrNo();}if(yon==1){SaveFile((char *)fileName.c_str(),text);}flag = false;}clear(text);delete text;return 0;}四.调试分析和测试结果代码测试截图结果分析主菜单图形界面注:通过该见面进入简易文本编辑器的操作新建文本运行界面注:在选择了正确的存储路径后才可新建文件,新建文件后就自动保存一空的文档 插入字符串运行界面注:在新建的文件中插入字符串删除字符串运行界面插入替换运行界面移动行列运行界面注:在编辑文本时可能出现错误,用有些移动删除来及解决,此界面对比出文本前后 显示文本运行界面注:每进行一次操作文本就更新,操作9 是又新建的空文本经过一些列的操作后最终显示的文件3问题解决与分析如下界面当你保存的文件路径不对时,程序运行会出现异常,输入了正确的路径如代码中的示范程序才正常运行没有按照程序代码的指令来,会导致运行错误五.总结心得与体会这次课程的设计使我认识到知识的学习不能只局限于课本,更使我明白时间的编码能力和实践能力非常重要,而在以后我们所编写的程序是面向对象的,编写的程序是给用户用的,不能单单的以控制台输出,这是我现在所未想到的最大缺陷。

相关文档
最新文档