数据结构-课程设计 串的查找与替换

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中北大学

数据结构

课程设计说明书

2011年01月06日

1设计目的

《数据结构》课程主要介绍最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。进行数据结构课程设计要达到以下目的:

⏹了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;

⏹初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;

⏹提高综合运用所学的理论知识和方法独立分析和解决问题的能力;

⏹训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科

学的工作方法和作风。

2.设计内容和要求

设计内容:

打开一篇英文文章,在该文章中找出所有给定的单词,然后对所有给定的单词替换为另外一个单词,再存盘。

设计要求:

(1) 符合课题要求,实现相应功能;

(2) 操作方便易行;

(3) 注意程序的实用性、安全性;

3.本设计所采用的数据结构

3.1数组

数组在编程应用时调用很方便随意,但在更改数组时比较麻烦必须调用数组中的所有元素。

char keyWords[SIZE];

char copyWords[SIZE];

char strOne[MAXLEN];

char strTwo[MAXLEN];

3.2串的匹配

if (keyWords[0] == strOne[i])

if (keyWords[j] != strOne[countFlag++])

4.功能模块详细设计

4.1 详细设计思想

a)需求分析

打开一篇英文文章,在该文章中找出所有给定的单词,然后对所有给定的单词替换为另外一个单词,再存盘。

b)概要设计

➢程序头设计

对程序作简单介绍以及输出程序制作人的基本信息。

main()

{

printf("\n\n\n\t\t\t数据结构课程设计\n");

printf("\n\t\t\t题目:串的查找与替换\n");

printf("\n\t\t\t专业:信息管理与信息系统\n");

printf("\n\t\t\t学号:0921030336\n");

printf("\n\t\t\t姓名:杨彦军");

printf("\n\t程序作用:打开一篇英语作文,在该文章中找出所有给定的单词,然后对\n\t所有给定的单词替换为另一个单词再存盘。");

printf("\n************************************\n");

}

➢主函数void main()

通过for循环对字符串进行匹配,找到匹配的单词然后将copy的单词字符放入strTwo 数组中,不匹配的单词也放入数组strTwo中完成替换,最后把strTwo中的字符放回文件中完成操作。

C)设计思想

串的查找与替换要实现的功能是:打开一篇英文文章,在该文章中找出所有给定的单词,然后对所有给定的单词替换为另外一个单词,再存盘。

首先实现程序比较简单的功能,即:输入要替换的单词和给定单词gets(keyWords);

gets(copyWords)。

然后实现程序打开文件的功能。

最后编写最核心的替换功能,首先用关键字来匹配要查找的单词,第一个单词匹配上的话再判断这个关键字在不在单词的首字母上,否则不匹配,主要是要实现替换单词的功能不替换其他单词中的字符串。然后匹配第二个字母,这样一次类推的判断。不匹

配的单词直接放入strTwo数组中,匹配的单词先替换然后再放入strTwo数组中。

4.2 核心代码

➢打开文件

if ((fp = fopen("filename", "r")) ==NULL )

{

printf("文件打开失败!\n");

exit(0);

}

➢查找和替换单词

while (!feof(fp))/* 读文件 */

{

strOne[countOne++] = fgetc(fp);/*这是从指定稳中取得一个字符strOne[countOne++] = fgets(fp);这是从指定文章中取得一个字符串*/

}

countOne--;/* 减去最后一个文件结束字符 */

for (i=0; i

{

if (keyWords[0] == strOne[i])

{

if ((' ' == strOne[i-1]) || ('\n' == strOne[i-1]) || (0 == i))

{

flag = 1;

countFlag = i + 1;

for (j=1; keyWords[j]!='\0'; j++)

{

if (keyWords[j] != strOne[countFlag++])/* 是否匹配 */

{

flag = 0;

break;

}

}

if ((' ' == strOne[countFlag]) || ('\n' == strOne[countFlag]) || (EOF == strOne[countFlag]))/* 2.检查单词后的一个字符 */

{

if (1 == flag)/* 若匹配,则进行拷贝 */

{

i = countFlag-1;

for (j=0; copyWords[j]!='\0'; j++)

{

strTwo[countTwo++] = copyWords[j];

}

}

}

else/* 另外 */

{

strTwo[countTwo++] = strOne[i];

}

}

else/* 另外 */

{

strTwo[countTwo++] = strOne[i];

}

}

else/* 另外 */

{

strTwo[countTwo++] = strOne[i];

}

}

相关文档
最新文档