KWIC实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

软件体系结构上机实验报告书中国石油大学(北京)信息学院计算机科学与技术系制订人:周新学号:07指导教师:朱雪峰博士2011年10月27日1、课程实验目的通过KWIC(KeyWordinContext)检索系统,对软件体系结构有更加深入的了解和认识。通过运用几种体系结构,熟悉常见的软件体系结构,并对这几种结构有进一步了解。2、任务概述用管道过滤器,主程序、子程序,抽象数据类型,隐式调用这四种结构来分别实现KWIC检索系统。3、实现方法用C++主要实现了两种结构:主程序、子程序结构,抽象数据类型。(1)KWIC1工程的入口函数int_tmain(intargc,_TCHAR*argv[]){ize();j++){coutdst[i][j];}coutendl;}coutendlendl;returndst;}ize();ize();col++){(srcLines[row][col][0]);}(firstCharLine);ize();col++){charmin='z';for(introw=0;row();row++){for(intcol=0;colfirstChar[row].size();col++){if(min=firstChar[row][col]&&''!=firstChar[row][col]){rowPos=row;colPos=col;min=firstChar[row][col];}}}firstChar[rowPos][colPos]='';intlinePos=0;ize();}linePos=linePos+colPos;(lineIndex[linePos]);}}returndstIndex;};col++){coutsrcLines[lineIndex[row].rowIndex][lineIndex[row].colIndex[col]];}coutendl;}coutendl;}(3)抽象数据类型结构实现行存储类ush_back(instring);}ush_back(inchar);}ize();}输入类voidInput::readLines(char*filename,Lines&readLines){//vectorvectorstringdst;ifstreaminfile(filename,ios::in);if(!infile){coutopenerror!endl;exit(0);}chartemp[100]=;//存储从文件中读取的行的临时变量intlineIndex=0;//行序号//按行读取while(temp,100)){intk=0,j=0;vectorstringline;(vectorstring());(line);chars[20]=;//存储从行中取字符串的临时变量intstringIndex=0;//字符串序号(s,lineIndex);while(temp[k]!=0){if(temp[k]!=''){(temp[k],stringIndex,lineIndex);}//每个单词的截取条件为下一个字符为空格或者为行的末尾if(temp[k]==''&&temp[k+1]!=''){//(temp[k],stringIndex,lineIndex);//将该字符串加入到指定行的指定字符串中//('\0',stringIndex,lineIndex);s[0]='\0';//清空字符串(s,lineIndex);stringIndex++;//字符串序号加1}k++;}lineIndex++;//(line);//将从文件中中读出的行加入到dst中}();for(inti=0;i();i++){for(intj=0;j(i);j++){cout(i,j);}coutendl;}coutendlendl;}循环左移类//实现所有行的循环移位voidShift::circularShift(LinessrcLines){intlineIndex=0;for(introw=0;row();row++){intcols=(row);for(intcol=0;colcols;col++){vectorstringnewLine;(newLine);for(intnewcol=0;newcolcols;newcol++){(row,(col+newcol)%cols),lineIndex);}lineIndex++;}}}//获取所有行LinesShift::getLines(void){returnlineShift;}//获取某一行vectorstringShift::getLine(intlineIndex){return(lineIndex);}//获取某一行中某一位置的字符串stringShift::getString(intlineIndex,intstringIndex){return(lineIndex,stringIndex);}//获取某一行中某一个字符串中的某一位置的字符charShift::getChar(intlineIndex,intstringIndex,intcharIndex){return(lineIndex,stringIndex,charIndex);}//获取行数intShift::getLineNum(void){return();}//获取某一行的字符串个数intShift::getStringNum(intlineIndex){return(lineIndex);}排序类//实现按首字母排序voidFirstAlphaSort::alphaSort(ShiftsrcShiftLines){shiftLines=srcShiftLines;//将传进得Shift对象赋值给成员变量vectorcharfirstChar;for(introw=0;row();row++){(row,0,0));//获取首字母}//首字母排序for(intloop=0;loop();loop++){charmin='z';introwIndex=0;for(introw=0;row();row++){if(min=firstChar[row]&&''!=firstChar[row]){min=firstChar[row];rowIndex=row;}}(rowIndex);firstChar[rowIndex]='';//将找到的最小的字母置为‘’,以便在下一次查找时不再保留}}//首字母排序vectorintFirstAlphaSort::getCharSort(){returncharSort;}//获取行数intFirstAlphaSort::getLineNum(void){return();}//按行的序号,将各字符串合并成一个字符串,然后获取一行//lineIndex为行序号stringFirstAlphaSort::getLineAsString(intlineIndex){stringlineString;for(intstrCount=0;strCount(lineIndex);strCount++){lineString+=(lineIndex,strCount)+;}lineString+=\0;returnlineString;}输出类//按字母表顺序输出voidOutput::print(FirstAlphaSortsortLines){for(introw=0;row();row++){cout()[row])endl;}coutendl;}4、实验的例程(1)主程序、子程序运行结果(2)抽象收据类型5、总结通过本次实验,首先对软件体系结构有了更真切的了解,尤其是对管道过滤器结构,主程序、子程序结构,抽象数据类型结构,隐式调用这四种结构的理解更加透彻了。同时还对KWIC有个一个认知的过程。在实现的上述两种结构的过程中,对增强了数据结构的掌握,以及对面向对象概念的进一步理解。编程时,遇到了各种大大小小的问题,尤其是数据结构定义方面的,深刻体会到了数据结构的重要性,同时发现了自己编写的代码移植性以及编码风格都不是很好,希望老师给予指点。1选择的实现结构为主程序、子程序2选择的实现结构为抽象数据类型

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功