课程设计(文)务书
软件 学 院 软件+交通运输 专 业 班
课程设计(文)题目 字符处理系统
二课程设计(文)工作 2012 年 6 月 4日起 2012 年 6 月 10日止
三课程设计(文) 点 创新楼
目录
课题描述 1
二 设计目求 1
三 总体设计 2
四 详细设计 3
41字符串赋值函数3
42求取字符串长度函数4
43字符串复制函数5
44字符串较6
45字符串查找7
46字符串插入7
47字符串删10
五 程序编码 12
六 程序调试测试结果 17
七 总结 19
参考文献 19
课题描述
次课程设计采C++语言编写字符串处理函数系统该系统具出意两字符串求出字符串长度实现字符串拷贝连接较功时具实现定字符串1(串)字符串2(子串)查找子串串中位置定字符串输入插入字符串(字符)插入位置实现字符串(字符)插入功定字符串实现删特定某字符功
二 设计目求
1 设计目
(1) 熟练掌握C++语言基知识技
(2) 掌握面象程序设计基思路方法
(3) 解指针类继承文件开保存链表应
(4) 利学基知识技解决面象程序设计问题
(5) 培养分析解决问题力提高学生科技文写作力
2 设计求
运C++语言描述数类字符串类类应包含数成员成员函数设计基类派生类运态性虚函数知识注重面象程序设计理知识理解实际动手编程力求设计继承派生态性类理解面象程序设计核心概念
(1) 建立数类字符串类
(2) 数字符串信息初始化
(3) 字符串信息输出
(4) 获字符串长度
(5) 字符串中查找字符
(6) 字符串中查找外字符串
(7) 较字符串
(8) 字符串插入删
三总体设计
定义String类实现字符串类赋值连接复制查找交换等操作先设计总类然写出子类实现务定功
四详细设计
41字符串赋值函数:
1)字符串赋值函数输出算法:
cout<<输入字符串1(长度200字符)<
cout<<输入字符串2(长度200字符)<
cout<<字符串1:<
2) 字符串赋值函数流
程图图41示:
图41 字符串初始化赋初值
42求取字符串长度函数
1)字符串长度函数算法示:
int i0int j0char *p1s1char *p2s2
cout<<字符串1长度<
cout< while(*p2++'\0')直碰\0时j+1
++j
cout<<字符串2长度<
43字符串复制函数
1)字符串复制函数算法:
char *p1s1
char *p2s2
cout<<输出复制字符串<
*p1*p2
p1++
p2++}
*p1'\0'
cout<
44字符串较:
1) 字符串连接函数算法:
char *p1s1char *p2s2
cout<<输入字符串1(长度200字符)<
cout<<输入字符串2(长度200字符)<
cout<<输出两字符串较结果<
第字母较指针断移直判断出止
{if((*p1*p2)<0)
{cout<<字符串1字符串2<
{cout<<字符串1字符串2<
if(*p1'\0'&&*p2'\0')
cout<<两字符串相等<
2)字符串较函数流程图图44示:
45字符串查找
1) 字符串查找函数算法:
char a1[512] {'\0'}char a2[512] {'\0'}
int i0int j0
cout << 请输入字符串 cin >>a1a1原字符串
cout << 请输入查找字符串 cin >>a2a2查找
for(i0i<(strlen(a1)strlen(a2)+1)i++)
{
for(j 0 j < strlen(a2) j++)
{
if(a2[j]a1[i+j])
{
break
}
}
if(j strlen(a2))
{
cout << 位置:< return 0
}
}
cout << 存 << endl
return 0
}
46字符串插入
1) 字符串插入函数算法:
int ichar s3[100]char s4[100]
char *p1s1char *p3s3char *p4s4
s1原字符串s3插入字符串
cout<<输入字符串(长度200字符)<
cout<<输入插入字符串:<
cout<<输入插入位置:<
for(p1&s1[i](*p1)'\0'++p1++p4){
*p4*p1字符串1赋4
}
*p4'\0'
for(p1&s1[i](*p3)'\0'++p1++p3){
*p1*p3}
*p1'\0'
while(*p1'\0')
++p1
for(p4s4(*p4)'\0'++p4++p1){
*p1*p4}
*p1'\0'
cout<<输出插入字符串新字符串<
2) 字符串插入函数流程图图46示:
开始
int ichar s3[100]char s4[100]
char *p3s3char *p4s4char *p1s1
cout<<输入插入字符串<
cout<<输入插入位置:<
p1&s1[i]
(*p1)'\0'
*p4*p1
++p1++p4
*p4'\0'
p1&s1[i]
((*p3)'\0'
*p1*p3
++p1++p3
*p1'\0'
N
N
Y
Y
A
*p1'\0
++p1
p4s4
(*p4)'\0'
*p1*p4
++p4++p1
*p1'\0'
cout<<输出插入字符串新字符串<
N
N
Y
Y
B
图46字符串插入
47字符串删
1) 字符串插入函数算法:
char a[200] int i
cout<<请输入字符字符串:
cin>>a
cout<<请输入删字符位置:
cin>>ii超字符串长度
if(i>200)
cout<<输出错误<
{
for(int jij<200++j)
{
a[j1]a[j]
}
cout<<删字符串< }
2) 字符串删函数流程图图47示:
图47字符串插入
5 程序编码
#include
#include
using namespace std
int menu_select()
class String
{
private
char s1[200] 定义长度200维字符数组
char s2[200]
public
void Enter() 输入输出字符串
void GetLength()求取字符串长度
void Strcpy() 复制字符串
void Strcmp() 较字符串
int Strfind() 查找字符串
void Strinsert() 插入字符串
void Strdel() 字符删
}
void StringEnter() 输入字符串
{
cout<<输入字符串1(长度200字符)<
cout<<输入字符串2(长度200字符)<
cout<<字符串1:<
void StringGetLength() 求取字符串长度
{
int i0
int j0
char *p1s1
char *p2s2
cout<<字符串1长度<
++i
cout< while(*p2++'\0')直碰\0时j+1
++j
cout<<字符串2长度<
}
void StringStrcpy() 字符串复制
{
char *p1s1
char *p2s2
cout<<输出复制字符串<
*p1*p2
p1++
p2++
}
*p1'\0'
cout<
void StringStrcmp() 较字符串
{
cout<<输入字符串1(长度200字符)<
cout<<输入字符串2(长度200字符)<
char *p2s2
cout<<输出两字符串较结果<
第字母较指针断移直判断出止
{
if((*p1*p2)<0){
cout<<字符串1字符串2<
else if((*p1*p2)>0){
cout<<字符串1字符串2<
}
if(*p1'\0'&&*p2'\0')
cout<<两字符串相等<
}
int StringStrfind() 字符串查找
{
char a1[512] {'\0'}
char a2[512] {'\0'}
int i0
int j0
cout << 请输入字符串
cin >>a1a1原字符串
cout << 请输入查找字符串
cin >>a2a2查找字符串
for(i0i<(strlen(a1)strlen(a2)+1)i++)
{
for(j 0 j < strlen(a2) j++)
{
if(a2[j]a1[i+j])
{
break
}
}
if(j strlen(a2))
{
cout << 位置:< return 0
}
}
cout << 存 << endl
return 0
}
void StringStrinsert() 字符串插入
{
int i
char s3[100]
char s4[100]
char *p3s3
char *p4s4
char *p1s1
s1原字符串s3插入字符串
cout<<输入字符串(长度200字符)<
cout<<输入插入字符串:<
cout<<输入插入位置:<
for(p1&s1[i](*p1)'\0'++p1++p4){
*p4*p1
}字符串1赋4
*p4'\0'
for(p1&s1[i](*p3)'\0'++p1++p3){
*p1*p3
}
*p1'\0'
while(*p1'\0')
++p1
for(p4s4(*p4)'\0'++p4++p1){
*p1*p4
}
*p1'\0'
cout<<输出插入字符串新字符串<
void StringStrdel() 字符串删
{
char a[200] int i
cout<<请输入字符字符串:
cin>>a
cout<<请输入删字符位置:
cin>>i
if(i>200)
cout<<输出错误<
{
for(int jij<200++j)
{
a[j1]a[j]
}
cout<<删字符串< }
}
int main()
{
char choice
String maillist
for(){
choicemenu_select()
switch(choice)
{
case 1maillistEnter()break
case 2maillistGetLength()break
case 3maillistStrcpy()break
case 4maillistStrcmp()break
case 5maillistStrfind()break
case 6maillistStrinsert()break
case 7maillistStrdel()break
case 8exit(0)
}
}
return 0
}
int menu_select()
{
char c
cout<<※※※※※※※※※※※※※※\n
cout<<※ 字符串处理函数系统 ※\n
cout<<※ ※\n
cout<<※ 1输入字符串 ※\n
cout<<※ 2求字符串长度 ※\n
cout<<※ 3复制字符串 ※\n
cout<<※ 4较字符串 ※\n
cout<<※ 5查找字符串 ※\n
cout<<※ 6插入字符串 ※\n
cout<<※ 7删字符串 ※\n
cout<<※ 8退出 ※\n
cout<<※※※※※※※※※※※※※※\n
cout<<※※※谢谢系统※※※※\n
cout<<※※※※※※※※※※※※※※\n
cout<<\n请输入(1~8)
do{
cinget(c)
}while(c<'1'||c>'8')
return c48
}
6 程序调试测试结
vc++60运行界面图61示
图61 字符串处理函数系统菜单界面
选择1输入字符串1:c++kecheng字符串2:zifuchuan运行界面图62示:
图62字符串赋初值输出
选择2运行界面图63示:
图63 字符串长度
选择3运行界面图64示:
图64 字符串复制
选择4运行界面图65示:
(1)
(2)
(3)
图65 字符串较
选择5输入字符串:kaoshichengji查找cheng运行界面图611示:
存图示
图66字符串查找
选择6插入字符串 she插入c++kechengji中运行界面图612示:
图67字符串插入
选择7输入字符串huaadongjiaoda删a运行界面图612示:
图68字符串删
7 总结
次课程设计中完成字符串处理函数系统实现字符串简单复制较删等功时实现字符串查找功中关字符串查找实现太果字符串中重复字符话查找第字符位置希学中解决问题完美实现次程序中虚函数掌握位程序设计时没虚函数处太完美字符串插入时没原数组基础建立新字符数组希学期学中改进问题
通做C++程序设计课程设计复C++语言知识加深C++语言中种语句理解运收获然做字符串插入时遇困难网搜索资料根理解写出程序认识足明白编程道路远路走调试程序程中总结出规律懂样更快更发现错误收获学中会增加知识熟练度量简单明方法编写程序增加知识面解更编程语言编程道路走更加利
参考文献
[1] 钱C++程序设计教程[M]北京:清华学出版社2003
[2] 谭浩强C++程序设计[M]北京:清华学出版社2004
[3] 李春葆数结构(C语言版)题解析[M] 北京:清华学出版社2002
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档