软件体系结构实验报告书 周新:2008082207
PAGE 2
软件体系结构
上机实验报告书
中国石油大学(北京)信息学院
计算机科学与技术系
制 订 人:周新
学 号:2008082207
指导教师:朱雪峰 博士
2011年10月27日
1、课程实验目的
通过KWIC(Key Word in Context)检索系统,对软件体系结构有更加深入的了解和认识。通过运用几种体系结构,熟悉常见的软件体系结构,并对这几种结构有进一步了解。
2、任务概述
用管道过滤器,主程序、子程序,抽象数据类型,隐式调用这四种结构来分别实现KWIC检索系统。
3、实现方法
用C++主要实现了两种结构:主程序、子程序结构,抽象数据类型。
(1)KWIC1工程的入口函数
int _tmain(int argc, _TCHAR* argv[])
{
//界面,结构选择
cout<
char filename[30];
cin>>filename;
cout<
int choose=0;
cin>>choose;
if(1==choose)//主程序和子程序
{
MainSubroutine mainSub;
vector > lines=mainSub.readLines(filename);
vector lineIndex=mainSub.shiftString(lines);
lineIndex=mainSub.firstAlphaSort(lineIndex,lines);
mainSub.outPut(lineIndex,lines);
}
else//抽象收据类型
{
Lines *lines=new Lines;
Input input;
Shift *shift=new Shift;
FirstAlphaSort alphaSort;
Output output;
input.readLines(filename,*lines);
shift->circularShift(*lines);
alphaSort.alphaSort(*shift);
output.print(alphaSort);
delete shift;
delete lines;
}
return 0;
}
(2)主程序、子程序结构实现类
//从文件中按行读取
vector > MainSubroutine::readLines(char* filename)
{
vector > dst;
ifstream infile(filename,ios::in);
if(!infile)
{
cout<
exit(0);
}
char temp[100]="";//存储从文件中读取的行的临时变量
//按行读取
while(infile.getline(temp,100))
{
int k=0,j=0;
vector line;
line.swap(vector());
char s[20]="";//存储从行中取字符串的临时变量
while(temp[k]!=0)
{
//每个单词的截取条件为下一个字符为空格或者为行的末尾
if((temp[k+1]==' '||temp[k+1]==0)&&temp[k]!=' ')
{
s[j]=temp[k];
s[j+1]='\0';
string ss=s;
line.push_back(ss);
j=0;
}
else if(temp[k]==' ')
{
j=0;
}
else
{
s[j]=temp[k];
j++;
}
k++;
}
dst.push_back(line);//将从文件中中读出的行加入到dst中
}
infile.close();
for(int i=0;i
{
f