当前位置:文档之家› 《面向对象的编程技术》课程设计实验报告

《面向对象的编程技术》课程设计实验报告

《面向对象的编程技术》课程设计实验报告
《面向对象的编程技术》课程设计实验报告

《面向对象的编程技术》课程设计实验报告

系计算机科学与技术

班级计114

姓名石险峰

学号119074122

指导教师胡增涛

计算机学院

2012年12月

一.应用程序的名称

设计:“坦克大战”

(1)参考(《PC游戏编程(窥门篇)》谭文洪著)中的“坦克大战”(TankWar工程),并对其进行完善、扩充,程序要能看出专业水平和商业化产品的效果。

(2)要求:修改案例中“子弹可以穿透石头墙”的错误;增加上帝模式(无敌);修改一种敌军坦克,使之威力更大(要求坦克画面采用学生自己的头像)(需要重新编译资源包;之所以“改”而不是“增”,是因为同学们无法修改地图编辑器,另一个办法是在程序运行后动态加入);回答“坦克大战”指导书.doc(或pdf)和TankWar剖析.doc(或pdf)中带有蓝色《….?》标记的问题。

二.应用程序的设计目的

面向对象的编程技术》课程设计是一门独立开设的实验课程,旨在进一步强化学生对类、封装、继承、多态等面向对象基本概念的理解和OOP(面向对象编程)实际动手能力,并进一步拓展到OOD(面向对象设计)原则、技巧和初步的OOA(面向对象分析)方法。

在中国,电子游戏曾一度被大家斥为“电子海洛因”。然而电子游戏在青年学生中大受欢迎却又是一个不争的事实。正如水能载舟,亦能覆舟一样,任何事物都有其两面性。与其千方百计地封堵,还不如让同学们从技术的角度来研究它,这样既可以掌握复杂系统的设计技巧,也可以破除对电子游戏的神秘感。我相信,一个人如果自己能制作游戏,如果能清楚地知道那个绚丽多彩的虚拟世界背后无非就是一些类、变量、函数的话,他就不可能再沉迷于打游戏———与一堆对象、内存变量和函数较劲。同时,从技术上讲,游戏程序的开发异常复杂,能充分体现面向对象的拟人化思想和面向对象设计技巧。通过游戏程序的制作,可以帮助学生真正掌握面向对象程序设计的精髓。

三.应用程序简介

设计目的:C++电脑游戏开发:侧重利用面向对象的拟人化思想解决复杂问题和OOD技巧;

运行环境:

1.本设计采用Microsoft Visual C++6.0编译,并能够在WIN98,WIN2000下运行

2.游戏基于Windows Game Engine(WGE游戏引擎,添翼虎科技)(没提供源程序,不过不用担心,你可以把它看成是利用DirectX快速处理图片、声音、键鼠的类库) ,该引擎需要DirectX7.0 SDK支持(仅有Runtime运行库不够,必须包含开发语言需要的Header&Libs 头文件和库文件)

功能介绍:

○1修改案例中“子弹可以穿透石头墙”而且增加了敌军坦克子弹不能穿过

箱子:无论是敌军坦克还是玩家坦克的子弹都不能穿过石头,敌军坦克子弹不能透过箱子,一旦它们相碰撞子弹会自动销毁。

○2增加上帝模式(无敌):玩家1通过按F1键变为上帝模式,再按一次,还原,一旦玩家进入上帝模式,敌军坦克的子弹对玩家坦克没任何损伤。

○3修改火坦克的性能,使之威力更大,并且将该敌军坦克改为其他图像,通过更改火坦克的一些属性,使火坦克的子弹射程、威力,坦克的移动速

度、硬度(血量),都有了明显的增加。

2、基本内容:坦克大战主要是玩家坦克与敌军坦克之间的斗争,在许多敌军坦克的包围下,玩家坦克通过消灭一部分坦克,打开通完邪恶源的通道,然后摧毁邪恶源获得闯关的胜利。在这个过程中,玩家可以摧毁木箱,在木箱中获得钱、经验、血量,通过这些使得玩家坦克的威力和防御更强,为最终的胜利获得条件。在玩家坦克消灭敌军坦克时,将获得经验,当经验达到一定程度时,玩家坦克的性能将会变得更强,可以从青铜坦克变为白银、黄金坦克,大致情况如下:

剧情:“玩家坦克”打掉“邪恶源”即可过关。(共3关,可循环玩)

游戏规则:

1)玩家坦克

移动:4个方向箭头,和W、S、A、D,“机动力”由升级次数决定

型号:“青铜战士”,“白银战士”,“黄金战士”

防护:由“经验值(打掉木箱,捡)”决定“最大防护值”,捡恢复物品

可提高当前防护值

武器:左ctrl和Enter开火,只有“光弹”(匀速),“射程”由型号决定,“破

坏力”由“金钱数(捡)”决定

2)敌军坦克

总之有3种:双导弹、单导弹、火坦克,性能各有所长。

3)“邪恶源”

防护值很大

4)木箱

5)奖励物品

恢复、金钱、升级

6)背景地图

草地、泥地、白石头、黑石头、白石高地(地形障碍)

3、主要技术

○1、WGE游戏引擎的使用—坦克大战(TankWar)的实现

○2、C++面向对象技术

4、运行环境

○1.本设计采用Microsoft Visual C++6.0编译,并能够在WIN98,WIN2000,WINXP,WIN7下运行

○2.游戏基于Windows Game Engine(WGE游戏引擎,添翼虎科技)(你可以把

它看成是利用DirectX快速处理图片、声音、键鼠的类库) ,该引擎需要DirectX7.0 SDK支持(仅有Runtime运行库不够,必须包含开发语言需要的Header&Libs 头文件和库文件)

应用程序的总体设计结构图

游戏开始

进入游戏

无敌模式

受到火坦克攻击后,上下血量不减爆炸模式

敌军全灭。

跳关模式

直接进入下一关任务完成

进入下一关:

修改坦克图片,并使其中一种坦克威力增强。换子弹模式:

在修改子弹穿墙错误中,我也产生过一些问题,例如:子弹是怎样来实现和

改变自己发射的方向的。通过对TEnemyTank类中Move函数的观察,我有了一些认识:敌军坦克的移动和方向的改变和子弹应该是类似的。

我对TBullet类中的Move函数进行了修改很增添:

///判断是否穿墙////// 、、、、直接对子弹四个方向上的边角修改,使子弹消失。

if(g_world.ObstacleMap(rc.left/OBSTACLE_WIDTH,rc.top/OBSTACLE_HEIGHT))

Dead();

if(g_world.ObstacleMap(rc.right/OBSTACLE_WIDTH,rc.top/OBSTACLE_HEIGHT))

Dead();

if(g_world.ObstacleMap(rc.left/OBSTACLE_WIDTH,rc.bottom/OBSTACLE_HEIGHT))

Dead();

if(g_world.ObstacleMap(rc.right/OBSTACLE_WIDTH,rc.bottom/OBSTACLE_HEIGHT))

Dead();

if(g_world.ObstacleMap(rc.right/OBSTACLE_WIDTH,rc.top/OBSTACLE_HEIGHT))

Dead();

if(g_world.ObstacleMap(rc.right/OBSTACLE_WIDTH,rc.bottom/OBSTACLE_HEIGHT))

Dead();

if(g_world.ObstacleMap(rc.left/OBSTACLE_WIDTH,rc.top/OBSTACLE_HEIGHT))

Dead();

if(g_world.ObstacleMap(rc.left/OBSTACLE_WIDTH,rc.bottom/OBSTACLE_HEIGHT))

Dead();

这些代码是在TBullet类中的

//取得碰撞矩形

void TBullet::GetRect(RECT& rc)函数中添加的,在判断子弹能否穿墙与敌军坦克是否碰到障碍物有一点区别,坦克在碰到障碍物时,应该设置不能继续移动的效果,而子弹在碰到物体后得效果不应该是不能继续移动而是立刻消失,所以当有与地形障碍相碰时,全部改为Dead(),在作为判断子弹是否与障碍物碰撞的代码,这样子弹不能穿墙的效果就成功实现了。

///增加上帝模式(无敌)。///我是通过增加按钮来改变玩家的模式:

我首先在TTank//TPlayerTank

// 玩家坦克类中定义了一个私有成员private: static int N;根据N%2的值是1还是0来判断玩家是否设置为无敌状态了,我设置了F1为玩家无敌状态的快捷键,在Move里增加以下代码

//玩家坦克移动

int TPlayerTank::N=0;//给上帝赋初始值

void TPlayerTank::Move()

{

if(WGE_Input.Key()[DIK_F1])

N++;//增加上帝模式

在判断子弹与玩家坦克碰撞是否有效里加:

//增加无敌模式//

if(N%2==1)

return TRUE;

else if(N%2==0)

m_nShield-=pBullet->m_nShield ;

return TRUE;

但也出现一个问题,在按F1时有时候会发现上帝模式没有出现,有时需要多按几次。

///修改图片///这里比较简单,直接自己做一个图片,四个图层,四个方向的,用psd格式,再用PSD2EPG.EXE转换一个epg格式,放入data文件里替换某一

种坦克,将图片名字改成相同的,再将工具三个全放入data里,用makeres.bat 打包即可

////增加爆炸模式,所有坦克全灭//////

本来想法是想在地图上读取坦克,然后灭了,后来觉得利用坦克链表比较简单就直接使用了。

在敌军坦克移动里增加爆炸代码,使敌军所有坦克全灭

敌军坦克移动

void TEnemyTank::Move()

{

if(WGE_Input.Key()[DIK_F2])//增加爆炸模式,所有坦克全灭

{

TLinkNode * pNode=g_world.EnemyTankLink().m_pHeader;

while(pNode) //还不到链尾

{

pNode =pNode->m_pNext;

m_nShield=-1;

if(m_nShield < 0)

{

Dead(); //玩家增加经验值

g_world.Player(0)->m_nExper += 10 + m_nType * 10;

//加点爆炸效果

g_world.ExplodeLink().Add(NEW TExplode(m_nX,m_nY,EXPLODE_TANK));

}

}

}

/////增加正向跳关模式////这个比较简单,只需在障碍物文件加入代码

if(WGE_Input.Key()[DIK_F3])//跳关模式

{

g_game_status = GAME_STAGECLEAR;

}

/////子弹转换////

设置F4F5F6F7分别为光弹火弹双导弹单导弹,本来我以为仅仅只需要改变调用时的函数就可以了,后来做的时候发现做这个有点难。这里简略说一下

现在玩家坦克里定义,int bullet_type;//自定义玩家子弹类型

然后对按键处理if( WGE_Input.Key()[DIK_F4])

bullet_type=1;

if( WGE_Input.Key()[DIK_F5])

bullet_type=2;

if( WGE_Input.Key()[DIK_F6])

bullet_type=3;

if( WGE_Input.Key()[DIK_F7])

bullet_type=4;

enum BULLET_TYPE p=LIGHT;

switch( bullet_type)

{

case 1: p=LIGHT;break;

case 2: p=FIRE;break;

case 3: p=DMISSILE;break;

case 4: p=SMISSILE;break;

}

g_world.BulletLink().Add(NEW

TBullet(m_nX,m_nY,m_dir,bullet_type,10+m_nMoney/300,100+m_nType*25));

上式调用函数为自己改的子弹构造函数

TBullet(int x,int y,DIRECTION dir1,int p1,int nShield=10,int nFireRange1=100);

构造函数为

TBullet::TBullet(int x,int y,DIRECTION dir1,int p1,int nShield,int nFireRange1)

:TSprite(x,y,nShield,0,CLASS_TBULLET),bullet_type(p1)

{

p=LIGHT;

switch( bullet_type)

{

case 1: p=LIGHT;break;

case 2: p=FIRE;nFireRange1=100;break;

case 3:

p=DMISSILE;nFireRange1=250;break;

case 4:

p=SMISSILE;nFireRange1=250;break;}

m_nType=p;

SetDelayTimer(50);

m_dir = dir1;

m_nFireRange = nFireRange1;

int valume,pan; //音量和均衡

int w,h;

//声源与玩家的距离

w = x - g_world.Player(0)->GetX();

h = y - g_world.Player(0)->GetY();

//计算音效的音量及均衡

valume = MAX(ABS(w),ABS(h)) * (-10000/800);

pan = w * (10000/400);

/////////////////////////////////////////////////

//跟据类型设置速度

switch(p)

{

case LIGHT:

//玩家的子弹,总会听到声音的

m_nSpeed = 15;

//if(valume>-10000) //小于最小音量,没必要播放

m_sound[2].Play(-1000,pan);

break;

case FIRE:

{ m_nSpeed = 10;

m_sound[1].Play(-1000,pan);

break;}

case DMISSILE:

{ m_nSpeed = 0; //导弹开始速度为0,然后利用加速度加速

m_sound[0].Play(-1000,pan);

m_sound[0].Play(valume,pan);

break;}

case SMISSILE:

m_nSpeed = 0;

m_sound[0].Play(-1000,pan);

break;

}

}

上面也改变了子弹音量问题

后面对子弹碰撞修改switch(m_nType)

{

case FIRE: //火弹,由火坦克发射的炮弹

//计算出当前动画帧

m_nCurrentFrame =

m_dir*3+(m_nCurrentFrame+1)%3;

if(p==FIRE)

{

pNode=g_world.EnemyTankLink().m_pHeader;

while(pNode) //还不到链尾

{

//打中了吗?

if(pNode->m_pObject->HitBy(this))

//Ok,Mission completed

Dead();

//取得下一辆坦克

pNode = pNode->m_pNext;

}

pNode =

g_world.ObstacleLink().m_pHeader ;

while(pNode)

{

if(pNode->m_pObject->HitBy(this))

Dead();

pNode = pNode->m_pNext;

}

if(m_nFireRange<0)

{

//太远了,没办法

Dead();

}

if(IsDead())

g_world.ExplodeLink().Add(NEW TExplode(m_nX,m_nY,EXPLODE_FIRE));

break;

}

//超出射程范围,发出死亡信息

if(m_nFireRange<0)

{

Dead();

}

//击中玩家了吗?(即使死了也不让你好过)

if(g_world.Player(0)->HitBy(this))

{

//击中目标,任务完成

Dead();

}

//已经死亡,来个爆炸效果

if(IsDead())

g_world.ExplodeLink().Add(NEW TExplode(m_nX,m_nY,EXPLODE_FIRE));

break;

case DMISSILE: //双导弹,敌军的导弹

m_nSpeed +=1; //以加速为1的速度运动

m_nCurrentFrame = m_dir; //计算当前动画的帧

if(p==DMISSILE)

{

pNode=g_world.EnemyTankLink().m_pHeader;

while(pNode) //还不到链尾

{

//打中了吗?

if(pNode->m_pObject->HitBy(this))

//Ok,Mission completed

Dead();

//取得下一辆坦克

pNode = pNode->m_pNext;

}

pNode =

g_world.ObstacleLink().m_pHeader ;

while(pNode)

{

if(pNode->m_pObject->HitBy(this))

Dead();

pNode = pNode->m_pNext;

}

if(m_nFireRange<0)

{

//太远了,没办法

Dead();

}

if(IsDead())

if(m_dir==DIR_RIGHT||m_dir==DIR_LEFT)

{

g_world.ExplodeLink().Add(NEW

TExplode(m_nX,m_nY+6,EXPLODE_MISSILE));

g_world.ExplodeLink().Add(NEW

TExplode(m_nX,m_nY-6,EXPLODE_MISSILE));

}else

{

g_world.ExplodeLink().Add(NEW

TExplode(m_nX+6,m_nY,EXPLODE_MISSILE));

g_world.ExplodeLink().Add(NEW

TExplode(m_nX-6,m_nY,EXPLODE_MISSILE));

}

break;

}

//超出射程范围,发出死亡信息

if(m_nFireRange<0)

Dead();

//击中玩家?

if(g_world.Player(0)->HitBy(this))

Dead();

//死了

if(IsDead())

{

/////////////////////////////////////////////////////

//双导弹当然是两个爆炸效果

if(m_dir==DIR_RIGHT||m_dir==DIR_LEFT)

{

g_world.ExplodeLink().Add(NEW

TExplode(m_nX,m_nY+6,EXPLODE_MISSILE));

g_world.ExplodeLink().Add(NEW

TExplode(m_nX,m_nY-6,EXPLODE_MISSILE));

}else

{

g_world.ExplodeLink().Add(NEW

TExplode(m_nX+6,m_nY,EXPLODE_MISSILE));

g_world.ExplodeLink().Add(NEW

TExplode(m_nX-6,m_nY,EXPLODE_MISSILE));

}

}

break;

case SMISSILE: //单导弹,不用注释了吧

m_nSpeed ++;

m_nCurrentFrame = m_dir;

if(p==SMISSILE)

{

pNode=g_world.EnemyTankLink().m_pHeader;

while(pNode) //还不到链尾

{

//打中了吗?

if(pNode->m_pObject->HitBy(this))

//Ok,Mission completed

Dead();

//取得下一辆坦克

pNode = pNode->m_pNext;

}

pNode =

g_world.ObstacleLink().m_pHeader ;

while(pNode)

{

if(pNode->m_pObject->HitBy(this))

Dead();

pNode = pNode->m_pNext;

}

if(m_nFireRange<0)

{

//太远了,没办法

Dead();

}

if(IsDead())

g_world.ExplodeLink().Add(NEW TExplode(m_nX,m_nY,EXPLODE_FIRE));

break;

}

if(m_nFireRange<0)

if(g_world.Player(0)->HitBy(this))

Dead();

if(IsDead())

g_world.ExplodeLink().Add(NEW TExplode(m_nX,m_nY,EXPLODE_MISSILE));

break;

case LIGHT: //我们的武器:)

m_nCurrentFrame = 0;

////////////////////////////////////////////////////

//计算是否打中在链表中的敌军坦克

//取得链表中的第一辆坦克

pNode=g_world.EnemyTankLink().m_pHeader;

while(pNode) //还不到链尾

{

//打中了吗?

if(pNode->m_pObject->HitBy(this))

//Ok,Mission completed

Dead();

//取得下一辆坦克

pNode = pNode->m_pNext;

}

////////////////////////////////////////////////////

//计算是否打中障碍物

pNode =

g_world.ObstacleLink().m_pHeader ;

while(pNode)

{

if(pNode->m_pObject->HitBy(this))

Dead();

pNode = pNode->m_pNext;

}

if(m_nFireRange<0)

{

//太远了,没办法

}

//???,为什么没有爆炸效果?

break;

default:

TRACE(0,"Invalid bullet id");

break;

}

在对障碍物里对子弹碰撞是否有效判断

if(pBullet->m_nType == LIGHT||pBullet->m_nType == FIRE||pBullet->m_nType ==DMISSILE||pBullet->m_nType ==SMISSILE)

{

m_nHardiness -=

pBullet->m_nShield ;

return TRUE;

}

在敌军坦克里对子弹碰撞有效判断

if( WGE_Input.Key()[DIK_F5])

bullet_type=2;

if( WGE_Input.Key()[DIK_F6])

bullet_type=3;

if( WGE_Input.Key()[DIK_F7])

bullet_type=4;

if(pBullet->m_nType == LIGHT||(pBullet->m_nType ==

FIRE&&bullet_type==2)||(pBullet->m_nType ==

DMISSILE&&bullet_type==3)||(pBullet->m_nType

==SMISSILE&&bullet_type==4))

{

//是光弹,防护减去光弹的力量

m_nShield -=

pBullet->m_nShield ;

return TRUE;

上面只是简略讲的,还有不少细节问题没写。

在做这这时也遇到了问题,我发现按键处理只能在函数move里,其他地方都会无法处理,所以改了后的敌军坦克也会击中障碍物,但不会击中其他敌军坦克。函数与函数之间数据共享要自己增加数据成员。

解答问题

○1s t a t i c i n t x;《思考一下静态变量的作用?》

此处静态变量主要是为了记录坦克移动的水平坐标,储存此时坦克在水平的位置。设为静态变量则其初始值为0,使坦克的初始位置位于水平坐标为0的位置,同时在坦克移动时,背景图片也随着坦克的移动而移动,而且具有全局性,当再

次调用时水平坐标不会发生变化,能很好的记录坦克的水平位置;

○2g_world.Move();//《不马上返回菜单,而是继续动,去掉此行怎样?》

g_world是Tworld建立的一个对象,利用g_world调用Tworld类的Move函数,使坦克大战这个世界“活”的精灵进行移动。如果去掉这一行的话,当游戏结束的时候,即玩家坦克死亡时,游戏不会马上停止,里面“活”的精灵还是像刚才一样运动;

○3static DWORD dwTick ;//《定时器用法。静态变量有何作用?

此静态变量主要是存储GetTickCount()这个函数所获得的数据,也就是游戏进行到当前消耗的时间。定义为全局变量主要是因为其所在的函数是一个循环过程,当游戏进行的时间没有达到所规定的时间时,函数继续被调用,将避免了多次定义且多次定义后的值将会改变,不能起到记录时间的作用,定义为静态变量很好的避免了这些问题,在初次定义时,初始值为0,且具有全局性,再次被调用是还是原来记录的时间;

○4C L A S S_T Y P E m_n C l a s s T y p e;//对象类型《枚举型,在最顶层父类中记录最底

层子类的类型不符合O O设计原则,只是为了便于管理和碰撞检测。如何改进?又会有何麻烦?》

可以再定义一个对象类,运用类的组合。这需要在每个TObject类派生的对象中用对象类声明一下当前对象的类型,这样的话比较符合面向对象设计规则。但是在检测物体之间碰撞时,需要对每个TObject类派生的对象的类型进行判断,而且在检测碰撞类型时,需要调用每个派生子类的对象类型,再根据判断后得结果,实现相应的变化。如果在抽象类TObject中定义对象的类型,这样避免在每个派生类中的定义,而且在判断碰撞类型时只需要用TObject类声明一个对象指针调用各子类的对象类型CLASS_TYPE,这就是代表各个子对象的类型,只需用一个类的成员函数进行碰撞对象的判断。

○5Virtual void Move()=0;virtual void Draw()=0;virtual void

GetRect(RECT& rect)=0;为何要用纯虚函数,在oo设计中有何价值?

在TObject类中将Move、Draw、GetRect声明为纯虚函数,主要是因为在Object 是个抽象类,没有实际的物体与其相符如果实现上述三个函数没有实际意义。纯虚函数在面向对象设计中有很重要的作用,通过声明虚函数从而实现了多态。对于一些函数,只能根据相应的对象才能实现这些函数的作用,而在抽象类中无法给定有意义的实现,这时就在基类中只说明函数原型用来规定整个类族的统一接口形式,这样派生类中的这几个函数就是对基类相应函数的覆盖,通过基类指针调用这些函数时,派生类的相应函数将被实际调用,避免产生的二义性的问题。

○6BOOL HitTest(TObject* object);//《为何又不用虚函数?注意是几何尺寸

上得碰撞检测:比较2矩形是否重合。请结合以上几个虚函数,阐述多态在oo 设计原则中的重要作用?》

将一个函数声明为虚函数主要是为了实现多态,而且这个函数在每个派生类中的实现不用,通过基类指针调用。但是BOOL HitTest(TObject *object)这个函数是判断对象与对象之间是否发生碰撞,而且这个的碰撞的检测是通过比较两个对象

课程设计实验报告

竭诚为您提供优质文档/双击可除 课程设计实验报告 篇一:课程设计(综合实验)报告格式 课程设计报告 (20XX--20XX年度第一学期) 名称:题目:院系:班级:学号:学生姓名:指导教师:设计周数: 成绩:日期:《软件设计与实践》课程设计计算机系软件设计与实践教学组 20XX年1月14 日 《软件设计与实践》课程设计 任务书 一、目的与要求 1.了解网络爬虫的架构和工作原理,实现网络爬虫的基本框架;2.开发平台采用JDK1.60eclipse集成开发环境。 二、主要内容 1.了解网络爬虫的构架,熟悉网页抓取的整个流程。

2.学习宽度优先和深度优先算法,实现宽度crawler应用程序的编写、调试和运行。 3.学习主题爬行及内容分析技术。 4.实现网络爬虫的基本框架。 三、进度计划 四、设计成果要求 1.要求按时按量完成所规定的实验内容; 2.界面设计要求友好、灵活、易操作、通用性强、具有实用性; 3.基本掌握所采用的开发平台。五、考核方式 平时成绩+验收+实验报告。 学生姓名:于兴隆指导教师:王蓝婧20XX年1月2日 一、课程设计的目的与要求1.目的: 1.1掌握crawler的工作原理及实现方法;1.2了解爬虫架构; 1.3熟悉网页抓取的整个流程及操作步骤; 1.4掌握宽度优先,深度优先算法,并实现宽度crawler 应用程序的编写、调试和运行;1.5掌握主题爬行及内容分析技术;1.6实现一个最基础的主题爬虫的过程;1.7理解pageRank算法,并编程验证;二、设计正文 网络爬虫研究与应用 [摘要]:本文通过对网络爬虫研究的逐步展开,讨论了爬虫的相关概念与技术,并通过实验设计了简单的基于宽度

北京理工大学汇编实验报告3

北京理工大学汇编实验报告3

本科实验报告实验名称:实验三字符串操作实验 课程名称: 课程设计Ⅰ(CPU与汇编)(实 验)实验时间: 第5-10周周五 下午 任课教师:聂青实验地点:10-102 实验教师:苏京霞 实验类型:?原理验证□综合设计□自主创新 学生姓名:罗逸雨 学号/班级:1120141208 05211401 组号:3 学院:信息与电子学院同组搭档: 专业:通信工程成绩:

CX 中值减 1,当 CX 中值减至 0 时,停止重复执行,继续执行下一条指令。当REP无条件重复前缀,重复串操作直到计数寄存器的内容 CX 为0为止。经常与REP 配合工作的字符串处理指令有MOVS、STOS和LODS。 当REPE/REPZ判断计数寄存器的内容 CX 是否为0或ZF=0(即比较的两个操作数不等),只要满足一个则重复执行结束,否则继续执行。可以与 REPE/REPZ 配合工作的串指令有CMPS和SCAS。 当REPNE/REPNZ判断计数寄存器的内容是否为0或ZF=1(即比较的两个操作数相等),只要满足一个则重复执行结束,否则继续执行。可以与 REPE/REPZ 配合工作的串指令有CMPS和SCAS。 3)字符串操作指令 lodsb、lodsw:把DS:SI指向的存储单元中的数据装入AL或AX,然后根据 DF 标志增减 SI; stosb、stosw:把AL或AX中的数据装入ES:DI指向的存储单元,然后根据 DF 标志增减 DI; movsb、movsw:把 DS:SI 指向的存储单元中的数据装入ES:DI指向的存储单元中,然后根据 DF标志分别增减SI和DI; scasb、scasw:把AL或AX 中的数据与ES:DI 指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI; cmpsb、cmpsw:把DS:SI 指向的存储单元中的数据与 ES:DI 指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI; rep:重复其后的串操作指令。重复前先判断 CX 是否为0,为0就结束重复,否则CX减1,重复其后的串操作指令。主要用在MOVS和STOS前。一般不用在 LODS 前。 上述指令涉及的寄存器:段寄存器DS和ES、变址寄存器SI和DI、累加器 AX、计数器CX。 涉及的标志位:DF、AF、CF、OF、PF、SF、ZF。 三、实验步骤 1) 编写程序,比较两个字符串BUF1和BUF2所含的字符是否相同,相同则AL 返回0,不同AL返回1,字符串长度要求自动获取,要求用字符串处理方法。提示:输入两个字符串之后,将串操作所必须的寄存器等参数设置好,然后使用串操作指令进行从头到尾的比较,两个字符串相等的条件是串长度相等且对应的字符相同。 2) 编写程序,设有一字符串存放在以BUF为首址的数据区中,其最后一字符‘$’作为结束标志,计算该字符串的长度并输出。提示:从串的第一个字符开始统计,直到遇到定义的字符串结束符为止,看看在这个过程中总共有多少个字符,

单片机电子时钟课程设计实验报告

单片机电子时钟课程设 计实验报告 Pleasure Group Office【T985AB-B866SYT-B182C-BS682T-STT18】

《单片机原理与应用》课程设计 总结报告 题目:单片机电子时钟(带秒表)的设计 设计人员:张保江江润洲 学号: 班级:自动化1211 指导老师:阮海容 目录 1.题目与主要功能要求 (2) 2.整体设计框图及整机概述 (3) 3.各硬件单元电路的设计、参数分析及原理说明 (3) 4.软件流程图和流程说明 (4) 5.总结设计及调试的体会 (10) 附录 1.图一:系统电路原理图 (11) 2.图二:系统电路 PCB (12) 3.表一:元器件清单 (13) 4.时钟程序源码 (14)

题目:单片机电子时钟的设计与实现 课程设计的目的和意义 课程设计的目的与意义在于让我们将理论与实践相结合。培养我们综合运用电子课程中的理论知识解决实际性问题的能力。让我们对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立完成某些单片机应用系统的开发和设计打下一个坚实的基础。 课程设计的基本任务 利用89C51单片机最小系统,综合应用单片机定时器、中断、数码显示、键盘输入等知识,设计一款单片机和简单外设控制的电子时钟。 主要功能要求 最基本要求 1)使用MCS-51单片机设计一个时钟。要求具有6位LED显示、3个按键输入。 2)完成硬件实物制作或使用Pruteus仿真(注意位驱动应能提供足够的电流)。 3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。开始计时时为000000,到235959后又变成000000。 4)使用3个键分别作为小时、分、秒的调校键。每按一次键,对应的显示值便加1。分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。在调校时均不向上一单位进位 (例如分加到59后变为00,但小时不发生改变)。 5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法,也不得使用其他时钟芯片。 6)设计八段数码管显示电路并编写驱动程序,输入并调试拆字程序和数码显示程序。7)掌握硬件和软件联合调试的方法。 8)完成系统硬件电路的设计和制作。 9)完成系统程序的设计。 10)完成整个系统的设计、调试和制作。

软件质量与测试课程设计实验报告

华中科技大学文华学院 《软件质量与测试》课程设计 软件工程专业07级3班 姓名:曹洪 学号全称:0101 时间:2010年11月12日

《软件质量与测试》课程设计 1、实验目的 掌握软件测试用例的设计 掌握软件缺陷报告的设计 掌握软件缺陷修正报告的设计 2、实验过程 程序preday的基本功能:输入有效的年、月、日,按[计算]按钮,画面输出显示前1天的年,月,日;能对日期非法输入的合理提示等。 程序代码的编写详见preday文件 黑盒软件测试用例的设计 2.2.1等价类划分法 程序的有效输入日期为1800年1月1日到2050年12月31日之间的有效日期。其中, 有效等价类为 1800年1月1日到2050年12月3日之间的日期,其中 年份为1800到2050之间的整数; 月份为1到12之间的整数; 当月份为1、3、5、7、8、10、12时,日为1到31之间的整数,当月份为4、6、9、11时,日为1到30之间的整数,当年份为闰年元份为2时,日为1到29之间的数值,否则为1到28之间的数值。 无效等价类: 1800年1月1日之前的日期; 2050年12月3日之后的日期; 1800年1月1日到2050年12月31日之间的日期,但是月份不为1到12之间的整数;或者当月份为1、3、5、7、8、10、12时,日不为1到31之间的整数,当月份为4、6、9、11时,日不为1到30之间的整数,当年份为闰年元份为2时,日为1到29之间的数值,否则为1到28之间的数值。 最简单的等价类划分直接以输入条件边界来划分,得到的等价类集合见下表,其中Y1-Y3,M1-M3,D1-D3分别是三个输入条件的相应的等价类的编号。 表1:preday问题的等价类划分 等价类年份月份日期 有效等价类 Y1:1800≤年份≤2500 M1:1≤月份≤12 D1:1≤日期≤31 无效等价类 Y2:年份<1800 M2:月份<1 D2:日期<1Y3年>205M3月>1D3日>3

vf课程设计实验报告模板

vf 课程设计实验报告模板 经济管理学院 学生信息管理系统的设计与实现 09年12 月28 日 、课程设计的目的和意义 当今,人类正在步入一个以智力资源的占有和配置,知识生产、分配和使用为最重要因素的知识经济时代,为了适应知识经济时代发展的需要,大力推动信息产业的发展,我们通过对学生信息管理系统的设计,来提高学生的操作能力,及对理论知识的实践能力,从而提高学生的基本素质,使其能更好的满足社会需求。 学生信息管理系统是一个简单实用的系统,它是学校进行学生管理的好帮手。 此软件功能齐全,设计合理,使用方便,适合各种学校对繁杂的学生信息进行统筹管理,具有严格的系统使用权限管理,具有完善的管理功能,强大的查询功能。它可以融入学校的信息管理系统中,不仅方便了学生信息各方面的管理,同时也为教师的管理带来了极大地便利。 我们进行本次课程设计的主要目的是通过上机实践操作,熟练掌握数据库的设 计、表单的设计、表单与数据库的连接、SQL语言的使用和了解它的功能:数据定 义、数据操纵、数据控制,以及简单VF程序的编写。基本实现学生信息的管理, 包括系统的登录、学生信息的录入、学生信息的浏览、学生信息的查询、学生信息的修改和学生信息的删除,并对Visual FoxPro6.0 的各种功能有进一步的了解,为我们更进一步深入的学习奠定基础,并在实践中提高我们的实际应用能力,为我们以后的学习和工作提供方便,使我们更容易融入当今社会,顺应知识经济发展的趋势。 - 1 -

、系统功能设计 通过该系统可以基本实现学生信息的管理,包括系统的登录、学生信息的录 入、学生信息的浏览、学生信息的查询、学生信息的修改和学生信息的删除。系统 功能模块如下图所示。 学生信息管理系统主界面 登录 管理 学学学学学 生生生生生 信信信信信 息息息息息 录查浏修删 入询览改除 三、系统设计内容及步骤 3.1创建项目管理文件 1.启动foxpro 系统,建一个项目管理器,命名为“学生管理”。 哑 目f ■ 也 电 岂同左 矣 氏H. 0 存 JI 蛋誤曾

汇编课程设计报告

四川大学计算机学院 学生实验报告 实验名称:汇编课程设计报告 指导教师:唐宁九 姓名:廖偲 学号:0943111209 班级:软件09级一班 日期:20101114

实验报告 班级______________姓名_______________学号_________ 一、实验一:DEBUG基本命令与数据传输指令 二、实验的目的和要求: ? 1.熟练掌握DEBUG的基本调试命令,能够使用DEBUG编写、调试汇编语言程序片段。 ? 2.在理解数据传输指令的基础上按照实验内容中指定的程序片段对程序进行调试和记录; 三、实验的环境: 1.硬件环境:cpu 2.26gHZ、内存2G、显存1G、64位总线笔记本电脑 2.软件环境:win7 32位操作系统、8086/8088指令集系统(在windows系统中)、masm的汇编工具。 四、源程序清单: ?MOV AL, 01H ?MOV SI, 0002H ?LEA SI, [SI] ?MOV BYTE PTR [SI], 80H ?LAHF ?XCHG AL, AH ?SAHF ?XCHG AH, [SI] ?SAHF 五、操作内容: 1.从cmd在debug下进入用A命令进行汇编 格式: A [地址] 功能:从键盘输入汇编程序, 并逐条地把汇编指令翻译成机器代码指令存入对应内存单元。如果不指定汇编地址, 则以CS:IP为地址 2. 反汇编命令U使用 格式: U [地址]/[地址范围] 功能: 将指定地址范围内的机器代码翻译成汇编源程序指令显示出来, 并同时显示地址及代码。 注意: 反汇编时一定确认指令的起始地址, 否则得不到正确的结果。 3.寄存器查看/编辑命令r或r寄存器名称 功能: 显示当前所有寄存器内容, 状态标志及将要执行的下一条指令的地址、代码和汇编指令形式。

(完整word版)数据结构课程设计实验报告

设计题目:一 单位员工通讯录管理系统 一、题目要求 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话、手机号、及电子邮箱。其功能包括通讯录链表的建立、员工通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出。二、概要设计 本程序通过建立通讯录链表,对员工信息进行记录,并建立一个系统的联系。 三、主要代码及分析 这里面关于链表的主要的操作有插入,查询,删除。则这里只列出这几项的主代码。 1、通过建立通讯录结构体,对信息进行存储,建立链表,建立信息之间 的联系。 typedef struct { }DataType;结构体来存储通讯录中的基本信息 typedef struct node { DataType data; /*结点的数据域*/ struct node *next; /*结点的指针域*/ }ListNode,*LinkList; 2、信息插入操作,将信息查到链表的后面。 void ListInsert(LinkList list){ //信息插入 ListNode *w; w=list->next; while(w->next!=NULL) { w=w->next; } ListNode *u=new ListNode; u->next=NULL; cout<<"员工编号:";cin>>u->data.num; cout<<"员工姓名:";cin>>u->https://www.doczj.com/doc/3b14244494.html,; cout<<"手机号码:";cin>>u->data.call; cout<<"员工邮箱:";cin>>u->data.email; cout<<"办公室电话号码:";cin>>u->data.phone; w->next=u;w=w->next; }

汇编语言-课程设计1

) 汇编语言课程实验报告 实验名称 课程设计1 实验环境 硬件平台:Intel Core i5-3210M 操作系统:DOSBox in Windows 软件工具:Turbo C , Debug, MASM 实验内容 《 将实验7中的Power idea公司的数据按照下图所示的格式在屏幕上显示出来。 实验步骤 1.要完成这个实验,首先我们需要编写三个子程序。第一个子程序是可以显示字符串到屏 幕的程序,其汇编代码如下: ;名称:show_str

;功能:在屏幕的指定位置,用指定颜色,显示一个用0结尾的字符串 ;参数:(dh)=行号,(dl)=列号(取值范围0~80),(cl)=颜色,ds:si:该字符串的首地址 ;返回:显示在屏幕上 ¥ show_str: push ax push cx push dx push es push si push di mov ax,0b800h - mov es,ax mov al,160 mul dh add dl,dl mov dh,0 add ax,dx mov di,ax mov ah,cl . show_str_x: mov cl,ds:[si] mov ch,0 jcxz show_str_f mov al,cl mov es:[di],ax inc si inc di 【 inc di jmp show_str_x show_str_f: pop di pop si pop es pop dx pop cx } pop ax ret 2.第二个程序是将word型数据转换为字符串,这样我们才能调用第一个程序将其打印出

过程控制系统课程设计报告报告实验报告

成都理工大学工程技术学院《过程控制系统课程设计实验报告》 名称:单容水箱液位过程控制 班级:2011级自动化过程控制方向 姓名: 学号:

目录 前言 一.过程控制概述 (2) 二.THJ-2型高级过程控制实验装置 (3) 三.系统组成与工作原理 (5) (一)外部组成 (5) (二)输入模块ICP-7033和ICP-7024模块 (5) (三)其它模块和功能 (8) 四.调试过程 (9) (一)P调节 (9) (二)PI调节 (10) (三)PID调节 (11) 五.心得体会 (13)

前言 现代高等教育对高校大学生的实际动手能力、创新能力以及专业技能等方面提出了很高的要求,工程实训中心的建设应紧紧围绕这一思想进行。 首先工程实训首先应面向学生主体群,建设一个有较宽适应面的基础训练基地。通过对基础训练设施的 集中投入,面向全校相关专业,形成一定的规模优势,建立科学规范的训练和管理方法,使训练对象获得机械、 电子基本生产过程和生产工艺的认识,并具备一定的实践动手能力。 其次,工程实训的内容应一定程度地体现技术发展的时代特征。为了适应现代化工业技术综合性和多学科交叉的特点,工程实训的内容应充分体现机与电结合、技术与非技术因素结合,贯穿计算机技术应用,以适应科学技术高速发展的要求。应以一定的专项投入,建设多层次的综合训练基地,使不同的训练对象在获得对现代工业生产方式认识的同时,熟悉综合技术内容,初步建立起“大工程”的意识,受到工业工程和环境保护方面的训练,并具备一定的实用技能。 第三,以创新训练计划为主线,依靠必要的软硬件环境,建设创新教育基地。以产品的设计、制造、控制乃至管理为载体,把对学生的创新意识和创新能力的培养,贯穿于问题的观测和判断、创造和评价、建模和设计、仿真和建造的整个过程中。

程序设计课程设计实验报告

《程序设计》课程设计姓名: 学号: 班级:软件工程14班 指导教师: 成绩:

1.消除类游戏 【问题描述】 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。 【基本要求】 现在给你一个n行m列的棋盘(1≤n,m≤30),棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。 请注意:一个棋子可能在某一行和某一列同时被消除。 输入数据格式: 输入的第一行包含两个整数n,m,用空格分隔,分别表示棋盘的行数和列数。接下来n行,每行m 个整数,用空格分隔,分别表示每一个方格中的棋子的颜色。颜色使用1至9编号。 输出数据格式: 输出n行,每行m个整数,相邻的整数之间使用一个空格分隔,表示经过一次消除后的棋盘。如果一个方格中的棋子被消除,则对应的方格输出0,否则输出棋子的颜色编号。 【测试数据】 为方便调试程序,可将输入数据先写入一个文本文件,然后从文件读取数据处理,这样可避免每次运行程序时都要从键盘输入数据。 测试数据一 输出说明: 棋盘中第4列的1和第4行的2可以被消除,其他的方格中的棋子均保留。 测试数据二 输出说明: 棋盘中所有的1以及最后一行的3可以被同时消除,其他的方格中的棋子均保留。 【功能实现】 #include #include<> usingnamespacestd;

{ intm,n,i,j; inttemp; cin>>n>>m; temp=m; m=n; n=temp; int*map=newint[m*n]; int*mark=newint[m*n]; int*tmap=map; int*tmark=mark; intdif=0; ount=0; } p rintf("请输入要输入数的个数\n"); s canf("%d",&n);/*输入要输入数的个数*/ f or(i=0;idata1[j+1].number)

计算机组成原理与大全实验报告

计算机组成原理与汇编课程设计 实验报告 字符统计.asm 2.斐波那契数(小于50).asm (29) 一、课程设计目标 通过课程设计使学生综合运用所学过的计算机原理与汇编知识,增强解决实际问题的能力,加深对所学知识的理解与掌握,提高软硬件开发水平,为今后打下基础。

课程设计的目的和要求: 1、使学生巩固和加强《计算机原理与汇编语言》课程的基本理论知识。 2、使学生掌握汇编语言程序设计的方法及编程技巧,正确编写程序。 3、使学生养成良好的编程习惯并掌握调试程序的基本方法。 4、使学生养成规范书写报告文档的能力,撰写课程设计总结报告。 5、通过查阅手册和文献资料,培养学生独立分析问题和解决问题的能力。 1 2 3 4 1 2 3 00001001 00100000 00001011 00110000 00001011

01000000 00000000 00000001 本实验设计机器指令程序如下: 4)这里做的是个加法运算,第一个加数已经存入到内存的0000 1010单元中, 第二个加数是需要手工输入的。在实验运行面板中点击“运行”按钮,选择 “输入”芯片,设置输入的数据后,双击连接“输入”芯片的单脉冲,这样 第二个加数就设置好了。 5)在实验运行面板中双击连续脉冲,模型机便开始工作,观察各个芯片的状态。 或者在模型机调试窗口中(如图2所示)点击“指令执行”选项卡,在模型 机调试窗口中点击“下一时钟”,模型机机执行到下一个时钟,点击“下一

微指令”,模型机机执行到下一个微指令,点击“下一指令”,模型机机执行到下一条指令。观察各个芯片的状态,思考模型机的运行原理。 四、课程设计的要求 1、根据题目内容,查阅资料。 2、编写课程设计预习报告。 3、编制程序及调试程序。 4、分析总结,写出课程设计报告,报告中应该包含程序功能与使用说明、程序功能 实现方法说明、如流程图与算法参数说明等内容,设计经验体会总结,源程序清 5 6 1 通 三、实验设计内容 读取文件代码段: MOV AX,DATAS MOV DS,AX ;置数据段寄存器 ; MOV DX,OFFSET FNAME MOV AX,3D00H ;读打开指定文件

【实验报告】大学物理实验课程设计实验报告

大学物理实验课程设计实验报告北方民族大学 大学物理实验(设计性实验) 实验报告 指导老师:王建明 姓名:张国生 学号:XX0233 学院:信息与计算科学学院 班级:05信计2班 重力加速度的测定 一、实验任务 精确测定银川地区的重力加速度 二、实验要求 测量结果的相对不确定度不超过5% 三、物理模型的建立及比较 初步确定有以下六种模型方案: 方法一、用打点计时器测量

所用仪器为:打点计时器、直尺、带钱夹的铁架台、纸带、夹子、重物、学生电源等. 利用自由落体原理使重物做自由落体运动.选择理想纸带,找出起始点0,数出时间为t的p点,用米尺测出op的距离为h,其中t=0.02秒×两点间隔数.由公式h=gt2/2得g=2h/t2,将所测代入即可求得g. 方法二、用滴水法测重力加速度 调节水龙头阀门,使水滴按相等时间滴下,用秒表测出n个(n取 50―100)水滴所用时间t,则每两水滴相隔时间为t′=t/n,用米尺测出水滴下落距离h,由公式h=gt′2/2可得g=2hn2/t2. 方法三、取半径为r的玻璃杯,内装适当的液体,固定在旋转台上.旋转台绕其对称轴以角速度ω匀速旋转,这时液体相对于玻璃杯的形状为旋转抛物面重力加速度的计算公式推导如下: 取液面上任一液元a,它距转轴为x,质量为m,受重力mg、弹力n.由动力学知: ncosα-mg=0(1) nsinα=mω2x(2) 两式相比得tgα=ω2x/g,又tgα=dy/dx,∴dy=ω2xdx/g, ∴y/x=ω2x/2g.∴g=ω2x2/2y. .将某点对于对称轴和垂直于对称轴最低点的直角坐标系的坐标x、y测出,将转台转速ω代入即可求得g.

软件项目管理课程设计实验报告精

软件项目管理课程设计报告 学院: 专业: 班级: 学号: 姓名: 指导教师: 时间:2013年 1月 目录 1、项目概述 (1) 2、工作任务 (Statement Of Work,SOW书 (1) (一整体要求 (1) (二系统逻辑模型 (2) (三系统功能描述 (3) (四应达到的技术指标和参数 .................................... 3 3、项目进度计划 .. (4) (一分解项目工作 (4) (二项目工作关系表 (5) (三项目甘特图 (6) (四网络进度计划图 (7) (五里程碑计划 ................................................ 9 4、项目规模成本估算 . (9)

(一分解项目工作 (9) (二项目规模估算表 (11) (三计算开发成本 (12) (四计算管理、质量成本 (12) (五直接成本 (12) (六计算间接成本 (12) (七计算总估算成本 (12) (八项目报价 ................................................. 13 5. 项目质量计划 .. (13) (一项目质量保证组织 (13) (二质量目标 (14) (三质量策略 (15) (四质量保证活动 (15) (五质量控制活动 (17) (六质量保证的报告途径 (17) (七记录的收集、维护和保存 ................................... 17 6、软件项目团队 . (17) (一团队组织及职责 (18) (二项目的沟通计划 ........................................... 19 7、软件项目配置管理计划 .. (19) 学校内部职工工资系统项目管理书 1、项目概述 假设学校共有教职工约 1000人, 10个行政部门和 8个系部。每个月 20日前各部门(包括系、部要将出勤情况上报人事处, 23日前人事处将出勤工资、奖金及扣款清单送财务处。财务处于每月月底将教职工的工资表做好并将数据送银行。每月初(3日前将工

个人信息管理系统毕业课程设计实验报告

(此文档为word格式,下载后您可任意编辑修改!) 山东交通学院 目录 1.系统分析 (2) 1.1系统需求分析 (2) 1.2项目规划 (2) 1.3系统功能结构分析 (3) 1.4设计目的分析 (3) 2.数据库系统设计 (4) 2.1数据表概要设计 (4) 2.2数据库逻辑结构设计 (4) 3.应用程序设计 (5) 3.1界面设置 (5) 3.2关键技术 (15) 4.系统安装 (20) 建立数据源 (20) 5.设计体会 (21) 参考文献 (22)

摘要 随着经济社会的发展,计算机已被应用到社会生活的各个领域。与此同时,互联网作为信息技术的通信桥梁连接着全球的计算机,而网站作为网络信息主要的表现形式而且还是互联网信息的主要承载者,在网络上表现出其及其重要的地位,并发挥着极其重要的作用。无论是在国内还是国外都得以迅速的发展和壮大,并被人们重视和关注。互联网已经彻底的改变了世界,互联网的世界里蕴藏着无限的可能,在这种情况下,各行各业及其个人、单位、工厂、企事业等等在网上构筑属于自己的网络信息平台,保护自己的网络资源并在互联网上开辟自己的市场和消费群体,以及构造自己的数字化世界和加强全球范围内不同地域的人们联系交流等等活动也就显的日益重要。于是各种各样的网站便如雨后春笋般地出现鱼龙混杂且良莠不齐。因此,个人信息的管理就显得尤为重要了。不仅可以更好的保护个人信息,对日常的使用也会提供很大的方便。关键词:个人信息管理系统;数据集;数据库;Visual C++6.0。 1.系统分析 1.1系统需求分析 在做本系统前,我对系统的需求做了如下分析: 1)登录权限:在登录权限的分析上我们规定必须凭借用户名和密码才可登陆,进行管理。 2)使用者功能:首先说明一下,我们的系统用户对象是个人。关于其本系统的功能,大致可分为日记管理,通讯录管理,备忘录管理,以及个人财务管理;日记管理,其中包括用户对日记编号,时间,地点,事件、人物的查询、

汇编器实验报告doc

汇编器实验报告 篇一:汇编实验报告 实验一(1)熟悉汇编语言程序调试环境及顺序程序设计 一、实验目的及要求: 1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。 2.学会使用EDIT、MASM、LINK、DEBUG等软件工具。 3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。 二、熟悉汇编语言程序调试环境 1.汇编语言源程序的建立 本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。设定源程序的文件名为ABC。 DATA SEGMENT BUFDB 23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FH CN EQU $-BUF DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: PUSH DS

XOR AX,AX PUSH AX MOVAX,DATA MOV DS,AX MOV BX,OFFSET BUF MOV CX,CN DEC CX MOV AL,[BX] INC BX LP:CMP AL,[BX] JBE NEXT MOV AL,[BX] NEXT: INC BX DEC CX JNZ LP MOV AH,4CH INT 21H CODE ENDS END START 键入以下命令: C:\>EDIT ABC.ASM 此时屏幕的显示状态如图1所示。

1 图1 用EDIT编辑ABC.ASM程序窗口 程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。 2.将源程序文件汇编成目标程序文件 一般情况下,MASM汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。 (2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。 (3)若程序中使用了宏指令,则汇编程序将展开宏指令。 源程序建立以后,在DOS状态下,采用宏汇编程序MASM 对源程序文件进行汇编,其操作过程如图2所示。 图2 MASM宏汇编程序工作窗口 汇编过程的错误分警告错误(Warning Errors)和严重错误(Severe Errors)两种。其中警告错误是指汇编程序认为的一般性错误;严重错误是指汇编程序认为无法进行正确汇编的错误,并给出错误的个数、错误的性质。这时,就要对错误进行分析,找出原因和问题,然后再调用屏幕编辑程序加以修改,修改以后再重新汇编,一直到汇编无错误为止。 3.用连接程序生成可执行程序文件

南邮课程设计实验报告

课程设计I报告 题目:课程设计 班级:44 姓名:范海霞 指导教师:黄双颖 职称: 成绩: 通达学院 2015 年 1 月 4 日

一:SPSS的安装和使用 在PC机上安装SPSS软件,打开软件: 基本统计分析功能包括描述统计和行列计算,还包括在基本分析中最受欢迎的常见统计功能,如汇总、计数、交叉分析、分类比较、描述性统计、因子分析、回归分析及聚类分析等等。具体如下: 1.数据访问、数据准备、数据管理与输出管理; 2.描述统计和探索分析:频数、描述、集中趋势和离散趋势分析、分布分析与查看、正态性检验与正态转换、均值的置信区间估计; 3.交叉表:计数;行、列和总计百分比;独立性检验;定类变量和定序变量的相关性测度; 4.二元统计:均值比较、T检验、单因素方差分析; 5.相关分析:双变量相关分析、偏相关分析、距离分析; 6.线性回归分析:自动线性建模、线性回归、Ordinal回归—PLUM、曲线估计; 7.非参数检验:单一样本检验、双重相关样本检验、K重相关样本检验、双重独立样本检验、K重独立样本检验; 8.多重响应分析:交叉表、频数表; 9.预测数值结果和区分群体:K-means聚类分析、分级聚类分析、两步聚类分析、快速聚类分析、因子分析、主成分分析、最近邻元素分析; 10. 判别分析; 11.尺度分析; 12. 报告:各种报告、记录摘要、图表功能(分类图表、条型图、线型图、面积图、高低图、箱线图、散点图、质量控制图、诊断和探测图等); 13.数据管理、数据转换与文件管理; 二.数据文件的处理 SPSS数据文件是一种结构性数据文件,由数据的结构和数据的内容两部分构成,也可以说由变量和观测两部分构成。定义一个变量至少要定义它的两个属性,即变量名和变量类型其他属性可以暂时采用系统默认值,待以后分析过程中如果有需要再对其进行设置。在spss数据编辑窗口中单击“变量视窗”标签,进入变量视窗界面,即可对变量的各个属性进行设置。 1.创建一个数据文件数据 (1)选择菜单【文件】→【新建】→【数据】新建一个数据文件,进入数据编辑窗口。窗口顶部标题为“PASW Statistics数据编辑器”。 (2)单击左下角【变量视窗】标签进入变量视图界面,根据试验的设计定义每个变量类型。

软件工程课程设计实验报告

重庆邮电大学 软 件 工 程 课程设计实验报告 ——网上选课系统 姓名:雷雷 学号:08500329 专业:计算机科学与技术 班级:0410801 指导老师:邹洋 教室:S3314 时间:2011-5-30?2011-6-3

一、实验题目:网上选课系统 主要功能描述:系统首先维护校内所有课程的信息;课程分为研究生、本科生;也可以分为必修、选修、辅修。用户以学号和密码登陆,系统显示用户以选的课程、用户有权选但未选的其他课程,并显示具体信息(如学分)。用户选择后,系统根据规则检查用户是否进行正确的选课(如时间冲突、跨专业选课等);如果错误提示用户改,否则修改选课数据库。最后系统应能够向管理员提供查询界面和各类报表,统计每门课的选课情况。 二、实验目的 软件工程课程设计是软件工程专业一个综合性的实践教学环节,其目的在于促进学生复习和巩固计算机软件设计知识,加深对软件设计方法、软件设计技术和设计思想的理解,并能运用所学软件设计知识和面向对象技术进行综合软件设计,提高学生的综合应用能力。通过这次课程设计,要掌握UML (统一建模语言),并能运用UML 在Rational Rose 中建模。 三、实验要求 1. 一人一组。 2. 熟悉Rose 开发环境。 3. 掌握UML 的基本模型元素(如角色、用例、类等)。 4. 熟悉UML ,主要了解UML 中的9 大图:Use case diagram(用例图)、Class diagram (类图)、Sequence diagram(序列图)、Collaboration diagram(协作图)、Statechart diagram(状态图)、Activity diagram(活动图)、Component diagram(组件图)、Deployment diagram(配置图)、datamodel diagram (数据模型图)。 5. 进行系统需求分析与系统功能模块设计,绘出系统详细的业务流程图和数据流程图, 建立完整的系统数据库的逻辑模型 6. 完成对系统的建模实现

计算机网络课程设计实验报告

中南大学课程设计报告 课程:计算机网络课程设计 题目:基于Winpcap的网络流量统计分析 指导教师:张伟 目录 第一章总体设计 一、实体类设计 --------P3 二、功能类设计 --------P3 三、界面设计 --------P3

第二章详细设计 一、实体类实现 --------P4 二、功能类实现 --------P4 三、界面实现 --------P5 第三章源代码清单及说明 一、CaptureUtil.java --------P7 二、MyPcapPacketHandler.java --------P9 三、PacketMatch.java --------P9 四、Windows.java --------P13 第四章运行结果 --------P19 第五章心得体会 --------P21 第一章总体设计 一、实体类设计 TCP、UPD、ICMP、ARP、广播数据包五个包的数据结构设计 二、功能类设计 (1)网卡获取 (2)包的抓捕

(3)包的处理 三、界面设计 (1)布局 (2)按钮功能连接 第二章第二章详细设计 一、实体类实现 TCP、UPD、ICMP、ARP、广播数据包五个包的数据结构设计。 本程序采用Java编写,基于win10pcap。Win10pcap是winpcap在win10系统上的适用版本。Java对于winpcap使用jnetpcap进行支持。对于TCP、UPD、ICMP、ARP、广播数据包五种类型的包,在jnetpcap的jar包中大部分已经封装好了相关的实体类型。对应如下:ARP 实体类:https://www.doczj.com/doc/3b14244494.html,work.Arp; UPD 实体类:https://www.doczj.com/doc/3b14244494.html,work.Icmp;

《汇编语言+微型计算机》课程设计实验报告

长江大学工程技术学院《汇编+微机》课程设计报告 ?? 数据采集系统的设计与调试 学生姓名:袁春云学号:200960720?序号:25 专业班级:计本60901 指导老师:李华贵许建国 报告日期: 2011 年9月10日 ???

一.课程设计题目:数据采集系统的设计与测试 利用《汇编语言+微型计算机》课程中所学的可编程接口芯片8253、8255A、ADC0809和微机内部的中断控制器8259A设计一个数据采集系统,并且编程与调试。 二.设计目的 1.通过本设计,使学生综合运用《微型计算机技术》、《汇编语言程序设计》以及电子技术等课程的内容,为以后从事计算机检测与控制奠定一定的基础。 2.主要掌握并行I/O接口芯片8253、8255A、ADC0809及中断控制芯片8259A等可编程器件的使用,掌握译码器74LS138的使用。 3.学会用汇编语言编写一个较完整的实用程序。 4.掌握微型计算机技术应用开发的全过程:分析需求、设计原理图、选用元器件、布线、编程、调试、撰写报告等步骤。 三.课程设计要求 1.功能要求 ①利用《汇编语言+微型计算机系统》课程中所学的可编程接口芯片8253、8255A、ADC0809和微机内部的中断控制器8259A(从保留的IRQ2或TRQ10端引入)设计一个数据采集系统、并且编程与调试。 ②用8253定时器定时10MS,每次定时10MS后启动一次模/数转换,要求对所接通道变化的模拟电压值进行采集。 ③每次模/数转换结束后,产生一次中断,在中断服务程序中,采集来的数字量被读入微处理器的累加器AL中,然后通过8255A输出到8个LED发光二极管显示。 2.设计所需器材与工具 ④微机原理与接口综合仿真实验平台。 ⑤可编程接口芯片8253、8255A、ADC0809和译码器芯片74LS138、74LS 245等。 ⑥可调电位器4.7KΩ一个。 ⑦其他逻辑器件、导线若干。 ⑧万用表、常用工具等。 四.设计思路 1. 4.7Ω电位器一端接+5V,一端接地,调节电位器得到变化的模拟电压,

c课程设计实验报告

c课程设计实验报 告

中南大学 本科生课程设计(实践)任务书、设计报告 (C++程序设计) 题目时钟控件 学生姓名 指导教师 学院交通运输工程学院 专业班级 学生学号 计算机基础教学实验中心 9月7日 《C++程序设计基础》课程设计任务书

对象:粉冶、信息、能源、交通工程实验2101学生时间: .6 2周(18~19周) 指导教师:王小玲 1.课程设计的任务、性质与目的 本课程设计是在学完《C++程序设计基础》课程后,进行的一项综合程序设计。在设计当中学生综合“面向对象程序设计与结构化程序设计”的思想方法和知识点,编制一个小型的应用程序系统。经过此设计进一步提高学生的动手能力。并能使学生清楚的知道开发一个管理应用程序的思想、方法和流程。 2.课程设计的配套教材及参考书 ●《C++程序设计》,铁道出版社,主编杨长兴刘卫国。 ●《C++程序设计实践教程》,铁道出版社,主编刘卫国杨长兴。 ●《Visual C++ 课程设计案例精编》,中国水力电力出版社,严华峰等编著。 3.课程设计的内容及要求 (1)自己任选一个题目进行开发(如画笔、游戏程序、练习打字软件等),要求利用MFC 工具操作实现。 (2)也可选一个应用程序管理系统课题(如:通讯录管理系统;产品入库查询系统;学生成绩管理;图书管理 等);

设计所需数据库及数据库中的数据表,建立表之间的关系。 设计所选课题的系统主封面(系统开发题目、作者、指导教师、日期)。 设计进入系统的各级口令(如系统管理员口令,用户级口令)。 设计系统的主菜单。要求具备下列基本功能: ●数据的浏览和查询 ●数据的统计 ●数据的各种报表 ●打印输出 ●帮助系统 多种形式的窗体设计(至少有查询窗体、输入窗体) 注意:开发的应用程序工作量应保证在2周时间完成,工作量不能太少或太多。能够2人合作,但必须将各自的分工明确。 4.写出设计论文 论文基本内容及撰写顺序要求: ●内容摘要 ●系统开发设计思想 ●系统功能及系统设计介绍 ●系统开发的体会

《软件工程学(UML)》课程设计实验报告

课程设计报告 课程设计名称:软件工程学(UML)课程设计课程设计时间:

课程设计报告(附页) 1.课程设计目的 利用UML 实现一个小型的信息系统的分析和设计。 2.课程设计题目描述和要求 2.1 系统名称:通用无纸化考试系统 2.2 需求分析 2.2.1功能需求分析 本系统主要用于学校内部考生考试使用,目标是实现考试效率的提高、工作量的 减少以及成本的降低,根据实际需要,系统所要实现的系统功能模块如下所示: 各模块要实现的功能说明如下: 1.管理员子系统 用户信息维护是指以系统管理员的身份通过验证后登入系统,并对管理员个人信息 以及教师用户的信息和学生信息进行管理及一些班级信息和科目的设置 (1)用户信息维护 管理员子系统 教师子系统 考生子系统 用户信息维护 用户权限维护 学生信息管理 教师信息管理 个人信息维护 班级管理 系部管理 科目管理 个人信息维护 题库管理 试卷管理 阅卷管理 成绩查询 成绩统计分析 个人信息维护 在线考试 用户注册 自我测试 成绩查询 通用无纸化考试系统

系统管理员可以对自己个人信息进行编辑修改,也可以对教师用户和学生用户进行添加和删除,系统将为添加后的教师用户和学生用户自动分配用户编号 (2)用户权限维护 系统管理员在对教师用户信息进行管理时,可以为其设置相应的权限。 2.教师子系统 教师子系统是指以教师用户的身份通过验证后登入系统,并对个人信息、题库、 试卷信息、考生成绩等信息进行管理。 (1)个人信息维护 教师成功登入系统后可以对自己的用户名,密码等信息进行查看和修改,但不 可以对账号名称进行更改。 (2)题库管理 教师可以在题库中添加、编辑和修改试题,可以为每道试题设置其分值、类型 等信息,系统会自动为添加的试题分配相应的试题编号。 (3)试卷管理 教师用户可以对每次考试的试卷信息进行设置,比如可以设置考试的课程、时 间、总分、各类型题目(单项选择题,多选题,判断题,主观题)的数量等信息。 (4)成绩查询 教师用户可以对考生的成绩进行查看。 (5)考试结果统计 教师用户可以对考生的成绩进行统计和分析,比如最高分,平均分以及每道题的正确率让教师更好的掌握考生的知识点掌握情况。 (6)阅卷管理 教师可以针对考生的主观题信息进行阅卷给出分数 3.考生子系统 考生考试是指以考生用户的身份通过验证后登入系统,可以进行个人注册信息 编辑、自我测试、成绩查看等工作。 (1)考生注册 考生可以进行个人信息的注册,包括姓名,班级,口令等信息,考生用户注册 成功后自动加入考生信息表中,系统会自动为其分配相应的id。 (2)个人信息维护

相关主题
文本预览
相关文档 最新文档