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

实验四报告

  • 课程:《程序设计与数据结构》
  • 班级: 1923
  • 姓名: 李歆韵
  • 学号:20192319
  • 实验教师:王志强
  • 实验日期:2020年10月26日
  • 必修/选修: 必修

1.实验内容

(一)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码云。

2. 实验过程及结果

2.1 Java Socket编程

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class Server1923 {
public static void main(String[] args) throws IOException {
//1.建立一个服务器Socket(ServerSocket)绑定指定端口
ServerSocket serverSocket=new ServerSocket(8000);
//2.使用accept()方法阻止等待监听,获得新连接
Socket socket=serverSocket.accept();
//3.获得输入流
InputStream inputStream=socket.getInputStream();
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));
//获得输出流
OutputStream outputStream=socket.getOutputStream();
PrintWriter printWriter=new PrintWriter(outputStream);
//4.读取用户输入信息
String info;
System.out.println("服务器已经建立......");
while(!((info = bufferedReader.readLine()) ==null)){
System.out.println("我是服务器,用户信息为:" + info);
}
//5.关闭资源
printWriter.close();
outputStream.close();
bufferedReader.close();
inputStream.close();
socket.close();
serverSocket.close();
}
}

2.2 java和密码学







2.3 编写有理数/复数计算器

package ComplexNumbers;

public interface Complex {
public String ComplexAdd();
public String ComplexSub();
public String ComplexMulti();
public String ComplexDiv();
public String ComplexCompare();
}

2.4 远程有理数计算器

package ex4;

public class RationalNumber {
private int numerator ,denominator;
public RationalNumber(int num,int den){
if(den==0)
den=1;
else if(den<0){
den = -1den;
num = -1
num;
}

numerator = num;
denominator = den;
reduce();
}

public int getNumerator() {
return numerator;
}

public int getDenominator() {
return denominator;
}

public RationalNumber reciprocal (){
return new RationalNumber (denominator,numerator);
}
public RationalNumber add(RationalNumber op2) {
int commonDenominator = denominator * op2.getDenominator();
int numerator1 = numerator * op2.getDenominator();
int numerator2 = op2.getNumerator() * denominator;
int sum = numerator1 + numerator2;
return new RationalNumber(sum,commonDenominator);
}
public RationalNumber subtract (RationalNumber op2){
int commonDenominator = denominator * op2.getDenominator();
int numerator1 = numerator * op2.getDenominator();
int numerator2 = op2.getNumerator() * denominator;
int different = numerator1 - numerator2;
return new RationalNumber(different,commonDenominator);

}
public RationalNumber multiply(RationalNumber op2) {
int numer = numerator * op2.getNumerator();
int denom = denominator * op2.getDenominator();
return new RationalNumber(numer, denom);
}

public RationalNumber divide(RationalNumber op2) {
return multiply(reciprocal());
}
public boolean isLike (RationalNumber op2)
{
return (numerator == op2.getNumerator()&& denominator == op2.getDenominator());
}
public String toString() {
String result;
if(numerator0)
result ="0";
else
if(denominator
1)
result = numerator+"";
else
result = numerator +"/"+denominator;
return result;
}
private void reduce()
{
if(numerator !=0)
{
int common = gcd(Math.abs(numerator),denominator);

numerator = numerator/common;
denominator = denominator/common;

}

}
private int gcd (int num1,int num2)
{
while(num1 !=num2)
if(num1>num2)
num1 = num1-num2;
else
num2 = num2-num1;
return num1;
}

}

2.5 远程复数计算器


3.其它

在进入第四周的学习之后,作业量开始增多,同时也增加了相应的课堂实践项目。让我感受到了Java这门课程需要多加练习。学习的也不再局限于书本上的代码,更多是根据博客的自学项目。但是从一开始只能求助于同学。

参考资料

posted on 2020-10-31 22:08  节奏阿莱士  阅读(109)  评论(1)    收藏  举报

导航