java第13次作业

1. 本周学习总结

以你喜欢的方式(思维导图、OneNote或其他)归纳总结多网络相关内容。

2. 为你的系统增加网络功能(购物车、图书馆管理、斗地主等)-分组完成

为了让你的系统可以被多个用户通过网络同时使用,需要为你的系统增加网络功能。

2.1 简述你想为你的系统增加什么网络功能?设计思路是什么?

  • 增加的网络功能:添加了一个Net类,让代码能够被客户端远程连接,从而进行一系列操作。使用TCP技术以及多线程技术,让系统能够同时被多个客户端访问。
  • 设计思路:在Net类中创建了ServerSocket对象的套接字,然后又创建一个ThreadServer类来实现多线程技术,该类实现了Runnable接口,在run方法里写出了用户可进行的相应的操作。然后在主函数中创建线程,不断接收新的客户端,由此可实现多个用户对系统的同时操作。

2.2 系统通过网络传递了什么信息?信息的格式是什么?

  • 系统通过网络传递的信息:系统通过网络将用户端或是服务端所进行的操作使用IO流传递给对方。
  • 信息的格式:信息使用字节流InputStream以及OutputStream存储,然后再通过字符流Scanner以及PrintWriter进行包装传输。

2.3 你的网络模块使用了TCP还是UDP技术?模块中的常用类是什么?


网络模块使用的技术:TCP技术。
模块中的常用类

  • TCP网络通信方面:ServerSocket类、Socket
  • 多线程方面:Runnable类、Thread类。

2.4 截图网络通讯部分的源代码与运行截图,并进行简单说明。

创建了一个Net类,并定义其端口为9000,在主函数中开启服务端进行客户端的接收,将接收到的客户端放到一个线程中分别进行处理。
Thread类中实现run方法来设定用户所能进行的操作。
Net类

public class Net {
	public static ServerSocket server;
	static{
		try {
			server = new ServerSocket(9000);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

main函数

public static void main(String[] args) throws IOException {
      while (true){  
            Socket incoming = NetServer.server.accept();
            Runnable r = new ThreadServer(incoming);
            Thread t = new Thread(r);
            t.start();
         }
}

Thread类

public class Thread implements Runnable{
	Socket incoming;

	public Thread(Socket incoming){
		this.incoming = incoming;
	}

	public void run() {
		boolean flag=false;
		try{
		InputStream inStream = incoming.getInputStream();
        OutputStream outStream = incoming.getOutputStream();
        Scanner in = new Scanner(inStream);         
        PrintWriter out = new PrintWriter(outStream, true);
        Menu menu=new Menu(incoming,in,out);
        while(!flag) {	
			out.println("\n\t~~~欢迎来到图书馆借阅系统~~~");
			out.println("\t1.注册");
			out.println("\t2.登录");
			out.println("\t3.退出系统");
			out.println("~~~请输入序号进行相应的操作~~~\n");
			switch(in.nextInt()) {
				case 1:		menu.register();break;
				case 2:		menu.login();break;
				case 3:		out.print("~~~正在退出图书馆借阅系统~~~");flag=true;break;
				default:	out.println("ERROR!!!输入错误!!!请重新输入~~");break;
			}
		}
		}catch(IOException e){
		}
	}
}

截图如下



3. 码云与PTA

3.1 统计本周完成的代码量

需要将每周的代码统计情况融合到一张表中。

周次 总行数 新增行数 总文件数 新增文件数
1 115 115 17 17
2 421 306 24 7
3 698 277 30 6
5 1085 387 38 8
6 1497 412 48 10
7 2033 536 57 9
8 2265 232 60 3
9 2728 522 65 5
10 3360 632 73 8
11 3958 598 83 10
12 4435 477 90 7
13 4802 367 96 6
14 5244 442 101 5
posted @ 2017-12-18 15:28  学java真开心  阅读(211)  评论(0编辑  收藏  举报