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

课程:《程序设计与数据结构》 班级: 1823
姓名: 高宽让
学号:20182331
实验教师:王志强
实验日期:2019年9月30日
必修/选修: 必修

一、实验内容

(一)Java Socket编程

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

(二)Java和密码学

参考 http://www.cnblogs.com/rocedu/p/6683948.html

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

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

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

(四)远程有理数计算器

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

(五)远程复数计算器

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

二、 实验过程及结果

1.实验一和实验二我是完全按照王老师给的博客按照步骤一步一步的进行实验,其中的代码全是复制博客的,这部分没有什么好说的。



2.实验三我被分配的工作是做有理数的计算器,有理数的计算中,加减法和整数类似,分子分母各算各的最后再来个化简,但是乘法和除法就涉及到了交叉运算,但只要小心一点也能避免出错
3.因为我做的是有理数计算器,所以我选的就是有理数服务器和复数客户端,客户端这方面没有什么好说的,照本宣科就是。但服务器这边要接受数据,要拆分并分析数据,还要调用有理数计算器,最后还要把结果重新组成一个分数发过去,特别的繁琐,也特别的细致。我做这一块的时候总是出现各种各样的错误,但在董其鹏同学的帮助下全都解决了。

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

问题1:编的一部分类的代码,始终没有出现绿色的run按钮,也无法编译运行
问题1解决方案:实际上有些代码并不需要去编译运行,只要能够被引用就可以了。但是这类代码大都没有main类,要进行编辑和运行的话,只徐要在代码中加一个空的main类。
问题2:分数的运算直接是最简单的代数运算了
问题2解决方案:没有考虑到通分和约分的问题,碰到一些特殊的分数就不能进行运算了
问题3:客户端发过来的是一个字符串,不能直接运算
问题三解决方案:把字符串按照中间的符号分成几段,需要用到循环判断和字符串数组的相关知识

四、 其他(感悟、思考等)

这次的实验说实话对我来说难度很大,里面有好多的知识点我都没有掌握,连算法都没有一个清晰思路,编程也有很大的难度,经常出现一些我都无法理解的错误,但幸好有其他会的同学和学长学姐的帮助我才能成功完成这次实验,这次实验总之是给我泼了一盆冷水,让我认识到了自己的真实水平。

参考资料

posted @ 2019-10-07 19:13  20182331  阅读(247)  评论(0编辑  收藏  举报