当前位置:文档之家› 中南大学微机接口实验代码(软件及硬件)

中南大学微机接口实验代码(软件及硬件)

中南大学微机接口实验代码(软件及硬件)
中南大学微机接口实验代码(软件及硬件)

中南大学微机接口四个实验的完整代码,希望对您有所帮助!

试验一:DA TAS SEGMENT

DATAS ENDS

DATA SEGMENT

AA DB 'please input the alphabet: ','$'

DATA ENDS

STACKS SEGMENT

STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS

START:

MOV AX,DATA

MOV DS,AX

MOV DX ,OFFSET AA

MOV AH ,09H

INT 21H

MOV AX,DATAS

MOV DS,AX

MOV AH,01H ;功能码:等待按键,在按键后把字符显示在屏幕上

INT 21H ;中断

MOV BL,AL

AND AL,0F0H

SHR AL ,4

ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

MOV AL,BL

AND AL,0FH

ADD AL,30H

MOV AH,02H

INT 21H

MOV AH,4CH ;结束程序

INT 21H

CODES ENDS

END START

实验二传送并排序STACK1 SEGMENT STACK DW 256 DUP(?)

STACK1 ENDS

DDATA SEGMENT

MSR DB 'shgsejoaHOajoirWEJ4$'

LEN EQU $- MSR

DDATA ENDS

EXDA SEGMENT

MSD DB LEN DUP(?)

EXDA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DDA TA,ES:EXDA

START: MOV AX,DDATA

MOV DS,AX

MOV AX,EXDA

MOV ES,AX

MOV SI,OFFSET MSR

MOV DI,OFFSET MSD

MOV CX,LEN

MOV BX,0

NEXT: MOV AL,MSR[BX]

MOV ES:MSD[BX],AL

INC BX

LOOP NEXT

MOV DX,0

XUNHUAN: MOV CX,LEN-2

MOV BX,DX

INC BX

NEXT2: PUSH BX

MOV BX,DX

MOV AH,ES:MSD[BX]

POP BX

MOV AL,ES:MSD[BX]

CMP AH,AL

JS XIAOYU

PUSH BX

MOV BX,DX

MOV AH,ES:MSD[BX]

POP BX

MOV AL,ES:MSD[BX]

PUSH BX

MOV BX,DX

MOV ES:MSD[BX],AL

POP BX

MOV ES:MSD[BX],AH

XIAOYU:

INC BX

LOOP NEXT2

INC DX

CMP DX,LEN-2

JNE XUNHUAN

PUSH ES

POP DS

MOV DX,OFFSET MSD

MOV AH,9

INT 21H

MOV AX,4C00H

INT 21H

CODE ENDS

END START

实验三

DATAS SEGMENT

JIAN DB 'The jianshu is:','$'

BEI DB 'The beijianshu is:','$'

RE DB 'The result is:','$'

XH DB 'Press Y to continue:','$'

ER DB 'ERROR!INPUT AGAIN:','$'

HH DB 0DH,0AH,'$'

DATA1 DB 5 DUP(?)

DATA2 DB 5 DUP(?)

DATA3 DB 5 DUP(?)

DATA4 DB '0','1','2','3','4','5','6','7','8','9',' '

SHUB DB 'Please input the beijianshu(0-99999):','$'

SHUJ DB 'Please input the jianshu(0-99999):','$'

;此处输入数据段代码

DATAS ENDS

STACKS SEGMENT

;此处输入堆栈段代码

STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS START:

A1: MOV AX,DATAS

MOV DS,AX

MOV AH,9

MOV DX,OFFSET SHUB

INT 21H

IB1: MOV DX,5

IB: MOV AH,1

INT 21H

MOV BX,0

MOV CX,11

JICE:

CMP AL,DA TA4[BX]

JE NOM

INC BX

LOOP JICE

MOV AH,9

MOV DX,OFFSET HH

INT 21H

MOV AH,9

MOV DX,OFFSET ER

INT 21H

JMP IB1

NOM: MOV CX,DX

DEC DX

CMP AL,' '

JBE Q

MOV AH,DATA1[3]

MOV DATA1[4],AH

MOV AH,DATA1[2]

MOV DATA1[3],AH

MOV AH,DATA1[1]

MOV DATA1[2],AH

MOV AH,DATA1[0]

MOV DATA1[1],AH

MOV DATA1[0],AL

LOOP IB

CMP CX,1

JMP A

Q: MOV AX,5

SUB AX,CX

MOV BX,AX

Q1: MOV DA TA1[BX],'0'

INC BX

LOOP Q1

A: MOV AH,9

MOV DX,OFFSET HH

INT 21H

MOV AH,9

MOV DX,OFFSET SHUJ

INT 21H

MOV CX,5

MOV BX,4

IJ1: MOV DX,5

IJ: MOV AH,1

INT 21H

MOV BX,0

MOV CX,11

JICE2:

CMP AL,DATA4[BX]

JE NOM2

LOOP JICE2

MOV AH,9

MOV DX,OFFSET HH

INT 21H

MOV AH,9

MOV DX,OFFSET ER

INT 21H

JMP IJ1

NOM2: MOV CX,DX

DEC DX

CMP AL,' '

JBE R

MOV AH,DATA2[3]

MOV DATA2[4],AH

MOV AH,DATA2[2]

MOV DATA2[3],AH

MOV AH,DATA2[1]

MOV DATA2[2],AH

MOV AH,DATA2[0]

MOV DATA2[1],AH

MOV DATA2[0],AL

LOOP IJ

CMP CX,1

JBE B

R: MOV AX,5

SUB AX,CX

MOV BX,AX

R1: MOV DATA2[BX],'0'

INC BX

LOOP R1

B: MOV AH,9

MOV DX,OFFSET HH

INT 21H

MOV AH,9

MOV DX,OFFSET BEI

INT 21H

MOV BX,4

MOV CX,4

L1: CMP DATA1[BX],'0'

JE P1

JMP XB1

P1: DEC BX

LOOP L1

XB: MOV DL,DATA1[BX] MOV AH,2

INT 21H

DEC BX

LOOP XB

MOV AH,9

MOV DX,OFFSET HH

INT 21H

MOV AH,9

MOV DX,OFFSET JIAN

INT 21H

MOV BX,4

MOV CX,4

L2: CMP DATA2[BX],'0'

JE P2

JMP XJ1

P2: DEC BX

LOOP L2

XJ1: INC CX

XJ: MOV DL,DATA2[BX]

MOV AH,2

INT 21H

DEC BX

LOOP XJ

MOV AH,9

MOV DX,OFFSET HH

INT 21H

MOV AH,9

MOV DX,OFFSET RE

INT 21H

MOV BX,4

MOV CX,5

ZHU1: MOV AL,DATA1[BX] SUB AL,30H

MOV DATA1[BX],AL

MOV AL,DATA2[BX]

SUB AL,30H

MOV DATA2[BX],AL

DEC BX

LOOP ZHU1

MOV BX,4

MOV CX,5

BJ: MOV AH,DATA1[BX]

CMP AH,DATA2[BX]

JB FH

CMP AH,DATA2[BX]

JE BJ1

JMP ZJ

BJ1: DEC BX

LOOP BJ

ZJ: MOV CX,5

MOV BX,0

CLC

JF: MOV AL,DA TA1[BX]

SBB AL,DA TA2[BX]

AAS

MOV DATA3[BX],AL

INC BX

LOOP JF

CLC

JMP ZH

FH: MOV AH,2

MOV DL,'-'

INT 21H

MOV CX,5

MOV BX,0

CLC

FJ: MOV AL,DA TA2[BX]

SBB AL,DA TA1[BX]

AAS

MOV DATA3[BX],AL

INC BX

LOOP FJ

CLC

ZH: MOV CX,5

MOV BX,0

ZHU2: AND DATA3[BX],0FH ADD DATA3[BX],30H

INC BX

LOOP ZHU2

MOV BX,4

MOV CX,4

L3: CMP DATA3[BX],'0'

JBE P3

JMP XR1

P3: DEC BX

LOOP L3

XR1: INC CX

XR: MOV DL,DATA3[BX]

MOV AH,2

INT 21H

DEC BX

LOOP XR

MOV AH,9

MOV DX,OFFSET HH

INT 21H

MOV AH,9

MOV DX,OFFSET XH

INT 21H

MOV AH,1

INT 21H

CMP AL,'Y'

JE T1

JMP T0

T0: CMP AL,'y'

JE T1

JMP T2

T1: MOV AH,9

MOV DX,OFFSET HH

INT 21H

JMP A1

T2: MOV AH,4CH

INT 21H

CODES ENDS

END START

实验四分支子程序

DA TA SEGMENT

AA DB 'please choose the type you want to change to:' DB 0DH,0AH,'1 TOHEX'

DB 0DH,0AH,'2 TOBCD'

DB 0DH,0AH,'3 TOQIDUAN'

DB 0DH,0AH,'4 EXIT',0DH,0AH,'$'

BB DB 100

DB ?

DB 100 DUP(?)

DD2 DB 'Please input a number >=two ',0DH,0AH,'$' TABLE1 DB 40H,79H,24H,30H,19H

DB 12H,02H,78H,00H,18H

TABLE2 DB 00H,00H,00H,00H,01H

DB 01H,01H,01H,10H,10H

TABLE3 DB 00H,01H,10H,11H,00H

DB 01H,10H,11H,00H,01H

DATA ENDS

MSTACK SEGMENT

CC DB 125 DUP(0)

MSTACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA,SS:MSTACK START: MOV AX,DATA

MOV DS,AX

MOV DX,OFFSET DD2

MOV AH,09H

INT 21H

MOV DX,OFFSET BB

MOV AH,0AH

INT 21H

MOV DL,0AH ;回车换行

MOV AH,2

INT 21H

MOV DX,OFFSET BB

; INC DX

; INC DX

MOV AH,09H

INT 21H

MOV DL,0AH ;回车换行

MOV AH,2

INT 21H

MOV DX,OFFSET AA

MOV AH,09H

INT 21H

MOV AH,01H

INT 21H ; 提是输入并输入

MOV DL,0AH ;回车换行

MOV AH,2

INT 21H

; CMP AL,'1'

; JE HEX1

CMP AL,'2'

JNE HHHH

JMP BCD2

HHHH: CMP AL,'3'

JE QIDUAN3

CMP AL,'4' ;选择功能

MOV AX,4C00H

INT 21H

QIDUAN3:

MOV DI,OFFSET BB

MOV DX,DI

INC DX

MOV DI,DX

MOV CL,[DI]

MOV CH,0

MOV DX,DI

INC DX

MOV DI,DX

FANYI: MOV AL,[DI]

AND AL,0FH

MOV AH,0

MOV BX,OFFSET TABLE1

XLAT TABLE1

PUSH AX

SHR AL,04H

AND AL,0FH

ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

POP AX

AND AL,0FH

MOV DL,AL

MOV AH,02H

INT 21H

MOV DX,DI

INC DX

MOV DI,DX

LOOP FANYI

MOV AX,4C00H

INT 21H

BCD2:

MOV DI,OFFSET BB

MOV DX,DI

INC DX

MOV DI,DX

MOV CL,[DI]

MOV CH,0

MOV DX,DI

INC DX

MOV DI,DX

FANYI2: MOV AL,[DI]

AND AL,0FH

MOV AH,0

PUSH AX

MOV BX,OFFSET TABLE2

XLAT TABLE2

PUSH AX

SHR AL,04H

ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

POP AX

AND AL,0FH

ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

POP AX

MOV BX,OFFSET TABLE3

XLAT TABLE3

PUSH AX

SHR AL,04H

AND AL,0FH

ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

POP AX

AND AL,0FH

ADD AL,30H

MOV DL,AL

MOV AH,02H

INT 21H

MOV DX,DI

INC DX

MOV DI,DX

LOOP FANYI2

CODE ENDS

中南大学计算机体系结构实验报告

计算机体系结构实验报告 学院:信息科学与工程学院 专业班级:高赛文的小仙女 指导老师:雷向东 姓名:igot7

目录 实验 1 对指令操作码进行霍夫曼编码 (3) 一、实验目的 (3) 二、实验内容 (3) 三、实验过程 (3) 四、实验结果 (14) 实验 2 使用 LRU 方法更新 Cache (15) 一、实验目的 (15) 二、实验内容 (15) 三、实验过程 (15) 四、实验结果 (18) 实验 3 通道处理过程模拟 (20) 一、实验目的 (20) 二、实验内容 (20) 三、实验过程 (21) 四、实验结果 (22) 实验 4 单功能流水线调度机构模拟 (23) 一、实验目的 (23) 二、实验内容 (23) 三、实验过程 (23) 四、运行结果 (24) 实验总结 (24)

实验 1 对指令操作码进行霍夫曼编码 一、实验目的 1.了解和掌握指令编码的基本要求和基本原理 二、实验内容 1.使用编程工具编写一个程序,对一组指令进行霍夫曼编码,并输出最后的编码结果以及对 指令码的长度进行评价。与扩展操作码和等长编码进行比较。 问题描述以及问题分析: 我们举例说明此问题,例如: 有一组指令的操作码共分七类,它们出现概率如 下表所示: P1 P2 P3 P4 P5 P6 P7 0.45 0.30 0.15 0.05 0.03 0.01 0.01 对此组指令进行HUFFMAN 编码正如下图所示: 最后得到的HUFFMAN 编码如下表所示: 最短编码长度为: H=0.45*1+0.30*2+0.15*3+0.05*4+0.03*5+0.01*6+0.01*6=-1.95. 要对指令的操作码进行HUFFMAN 编码,只要根据指令的各类操作码的出现概率构造HUFFMAN 树再进行HUFFAM 编码。此过程的难点构造HUFFMAN 树,进行HUFFAM 编码只要对你所生成的HUFFMAN 树进行中序遍历即可完成编码工作。 三、实验过程 观察上图 1,不难看出构造 HUFFMAN 树所要做的工作:

中南大学软件体系结构实验4-结构型设计模式实验

实验4 结构型设计模式实验 实验学时: 2 每组人数: 1 实验类型: 3 (1:基础性 2:综合性 3:设计性 4:研究性) 实验要求: 1 (1:必修 2:选修 3:其它) 实验类别: 3 (1:基础 2:专业基础 3:专业 4:其它) 一、实验目的 熟练使用PowerDesigner和任意一种面向对象编程语言实现几种常见的结构型设计模式,包括适配器模式、组合模式和外观模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式。 二、实验内容 1. 现有一个接口DataOperation定义了排序方法sort(int[]) 和查找方法search(int[], int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法,类BinarySearch 的binarySearch(int[], int)方法实现了二分查找算法。试使用适配器模式设计一个系统,在不修改源代码的情况下将类QuickSort和类BinarySearch的方法适配到DataOperation接口中。绘制类图并编程实现。(要求实现快速排序和二分查找,使用对象适配器实现) 2. Windows Media Player和RealPlayer是两种常用的媒体播放器,它们的API结构和调用方法存在区别。现在你的应用程序需要支持这两种播放器API,而且在将来可能还需要支持新的媒体播放器,请问如何设计该应用程序绘制类图并编程模拟实现。 3. 使用组合模式设计一个杀毒软件(AntiVirus)的框架,该软件既可以对某个文件夹(Folder)杀毒,也可以对某个指定的文件(File)进行杀毒,文件种类包括文本文件TextFile、图片文件ImageFile、视频文件VideoFile。绘制类图并编程模拟实现。 4. 某教育机构组织结构如下图所示:

操作系统实验报告-中南大学

操作系统原理试验报告 班级: 学号: 姓名:

实验一:CPU调度 一、实验内容 选择一个调度算法,实现处理机调度。 二、实验目的 多道系统中,当就绪进程数大于处理机数时,须按照某种策略决定哪些进程优先占用处理机。本实验模拟实现处理机调度,以加深了解处理机调度的工作。 三、实验题目 1、设计一个按优先权调度算法实现处理机调度的程序; 2、设计按时间片轮转实现处理机调度的程序。 四、实验要求 PCB内容: 进程名/PID; 要求运行时间(单位时间); 优先权; 状态: PCB指针; 1、可随机输入若干进程,并按优先权排序; 2、从就绪队首选进程运行:优先权-1/要求运行时间-1 要求运行时间=0时,撤销该进程 3、重新排序,进行下轮调度 4、最好采用图形界面; 5、可随时增加进程; 6、规定道数,设置后备队列和挂起状态。若内存中进程少于规定道数,可自动从后备 队列调度一作业进入。被挂起进程入挂起队列,设置解挂功能用于将指定挂起进程解挂入就绪队列。 7、每次调度后,显示各进程状态。 实验二:内存管理 一、实验内容 主存储器空间的分配和回收 二、实验目的 帮助了解在不同的存储管理方式下,应怎样实现主存空间的分配和回收。 三、实验题目 在可变分区管理方式下,采用最先适应算法实现主存空间的分配和回收。

四、实验要求 1、自行假设主存空间大小,预设操作系统所占大小并构造未分分区表; 表目内容:起址、长度、状态(未分/空表目) 2、结合实验一,PCB增加为: {PID,要求运行时间,优先权,状态,所需主存大小,主存起始位置,PCB指针} 3、采用最先适应算法分配主存空间; 4、进程完成后,回收主存,并与相邻空闲分区合并 .1、Vo类说明(数据存储结构) 进程控制块PCB的结构: Public class PCB{ //进程控制块PCB,代表一个进程 //进程名,作为进程的标识; private String name; //要求运行时间,假设进程运行的单位时间数; private int time; //赋予进程的优先权,调度时总是选取优先数小的进程先执行; private int priority; //状态,假设有“就绪”状态(ready)、“运行”状态(running)、 //“后备”状态(waiting)、“挂起”状态(handup) private String state; //进程存放在table中的位置 private int start; //进程的大小 private int length; //进程是否进入内存,1为进入,0为未进入 private int isIn; //进程在内存中的起始位置 private int base; //进程的大小 private int limit; //一些get和set方法以及构造器省略… };

中南大学通信电子线路实验报告

中南大学 《通信电子线路》实验报告 学院信息科学与工程学院 题目调制与解调实验 学号 专业班级 姓名 指导教师

实验一振幅调制器 一、实验目的: 1.掌握用集成模拟乘法器实现全载波调幅和抑止载波双边带调幅的方法。 2.研究已调波与调制信号及载波信号的关系。 3.掌握调幅系数测量与计算的方法。 4.通过实验对比全载波调幅和抑止载波双边带调幅的波形。 二、实验内容: 1.调测模拟乘法器MC1496正常工作时的静态值。 2.实现全载波调幅,改变调幅度,观察波形变化并计算调幅度。 3.实现抑止载波的双边带调幅波。 三、基本原理 幅度调制就是载波的振幅(包络)受调制信号的控制作周期性的变化。变化的周期与调制信号周期相同。即振幅变化与调制信号的振幅成正比。通常称高频信号为载波信号。本实验中载波是由晶体振荡产生的10MHZ高频信号。1KHZ的低频信号为调制信号。振幅调制器即为产生调幅信号的装置。 在本实验中采用集成模拟乘法器MC1496来完成调幅作用,图2-1为1496芯片内部电路图,它是一个四象限模拟乘法器的基本电路,电路采用了两组差动对由V1-V4组成,以反极性方式相连接,而且两组差分对的恒流源又组成一对差分电路,即V5与V6,因此恒流源的控制电压可正可负,以此实现了四象限工作。D、V7、V8为差动放大器V5与V6的恒流源。进行调幅时,载波信号加在V1-V4的输入端,即引脚的⑧、⑩之间;调制信号加在差动放大器V5、V6的输入端,即引脚的①、④之间,②、③脚外接1KΩ电位器,以扩大调制信号动态范围,已调制信号取自双差动放大器的两集电极(即引出脚⑹、⑿之间)输出。

图2-1 MC1496内部电路图 用1496集成电路构成的调幅器电路图如图2-2所示,图中VR8用来调节引出脚①、④之间的平衡,VR7用来调节⑤脚的偏置。器件采用双电源供电方式(+12V,-9V),电阻R29、R30、R31、R32、R52为器件提供静态偏置电压,保证器件内部的各个晶体管工作在放大状态。 四、实验结果 1. ZD.OUT波形: 2. TZXH波形:

计算机图形学实验报告 (2)

中南大学信息科学与工程学院 实验报告实验名称 实验地点科技楼四楼 实验日期2014年6月 指导教师 学生班级 学生姓名 学生学号 提交日期2014年6月

实验一Window图形编程基础 一、实验类型:验证型实验 二、实验目的 1、熟练使用实验主要开发平台VC6.0; 2、掌握如何在编译平台下编辑、编译、连接和运行一个简单的Windows图形应用程序; 3、掌握Window图形编程的基本方法; 4、学会使用基本绘图函数和Window GDI对象; 三、实验内容 创建基于MFC的Single Document应用程序(Win32应用程序也可,同学们可根据自己的喜好决定),程序可以实现以下要求: 1、用户可以通过菜单选择绘图颜色; 2、用户点击菜单选择绘图形状时,能在视图中绘制指定形状的图形; 四、实验要求与指导 1、建立名为“颜色”的菜单,该菜单下有四个菜单项:红、绿、蓝、黄。用户通过点击不同的菜单项,可以选择不同的颜色进行绘图。 2、建立名为“绘图”的菜单,该菜单下有三个菜单项:直线、曲线、矩形 其中“曲线”项有级联菜单,包括:圆、椭圆。 3、用户通过点击“绘图”中不同的菜单项,弹出对话框,让用户输入绘图位置,在指定位置进行绘图。

五、实验结果: 六、实验主要代码 1、画直线:CClientDC *m_pDC;再在OnDraw函数里给变量初始化m_pDC=new CClientDC(this); 在OnDraw函数中添加: m_pDC=new CClientDC(this); m_pDC->MoveTo(10,10); m_pDC->LineTo(100,100); m_pDC->SetPixel(100,200,RGB(0,0,0)); m_pDC->TextOut(100,100); 2、画圆: void CMyCG::LineDDA2(int xa, int ya, int xb, int yb, CDC *pDC) { int dx = xb - xa; int dy = yb - ya; int Steps, k; float xIncrement,yIncrement; float x = xa,y= ya; if(abs(dx)>abs(dy))

中南大学软件体系结构重要资料

第一章软件体系结构概述(5分) 一、软件体系结构的定义 ●国内普遍接受的定义:软件体系结构包括构件、连接件和约束,它是可预制和可重 构的软件框架结构。 ●软件体系结构= 构件+ 连接件+ 约束 二、软件体系结构的优势 ●容易理解 ●重用 ●控制成本 ●可分析性 第二章软件体系结构风格(10分) 一、软件体系结构风格定义 ●软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。 An architectural style defines a family of systems in terms of a pattern of structural organization. ●体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表和一组约束。 词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连 接件组合起来的。 An architectural style defines a vocabulary of components and connector types, and a set of constraints on how they can be combined. 二、常见的体系结构风格 ●管道和过滤器

?每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。 ?过滤器风格的连接件就像是数据流传输的管道,将一个过滤器的输出传到另一个过滤器的输入。 ●数据抽象和面向对象组织 ?数据的表示方法和它们的相应操作被封装在一个抽象数据类型或对象中。 ?这种风格的构件是对象或者说是抽象数据类型的实例。 ?对象通过函数和过程的调用来进行交互。 ●基于事件的隐式调用 ?构件不直接调用一个过程,而是触发或广播一个或多个事件。 ?事件的触发者并不知道哪些构件会被这些事件影响。 ●分层系统 ?组织成一个层次结构。 ?每一层都为上一层提供了相应的服务,并且接受下一层提供的服务。 ●仓库系统 ?构件:中心数据结构(仓库)和一些独立构件的集合。 ?仓库和在系统中很重要的外部构件之间的相互作用。 ●过程控制环路 ?源自于控制理论中的模型框架,将事务处理看成输入、加工、输出、反馈、再输入的一个持续的过程模型。 ?通过持续性的加工处理过程将输入数据转换成既定属性的“产品”。 ●C2风格

2017中南大学人工智能实验报告

“人工智能”实验报告 专业: 班级: 学号: 姓名: 2017年4月日

实验一搜索策略 (一)实验内容 1. 熟悉和掌握启发式搜索的定义、估价函数和算法过程;比较不同算法的性能。 2. 修改八数码问题或路径规划问题的源程序,改变其启发函数定义,观察结果的变化,分析原因。 (二)实验思路 1.利用已有程序“search.jar”,利用已有的“简单搜索树”图或自行构建一个图,选择DFS/BFS/Lowest Cost First/Best-First/Heuristic Depth First/A*等不同的搜索策略,观察程序运行中,OPEN表和CLOSED表的变化,观察搜索过程的变化,理解各个算法的原理。 2.任选八数码问题或路径规划问题的源程序,思考程序如何解决该问题,并对其启发函数进行修改,观察结果的变化,并分析原因 (三)程序清单 此处我选择了路径规划问题:由于篇幅原因,只附上启发函数的定义部分。 原启发函数: floatMapSearchNode::GoalDistanceEstimate( MapSearchNode&nodeGoal ) { floatxd = fabs(float(((float)x - (float)nodeGoal.x))); floatyd = fabs(float(((float)y - (float)nodeGoal.y))); return (xd + yd); } 第一次修改后的启发函数: float MapSearchNode::GoalDistanceEstimate( MapSearchNode&nodeGoal ) { float xd = fabs(float(((float)x - (float)nodeGoal.x))); float yd = fabs(float(((float)y - (float)nodeGoal.y))); float d=sqrt(xd*xd+yd*yd); return d; } 第二次修改后的启发函数: float MapSearchNode::GoalDistanceEstimate( MapSearchNode&nodeGoal ) { float xd = fabs(float(((float)x - (float)nodeGoal.x))); float yd = fabs(float(((float)y - (float)nodeGoal.y))); float d=3*sqrt(xd*xd+yd*yd); return d; } 第三次修改后的启发函数: float MapSearchNode::GoalDistanceEstimate( MapSearchNode&nodeGoal ) { float xd = fabs(float(((float)x - (float)nodeGoal.x)));

中南大学软件体系结构设计模式实验二

中南大学软件体系结构设计模式实验二 Company number:【0089WT-8898YT-W8CCB-BUUT-202108】

实验3 设计模式实验二 实验学时: 4 每组人数: 1 实验类型: 3 (1:基础性 2:综合性 3:设计性 4:研究性) 实验要求: 1 (1:必修 2:选修 3:其它) 实验类别: 3 (1:基础 2:专业基础 3:专业 4:其它) 一、实验目的 熟练使用PowerDesigner和任意一种面向对象编程语言实现几种常见的行为型设计模式,包括职责链模式、命令模式、观察者模式和策略模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式。 二、实验内容 1. 某企业的SCM(Supply Chain Management,供应链管理)系统中包含一个采购审批子系统。该企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批5万元以下(不包括5万元)的采购单,副董事长可以审批5万元至10万元(不包括10万元)的采购单,董事长可以审批10万元至50万元(不包括50万元)的采购单,50万元及以上的采购单就需要开董事会讨论决定。如下图所示: 试使用职责链模式设计并模拟实现该系统。 2. 房间中的开关是命令模式的一个实例,现用命令模式来模拟开关的功能,可控制对象包括电灯和电风扇,绘制相应的类图并编程模拟实现。 3. 某软件公司欲开发一个基于Windows平台的公告板系统。系统提供一个主菜单(Menu),在主菜单中包含了一些菜单项(MenuItem),可以通过Menu类的addMenuItem()方法增加菜单项。菜单项的主要方法是click(),每一个菜单项包含一个抽象命令类,具体命令类包括OpenCommand(打开命令),CreateCommand(新建命令),EditCommand(编辑命令)等,命令类具有一个execute()方法,用于调用公告板系统界面类(BoardScreen)的open()、create()、edit()等方法。现使用命令模式设计该系统,使得MenuItem类与BoardScreen类的耦合度降低,绘制类图并编程实现。 4. 某实时在线股票软件需要提供如下功能:当股票购买者所购买的某支股票价格变化幅度达到5%时,系统将自动发送通知(包括新价格)给购买该股票的所有股民。试使用观察者模式设计并实现该系统,要求绘制相应的类图并编程模拟实现。 5. 某公司欲开发一套机房监控系统,如果机房达到某一指定温度,温度传感器(Thermosensor)将自动传递信号给各种响应设备,例如警示灯(CautionLight)将闪烁(flicker())、报警器(Annunciator)将发出警报(alarm())、安全逃生门(SecurityDoor)将自动开启(open())、隔热门(InsulatedDoor)将自动关闭(close())

中南大学系统仿真实验报告

实验一MATLAB 中矩阵与多项式的基本运算 实验任务 1. 了解MATLAB命令窗口和程序文件的调用。 2 ?熟悉如下MATLAB的基本运算: ①矩阵的产生、数据的输入、相关元素的显示; ②矩阵的加法、乘法、左除、右除; ③特殊矩阵:单位矩阵、“ 1 ”矩阵、“0”矩阵、对角阵、随机矩阵的产生和运算; ④多项式的运算:多项式求根、多项式之间的乘除。 基本命令训练 1、>> eye(2) ans = 1 0 0 1 >> eye(4) ans = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 2、>> ones(2) 1 1 ans =

1 1 >> ones(4) ans = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 >> ones(2,2) ans = 1 1 1 1 >> ones(2,3) ans = 1 1 1 1 1 1 >> ones(4,3) ans = 1 1 1 1 1 1 1 1 1 1 1 1 3、>> zeros(2) ans =

0 0 0 0 >> zeros(4) ans = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 >> zeros(2,2) ans = 0 0 0 0 >> zeros(2,3) ans = 0 0 0 0 0 0 >> zeros(3,2) ans = 0 0 0 0 00 4、随机阵>> rand(2,3) ans = 0.2785 0.9575 0.1576 0.5469 0.9649 0.9706 >> rand(2,3)

微机原理及应用实验报告

微机原理及应用实验报告 班级:机械1301班 姓名:黄佳清 学号:0801130117 座位号: 中南大学机电工程学院

实验一单片机仿真开发机操作和MCS-51指令系统应用 一.实验目的 1、熟悉MCS-51单片机仿真开发机和开发调试软件的操作使用和调整; 2、学会编写和输入汇编语言源程序、对输入的源程序进行汇编; 3、掌握程序的调试和运行的各种方法。 三.实验内容及步骤(完成分值:60分) 本实验秩序运行Keil uVersion2程序,设置为keil为纯软件仿真 1.新建工程项目 2.设置工程文件参数 3.编写新程序事例 4.调试程序直至能够运行出结果。 四.实验程序 AJMP MAIN ORG 0030H MAIN: MOV R0,#20H MOV R2,#0FH MOV A,#00H A1: MOV @R0,A INC R0 INC A DJNZ R2,A1 MOV R0,#20H ;暂停,观察并记录! MOV DPTR,#7000H MOV R2,#0FH A2: MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR DJNZ R2,A2 MOV R0,#030H ;断点,观察并记录! MOV DPTR,#7000H MOV R2,#0FH A3: MOVX A,@DPTR MOVX @R0,A INC R0 INC DPTR DJNZ R2,A3 DO: LJMP DO END ;内部存储器数据块赋值,搬运数据块到外部存储器,再搬运回内部数据存储器。 五、附加题 1.将光标移到想要暂停的地方,MOV R0,#20H所在行,选择“执行到光

中南大学制造系统自动化技术实验报告整理

制造系统自动化技术 实验报告 学院:机电工程学院 班级:机制**** 姓名:张** 学号: *********** 指导教师:李** 时间: 2018-11-12 实验一柔性自动化制造系统运行实验 1.实验目的 (1)通过操作MES终端软件,实现对柔性制造系统的任务下达和控制加工,让学生

了解智能制造的特征及优势。 (2)通过创意性的实验让学生了解自动化系统总体方案的构思。 (3)通过总体方案的构思让学生了解该系统的工作原理,并学会绘制控制系统流程图,掌握物料流、信息流、能量流的流动路径。 (4)通过总体方案的构思让学生掌握各机械零部件、传感器、控制元器件的工作原理及性能。 (5)通过实验系统运行让学生了解运行的可靠性、安全性是采用何种元器件来实现的,促进学生进行深层次的思考和实践。 2.实验内容 (1)仔细观察柔性自动化制造系统的实现,了解柔性自动化制造系统的各个模块,熟悉各个模块的机械结构。 (2)了解各种典型传动机构的组装、工作原理、以及如何实现运动方向和速度的改变; (3)学习多种传感器的工作原理、性能和使用方法; (4)了解典型驱动装置的工作原理、驱动方式和性能; (5)理解柔性制造系统的工作原理,完成柔性制造系统的设计、组装; (6)实现对柔性制造系统的控制与检测,完成工件抓取、传输和加工。

3.实验步骤 (1)柔性制造系统的总体方案设计; (2)进行检测单元的设计; (3)进行控制系统的设计; (4)上下料机构的组装与检测控制; (5)物料传输机构的组装与实现; (6)柔性制造系统各组成模块的连接与控制; (7)柔性制造系统各组成单元的状态与工件状态位置的检测; (8)对机器人手动操作,实现对工件的抓取、传输。 4. 实验报告 ①该柔性自动化制造系统由哪几个主要的部分组成; 主要由:总控室工作站、AGV小车输送物料机构、安川机器人上下料工作站、法那科机器人上下料工作站、ABB机器人组装工作站、视觉检测及传送工作站、激光打标工作站、堆垛机及立体仓储工作站。 ②画出该柔性自动化制造系统的物料传输系统结构简图;

中南大学 计算机体系结构实验报告

计算机体系结构课程设计 学院:信息科学与工程学院 专业班级: 指导老师: 学号: 姓名:

目录 实验1 对指令操作码进行霍夫曼编码 (3) 一、实验目的 (3) 二、实验内容 (3) 三、设计思路 (4) 四、关键代码 (4) 五、实验截图 (5) 六、源代码 (5) 实验2 使用LRU 方法更新Cache (8) 一、实验目的 (8) 二、实验内容 (8) 三、设计思路 (9) 四、程序截图 (9) 五、实验代码 (9) 实验总结 (16) 参考文献 (16)

实验1 对指令操作码进行霍夫曼编码一、实验目的 了解和掌握指令编码的基本要求和基本原理 二、实验内容 1. 使用编程工具编写一个程序,对一组指令进行霍夫曼编码,并输出最后的编码结果以及对指令码的长度进行评价。与扩展操作码和等长编码进行比较。 2. 问题描述以及问题分析 举例说明此问题,例如: 下表所示: 对此组指令进行 HUFFMAN 编码正如下图所示: 最后得到的HUFFMAN 编码如下表所示:

最短编码长度为: H=0.45*1+0.30*2+0.15*3+0.05*4+0.03*5+0.01*6+0.01*6=-1.95. 要对指令的操作码进行 HUFFMAN 编码,只要根据指令的各类操作码的出现概率构造HUFFMAN 树再进行 HUFFAM 编码。此过程的难点构造 HUFFMAN 树,进行 HUFFAM 编 码只要对你所生成的 HUFFMAN 树进行中序遍历即可完成编码工作。 三、设计思路 观察上图,不难看出构造 HUFFMAN 树所要做的工作:1、先对各指令操作码的出现概率进行排序,构造一个有序链表。2、再取出两个最小的概率节点相加,生成一个生的节点加入到链表中,同时从两表中删除此两个节点。3、在对链表进行排序,链表是否只有一个节点,是则 HUFFAN 树构造完毕,否则继续做 2 的操作。为此设计一个工作链表(链表的元素时类,此类的功能相当结构。)、HUFFMAN 树节点、HUFFMAN 编码表节点。 四、关键代码 哈夫曼树重点在于如何排列权值大小不同的结点的顺序 private int leafNum; //叶子结点个数 private HaffmanNode[] hnodes; //哈夫曼树的结点数组 public HaffManCode(double[] weight) //构造指定权值集合的哈夫曼树 { int n = weight.length; //n个叶子结点 this.leafNum = n; this.hnodes = new HaffmanNode[2*n-1]; //n个叶子结点的哈夫曼树共有2n-1个结点 for(int i=0; i

中南大学 软件体系结构重点

需求工程 所有与需求直接相关的活动通称为需求工程。包括需求开发和需求管理。需求开发包括需求的调查,分析和定义,需求管理包括需求的确认、跟踪以及变更控制 C/S体系结构定义了工作站如何与服务器相连,以实现数据和应用分布到多个处理机上。 C/S体系结构有三个主要组成部分:数据库服务器、客户应用程序和网络 c/s优点:1、具有强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受 2、对于硬件和软件的变化有极大的适应性和灵活性,而且易于对系统进行扩充和缩小。 3、将大的应用处理任务分布到许多通过网络连接的低成本计算机上,节约大量费用缺点 缺点: 开发成本较高 客户端程序设计复杂 信息内容和形式单一 用户界面风格不一,使用繁杂,不利于推广使用 软件移植困难 软件维护和升级困难 新技术不能轻易应用 b/s优点:1、实现了零客户端,易于服务升级2、提供了异种机、异种网、异种应用服务器的联机、联网、统一服务的最现实的开放性基础。b/s缺点: B/S体系结构缺乏对动态页面的支持能力,没有集成有效的数 据库处理功能。 系统扩展能力差,安全性难以控制。 在数据查询等响应速度上,远远低于C/S体系结构。 数据的动态交互性不强,不利于在线事务处理(OLTP)应用。适配器模式(Adapter Pattern) :将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作 优点: 1、将目标类和适配者类解耦 2、增加了类的透明性和复用性 3、灵活性和扩展性都非常好

4、类适配器:可以在适配器类中置换一些适配者的方法,使得适配器的灵活性更强。 5、对象适配器:同一个适配器可以把适配者类和它的子类都适配到目标接口。 缺点: 类适配器:不支持多继承的语言,一次最多只能适配一个适配者类,而且目标抽象类只能为抽象类,不能为具体类,其使用有一定的局限性 对象适配器:要想置换适配者类的方法就不容易 适用: 系统需要使用现有的类,而这些类的接口不符合系统的需要。 想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类一起工作 桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化 优点: ? 分离抽象接口及其实现部分。 ? 桥接模式有时类似于多继承方案,但是多继承方案违背了类的单 一职责原则(即一个类只有一个变化的原因),复用性比较差, 而且多继承结构中类的个数非常庞大,桥接模式是比多继承方案 更好的解决方法。 ? 桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一 个维度,都不需要修改原有系统。 ? 实现细节对客户透明,可以对用户隐藏实现细节。 缺点: 1、增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。 2、要求正确识别出系统中两个独立变化的维度,因此其使用范围具有一定的局限性 适用: 一个类存在两个独立变化的维度,且这两个维度都需要进行扩展 不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统 一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系 装饰模式(Decorator Pattern) :动态地给一个对象增加一些额外的职责(Responsibility)

算法实验报告

算法分析与设计实验报告 学院:信息科学与工程学院 专业班级: 指导老师: 学号: 姓名:

目录 实验一:递归与分治 (3) 1.实验目的 (3) 2.实验预习内容 (3) 3.实验内容和步骤 (3) 4.实验总结及思考 (5) 实验二:回溯算法 (6) 1.实验目的: (6) 2.实验预习内容: (6) 3. 实验内容和步骤 (6) 4. 实验总结及思考 (9) 实验三:贪心算法和随机算法 (10) 1. 实验目的 (10) 2.实验预习内容 (10) 3.实验内容和步骤 (10) 4. 实验总结及思考 (13)

实验一:递归与分治 1.实验目的 理解递归算法的思想和递归程序的执行过程,并能熟练编写快速排序算法程序。 掌握分治算法的思想,对给定的问题能设计出分治算法予以解决。 2.实验预习内容 递归:递归算法是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题的解。 一个过程(或函数)直接或间接调用自己本身,这种过程(或函数)叫递归过程(或函数). 分治:分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。 3.实验内容和步骤 快速排序的基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 源代码: #include using namespace std; int num; void swap(int &a,int &b) { int temp=a; a=b; b=temp; } void printarray(int *arr) { for (int i=1;i<=num;++i) cout<

中南大学计算机取证技术实验报告

学院:信息科学与工程学院 班级: 学号: 姓名: 指导老师:张健

目录 目录 ------------------------------------------------------------------------------------------------------------------ 0 实验一事发现场收集易失性数据-------------------------------------------------------------------------- 1 实验二磁盘数据映像备份---------------------------------------------------------------------------------- 6 实验三恢复已被删除的数据------------------------------------------------------------------------------ 10 实验四进行网络监听和通信分析------------------------------------------------------------------------- 15 实验五分析Windows系统中隐藏的文件和Cache信息 --------------------------------------------- 19 实验六数据解密 ------------------------------------------------------------------------------------------------ 25 总结 ----------------------------------------------------------------------------------------------------------------- 27

中南大学微机原理及接口技术实验内容及报告要求

中南大学微机原理及接口技术实验内容及报告要求 一、实验内容: 实验一顺序程序设计与DEBUG使用 题目1.利用串操作传送指今将0FFH送入数据段的0180H开始的128个字节存储单元中,编写一段程序。 题目2.将数据段中0200H字节存储单元中的二位BCD码转换为二个ASCII码送0201H 开始的二个字节单元中,编写—段程序。 题目3.编写一段程序,在内存中自SQTAB(0200H)地址开始的连续十个单元中存放0~9的平方值。要求利用计算法查表求 NUM(0210H)单元中指定数(0~9中的任意一数)的平方值,并将所求平方值存入RESULT(0211H)单元中。 [注]:题目二和题目三可选做一个,题目一必做。 详细实验要求及步骤方法,参见“ DEBUG 实验参考” 实验二键盘、显示程序设计实验(教材P30) 提高部分: 1、显示数据输入提示信息、键盘输入一个字符,屏幕显示字符的ASCⅡ码; 2、显示字符串输入提示信息、键盘输入一个字符串,屏幕显示对应字符串中各字符的ASC Ⅱ码。 实验三数据传送、数码转换程序设计实验(教材P33、35) 提高部分: 1、数据传送,完成20个数据的传送,并对附加段数据进行升序排列,并在屏幕上显示排序后的数据,以及最大数据和最小数据。 2、数据转换,键盘输入2位(或以上)十进制数,分别转换成十六进制数、BCD码、七段共阳极码。 实验四运算类程序设计实验(教材P39) 提高部分:键盘输入5位被减数和减数,计算并以恒等式形式显示在屏幕上(允许被减数< 减数)。 实验五基本I/O接口与地址译码电路设计实验(教材P72、75) 提高部分: 1、在“基本I/O接口电路设计实验”中,如何扩展16路输入、输出功能? 2、在“地址译码电路设计实验”中,将Y6与CS_A、Y7与CS_B,改换成 Y0与CS_A、Y1 与CS_B连接,修改程序并实现实验功能。 实验六 8255接口电路设计实验(教材P95) 提高部分:

中南大学人工智能实验报告

“人工智能”实验报告 专业 班级 学号 姓名

目录 一、实验八自动规划实验群 (3) 二、实验一生产式系统实验群 (6) 三、实验二搜索策略实验群 (7) 四、实验七神经网络 (9) 五、实验心得和体会 (10)

实验八自动规划实验群 姓名班级指导老师日期2011.12 实验目 的 熟悉和掌握自动规划的基本原理,方法和主要技术。 实验原理规划是一种问子题求解技术,它从某个特定的问题状态出发,寻求一系列行为动作,并建立一个操作序列,直到求得目标状态为止。简而言之,规划是一个行动过程的描述。一个总规划可以含有若干个子规划。 实验环 境 转载相 关源文 件 实验环境 转载相关源文件 实现过 程 单步观察实验算法

算法结果分析 观测结果通过规定规则,确定initial state和goal state,使得移动臂按照规则进行移动。分别进行clear holding pickup putdown putdowntable等实现对木块的移动。 实现过程先进行逆向推理选择,找出途径后再进行移动。 学生结论对于不同的规则将会出现不同的移动过程。通过规定不同的动作可实现不通过的移动。

实验一生产式系统实验群 姓名指导老师日期2011.12 实验目的熟悉和掌握产生式系统的运行机制,掌握基 于规则推理的基本方法。 推理方 法 逆向推理 建立规则库建立事实库 该动物是哺乳动物<- 该动物有毛发. 该动物是哺乳动物<- 该动物有奶. 该动物是鸟<- 该动物有羽毛. 该动物是鸟<- 该动物会飞&会下蛋. 该动物是食肉动物<- 该动物吃肉. 该动物是食肉动物<- 该动物有犬齿&有爪&眼盯前方. 该动物是有蹄类动物<- 该动物是哺乳动物&有蹄. 该动物是有蹄类动物<- 该动物是哺乳动物& 是嚼反刍动物. 该动物是金钱豹<- 该动物是哺乳动物&是食肉动物&是黄褐色&身上有暗斑点. 该动物是虎<- 该动物是哺乳动物&该动物是食肉动物&是黄褐色&身上有黑色条纹. 该动物是长颈鹿<- 该动物是有蹄类动物&有长脖子&有长腿&身上有暗斑点. 该动物是斑马<- 该动物是有蹄类动物&身上有黑色条纹. 该动物是鸵鸟<- 该动物是鸟&有长脖子&有长腿&不会飞&有黑白二色. 该动物是企鹅<- 该动物是鸟&会游泳&不会飞&有黑白二色. 该动物是信天翁<- 该动物是鸟&善飞. %------动物识别系统事实集: %会游泳. %--该动物是企鹅 %不会飞. %有黑白二色. %该动物是鸟. %-------- %--该动物是鸟 %该动物会飞. %会下蛋. %----该动物是金钱豹<- 该动物是哺乳动物&是食肉动物&是黄褐色&身上有暗斑点. %该动物有毛发. %是食肉动物. %是黄褐色. %身上有暗斑点. %----该动物是虎<- 该动物是哺乳动物&该动物是食肉动物&是黄褐色&身上有黑色条纹. %该动物是哺乳动物. %是食肉动物. %是黄褐色. %身上有暗斑点. %----该动物是长颈鹿<- 该动物是有蹄类动物&有长脖子&有长腿&身上有暗斑点. %该动物是有蹄类动物. %有长脖子. %有长腿. %身上有暗斑点. 预测结果假设目标为该动物是金钱豹,则结果为true. 实验过程及结果(注意观测规则的匹配过程和方法) (1)假设这个动物是金钱豹。为了检验这个假设,根据规则, 要求这个动物是哺乳动物&是食肉动物&是黄褐色&身上有暗 斑点. (2)必须检验这个动物是否为哺乳动物。先由规则库中的: 该动物是哺乳动物<- 该动物有毛发.该动物是哺乳动物<- 备注(原因等) 根据逆向推理可以逐步 确定

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

中南大学课程设计报告 课程:计算机网络课程设计 题目:基于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 实体类: UPD 实体类: IP 实体类: TCP 实体类: UDP 实体类: 而对于其中的广播数据包,其判断我利用捕获到的IP包的目的地址进行判断,若其目的地址为,则认为其为广播数据包。 二、功能类实现 (1)网卡获取 电脑上的包的发送与接受都得通过网卡来进行,所以为了完成局域网数据包的捕获和统计,我首先要做的是获取到电脑上的网卡列表,然后选择一个网卡进行包的捕获。而相关代码在jnetpcap的官网的示例代码1中可以找到,从中可以学习到的是jnetpcap的各种使用方法。 在我电脑上可以捕获到三个网卡,一个是本机自身的物理网卡,另外两个是虚拟机模拟出的虚拟网卡。 (2)包的抓捕 Jnetpcap中包的抓捕也是有着固定的格式的,这在官网的示例代码中也是可以找到的,只要设置好相关的参数,就可以进行抓捕 具体方法如下,利用Pcap对象的loop方法。就是实例化一个Pcap对象,然后调用其loop方法。第一个参数arg0 代表循环次数,第二个参数就是传入一个PcapPaketHandler或其子类的对象,这个对象类型是要由我们自己编写的对包处理的方法。 (3)包的处理 在这里对捕获的包的处理我是编写了一个PcapPacketHandler的子类,然后重写了nextPacket()方法。在这个方法里我把捕获到的包当作参数传递个具体的处理方法packetMatch.handlePacket(packet)。 packetMatch.handlePacket(packet)方法是由我自己编写的。handlePacket是packetMatch 的一个静态方法,可以直接调用。在这个方法里面,它会把捕获到的包的包头和T CP、UPD、ICMP、ARP、广播数据包五种类型的包的包头进行一一比较,以确认是否抓到了了相对应的包。 这儿还用到的就是jnetpcap的内部的一个方法,就是packet.hasHeader(arg0),通过在arg0传入已在jnetpcap里封装好的包的类型的实例,可以很好的判断该包是属于什么包类型的,是T CP、UPD、ICMP、ARP还是广播数据包。 然后内部对于各种包的信息的输出也有很好的支持,可以直接使用相应的toString方法,就可以输出各种相关信息。 (4)网络流量统计 对于各个捕获到的包,分别针对各种类型的包设计了一个Double变量用于统计其传送过来相应包头的大小,并在停止抓包后将统计的数据输出在最下方的TextArea里面。 三、界面实现 本程序在设计GUI时使用了Java的一个很好的插件WindowBuilder。 (1)布局 一开始使用Border Layout布局,安排好各个按钮位置,文本框位置。后来采用Absolute layout,并将窗口大小固定化。 在布局的最上方是一个JToolBar的实例对象,其中放置有选择网卡、开始抓包、停止抓包、清空记录等四个选项,中间是两个带滚动条的多行文本框,左边的用于显示捕获的包的列表,右边用于显示左边的我们选中的包的具体信息。最下方会在停止抓包按钮生效后输出总的抓包情况。

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