当前位置:文档之家› 武汉工程大学计算机学院c++课程设计

武汉工程大学计算机学院c++课程设计

武汉工程大学计算机科学与工程学院综合设计报告设计名称:软件基础综合设计设计题目:简易交互式文本文件编辑器学生学号:1305120703专业班级:2013计算机科学与技术05学生姓名:高学涛学生成绩:指导教师(职称):张俊(副教授)、王邯(讲师)课题工作时间:2015.6.3 至2015.6.26说明:1、报告中的第一、二、三项由指导教师在综合设计开始前填写并发给每个学生;四、五两项(中英文摘要)由学生在完成综合设计后填写。

2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。

3、指导教师评语一栏由指导教师就学生在整个设计期间的平时表现、设计完成情况、报告的质量及答辩情况,给出客观、全面的评价。

4、所有学生必须参加综合设计的答辩环节,凡不参加答辩者,其成绩一律按不及格处理。

答辩小组成员应由2人及以上教师组成。

5、报告正文字数一般应不少于5000字,也可由指导教师根据本门综合设计的情况另行规定。

6、平时表现成绩低于6分的学生,其综合设计成绩按不及格处理。

7、此表格式为武汉工程大学计算机科学与工程学院提供的基本格式(适用于学院各类综合设计),各教研室可根据本门综合设计的特点及内容做适当的调整,并上报学院批准。

答辩记录表成绩评定表学生姓名:高学涛学号:1305120703 班级:2013计算机科学与技术05目录摘要 (II)Abstract (II)第一章设计概述 (1)1.1 设计背景 (1)1.2 设计目的和意义 (1)1.3 主要问题及技术要求 (1)第二章系统分析 (3)2.1需求概述 (3)2.2难点分析 (3)2.3系统构成及相互关系 (4)第三章设计与实现 (5)3.1 功能设计 (5)3.2 功能实现 (6)第四章功能测试及分析 (10)4.1 显示“L”的功能测试及分析 (10)4.2 删除“D”的功能测试及分析 (12)4.3 增补“A”的功能测试及分析 (14)4.4 保存“S”的功能测试及分析 (15)4.5 打开“O”的功能测试及分析 (16)4.6 插入“I”的功能测试及分析 (17)4.7 查找“F”的功能测试及分析 (18)4.8 替换“R”的功能测试及分析 (19)4.9 改变“C”的功能测试及分析 (20)4.10 退出“X”的功能测试及分析 (21)总结 (22)致谢 (23)参考文献 (24)摘要在计算机的文件中,经常使用的一种是文本文件,其中文字除了如回车换行和跳格外,并不包含其他控制字符,一般程序的源文件也是输入这一类。

通过完成文本编辑器,重点掌握字符类型的各种操作,如模式匹配等。

简易交互式文本文件编辑器实现了打开、保存、输出、删除、查找、插入和替换等功能。

循环读入指令到读到退出指令为止,将指令分割为操作码位和操作数位用不同变量存放。

用switch-case语句以操作码不同分别对不同指令分开处理。

通过双向单链表实现每行文字的连接和存储,使用双向链表的基本操作对节点操作,如插入,删除使用cstring头文件内的库函数进行字符串的操作。

优点是操作简便,缺点是只能对整行的文字进行操作,而不能对行内单个字符进行编辑。

下一步的改进方向应该是增加对行内单个字符编辑的方法。

关键词:文本文件;编辑;字符操作。

AbstractIn the computer file, text file is usually used. the text except as enter and table extremely, does not include other control characters, general program source file is input this class. Through the completion of the text editor, focus on the characters of the type of operation, such as pattern matching, etc..Simple interactive text editor to achieve the open, save, output, delete, find, insert and replace. Read instructions to read instructions to read out the instruction, the instruction is divided into the operation code bit and operation of digital with different variable storage. The switch-case statement is used to separate the different instruction. Through two-way chain table for each line of the text to achieve the connection and storage, using two-way linked list of basic operations of nodes, such as insert, delete using CString header in the library string operations.The advantage is that the operation is simple, the disadvantage is that the entire line of text can only be operated, and can not be a single character in the line edit. The next step should be to increase the direction of a single character editor.Keywords:text file;edit;character operation第一章设计概述1.1 设计背景计算机中有许多种类型的文件,文本文件是其中一种常见的文件类型。

而计算机中对文本文件的处理工具也多种多样。

然而我们只知去使用这些工具,却未曾想过其中的原理,未曾考虑过如何实现。

简易交互式文本文件编辑器需要我们自己动手实现,可以帮助我们去了解编辑器的基本实现思路,去探寻事物的实质。

简易交互式文本文件编辑器是根据课程设计课题要求,使用C++语言编写出来的小程序。

1.2 设计目的和意义在计算机的文件中,经常使用的一种是文本文件,其中文字除了如回车换行和跳格外,并不包含其他控制字符,一般程序的源文件也是输入这一类。

通过完成文本编辑器,重点掌握字符类型的各种操作,如模式匹配等。

课程设计旨在提高学生的动手能力和思考能力,对学生自身而言有很大的益处。

1.3 设计理论依据我们所设计的文本文件编辑器所使用的数据结构为结点类型为字符串的双链表类型。

相对于其他数据类型(如顺序表)而言,在链表上进行插入删除等操作比较容易实现,而我们使用的双链表则会更加方便。

在字符串操作上,可以使用string.h头文件中的库函数来进行,比如求字符串长度的strlen()函数,复制字符串的strcpy()函数,求是否包含子串rep的strstr()函数。

读文件操作上可以使用fopen()函数判断文件是否存在、建立文件输入输出流等,对文件写和读分别可以用fputs()和fgets()函数来实现。

1.4 主要问题及技术要求1.4.1 主要问题主要的问题在于对字符串的操作上,需要截取特定的字符串,转化为整型,还需要在替换的时候,字符数组需要进行部分后移和部分前移的操作。

其次便是链表节点指针域的移动,还有键盘格式敲入的回车在字符串中会以两个字符的格式出现,需要使用清空输入流语句将多余的一个清除。

其他问题就是这次的课程设计主要实在cmd命令窗口下操作,界面还是比较粗糙,可读性也不强。

1.4.2技术要求技术上,我们需要熟悉string.h头文件内的库函数操作;熟悉链表的构建、插入、删除等操作;熟悉文件流的操作。

本次课程设计,程序均在Dev C++上运行,我们需要熟悉该软件的操作和运行环境,需要有在出现异常时调试程序的能力。

第二章系统分析2.1需求概述主要功能需求包括编辑、显示、查找、增加、删除和替换等。

下面我将一步步进行功能的分析。

功能的调出通过在命令行输入特定的字母来实现,当然,不区分大小写。

但是对于命令的格式却有一定的要求。

显示:调用字母为L / l(为避免分析冗杂,此后只表述大写字母格式),命令格式可以为:L [起始行号] [终止行号](以下所有的“[”和“]”在命令行窗口运行程序时均不需要输入)、L [行号]、L。

三种命令从左至右依次表示:显示起始行号至终止行号之间的内容、显示特定行号的内容、显示当前行号的内容(关于当前行号,会在后面有所表述)。

上述三种命令已经可以自动识别,若出现其他样式的命令,则提示”指令错误!”(以下命令中若出现同样情况,也提示”指令错误”)。

删除:调用字母为D / d,命令格式可以为:D [起始行号] [终止行号]、D [行号]、D。

三种命令从左至右依次表示:删除从起始行号至终止行号之间的内容、删除特定行号的内容、删除当前行号的内容。

追加增补:调用字母为A / a,命令格式为:A。

由于增补即在文件结尾增加,所以并无其他可用命令格式。

保存文件:调用字母为S / s,命令格式为:S [文件名]、S。

若仅输入S,则继续提示输入保存文件名打开文件:调用字母为O / o,命令格式为O [文件名]、O。

若仅输入O,则继续提示输入打开文件名。

插入:调用字母为I / i,命令格式为I [行号]、I,两种命令依次表示:在行号前插入一行内容、在当前行前插入一行内容。

查找字符串:调用字母为F / f,命令格式为:F、F [待查找字符串],若仅输入F,则继续提示输入待查找的字符串。

替换字符串:调用字母为R / r,命令格式为:R [源字符串] [目标字符串],表示为将文件中所有的源字符串都用目标字符串代替。

改变当前行号:调用字母为C / c,命令格式为:C [行号]、C,若仅输入C,则继续提示输入改变值。

退出:调用字母为X / x。

命令格式为X。

2.2难点分析难点主要是在字符串的分割上,还有就是字符的移位处理和链表上指针的移动操作,即指针域的改变。

2.3系统构成及相互关系主体是while循环内的switch-case语句代表的功能区,其次是外部自定义函数帮助功能实现。

int main(){while(1){cout<<"请输入指令:"<<endl;gets(ins);char c=ins[0];switch(c){}if(CloseFlag) break;}return 0;}SaveFlag和CloseFlag的存在连接起了switch-case语句和while语句。

相关主题