“数据结构”上机实习项目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):
- 做好这个实习项目,最重要的工作就是数据结构的选择和设计。适当的数据结构可以使你的程序结构清晰,操作的实现方便,算法具有好的性质(速度快,虽然在编辑小文件时不明显,但大文件就会显现出来),适应性强(例如,请考虑能否适应编辑大型文件),易于扩充等等。
- 请综合考虑学过的几种数据结构,考虑编辑器需要执行的各种操作,做出自己的设计选择。
- 可能的数据结构设计非常多(我将在项目结束后讨论一些可能性,并简单分析其优点和缺点),建议各位同学设想若干种设计,而后根据对问题的分析选出一种使用。
|
注意事项:
- 要求每个同学独立完成这个实习项目,并写出一篇“实习报告”:
- 说明程序的使用方式,包括所实现的所有命令及其使用形式和功能
- 给出几个使用程序中所提供命令的例子
- 程序实现中的设计问题:选择了什么样的数据结构(为什么);程序的基本部分及其相互关系;几个最重要的操作的实现;实现中遇到的问题及其解决方法;最后的效果
- 程序完成后的思考:完成的程序有哪些不足之处;如果你重新做可能怎样改进;如果要你做一个真正能提供给别人使用的编辑器,你可能怎样设计等等。
- 教科书(第一版)最后的附录可参考,但不要把它作为样板
- 为了环保,程序和实习报告都采用电子文档形式(通过 email 附件)交辅导老师(不需要打印稿)。报告可以交 PDF 或 DOC 文件。
- 如果采用多个源文件的形式开发,发给老师前请把文件打包(可以打包为 rar 或者 zip)。注意: 只上交所有源程序文件(不要交可执行程序)。必须保证程序能正常编译和执行。
- 请注明所用的程序开发环境(作为程序里的注释),以便老师检查时参考。
- 请注意保证自己上交的文档中没有病毒。
- 实习项目成绩将根据所做工作和上面各项要求的完成情况评定
|