C语言数据结构文章编辑系统Word下载.docx
《C语言数据结构文章编辑系统Word下载.docx》由会员分享,可在线阅读,更多相关《C语言数据结构文章编辑系统Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
二、设备与环境
PC兼容机、Windows操作系统、VisualC++6.0软件。
三、功能模块简介和系统结构图
本系统运用了数据结构的知识,在VC系统下,设计出了一套界面布局合理的文章编辑系统。
学生通过系统可在输入文本的情况下,对文本中的英文字母,汉字,数字,空格及文章总字数进行统计;
统计某一字符串在文章中出现的次数;
删除某一子串,并将后面的字符前移等多项功能。
(一)功能模块简介
系统结构图
系统说明
(1)系统在用户登录时,按任意键进入。
(2)系统运行时,必须先进行文本的输入(字符数1000),否则会出现系统故障,在第二次输入时,可根据提示是否输入,以防覆盖上一文本,然后方可运行其它部分。
文本输入时可输入任意字符。
(3)可浏览已输入文本。
(4)文本字符统计,可统计英文字母,汉字,数字,空格的各自数目及字符总个数。
(5)特定字符串的统计会明确标出特定字符串出现次数。
(6)特定字符串的删除,是先一步用strstr()函数在原字符串中查找所要删除字符串后,再进行删除的,同时可通过对比知道被删除字符串的位置,删除可重复多次进行。
(7)退出系统时可选择是否退出。
四、系统的主要界面设计及运行说明
1、系统登录界面
系统运行界面
新建文本界面(以#号结束)
对输入文本进行浏览
文本字符的统计
特定字符统计
特定字符删除
退出系统
五、主要的源程序代码
1、登陆系统代码(包括图片变幻)
#include<
string.h>
stdio.h>
stdlib.h>
conio.h>
typedefstructline
{
char*data;
structline*next;
}LINE;
voidCreateTXT(LINE*&
head)
chartmp[1000];
printf("
请输入文本,最多输入1000个字符!
\n"
);
输入一页文字以#结束:
LINE*p=newLINE;
head=p;
while
(1)
{
gets(tmp);
if(tmp[0]=='
#'
)break;
p=p->
next=newLINE;
p->
data=(char*)malloc(strlen(tmp)+1);
strcpy(p->
data,tmp);
if(tmp[strlen(tmp)-1]=='
)
{
p->
data[strlen(tmp)-1]='
\0'
;
break;
}
}
p->
next=NULL;
head=head->
next;
}
/**文本字数统计**/
intCount_Space(LINE*&
head)//统计空格数
LINE*p=head;
intasc_space=32;
intcount=0;
inti;
intLen;
do{
Len=strlen(p->
data);
for(i=0;
i<
Len;
i++)
if(p->
data[i]==asc_space)
count++;
}while((p=p->
next)!
=NULL);
returncount;
intCount_Num(LINE*&
head)//统计数字个数
data[i]>
=48&
&
data[i]<
=57)
intCount_All_Word(LINE*&
head)//统计文章的总字数
count+=strlen(p->
intCount_ZM(LINE*&
head)//统计字母数
='
a'
&
z'
||p->
A'
Z'
)count++;
//计算字母个数
while((p=p->
intFind_Word(LINE*&
head,char*sch)//统计sch在文章中出现的次数
intlen1=0;
intlen2=strlen(sch);
inti,j,k;
len1=strlen(p->
//当前行的字符数
len1;
data[i]==sch[0])
{
k=0;
for(j=0;
j<
=len2-1;
j++)
if(p->
data[i+j]==sch[j])k=k+1;
if(k==len2){count++;
i=i+k-1;
}
/**特定字符串的删除**/
voiddel_string_word(char*s,char*sch)
char*p=strstr(s,sch);
chartmp[80];
intlen=strlen(s);
intk,kk;
inti=len-strlen(p);
intj=i+strlen(sch);
for(k=0;
k<
i;
k++)
tmp[count++]=s[k];
for(kk=j;
kk<
len;
kk++)
tmp[count++]=s[kk];
tmp[count]='
strcpy(s,tmp);
voidDel_String(LINE*&
head,char*sch)//删除指定的字符串
while(strstr(p->
data,sch)!
=NULL)
del_string_word(p->
data,sch);
/**打印输入的文本**/
voidOutPutTxt(LINE*&
head)//向屏幕输出文章
文本文件输出如下:
"
printf("
%s\n"
p->
voidTj(LINE*&
文章统计信息结果如下:
英文字母数:
%d\n"
Count_ZM(head));
空格数:
%d\n"
Count_Space(head));
文章中共出现数字:
Count_Num(head));
文章出现的汉字和标点(全角)总数:
%d\n"
(Count_All_Word(head)-Count_Num(head)-Count_Space(head)-Count_ZM(head))/2);
统计文章的总字数:
(Count_All_Word(head)+Count_Num(head)+Count_Space(head)+Count_ZM(head))/2);
voidmain()
LINE*head;
charsch[20];
charID[10];
charch;
chartmp_sch[20];
system("
color3F"
文章编辑系统\n"
\n\n"
提示:
第一次使用本系统请首先创建文本链表"
\n按任意键进入...."
getch();
cls"
主菜单如下:
*******************************************************************\n"
1.新建文本\n"
2.浏览输入文本\n"
3.文本字符统计\n"
4.特定字符串的统计\n"
5.特定字符串的删除\n"
6.退出\n"
注:
请您按关键字代号选择菜单操作!
务必在运行过一次第一步后执行其他部!
请输入序号:
scanf("
%s"
ID);
while
(1)
if(strcmp(ID,"
1"
)==0)
printf("
新建文本要覆盖已有文本,是否继续输入?
(Y/N)\n"
getchar();
scanf("
%c"
&
ch);
system("
if(ch=='
n'
||ch=='
N'
break;
elseif(ch=='
y'
Y'
CreateTXT(head);
break;
elseif(strcmp(ID,"
2"
OutPutTxt(head);
3"
Tj(head);
4"
请输入要统计的字符串:
sch);
出现的次数为:
Find_Word(head,sch));
5"
请输入要删除的某一字符串:
tmp_sch);
Del_String(head,tmp_sch);
删除后"
6"
你确定要退出系统吗?
)exit(0);
else
您输入字母有错,请重新输入!
\n\n"
六、实验总结
本次课程设计历时两周,所用知识基本上包括了上学期所学的知识以及很多有关C语言的基础知识,课程设计的过程中自己更更进一步了解了链表,掌握了数据结构的思想与方法。
自己在编写程序的过程中,不是所有知识一下就想起来的,而是出现了不少错误,通过调试,在查阅一些资料后,才整理出来的。
同时,自己加强了自我界面的综合设计能力,设计出界面清晰、美观、操作简便的文章编辑系统。
系统中也有不少亮点,比如任意键进入系统,统计出汉字个数,strstr()函数的应用,链表的运用,指定控制台输出颜色,清屏函数等。
不过此次课程设计,进入运行界面后,如果直接运行2,3步,则会出现系统错误,在以后的继续学习中,所开发的系统应尽量避免这样的情况。
我相信,随着时间的积累系统中很多内容都将得到充实。