实验四 函数与异常处理编程

Posted louzetao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验四 函数与异常处理编程相关的知识,希望对你有一定的参考价值。

实验任务一

        task1

        源代码

        View Code

        运行截图

        

        函数名(line1)、参数(line3、7、11),其中line7为自定义函数inc内参数

实验任务二

        task2_1

        源代码

        View Code

        运行截图

        

        task2_2

       源代码

       View Code

       运行截图

       

       由源代码task2_1可得,reserve的传递方式必然使用关键字传递

       task2_3

       源代码

       View Code

      运行截图  

      

实验任务三

      task3

      源代码

       View Code

      运行截图

       

实验任务四

        task4

        源代码

        View Code

        运行截图

        

实验任务五

        task5

        源代码

        View Code

        运行截图

        

实验任务六

        task6

        源代码

        View Code

         运行截图

         

实验任务七

        task7

        源代码

        View Code

        运行截图

        

实验任务八

        task8

        源代码

        View Code

        运行截图

        

 

 

 

 

 

  

 

20192312吴欣欣 实验四 《数据结构与面向对象程序设计》实验报告

20192312 2020-2021-1 实验四 《数据结构与面向对象程序设计》实验报告

课程:《程序设计与数据结构》
班级: 1923
姓名: 吴欣欣
学号:20192312
实验教师:王志强
实验日期:2020年10月30日
必修/选修: 必修

1.实验内容

(一)Java Socket编程
1.学习蓝墨云上教材《Java和Android编程》“第16章 输入/输出 ”和“第22章 网络”,学习JavaSocket编程
2.结对编程。结对伙伴A编写客户端SocketClient.java,结对伙伴B编写服务器端。
3.截图加学号水印上传蓝墨云,代码push到码云,并撰写实验报告。

(二)Java和密码学
以结对的方式完成Java密码学相关内容的学习。提交学习成果码云链接和代表性成果截图,要有学号水印。

(三)编写有理数/复数计算器
结对编程,结对伙伴A编写有理数计算器。结对伙伴B编写复数计算器。截图加水印上传蓝墨云,代码push码云。

(四)远程有理数计算器
结对编程,结对伙伴A编程实现客户端,结果伙伴B实现服务器端。
客户端通过键盘输入一个有理数计算的公式(例如:1/4 + 1/6 = ),并把该公式以字符串的形式发送给伙伴B(服务器端),服务器端根据字符串计算出结果为5/12,并把结果返回给客户端A,A收到结果后输出结果。截图加水印上传蓝墨云,代码push码云。

(五)远程复数计算器
结对编程,结对伙伴B编程实现客户端,结果伙伴A实现服务器端。
注意实验四(4)和实验四(5),一个人不能仅实现客户端,必须实现一个客户端和服务器,否则两个实验均不得分!!!

2.实验过程及结果

(一)Java Socket编程(我作为服务器,结对伙伴20192306孙洪丽作为客户端)

技术图片
技术图片

(二)Java和密码学

根据密钥的使用方法, 可以将密码分为对称密码和公钥密码两种。
对称密码(symmetric cryptography)是指在加密和解密时使用同一密钥的方式。
公钥密码(public-key cryptography)则是指在加密和解密时使用不同密钥的方式,公钥密码又称为非对称密码(asymmetric cryptography)。
1.凯撒密码
凯撒密码将字母表中的字母移动一定位置而实现加密。
明文记为m,密文记为c,加密变换记为E(k,m)(其中k为密钥),解密变换记为D(k,m)
凯撒密码的加密过程可记为如下一个变换:c≡m+k mod n (其中n为基本字符个数)
同样,解密过程可表示为:m≡c+k mod n (其中n为基本字符个数)
技术图片
在命令行输入密文Helloworld! 与移动位数5 得Mjqqtbtwqi!

2.Java对称加密-DES算法
运行java Skey_DES,在当前目录下将生成文件key1.dat,结果如下:
技术图片
输入java Skey_kb 运行程序,在程序的当前目录中将产生文件名为keykb1.dat的文件,屏幕输出如下:
技术图片
输入java SEnc运行程序,在程序的当前目录中将产生文件名为SEnc.dat的文件,屏幕输出如下:
技术图片
输入java SDec运行程序,将输出明文字符串“Hello World!”
技术图片

3.Java非对称加密-RSA算法
输入java Skey_RSA运行程序,当前目录下将生成两个文件:Skey_RSA_pub.dat和Skey_RSA_priv.dat,前者保存着公钥,后者保存着私钥。将文件Skey_RSA_pub.dat对外公布(如放在Web服务器上给大家下载,或者直接拷贝给所有需要的人),而Skey_RSA_priv.dat秘密保存。如下图:
技术图片

输入java Enc_RSA运行程序,得到如下结果:
技术图片
其中显示了公钥中的参数以及加密的结果c,这些都是很大的整数,n和c多达上百位。程序运行后密文c以字符串形式保存在文件Enc_RSA.dat中。

运行程序输入java Dec_RSA运行程序,得到如下结果:
技术图片

其中显示了私钥中的参数以及解密的结果,其中整型的明文转换后显示出字符串“Hello World!”。

4.使用密钥协定创建共享密钥
技术图片
技术图片

5.Java摘要算法- MD5
输入java DigestCalc abc来运行程序,其中命令行参数abc是原始数据,屏幕输出计算后的消息摘要:
技术图片
技术图片
得到输出:900150983cd24fb0d6963f7d28e17f72

(三)编写有理数/复数计算器

结对编程,结对伙伴A编写有理数计算器。结对伙伴B编写复数计算器。截图加水印上传蓝墨云,代码push码云。
编写有理数计算器
编写分数类
技术图片
技术图片
实现加减乘除运算
技术图片
技术图片
技术图片

(四)远程有理数计算器

结对编程,结对伙伴A编程实现客户端,结果伙伴B实现服务器端。(我作为有理数计算器服务端)
客户端通过键盘输入一个有理数计算的公式(例如:1/4 + 1/6 = ),并把该公式以字符串的形式发送给伙伴B(服务器端),服务器端根据字符串计算出结果为5/12,并把结果返回给客户端A,A收到结果后输出结果。截图加水印上传蓝墨云,代码push码云。
技术图片

(五)远程复数计算器

结对编程,结对伙伴B编程实现客户端,结果伙伴A实现服务器端。(我作为复数计算器客户端)
注意实验四(4)和实验四(5),一个人不能仅实现客户端,必须实现一个客户端和服务器,否则两个实验均不得分!!!
技术图片

3.实验过程中遇到的问题和解决过程

问题1:有理数运算无法将字符串分割为分数
问题1解决方案:利用Stringtokenizer类,Stringtokenizer类可用来分隔字符串,将/作为分隔符,分别读取分子和分母以实现运算。
问题2:作为客户端时无法连接到对方网址
问题2解决方案:关闭防火墙

4.感悟

实验过程中有些情况会与教程略有出入,也会出现教程中未曾提及的情况,要学会自己寻找办法解决。




























































以上是关于实验四 函数与异常处理编程的主要内容,如果未能解决你的问题,请参考以下文章

实验四 函数与异常处理编程

实验四函数与异常处理编程

实验四 函数与异常处理编程

实验四 函数与异常处理编辑

实验4 函数与异常处理编程

实验4 函数与异常处理编程