数据结构课程设计——简单行编辑程序.docxVIP

  • 24
  • 0
  • 约8.71千字
  • 约 17页
  • 2021-03-25 发布于山东
  • 举报

数据结构课程设计——简单行编辑程序.docx

电子信息工程学院 课程设计报告 设计名称: 姓 名: 专业班级: 系 (院): 设计时间: 设计地点: 指导教师评语:  数据结构课程设计 简单行编辑程序 学 号: 电子信息工程学院 EDA 实验室 成绩: 签名: 年 月 日 数据结构课程设计报告 第 1 页,共 15 页 1.课程设计目的 1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程 序求解指定问题。 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; 提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。 2.课程设计任务与要求: 任务 问题描述: 文本编辑程序是利用计算机进行文字加工的基本软件工具,实现对文本文件的插入、删除等修 改操作。限制这些操作以行为单位进行的编辑程序称为行编辑程序。 被编辑的文本文件可能很大,全部读入编辑程序的数据空间(内存)的做法即不经济,又不总 能实现。一种解决方法是逐段的编辑。任何时刻只把待编辑文件的一段放在内存,称为活区。试按 这种方法实现一个简单的行编辑程序,设文件每行不超过 320 个字符,很少超过 80 个字符。 要求: 实现以下 4 条基本的编辑命令: 行插入。格式: i 行号 回车 文本 . 回车 将文本 插入活区中第 行号 行之后。 行删除。格式: d行号 1[ 空格 行号 2.] 回车 例如 删除活区中第 行号 1行(到第 行号 2行)。例如:例如:“ d10┛”和 d1014┛”。 活区切换。格式: n回车 将活区写入输出文件,并从输入文件中读入下一段,作为新的活区。 活区显示。格式: p回车 逐页地(每页 20 行)显示活区内容,在每显示的一页之后请用户决定是否继续显示以后各页 (如果存在)。印出的每一行要前置行号和一个空格符,行号固定占 4 位,增量为 1。 各条命令中的行号均须在活区中各行号范围之内,只有插入命令的行号可以等于活区第一行行号减一,表示插入当前的屏幕中第一行之前,否则命令参数非法。 数据结构课程设计报告 第 2 页,共 15 页 3.课程设计说明书 一 需求分析 1)、被编译的文本文件可能很大,全部读入编辑程序的数据空间(内存)的做法既不经济,也不总能实现。任何时刻只把待编辑文件的一段放在内存,称为活区。 2)、活区的大小用行数 ActiveMaxLen (可设为 100)来描述。可以以标准行块为单位为各行分配存储,每个标准行块可含 81 个行块。 3)、将输入文件中的内容的 ActiveMaxLen – x( x 由用户自己定义)行的内容读入活区中。然后分别对活区中的内容进行编辑。 4)、分别实现各命令的函数,然后对客户的需求实行相应的操作。对命令格式不正确的进行处理。 二 概要设计 ADT line{ 基本操作: enter(linenum) 初始条件:有内存。 操作结果: linenum +1. delete_text( ) 初始条件: line 存在。 操作结果:若删除的最后一行,则直接删除。 若删除中间一行,则后面的 linenum -1 。 Load( ) 初始条件:存在文件 file 操作结果:打开文件。 } ADT line 详细设计 1)将文本插在指定行端部 enter(int linenum) { struct line *info; for(;;) { info=(struct line *)malloc(sizeof(struct line)); if(!info) { 数据结构课程设计报告 第 3 页,共 15 页 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); } 2)删除一行 void delete_text() { struct line  *info; char s[80]; int linenum; printf(\tlinenum  :); gets(s); linenum=atoi(s); info=find(linenum); if(info) { if(start==info) { start=info-next; if(

文档评论(0)

1亿VIP精品文档

相关文档