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

acusny acusny     2022-12-11     387

关键词:

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.感悟

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




























































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

课程:《程序设计与数据结构》班级:1923姓名:裴湘瑞学号:20192315实验教师:王志强实验日期:2020年10月26日必修/选修:必修1.实验内容(一)JavaSocket编程结对编程。结对伙伴A编写客户端SocketClient.java,结对伙伴B编写服务器... 查看详情

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

学号2019-2020-1《数据结构与面向对象程序设计》实验四报告课程:《程序设计与数据结构》班级:1823姓名:彭衍泰学号:20182317实验教师:王志强实验日期:2019年9月30日必修/选修:必修1.实验内容实验过程及结果实验过程中遇到... 查看详情

项目介绍——面向对象与软件工程实验四

一、队伍成员  队员: 耿嘉祺1700802067     汤庆澳1700802069     董帅1700802060  队长:谢泽华1700802064二、需求分析(NABCD)1、Need(需求)  网络时代,现代的人们生活都是快节奏的。上班族每天工作繁忙,... 查看详情

面向对象设计与构造课程总结作业(代码片段)

...面向对象方法理解的演进在面向对象课之前上学期写某物实验的数据处理程序和某组实验的数据生成程序的时候,比较频繁的使用结构体套函 查看详情

[wut]武理四年课程实验导航

...期面向对象程序设计计算机基础与编程综合实验第三学期数据结构面向对象与多线程综合实验第四学期可视化编程计算机数值分析软件工程基础实验数据结构与算法综合实验第五学期软件需求工程第一学期暂无收录第二学期面向... 查看详情

面向对象分析与设计实验七

实验一:http://www.cnblogs.com/scaugsh/p/8983219.html实验二:http://www.cnblogs.com/scaugsh/p/8983253.html实验三:http://www.cnblogs.com/scaugsh/p/9046697.html实验四:http://www.cnblogs.com/scaugsh/p/9056838.html实验七: 查看详情

20182332实验五《数据结构与面向对象程序设计》实验报告(代码片段)

20182332实验五《数据结构与面向对象程序设计》实验报告课程:《程序设计与数据结构》班级:1823姓名:盛国榕学号:20182332实验教师:王志强实验日期:2019年10月11日必修/选修:必修1.实验内容&过程&结果任务一:完成Hell... 查看详情

#20192311实验五《数据结构与面向对象程序设计》实验报告

20192311实验五《数据结构与面向对象程序设计》实验报告课程:《程序设计与数据结构》班级:1923姓名:张源峰学号:20192311实验教师:王志强实验日期:2020年11月1日必修/选修:必修实验内容1.AndroidStuidio的安装测试:参考《Java... 查看详情

2019-2020-2314《数据结构与面向对象程序设计》实验五报告

学号2019-2020-2314《数据结构与面向对象程序设计》实验四报告课程:《程序设计与数据结构》班级:1823姓名:鞠明翰学号:20182314实验教师:王志强实验日期:2019年10月18日必修/选修:必修1.实验内容1.1AndroidStuidio的安装测试参考... 查看详情

java面向对象程序设计(第二版)袁绍欣第四章答案

面向对象(上)1.名词解释:构造方法、抽象构造方法一般是用来初始化数据成员的,与类名相同,无返回值。分为有参和无参数,当一个类中没有定义构造函数时,系统会给该类中加一个默认的空参数的构造函数,方便该类初... 查看详情

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

课程:《程序设计与数据结构》班级:1823姓名:王美皓学号:20182322实验教师:王美皓实验日期:2019年9月9日必修/选修:必修1.实验内容基于命令行和IDE(IntelljIDEA简易教程](http://www.cnblogs.com/rocedu/p/4421202.html)进行简单的Java程... 查看详情

20155217实验四《java面向对象程序设计》实验报告

20155217实验四《Java面向对象程序设计》实验报告一、实验内容1.基于AndroidStudio开发简单的Android应用并部署测试;2.了解Android、组件、布局管理器的使用;3.掌握Android中事件处理机制。二、安装软件出现的问题1.安装这个版本的,... 查看详情

[面向对象与多线程综合实验]数据挖掘系统

资源下载课程开发工具下载:面向对象与多线程综合实验开发工具指导视频链接:数据挖掘系统指导视频实现源码、课程资源、实验指导书:dataminingsystem再版Gitee开源项目链接:dataminingsystem效果展示登录界面注册... 查看详情

#201923242020-2021-1《数据结构与面向对象程序设计》实验五报告

课程:《程序设计与数据结构》班级:1923姓名:夏馨学号:20192324实验教师:王志强实验日期:2020年11月1日必修/选修:必修1.实验内容1.AndroidStuidio的安装测试:参考《Java和Android开发学习指南(第二版)(EPUBIT,JavaforAndroid2nd)》第二... 查看详情

实验3

实验四类与对象的定义及使用1、理论知识:类:类(class)是描述对象的“基本原型”,它定义一类对象所能拥有的数据和能完成的操作,在面向对象的程序设计中,类是程序的基本单元。对象有三个主要特征:对象的行为:可以... 查看详情

20192304实验六《数据结构和面向对象的程序设计》实验报告(代码片段)

201923042020-2021-1《数据结构与面向对象程序设计》实验五报告课程:《程序设计与数据结构》班级:1923姓名:刘润衡学号:20192304实验教师:王志强实验日期:2020年11月5日必修/选修:必修1.实验内容(1)通过键盘输入一些整数,... 查看详情

面向对象数据库设计与应用02-数据库的创建

一、实验目的要求能熟悉运用并掌握数据库创建与登录命令,以及数据库创建句柄的运用。熟悉基本的数据库物理设计阶段的流程和步骤,能使用NTCA应用接口进行监听器的初步配置和使用,能熟悉利用TNSPING对网络配置进行基本... 查看详情

3面向过程与面向对象进一步比较(代码片段)

... 编程即写程序or写代码,具体是指程序员用特定的语法+数据结构+算法编写代码,目的是用来告诉计算机如何执行任务。  如果把编程的过程比喻为练习武功,那么编程范式指的就是武林中的各种流派,而在编程的世界里最... 查看详情