欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    简单行编辑程序——课程设计(共19页).doc

    • 资源ID:14071374       资源大小:71.50KB        全文页数:19页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    简单行编辑程序——课程设计(共19页).doc

    精选优质文档-倾情为你奉上简单行编辑程序题目:简单行编辑程序班级:计算机科学与技术(非师范)姓名:学号:完成日期:2010-6-251需求分析以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?并明确规定:文本编辑程序是利用计算机进行文字加工的基本软件工具,实现对文本文件的插入、删除等修改操作。限制这些操作以行为单位进行的编辑程序称为行编辑程序。(1) 输入的形式和输入值的范围;无范围(2) 输出的形式;字符串(3) 程序所能达到的功能;实现以下4条基本编辑命令:(1) 行插入。格式:i<行号><回车><文本><回车>将<文本>插入活区中第<行号>行之后(2)行删除。格式:d<行号1><行号2><回车>删除活区中第<行号1>行(到第<行号2>行)。两种格式的例子是:“d10”和“d1014”(3)活区切换。格式:n<回车>将活区写入输出文件,并从输入文件中读入下一段,作为新的活区。(4)活区显示。格式:p<回车>(4) 测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。2概要设计说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。typedef struct text char string80;/存储每一行的元素 struct text *next;/指向后一个节点的指针 struct text *pre;/指向前一个节点的指针 int num;/每一行元素的长度 int flat;/确定此行是否被删除的标志text;FILE *fp,*out;/fp是执行被打开的文件,out指向被写入的文件text *head;/链表的头指针int n=0,sum,delnum,xiugai=0,page=0;/file:/修改用来指示文件是否被修改过,如果修改过才回存盘。page用来计算显示的/file:/页数.delnum用来存储被删除的字节数,sum存储一页的总字节数3详细设计实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数和过程的调用关系图。cmd=getchar(); printf("n请输入命令(按E键退出):"); cmd=getchar(); switch(cmd) case 'e': case 'E': if(xiugai=1) saveall(); freemem(); if(fp) fclose(fp); if(out) fclose(out); system("cls"); return 0; case 'o': case 'O': Openfiles(); break; case 'p': case 'P': Createlist(); display(); break; case 'n': case 'N': saveanddisplay(10); break; case 'd': case 'D': del(); break; case 'i': case 'I': insert(); break; default:printf("nnn!输入错误!");4调试分析当我调试程序时发现前面的子程序调用后面的子程序竟然是错误的,明明已经定义了的子程序竟然没有定义这令我大为不解不过后来当我把被调用的程序放到前面,程序就顺利运行了。5用户使用说明说明如何使用你编写的程序,详细列出每一步的操作步骤。当你使用这个程序时,会出现一个简单的提示界面,你可以选择相应的help选项,来看操作说明。6测试结果列出你的测试结果,包括输入和输出。这里的测试数据应该完整和严格,最好多于需求分析中所列。7附录带注释的源程序。如果提交源程序软盘,可以只列出程序文件名的清单。#define NULL 0#define OK 0#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <conio.h>typedef struct text char string80;/存储每一行的元素 struct text *next;/指向后一个节点的指针 struct text *pre;/指向前一个节点的指针 int num;/每一行元素的长度 int flat;/确定此行是否被删除的标志text;FILE *fp,*out;/fp是执行被打开的文件,out指向被写入的文件text *head;/链表的头指针int n=0,sum,delnum,xiugai=0,page=0;/file:/修改用来指示文件是否被修改过,如果修改过才回存盘。page用来计算显示的/file:/页数.delnum用来存储被删除的字节数,sum存储一页的总字节数void byebye()/没有具体用处,只是写着玩的,在屏幕上显示一个bye puts("ttt* * * *"); puts("ttt* * * * * "); puts("ttt* * * * * "); puts("ttt* * * * * "); puts("ttt* * *"); puts("ttt* * * * "); puts("ttt* * * * "); puts("ttt* * * * "); puts("ttt* * *");void HELP()/帮助函数,显示一些命令的格式 printf("nt*n"); printf("t* 打开文件: o<行号><文件名><回车> *n"); printf("t* 行插入格式: i<行号><回车><文本><回车> *n"); printf("t* 行删除格式: d<行号1><空格><行号2><回车> *n"); printf("t* 活区切换格式: n<回车> *n"); printf("t* 活区显示格式: p<回车> *n"); printf("t* 注意:在执行所有命令前必须先用o命令打开文件,并 *n"); printf("t* 用p命令显示出来! *n"); printf("t*n"); system("pause"); printf("nnn"); void ABOUT()/也是写着玩的 printf("ntt*n"); printf("tt* welcome to the program *n"); printf("tt* all work and no play make jack adull boy *n"); printf("tt* enjoy your work *n"); printf("tt*n"); system("pause"); system("cls"); printf("nnn");void Createlist()/建立一个十个节点的链表,是文本中的一页 text *p1,*p2; p1=p2=(text *)malloc(sizeof(text); head=NULL; while(n<10) n=n+1; if(n=1) head=p1; else p2->next=p1; p1->pre=p2; p1->flat=0; p2=p1; p1=(text *)malloc(sizeof(text); p2->next=NULL;void freemem()/释放链表所占的内存 text *p; for(p=head;head!=NULL;) head=p->next; free(p); p=head; int Openfiles()/打开文件的函数 char name30,outname30; puts("请输入要打开的文件名:"); scanf("%s",name); if(fp=fopen(name,"r+")=NULL) printf("打不开原文件! n"); exit(0); puts("请输入要写入的文件名:"); scanf("%s",outname); if(out=fopen(outname,"w+")=NULL) printf("打不开目标文件!n"); exit(0); return 0;int display()/从文件中读入到链表中,并显示出来 int i; char conti='y' text *p; while(!feof(fp)&&(conti='y'|conti='Y') page+; printf("tt第%d页n",page); for(i=0,p=head,sum=0;(i<10)&&(!feof(fp);i+,p=p->next) fgets(p->string,sizeof(p->string),fp); puts(p->string); p->flat=1; p->num=strlen(p->string); sum=sum+p->num; puts("Continue?(Y/N):"); conti=getche(); if(feof(fp) puts("n文件已经结束!"); return 0; return 0;int saveanddisplay(int hang)/命令n执行的函数,用来将活区的内容显示并读入下一页内容 int i,endflat=0; char conti='y' text *p=NULL; page+; for(i=0,p=head;i<hang;i+,p=p->next) /file:/将活区写入文件 if(p->flat=1) fputs(p->string,out); p->flat=0; if(!feof(fp) printf("tt第%d页n",page); for(i=0,p=head,sum=0;(i<10)&&(!feof(fp);i+,p=p->next)/从文件读入活区 if(fgets(p->string,sizeof(p->string),fp) puts(p->string); p->flat=1; p->num=strlen(p->string); sum=sum+p->num; if(feof(fp) printf("文件已经结束!"); return 0;int saveall()/退出编辑函数后执行的函数,将所有的内容存盘 int i,endflat=0; char conti='y' text *p; for(i=0,p=head;i<10;i+,p=p->next) /file:/将活区写入文件 if(p->flat=1) fputs(p->string,out); p->flat=0; while(!feof(fp)/将其余的内容写入文件 fputc(fgetc(fp),out); return 0;int del()/删除d命令对应的函数,用来删minmax中的行,用结构体中的flat表示是否被删除 text *p1,*p2,*p3; int min,max,i; xiugai=1; scanf("%d %d",&min,&max); if(head=NULL) printf("nlist null!n"); return 0; p1=p2=head; for(i=0;i<min-1;i+)/*找到要删除的第一行*/ p1=p1->next; for(i=0;i<max;i+)/*找到要删除的最后一行*/ p2=p2->next; for(delnum=0;p1!=p2;p1=p1->next)/*删除中间的节点,将flat赋值0*/ p1->flat=0; delnum=delnum+p1->num; for(i=0,p3=head;i<10;i+,p3=p3->next)/显示删除后的结果 if(p3->flat=1) puts(p3->string); saveanddisplay(10);/将删除后的结果存盘并显示下一页内容(十行) xiugai=1; return 0; int insert()/插入i命令对应的函数,在i行后插入文本 int hang,i,increhang=1,number=1; text *p,*p1,*p2; xiugai=1; scanf("%d",&hang); p=p1=NULL; for(i=0,p1=head;i<hang-1;i+,p1=p1->next);/找到要插入行的前一列 p=(text *)malloc(sizeof(text);/为插入行分配空间 p->flat=1; p->next=p1->next;/从此行向下四行将插入行插入到链表中 p->pre=p1; p1->next->pre=p; p1->next=p; p->string0=getchar(); p->string0=getchar(); for(i=1;(i<80)&&(p->stringi-1!='');i+) p->stringi=getchar(); if(i+1=80)&&(p->stringi!='')/如果插入的内容超过一行 /file:/的容量,则分配下一行空间 p1=p; /file:/并将其连入链表 p=(text *)malloc(sizeof(text); p->flat=1; p->next=p1->next; p->pre=p1; p1->next->pre=p; p1->next=p; i=0; increhang+; p->num=i; p->stringi-1='n' p->stringi='0' puts("修改后的链表:"); for(p2=head;p2!=NULL;p2=p2->next)/显示出修改后的链表 puts(p2->string); saveanddisplay(10+increhang);/将修改后的链表存盘并显示下一页内容 xiugai=1; return 0; int EDIT()/编辑函数,用来接受处理编辑命令 char cmd; do cmd=getchar(); printf("n请输入命令(按E键退出):"); cmd=getchar(); switch(cmd) case 'e': case 'E': if(xiugai=1) saveall(); freemem(); if(fp) fclose(fp); if(out) fclose(out); system("cls"); return 0; case 'o': case 'O': Openfiles(); break; case 'p': case 'P': Createlist(); display(); break; case 'n': case 'N': saveanddisplay(10); break; case 'd': case 'D': del(); break; case 'i': case 'I': insert(); break; default:printf("nnn!输入错误!"); while(cmd!='e'&&cmd!='E'); return 0;int main()/主函数,用来接受命令 char cmd; do printf("ntt*n"); printf("tt* 1 EDIT *n"); printf("tt* 2 HELP *n"); printf("tt* 3 ABOUT *n"); printf("tt* 4 EXIT *n"); printf("tt*n"); printf("nn请选择1,2,3,4:"); cmd=getche(); switch(cmd) case '4' : system("cls"); byebye(); break; case '2' : system("cls"); HELP(); cmd=0; break; case '3' : system("cls"); ABOUT(); cmd=0; break; case '1' : EDIT(); cmd=0; break; default : printf("nnn!输入错误!n"); while(cmd!='4'); return 0; 专心-专注-专业

    注意事项

    本文(简单行编辑程序——课程设计(共19页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开