实验四 函数与异常处理编程
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.感悟
实验过程中有些情况会与教程略有出入,也会出现教程中未曾提及的情况,要学会自己寻找办法解决。
以上是关于实验四 函数与异常处理编程的主要内容,如果未能解决你的问题,请参考以下文章