C语言课程设计 简单的行编辑器.

合集下载

简单的C语言编辑器课程设计

简单的C语言编辑器课程设计

扬州大学编译原理课程设计报告题目简单的编译器班级计科0802班学号081202427姓名张俊指导教师姜卯生成绩扬州大学信息工程学院2011年6月10日一、课程设计题目实现一个简单的编译器二、课程设计目的通过编译原理课程设计,加深对课堂中所讲授的内容的理解,设计一个具有词法分析、语法、语义分析、错误处理的综合程序。

进一步掌握编译程序常用实现的方法和技术,使学生初步具有研究、设计、编制和调试编译程序的能力。

三、课程设计要求1.实现一个C语言子集或Pascal语言子集的编译器,工具任选。

2.要求实现的功能:翻译 +,-,*, / 四则运算表达式及布尔表达式,翻译包含if语句,while语句及do-while语句及相互间的嵌套。

四、课程设计语言及选用工具选用语言:Java工具 Eclipse五、课程设计方法设计过程中用到的数据结构://关键字数组public static List<Eryuanshi> keyWord= new ArrayList<Eryuanshi>();//自定义符号串数组p ublic static Eryuanshi[] valueAndClass = new Eryuanshi[100];//目标代码数组public static List<Siyuanshi> siyuanshi= new ArrayList<Siyuanshi>();//目标代码类,存放四元式的另外一种形式class Siyuanshi{String op;String str1;String str2;}//二元式类,存放词法分析后的标志符,关键字及其类号class Eryuanshi{String word;int classID;}Stack<Integer> stateStack = new Stack<Integer>(); //状态栈Stack<String> symStack = new Stack<String>(); //符号栈Stack<String> semanticStack = new Stack<String>(); //语义栈编译器主要分为两个模块:(1)词法分析程序:主要功能是从文件逐个单词读取源程序,进行次词法分析,并输出源程序的二元式列表,二元式列表保存在keyWord对象数组中。

简单的行编辑器课程设计

简单的行编辑器课程设计

程序设计课程设计报告二00八年七月一号目录1……………………………………………设计目的2…………………………………………设计题目和要求3…………………………………………总体设计4…………………………………………详细设计5…………………………………………源程序清单和执行结果6…………………………………………总结1 设计目的设计一个简单的行编辑器,了解行编辑器的应用2 设计题目和要求题目:简单的行编辑器要求:1)设计一个简单的行编辑器,每行以回车结束2)数据以文件形式储存3)编辑器具有查找修改删除数据的功能3总体设计简单的行编辑器删除一行删除一行显示一行显示一行文件存盘文件存盘装入文件装入文件退出4 详细设计1)结构体的应用struct line{char text[81];int num; /*行号*/struct line *next; /*指向下一个输入项目的指针*/struct line *prior; /*指向前一个项目的指针*/};struct line *start; /*指向表中第一个项目的指针*/struct line *last; /*指向表中作后一个项目的指针*/struct line *find(int),*dls_store(struct line *);注:在结构体中分别声明项目指针及项目中的指针变量2)函数声明void patchup(int,int),delete_text(),list(),save(char *),load(char *);menu_select();enter(int linenum);注:在结构体外分别对输入、删除、显示等函数进行声明3)主函数和switch语句void main(int argc,char *argv[]){char s[80],choice,fname[80];// struct line *info;int linenum=1;start=NULL;last=NULL;if(argc==2) load(argv[1]);/*装入命令行上的文件*/do{choice=menu_select( );switch(choice){case 1:printf("\t行号:");gets(s);linenum=atoi(s);enter(linenum);break;case 2:delete_text();break;case 3:list();break;case 4:printf("\t文件名:");gets(fname);save(fname);break;case 5:printf("\t文件名:");gets(fname);load(fname);break;case 6:exit(0);}}while(1);}注:通过主函数分别对相应函数进行调用,利用switch选择语句来执行语句4)菜单函数menu_select(){char s[80];int c;printf("\t\t1.输入\n");printf("\t\t2.删除一行\n");printf("\t\t3.显示一行\n");printf("\t\t4.文件存盘\n");printf("\t\t5.装入文件\n");printf("\t\t6.退出\n");do{printf("\n\n\t\t请按数字选择:");gets(s);c=atoi(s);}while(c<0||c>6);return(c);}注:定义菜单显示内容,根据菜单要求运用程序5源程序和执行结果源程序:#include<iostream>#include "stdio.h"#include "stdlib.h"struct line{char text[81];int num; /*行号*/struct line *next; /*指向下一个输入项目的指针*/struct line *prior; /*指向前一个项目的指针*/};struct line *start; /*指向表中第一个项目的指针*/struct line *last; /*指向表中作后一个项目的指针*/struct line *find(int),*dls_store(struct line *);void patchup(int,int),delete_text(),list(),save(char *),load(char *); menu_select();enter(int linenum);void main(int argc,char *argv[]){char s[80],choice,fname[80];// struct line *info;int linenum=1;start=NULL;last=NULL;if(argc==2) load(argv[1]);/*装入命令行上的文件*/do{choice=menu_select( );switch(choice){case 1:printf("\t行号:");gets(s);linenum=atoi(s);enter(linenum);break;case 2:delete_text();break;case 3:list();break;case 4:printf("\t文件名:");gets(fname);save(fname);break;case 5:printf("\t文件名:");gets(fname);load(fname);break;case 6:exit(0);}}while(1);}/* 显示菜单,供用户选择*/menu_select(){char s[80];int c;printf("\t\t1.输入\n");printf("\t\t2.删除一行\n");printf("\t\t3.显示一行\n");printf("\t\t4.文件存盘\n");printf("\t\t5.装入文件\n");printf("\t\t6.退出\n");do{printf("\n\n\t\t请按数字选择:");gets(s);c=atoi(s);}while(c<0||c>6);return(c);}/*将文本插在指定行端部*/enter(int linenum){struct line *info;//char t[81];for(;;){/* */info=(struct line *)malloc(sizeof(struct line));if(!info){printf("\t! 内存不够!\n");return(NULL);}printf("%d:",linenum);gets(info->text);info->num=linenum;if(*info->text){if(find(linenum)) patchup(linenum,1);if(*info->text) start=dls_store(info);}else break;linenum++;}return(linenum);}/*当文本内容插在文件中间时其下面的内容的行号必须增加1,而*/ /*删除时,被删除的文本后面的行号必须减1 */void patchup(int n,int incr){struct line *i;i=find(n);while(i){i->num=i->num+incr;i=i->next;}}/*按行号排序后插入*/struct line *dls_store(struct line *i){struct line *old,*p;if(last==NULL){i->next=NULL;i->prior=NULL;last=i;return(i);}p=start;old=NULL;while(p){if(p->num){old=p;p=p->next;}else{if(p->prior){p->prior->next=i;i->next=p;p->prior=i;return start;}i->next=p;i->prior=NULL;p->prior=i;return(i);}}old->next=i;i->next=NULL;i->prior=old;last=i;return start;}/*删除一行*/void delete_text(){struct line *info;char s[80];int linenum;printf("\t行号:");gets(s);linenum=atoi(s);info=find(linenum);if(info){if(start==info){start=info->next;if(start) start->prior=NULL;else last=NULL;}else{info->prior->next=info->next;if(info!=last)info->next->prior=info->prior;else last=info->prior;}free(info);patchup(linenum+1,-1);}}/*查找一行文本*/struct line *find(int linenum){struct line *info;info=start;while(info){if(linenum==info->num) return(info);info=info->next;}return(NULL);}/*显示文本*/void list(){struct line *info;info=start;while(info){printf("%d:%s\n",info->num,info->text);info=info->next;}printf("\n\n");}/*存文件*/void save(char *fname){struct line *info;char *p;FILE *fp;if((fp=fopen("text.txt","w"))==NULL){printf("\t文件打不开!\n");exit(0);}printf("\t正在存入文件:\n");info=start;while(info){p=info->text;while(*p) putc(*p++,fp);//putc('\r',fp);putc('\n',fp);info=info->next;}fclose(fp);}/*装入文件*/void load(char *fname){struct line *info,*temp;char *p;FILE *fp;//int t,size,inct;int size,inct;if((fp=fopen("text.txt","r"))==NULL){printf("\t文件打不开!\n");exit(0);}while(start){temp=start;start=start->next;free(temp);}printf("\n\t正装入文件!\n");size=sizeof(struct line);start=(struct line*)malloc(size);if(!start){printf("\n\t内存已经用完!");return;}info=start;p=info->text;inct=1;while((*p=getc(fp))!=EOF){p++;while((*p=getc(fp))!='\n') p++;//getc(fp); /*丢掉'\n' */*p='\0';info->num=inct++;info->next=(struct line*)malloc(size);if(!info->next){printf("\n\t内存已经用完!");return;}info->prior=temp;temp=info;info=info->next;p=info->text;}temp->next=NULL;last=temp;free(info);start->prior=NULL;fclose(fp);}执行结果:6 总结我们所做的每一道程序设计题基本涵盖了我们一学年的课程知识,而我侧有些力不从心,很多地方生疏不知,大部分程序借鉴他人,这一点我还需改进,不过通过此次课程设计,我对程序设计这门课程又有了新的理解。

C++课程设计简单行编辑器

C++课程设计简单行编辑器

目录第一章课程设计的目的和要求 (1)1.1 课程设计的目的 (1)1.2 课程设计的要求 (1)第二章课程设计任务内容 (3)2.1 课程设计要求 (3)2.2 功能需求 (3)2.3 功能模块图 (4)第三章详细设计说明 (5)3.1 程序设计思路 (5)3.2 函数说明 (5)3.2.1 main()主函数 (5)3.2.2 menu_select菜单选择函数 (7)3.2.3 enter输入函数 (8)3.2.4 delete_text删除函数 (9)3.2.5 find函数 (10)3.2.6 list函数 (11)3.2.7 save函数 (12)3.2.8 load函数 (12)3.3 调试 (14)第四章软件使用说明 (15)第五章课程设计心得与体会 (18)附录1 参考文献 (19)附录2 程序清单 (20)简单的行编辑器第一章课程设计的目的和要求此章节详细介绍了课程设计的目的和要求。

1.1 课程设计的目的课程设计的目的是通过实践环节的训练,使学生进一步加深对C语言知识的综合理解,提高C语言应用技能,并结合专业特点培养学生计算机程序的应用能力。

结合计算机科学专业的特点是培养学生阅读本专业相关领域C语言程序的能力,分析并掌握程序的设计思想和方法。

通过课程设计,培养学生查阅C语言相关资料能力、分析和阅读程序的能力,应用C语言基本知识设计小型应用程序的能力。

其中,需要掌握C语言中的结构体,指针,函数(系统函数,自定义函数),文件操作等知识,通过对系统的分析和设计,进一步巩固C语言的学习,以提高对开发环境的进一步认识和综合编程能力。

在学习课程设计之前,要掌握好程序设计的基本概念、方法和思维方式。

开发程序的目的是为了解决问题,而解决问题首先需要找出合适的解决方案,然后用合适的语言把方案描述出来。

显然,该过程的关键是分析问题并找出解决方案,而不是描述方案。

因此,程序设计的首要目标,是培养解决问题的基本思维方式,其次才是语言知识。

(c语言课程设计)C语言文本编辑器

(c语言课程设计)C语言文本编辑器

或右移键在 3 个菜单项之间循环移动。当光带移动到某个字菜单项上时,用户此时可使用 Enter 键来选取相关菜单选项。 (5)帮助及其他模块。在帮助及其他模块中,主要完成系统功能及按键的简要介绍。 其他模块包括文本的快速预览和窗口的显示。用户可按 F10 功能键来打开快速预览窗口, 在快速预览窗口中没有功能菜单条。 主窗口要有菜单栏, 文本编辑区和状态栏三大部分构成, 菜单栏用来显示菜单项,文本编辑区主要用来文本字符的输入,删除等操作,状态栏主要用 来显示当前光标在文本窗口中的坐标值。
3 3.1 功模块设计
总体设计
在.2 节中,简单描述了各功能模块的作用,下面分别介绍各功能模块的具体设计。在介 绍各功能模块的具体设计之前,有必要先描述一下主程序的执行流程。
1.
程序执行主流程
文本编辑器程序执行主流程如图 .2 所示,它是在 main()函数中实现的。他首先初始 化一些全局变量及结构数组,接着调用 drawmain() 函数来显示主窗口,然后调用 while(1) 进 入主循环,等待用户按键,最后程序根据用户的按键值,进行相应的处理,完成文本编辑的 相关工作。下面对图.2 中的按键判断和相关处理作补充说明。 (1)若按键为常规字符,即其 ASCII 码大于 32 小于 127,则继续判断在文本编辑区的 当前光标位置有没有字符,若有字符,则调用 insert() 函数,将此字符插入在当前位置,否 则在判断没有满行后,将此字符添加在单链表的数据域中,若此行已满,则执行添加新行操 作。 (2)若按键为 Enter 键,则将光标移至下一行的行首,等待用户输入新的字符。 (3)若按键为光标移动键(左,右,上,下)且移动后的位置满足相关条件,则执行 gotoxy() 操作,将光标移动至目标位置。 (4) 若按键为 BackSpace 键,则将调用 Del()函数将光标的前一个字符从单链表中删 除;若按键为 Del 键,也将调用 del()函数将光标的当前位置的字符从单链表中删除。 (5)若按键为 Ctrl 开头的按键,则执行与其相关的操作。具体来说,若为 Ctrl+左移键 (←) ,则将选定当前光标的位置开始向右的一个字符,若按住 Ctrl 键不放,连续按右移键, 可以选定多个字符。若为 Ctrl+左移键(←) ,则将执行与以上相同的操作。若为 Ctrl+X 键, 则将选定相关内容保存起来, 且从单链表中删除选定的字符后重新显示单链表的内容。 若为 Ctrl+C 键,则将选定的相关内容保存起来,重新显示单链表中的内容(目的:为了去除字符 的底色) 。若为 Ctrl+V 键,则调用 insert() 函数将保存起来的字符插入在单链表中,并重新显 示单链表中的内容。 (6)若按键为 F10 键,则调用 qview() 函数,实现文本的快速预览。 若按键为 F1,F2,F3 功能键,则调用 menuctrl() 菜单控制函数,在此函数中完成案件的具体判 断和执行相应功能操作。若为 F1 键,则调用 File 菜单;若为 F2 键,则调用 Edit 菜单;若 为 F3 键,则调用 Help 菜单。

简单的行编辑器

简单的行编辑器

计算机工程学院课程设计报告设计名称:数据结构课程设计选题名称:简单的行编辑器姓名:学号:专业班级:软件工程软件102 系(院):计算机工程学院设计时间:设计地点:软件工程实验室、教室<2>用户可从键盘上输入字符,以*结尾表示输入字符结束,界面上会输出用户输入的字符,以及行编辑的功能选择项。

(如输入如下字符beijing huan ying ni *)<3>输入选择1,则依次输出:字母个数:17数字个数:0空格个数:4字符总数:21是否继续使用(Y/N):<4.1>选择Y,则出现行编辑器的功能选择,<4.2>如果第三步结束选择N,则输出**********谢谢使用**********<,再次需要进行行编辑器功能选择:输入选择2;则输出“请输入要统计的某一字符”提示用户输入要查找的字符假如输入i;则输出:i在文章中出现次数为:4;是否继续使用(Y/N)<**********谢谢使用**********<则输出行编辑器的功能选择项目;选择3;输出“请输入要删除子串的起始位置和长度:”提示用户输入,如果输入0 7输出“删除某一子串后:”huan ying ni**********谢谢使用**********<5>其他字符测试;例如用户输入:beijing BEIJING 520*输出字母个数:14数字个数:3空格个数:2字符总数:19统计字符i出现次数为2;删除从8号位器长度为7的字串后输出字符为beijing 520五用户手册1.运行程序,首先出现主界面。

主界面首行显示“欢迎使用文本编辑器”,输出提示信息“请输入要编辑的字符”,然后界面显示用户输入的字符。

然后主界面文本编辑器的功能菜单,功能菜单包括三个选项:选项一:统计字数,选择该项可进字数统计,当用户输入字符结束后,选择功能选项一,主界面回自动统计各字符数,然后输出。

2;选项二:统计出现次数,选择该项可进行对文章中某一字符出现字数的统计,当用户选择功能二时,主界面回输出提示信息,提示用户输入要统计的字符,用户可从键盘任意输入字符,以回车键结束。

简单行编辑系统课程设计

简单行编辑系统课程设计
gotoxy(57,1+i);
cprintf("%c",179);
}
for(i=1;i<=11;i++)
{
gotoxy(46+i,2);
if(value==0) value=300; /*此value为局部变量*/
{
case 0:gotoxy(22,3); cprintf(" Open "); break;
case 1:gotoxy(22,4); cprintf(" Save "); break;
case 2:gotoxy(22,5); cprintf(" Exit "); break;
{
case 0:gotoxy(47,3); cprintf(" del "); break;
case 1:gotoxy(47,4); cprintf(" insert "); break;
{
gotoxy(21,1+i);
cprintf("%c",179); /*窗口内文本的输出函数,在窗口左边输出 | */
gotoxy(32,1+i);
cprintf("%c",179); /*窗口内文本的输出函数,在窗口右边输出 | */
gotoxy(47,3); cprintf(" del ");
gotoxy(47,4); cprintf(" insert ");
gotoxy(47,5); cprintf(" change ");
}

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

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

中国矿业大学徐海学院计算机系《软件认知实践》报告姓名:学号:专业:设计题目:简单行编辑器指导教师:2012年12月25目录第1章题目概述 (1)第1.1节题目要求 (1)第1.2节主要难点 (2)第2章系统流程图 (3)第3章数据结构和算法 (4)第4章核心代码分析 (6)第5章复杂度分析 (10)第6章总结 (11)参考文献 (13)第1章题目概述在这次课程设计中我选的题目是文本编辑,文本编辑几乎是每个使用电脑的人都会遇到的问题,特别是网络小说作家们。

在文本的编辑中,我们会时常遇到文本信息的统计问题、小型子串的查找问题、子串的查找和删除问题等。

如果靠人自己去观察和执行相关操作的话,不仅累人,而且很容易出错。

而使用计算机程序去实现的话,则会省力不少,而且相对来说非常精确。

本程序使用了较快速的查找算法,可以大大提高检索的效率,相信这可一极大的方便用户用电脑编辑文本文件。

第1.1节题目要求文章编辑功能:输入一页文字,程序可以统计出文字、数字、空格的个数。

静态存储一页文章,每行最多不超过80个字符,共N行;要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。

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

输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章;实现功能(1)文章内容的输入:包括字母、标点符号、数字等;(2)文章内容的统计:包括文章中大写字母、小写字母、数字、标点符号、空格以及文章所有字数的个数的统计;(3)文章内容的处理:包括对文章内容的查找、删除以,其中在查找的过程中统计出该字符或字符串在文章中出现的次数;第1.2节主要难点本程序是对一段英文文章的内容进行处理,存储方式采用链式存储,没有文件操作,故本程序对其文本内容的所有操作都是在链表中进行的。

C语言实现简易文本编译器

C语言实现简易文本编译器

C语言实现简易文本编译器数据结构课程设计之简易文本编译器(C语言实现)需求分析(1)具有图形菜单界面:显示实时年份,日期,星期及时间(2)查找:查找文本中的字符串,显示其出现的行数,列数及总共出现次数替换(等长,不等长):对文本中的文本实现等长及不等长替换插入(插串,文本块的插入):插入一行或在具体行号列号处插入文本块移动(行块,列块移动):向下移动一行,向上移动一行,具体行号列号处向左移动或向右移动删除:删除一行,删除莫一行,莫列,定长的内容(3)可正确存盘、取盘;:可读取,保存文本;(4)正确显示总行数。

(行数不少于5行,每行字符数不少于80个字符)采用的数据结构1:采用的逻辑结构文本编辑器主要是针对文本进行编辑,文本的操作就是对字符的操作。

文本编辑器可以从行、列两个方向进行编辑。

每一行可以看成一个线性表,线性表是一种线性结构,线性结构的特点是数据元素之间为线性关系,据元素“一个接一个的排列”。

在一个线性表中数据元素的类型是相同的,由于每一行可以存储的最大字数是相同的,行方向所有线性表的最大长度可以设置成相同的。

行与行之间的关系也可以看成一个线性表。

2.采用的存储结构线性表的存储分为两种:顺序存储和链式存储。

顺序存储是指在内存中用地址连续的一块存储空间顺序存放线性表的各元素,用这种存储形式存储的线性表称为顺序表。

在程序设计语言中,一维数组在内存中占用的存储空间就是一组连续的存储区域,因此,用一维数组来表示顺序表的数据存储区域是再合适不过的。

链式存储是通过-组任意的存储单元来存储线性表中的数据元素的,为建立数据元系之间的线性关系对每个数据元素除了存放数据元素自身的信息之外,还需要和一起存放其后继或前驱所在的存储单元的地址,这两部分信息组成一个“结点”,每个元素都如此。

存放数据元素信息的称为数据域,存放其前驱或后继地址的称为指针域。

只有一个存储单元地址的为单链表,有两个存储单元地址的为双链表。

考虑到实际的功能需求,每行的线性表可以用顺序存储方式,每个字符是一个节点。

c语言课程设计C语言文本编辑器精编WORD版

c语言课程设计C语言文本编辑器精编WORD版

c语言课程设计C语言文本编辑器精编W O R D版IBM system office room 【A0816H-A0912AAAHH-GX8Q8-GNTHHJ8】文本编辑器文本编辑器是最常用的文档创建和编辑工具。

随着计算机科学与技术的发展,用来处理文本的编辑器随处可见,并且形式多样。

比如,Windows下的记事本,写字板,EditPlus,UltraEdit等都是十分优秀的文本编辑器和处理工具。

在本章中,我们将向读者讲解如何利用C语言来发展开发一个简易的文本编辑器。

1 设计目的利用C语言的单链表数据结构及相关函数,本章编程实现了一个与DOS操作系统下的Edit相似的文本编辑器。

再次文本编辑器中,用户可以通过快捷和选择菜单项,完成基本的文本编辑器和文件处理工作。

通过文章的介绍,读者可以了解文本编辑器的开发过程,掌握菜单的开发技巧,加深对文件操作的理解。

更重要的是,希望此程序能抛砖引玉,引领读者掌握编程的方法和技巧,开发出更优秀的程序。

2 功能描述如图.1所示,文本编辑器主要由五大功能模块构成,它们分别是文件操作模块,文本编辑模块,剪切操作模块,菜单控制模块和帮助及其他模块。

下面分别简要介绍功能模块的功能。

(1)文件操作模块。

在文件操作模块中,主要完成文件的创建,打开,保存和另存操作。

用户可以选择File菜单上的New子菜单来完成新建文本文件操作;选择File菜单上的Save子菜单来完成保存文件操作选择File菜单上的Open子菜单来完成打开文件操作;选择Flie菜单上的Save as子菜单来完成文件的另存为操作。

在文件的打开,保存和另存为操作中,系统会提示用户输入文件路径及文件名。

值得一提的是,当用户打开一个文件时,指定的文件必须存在,否则系统会报错。

(2)文本编辑器模块。

在文本编辑器模块中,主要完成在编辑窗口中以添加或插入的方式输入字符,删除光标所在当前位置的单个字符或前一个位置的单个字符,朝上下左右4个方向的光标移动操作。

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.参考书:提供一些与文本编辑器相关的参考书籍,供学生拓展阅读。

c课程设计行编辑器

c课程设计行编辑器

c课程设计行编辑器一、教学目标本章节的教学目标是使学生掌握C语言的基本语法,能够运用C语言进行简单的程序设计。

具体分解为以下三个目标:1.知识目标:使学生了解C语言的基本数据类型、运算符、控制结构、函数等语法知识。

2.技能目标:培养学生能够使用C语言编写并调试程序的能力,使学生能够运用C语言解决实际问题。

3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高学生主动学习的积极性,使学生认识到计算机编程在现代社会的重要性。

二、教学内容本章节的教学内容主要包括C语言的基本语法,具体包括以下几个部分:1.数据类型和运算符:整型、浮点型、字符型数据,算术运算符、关系运算符、逻辑运算符等。

2.控制结构:顺序结构、选择结构(if-else)、循环结构(for、while)等。

3.函数:函数的定义、声明和调用,return语句,函数的参数传递等。

4.数组和字符串:一维数组、多维数组,字符串的基本操作等。

5.指针:指针的概念、指针的运算、指针与数组、指针与函数等。

6.结构体和文件:结构体的定义和使用,文件的打开、读写、关闭等操作。

三、教学方法为了达到本章节的教学目标,将采用以下几种教学方法:1.讲授法:对C语言的基本语法进行系统的讲解,使学生掌握基本的编程知识。

2.案例分析法:通过分析典型的程序案例,使学生了解如何运用C语言解决实际问题。

3.实验法:安排上机实验,让学生亲自动手编写程序,培养学生的编程能力和调试能力。

4.讨论法:学生进行小组讨论,分享学习心得,互相解答疑问,提高学习效果。

四、教学资源为了支持本章节的教学,将准备以下教学资源:1.教材:《C程序设计语言》(K&R)或《C Primer Plus》。

2.参考书:《C语言编程思想》、《C语言实例教程》等。

3.多媒体资料:教学PPT、视频教程、在线编程练习等。

4.实验设备:计算机、编程软件(如Visual Studio、Code::Blocks等)。

课程设计简单行编辑

课程设计简单行编辑

课程设计简单行编辑一、教学目标本课程旨在让学生掌握简单行编辑的基本知识和技能,包括文本的选择、复制、剪切、粘贴、撤销和红色o等。

通过本课程的学习,学生将能够熟练使用文本编辑软件,提高工作效率,培养良好的信息素养和职业道德。

同时,通过实际操作,让学生感受计算机技术的魅力,激发学生对计算机科学的兴趣,培养学生的创新精神和团队协作能力。

二、教学内容本课程的教学内容主要包括以下几个部分:1.简单行编辑的基本概念和术语,如文本、编辑器、选择、复制、剪切、粘贴等。

2.文本编辑软件的使用方法,如打开文件、保存文件、撤销操作等。

3.常用编辑命令的讲解和演示,如选择命令、复制命令、剪切命令、粘贴命令等。

4.行编辑技巧的讲解和练习,如快速定位、批量替换、查找和替换等。

5.综合练习,让学生运用所学知识解决实际问题。

三、教学方法为了提高教学效果,本课程将采用以下几种教学方法:1.讲授法:教师讲解基本概念、原理和方法,引导学生理解掌握。

2.演示法:教师现场演示操作步骤,学生跟随操作,加深理解和记忆。

3.练习法:学生独立完成练习题,巩固所学知识,提高操作技能。

4.小组讨论法:学生分组讨论问题,培养团队协作能力和沟通能力。

5.案例分析法:分析实际案例,让学生学会将理论知识应用于实际工作中。

四、教学资源为了支持教学,我们将准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供学习参考。

2.参考书:提供相关领域的参考书籍,拓展学生的知识视野。

3.多媒体资料:制作精美的PPT、教学视频等,提高教学效果。

4.实验设备:准备计算机、投影仪等设备,保障课堂教学的正常进行。

5.网络资源:利用校园网,为学生提供在线学习资源,方便学生自主学习。

五、教学评估本课程的评估方式包括平时表现、作业、考试等多个方面,以全面、客观、公正地评价学生的学习成果。

1.平时表现:包括课堂参与度、提问回答、小组讨论等,占总评的20%。

2.作业:包括课后练习、小项目等,占总评的30%。

C语言实现简易文本编辑器

C语言实现简易文本编辑器

C语⾔实现简易⽂本编辑器本程序要求完成⼀个简易⽂本编辑器,能够完成⽂本的录⼊、编辑、删除、查找,并能够完成⽂件的存取。

在⽂本编辑软件中把⽤户输⼊的所有⽂本内容作为⼀个字符串。

虽然各种⽂本编辑软件的功能有强弱差别,但是基本操作都包括串的输⼊、修改、删除(包括整⾏删除和⼀⾏中的⼦串删除)、查找、输出等。

通过分析,系统应该包括以下功能:1、具有简单的⽂字或图形菜单界⾯2、能实现串或⽂本块的查找、替换、删除、插⼊、移动操作。

3、能实现⽂本⽂件的存盘和读取功能。

4、具有友好的界⾯和较强的容错能⼒设计思路1、采⽤的逻辑结构⽂本编辑器主要是针对⽂本进⾏编辑,⽂本的操作就是对字符的操作。

⽂本编辑器可以从⾏、列两个⽅向进⾏编辑。

每⼀⾏可以看成⼀个线性表,线性表是⼀种线性结构,线性结构的特点是数据元素之间为线性关系,数据元素“⼀个接⼀个的排列”。

在⼀个线性表中数据元素的类型是相同的,由于每⼀⾏可以存储的最⼤字数是相同的,⾏⽅向所有线性表的最⼤长度可以设置成相同的。

⾏与⾏之间的关系也可以看成⼀个线性表。

2、采⽤的存储结构线性表的存储分为两种:顺序存储和链式存储。

顺序存储是指在内存中⽤地址连续的⼀块存储空间顺序存放线性表的各元素,⽤这种存储形式存储的线性表称为顺序表。

在程序设计语⾔中,⼀维数组在内存中占⽤的存储空间就是⼀组连续的存储区域,因此,⽤⼀维数组来表⽰顺序表的数据存储区域是再合适不过的。

链式存储是通过-组任意的存储单元来存储线性表中的数据元素的,为建⽴数据元系之间的线性关系,对每个数据元素除了存放数据元素⾃⾝的信息之外,还需要和⼀起存放其后继或前驱所在的存储单元的地址,这两部分信息组成⼀个“结点”,每个元素都如此。

存放数据元素信息的称为数据域,存放其前驱或后继地址的称为指针域。

只有⼀个存储单元地址的为单链表,有两个存储单元地址的为双链表。

考虑到实际的功能需求,每⾏的线性表可以⽤顺序存储⽅式,每个字符是⼀个节点。

C语言程序设计实习报告 行编辑器 学生管理系统

C语言程序设计实习报告 行编辑器 学生管理系统

C程序设计实习报告题目:简单的行编辑器(修改版)学院:专业:姓名:班级学号:指导教师:2009年 7 月 3 日前言由于我们班选题是题号和学号一一对应,所以我抽到了16题,简单的行编辑器。

刚开始时不知道什么叫行编辑器,以为这个题目有多么的神秘,第二次实习时老师说选这个题目最好换个题,与老师交流,老师建议在原有的题目上加些功能。

只是还是不知道什么叫行编辑器,上网,问同学,没有一点思路。

再一次问老师,老师说不用管它什么是行编辑器,编辑的目的是为了后面对文件进行处理,于是这一次总算有了新的思路。

等到这个题快要做完时,也明白了为什么老师说它太简单了,做完后自己感觉都有串改题目之嫌疑,原题的要求实在太简单了,自己加的功能占了程序的大部分。

8天下来感觉自己对C语言以及程序编辑的认识加深了许多。

以前觉得很难的结构体,数组,文件全部用到了,虽然并不能完全掌握,那也有一些成就感。

在这里要感谢老师以及我的同学,在整个编程中给了我很大的帮助。

目录前言 (II)目录 ................................................................................................................................................ I II 1题目要求................................................................................................................................... - 1 - 2需求分析................................................................................................................................... - 1 - 3概要设计................................................................................................................................... - 1 -3.1设计思想........................................................................................................................ - 1 -3.2软件运行与开发平台.................................................................................................... - 2 -3.3数据结构........................................................................................................................ - 2 -3.4系统结构图.................................................................................................................... - 2 - 4详细设计................................................................................................................................... - 3 -4.1主函数............................................................................................................................ - 3 -4.2各功能模块设计............................................................................................................ - 4 -(1)输入模块............................................................................................................ - 4 -(2)浏览模块............................................................................................................ - 5 -(3)添加模块............................................................................................................ - 6 -(4)查找模块............................................................................................................ - 8 -(5)修改模块.......................................................................................................... - 13 -(6)排序模块.......................................................................................................... - 16 -(7)保存模块.......................................................................................................... - 19 -4.3公共函数...................................................................................................................... - 19 -(1)加载函数.......................................................................................................... - 19 -(2)学号输入函数................................................................................................ - 20 -(3)输入三个科目分数函数.................................................................................. - 20 -(4)求平均值函数.................................................................................................. - 21 -(5)输入整个记录函数.......................................................................................... - 21 -(6)修改整条记录函数.......................................................................................... - 21 -(7)显示数据结构项目.......................................................................................... - 22 -(8)显示一个记录的函数...................................................................................... - 22 - 5测试、结果进行分析............................................................................................................. - 23 -5.1进入页面...................................................................................................................... - 23 -5.2数据录入...................................................................................................................... - 24 -5.3数据录入成功,直接返回菜单.................................................................................. - 24 -5.4不进行数据录入,直接进入菜单。

简单的行编辑器(C语言)

简单的行编辑器(C语言)

简单的行编辑器【要求】(1)设置一个简单的行编辑器,每行以回车结束(2)数据以文件形式存储(3)编辑器具有查找、替换、修改数据的功能2011-7-9。

请把所有的注释信息提取出来就可以写程序设计报告。

#include <stdio.h> /*标准文件流操作,这里使用了open/fclose/fprintf/printf/scanf/gets函数*/#include <stdlib.h> /*标准系统库,这里使用了malloc/free/exit*/#include <string.h> /*标准字符串库,这里使用strlen/strcpy/memcpy/memset*/ #define szLINE 252 /*定义一行字符串最长为252字节*/#define CMDS 12 /*定义12个标准行编辑命令*//*采用链表存储文本*/typedef struct LINE {char text[szLINE]; /*文本内容*/struct LINE * next; /*链表指针*/}L;/*简写无类型整数*/typedef unsigned int U; /*定义12个行编辑命令的标准格式*/typedef void (*FUNC)(L **, char*); /*定义12个标准行编辑命令的关键字*/char keywords[CMDS][8]={"quit", "help", "load", "save","view", "count", "append", "insert","erase", "edit", "lookup", "replace"}; /*end keywords*//*清空链表操作*/void clear(L ** lines){ L *a =0, *b=0;if(!lines) return ;a = *lines;while(a) {b=a->next ;free(a);a=b;} /*end while*/*lines=0;} /*end clear*//*在链表中根据行号index调出指定的行*/L *locate(L *lines, U index){ L *t=lines; U i = 0;if(!t) return 0;if(index == 0) return t;for(i=0; i<index;i++) {t=t->next;if(!t) return 0;}/*next*/return t;}/*end locate*//*浏览命令,如果f存在则以带行号格式保存文件(如果f==stdout则打印到屏幕上),浏览范围为from到to(行号)。

c语言课程设计C语言文本编辑器

c语言课程设计C语言文本编辑器

文本编辑器文本编辑器是最常用的文档创建和编辑工具。

随着计算机科学与技术的发展,用来处理文本的编辑器随处可见,并且形式多样。

比如,Windows下的记事本,写字板,EditPlus,UltraEdit等都是十分优秀的文本编辑器和处理工具。

在本章中,我们将向读者讲解如何利用C语言来发展开发一个简易的文本编辑器。

1 设计目的利用C语言的单链表数据结构及相关函数,本章编程实现了一个与DOS操作系统下的Edit相似的文本编辑器。

再次文本编辑器中,用户可以通过快捷和选择菜单项,完成基本的文本编辑器和文件处理工作。

通过文章的介绍,读者可以了解文本编辑器的开发过程,掌握菜单的开发技巧,加深对文件操作的理解。

更重要的是,希望此程序能抛砖引玉,引领读者掌握编程的方法和技巧,开发出更优秀的程序。

2 功能描述如图.1所示,文本编辑器主要由五大功能模块构成,它们分别是文件操作模块,文本编辑模块,剪切操作模块,菜单控制模块和帮助及其他模块。

下面分别简要介绍功能模块的功能。

(1)文件操作模块。

在文件操作模块中,主要完成文件的创建,打开,保存和另存操作。

用户可以选择File菜单上的New子菜单来完成新建文本文件操作;选择File菜单上的Save子菜单来完成保存文件操作选择File菜单上的Open子菜单来完成打开文件操作;选择Flie菜单上的Save as子菜单来完成文件的另存为操作。

在文件的打开,保存和另存为操作中,系统会提示用户输入文件路径及文件名。

值得一提的是,当用户打开一个文件时,指定的文件必须存在,否则系统会报错。

(2)文本编辑器模块。

在文本编辑器模块中,主要完成在编辑窗口中以添加或插入的方式输入字符,删除光标所在当前位置的单个字符或前一个位置的单个字符,朝上下左右4个方向的光标移动操作。

当光标所在位置及后面的位置没有字符时,系统会以添加的方式输入字符;当光标所在位置及后面的位置有字符时,系统会已插入的方式输入字符。

用户可以使用BackSpace键删除光标前一个字符,也可以使用Del键删除当前位置的字符或删除Ctrl+左移(右移)键i选定了的多个字符。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf("\n\nWhich line do you want to search?(To quit please input 0)[ ]\b\b");
scanf("%d",&indline);
if(indline==0)return;
else
for(j=0,k=0;j<MAXL;j++)
{
if(lines[j][0]!=0) k++;
{
int i,index;
int indline;
int j,k;
do
{
/*system("cls");*/
clrscr();
for(i=0,index=0;i<MAXL;i++)
if(lines[i][0]!=0)
{
index++;
printf("%d: %s",index,lines[i]);
}
printf("\n\nInput the search string and the replace ");printf("(To quit please input q):");
memset(buf,0,MAXC);
fflush(stdin);
fgets(buf, MAXC, stdin);
k= strlen(buf)-1;
scanf("%d",&indline);
if(indline==0)
return;
else
{
for(j=0,k=0;j<MAXL;j++)
{
if(lines[j][0]!=0) k++;
if(k==indline)
{
printf("\n\nThe line to be replaced is: \n%s",lines[j]);
printf("Please type your new line:\n");
memset(lines[j],0,MAXC);
fflush(stdin);
fgets(lines[j], MAXC, stdin);
break;
}
}
}
}while(true);
}
(3)删除模块
流程图
删除即在查找到某行的基础上再删掉,其具体流程图可参照查找的流程图
printf("Please select a number:[ ]\b\b");
do{
scanf("%d",&selection);
if(selection<0||selection>6) {
printf("Invalid selection!Please try again ");
printf("and select a number:[]\b\b\n");
main()
{FILE *pfile;
pfile=fopen("Linedit.txt","a+");
readfile(lines,pfile);
fclose(pfile);
menu(lines);
}
int readfile(char (*lines)[MAXC],FILE *pfile) {
int i=0;
语言程序设计报告
姓名:
班级:
学号:
指导教师:
课题:简单的行编辑器
简单的行编辑器
一.题目要求
1.设置一个简单的行编辑器,每行以回车结束。
2.数据以文件形式存储。
3.编辑器具有查找,替代,修改数据的功能。
二.需求分析
根据题目要求,数据以文件的形式存储,所以应提供文件的输入,输出等操作;还需要文件具有查找,替换,修改数据的功能。
scanf("%d",&indline);
if(indline==0)return;
else
for(j=0,k=0;j<MAXL;j++)
{
if(lines[j][0]!=0) k++;
if(k==indline)
{
printf("The line to be deleted is: \n%s\n",lines[j]);
case 2:replace(lines);break;
case 6:savetofile(lines);break;
case 0:myexit(lines);
}
} while(true);
}
3.各功能模块设计
(1)编辑模块
流程图
程序
/*****************************编辑*************************************/
if(k==indline)
{
printf("The line to be searched is: \n%s\n",lines[j]);
system("pause");
break;
}
}
}while(true);
}
(5)修改模块
流程图
删除模块的流程图也是在查找模块的基础上稍加改动,在此不再赘述
其流程图可简单写为
if(buf[k]=='\n') buf[k]='\0';
if(*buf=='q'&&*(buf+1)=='\0') return;
memset(search,0,MAXC);
memset(replace,0,MAXC);
token =strtok(buf, " ");
strcpy(search,token);
token =strtok(NULL, " ");
程序
/******************************修改**********************************/
/*在sSrc中用sReplaceStr替换sMatchStr */
int modifystr(char *sSrc,char *sMatchStr,char *sReplaceStr)
void edit(char (*lines)[MAXC])
{
int i,index;
/*system("cls");*/
clrscr();
for(i=0,index=0;i<MAXL;i++)
if(lines[i][0]!=0)
{
index++;
printf("%d: %s",index,lines[i]);
}
else
continue;
}
}
(2)替换模块
流程图
程序
/******************************替换****************************************/
void replace(char (*lines)[MAXC])
{
int i;
int indline;
do{
system("cls");
puts("\t\t***********************MUNU******************\n\n");
puts("\t\t1.Edit new line");
puts("\t\t2.Replace line");
puts("\t\t3.Delete line");
StringLen=FindPos-sSrc;
strncpy(caNewString,sSrc,StringLen);
strcat(caNewString,sReplaceStr);
strcat(caNewString,FindPos+strlen(sMatchStr));
strcpy(sSrc,caNewString);
三.总体设计
根据上面的需求分析,可以将这个系统的设计分为如下七大模块:
编辑,查找,修改,,删除,替换,保存,退出。
四.详细设计
1.主函数
为了各模块的独立性,主函数一般设计得比较简单,本系统主要用主函数打开上次保存的数据和进入主菜单函数
流程图
程序
/*********************************主函数**************************************/
FindPos = strstr(sSrc,sMatchStr);
}
return 0;
}
void modify(char (*lines)[MAXC])
{
int i,indline;
char buf[MAXC];
int k;
int j;
char* token=0;
char search[MAXC],replace[MAXC];
int j,k;
do
{
/*system("cls"); */
clrscr();
/*打印所有*/
for(i=0;i<MAXL;i++)
相关文档
最新文档