java实验报告实验环境_20165227 《Java程序设计》实验一(Java开发环境的熟悉)实验报告...

20165227 《Java程序设计》实验一(Java开发环境的熟悉)实验报告

一、实验报告封面

课程:Java程序设计 班级:1652班 姓名:朱越 学号:20165227

指导教师:娄嘉鹏 实验日期:2018年4月2日

实验时间:13:45 - 15:25 实验序号:实验一

实验名称:Java开发环境的熟悉

实验题目:实现凯撒密码并进行安全加固,并进行测试(正常情况,异常情况,边界情况)

实验内容:

1.使用JDK编译、运行简单的Java程序;

2.使用IDEA 编辑、编译、运行、调试Java程序。

实验要求:

1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程;

2.完成实验、撰写实验报告,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等);

3.实验报告中统计自己的PSP(Personal Software Process)时间;

4.严禁抄袭。

实验知识点:

JVM、JRE、JDK的安装位置与区别;

命令行运行javac;java;javac -cp; java -cp;

PATH,CLASSPATH,SOURCEPATH的设定方法与应用;

包管理:package;import;javac -d ;

Eclipse(Netbeans)管理Java项目,调试:断点、单步执行等;

Java基础语法:类型与类型转换;变量;运算符;流程控制等;

JDK帮助文档的使用。

二、实验步骤

(一)命令行下Java程序开发

1、打开Linux虚拟机中的终端进行如下操作

9af8141f3cc98996e85943378d69701b.png

2、通过vim Hello.java 来编辑代码,并用javac -d . Hello.java 来编译代码,最后用java zy.Hello 运行带包代码

19508bd3ebb60ccc7b758bd69a84d210.png

(二)IDEA下Java程序开发、调试

打开IDEA新建Java项目

f8c5ab25bab9f913fd2768a8c1fcdc18.png

运行代码用Alt+Shift+F10 快捷键

a18368cece7687eda6aabcd8cd7ea979.png

设置断点,直接在代码左侧单击右键

0f03404cdbf4f69448322834ee6e5ddd.png

运行断点用Alt+Shift+F9 快捷键;继续向下单步执行可使用Step IntoF7 和Step OverF8

5f5724f6c89551b102c4c175db204503.png

或者直接F9 快捷键运行完毕

9d0a697089b048c8fd3d1fedf8829a9b.png

条件断点:

在断点出单击右键出现设置

b919b28ebc1dd920e489afc03ea47419.png

从上一个断点通过快捷键F9 执行至条件断点

2099524b02188abb011f27815eb544fd.png

(三)练习

要求:实现凯撒密码并进行安全加固,并进行测试(正常情况,异常情况,边界情况)

凯撒密码:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。位数就是凯撒密码加密和解密的密钥。

1、代码

测试代码

import java.io.*;

import java.util.Scanner;

public class K {

public static void main(String[] args) {

Caeser person = new Caeser();

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

System.out.println("==========加密输入1,解密输入2==========");

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

Scanner scanner = new Scanner(System.in);

int n = scanner.nextInt();

if (n == 1) {

System.out.print("明文:");

Scanner scanner1 = new Scanner(System.in);

String m = scanner1.nextLine();

System.out.print("密钥:");

Scanner scanner2 = new Scanner(System.in);

int k = scanner2.nextInt();

try {

String serct = person.encrypt(m, k);

System.out.print("密文是:" + serct);

}

catch (E e){

System.out.println(e.warnMess());

}

} else {

System.out.print("密文:");

Scanner scanner1 = new Scanner(System.in);

String m = scanner1.nextLine();

System.out.print("密钥:");

Scanner scanner2 = new Scanner(System.in);

int k = scanner2.nextInt();

try {

String source = person.decrypt(m, k);

System.out.print("明文是:" + source);

}

catch (E e){

System.out.println(e.warnMess());

}

}

}

}

密码算法

public class Caeser {

String encrypt(String sourceString, int password) throws E{

char[] c = sourceString.toCharArray();

int m = c.length;

for (int i = 0; i < m; i++) {

if(c[i]>122||c[i]<65||(c[i]>90&&c[i]<97)){

throw new E(sourceString);

}

int mima = (c[i] - 'a' + password) % 26 + 'a';

c[i] = (char) mima;

}

return new String(c);

}

String decrypt(String sourceString, int password) throws E{

char[] c = sourceString.toCharArray();

int m = c.length;

for (int i = 0; i < m; i++) {

if(c[i]>122||c[i]<65||(c[i]>90&&c[i]<97)){

throw new E(sourceString);

}

int n = c[i] - 'a' - password;

if (n <= 0) {

n = n + 26;

}

int mima = n % 26 + 'a';

c[i] = (char) mima;

}

return new String(c);

}

}

异常代码

public class E extends Exception{

String message;

public E(String sourceString){

message = "输入错误!";

}

public String warnMess(){

return message;

}

}

测试

正常情况

75b65ed7396003c0fc875db269b1b35c.png

异常情况

0567755f412c47fccdd256bb70a7ea86.png

边界情况

bd89a87c147835c79fd2f852bc1573df.png

3、IDEA测试

正常情况

0632098691148f6fe60939e0a0081804.png

异常情况

8c1812d5a71213b27d8f35b175ccd497.png

边界情况

88937c845839781e6350063fd360a778.png

三、实验过程中遇到的问题

会出现密文出现乱码的问题,已解决

四、实验体会与总结

在做前两个实验的过程中让我对代码的理解和对IDEA调试方面的理解都加深了,弥补了之前对与断点调试的理解运用不恰的问题

对于第三个练习实验,凯撒密码算法的编写让我思考了很久,在这里我又发现了自己对于Java代码和C语言功底的不足,通过资料查找和时间才算是完成了这个实验,也算是触及了密码算法实现的一角,加深了对其的理解

步骤

耗时

百分比

需求分析

7min

5%

设计

10min

7%

代码实现

100min

73%

测试

5min

4%

分析总结

15min

11%

参考资料

实验1 Java语言基础 4 一、实验目的 4 二、实验要求 4 三、实验内容 4 (一) 声明不同数据类型的变量 4 (二) 了解变量的使用范围 5 (三) 使用关系运算符和逻辑运算符 5 (四) 使用表达式语句与复合语句 6 (五) 使用选择语句 6 (六) 使用循环语句 8 实验2 面向对象编程 11 一、实验目的 11 二、实验要求 11 三、实验内容 11 (一)创建 Applet 应用小程序 11 (二)创建对象并使用对象 12 (三)编写显示当前日期和时间的程序 13 (四)使用修饰符 14 (五)方法中参数传递 15 (六)类的继承性 16 (七)类的多态性 18 实验3 包、接口与异常处理 22 一、实验目的 22 二、实验要求 22 三、实验内容 22 (一)了解并使用 Java 的系统包 22 (二)创建并使用自定义包 22 (三)使用接口技术 24 (四)了解异常处理机制 25 实验4 常用系统类的使用 27 一、实验目的 27 二、实验要求 27 三、实验内容 27 (一)了解 Applet 的生命周期 27 (二)使用数学函数类 28 (三)使用日期类 29 实验5 建立图形用户界面 32 一、实验目的 32 二、实验要求 32 三、实验内容 32 (一)创建图形用户界面 32 (二)了解事件处理机制 34 (三)建立独立运行的窗口界面并使用匿名类 36 (四)使用 Swing 组件 39 (五)使用自定义对话框与内部类 41 实验6 图形处理 44 一、实验目的 44 二、实验要求 44 三、实验内容 44 (一)使用图形类 Graphics 44 实验7图形处理(二) 47 一、实验目的 47 二、实验要求 47 三、实验内容 47 (一)幻灯机效果——连续显示多幅图像 47 (二)使用滚动条改变背景颜色 48 (三)Applet 与 Application 合并运行 49 (四)创建电闪雷鸣的动画 50 实验8 流与文件 53 一、实验目的 53 二、实验要求 53 三、实验内容 53 (一)使用标准数据流的应用程序 53 (二)使用文件输入输出流的应用程序 54 (三)使用随机文件类的应用程序 54 (四)使用数据输入输出流与文件输入输出流类的应用程序 55 (五)使用对象输入输出流的应用程序 56 实验9 线程 58 一、实验目的 58 二、实验要求 58 三、实验内容 58 (一)Thread子类的方法实现多线程 58 (二)实现Runnable接口的方法实现多线程 59 实验10 数据库的连接:JDBC 61 一、实验目的 61 二、实验要求 61 三、实验内容 61 (一)配置ODBC数据源 61 (二)编写程序,按照下表的结构建立"student"表 61 (三)编写程序,完成填写功能 62 (四)编写程序,完成查询功能 62
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值