字符串操作课程设计报告.doc
- 文档编号:4921468
- 上传时间:2023-05-07
- 格式:DOC
- 页数:6
- 大小:48KB
字符串操作课程设计报告.doc
《字符串操作课程设计报告.doc》由会员分享,可在线阅读,更多相关《字符串操作课程设计报告.doc(6页珍藏版)》请在冰点文库上搜索。
南京理工大学VC++课程设计报告
南京理工大学VC++课程设计报告
课程:
VC++课程设计
系别:
计算机科学与技术大类
班级:
9121068401
学号:
912106840149
姓名:
韩飞
选题1名称:
字符串操作
选题1难易级别:
A级
选题2名称:
选题2难易级别:
自报成绩:
起止时间:
指导教师:
严悍
2013年09月
目录
1课题目标
通过多种成员函数的定义和运算符的重载,实现字符串的各种直接操作,如:
去掉串首串尾与子串相同的子符,子串在主串的定位,用新子串更换主串中的指定子串,比较字符串的大小,字符串连接等,所有功能已经经过验证.
2程序具体实现原理
2.1总体方案
设计一个类,在类中包含对字符串操作的成员函数,然后在主函数中用类的对象来调用成员函数,实现字符串操作的功能。
2.1.1开发平台
VC++6.0;
2.1.2基本原理
字符串操作流程图
菜单显示项目选择
循环
字符串加法
字符串减法
字符串比较
字符串具体操作
删除字符串首部相同字符
删除字符串尾部相同字符
删除字符串所有重复字符
字符串的插入操作
字符串的替换操作
字符串的倒置替换操作
开始
选择判断
退出
退出
1
3
2
2
5
4
5
1
3
4
6
7
选择
错误输入重选
2.2程序各个功能说明
2.2.1程序结构
classFstring
{
private:
char*str;
intnlength;
public:
voidcopy(constchar*s);
Fstring(){str=NULL;}
Fstring(char*s);
Fstring(boolb);
Fstring(inti);
Fstring(doubled);
Fstring(constFstring&f){this->copy(f.str);this->nlength=f.nlength;}
~Fstring();
intgetLength();
char*getstr(){returnthis->str;}
Fstring&operator=(constchar*s);
Fstring&operator=(constFstring&f);
voidshow(){cout<<(this->str);}
Fstringoperator+(constchar*sAppend);//重载加法运算符
Fstringoperator+(constFstringsAppend);//重载加法运算符
Fstring&operator+=(constchar*sAppend);//重载加法运算符
Fstring&operator+=(constFstringsAppend);//重载加法运算符
Fstringoperator-(constchar*sSub);//重载减法运算符
Fstringoperator-(constFstringsSub);//重载减法运算符
Fstring&operator-=(constchar*sSub);//重载减法运算符
Fstring&operator-=(constFstringsSub);//重载减法运算符
intoperator<(constchar*val);//重载关系<运算符
intoperator<(constFstringval);//重载关系<运算符
intoperator<=(constchar*val);//重载关系<=运算符
intoperator<=(constFstringval);//重载关系<=运算符
intoperator>(constchar*val);//重载关系>运算符
intoperator>(constFstringval);//重载关系>运算符
intoperator>=(constchar*val);//重载关系>=运算符
intoperator>=(constFstringval);//重载关系>=运算符
intoperator!
=(constchar*val);//重载关系!
=运算符
intoperator!
=(constFstringval);//重载关系!
=运算符
intoperator==(constchar*val);//重载关系==运算符
intoperator==(constFstringval);//重载关系==运算符
FstringLeft(constintnlength);//从字符串左边取出nlength个字符
FstringRight(constintnlength);//从字符串右边取出nlength个字符
intInstr(constintnStart,constchar*sSearch,constboolbCaseSensitive=true);/*从第nStart个字符处开始,在字串对象寻找字串
sSearch,参数bCaseSensitive表示忽略大小写*/
intInstrRev(constintnStart,constchar*sSearch,constboolbCaseSensitive=true);//寻找字串的倒置串在主串的位置
Fstring&RTrim();//串尾整理,即去掉串尾相同的字符
Fstring<rim();//串首整理,即去掉串首相同的字符
Fstring&deleteall();//删除所有重复字符
FstringReplace(constchar*sSearch,constchar*replace);//用字串replace替换主串中所有字串sSearch
FstringReplacrRev(constchar*sSearch,constchar*replace);//用字符串replace替换主串中所有字串sSearch的倒置串
FstringFormat(constchar*sFormat,...);//按指定格式输出字符串
intAddStart(Fstringf,intstart);//将字符串str插入到原字符串中从第start字符开始位置上,操作正确返回1
};
首先为Fstring类添加了两个成员变量:
char*型和int型,char*型用来指向字符串,int型变量用来储存字符串长度。
然后为Fstring添加成员函数,来完成对字符串的具体操作。
2.2.2课程设计要求的实现
(1)将主函数main()中的输出语句printf()改为VC++中的输出语句。
(2)程序中对字符串的处理函数均使用了字符数组sAns,它占用了大量存储空间,试使用动态分配存储空间的方法改写所有的函数,使之避免使用预先定义的长度很大的数组;并增加类的析构函数,删除动态分配的存储空间.
(3)新增运算符重载函数,重载-,-=运算符,实现字符串的删除操作,并根据返回值判断操作是否成功.
(4)新增成员函数voidDelRepeat(),实现在原字符串中删除相邻的重复字符的功能。
(5)新增成员函数intAddStart(FStringstr,intstart),实现将字串str插入到原字符串中从第start字符开始位置上,操作正确返回1.
(6)改写main函数的结构,界面为菜单的形式,根据菜单选项来验证类中所定义的各种成员函数及操作符重载函数的正确性。
3调试报告
以下面的表格形式记录程序调试和测试过程。
日期
遇到的问题
解决方法
2013,9,2
菜单选择时输入字符等非数字时,会出现死循环。
charstr1[30];
cin.getline(str1,30);
nChoice1=atoi(str1);//使用atoi函数
2013,9,4
unexpectedendoffilefound
少了一个大括号,找到缺少的大括号的位置加上即可
4总结
刚接触这道题时觉得挺简单的,但越往后写越觉得难,可能只是原理简单吧。
看课本上的一些关键代码,发现有很多的错误,因此我就决定在参考书上代码的基础上自己动手写。
在分析完这个题目需要实现的功能后,开始确定类中必需的成员函数。
在完成类的实现后,写完主函数后,编译执行时才出现很多很多的问题。
看到这些问题当时就觉得很郁闷,然后根据错误修改时才发现:
大多数的问题都是因为我的不认真,犯了很多很多的低级错误。
耐心地改完错误后,编译执行成功后,那种真实的兴奋感我觉得我这辈子都忘不了。
我也觉得这可能就是程序员能够坚持每天对着电脑,编写着枯燥的代码的动力吧。
当编译执行成功时,那种喜悦感足以让我以及很多程序员决定终身投入这项工作中。
这次的课程设计让我明白了:
做一个合格的程序员一定要认真,因为一个很小很小的错误都可能造成巨大的损失。
还有就是一定要有耐心,因为我们编写程序时不可避免的会犯错误,当犯错误时一定要有耐心的检查代码,找到问题的根本所在。
5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 字符串 操作 课程设计 报告