您好,欢迎访问三七文档
《文学研究助手》程序设计基础课程设计报告二OO八年六月二十八日目录一.编程目的:..........................................3二.设计要求:..........................................3三.各函数功能说明:....................................3四.流程图:............................................9五.总结:.............................................10参考书目:.............................................11一.编程目的:文学研究人员需要统计某篇英文小说中某些形容词的出现次数和位置,试写出一个实现这一目标的文字统计系统,成为“文学研究助手”。二.设计要求:1、英文小说存放在一个文本文件中;2、带统计的额词汇集合要以此输入完毕,即统计工作必须在程序的以此运行后全部完成;3、程序的输出结果是每个词的出现次数和出现位置所在的行号;4、格式自行设计。三.各函数功能说明:函数源代码以及函数的功能:#includeiostream#includestringusingnamespacestd;#includestdio.h//包含标准输入输出函数structword{intline;inttime;word*next;};structwords{charword_re[20];intcheck;inttime_t;words*next_s;word*next;};words*input(words*head);//比较并存贮信息时候所用的函数words*output(words*head);//单纯输出直观数据时所使用的函数words*input(words*head){intcount=0;intline=0;//记录行数所使用的变量inttime_words=0;head-next_s=newwords;intcheck=1;words*insert=newwords;word*insert_word=newword;insert=head-next_s;cout请输入需要查询的单词endl;while(check){cininsert-word_re;insert-time_t=0;insert-check=0;insert-next=newword;cout还希望搜索其他的单词么,1继续,0停止endl;cincheck;if(check=1){insert-next_s=newwords;insert=insert-next_s;}}insert-next_s=NULL;insert=head-next_s;while(insert!=NULL){coutinsert-word_reendl;insert=insert-next_s;}insert=NULL;inttime=0;inttime_gk=0,time_wt=0;charcompare[3]=@;chargetkey[32];char*word_tair;FILE*getword;if((getword=fopen(英文文件.txt,r))==NULL){couterror;return0;}charword_c[80];while(fgets(word_c,80,getword)!=NULL)//读取一行中的8个字符{line++;time_words=0;//寻找的字符出现的次数time_gk=0;//储存用来比较的字符串所使用的变量time_wt=0;//在储存行字符串的变量中定位word_tair=NULL;word_tair=word_c;time=strlen(word_tair);couttime;coutword_tairendl;while(word_tair[time_wt]!='\n'){time_gk=0;if((word_tair[time_wt]='z'&&word_tair[time_wt]='a')||(word_tair[time_wt]='Z'&&word_tair[time_wt]='A')||word_tair[time_wt]=='-'){while((word_tair[time_wt]='z'&&word_tair[time_wt]='a')||(word_tair[time_wt]='Z'&&word_tair[time_wt]='A')||word_tair[time_wt]=='-'){getkey[time_gk]=word_tair[time_wt];time_wt++;time_gk++;}//读取出一个单词,并储存在新的变量中getkey[time_gk++]='\0';insert=head-next_s;while(insert!=NULL){if(!strcmp(insert-word_re,getkey)){count=insert-check;insert-check++;insert_word=insert-next;//判断是否是相同的单词while(count0){insert_word=insert_word-next;count--;}insert_word-line=line;insert_word-time=time_words;insert_word-next=NULL;insert_word-next=newword;break;}//储存相应的信息insert=insert-next_s;}time_words++;}if(word_tair[time_wt++]=='\n')break;}}coutendl;returnhead;}//输出函数words*output(words*head){inttime=0;words*first=head-next_s;words*insert=first;word*insert_word=newword;while(insert!=NULL){coutinsert-word_re单词共出现了insert-check次endl;insert_word=insert-next;while(insert-checktime){time++;cout第time次出现在insert_word-line行,第insert_word-time+1个单词endl;insert_word=insert_word-next;}insert=insert-next_s;time=0;}returnhead;}intmain(){words*head_emp=newwords;strcpy(head_emp-word_re,thisisempty);//母鏈的頭賦空head_emp-check=-1;head_emp-time_t=0;head_emp-next=NULL;input(head_emp);output(head_emp);return0;}运行结果:四.流程图:五.总结:在做程序设计前就已经感觉到我设计的《文学研究助手》比较复杂,不仅要写出实现各种功能的函数还要保证函数之间的连接,怎样通过函数之间的关系能很好的把函数连接起来,还要保证程序能够很好的而且有效的运行。还有可能遇到一些以前没有用到的知识,像怎样在输入有误的情况下进行异常处理,这些都要通过函数的功能来实现,这些对我来说都是新的知识,而且觉得很有难度。在做程序设计前还必须把书本上的基本知识搞懂,程序设计会用到书中的类做,对类的理解也不是很到位,一些概念的知识还没有很好的理解,所以还需要借助书中的知识来加深对类的理解。在编程的过程中也遇到了很多的困难,但是通过同学的帮助渐渐对于程序有更深一步的理解。main()函数words*input(words*head)录入信息比较并存贮信息words*output(words*head)输出函数charword_c读取字符FILE*getword从英文文件.txt读取英文文章工程完成日期:2008-6-28董鸣07电信参考书目:[1]谭浩强,《C++程序设计》,北京,清华大学出版社,2006年.
本文标题:文学研究助手
链接地址:https://www.777doc.com/doc-6049363 .html