简单的行编辑器课程设计报告学弟学妹们不用这么辛苦找了Word文件下载.docx
《简单的行编辑器课程设计报告学弟学妹们不用这么辛苦找了Word文件下载.docx》由会员分享,可在线阅读,更多相关《简单的行编辑器课程设计报告学弟学妹们不用这么辛苦找了Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
![简单的行编辑器课程设计报告学弟学妹们不用这么辛苦找了Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-12/14/01cd3df6-2fc0-46e4-bb0a-8cd63b61f792/01cd3df6-2fc0-46e4-bb0a-8cd63b61f7921.gif)
主函数流程图如图1-1程序如下
voidmain()
{
cout<
<
"
\t\t\t简单行编辑.\n"
;
Strs1;
Strs2;
Strss;
Strss1;
Strss2;
intn;
s1.input_str();
intchoice=-1;
while(choice!
=0)图1-1行编辑器主函数流程
{
//system("
cls"
);
cout<
\t\t\t*******简单行编辑******\n"
\t\t\t***********************\n"
\t\t\t1:
打印字符串.\n"
\t\t\t2:
插入字符串.\n"
\t\t\t3:
删除字符串.\n"
\t\t\t4:
复制整个字符串.\n"
\t\t\t5:
替换字符串.\n"
\t\t\t6:
查找一个字符串的位置.\n"
\t\t\t7:
继续输入.\n"
\t\t\t0:
退出.\n"
\t\t\t************************\n"
\t\t\t请选择:
"
cin>
>
choice;
switch(choice)
case1:
\t\t\t1:
打印出字符串.\n"
s1.print_str(s1);
break;
case2:
\t\t\t2:
s1.insert_str(s1,s2,ss);
case3:
\t\t\t3:
s1.delete_str(s1,s2);
case4:
\t\t\t4:
s1.copy_str(s1,s2);
/*case5:
\t\t\t5:
s1.instead_str(s1,s2,ss1,ss2,n);
*/
case6:
\t\t\t6:
s1.find_position(s1,ss,n);
case7:
\t\t\t7:
继续输入.\n"
s1.go_on_input(s1);
case0:
\t\t\t0:
default:
cout<
\t\t\terror.\n"
break;
}
}
2.各功能模块的设计
(1)输入、打印模块
该程序需要输入一段字符串作为其待处理数据,所以通过键盘输入字符串作为待处理数据,以回车进入主函数界面。
选择菜单1打印出该段字符串。
其程序如下,程序运行截图如图2-12-2
voidStr:
:
input_str()
{
\t\t\t请输入字符串以#结束:
intk;
k=0;
ch[k]='
x'
while(cin>
ch[k],ch[k]!
='
#'
)k++;
len=k;
//下面的程序为:
显示整个字符串。
print_str(Str&
s1)
\n\t\t\t整个字符串为:
for(intk=0;
s1.ch[k]!
k++)
ch[k];
\n\n"
图2-1
图2-2
(2)数据修改模块
该功能可通过数据插入与数据修改两部分完成对数据的修改。
1】插入完成插入操作时须先输入要插入的位置,然后输入所要插入的字符串,以‘#’结束,回车完成插入其程序如下,运行截图如图2-3
insert_str(Str&
s,Strs2,Strss)
\t\t\t输入你要插入的位置:
inti;
cin>
i;
i--;
if(i>
s.len)
\t\t\t插入位置不存在.\n"
else{
\t\t\t输入你要插入的字符串以#结束:
intr;
r=0;
ss.ch[r]='
while(cin>
ss.ch[r],ss.ch[r]!
)r++;
ss.len=r;
if(ss.len>
MaxSize||(s.len+ss.len)>
MaxSize)
cout<
\t\t\t插入字符串大于最大值无法插入.\n"
intp=0;
for(intk=0;
k<
=i;
k++)
{
s2.ch[p]=s.ch[k];
p++;
}
for(k=0;
k<
ss.len;
s2.ch[p]=ss.ch[k];
p++;
for(k=i+1;
s.len;
{
s2.len=p;
\t\t\t新字符串的长度为"
s2.len;
s2.ch[p]='
for(intq=0;
s2.ch[q]!
q++)
s.ch[q]=s2.ch[q];
s.ch[q]='
s.len=s2.len;
cout<
插入成功.\n"
print_str(s);
}
图2-3
2】删除删除操作是作为修改模块的一部分,同插入操作共同完成修改数据的功能。
进行删除操作时,输入想从字符串上开始删除的位置,再输入删除的字符串长度。
回车即可完成删除。
其程序如下,运行截图如图2-4
delete_str(Str&
s1,Strs)
\t\t\t输入你要开始删除的位置:
s1.len)cout<
\t\t\t太大无法删除.\n"
else
{
\t\t\t输入你要删除的长度:
intj;
j;
if(i+j>
s1.len)
\t\t\t删除的太长无法删除.\n"
else{
for(intk=0;
{
s.ch[p]=s1.ch[k];
}
for(k=i+j;
s1.len;
s.len=p+1;
s.ch[p+1]='
for(intq=0;
s.ch[q]!
s1.ch[q]=s.ch[q];
s1.ch[q-1]='
s1.len=s.len-1;
\t\t\t删除成功.\n"
s1.print_str(s1);
图2-4
(3)查找模块
在字符串内寻找你想要的一段字符串,显示找到的位置。
选择查找功能的菜单,通过键盘输入所要查找字符串,回车即可找出其所在位置。
程序如下,运行截图如图2-5
find_position(Str&
s,Str&
ss,int&
n)
\t\t\t输入字符串:
ss.input_str();
inty=0;
for(inti=0;
i<
i++)
for(intj=i,k=0;
s.ch[j]==ss.ch[k];
j++,k++)
{
if(k==ss.len-1)
{cout<
\t\t\t位置是"
i+1<
.\n"
position[y]=i+1;
y++;
if(!
y)
\t\t\t没有找到要字符\n"
position[y]=-1;
n=y;
//n
图2-5
(4)替换模块
在字符串内,把某些小段字符串替换为你想要的字符串。
先输入你要改变的小段字符串,程序先找到这些字符串,再输入想要替换成的/字符串,程序完成替换功能。
其程序如下
instead_str(Str&
s1,Strs2,Strss1,Strss2,intn)
s1.find_position(s1,ss1,n);
if(n!
=0)
\t\t\t输入你想替代的字符.\n"
ss2.input_str();
\t\t\t替换成功"
\n"
s1.len="
s1.len<
ss1.len="
ss1.len<
ss2.len="
ss2.len<
n="
n<
if((s1.len-(ss1.len-ss2.len)*n)>
太长.\n"
position[n]=s1.len+1;
for(inti=0;
position[0]-1;
s2.ch[p]=s1.ch[i];
for(intnn=0;
nn<
n;
nn++)
for(intj=0;
j<
4;
j++)
{
s2.ch[p]=ss2.ch[j];
}
for(intkk=(position[nn]-1+ss1.len);
kk<
position[nn+1]-1;
kk++)
s2.ch[p]=s1.ch[kk];
for(intqq=0;
s2.ch[qq]!
qq++)
s1.ch[qq]=s2.ch[qq];
s1.ch[qq]='
s1.len=s2.len;
(5)退出
当所要运行操作完成时,可通过主函数选择退出菜单,实现程序的退出。
程序运行截图如图2-6
图2-6
5.【总结】
通过为期一周的课程设计,我们对《C语言》这门课程有了更深一步的了解。
它是计算机程序设计的重要理论技术基础,在我们专业的学习中占据着十分重要的地位。
同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。
因为我们学习知识就是为了实践。
而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。
运用《C语言》中的算法思想作数据结构,结合C语言基本知识,编写一个简单的行编辑器。
通过完成本课题,进一步熟悉C语言的基本知识,同时提升了自己的实践动手能力。