串的查找和替换.docx
- 文档编号:10518918
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:16
- 大小:80.36KB
串的查找和替换.docx
《串的查找和替换.docx》由会员分享,可在线阅读,更多相关《串的查找和替换.docx(16页珍藏版)》请在冰点文库上搜索。
串的查找和替换
山东理工大学计算机学院
课程设计
(数据结构)
班级
姓名
学号
指导教师
二○一一年一月二十日
课程设计任务书及成绩评定
课题名称
串的查找和替换
Ⅰ、题目的目的和要求:
1、设计目的
巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。
(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。
(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。
2、设计题目要求:
设计内容:
问题描述:
打开一篇英文文章,在该文章中找出所有给定的单词,然后对所有给定的单词替换为另外一个单词,再存盘。
内容要求:
1.根据题目要求进行需求分析,分析出该项任务的主要功能和设计重点。
2.根据需求分析的内容划分模块
3.利用VC++软件进行程序设计并调试通过
4.写出课程设计说明书
Ⅱ、设计进度及完成情况
日期
内容
1.10-1.11
选取参考书,查阅有关文献资料,完成资料搜集和系统分析工作。
1.12~1.14
创建相关数据结构,录入源程序。
1.17~1.19
调试程序并记录调试中的问题,初步完成课程设计报告。
1.20~1.21
上交课程设计报告打印版并进行课程设计答辩,要求每个同学针对自己的设计回答指导教师3-4个问题。
考核结束后将课程设计报告和源程序的电子版交班长统一刻光盘上交。
Ⅲ、主要参考文献及资料
[1]严蔚敏数据结构(C语言版)清华大学出版社1999
[2]严蔚敏数据结构题集(C语言版)清华大学出版社1999
[3]谭浩强C语言程序设计清华大学出版社
[4]与所用编程环境相配套的C语言或C++相关的资料
Ⅳ、成绩评定:
设计成绩:
(教师填写)
指导老师:
(签字)
二○一一年一月二十一日
第一章概述……………………………………………………………1
第二章系统分析………………………………………………………2
第三章概要设计………………………………………………………3
第四章详细设计………………………………………………………4
第五章运行与测试……………………………………………………8
第六章总结与心得……………………………………………………11
参考文献………………………………………………………………12
第一章概述
课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。
课程设计是让同学们对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。
《数据结构》是一门重要的专业基础课,是计算机理论和应用的核心基础课程。
数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。
同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
在这次的课程设计中我选择的题目是串的查找和替换。
该课程设计实现了对文件的查找和替换。
我采用的数据结构是字符串数组,这样操作起来比较方便,思路比较清晰。
而如果采用指针则容易造成思路混乱,增加出错的几率。
该课程设计可以实现对已打开文件的查找和替换,操作完毕关闭程序后,文件的内容为修改后的内容,实用性比较强。
第二章系统分析
一.功能分析
该课程设计的功能主要实现串的查找与替换,首先打开一个文档,对该文档进行查找和替换,该课程设计的文档中要包含替换后对文件保存的函数。
以免造成替换后文件数据的丢失。
功能流程图:
二.主要函数及其功能
initstr()从文件初始化数组
inputchatihuan()从键盘输入要替换的单词
charu(charsource[],intindex,chardest[])把要替换的单词插入到被替换单词的位置
tihuans()调用函数是实现替换
第三章概要设计
1.数据结构的设计
本设计所采用的数据结构
数组
str[500]保存从文件中读取的字符
chazhao[15]保存被替换的单词
tihuan[15]保存要替换的单词
采用数组操作便于数据分析,思路清晰,便于操作。
2.算法的设计
(1)课程设计中首先要实现初始化数组。
(2)为了能够统计要查找的字符出现的次数,需要建立能够查找第一个出现要查找字符的下标的函数和要查看文章中共有多少个要查找的字符的函数。
(3)建立能够输入要替换的字符串的函数,该函数可以显示要被替换的字符串和替换的字符串,这样可使思路更为清晰。
(4)建立能够替换字符串的函数,实现字符串替换的功能。
(5)建立函数能够实现替换后的字符串得以保存。
第四章详细设计
1、设计每个成员函数;
/*数据结构:
串的查找和替换
作者:
赵延良*/
#include
#include
#include
#include
FILE*fp;
charstr[500];
charchazhao[15];
chartihuan[15];
/*从文件初始化数组*/
voidinitstr()
{
inti=0;
fp=fopen("string.txt","rt");/*重新打开文件*/
if(fp!
=NULL)
{
do
{
fscanf(fp,"%c",&str[i]);
i++;
}while(!
feof(fp));
fclose(fp);
}
}
/*查找第一个出现要查找字符的下标*/
intchazhaostring()
{
inti,j,k;
for(i=0;i {j=i;k=0; while((str[j]==chazhao[k])&&(chazhao[k]! ='\0')&&(str[j]! ='\0')) {j++;k++; } if(chazhao[k]=='\0')returni; } return-1; } /*输入要替换的字符串*/ voidinputchatihuan() {printf("Pleaseinputchaozhaostring: \n"); scanf("%s",chazhao); printf("Pleaseinputtihuanstring: \n"); scanf("%s",tihuan); getchar(); } /*查看文章中共有多少个要查找的字符*/ voidchazhaos() { inti,j,k,all=0; printf("Pleaseinputchaozhaostring: \n"); scanf("%s",chazhao); for(i=0;i {j=i;k=0; while((str[j]==chazhao[k])&&(chazhao[k]! ='\0')&&(str[j]! ='\0')) {j++;k++; } if(chazhao[k]=='\0')all++; } printf("chazhaosuccessed! \n"); printf("gongzhaodaole%dge%s",all,chazhao); printf("\nPressanykeyreturn....."); getchar();getchar(); } /*从指定的下标开始插入dest数组中的元素*/ voidcharu(charsource[],intindex,chardest[]){ inti,j,k,m; /*第一步,计算串dest的长度,存入j*/ j=strlen(dest); /*第二步,计算串source的长度,存入k*/ k=strlen(source); source[j+k]='\0'; i=j+k-1;m=k-1; while(m>=index) { source[i]=source[m]; i--;m--; } i=index;m=0; while(m {source[i]=dest[m];i++;m++;} } /*将str中要替换的内容替换掉*/ voidtihuans() { inta,b=0; inputchatihuan(); do {a=chazhaostring(); b=a; if(b==-1) { printf("theworddoesn'texit! \n"); return; } else {while(str[b+strlen(chazhao)]! ='\0') {str[b]=str[b+strlen(chazhao)]; b++; } str[b]='\0'; charu(str,a,tihuan); } a=chazhaostring(); }while(a! =-1); printf("tianhuansucceed\n"); printf("\nPressanykeyreturn....."); getchar(); } /*保存修改后的文章信息*/ voidsave() {inti=0; FILE*fp; fp=fopen("string.txt","w"); while(i { fputc(str[i],fp); i++; } } voidwelform() { system("cls"); printf("SYSTEMMAINMENU\n"); printf("*****************************************\n"); printf("*1: 输出内容*\n"); printf("*---------------------------------------*\n"); printf("*2: 查找*\n"); printf("*---------------------------------------*\n"); printf("*3: 替换*\n"); printf("*---------------------------------------*\n"); printf("*0: 退出*\n"); printf("*****************************************\n"); printf("\n\nPleaseinputorder: \n"); } 2.设计主函数; voidmain() { charch; initstr(); while (1) { welform(); scanf("%d",&ch); switch(ch) { case1: system("cls");printf("%s\n",str);getchar();getchar();break; case2: system("cls");chazhaos();break; case3: system("cls");tihuans();break; case0: save();exit(0); default: printf("\nYouhavainputthewrongorder! \n"); printf("Pressanykeyreturn....."); getchar(); getchar(); } } } 第五章运行与测试 运行测试首先进入界面: 显示文件输出内容: 显示查找内容界面 显示替换内容界面: 退出界面 按任意键即可退出 在调试程序中我遇到了一些问题,主要内容如下: (2)在源代码中,如果子函数放在主函数之后,需要先对子函数声明。 为使源代码更为简洁,我将子函数放在主函数前面。 这样可以使程序更为简洁,思路更加清晰。 (1)打开的文件中,要替换文件的内容,只有当执行完替换后,并且能够完全退出可执行程序时,内容才可以完全替换。 第六章总结与心得 两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。 在课程设计过程中,我一开始对自己如何完成一个独立的数据结构茫然不知所措,通过向老师和同学们请教,我逐步的了解了如何完成这次课程设计,并且提高了我对串的操作的熟练程度。 课程设计是我们专业课程知识综合应用的实践训练,是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础. 在这次数据结构课程设计过程中,体现出自己单独完成问题的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。 在此我十分感谢我的老师,在他们的指导下,我克服了在课程设计过程中许多的难题与不足,使我能够熟练的掌握了关于串的有关操作。 由于我的设计能力有限,在设计过程中难免出现错误,恳请老师们多多指教,我十分乐意接受老师的批评与指正,我将万分感谢。 参考文献: [1]严蔚敏、吴伟民主编《数据结构》(C语言版)清华大学出版社2002 [2]殷人昆等著《数据结构》(C++版)清华大学出版社2001 [3]金远平著《数据结构》(C++描述)清华大学出版社2005 [4]许卓群等著《数据结构与算法》高等教育出版社2004 [5]FrankM.Carrano等著《数据结构与C++高级教程》清华大学出版社2004 [6]严蔚敏、吴伟民《数据结构习题集》(C语言版)清华大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 查找 替换