“数据结构”上机实习项目1
布置作业时间:10.26交作业的截止时间:11.16
请设计并实现一个简单文本编辑器,应实现如下功能:
  • 它应能不断接收和执行人通过键盘发出的命令,直至收到结束命令时终止运行。
  • 启动后给出提示信息,表示已经进入结束和执行命令的正常工作状态。
请实现如下命令(注意:下面说明中的 '[' 和 ']' 在实际命令中并不出现,命令和命令参数之间用空格分隔):
i [文件名]把指定文件读入编辑器(编辑存储区)
o [文件名]将编辑存储区的内容写入指定文件
l [n] [字符串]把给定字符串插入编辑文本中作为第n行
d [n]删除编辑区里的第n行
v显示整个文本编辑区的内容
p [n]显示文本第n行的内容
f [字符串]显示包含指定字符串的所有行,在行前给出行的编号
r [字符串1] [字符串2]将文本里所有的"字符串1"替换为"字符串2"
s [n] [字符串1] [字符串2]将第n行里所有的"字符串1"替换为"字符串2"
q终止编辑器程序
h帮助,说明所有命令及其使用方式(类似这个表)
请考虑下面建议:
  • 请首先考虑好编辑内容的存储组织问题
  • 可以假定每行的长度不超过某指定字符数,例如80和127字符
  • 可以不考虑跨行的字符串匹配问题
  • 可以考虑用C标准库的行式读入命令(gets或fgets)把命令行整个读入一个字符数组,而后在数组里分析命令内容的实现方式。这样实现起来比较方便
  • 可根据自己的认识增加其他命令(设计命令形式并完成相应实现)
为做好这一练习,请注意下面问题(2006.11.1):
  • 做好这个实习项目,最重要的工作就是数据结构的选择和设计。适当的数据结构可以使你的程序结构清晰,操作的实现方便,算法具有好的性质(速度快,虽然在编辑小文件时不明显,但大文件就会显现出来),适应性强(例如,请考虑能否适应编辑大型文件),易于扩充等等。
  • 请综合考虑学过的几种数据结构,考虑编辑器需要执行的各种操作,做出自己的设计选择。
  • 可能的数据结构设计非常多(我将在项目结束后讨论一些可能性,并简单分析其优点和缺点),建议各位同学设想若干种设计,而后根据对问题的分析选出一种使用。
注意事项:
  1. 要求每个同学独立完成这个实习项目,并写出一篇“实习报告”:
    • 说明程序的使用方式,包括所实现的所有命令及其使用形式和功能
    • 给出几个使用程序中所提供命令的例子
    • 程序实现中的设计问题:选择了什么样的数据结构(为什么);程序的基本部分及其相互关系;几个最重要的操作的实现;实现中遇到的问题及其解决方法;最后的效果
    • 程序完成后的思考:完成的程序有哪些不足之处;如果你重新做可能怎样改进;如果要你做一个真正能提供给别人使用的编辑器,你可能怎样设计等等。
    • 教科书(第一版)最后的附录可参考,但不要把它作为样板
  2. 为了环保,程序和实习报告都采用电子文档形式(通过 email 附件)交辅导老师(不需要打印稿)。报告可以交 PDF 或 DOC 文件。
  3. 如果采用多个源文件的形式开发,发给老师前请把文件打包(可以打包为 rar 或者 zip)。注意: 只上交所有源程序文件(不要交可执行程序)。必须保证程序能正常编译和执行。
  4. 请注明所用的程序开发环境(作为程序里的注释),以便老师检查时参考。
  5. 请注意保证自己上交的文档中没有病毒。
  6. 实习项目成绩将根据所做工作和上面各项要求的完成情况评定
本页及相关页面(除另声明者外)由裘宗燕创建维护,可自由用于各种学习活动。其他使用需得到作者许可。