没有合适的资源?快使用搜索试试~ 我知道了~
数据结构课程设计:行编辑程序
4星 · 超过85%的资源 需积分: 42 63 下载量 32 浏览量
2010-01-14
17:12:11
上传
评论 8
收藏 196KB DOC 举报
温馨提示
试读
11页
由于被编辑的文本文件可能很大,全部读入编辑程序的数据空间(内存)的作法既不经济,也不总能实现。而用行编辑把待编辑文件的一段放进内存,称为活区。本行编辑程序是以每行不超过320个字符为前提的。每次编辑会读入80行,活区每次只显示20行。 1. 该程序要实现以下基本编辑命令和一些相关的命令: (1) 行插入。格式:i<回车><行号><回车><文本><回车>。 将<文本>插入活区第<行号>行之后。 (2) 行删除。格式:d<回车><行号1>,<行号2><回车>。 删除活区中第<行号1>行到第<行号2>行。 (3) 活区切换。格式:n<回车><页数><回车>。 由于每次从输入文件读入80行,而活区每页显示20行,而活区切换就是要切换到需编辑的页面上去。 (4) 活区显示。格式p<回车>。 显示当前要编辑的活区内容。印出的每一行都有一个前置行号和一个空格符,行号固定为2位,增量为1。 (5)清屏。 格式:c<回车>。 (6)获得帮助。格式:h<回车>。 (7)退出。 格式:e<回车>。
资源推荐
资源详情
资源评论
一、需求分析
由于被编辑的文本文件可能很大,全部读入编辑程序的数据空间(内存)的作法既不
经济,也不总能实现。而用行编辑把待编辑文件的一段放进内存,称为活区。本行编辑程
序是以每行不超过 320 个字符为前提的。每次编辑会读入 80 行,活区每次只显示 20 行。
1. 该程序要实现以下基本编辑命令和一些相关的命令:
(1) 行插入。格式:i<回车><行号><回车><文本><回车>。
将<文本>插入活区第<行号>行之后。
(2) 行删除。格式:d<回车><行号 1>,<行号 2><回车>。
删除活区中第<行号 1>行到第<行号 2>行。
(3) 活区切换。格式:n<回车><页数><回车>。
由于每次从输入文件读入 80 行,而活区每页显示 20 行,而活区切换就是要切
换到需编辑的页面上去。
(4) 活区显示。格式 p<回车>。
显示当前要编辑的活区内容。印出的每一行都有一个前置行号和一个空格符,行
号固定为 2 位,增量为 1。
(5)清屏。 格式:c<回车>。
(6)获得帮助。格式:h<回车>。
(7)退出。 格式:e<回车>。
二、概要设计
程序结构流程图:
存储结构的定义如下:
typedef struct text
{
char string[80];//存储每一行的元素
struct text *next;//指向后一个节点的指针
int flat;//确定此行是否被删除的标志
初始化
输入命令 i 输入命令 d 输入命令 n 输入命令 p 输入命令 c 输入命令 h 输入命令 e
插入一行内
容
删除一行内
容
切换活区 显示活区 清屏 显示帮助
信息
退出
}text,*textp;
功能函数:
Status Createlist(textp &head);
功能:建立一个 80 个节点的链表,是整个活区的大小
int del(textp head);
功能:删除显示的活区的任意一行。
int display(textp &head);
功能:按照每页 20 行的规格显示活区的内容。
void freemem(textp &head);
功能:销毁链表,释放内存。
int insert(textp &head);
功能:在显示的活区插入一行内容。
Status SaveFile(textp head,FILE *out);
功能:将活区的内容保存到输出文件。
Status LoadFile(textp head,FILE *fp);
功能:从输入文件读取内容到活区。
void HELP();
功能:提供命令的格式。
主函数:
void main()
{
初始化;
输入命令;
Switch(c)
{
case ‘e’: 退出并保存编辑的内容
case ‘p’: 显示活区
case ‘n’: 活区切换
case ‘d’: 删除一行
case ‘i’: 插入一行
case ‘c’: 清屏
case ‘h’: 获得帮助
}
}
三、详细设计
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<io.h>
#include<process.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
typedef struct text
{
char string[80];//存储每一行的元素
struct text *next;//指向后一个节点的指针
int flat;//确定此行是否被删除的标志
}text,*textp;
//函数声明
Status Createlist(textp &head);
int del(textp head);
int display(textp &head);
void freemem(textp &head);
int insert(textp &head);
Status SaveFile(textp head,FILE *out);
Status LoadFile(textp head,FILE *fp);
void HELP();
void main()//主函数,用来接受命令
//编辑函数,用来接受处理编辑命令
{textp head,q,p,p1;
int page=0;
FILE *fp,*out;
char c,inname[30],outname[30];
printf("################################欢迎使用行编辑程序######################
#######\n");
HELP();
printf("按任意键开始。。。。。");
c=getchar();
/*打开输入、输出文件*/
printf("Enter the infile name:");
scanf("%s",inname);
printf("Enter the outfile name:");
scanf("%s",outname);
if((fp=fopen(inname,"r"))==NULL)
{ printf("can't open the file! \n");
exit(0);}
剩余10页未读,继续阅读
资源评论
- tonvoo2015-01-06适合初学者,可以用来完成书上的实验
- shuiniaoe82012-10-17还不错,基本功能都能实现
- jiufengzhigu2012-12-02基本功能有实现,但有一些问题存在,可以改改
- benseventh2012-10-22实验书上的基本功能都有了,还是有一点小问题存在
chenelang
- 粉丝: 2
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功