大学计算机实验总结,KWIC实验总结报告(大学计算机C++).doc

软件体系结构实验报告书 周新: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

为了方便,把代码放在Word里面了,每次上机实验的题目代码都在。 第一次: 对如下多项式编写类定义: + + +…+ 其中,n为多项式的次数。完成如下功能: (1) 可存储任意大的多项式(提示:可用动态数组实现)。 (2) 定义构造函数、析构函数、拷贝构造函数。 (3) 包含一个static成员存储定义的多项式的数量。 (4) 定义一个成员函数输出多项式。(可参照-x^4-6x^3+5格式输出) (5) 定义一个成员函数计算多项式的值。 (6) 写main函数测试类的功能。 (7) 采用多文件实现。 考虑:哪些成员函数可以声明为const. 第二次: (8) 重载“+”运算符,实现两个多项式相加。 (9) 重载“-”运算符,实现两个多项式相减。 (10) 重载“*”运算符,实现两个多项式相乘。 (11) 重载“=”运算符,实现两个多项式的赋值运算。 考虑:把其中某个运算符重载为友元函数。 第三次: C++的一般编译器都定义和封装了字符串功能,请模仿定义string类的实现,可以实现并支持如下功能: (1)string s = “吉林大学”; (2)string t = s; (3)string m; m = t; (4)m.legnth() 函数测量字符串的长度 (5)m.cat(string const &)连接字符串 第四次: 我公司为仪器生产企业,目前生产摄像机和行车记录仪两种产品,分别销售给用户。 摄像机包含摄像、图像质量设定、编码算法等属性。 将摄像机增加相应芯片(具有操作菜单、自动拍摄、车速传感器、源代码等功能)后,形成一个行车记录仪。 要求: 设计摄像机类,并请根据下列不同的功能要求,采用不同的继承方式,设计行车记录仪类,并添加测试代码,体验不同继承方式下的成员访问属性。(类设计时可根据需要自行添加数据成员和其他成员函数。) (1) 行车记录仪的芯片可以使用摄像机的摄像、图像质量设定功能。 行车记录仪用户可以操作行车记录仪的操作菜单和摄像机的摄像功能。 (2)行车记录仪的芯片可以使用摄像机的拍摄、图像质量设定功能。 行车记录仪用户仅仅可以操作行车记录仪的操作菜单。 (3) 行车记录仪的芯片可以使用摄像机的拍摄、图像质量设定功能。 行车记录仪用户仅仅可以操作行车记录仪的操作菜单 同时其他公司购买行车记录仪,因该公司也用于销售,不得泄露其全部内容 课后: (1)采用组合方式设计行车记录仪类,增加相应测试代码,体验继承和组合的关系。 (2)分别为继承和组合方式下为各类添加构造函数、析构函数,增加相应测试代码,体验对象的初始化和构造顺序。 (3)将摄像机类和行车记录仪类功能相近的函数(如拍摄、编码等功能函数)设为同名函数,增加相应测试代码,体验同名函数覆盖。 (4)为我公司建立一个多态的产品类层次结构,使用抽象类,测试时,创建一个基类指针的容器,通过基类指针调用虚函数,体验多态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值