云南农职 - 互联网技术学院 - 美和易思大一SCME JAVA高级结业考试机试试题

目录

一、语言和环境

二、实现功能

1、文件复制功能(IO)

2、消息接受站建设

三、评分标准

四、实现代码


一、语言和环境

  1. 实现语言:Java。
  2. 开发工具:eclipse。
  3. 使用技术:IO流+网络编程+多线程

二、实现功能

本系统要求实现易购商城的登录页面、首页面和购物车页面,具体实现功能如下:

1、文件复制功能(IO)

需求介绍:通过IO流技术点实现将文件从D盘根目录下复制到“D://java高级/answer”文件中;文件夹必须通过代码实现创建;

实现步骤:

(1)从FTP中下载“一剪梅.txt”文件,复制存放到D盘根目录下(D://)。

(2)创建FileCopyUtil类,使用IO流编写代码,通过代码实现文件的复制功能;

(3)使用代码在D盘下创建多级文件夹(D://java高级/answer; 注:无代码创建不计分);

(4)通过执行编写的代码块,将D盘下的“一剪梅.txt”文件复制到新创建好的“answer”文件夹中(注:无代码创建不计分);

2、消息接受站建设

需求介绍:分别编写客户端和服务端,客户端程序从控制台输入,敲击enter(回车)健发出消息,服务端接收消息并打印输出在服务端控制台;假如有100万个客户端同时发送消息给服务端,服务端需要从控制台打印输出100万条消息,为了提高效率,需要使用线程完成服务端代码;

实现步骤:

(1)通过ServerSocket创建服务端,端口号为8088;同时打印输出:“消息接受模式已启动”;

(2)使用while循环和多线程满足庞大客户量(客户端)所发出消息的接受,并以字符串打印输出在服务端控制台(注:需要注明是谁发出的消息,名字为:学生本人真实姓名;只需要一条信息即可,但必须通过多线程实现);

(3)通过new Socket("127.0.0.1",8088)创建客户端;实现从控制台发出消息,由于客户端每次只是发出一条消息,所以不需要使用线程,但需要在控制台打印输出(例如:您好,小王(注:你的真实名字)!您已连接成功!);

三、评分标准

题目一:文件复制功能

该评分标准如下:

15

通过代码创建多级目录(D://java高级/answer)

35

创建FileCopyUtil类实现复制功能

 

2

类名正确

 

30

在类中添加main方法,启动完成文件的复制

 

3

代码工整,命名规范

小计

50

题目二:消息接受站建设 消息接受站平台建 消息接受站平台建设 消息接受站平台建设

该评分标准如下:

20

客户端:正确创建客户端,并实现客户端的输入输出流 

30

服务端

 

20

创建线程类,编写方法(输入流),转化为字符串并打印输出在控制台中

 

8

创建服务端,在循环中启动多线程,实现消息的接受功能

 

2

代码工整,命名规范

小计

50

合计

100

四、实现代码

1、文件复制功能(IO)

package file.copy;

import java.io.File;

public class CreateFile {
	public static void main(String[] args) {
		//创建多级目录
		File file = new File("D://java高级/answer");
		file.mkdirs();
		if (file.exists()) {
			System.out.println("文件已创建!");
		}
	}
}
package file.copy;

import java.io.File;

public class FileCopy {
	public static void main(String[] args) {
		//调用复制文件的方法
		FileCopyUtil fileCopyUtil = new FileCopyUtil();
		fileCopyUtil.copyFile("D://一剪梅.txt", "D://java高级/answer/一剪梅.txt");
	}
}
package file.copy;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileCopyUtil {
	//文件输入流
	private FileInputStream inputStream;
	//文件输出流
	private FileOutputStream outputStream;
	//文件的内容长度
	private static int length;
	/**
	 * 复制文件的方法
	 * @param beginFile 起始文件的路径(被复制的文件地址)
	 * @param endFile   目标文件的路径(被粘贴文件的质地)
	 */
	public void copyFile(String beginFile,String endFile) {
		if (beginFile!=null&&endFile!=null) {
			try {
				//根据文件路径创建输入输出流对象
				inputStream=new FileInputStream(beginFile);
				outputStream=new FileOutputStream(endFile);
				try {
					//根据输入流对象获取需要复制的文件长度
					length = inputStream.available();
					//声明字节数据并定义空间大小
					byte[] by=new byte[length];
					//使用输入流将数据以字节的形式储存在by字节数组
					inputStream.read(by);
					//使用输出流将数据输出到目标文件(endFile)
					outputStream.write(by);
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}finally {
					try {
						inputStream.close();
						outputStream.close();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

2、消息接受站建设

package message;

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

public class SocketServer {
	public static void main(String[] args) throws IOException {
		ServerSocket server = new ServerSocket(8088);
		System.out.println("消息接受模式已启动...");
		//定义初始上线人数为0
		while (true) {
			Socket socket = server.accept();
			//线程启动
			new Thread(new ServerThread(socket)).start();
		}
	}
}
package message;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;

public class ServerThread implements Runnable{
	public Socket socket;
	
	public ServerThread(Socket socket) {
		super();
		this.socket = socket;
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub
		try {
			BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			while (true) {
				String readLine = bufferedReader.readLine();
				System.out.println(readLine);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
}
package message;

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

public class SocketServer {
	public static void main(String[] args) throws IOException {
		ServerSocket server = new ServerSocket(8088);
		System.out.println("消息接受模式已启动...");
		//定义初始上线人数为0
		while (true) {
			Socket socket = server.accept();
			//线程启动
			new Thread(new ServerThread(socket)).start();
		}
	}
}

 

posted @ 2020-10-29 17:31  明金同学  阅读(117)  评论(0编辑  收藏  举报