文档库 最新最全的文档下载
当前位置:文档库 › C++课程设计之string字符串类

C++课程设计之string字符串类

C++课程设计之string字符串类
C++课程设计之string字符串类

课程名称: C++程序设计

课程代码:05

题目: 字符串类的设计

年级/专业/班: 软件工程2班

学生姓名:

学号:

指导教师: 袁辉勇

开题时间: 2011 年 5 月 15 日

完成时间: 2011 年 6 月 5 日

—湖南人文科技学院计算机系

目录

一引言 (3)

二设计目的与任务 (3)

三设计方案 (4)

1 总体设计 (4)

2 详细设计 (4)

四程序清单 (4)

五程序调试与体会 (10)

六运行结果 (14)

七结论................................................. 错误!未定义书签。八参考文献............................................... 错误!未定义书签。

摘要

本设计通过定义字符串类来实现对字符串的赋值、连接、复制、查找、交换操作。首先定义一个字符串类,通过调用字符串类中成员函数,对字符串类进行赋值,然后实现了字符串类之间的连接,字符串类之间的相互复制,字符串类之间的交换,最后可以对该字符串类中的字符串进行查找。

关键字:字符串;类;成员函数;对象

Abstract

By defining the design of this type of string to string to the realization of the assignment, to connect, copy, find, exchange operations. First of all, the definition of a type of string, by calling members of the String class function, the type of string for assignment, and then realized the connection between the type of string, string-type between the copy, between string-type In exchange, the last class to the string of string to find.

Keywords: string; category; members of the function; object 。

《C++程序设计》课程设计

------字符串类的设计一引言

随着人们生活水平的提高,计算机发展异常迅速。如今,计算机已经深入到我们社会的各个领域,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用。通过计算机对各类信息的管理已经成为一种高效、快捷的方式。本课程设计就是要求完成一个字符串类的设计,使所设计出的字符串类具有包括赋值、连接、复制、查找、交换等功能

二设计目的与任务

1、设计目的:

这个程序是通过C++语言采用向量的方法来设计的。通过本次的C++课程设计,我们将会把平日书本上的知识真正应用到了实际中来。深入了解C++各类及相关函数的应用,结合其它相关知识,如软件工程等,把所学知识融会贯通。

2、设计任务:

我们此次做的字符串类设计课程将要完成以下功能:

1字符串类对象的输入输出;

2.字符串的长度;

3.字符串的连接;

4.字符串的拷贝;

5.字符串的减法;

6.子串在主串中的定位;

7.子串替换功能;

三设计方案

1 总体设计

定义一个String类,实现对字符串类的赋值、连接、复制、查找、交换等操作。先设计一个总类然后写出多个子类来实现任务所给定的功能。

2 详细设计

程序中用到的函数:

通过下列成员函数来说明设计中需要考虑的问题。

String类是用来对字符串类的赋值,字符串之间的比较,字符串之间的连接,字符串之间的相互复制,字符串之间的交换,字符串中的字符查找等功能。

因为VC系统有自带的类,所以每个功能函数都要自己编写!

高度模仿VC自带string类得功能!!!!

1string类中的的代码清单如下:

class string

{ private:

char str[N];

int len;

public:

string(char *p){ copy(str,p); }

string (){};

void copy(char *s1,char *s2);

void copy(char *s);

void str_set(){ cin>>str; }

void str_out(){cout<

void append(char *s);

void word_str(char *s,int n1,int n2);

void swap(char *s1,char *s2);

int length ();

int find (char s);

int compaer(char *s);

};

四程序清单

#include

const int N=200;

int n ,flag=0;

class string

{ private:

char str[N];

int len;

public:

string(char *p){ copy(str,p); } //字符串的构造

string (){};

void copy(char *s1,char *s2);

void copy(char *s);

void str_set(){ cin>>str; } //字符串的输入

void str_out(){cout<

void append(char *s);

void word_str(char *s,int n1,int n2);

void swap(char *s1,char *s2);

int length ();

int find (char s);

int compaer(char *s);

};

int strlen(char *s)

{ int i=0;

while(s[i++]!='\0');

return i-1;

}

void tishi()

{ char yorn;

cout<<"\n是否退出系统[Y/N]:";

cin>>yorn;

cout<

if(yorn=='y'||yorn=='Y') flag=1;

else

if(yorn=='n'||yorn=='N'){flag=0;cout<<"请再次输入功能序号\n";} else

{ flag=0; cout<<"输入有误,请重新输入"<

}

int string::length() //字符串长度

{ int i=0;

while(str[i++]!='\0');

return i-1;

}

int string::find (char s)//字符串查找

{ int k=length();

for(int i=0;i

if(str[i]==s)

return i;

return -1;

}

void string::swap(char *s1,char *s2) //字符串交换{ copy(str,s1);

copy(s1,s2);

copy(s2,str);

}

void string::copy(char *s1,char *s2) //字符串复制{ int i=0;

while(s2[i]!='\0')

{ s1[i]=s2[i];

i++;

}

s1[i]='\0';

}

void string::copy(char *s) //字符串复制~ {

int i=0;

while(str[i]!='\0')

{ s[i]=str[i];

i++;

}

s[i]='\0';

}

int string::compaer(char *s) //比较

{ int i=0;

int k1,k2,t;

k1=strlen(s);k2=length();

if(k1

{t=k1;k1=k2;k2=t;}

for(i=0;i

{ if(s[i]

else if(s[i]>str[i]) r eturn -1;

}

return 0;

}

void string::append(char *s)//连接

{ int i=0,k=length();

while(s[i]!='\0')

{ str[k]=s[i];

k++; i++;

}

str[k]='\0';

}

void string::word_str(char *s,int n1,int n2) //取字串{ int i,k=0;

for(i=n1-1;i

{ str[k]=s[i];

k++;

}

str[k]='\0';

}

//功能列表

void menu()

{ cout<<"欢迎进入【古城童话】字符串测试系统\n";

cout<<"功能选择菜单"<

cout<<"1)连接\n"<<"2)复制\n"

<<"3)查找\n"<<"4)交换\n"

<<"5)求子串\n"<<"6)比较\n";

cout<<"请你输入测试相应功能的序号!"<

}

void cs1() //测试功能1:连接

{ char s1[N];

string s;

cout<<"你选择测试的功能是连接\n";

cout<<"请你随意输入一串字符并以回车结束:";

s.str_set();

cout<<"请你输入一串你想连接的字符并以回车结束:";

cin>>s1;

s.append(s1);

cout<<"连接后的新字符串为:";

s.str_out();

tishi();

}

void cs2() //测试功能2:复制

{ string s;

char s1[N];

cout<<"你选择测试的功能是复制\n";

cout<<"请你随意输入一串字符以回车结束\n";

cout<<"你输入的字符串:";

s.str_set();

cout<<"复制的字符串为:";

s.copy(s1);

cout<

tishi();

}

void cs3() //测试功能3:查找

{ string s;

char s1[N],char s3;

cout<<"你选择测试的功能是查找\n";

cout<<"请输入一串字符并以回车结束: ";

cin>>s1;

s=s1;

cout<<"请输入你要查找的字符并以回车结束:";

cin>>s3;

if(s.find(s3)!=-1)

cout<<"你所查字符下标为:"<

else cout<<"没有找到你要查找的字符!\n";

tishi();

}

void cs4() //测试功能4:交换

{ string s;

char s1[N],s2[N];

cout<<"你选择测试的功能是交换\n";

cout<<"请输入第一个字符串s1:";

cin>>s1;

cout<<"请输入第二个字符串s2:";

cin>>s2;

s.swap(s1,s2);

cout<<"s1="<

cout<<"s2="<

tishi();

}

void cs5() //测试功能5:求子串

{ string s;

int n1,n2;

char s1[N];

cout<<"你选择测试的功能是求子串\n";

cout<<"请输入母串,并以回车结束:";

cin>>s1;

cout<<"请输入子串的始位置:";

cin>>n1;

cout<<"请输入子串的末位置:";

cin>>n2;

cout<

s.word_str(s1,n1,n2);

cout<<"所取子串为:";

s.str_out();

tishi();

}

void cs6() //测试功能6:比较

{ string s;

char s1[N];

cout<<"你选择测试的功能是比较\n";

cout<<"请输入第一串字符并以回车结束: ";

s.str_set();

cout<<"请输入第二串字符并以回车结束: ";

cin>>s1;

cout<<"结果:"<

tishi();

}

void cs(char &n1) //开关键

{ n=n1-'0';

switch(n)

{

case 1: cs1();break;

case 2: cs2();break;

case 3: cs3();break;

case 4: cs4();break;

case 5: cs5();break;

case 6: cs6();break;

default: cout<<"你输入的功能序号有误,请重新输入!!"<

}

}

int main()

{ char n1;

menu();

while(1)

{ if(flag)

{ cout<<"谢谢你的使用!\n"; break; }

cin>>n1;

cs(n1);

}

return 0;

}

五程序调试与体会

1)调试

在对程序的调过程中,我们遇到了很多不同的问题,在发现问题与解决问题的过程中我们深刻体会到一个程序所要具备的健全性的重要性,我们必须考虑到该程序在解决具体问题的直观性与全面性,也就是要加强程序的可读性,也就是要尽可能地多加注释,这样就大大方便了我们提高了我们的进展。也会方便读者很容易就了解到程序的层次及功能。

我们所编写的程序具体要求我们输入一条完整的记录其中包括:

1.连接:

通过运行结果的显示我们看出此功能已经实现.

2.复制:

通过第二个运行图的结果显示,第二个功能复制完成;

3.查找:

通过该图可以得出。第三个功能查找实现。

4.交换:

根据该图显示的结果得知交换功能已实现。

5.求子串已实现:

6.比较:(模拟strcmp()函数)

通过该图显示的结果得出,第六个功能都实现.

2)体会

通过本次课程设计,我们整个团队的每个成员都是受益匪浅:

首先,我们深刻感受到平日书本上看似简单的理论知识在真正派上用场的时候当中所涵盖的学问是那么多。理论与实践的距离之间我们今天的努力还只是一个开始。在完成此次课程设计的过程中我们屡屡碰到不同的问题。比如;面向对象的思想。

只有理论知识没有实践经验是不可能成为一名出色的软件设计师的。理论是实践的基础,实践是对所学知识的巩固与提高,只有理论与实践相结合才能真正掌握知识。

设计思想是很重要的,没有一个人能说自己对于一个问题考虑得面面具到,一个再成功的个人也离不开一个优秀的团体。所以只有通过大家反覆讨论出来的设计思想才是清晰的、全面的,这是一个好的程序最基本的要求,也是我们成功的决定性因素。在本次程序设计过程中,大家共同努力,分工合作,一起到图书馆找资料,找范文,共同学习,相互交流所学知识与经验,促使着我们共同进步并顺利地完成了该项任务。每个人的力量是有限的,但一旦团结起来力量将是无穷的。在竞争如此激烈的当今社会,这些东西都是我们终生受用的,因此对我们以后的工作和学习奠定了不错的基础。

总体来说,这次课程设计我们付出了努力但也是获得了很多。

六运行结果

我们也对该程序所能实现的功能作了相应的代码进行了标识。这样用户就可以很方便直观地使用该程序。

八参考文献

[1] 张国峰编著.《C++语言及其程序设计教程》.北京:电子工业出版社,1996.

[2] 秦勇编著.《Visual C程序设计》.北京:北京大学出版社,1994.

[3] 张素琴主编.《C++程序设计语言》.北京:清华大学出版社,1995

[4] 揣锦华等编.《C++程序设计语言》.西安: 西安电子科技大学出版社,2003

[5] 李军民等编.《C++程序设计语言》经典题解与实验指导.西安: 西安电子

科技大学出版社,2003

[6] 吕凤翥著.《C++语言基础教程》.北京:清华大学出版社,2001

[7] 陈志泊编.《面向对象的程序设计语言――C++》,北京:电子工业出版社,2002

[8]陈火旺. 编译原理(第三版)[M]. 国防工业出版社,2000.

[9]严蔚敏. 数据结构(C语言版)[M]. 北京:清华大学出版社,1997.

[10] [美]Gonzalo Navarro Mathieu Raffinot. 柔性字符串匹配[M]. 电子工

业出版社,2007.

课程设计任务书及成绩评定

课题名称:字符串类设计

完成者:姜鹏赵振高勇何礼旦张海霞

1、设计的目的与要求:

通过本次的C++课程设计,让我们学会把书本上的知识应用到了实际中来。深入了解C++各类及相关函数的应用,结合其它相关知识,如软件工程等,把所学知识融会贯通。

具有要求如下:

1.字符串类对象的输入输出;

2.字符串的长度;

3.字符串的连接;

4.字符串的拷贝;

5.字符串的减法;

6.子串在主串中的定位;

7.子串替换功能;

2、设计进度及完成情况

3、成绩评定:

设计成绩:(

指导老师:(签字)

C语言程序设计课程设计题目

1 一元稀疏多项式的运算 问题描述:设有两个带头指针的单链表表示两个一元稀疏多项式A、B,实现两个一元稀疏多项式的处理。 实现要求: ⑴输入并建立多项式; ⑵输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……c n,e n,其中n是多项式的项数,c i,e i分别为第i项的系数和指数。序列按指数降序排列; ⑶多项式A和B相加,建立多项式A+B,输出相加的多项式; ⑷多项式A和B相减,建立多项式A-B,输出相减的多项式; ⑸多项式A和B相乘,建立多项式A×B,输出相乘的多项式; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 测试数据: (1) (2x+5x8-3.1x11)+(7-5x8+11x9) (2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15) (3)(x+x2+x3)+0 (4)(x+x3)-(-x-x-3) 2 成绩排序 假设某年级有4个班,每班有45名同学。本学期有5门课程考试,每门课程成绩是百分制。假定每个同学的成绩记录包含:学号、姓名各门课程的成绩共7项,其中学号是一个10位的字符串,每个学生都有唯一的学号,并且这4个班的成绩分别放在4个数组中,完成以下操作要求: ⑴编写一个成绩生成函数,使用随机数方法,利用随机函数生成学生的各门课程的成绩(每门课程的成绩都是0∽100之间的整数),通过调用该函数生成全部学生的成绩; ⑵编写一个平均成绩计算函数,计算每个同学的平均成绩并保存在成绩数组中; ⑶用冒泡排序法对4个班的成绩按每个同学的平均成绩的以非递增方式

进行班内排序; ⑷用选择排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进行班内排序; ⑸对已按平均成绩排好序的4个班的同学的构造一个所有按平均成绩的以非递增方式排列的新的单链表; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 3 迷宫问题 问题描述:以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 实现要求: ⑴实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。 ⑵编写递归形式的算法,求得迷宫中所有可能的通路; ⑶以方阵形式输出迷宫及其通路。 [测试数据] 迷宫的测试数据如下:左上角(1,1)为入口,右下角(8,9)为出口。 1 2 3 4 5 6 7 8 实现提示:

C++课程设计:字符串类的设计

2.2 类的设计说明 图2-2类string的说明图

2.3 主要算法流程图 图2-3主要算法流程图

模块功能流程图: 图2-4 图2-6 Read功能模块图

3程序清单及注释 #include #include using namespace std; char s[12];char s1[20]; const int MAX=5; class String { public: char *str; int length; static void menun() { cout<<" ******************************* "<

C++string类型总结

对C++中string类型的总结 string类对象的构造 简化构造函数原型如下(注意,为了简便,把模板中最后一个默认参数省略了): 1: explicit basic_string(); 2: string(const char *s); 3: string(const char *s, size_type n); 4: string(const string& str); 5: string(const string& str, size_type pos, size_type n); 6: string(size_type n, E c); 7: string(const_iterator first, const_iterator last); string对象的操作 字符串比较 支持六种关系运算符(==、!=、>、>=、<、<=),其采用字典排序策略(与C中字符串比较策略完全一样)。这六个关系运算符是非成员的重载运算符。而这些 运算符都支持三种操作数组合:string op string、string op const char*、cons t char* op string(其中op是前面六种关系运算符中任意一种)。解释:提供运算 符的三种重载版本主要是从效率角度考虑的,其避免了临时string对象的产生。 另外,string类还提供了各种重载版本的成员函数compare来比较,简化函数原型为: 1: int compare(const string& str) const; 2: int compare(size_type p0, size_type n0, const string& str); 3: int compare(size_type p0, size_type n0, const string& str, si ze_type pos, size_type n); 4: int compare(const char* s) const; 5: int compare(size_type p0, size_type n0, const char* s) const; 6: int compare(size_type p0, size_type n0, const char* s, size_t ype n) const; 返回值:如果调用该函数的对象的比较序列小于操作数比较序列,则返回负数; 若相等,则返回0;否则,返回正数。

C语言课程设计题目

C语言课程设计 题目1:学生成绩统计管理 1、输入一个班级的学生的基本信息(包括学号,姓名,性别,5门课程成绩)。 2、按姓名或者学号查找、修改、删除和保存各个学生的信息。 3、计算每个学生各门功课总分和平均分,按学号或总分排序输出每个学生 的基本信息及总分、平均分和名次。 4、计算全班各门功课的平均分,显示每门课程中低于平均分的每一个学生 的学号,姓名,性别,科目,成绩。 5、显示每门科目中,成绩在90分以上的学生信息,以及每门科目中不及格 的学生信息。 6、用菜单进行管理 7、只有正确输入用户名密码才能使用此系统。 8、所有内容能够保存到文件中。下次进入系统是从文件中读取原有信息。 题目2:物业费管理系统 1、新住户信息的添加。(户主姓名、性别、身份证号、联系电话、楼号、 单元号、房号、平米数、每平米物业价格、应缴纳物业费,备注信息) 2、修改住户信息的功能。 3、删除住户信息的功能。 4、应缴物业费自动生成。每月1号,自动生成本月份的物业费。如果该住 户之前的物业费未交清,则本月物业费与之前拖欠费用进行累加,为该 用户应缴纳的物业费。 5、缴费功能。根据用户缴纳金额,修改“应缴纳物业费”。 6、统计功能。 1)能够按楼号分类统计所有未交清物业费的记录。 2)能够按拖欠款项多少,对所有用户信息进行从大到小排序。 7、用菜单进行管理 8、只有正确输入用户名密码才能使用此系统。 9、所有内容能够保存到文件中。下次进入系统是从文件中读取原有信息。 题目3:会员卡计费系统 设计一个会员卡计费管理系统。 1、新会员登记。(将会员个人信息及此会员的会员卡信息进行录入。) 2、会员信息修改。 3、会员续费。(会员出示会员卡后,管理人员根据卡号查找到该会员的信 息并显示。此时可以进行续费,续费后,提示成功,并显示更新后的信 息。) 4、会员消费结算。(会员出示会员卡后,管理人员根据卡号查找到该会员 的信息,结算本次费用。提示成功,并显示更新后的信息。)累计消费 满1000元,及自动升级为VIP会员。之后每次消费给予9折优惠。 5、会员退卡。(收回会员卡,并将余额退还,删除该会员信息。) 6、会员卡挂失。(为该会员补办新卡,并将旧卡余额转至新卡。) 7、用菜单进行管理 8、统计功能。

字符串类设计

华北科技学院计算机学院综合性实验 实验报告 课程名称___________ 《C++程序设计B》 ________ 实验学期2017 至2016学年第二学期 学生所在系部网络工程 ___________________ 年级2015 ___________ 专业班级网络B151 学生姓名_______________ 学号___________________ 任课教师_______________ 胡英___________________ 成绩评定: 1、类及类文件、函数文件设计:A( ),B( ),C( ),D( ),F() 2、程序结构合理,格式美观:A( ),B( ),C( ),D( ),F() 3、语法语义及算法准确:A( ),B( ),C( ),D( ),F() 4、实验结果正确,运行界面:A( ),B( ),C( ),D( ),F() 5、操作熟练,解析完整:A( ),B( ),C( ),D( ),F() 5、报告规范度:A( ),B( ),C( ),D( ),F() 实验成绩___________________________________________

计算机学院制 《C++程序设计》课程综合性实验报告 开课实验室:基础实验室三2018年6月5日

} 五、实验结果(运行界面)及测试数据分析 MyString1("Z00")调用构造函数MyString::MyString(char *str),MyString2(MyStringl) 调用复制构造函数MyString::MyString(const MyString &str) ,MyString3 调用构造函数MyString()。使用运算符重载函数>>输入字符串对MyString3重新赋值为hello。MyString3调用成员函数int length()求得字符串MyString3的长度。使用运算符重载函数=把MyString1的值赋给MyString3。使用运算符重载函数+把字符串MyString1 和MyString3进行连接。使用运算符重载函数>和<对字符串MyString1和MyString3 进行判断。使用运算符重载函数==对字符串MyString1和MyString2进行判断。 MyString3调用函数UprString()把字符串小写转换为大写。MyString1调用函数LwrStri ng()把字符串大写转换为小写。 六、实验总结 通过本学期的课程学习使我对C++程序设计有了初步的认识,也让我对面向对象 有了一个更深刻的理解。本系统虽然仍然存在着不足之处,但对于题目要求实现的功能均已实现。 源代码: #in clude

JAVA实验报告四(实现String类)

JA V A实验报告实验四运用JavaFx实现时钟动画 班级:计算机科学与技术1306 学号: 00 姓名:王雨思 指导教师:鲁鸣鸣 2014 年 12 月 1 日

目录 一.概述 (6) 二.总体方案设计 (7) 三.详细设计 (8) 四.程序的调试与运行结果说明 (9) 五.课程设计总结 (10) 六.后记 (11) 七.附录 (12) 参考文献 (13)

一概述 1.课程设计的目的 了解和掌握String类的实现原理 2.课程设计的要求 基于ArrayList实现可以深度复制(Deep Copy)的栈结构。1.首先用ArrayList实现栈结构 2.接着将第1步实现的栈通过Clonable接口实现深度复制 3.课程设计的主要设计思想 基于ArrayList实现可以深度复制(Deep Copy)的栈结构。二总体方案设计 编写程序实现MyString类的下列操作: public MyString(char[] chars); public char charAt(int index); public int length(); public MyString substring(int begin, int end); public MyString toLowerCase(); public boolean equals(MyString s); public static MyString valueOf(int i); public int compare(String s); public MyString substring(int begin); public MyString toUpperCase(); public char[] toChars();

C语言程序设计课程设计题目

1一元稀疏多项式的运算 问题描述:设有两个带头指针的单链表表示两个一元稀疏多项式A、B,实现两个一元稀疏多项式的处理。 实现要求: ⑴输入并建立多项式; ⑵输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……c n,e n,其中n 是多项式的项数,c i,e i分别为第i项的系数和指数。序列按指数降序排列; ⑶多项式A和B相加,建立多项式A+B,输出相加的多项式; ⑷多项式A和B相减,建立多项式A-B,输出相减的多项式; ⑸多项式A和B相乘,建立多项式A×B,输出相乘的多项式; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 测试数据: (1) (2x+5x8-3.1x11)+(7-5x8+11x9) (2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15) (3)(x+x2+x3)+0 (4)(x+x3)-(-x-x-3) 2成绩排序 假设某年级有4个班,每班有45名同学。本学期有5门课程考试,每门课程成绩是百分制。假定每个同学的成绩记录包含:学号、姓名各门课程的成绩共7项,其中学号是一个10位的字符串,每个学生都有唯一的学号,并且这4个班的成绩分别放在4个数组中,完成以下操作要求: ⑴编写一个成绩生成函数,使用随机数方法,利用随机函数生成学生的各门课程的成绩(每门课程的成绩都是0∽100之间的整数),通过调用该函数生成全部学生的成绩; ⑵编写一个平均成绩计算函数,计算每个同学的平均成绩并保存在成绩数组中; ⑶用冒泡排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进

行班内排序; ⑷用选择排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进行班内排序; ⑸对已按平均成绩排好序的4个班的同学的构造一个所有按平均成绩的以非递增方式排列的新的单链表; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 3迷宫问题 问题描述:以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 实现要求: ⑴实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。 ⑵编写递归形式的算法,求得迷宫中所有可能的通路; ⑶以方阵形式输出迷宫及其通路。 [测试数据] 迷宫的测试数据如下:左上角(1,1)为入口,右下角(8,9)为出口。 1 2 3 4 5 6 7 8 实现提示:

课程设计--实现字符串的多种操作

课程设计--实现字符串的多种操作

C++课程设计报告 课程设计题目:实现字符串的多种 操作 姓名:刘欢 学籍号:201110910422 专业班级:计算机科学与技术2班 指导教师:秦相林

目录引言 1.设计目的 2.设计题目 3.设计需求 4.设计总体思路 5.详细设计 6.运行结果 7.课程设计心得 8.参考文献

引言 随着人们生活水平的提高,计算机发展异常迅速。如今,计算机已经深入到我们社会的各个领域,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用。通过计算机对各类信息的管理已经成为一种高效、快捷的方式。而C++课程设计是我们实践性教学环节之一,结合实际应用的要求,使课程设计既覆盖C++的知识点,又接近工程实际需要。通过课程设计的综合训练,培养我们实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学我们系统掌握C++这门课程的主要内容, 本课程设计就是要求完成一个字符串类的设计,使所设计出的字符串类具有包括复制、连接、比较、求子串、交换等功能 1. 设计目的 本设计通过定义字符串类来实现对字符串的复制、连接、比较、求子串、交换操作。首先定义一个字符串类,通过调用字符串类中成员函数,对字符串类进行复制,然后实现了字符串类之间的连接,字符串类之间的相互比较,求一个字符串的子串,以及实现两个字符串之间的交换。 2. 设计题目 实现字符串的多种操作 3.设计需求 通过本次的C++课程设计,让我们学会把书本上的知识应用到了实际中来。深入了解C++各类及相关函数的应用,结合其它相关知识,如软件工程等,把所学知识融会贯通。对系统进行功能需求分析,设计合理的数据结构和系统框

编写strcpy函数和类String的构造函数、析构函数、赋值函数和重载运算符函数

编写strcpy函数和类String的构造函数、析构函数、赋值函数和重载运算符函数 已知strcpy函数的原型是 char *strcpy(char *strDest, const char *strSrc); 其中strDest是目的字符串,strSrc是源字符串。 (1)不调用C++/C的字符串库函数,请编写函数strcpy char *strcpy(char *strDest, const char *strSrc); //将源字符串加const,表明其为输入参数 { assert((strDest!=NULL) && (strSrc !=NULL)); // 2分 //对源地址和目的地址加非0断言 char *address = strDest; // 2分//为了实现链式操作,将目的地址返回 while( (*strDest++ = * strSrc++) != …\0? ) // 2分 NULL ; return address ; // 2分 } (2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值? 答:为了实现链式表达式。// 2分 例如int length = strlen( strcpy( strDest, “hello world”) ); 二、网上广泛流传的,也是摘自林锐的 http://www.blog.sh/user3/skyflowing/archives/2006/60452.html 题目: 已知strcpy函数的原型是: char * strcpy(char * strDest,const char * strSrc); 1.不调用库函数,实现strcpy函数。 2.解释为什么要返回char *。

C课程设计题目

C课程设计题目 一、工资管理系统 1、需求分析 工资信息存放在文件中,提供文件的输入、输出等操作;要实现浏览功能,提供显示、排序操作;而查询功能要求实现查找操作;另外还应该提供键盘式选择菜单以实现功能选择。 2、总体设计 整个系统可以分为信息输入、信息添加、信息浏览、信息排序、信息查询和信息统计模块。 3、详细设计 工资信息采用结构体数组: Struct Salary_Info { int Card_No; //工资卡号 Char name[20]; //姓名 int month; //月份 float Init_Salary; //应发工资 float Water_Rate; //水费 float Electric_Rate; //电费 float Final_Salary; //实发工资 }SI[MAX]; //SI[MAX]中每个数组元素对应一个职工工资信息 (1)主函数提供输入、处理和输出部分的函数调用,各功能模块采用菜单方式选择。 (2)输入模块 按照工资卡号、姓名、月份、应发工资、水费、电费的顺序输入信息。 (3)添加模块 增加新的职工工资信息,从键盘输入并逐条写到原来的输入文件中,采用追加而不是覆盖的方式。 (4)浏览模块 通过菜单选择按照工资卡号还是姓名浏览。如果按照卡号浏览,则显示的记录按照卡号升序输出;按照姓名浏览则按照字典序输出(调用排序模块的排序功能)。 (5)排序模块 排序模块提供菜单选择,实现按照工资卡号升序、实发工资降序以及姓名字典序排序。排序方法可以选择冒泡排序、插入排序、选择排序等。 (6)查询模块 实现按照工资卡号和姓名的查询,采用基本的查找方法即可。 二、学生学籍信息管理系统设计 1、需求分析 学生基本信息、学生成绩基本信息要存入文件当中,因而要提供文件的输入输出操作;查询功能要求提供查找和显示操作;删除功能要求实现删除操作;排序功能要求实现排序操作;另外还应该提供键盘式选择菜单以实现功能选择。

C++课程设计String类

#include #include #include #include #define Base 10000 #define M 1000 /*初始长度为Base,以后依次增加M*/ using namespace std; class String { private: char *str; ///str为指针,len为长度,size为能容纳的最大字符数 int len,size; public: ///构造函数,能直接确定长度,或者用一个字符串初始化 String (int maxsize=Base); String (const char *s); char *c_str() { return str; } ///返回一个指向字符串头部的C语言的指针String insert(int pos,const char c); ///在pos位置插入字符c String insert(int pos,String s); ///在pos位置插入String s String insert(int pos,const char *s); ///插入字符串 String Delete(int pos); ///删除pos位置的字符 String Delete(int start,int end); ///删除区间内的字符 String Delete(char c); ///删除所有的c字符 int copy(char *s,int num,int start); ///从start开始复制num个字符到str中 int search(char c); ///返回第一个出现字符c的位置 char operator [] (int pos); String operator = (String other) ; ///重载= 运算符 String operator = (const char * other) ; ///还是重载,使其支持字符串直接赋值 String operator + (String &other) const; ///重载,返回两个字符串连接 String operator += (String &other) ; ///还是重载,在原String后添加String bool operator < ( String &other) ; ///重载< ,比较大小 ///用重载好了的< ,直接定义其他运算符 bool operator > ( String &other) { return other < *this;} bool operator >= ( String &other) { return !(*this < other);} bool operator <= ( String &other) { return !(other < *this);} bool operator == ( String &other) { return (other <= *this) && (*this <= other);} bool operator != ( String &other) { return other < *this || *this < other;}

java对象转换String类型的三种方法

北大青鸟中关村 java对象转换String类型的三种方法在很多情况下我们都需要将一个对象转换为String类型。一般来说有三种方法可以实现:Object.toString()、(String)Object、String.valueOf(Object)。下面对这三种方法一一分析 一、采用Object.toString() toString方法是https://www.wendangku.net/doc/8612280951.html,ng.Object对象的一个public方法。在java中任何对象都会继承Object 对象,所以一般来说任何对象都可以调用toString这个方法。这是采用该种方法时,常派生类会覆盖Object里的toString()方法。 但是在使用该方法时要注意,必须保证Object不是null值,否则将抛出NullPointerException 异常。 二、采用(String)Object 该方法是一个标准的类型转换的方法,可以将Object转换为String。但是在使用该方法是要注意的是需要转换的类型必须是能够转换为String的,否则会出现CalssCastException异常错误。 代码代码如下: Object o = new Integer(100); String string = (String)o; 这段程序代码会出现https://www.wendangku.net/doc/8612280951.html,ng.ClassCastException: https://www.wendangku.net/doc/8612280951.html,ng.Integer cannot be cast to https://www.wendangku.net/doc/8612280951.html,ng.String。因为将Integer类型强制转换为String类型,无法通过。 三、String.valueOf(Object) 上面我们使用Object.toString()方法时需要担心null问题。但是使用该方法无需担心null值问题。因为在使用String.valueOf(Object)时,它会判断Object是否为空值,如果是,则返回null。下面为String.valueOf(Object)的源码: 代码代码如下: public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); } 从上面我们可以看出两点:一是不需要担心null问题。二是它是以toString()方法为基础的。但是一定要注意:当object为null时,String.valueOf(object)的值是字符串对象:"null",而不是null!!!

[C语言课程设计题目](丁海军)

C语言课程设计设计题 丁海军 本手册提供的设计题大致可分为为3类:第一类侧重于算法设计与实现;第二类侧重于文件操作。 (一)算法设计类题目 1. Fibonacci数列。Fibonacci数列的计算公式如下: fib(1) = 1; fib(2) = 1; fib(n) = fib(n-1) + fib(n-2); //对大于等于3的任意n (1)简单变量“数据平移”方法计算Fibonacci数列的第n项(正整数n通过键盘输入):说明变量old1=1,old2=1,newItem;新的Fibonacci项newItem总是“距它最近”的前两项(old1与old2)的累加和。而后通过“old1=old2; old2=newItem;”进行所谓的“数据平移”。接着计算另一个新的Fibonacci项newItem,依次循环,直到求出数列的第n项时为止。 (2)使用数组求出Fibonacci数列的第n项(正整数n通过键盘输入)并显示在屏幕上:说明数组f用来存放Fibonacci数列的各项之值,且仅初始化前两个元素f[0]=1,f[1]=1,而后通过f[i]=f[i-2]+f[i-1];依次计算出f[2]到f[n-1](注意f[n-1]恰为所要求出的第n项)并将该值显示在屏幕上。 2.编程序,循环进行如下的处理过程:由计算机生成简单的四则运算题;用户给出答案;计算机判断对错。直到用户回答说不再继续做了时结束程序。 提示:可让用户选择指定出加、减、乘、除哪一种运算题,以及出一位数还是两位数的运算题;而后通过使用“rand()%10”或“rand()%100”来获得一个0到9的一位整数随机值或得到0到99的两位整数随机值来为用户出题。还可进一步对用户所做算术题的对错次数进行记录,结束程序时给出一个某种形式的成绩。 3.数的进制转换 (1)将输入的2进制数(一个非“0”即“1”的字符串)化为10进制数。 提示:用字符数组a盛放所输入的二进制数;而后从后往前逐一计算每一位的“位权”w (2的0次方、2的1次方、...),再计算“位权”乘以“位值”并累加到一个初值为0的变量value 上,最后输出该value。 (2)如何把8进制数或16进制数化为10进制数。 (3)如何把某一个k进制的数化为10进制数呢? 4.编程序,输入正整数m,它代表一个人民币钱数(元数)。求取这样一个方案,使用最少张数的人民币纸币,凑成上述的钱数m,并输出求取结果。

C++课程设计之string字符串类

课程名称: ________ C++ 程序设计____________ 课程代码: _________________ 05 __________ 题目: _______ 字符串类的设计_______ 年级/专业/班: 软件工程2班 __________________ 学生姓名: _________________ 学号: ___________ 指导教师: 袁辉勇_________ 开题时间:2011 年5_月丄5_日 完成时间:2011 年6_月_5_日 —湖南人文科技学院计算机 系

引言 ........................................ 设计目的与任务 .................................. _1_总体设计 ....................................... _2_详细设计 ....................................... 四程序清单....................................... 五程序调试与体会................................... 六运行结果....................................... 14

七结论................................. 八参考文献............................. 摘要 本设计通过定义字符串类来实现对字符串的赋值、连接、复制、查找、交换操作。首先定义一个字符串类,通过调用字符串类中成员函数,对字符串类进行赋值,然后实 现了字符串类之间的连接,字符串类之间的相互复制,字符串类之间的交换,最后可以对该字符串类中的字符串进行查找。 关键字:字符串;类;成员函数;对象 Abstract By defining the design of this type of string to string to the realization of the assignment, to connect, copy, find, exchange operations. First of all, the definition of a type of string, by calling membersof the String class function, the type of string for assignment, and then realized the connection between the type of string, string-type between the copy, between string-type In exchange, the last class to 3 3 4 4 4 4 10 错误!未定义书签。 错误!未定义书签。

【实验5】c++MyString类实现

ccnu_hupo_cpp_class_tst6exercise2_by:lele_2013_10_30 new不忘delete Design the string class in the C++ library by providing your own implementation for the following functions (name your class MyString): MyString();//构造 MyString(const char* cString);//地址不能变 char at(int index) const;//输入数组下标,返回字符 int length() const;//长度 void clear();//清空len=0 bool empty() const;//是否清空?len不变 int compare(const MyString& s) const;// int compare(int index, int n, const MyString& s) const; void copy(char s[], int index, int n); char* data() const; int find(char ch) const; int find(char ch, int index) const; int find(const MyString& s, int index) const; */ #include #include using namespace std; class MyString { public: MyString(); MyString(const char* cString); char at(int index) const;// int length() const; void clear(); bool empty() const; int compare(const MyString& s) const; int compare(int index, int n, const MyString& s) const; void copy(char s[], int index, int n); char* data() const; int find(char ch) const; int find(char ch, int index) const; int find(const MyString& s, int index) const; ~MyString()

c语言课程设计题目

附录1 供选择的C语言程序课程设计题目 第一类题目应用类 题目1:年历显示。 功能要求: (1)输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。(2)输入年月,输出该月的日历。 (3)输入年月日,输出距今天还有多少天,星期几,是否是公历节日。 题目2:小学生测验 面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。 功能要求: (1)电脑随机出10道题,每题10分,程序结束时显示学生得分; (2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的; (3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案; (4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分; (5)总成绩90以上显示“SMART” ,80-90显示“GOOD”,70-80显示“OK”,60-70显示“PASS”,60以下“TRY AGAIN” 。

题目3 运动会比赛计分系统 要求:初始化输入:N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数 各项目名次取法有如下几种: 取前5名:第一名得分7分,第二名得分5,第三名得分3,第四名得分2,第五名得分1;取前3名:第一名得分5,第二名得分3,第三名得分2; 功能要求: (1)系统以菜单方式工作 (2)由程序提醒用户填写比赛结果,输入各项目获奖运动员信息。 (3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩 (4)查看参赛学校信息和比赛项目信息等。 题目4:学生学籍管理系统 用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。 功能要求: (1)系统以菜单方式工作。 (2)登记学生的学号,姓名,性别,年龄,籍贯,系别,专业,班级;修改已知学号的学生信息;(3)删除已知学号的学生信息; (4)查找已知学号的学生信息; (5)按学号,专业输出学生籍贯表。 (6)查询学生学籍变化,比如入学,转专业,退学,降级,休学,毕业。 题目5:排班系统 学校实验楼有7名保安人员:钱、赵、孙、李、周、吴、陈。由于工作需要进行轮休制度,一星期中每人休息一天。预先让每一个人选择自己认为合适的休息日。请编制程序,打印轮休的所有可能方案。当然使每个人都满意,例如每人选择的休息日如下: 钱:星期一、星期六 赵:星期二、星期四 孙:星期三、星期日 李:星期五 周:星期一、星期四、星期六 吴:星期二、星期五 陈:星期三、星期六、星期日 运行结果: Solution: 1 赵钱孙李周吴陈 ============================================================= 星期四星期一星期三星期五星期六星期二星期日 Solution: 2 赵钱孙李周吴陈 ============================================================= 星期四星期一星期日星期五星期六星期二星期三 Solution: 3 赵钱孙李周吴陈

字符串操作(算法与数据结构课程设计)

字符串操作 一、问题描述 字符串是一种常见的数据类型,在现实生活中有着广泛的应用。本次课程设计需要选择合适的结构完成字符串的建立,实现串的基本操作,编写三种模式匹配算法和字符串的加密与解密算法,并利用它们实现字符串的应用:包括文本文件对单词的检索和计数。 二、基本要求 程序要求选择合适的存储结构,并实现以下功能: 1.完成串的基本操作,如:串的赋值,比较,连接,插入,删除; 2.实现串的模式匹配,包括:穷举法,BF算法和KMP算法; 3.字符串的应用:字符串的加密与解密;文本文件单词的计数;文本文件单 词的检索; 三、测试数据 1.对模式匹配(穷举法,KMP算法和BF算法)的测试:如:在“asd sfhasd asd” 中找从第3个下标开始匹配的模式串“asd”。 2.对加密与解密的测试:如:对串“afhbs 537hsj/sjdh”加密,再将加密 后的串还原。 3.对文本文件单词的计数和检索的测试:如创建一个文本文件,在其中对单 词“me”进行计数并且检索其所处行、列。 四、算法思想 1、用结构体SString记录字符串信息,其中ch代表字符串,length代表字符串长度。 2、模式匹配: 1)穷举法的Index(S,T,pos): 从位置开始通过SubString截取S中T长度的字符串,并与T通过StrCompare进行比较,若找到则返回位置;否则继续。若没找到,返回-1。 2)BF算法: IndexBF(S, T,pos) 主串S从pos位置开始,模式串T从0位置开始,从目标串s=“s0s2…sn-1"的第一个字符开始和模式串t=“t0t2…tm-1"中的第一个字符比较,若相等,则继续逐个比较后续字符;否则从目标串s的第二个字符开始重新与模式串t的第一个字符进行比较。依次类推,若从模式串s的i位置字符开始,每个字符依次和目标串t中的对应字符相等,则匹配成功,该算法返回i;否则,匹配失败,函数返回-1。 3)KMP算法:

各个类及其方法的实现

客户端:(六个类) ChatClient、Denglu、Hall、HUIQICC 、Panecc、Registry 功能: 1、ChatClient: * 该类主要关于客户端与服务器之间的通信,包括聊天信息、悔棋信息、认输信息、退出信息、注册信息、登陆信息等等* 通过该类还调用了大量的Panecc类的方法,实现通信信息在界面上的实现 * * 主要方法是Connect(),通过调用该方法建立与服务器端的连接,在该方法里,new了一个Thread对象, * 同时架设了经过初步包装基本的管道(DataInputStream和DataOutputStream)。接下来便开始接收服务器端 * 发来的消息了,通过简单的协议,实现不同种类消息的接收和解析,该协议便是一串数字(int类型), * 在发送消息方法里先写进一串数字,再写入需要发送的消息内容。同理,接收消息时先读取数字,再根据不同的数字 * 解析出不同的消息种类。 * 除了Connect()方法之外,还有很多信息的发送方法,比如

聊天信息(SendMessage(String message))、登陆信息(SendLogin(String name,String key)) * 、注册信息(SendZhuce(String name,String pass))、发送猜先信息(sendcai(int a))等等 2、Denglu: * 该类是客户端的主驱动类,在该类中声明并初始化了ChatClient类的对象cc, * 并通过该对象调用了ChatClient类的许多方法; * 该类主要是关于登陆界面,并实现了相关监听; * 该类还存在一个内部类--paneLogin ,这个内部类主要是画界面,监听功能在主类中实现 * * 通过该类,将用户信息,发送给服务器,再由服务器连接数据库,判断登陆的相关信息。 3、Hall: * 该类是关于登陆大厅,存在一个内部类--hallt,该内部类

相关文档
相关文档 最新文档