电子科大C++实验报告 本文关键词:实验,电子科大,报告
电子科大C++实验报告 本文简介:电子科技大学计算机学院标准实验报告(实验)课程名称:C++程序设计实验电子科技大学教务处制表电子科技大学实验报告学生姓名:学号:指导教师:丘志杰实验地点:主楼A2-412实验时间:2012.11.23一、实验室名称:电子科技大学计算机实验教学示范中心二、实验项目名称:C++程序设计实验三、实验学时:
电子科大C++实验报告 本文内容:
电子科技大学计算机学院
标
准
实
验
报
告
(实验)课程名称:C++程序设计实验
电子科技大学教务处制表
电
子
科
技
大
学
实
验
报
告
学生姓名:
学
号:
指导教师:丘志杰
实验地点:主楼A2-412
实验时间:2012.11.23
一、实验室名称:电子科技大学计算机实验教学示范中心
二、实验项目名称:C++程序设计实验
三、实验学时:24学时
四、实验原理:
了解数据封装的作用和实现方式,使用C++语言的抽象数据类型实现数据封装。了解继承的实现方式,使用C++语言的基类和派生类实现继承功能。了解运算符重载的机制,学会进行运算符重载。了解继承和多态的作用和实现方式,掌握动态联编方法,使用C++语言的抽象类和派生类实现继承性。
五、实验目的:
1、
掌握C++编程规范;
2、
掌握C++的封装、继承、运算符重载以及多态程序的基本编写方法;
3、
熟悉在visual
Studio
2010(及以上版本)环境下的C++软件开发和调试过程。
六、实验内容:
C++编辑和编译系统采用Visual
Studio
2010,设计1个综合运用数据封装、继承、运算符重载、多态等机制的C++编程语言的应用实验“学校教职工工资管理程序”:对学校教职工进行关系划分;着重应用数据封装、继承等机制对各类人员进行类封装并体现继承和派生关系;着重应用虚函数机制,实现计算职工工资的功能;重载“#include
#include
#include
#include
using
namespace
std;
class
CStaff;
class
CAdministrator;
class
CTeacher;
class
CTempStaff;
maptpmap;
maptcmap;
mapadmap;
map::iterator
tpit;
map::iterator
tcit;
map::iterator
adit;
int
CAA=100,CAB=100,CAS=100,CTS=100,TI1=10,TI2=20,TI3=30,TI4=40,MS=50,PHD=100;
//--------------------cstaff-----------------------
class
CStaff{
protected:
string
number;
string
name;
char
sex;
unsigned
int
serviceyears;
double
salary;
public:
CStaff(string
num,string
na,char
se,unsigned
int
sy,double
sala)
{
number=num;
name=na;
sex=se;
serviceyears=sy;
salary=sala;
}
void
SetSex(char
se){
sex=se;
};
char
GetSex(){
return
sex;
}
void
SetNo(string
num){
number=num;
}
string
GetNo(){
return
number;
}
void
SetName(string
na){
name=na;
}
string
GetName(){
return
name;
}
bool
SetServiceYears(unsigned
int
sy){
if
(sy>tnum;
tpit=tpmap.find
(tnum);
if
(tpit!=tpmap.end())
{
coutsecond>yn;
if
(yn==
Y
)
{
tpmap.erase(tpit);
return
true;
}
return
false;
}
tcit=tcmap.find(tnum);
if
(tcit!=tcmap.end())
{
coutsecond>yn;
if
(yn==
Y
)
{
tcmap.erase(tcit);
return
true;
}
return
false;
}
adit=admap.find(tnum);
if
(adit!=admap.end())
{
coutsecond>yn;
if
(yn==
Y
)
{
admap.erase(adit);
return
true;
}
return
false;
}
return
false;
}
//--------------------访问函数----------------------
bool
visitstaff()
{
string
tnum;
cin>>tnum;
tpit=tpmap.find
(tnum);
if
(tpit!=tpmap.end())
{
coutsecondsecondsecond>name;
cout>sex;
cout>number;
tpit=tpmap.find
(number);
tcit=tcmap.find(number);
adit=admap.find(number);
if
(tpit!=tpmap.end()||tcit!=tcmap.end()||adit!=admap.end())
{cout>serviceyears;
cout>salary;
cout>op1;
switch
(op1)
{
case
1:{double
Ts;
cout>Ts;
CTempStaffc1=new
CTempStaff(number,name,sex,serviceyears,salary,Ts);
tpmap.insert(pair(c1->GetNo(),*c1));
delete
c1;
return
true;}
case
2:{cout>level;
CAdministratorc2=new
CAdministrator(number,name,sex,serviceyears,salary,level);
admap.insert(pair(c2->GetNo(),*c2));
delete
c2;
return
true;}
case
3:cout>level2;
switch
(level2){
case
1:{cout>time;
CTeacherc3=new
CTeacher(number,name,sex,serviceyears,salary,“讲师“,time,phd,master);
tcmap.insert(pair(c3->GetNo(),*c3));
delete
c3;
return
true;}
case
2:{cout>time>>master;
CTeacherc4=new
CTeacher(number,name,sex,serviceyears,salary,“教授“,time,phd,master);
tcmap.insert(pair(c4->GetNo(),*c4));
delete
c4;
return
true;}
case
3:{cout>time>>master;
CTeacherc5=new
CTeacher(number,name,sex,serviceyears,salary,“副教授“,time,phd,master);
tcmap.insert(pair(c5->GetNo(),*c5));
delete
c5;
return
true;}
case
4:{cout>time>>master>>phd;
CTeacherc6=new
CTeacher(number,name,sex,serviceyears,salary,“博导“,time,phd,master);
tcmap.insert(pair(c6->GetNo(),*c6));
delete
c6;
return
true;}
}
}
return
false;
}
//--------------------编辑函数----------------------
bool
editstaff()
{
string
tnum;
char
yn,sex;
int
op,serviceyears,op1;
string
name,number;
cin>>tnum;
tpit=tpmap.find
(tnum);
tcit=tcmap.find(tnum);
adit=admap.find(tnum);
if
(tpit!=tpmap.end())
{
op1=1;
coutsecondsecondsecond>op;
switch
(op)
{
case
1:cout>name;
switch(op1)
{
case
1:tpit->second.SetName(name);
return
true;
case
2:tcit->second.SetName(name);
return
true;
case
3:adit->second.SetName(name);
return
true;
}
case
2:cout>sex;
switch(op1)
{
case
1:tpit->second.SetSex(sex);
return
true;
case
2:tcit->second.SetSex(sex);
return
true;
case
3:adit->second.SetSex(sex);
return
true;
}
case
3:cout>serviceyears;
switch(op1)
{
case
1:tpit->second.SetServiceYears(serviceyears);
return
true;
case
2:tcit->second.SetServiceYears(serviceyears);
return
true;
case
3:adit->second.SetServiceYears(serviceyears);
return
true;
}
default:return
false;
}
}
//--------------------初始化函数(读盘)----------------------
void
init()
{
string
s;
string
number;
string
name;
char
sex,ch;
unsigned
int
serviceyears,cmp;
double
salary;
string
level;
short
level2;
double
Ts;
long
time,master,phd;
ifstream
fin(“F://staff.txt“);
if
(!fin)
{
cout>cmp)//如果直接用EOF会产生C++fstream文件流结束符判断的奇葩问题
{
number=““;name=““;level=““;
fin.get();ch=fin.get();
while(ch!=
)
{
name=name+ch;
ch=fin.get();
}
ch=fin.get();
while(ch!=
)
{
number=number+ch;
ch=fin.get();
}
sex=fin.get();fin.get();
ch=fin.get();
while(ch!=
)
{
level=level+ch;
ch=fin.get();
}
fin>>serviceyears>>salary>>Ts>>time>>master>>phd;
if
(cmp==1)
{
CTempStaffc1=new
CTempStaff(number,name,sex,serviceyears,salary,Ts);
tpmap.insert(pair(c1->GetNo(),*c1));
delete
c1;
}
else
if
(cmp==2)
{
CAdministratorc2=new
CAdministrator(number,name,sex,serviceyears,salary,level);
admap.insert(pair(c2->GetNo(),*c2));
delete
c2;
}
else
if
(cmp==3)
{
CTeacherc3=new
CTeacher(number,name,sex,serviceyears,salary,level,time,phd,master);
tcmap.insert(pair(c3->GetNo(),*c3));
delete
c3;
}
}
fin.close();
}
//--------------------存储函数(存盘)----------------------
void
save()
{
ofstream
fout(“F://staff.txt“,ios_base::trunc);
for
(tpit=tpmap.begin();tpit!=tpmap.end();++tpit)
{
foutsecond.GetName()second.GetNo()second.GetSex()second.GetServiceYears()second.GetBaseSalary()second.GetTs()second.GetName()second.GetNo()second.GetSex()second.Getlevel()
second.GetServiceYears()second.GetBaseSalary()second.Gettime()second.Getmaster()second.Getphd()second.GetName()second.GetNo()second.GetSex()second.Getlevel()second.GetServiceYears()second.GetBaseSalary()>yn;
if
(yn==
Y
)
{
cout>CAA>>CAB>>CAS>>CTS>>TI1>>TI2>>TI3>>TI4>>MS>>PHD;
}
cout>op;
switch
(op){
case
1:cout<<“请输入新增员工基本信息:“< if (newstaff()) cout<<“增加成功!“< else cout<<“增加失败!可能是信息有误或者磁盘已满“< break; case 2:cout<<“输入要修改的员工ID(number)“; if (editstaff()) cout<<“修改成功!“< else cout<<“修改失败!“< break; case 3:cout<<“输入要删除的员工ID(number)“; if (deletestaff()) cout<<“删除成功!“< else cout<<“删除失败!“< break; case 4:cout<<“输入要查询的员工ID(number)“; if (!visitstaff()) cout<<“无此员工信息!查询失败!“< break; case 5:save(); admap.clear(); tcmap.clear(); tpmap.clear(); return 0; } } return 0; } 程序截图: 截图1 初始化、欢迎界面、查询 截图2 新增员工信息 截图3 删除员工信息 截图4 修改员工信息 截图5 操作完毕后磁
篇2:c++实训报告
c++实训报告 本文关键词:实训,报告
c++实训报告 本文简介:实训报告数学与计算机学院实训报告课程名称:C/C++基础编程实训课程代码:实训题目:学生寝室管理系统年级/专业/班:2010级软件4班学生姓名:吴超学号:312010080622402实训成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)报告(计算书、图纸、分析报告)撰写质量(45
c++实训报告 本文内容:
实训报告
数学与计算机学院
实训报告
课
程
名
称:
C/C++基础编程实训
课
程
代
码:
实
训
题
目:
学生寝室管理系统
年级/专业/班:
2010级软件4班
学
生
姓
名:
吴超
学
号:
312010080622402
实训成绩:
学习态度及平时成绩(30)
技术水平与实际能力(20)
创新(5)
报告(计算书、图纸、分析报告)撰写质量(45)
总
分(100)
指导教师签名:*年*月*日
实训时间
4.12-5.2
地点
6A418
实训学时
6
实训
目的
提高编程能力
提高合作协调能力
掌握c++面向过程实验方法
实训
内容
某学校要对学生寝室进行自动化管理。学生寝室信息括寝室编号、宿舍名称、应居住人数、实际居住人数、所属年级、班号、电费、水费、室长、班主任等信息。
要求编程程序实现如下功能:
1)数据录入:按上面录入学生寝室信息;
2)查询:输入寝室编号或班号或室长或班主任,分别查找进行查找,输出找到的所有寝室信息;3)修改操作:输入寝室编号,修改相应的寝室信息(如修改室长等信息);4)删除:删除指定寝室的记录信息;5)浏览:能查看所有寝室信息
要求以每个功能以函数实现,以菜单的形式显示各功能,从菜单中选择相应的编号后执行相应的功能。
实训分工安排
本程序由两人共同完成
其中高原主要负责录入函数,修改函数,浏览函数的编写,以及汇总后的测试工作;
吴超主要负责头文件,查询函数,删除函数,主函数的编写,以及汇总后的更改工作;
实
训
要
求
两人合作完成通一项目
分工合作后汇总进行统一测试与更正
使用面向过程的实验方法
使用实训室及
主要设施设备
6A418
联想商用电脑
D2527
联想Y460
实
训
成
果
及
明
1
完成了此次实训内容
2
完成了实验报告
3
提高了自己的合作能力以及编程能力
引
言
1
需求分析
本程序是针对学生寝室信息自动化管理而设计,能够对学生的寝室信息(包括寝室编号、宿舍名称、应居住人数、实际居住人数、所属年级、班号、电费、水费、室长、班主任等)进行方便的自动化管理。它应实现的功能有:
1.
数据录入功能:能够通过计算机录入学生寝室信息,并进行储存;
2.
信息查询功能:进入此系统能够清晰地查询使用者需要的学生寝室信息,能够根据寝室编号、班号、室长或班主任分别进行查找,并在查询成功后输出所有的寝室信息;
3.
信息修改功能,为了防止录入数据时的失误带来的错误信息,本系统应能修改错误的信息,根据错误修改指定的信息,而不必全部重新输入;
4.
信息删除功能:由于失误或是学生转学等原因需要删除学生信息,则要求本系统能够根据要删除的寝室信息进行特定删除,而不影响其他寝室信息;
5.
信息浏览功能:为了方便使用者查看所有学生寝室信息,此系统应能根据需要输出所有学生信息;
6.
可维护性:为了适应将来更新的需求,本系统应能有良好的可维护性;
1.1系统概述
本系统为学生寝室管理系统,能方便的对学生的寝室信息作出自动化管理,它包括的功能有:数据录入功能,信息查询功能,信息修改功能,信息删除功能,信息浏览功能;具有简单,易用,清新,人性化的特点,适合大众使用。
1.2
功能需求分析
1.
数据录入功能:能够通过计算机录入学生寝室信息,并进行储存;
2.
信息查询功能:进入此系统能够清晰地查询使用者需要的学生寝室信息,能够根据寝室编号、班号、室长或班主任分别进行查找,并在查询成功后输出所有的寝室信息;
3.
信息修改功能,为了防止录入数据时的失误带来的错误信息,本系统应能修改错误的信息,根据错误修改指定的信息,而不必全部重新输入;
4.
信息删除功能:由于失误或是学生转学等原因需要删除学生信息,则要求本系统能够根据要删除的寝室信息进行特定删除,而不影响其他寝室信息;
5.
信息浏览功能:为了方便使用者查看所有学生寝室信息,此系统应能根据需要输出所有学生信息;
6.
可维护性:为了适应将来更新的需求,本系统应能有良好的可维护性;
1.3运行环境
任意windows环境;
奔腾133以上的pc机,内存需在16兆以上;
1.4测试数据
1
在主菜单中分别选择A,B,C,D,E,Q;
2
在录入页面录入三个寝室信息,寝室编号分别为1,2,3;其中1,2号寝室的班号相同,都为4;3号寝室班号为3;2,3号寝室的班主任姓名相同,都为w,1号寝室班主任为q;
3
在查询菜单中分别选择
A,B,C,D,E;
在按班号查询时输入4;在按班主任姓名查询时输入q;
4
在修改菜单中依次输入0-10,更改信息后选择浏览;
5
在删除菜单中输入2,再在查询菜单中查询2号寝室信息;
2
概要设计
为方便合作者的统一,先定义一个头文件共同使用,头文件为定义的结构体,根据面向过程的试验方法,将不同的功能分为不同的函数分别实现,函数分别为:
录入函数:void
input()
查询函数:void
cx()
修改函数:void
xg()
删除函数:void
delete_stu()
浏览函数:void
print()
主函数:
void
main()
在主函数中显示菜单,根据输入信息调用不同的函数,以实现整个系统功能;
其中由我负责的函数概要设计如下:
1
查询模块void
cx()
此模块以while(1)来创造循环环境,以菜单形式询问使用者需要使用的查询方式,通过使用者的选择,进行不同方式的查询;查询功能用FOR循环实现,for(i=0;i
,清屏system(“cls“)和暂停system(“pause“)来实现屏幕的清洁。
2
删除模块void
delete_stu()
此模块是根据老师提供的例题修改而成,根据使用者输入的需要删除的寝室号,通过for循环for(i=0;i
,清屏system(“cls“)和暂停system(“pause“)来实现屏幕的清洁。
2.1
设计思路
1.
在头文件中定义结构体,为方便接下来的操作,特定义两个结构体,一为学生结构体student,包含学生各种信息,二为结构体stu,在其中定义一个学生结构体student,和长度。通过引用传递,将结构体的宏作为形参传递;
2.
在查询函数void
cx()中,根据输入信息,通过for循环来查找,找到后输出结果;
3.
在删除函数void
delete_stu()中,通过输入的信息,找到该寝室,并将之后的寝室往上移动,以覆盖的方式达到删除的目的;
4.
在主函数中,制作菜单,通过输入信息分别调用不同函数,以实现系统整体功能。
2.2
模块功能介绍
1.
录入模块:通过计算机录入学生寝室信息,并进行储存;
2.
查询模块:进入此系统后能够清晰地显示使用者需要查询的方式(寝室编号、班号、室长或班主任分别进行查找),通过使用者的选择,进行不同方式的查找,并在找到结果后进行输出学生寝室信息;
3.
修改模块,本模块能修改错误的信息,进入此模块后,选择需要修改的寝室,并在选择后显示需要修改某项的信息,选择后将单独对其进行修改,避免每次修改都要全部重新输入的麻烦;
4.
本模块能够根据要删除的寝室信息进行特定删除,而不影响其他寝室信息;
5.
浏览模块:此模块能根据使用者需要输出所有学生信息;
6.
主函数模块:此模块中包含菜单的显示,以及能够实现对不同模块的调用;
2.3模块结构
学生寝室管理系统
寝室信息查询模块
寝室信息删除模块
寝室信息浏览模块
寝室信息修改模块
寝室信息录入模块
2.4
流程图
如下:
2.5
功能设计分工
高原主要负责录入函数,修改函数,浏览函数的编写,以及汇总后的测试工作;
吴超主要负责头文件,查询函数,删除函数,主函数的编写,以及汇总后的修改工作;
3
详细设计
以下将对由我制作的模块进行详细设计
3.1查询模块void
cx()
void
cx(stu
char
m,name[10];
while(1)
{
system(“cls“);
cout>m;
if(m==
A
||m==
a
)
{
cout>n;
for(i=0,x=0;i>n;
for(i=0,x=0;i>name;
for(i=0;i>name;
for(i=0,x=0;i>no;
for(i=0;i=s.length)
cout<<“要删除的寝室不存在,删除失败!!!“< else { for(int j=i;j s.xs[j]=s.xs[j+1]; s.length--; } … 4 调试分析 在定义一个新的函数头文件后,在调试中,出现了无法打开头文件的错误;后找出原因为:头文件与项目文件不在同一文件夹中,通过改变文件位置得以解决; 在初步整合阶段,每个函数之间都存在不协调的问题,通过更改和统一形参的方法得意解决; 而具体功能方面,在查询函数void cx()中,当选择用室长或者班主任姓名方式查询时无法正确完成,后改用比较函数if(strcmp(s.xs[i].sz,??)==0)后,问题才得以解决,而由于使用了清屏system(“cls“)和暂停system(“pause“)功能,在测试时一度出现暂停次数过多的问题,通过在判断结构if(n==s.xs[i].??)中加入break后解决,但是却出现了无法输出所有具有相同信息(如相同班号,班主任)的寝室信息,于是将break改为continue后得正解; 在删除函数void delete_stu()中,由于有老师的例题做参考,并未出现错误; 主函数void main()中,初步测试并未出现错误,只是输出结果不,美观,于是通过调整,将菜单等内容做了小小的美化; 心得:本次收获很大,希望今后继续进步; 5 测试 如下表: 心得与体会 心得:老师提供的定义结构体的方法很好,但是如果由我单独想的话肯定想不出有这样巧妙的方法,本想不COPY老师的方法,而是改为在头文件中只定义一个结构体,但是重新想想,如果作为一个编程者,并不是一定要全靠自己想方法,如果是有更简便的方法当然好,但是明知道自己的方法更复杂,却还要一条道走到黑,这样太不明智了,我要做的,就是学会如何使用老师的简便方法,并使用于以后的学习中;而在自己编写的查询函数中,虽然编译一次性通过,但是在接下来的测试中,基本上每解决一个功能性问题但是却马上接着出现一个新的问题;一次又一次的更改确实严重打击了我的信心和耐心,最后还是不得不承认自己的能力太弱,所以一个简单的函数都解决不了,希望自己在以后的学习中能有质的飞跃!在本次的合作过程中。两人相处的很愉快,是一次共同的进步。 意见与建议 希望老师能够多多帮助我们,要求写的实验报告不要太繁琐了。这次的实验报告要写的东西真的太多了,花了我一个下午加一个晚上,希望老师能稍微减轻下我们的负担。 指导教师评语 指导教师签名:*年*月*日 参考文献 (小三黑体,居中) [1]杨宝刚.开展企业管理信息化工作的步骤[J].企业管理.2002.(11).12~15 [2]Islamabad. Software tools for forgery detection[J]. Business line.2001. (5). 29~32 [3] 张海藩.软件工程.清华大学出版社 [4] 皮德常.c++程序设计实验与课程设计指导.机械工业出版社 [5] 皮德常.c++程序设计教程.机械工业出版社 [6] c++程序设计教程实训指导书.西华大学软件工程系实训小组编写 篇3:C++课程设计实验报告---字符串操作 C++课程设计实验报告---字符串操作 本文关键词:字符串,课程设计,实验,操作,报告 C++课程设计实验报告---字符串操作 本文简介:南京理工大学C++课程设计实验报告姓名方圆学号0511590127班级05115901任课教师肖亮时间2006-9-21教师指定题目3—7:字符串操作评定难易级别A实验报告成绩.实验内容:字符串操作1.1程序功能介绍通过多种成员函数的定义和运算符的重载,实现字符串的各种直接操作,如:去掉串首串尾与子 C++课程设计实验报告---字符串操作 本文内容: 南京理工大学 C++课程设计实验报告 姓名 方圆 学号 0511590127 班级 05115901 任课教师 肖亮 时间 2006-9-21 教师指定题目 3—7:字符串操作 评定难易级别 A 实验报告成绩 .实验内容: 字符串操作 1.1 程序功能介绍 通过多种成员函数的定义和运算符的重载,实现字符串的各种直接操作,如:去掉串首 串尾与子串相同的子符,子串在主串的定位,用新子串更换主串中的指定子串,比较字符串的大小,字符串连接等,所有功能已经经过验证. 1.2 程序设计要求 (1) 将主函数main()中的输出语句printf()改为VC++中的输出语句。 (2) 程序中对字符串的处理函数均使用了字符数组sAns,它占用了大量存储空间,试使用动态分配存储空间的方法改写所有的函数,使之避免使用预先定义的长度很大的数组;并增加类的析构函数,删除动态分配的存储空间. (3) 新增运算符重载函数,重载-,-=运算符,实现字符串的删除操作,并根据返回值判断操作是否成功. (4) 新增成员函数void DelRepeat(),实现在原字符串中删除相邻的重复字符的功能。 (5) 新增成员函数int AddStart(FString str,int start),实现将字串str插入到原字符串中从第start字符开始位置上,操作正确返回1. (6) 改写main函数的结构,界面为菜单的形式,根据菜单选项来验证类中所定义的各种成员函数及操作符重载函数的正确性。 2. 源程序结构流程框图与说明(含新增子函数的结构框图) 字符串操作流程图 菜单显示项目选择 循环 字符串加法 字符串减法 字符串比较 字符串具体操作 删除字符串首部相同字符 删除字符串尾部相同字符 删除字符串所有重复字符 字符串的插入操作 字符串的替换操作 字符串的倒置替换操作 开始 选择判断 退出 退出 1 3 2 2 5 4 5 1 3 4 6 7 选择 错误输入重选 3. 基本数据结构 class FString { // 字符串类定义 private: char*sString; int nLength; //新增成员数据,是字符串对象的长度//String data must be first (to look like string) public: //Constructor FString(); //缺省构造 FString(charstr){nLength=strlen(str);str=new char[nLength+1];strcpy(sString,str);}; //新增构造函数,用字符串常量初始话字符串对象 FString(FString //新增拷贝的构造函数,用类的对象初始化 ~FString(){if(sString)delete[]sString;}; //新增析构函数,释放字符串对象所占用的空间 void DelRepeat(); //新增成员函数,删除原字符串中相邻的重复字符 int AddStart(FString str,int start); //*新增成员函数,将字符串str插入到原字符串中从第start字符串开始位置上,操作正确返回1*/ inline FString operator-(const charsAppend); //新增函数,重载减法运算符 inline FString operator-(const FString sAppend); //新增函数,重载减法运算符 inline FString operator-=(char* val); //新增函数,重载减法运算符 inline FString operator-=(FString val); //新增函数,重载减法运算符 FString Mid(const int nStart,const int nLength); //从字串sString中第nStart个字符开始取出nLength个字符 FString Left(const int nLength); //从字串sString左边取出nLength个字符 FString Right(const int nLength); //从字串 sString 右边取出 nLength 个字符 int InStr(const int nStart,const charsSearch,const bool bCaseSensitive=true); int InStrRev(const int nStart,const charsSearch,const bool bCaseSensitive=true); FString RTrim(const char sChar= ); FString LTrim(const char sChar= ); FString Trim(const char sChar= ); FString Replace(const charsSearch,const charsReplace); FString Format(const charsFormat,.); //参数可变的函数 int Length(); //Various Operators inline operator char*(); //转换函数 inline FString operator+(const charsAppend); //新增函数,重载加法运算符 inline FString operator+(const FString sAppend); //新增函数,重载加法运算符 inline char operator[](const int nIndex); //数组下标运算符重载 inline FString operator+=(char* val); //新增函数,重载加法运算符 inline FString operator+=(FString val); //新增函数,重载加法运算符 //Comparison Operators inline int operator(const charval); inline int operator>=(const charval); inline int operator!=(const charval); inline int operator==(const charval); inline int operator(const FString val); inline int operator>=(const FString val); inline int operator!=(const FString val); inline int operator==(const FString val); //Assignment Operators FString operator=(const charval); FString operator=(const FString val); }; 4. 程序运行结果界面 图1、初始界面 图2、字符串加法 图3 、字符串减法 图4 、字符串比较大小 图5、对字符串的具体操作 图6、删除字符串首部相同的字符 图7、字符串的插入操作 图8、字符串的替换操作 图9、字符串的倒置替换操作 5. 课程设计遇到的技术问题与解决思路 问题1: 在菜单选择时,若输入字符则会出现死循环。 解决办法: 将定义为整型输入变量改为定义成字符型变量。例:int Option1 =’0’,Option2 =’0’;改为char Option1 =’0’,Option2 =’0’。 问题2:主函数main()的输出语句如何修改为c++中的输出语句? 解决办法:C语言中的输出语句:printf(),头文件,改为c++中的输出语句时,要将头文件改成,应用时注意符号的正确修改。