文本信息处理.docx

上传人:b****5 文档编号:5372999 上传时间:2022-12-15 格式:DOCX 页数:13 大小:107.97KB
下载 相关 举报
文本信息处理.docx_第1页
第1页 / 共13页
文本信息处理.docx_第2页
第2页 / 共13页
文本信息处理.docx_第3页
第3页 / 共13页
文本信息处理.docx_第4页
第4页 / 共13页
文本信息处理.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

文本信息处理.docx

《文本信息处理.docx》由会员分享,可在线阅读,更多相关《文本信息处理.docx(13页珍藏版)》请在冰豆网上搜索。

文本信息处理.docx

文本信息处理

课程设计

班级

学号

姓名

指导教师

年月日

课程设计任务书

一、课程设计题目:

文本信息处理

二、课程设计工作自2007年7月9日起至2007年7月14日止

三、课程设计内容:

运用所学的C语言知识,编制和调试程序,具有如下功能:

(1)对存储在chapter.dat文件中的英文文章进行下面的处理操作,文章的具体内容自己输入。

(2)统计各个单词的数量,并将单词排序,排序结果输出到out.dat中,格式如下:

单词名数量

(3)输入某一单词,判断该单词是否存在于该文章中,若存在,指出其在文章中出现的次数。

四、课程设计要求:

1、采用模块化程序设计方法;在程序界面,以菜单的形式调用各功能函数;程序可读性强,界面友好;输出形式尽量美观。

2、用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。

3、用户界面中的菜单至少应包括“排序显示”、“查询单词”、“退出”3项。

4、代码应适当缩进,并给出必要的注释,以增强程序的可读性。

课程设计说明书:

课程结束后,上交课程设计说明书和源程序。

课程设计说明书的内容如下:

●课程设计任务书

●程序设计题目

●需求分析(分析题目的要求)

●程序框图(总体框图和各功能模块框图,使用传统流程图或N-S框图)

●核心技术的实现方法及程序源代码及注释

●个人总结

●[参考资料]

指导教师:

____________________学生签名:

____________________

目录

一、程序设计题目1

二、需求分析1

三、程序流程图2

四、核心技术的实现方法、程序段及注释7

五、个人总结10

六、参考文献11

七、源程序11

 

一、程序设计题目

文本信息处理,具体要求如下:

1、打开文档(chapter.dat)

2、输入查找单词,并显示单词在文章中出现的次数

3、显示文章的内容

4、对chapter文档中的文章进行单词排序

5、退出程序

注:

用户界面中的菜单至少应包括“排序显示”、“查询单词”、“退出”3项。

将单词排序,排序结果输出到out.dat中。

二、需求分析

经过对程序设计题目的分析,整个程序大致分为四个模块,其中每一个模块对应一个函数,他们的功能分别是菜单函数(menu),查找函数(find),显示全文函数(show),排序函数(paixu),

1、菜单函数主要实现程序的菜单功能,将程序所包含的各种功能作输出显示;

2、查找函数主要实现的功能是实现判断单词是否存在于chapter.dat的文章中,若存在,并统计其数量。

3、显示全文函数主要实现的功能是显示储存在chapter.dat的文章的全文。

4、排序函数实现的功能是对chapter.dat中的文章的单词进行排序,并统计单词的数量,格式如下:

单词名数量

除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。

三、程序流程图

 

1、程序总体结构图

 

对a进行赋值

真a=1?

打开文件

真a=2?

find(fp)

真a=3?

Show(fp)

真a=4?

paixu(fp)

真a=5?

break

error

图1程序总体结构图

 

2、具体功能框图

(1)查找函数:

图2查找函数

(2)显示全文函数:

变量ch

ch=fgetc(fp)

 

ch!

=EOF

putchar(ch)

ch=fgetc(fp)

全文结束

rewind(fp)

图3显示全文函数

 

(3)排序函数

图4排序函数

四、核心技术的实现方法、程序段及注释

本程序主要由四个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。

在这些函数当中,查找函数,显示全文函数,排序函数是程序中较为核心的部分,下面分别进行说明。

1、查找函数

输入查找单词,对于已储存在chapter.dat文档中的文章,输入一个单词查看其是否在文章中,若是存在输出其个数.其判断方法是以单词是否为空判断单词开头,并使其从文章的开头循环到末尾,在这过程中,比较输入的单词和文章中的单词是否相同,有一个相同的,其结果就加一,具体的程序段如下:

voidfind(FILE*fp)/*查找单词*/申明形态变量

{

FILE*fp;

inti,j,m=0,n,t=0;

charwant[10],now[40],b[10];

printf("Pleaseenterthewordyouwant\n");

scanf("%s",want);

if((fp=fopen("D:

\\chapter.dat","a"))==NULL)

{

printf("cannotopenthisfile\n");

exit(0);

}

fread(now,sizeof(now),1,fp);

for(i=0;now[i]!

='\0';i++)

if(now[i]==want[0])

{

n=i;

for(j=0;j<=m;j++)

b[j]=now[n++];

}

if(strcmp(want,b)!

=0)

t++;

printf("thequatityofthewordsis%d",t);

return;

}

2、显示全文函数

该函数的核心内容是显示储存在chapter.dat文档中的英文文章,ch=fgetc(fp)调用文档内容,直到ch!

=EOF结束,最后输出文章的内容,具体程序段如下:

voidshow(FILE*fp)

{

charch;

printf("全文内容如下:

");

ch=fgetc(fp);/*调用文档内容*/

while(ch!

=EOF)

{

putchar(ch);/*输出文章内容*/

ch=fgetc(fp);

}

printf("全文结束!

!

!

!

");

printf("\n");

rewind(fp);

}

3、排序函数

该函数是把储存在chapter.dat文档中的文章的单词,按首字母的大小进行排序,并通过比较法比较每个单词,看是否有相同的,若存在,在数量上加1,最后统计总数量,然后以只写的方式打开文档out.dat,把结果输入到该文档中,具体的程序段如下:

voidpaixu(FILE*fp)

{FILE*fp1;(定义文件类型指针)

inti,j,k,l,ge;

chara[50][10],c[10],bb;

char*p,*p1;

fp1=fopen("D:

\\out.dat","w");

bb=fgetc(fp);j=0;

rewind(fp);

i=1;

for(j=0;j<=9;j++)

{

a[i][j]=fgetc(fp);

if(a[i][j]<'a'||a[i][j]>'z')

{a[i][j]='\0';i=i+1;j=-1;}

if(feof(fp)!

=0)break;

}

rewind(fp1);

for(l=0;l<=i-3;l++)

{for(k=i-l-1;k>=2;k--)

{

p=a[k-1];

p1=a[k];

if(strcmp(a[k-1],a[k])<0)

{strcpy(c,a[k-1]);

strcpy(a[k-1],a[k]);

strcpy(a[k],c);

}

}

}

ge=0;

fprintf(fp1,"\\按首个字母大小排列\\");

fprintf(fp1,"单词名(个数):

");

for(k=1;k<=i-2;k++)

{ge=0;

for(l=1;l<=i-1;l++){if(strcmp(a[k],a[l])==0)ge++;}

fprintf(fp1,"%s(%d)",&a[k][0],ge);

}

fclose(fp1);

}

五、个人总结

通过这几天的C语言程序设计,使我对C语言编程有了更深刻的了解,也认识了自己在C语言方面的不足,而且通过这次C语言学习也给了我很大的帮助。

虽然时间只有一周,但我知道了很多以前不知道的编程知识,加深了对C语言编程的了解。

虽然大一时学了C语言,但只是学了些程序的片段,并没有完完整整地编写一段应用程序,通过这次C语言课设,让我们能够自己写出一段完整的程序,是很大程度上的进步,这对今后的学习都有很大的帮助。

六、参考文献

1谭浩强.C程序设计.北京:

清华大学出版社,2005

2刘成等.C语言程序设计实验指导与习题集.北京:

中国铁道出版社,2006

七、源程序

#include

#include

#include

voidmenu()/*功能菜单*/

{

printf("\n**************WELCOME****************\n\n");

printf("1------------------------------打开文档(chapter.dat).\n\n");

printf("2---------------------------------------------------------查询.\n\n");

printf("3---------------------------------------------------显示全文.\n\n");

printf("4---------------------------------------------------------排序.\n\n");

printf("5---------------------------------------------------------退出.\n\n");

printf("*********************END********************\n");

}

 

voidfind(FILE*fp)/*查询函数*/

{

FILE*fp;

inti,j,m=0,n,t=0;

charwant[10],now[40],b[10];

printf("Pleaseenterthewordyouwant\n");

scanf("%s",want);

if((fp=fopen("D:

\\chapter.dat","a"))==NULL)

{

printf("cannotopenthisfile\n");

exit(0);

}

fread(now,sizeof(now),1,fp);

for(i=0;now[i]!

='\0';i++)

if(now[i]==want[0])

{

n=i;

for(j=0;j<=m;j++)

b[j]=now[n++];

}

if(strcmp(want,b)!

=0)

t++;

printf("thequatityofthewordsis%d",t);

return;

}

 

voidpaixu(FILE*fp)/*排序函数*/

{FILE*fp1;

inti,j,k,l,ge;

chara[50][10],c[10],bb;

char*p,*p1;

fp1=fopen("D:

\\out.dat","w");

bb=fgetc(fp);j=0;

rewind(fp);

i=1;

for(j=0;j<=9;j++)

{

a[i][j]=fgetc(fp);

if(a[i][j]<'a'||a[i][j]>'z')

{a[i][j]='\0';i=i+1;j=-1;}

if(feof(fp)!

=0)break;

}

rewind(fp1);

for(l=0;l<=i-3;l++)

{for(k=i-l-1;k>=2;k--)

{

p=a[k-1];

p1=a[k];

if(strcmp(a[k-1],a[k])<0)

{strcpy(c,a[k-1]);

strcpy(a[k-1],a[k]);

strcpy(a[k],c);

}

}

}

ge=0;

fprintf(fp1,"\\按首个字母大小排列\\");

fprintf(fp1,"单词名(个数):

");

for(k=1;k<=i-2;k++)

{ge=0;

for(l=1;l<=i-1;l++){if(strcmp(a[k],a[l])==0)ge++;}

fprintf(fp1,"%s(%d)",&a[k][0],ge);

}

fclose(fp1);

}

 

voidmain()/*主函数*/

{FILE*fp;

inta,word=0,num,i;

charch;

printf("\n请先建立D:

\\chapter.dat文档.\n然后按回车,进入后按提示进行操作.\n");

scanf("%c",&ch);

menu();/*调用提示函数*/

for(i=0;i<2;)/*单词判断*/

{

printf("请输入命令:

");

scanf("%d",&a);/*输入选项*/

switch(a)/*判断选项*/

{

case1:

if((fp=fopen("D:

\\chapter.dat","r"))==NULL)

printf("error!

请检查chapter.dat是否存在!

\n");

else

{

printf("OPEN\n");

}

break;

case2:

find(fp);break;/*查找单词*/

case3:

show(fp);break;/*显示全文*/

case4:

paixu(fp);break;

case5:

exit(0);break;

default:

printf("error:

");

}

if(a==5)

break;

}

fclose(fp);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1