哈工大安全程序设计搭建小型入侵检测系统实验报告

时间:2024.4.20

《安全程序设计》课程实验报告

实验2搭建小型入侵检测系统


第二篇:Java程序设计实验报告 哈工大


Java语言基础

实验指导、报告书

(2012-20xx年秋季学期使用)

班级:____________________ 姓名:____________________

计算机科学与技术学院

实验一 Java编程开发环境

一、实验学时:1 学时

二、实验目的:

1. 学习从网络下载JDK开发工具与帮助文档。 2. 学习安装JDK开发工具及其文档。

3. 掌握Java Application程序的开发过程并编写一个Java Application程序。

4. 学习使用JDK的帮助文档。

三、必须学习和掌握的知识点:

1. 掌握使用JDK开发Java程序的步骤。

2. 掌握Java程序的基本语法。

四、实验内容:

1. 创建一个―Hello,World‖程序,该程序只要输出这句话即可。你所编写的类里只需一个方法(―main‖方法会在程序启动时被执行)。记住要把它设为static形式,并指定参数列表——即使根本不会用到这个列表。用javac进行编译,再用java运行它。。

2. 观察程序的运行结果

3. 打印源程序清单

4. 改变工作目录,观察编译程序和运行程序是否可以正常工作,思考为什么,如何做?

2

3

实验二 Java程序流程控制

一、实验学时:1学时

二、实验目的:

1. Java语言基本元素

2. Java数据类型

3. Java语言结构

4. Java控制语句

5. Java类定义规范

三、必须学习和掌握的知识点:

1. 分支语句:if-else, switch

2. 循环语句:while, do-while, for

3. 与程序转移有关的其它语句:

4. break, continue, return

四、实验内容:

1. 写一个接收两个字符串参数的方法,用各种布尔值的比较关系来比较这两个字符串,然后把结果打印出来。做== 和 != 比较的同时,用equals()作测试。在main()里面用几个不同的字符串对象调用这个方法。

4

2. 写一个会随机生成25个整型值的程序。对每一个值,用if-else

语句判断其是大于、小于,还是等于下一个随机生成的值。

3. 写一个打印从1到100的值的程序。

5

6

实验三 对象的初始化与清除

一、实验学时:2学时

二、实验目的:

1. 掌握Java程序面向对象编程的基本架构

2. 掌握子类的对象就是父类的对象的规律

3. 熟悉和掌握一维和二维数组的使用

三、必须学习和掌握的知识点:

1. 掌握类的创建(属性与方法的定义和声明)

2. 掌握构造函数的定义和声明(重载的构造函数:默认构造函数与参数)

3. 使用get../set..字段读写

4. 初始化(定义初始化和静态初始化)

5. 数组和数组类Arrays的使用

四、实验内容

1. 创建一个名为Dog 的类,具有重载的bark( )方法。此方法应根据不同的基本数据类型进行重载,并根据被调用的版本,打印出不同类型的狗吠(barking)、咆哮(howling)等信息。编写main( )来调用所有不同版本的方法。 7

8

2. 编写名为Tank 的类,此类的状态可以是满的或空的。其“终

结条件”是:对象被清除时必须处于空状态。请编写finalize( ) 以检验终结条件是否成立。在main( ) 中测试Tank 可能发生的几种使用方式。

3. 编写一个方法,能够产生二维双精度型数组并加以初始化。

数组的容量由方法的形式参数决定,其初值必须落在另外两个形式参数所指定的区间之内。编写第二个方法,打印出第一个方法所产生的数组。在main( )中通过产生不同容量的数组并打印其内容来测试这两个方法

9

10

实验四 隐藏具体实现

一、实验学时:2学时

二、实验目的:

1. 类是如何对它的成员进行访问权限控制的

2. 掌握类是如何被打包到一个程序库中的

三、必须学习和掌握的知识点:

1. 访问权限控制

四、实验内容

1. 创建一个带有public, private, protected,和包访问权限域以及方法成员的类。创建该类的一个对象,看看在你试图调用所有类成员时,会得到什么类型的编译信息。请注意,处于同一个目录中的所有类都是缺省包的一部分。

11

2. 将local目录加入到CLASSPATH中,然后在local目录下编写以

下文件:

package local;

class PackagedClass {

public PackagedClass() {

System.out.println("Creating a packaged class");

}

}

然后另一个目录中创建下列文件:

// foreign:Foreign.java

package foreign;

import local.*;

public class Foreign {

public static void main (String[] args) {

PackagedClass pc = new PackagedClass();

}

}

解释一下为什么编译器会产生错误。如果将Foreign类置于local包之中的话,会有所改变吗?

12

13

实验五 复用类

一、实验学时:2学时

二、实验目的:

1. 组合

2. 继承

3. 掌握继承(属性和方法的继承)的规律

4. 掌握构造函数继承的规律

三、重点:

1. 组合与继承之间选择

2. 名称屏蔽(Name hiding)

3. 向上转型(upcasting)

4. final

四、实验内容

1. 创建一个Root 类,令其含有名为Component 1、Component

2、Component 3的类各一个实例(这些也由你写)。从Root中派生一个类stem,也含有上述各―组成部分‖。所有的类都应带有可打印出类的相关信息的缺省构造器。 14

2. 检查包括继承在内的初始化全过程,是很有益的。请追踪并

解释下例的执行结果。

class Insect {

private int i = 9;

protected int j;

Insect() {

System.out.println("i = " + i + ", j = " + j);

j = 39;

}

private static int x1 =

print("static Insect.x1 initialized");

static int print(String s) {

System.out.println(s);

return 47;

}

}

public class Beetle extends Insect {

private int k = print("Beetle.k initialized");

public Beetle() {

System.out.println("k = " + k);

System.out.println("j = " + j);

}

private static int x2 =

print("static Beetle.x2 initialized");

public static void main(String[] args) {

System.out.println("Beetle constructor");

Beetle b = new Beetle();

}

}

15

16

实验六 多态

一、实验学时:2学时

二、实验目的:

1. 多态polymorphism

2. 动态绑定dynamic binding

三、重点:

1. 向下转型与运行期类型标识

2. 构造器内部的多态方法的行为

3. 运行期类型识别

四、实验内容

1. 创建一个Rodent(啮齿动物):Mouse(老鼠),Gerbil(鼹鼠),Hamster(大颊鼠)这样的继承层次结构。在基类中,提供对所有的Rodent都通用的方法,在基类中,根据特定的Rodent类型重载这些方法,以便执行不同的行为。创建一个Robent数组,填充不同的Rodent类型,然后调用基类方法,观察发生什么情况。

17

2. 修改以上练习中的Rodent,使其成为一个抽象类。只要有可

能,就将Rodent的方法声明为抽象方法。

18

3. 修改以上练习,使其能够演示基类和导出类的初始化顺序。

然后向基类和导出类中添加成员对象,并显示在构建期间初始化发生的顺序。

4. 创建一个不包含任何方法的抽象类,从它那里导出出一个类,

并添加一个方法。创建一个静态方法,可以接受一个指向基类的引用,将其向下转型到导出类,然后再调用该静态方法。在main()方法中,证实它的可行性。然后,将基类加上abstract声明,这样就不再需要进行向下转型。

19

20

实验七 接口与内部类

一、实验学时:2学时

二、实验目的:

1. 掌握接口的使用规律

2. 掌握内部类的使用规律

三、重点:

1. 嵌套接口

2. 在方法和作用域内的内部类

3. 匿名内部类

4. 从多层嵌套类中访问外部

5. 闭包与回调

四、实验内容

1. 证明一个接口的属性在缺省情况下是static和final的。

21

2. 创建一个接口 U,包含三个方法。创建第一个类A,它包含一

个方法,在此方法中写一个匿名内部类,生成U的引用。创建第二个类B,它包含U的数组。B应该有几个方法,第一个方法可以接受一个U的引用并存储到数组中;第二方法将数组中的引用设为null;第三个方法遍历此数组。在U中调用这些方法,在其main()中创建一组A的对象,和单独一个B的对象。用那些A类对象所产生的U类型的引用填满B对象的数组。使用B回调所有A的对象。再从B中移除某些U的引用。

22

实验八 异常和错误处理

一、实验学时:1学时

二、实验目的:

1. 熟悉和掌握java中对异常的处理机制

2. 异常的抛出和捕捉

三、重点:

1. java的异常处理机制

四、实验内容

1. 建立一个三层的异常继承体系,然后创建基类A,它的一个方法能抛出异常体系的基类异常。用B继承A,并且重载这个方法,让它抛出第二层的异常。让C继承B,再次重载这个方法,让它抛出第三层的异常。在main( ) 里面创建一个C类型的对象,把它向上转型为A,然后调用这个方法。

23

24

实验九 Java I/O系统

一、实验学时:1学时

二、实验目的:

1. 熟悉和掌握流式输入输出的基本原理

2. 标准输入输出操作接口

三、重点:

1. InputStreamReader、OutputStreamReader的使用

2. PrintWriter类的使用

四、实验内容

1. 创建一个叫做SortedDirList的类,具有一个可以接受文件路径信

息,并能构建该路径下所有文件的排序目录列表的构造器。创建两个重载的list(),根据参数产生整个列表或者列表子集。添加size()方法,能够接受文件名并产生该文件的大小。

25

26

实验十 多线程编程

一、实验学时:2学时

二、实验目的:

1. 熟悉和理解线程的概念、线程的生命周期

2. 熟悉和掌握多线程的实现方法:继承Thread类与使用Runnable接口

三、重点:

1. 线程的生命周期

2. 使用Runnable接口编写多线程程序

四、实验内容

1. 写一个“忙等待”的例子。一个线程休眠一段时间然后把一个标志设为真。第二个线程在一个while循环中观察这个标志(这就是“忙等待”),当标志变为真的时候,把这个标志设置为假,并向控制台报告这个变化。注意程序在“忙等待”里花费的时间,然后重写这个程序,这时使用wait( )而不是“忙等待”。

27

2. 使用wait( ) 和notify( )解决一个生产者,一个消费者的问题。

生产者不能覆盖消费者的缓冲区,这在生产的速度大于消费的时候有可能发生。如果消费者的速度大于生产者,那么它一定不能把同样的数据读取两遍。不要对生产者和消费者的速度做任何假设。

28

实验十一 杂货店模拟系统 下载BlueJ 工程,其中有两个基本类: PriceAndStockManager 和Cashier 。

1. 完成Cashier 类;

2. 创建Grocery 类,测试PriceAndStockManager 和Cashier的正确性。要求其中包含 main方法,由main方法创建一个

PriceAndStockManager 对象和与Manager 对象相关的两个 Cashier 对象。 调用Cashier 对象的buy 方法,并检查两种产品的库存状况。

3. 修改PriceAndStockManager,使它包含并管理Product 对象。在 Product 类中存储产品价格price及其库存量; 要求

PriceAndStockManager管理三种产品。要求修改后 Cashier和 Grocery 依然能照常工作。此时,工程中共有四个类:: Grocery, Product, PriceAndStockManager, Cashier。

4. 创建一个Java application,模拟杂货店里的操作。要求此应用程序要跟踪所有的产品售出情况。由收银员负责产品的售出,产品售出纪录要针对各个顾客进行。对每个顾客的每次结账,收银员要检查产品的价格和数量,并计算应收总数。与此同时,产品的库存量要随着售卖进行相应的更新。在一天结束后,需要打印两种报表:一张用来纪录每个收银员的交易,另一个打印每种产品的库存余额。

为了简化任务,我们也可以假设顾客总有足够的钱付账。即我们假设交易不成功只能是由库存不足引起,而不会是由于顾客没有足够的资金。

另外,我们假设杂货店里有三件产品,分别是 ―apples‖, ―oranges‖,和 ―pomelos‖. 请将它们的价格和库存初值设置为:

"apples": 15.75 pesos, 50 items

“oranges‖: 12.50 pesos, 80 items

"pomelos": 95.25 pesos, 25 items

要求Cashier类提供以下方法:

1. public void startPurchase( double money ):

标志交易的开始,参数 money 代表顾客在购买之初拥有的资金量。

2. public void buy( String productName, int qty ):

买产品名为productName 的产品共qty件。同时检查可能出现的错误,如qty 为负值、没有足够的资金或库存。如果产品名称不是店里有的产品, 29

只需提醒库存不足。这里注意需要定义一些常用的异常,并在适当的地方抛出。

3. public void endPurchase():

标志交易的结束,打印交易金额和找回钱数。

4. public void printSalesSummary():

相当于盘账。打印出全天的顾客总数及收回的资金总数。

Cashier类提供需要以下属性应能跟踪总交易数、当日接待的总顾客数、当前顾客的交易金额及顾客实际给出的金额。注意 Cashier 的构造函数需要的参数:PriceAndStockManager对象。Cashier 需要调用这个对象的方法。

PriceAndStockManager 类应提供以下方法:

1. 返回给定产品的价格

2. 返回给定产品的库存

3. 完成产品的交易,名字随意起。

4. 打印每种产品的库存的方法:printInventoryReport()

该类当然还应该定义并创建 Product 对象,并通过Product 对象获得产品价格和库存,包括更新库存量等。要求在实例化PriceAndStockManager时创建Product 对象。

Product类用于保存 价格和库存信息。其方法的实现可以发挥大家的自由。

最后,请创建一个测试类GrocerySimulation.java,要求在其中创建一个(唯一的) PriceAndStockManager 对象,同时创建与之相关的几个Cashier 对象。让这几个cashiers执行一些交易任务,最后调用 每个cashier 的printSalesSummary()方法及PriceAndStockManager 对象的printInventoryReport() 方法。

30

31

实验十二 成绩管理系统

1. 简单介绍:

创建一个GUI 应用程序(或Applet), 用来帮助老师管理学生的成绩。能实现对成绩的增、删、改以及排序等任务。

2. 所需类的描述:

1. GradeSheetApplet – 主类。

2. Row – 继承 java.awt.Panel;包括一些用来输入成绩的TextFields。

3. Grid – 通过管理Students数组保存数据;提供方法实现增、删、改以及排序等任务; 通过管理Rows数组保存用户的输入数据; 数组的大小由学生的数量决定。

4. Student –用来封装某个特定学生的数据: ID Number, Last Name, First Name, Numeric Grade, Letter Grade (A,B,C,D,E几个等级,由成绩来决定)。

5. StudentInput – 包含一些TextFields 使得用户可以在程序中输入数据。

3. 其它要求

错误检查:程序应能从各种异常(如输入数据错误或其他任何异常)中返回,并提供足够的数据证明当一种错误的情况发生时,程序是异常终止或是正常退出。

程序注释和可读性:要求程序遵循业界的编码规范。

GUI 设计:学生可以自己设计。

32

33

更多相关推荐:
哈尔滨工程大学实验报告

实验报告哈尔滨工程大学教务处制实验一软硬件实验环境配置实验一实验目的本次实验主要是要求信息安全专业学生熟悉常用的保密泄密分析软件及其环境配置等工作本次课通过破解二进制文件使学生掌握常用的代码分析工具从而为以后进...

哈工程核学院两相流实验报告一

水平管空隙率的测量预习报告一实验目的1基本掌握用仪测量空隙率的方法2了解与间的关系二实验原理射线衰减法测量是目前应用最多的一种方法原因是这种方法使用简便能在不干扰流场的情况下准确地测量这种方法的基本原理是根据射...

哈工程实验报告封皮

实验报告哈尔滨工程大学教务处制

哈工程数字信号处理实验报告1

数字信号处理实验实验一基本信号班级姓名学号指导教师20xx年10月实验一基本信号一实验原理本节专注于用MATLAB产生一些基本离散信号的问题主要是有那个MATLAB内部向量程序来产生信号用MATLAB的stem...

哈工程通信原理实验报告

实验一数字基带信号实验一实验目的1了解单极性码双极性码归零码不归零码等基带信号波形特点2掌握AMIHDB3码的编码规则3了解HDB3AMI编译码集成电路CD22103二实验仪器l双踪示波器一台2通信原理型实验箱...

哈工程软件测试实验报告1

软件质量保证与测试课程实验报告实验1:软件质量保证和软件确认过程缺席:扣10分实验报告雷同:扣10分实验结果填写不完整:扣110分其他情况:扣分<=5分总扣分不能大于10分

哈工程电子工艺实验报告

电子工艺训练报告收音机焊接工程训练中心班级姓名学号指导教师20xx410第1页共6页第16页一实验目的通过对一台收音机的安装焊接调试使我们掌握基本的焊接技术学会元器件识别测试和安装的方法熟悉手工焊锡的常用工具的...

哈工程最权威的大物演示实验报告

物理演示实验物理演示实验自主设计方案学生姓名学生学号选课时间月日时时联系电话方案得分是否给与经费支持是否哈尔滨工程大学物理演示实验制填写说明及注意事项一方案书须逐项认真填写填写内容必须实事求是表达明确严谨二设计...

哈工程核学院两相流实验报告三

两相流流型与参数测量一实验目的1熟悉台架掌握流量测量仪表的使用2观察水平管中不同流型的特点3根据各工况点实验数据绘制曲线二实验设备流量测量仪器试验管流量控制仪器三实验原理质量含气率1含液率质量含气率1含液率根据...

哈工程电子工艺训练实验报告

电子工艺训练报告姓名学号专业班级指导教师提交日期一实验目的通过对一台正规产品收音机的安装焊接调试使学生掌握基本的焊接技术学会元器件识别测试和安装的方法掌握万用表的使用方法掌握超外差式收音机的工作原理学会识别电路...

嵌入式系统实验报告 哈工程

嵌入式系统设计实验报告班级学号姓名成绩指导教师20xx0616武俊鹏刘书勇

哈工程FPGA实验报告——16×16点阵

FPGA实验报告姓名学号指导教师20xx610实验六点阵扫描显示实验一实验原理根据硬件电路可知点阵的控制端口由行端口和列端口组成分别为16个相当于256个LED灯要是某一个灯亮只需使对应位置上一端为高一端为低该...

哈工程实验报告(39篇)