字符串类课程设计说明书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
字符串类课程设计说明书
目录
前言 (1)
正文 (2)
2.1设计的目的和意义 (3)
2.2目标与总体方案 (3)
2.3设计方法和内容 (4)
2.3.1开发环境 (4)
2.3.2设计流程图 (4)
2.3.3设计内容 (5)
2.4设计创新和关键技术 (11)
2.5结论 (13)
致谢 (13)
参考文献 (15)
附录 (16)
前言
在科技日新月异的今天,电脑成为人的生活中不可缺少的一部分。作为计算机专业的学生,应该充分利用所学知识,把实际问题转移到电脑上去,通过电脑的编程,使复杂问题简单化,深奥问题浅显化,抽象问题具体化。在学过面向对象的语言C++后,我们对计算机有了更深的了解。计算机科学是一种创造性思维活动,其教育必须面向设计。“数据结构”正是一门面向设计,且处于计算机学科核心地位的技术基础和主干必修课。
字符串数据是计算机非数值处理的主要对象之一。随着语言加工程序的发展,许多语言增加了字
符串类型,在程序中可以使用字符串变量进行一系列字符串操作[1]。例如:在事务处理程序中,顾客的姓名和地址以及货物的名称、产地和规格等。要是将这些信息用计算机存储起来,进行各种操作都会很方便了。在这里,我针对字符串的处理写了许多操作,这将对信息检索系统有很大的作用。
本次设计主要设计的是关于字符串类的研究。在里面囊括了串的多种实现方式,如顺序存储;建立一个值和某个字符串相等的串,块链存储。其次,在本次设计中,可以对串进行求长度,判断是否为空,清空某个串,在主串中插入一个子串,在主串中删除一个子串,返回主串的的某个子串,将字符串反转输出,将主串的某个子串用另一个串替换,复制一个串,将两个串进行比较,将两个串联结在一起,求一个子串在主串中第一次出现的位置,查找字符串中元音字母的个数,判断一个串是否是回文,串的大小写转换,将一个串转换成整数。
此次设计应用广泛,文字编辑程序、事务问答系统、自然语言翻译系统、音乐分析程序等都可以应用这个原理实现。
正文
数据结构指的是数据之间的逻辑关系以及数据在计算机中的存储方式。我们现在所使用的计算机的硬件结构主要是面向数值计算的需要,基本上没有提供处理字符串数据的操作指令,需要用软件实现
字符串数据类型,在不同的应用中,所处理的字符串具有不同的特点[2]。作为计算机专业的学生,应该努力学好各种计算机语言,培养编程创新的能力。
2.1 设计的目的和意义
目的:程序=算法+数据结构。本次设计主要是研究串类的各种操作方式。集合了串的各种操作算法并对此进行编程,熟悉了解并掌握串的各种算法,对以后做信息检索系统等都有很大的用处。
意义:字符串是一个计算机进行输入输出的主要数据对象。在计算机内部计算和处理数据时,这是一个数据的值和表示形式之间关系的问题。在web应用设计中,不同页面之间传递参数采用字符串。当人们坐在计算机前面输入数据时,通过键盘操作和鼠标的点击,传递给计算机内部的都是字符串数据。所以研究字符串的结构非常必要[3]。
2.2 目标与总体方案
目标:建立一个操作菜单。通过选择菜单里的选项,达到操作字符串,实现串的不同建立,求串的长度,判断一个串是否为空,清空某个串,在主串中插入一个子串,在主串中删除一个子串,返回主串的的某个子串,将字符串反转输出,将主串的某个子串用另一个串替换,复制一个串,将两个串进行比较,将两个串联结在一起,串的大小写转换,将一个串转换成整数等目的。
总体方案:首先,建立一个字符串。建立字符串
的方式有:顺序存储、建立一个值为某个串的字符串、块链存储。再依次实现其它操作。
2.3 设计方法和内容
2.3.1开发环境
硬件环境:一台联想计算机,其配置为:CPU: Pentium(R)4 2.4GHz 内存:256MB 硬盘:40G 主板:SIS651-A201-8100.
软件环境:Microsoft Windows XP Professional 版本 2002 Service Pack 2 并且安装了可供编程的Microsoft visual C++6.0.
2.3.2设计流程图
本次程序的类命名为String,里面的成员函数包括:逻辑bool类型的有StrAssign(char *chars)(利用已有的一个char串建立一个字符串),Insert()(在主串中插入一个子串),Delete()(在子串中删除一个子串),substring (String &sub)(返回主串中的一个子串),concat(String s)(将两个字符串连接起来);整型的有Length()(求一个字符串的长度),Index()(匹配模式),compare(String s)(比较两个字符串的大小),Huiwen(char*str)(判断一个字符串是否是回文),count_vowel(const char *s)(计算串中元音字母个数);还有display()(输出函数),clear()(将一个字符串清空),Strcopy()(复制一个字符串),Strrev()(将一个字符串反转输出)。具体流程如图一:
图2-1 设计流程图
2.3.3设计内容
在各种高级语言的编译程序中,源程序和目标程序都被处理成字符串数据,各种源程序编辑器的功能强弱有差异,但其基本操作是一致的,一般都包括串的查找、插入、删除、转换等[4]。
本设计中,整个程序分为三个独立的文档。其中包括:头文件string.h,源文件string.cpp和main.cpp。头文件包括一个类class String,里面是对各个函数进行声明。类的私有成员有一维数组
str1[40]。字符串的最大长度maxlen;字符串的当前长度curlen。
串是一种特殊的线性表,它的每一个元素仅有一个字符所组成。因此可以用线性表的存储方法来存储串。串的实现方式大致分为三种:1.串的顺序存储;
2.串的块链存储;
3.串的堆分配存储。串的顺序存储是用一组地址连续的储存单元存储字符串的字符序列,这样的存储结构访问一组连续字符非常方便,体现了顺序表的优点:随机存储[6]。串的块链丰储类似线性表中的链表,不过在一个结点中它储存的并不是一个字符,而是一个字符串,一般来说,以块链作为存储结构时实现串的操作比较麻烦。串的堆分配存储的特点是串变量的存储空间是程序执行过程中动态分配而得,程序中出现的所有串变量可用的存储空间是一个称之为“堆”的共享空间。在本设计中,运用的是已知一个字符串再建立一个字符串。[8]存储方式的代码如下:
bool SString::StrAssign(char *chars) //生成一个值为chars的串
{
if(strlen(chars)>maxsize) //判断chars的长度是否比串的长度大
return false; //大,则错误
else
{
curlen=strlen(chars); //令串的长度等于chars的长度