zoukankan      html  css  js  c++  java
  • 20182311 2019-2020-1 《数据结构与面向对象程序设计》实验四报告

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

    课程:《程序设计与数据结构》
    班级: 1823
    姓名: 冷冲
    学号:20182311
    实验教师:王志强
    实验日期:2019年9月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. 实验过程及结果

    1.java socket编程
    server


    client


    结对连接成功

    2.java和密码学












    3.编写复数运算器
    编写ToCal类把字符串转化为数字。

    编写Complex类用来处理数字进行运算。

    编写ComplexCal作为运算器调用前两类得到结果。

    4.远程复数计算器
    编写ComplexCall类调用ToCal和Comlex类得到结果。

    在第三步的基础上,修改Server为Calserver,调整交换性息。

    5.远程有理数计算器
    修改client为calclient

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

    • 问题1:编写远程计算器遇上的困难有两点,一是如何把客户端传送的字符串转化成公式进行运算,二是如何在运算有理数时解决复合运算的优先级和数据类型问题。
    • 问题1解决方案:明确要编写一个类来转换字符串和计算器类能识别的运算格式。
    • 在写复数的转换时时偷了点懒,默认客户端发来的字符串格式为“(a+bi)+(运算符)+(c+di)”。这样一来,除了a、b、c、d四位数字长度不确定外,其他符号位数都是确定的(把b和d前的正负号当作数字的一部分)。使用for循环递推,遍历整个字符串把a、b、c、d及中间运算符返回,传给运算器类即可。
    • 写到有理数运算及转化时,询问了助教,助教提出了堆栈及Stringtokenizer的使用。课本14章提出使用栈来复合运算,要将前缀表达式转化成后缀表达式。一开始的思路是,编写Ration类、RationCal类实现计算,strTocal转化字符串为中缀表达式,InfixtoPostifix转中缀为后缀。因为假期时间原因,决定在学习数据结构的时候再实现。
    • Stringtokenizer类可用来分割字符串,在处理字符串转化的时候可用于定义运算符及小括号为分隔符进行字符串的拆分。
    • 问题2:不太理解socket的原理
    • 问题2解决方案:
    • 问题3:为什么des每次分配密钥不同,却都能解开?
    • 问题3解决方案:des是对称密钥,只要保证加解密过程中使用的密钥一致即可。

    其他(感悟、思考等)

    通过这次试验初次接触到数据结构,对我而言是不小的收获。还是希望自己能调整好时间,跟上老师的进度。

    参考资料

  • 相关阅读:
    mac 10.15.7 修改PATH
    oc 属性类型一般用法
    ubuntu解压zip文件名乱码
    telnet 退出
    docker 根据容器创建镜像
    mac android adb device 没有显示设备
    Yii2 查看所有的别名 alias
    Yii2 App Advanced 添加 .gitignore
    ubuntu 18.04 搜狗突然就提示乱码
    An error occured while deploying the file. This probably means that the app contains ARM native code and your Genymotion device cannot run ARM instructions. You should either build your native code to
  • 原文地址:https://www.cnblogs.com/lengchong/p/11629042.html
Copyright © 2011-2022 走看看