基于Socket的阿基米德螺线图形设计_Java基础课程设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

南京工程学院课程设计说明书(论文)题目基于Socket的控制绘制阿基米德螺线课程名称JAVA基础院(系、部、中心)计算机工程学院专业网络工程班级网络132学号202130834学生姓名薛康威设计地点信息楼A406指导教师叶核亚设计起止时间:2015年6月15日至2015年6月19日成绩-1-基于Socket的控制绘制阿基米德螺线一、课程设计目的和要求JAVA基础课程设计是巩固所学理论知识、提高程序设计能力的重要实践环节。课程设计的目的是,使学生能够综合应用Java基础知识和基本方法,编写实用有效的应用程序,体会软件设计的全过程,深入理解和进一步巩固所学知识,培养自学能力,培养独立分析问题和解决问题的作风和能力,提高软件设计能力,为今后进行系统软件和应用软件的开发研究打下坚实基础,培养刻苦钻研精神和严谨的治学作风。本课程设计的要求是,设计具有图形用户界面的、能够响应事件、能够处理异常的Java应用程序,并包含线程、流、文件操作、网络通信等技术。进行课题的需求分析、设计方案准备、编程、运行、调试、完善等软件设计的各环节,程序必须运行通过,对于各种输入数据,有明确的不同的输出结果。程序运行有错误时,必须采取各种调试手段排除错误。二、题意说明及分析基于Socket的控制绘制阿基米德螺线,意思就是指有两个进程通过TCP建立连接,其中服务端负责发送数据指令,客户端接收这些数据指令后开始绘制阿基米德螺线,建立这样一个单项传输数据的连接。加入文件操作,将服务端的这些数据保存进指定文件内,打开文件则可重新调用此前保存的数据,继续绘图。本次程序有三个重要的操作。首先是基于TCP连接的Socket通信,实现两个进程的互通,其次是传输数据时对输入输出流的操作,最后是保存和打开文件的实现(其中也涉及对流的操作)。三、算法设计与分析(1)首先得创建两个进程,分别以服务端ArchimedesServer和客户端ArchimedesClient创建,通过Socket连接。具体实现:1、服务端创建指定端口号的ServerSocket对象,调用accept()方法等待接收客户端的连接请求,等待期间当前进程阻塞。2、客户端创建Socket对象,指定服务端主机的ip和端口,发送TCP连接请求。-2-3、服务端接收客户端连接请求,进程继续运行,建立TCP连接,accept()方法返回一个Socket对象,通过该对象和客户端Socket对象实现实时数据通信。(2)由于是一对一单向通信,约定由服务端发送数据,客户端接收数据并运行。具体实现是服务端获得Socket输出流,以数据字节输出流输出。客户端获得Socket输入流,以数据字节输入流输入,读取数据流的值。发送的数据有两个,圈数和颜色(double型和int型)。(3)这里保存和读取的文件是阿基米德螺线的参数,分别是圈数(doublen)、颜色(intrgb)和颜色按钮数组的下标(intcl)(为了打开文件后重新调用颜色参数,从而选中该按钮)。保存文件时,以文件字节输出流打开文件,数据字节输出流写入文件内。反之,读取文件时,数据字节输入流读取文件内容,并写入圈数文本框内和选中所读取的颜色按钮,运行即可。四、源程序服务端程序:importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.net.*;importjava.io.*;publicclassArchimedesServerextendsJFrameimplementsActionListener{privateDataOutputStreamdout;privateJPaneljp1,jp2;privateJRadioButtonbcolor[];privateJButtonjb1,jb2,jb3,jb4;privateJTextFieldtext_l,text_q,text_f;privateintflag=1;privatedoublen;privateintrgb,cl;privateStringfilename;publicArchimedesServer(intport,Stringname)throwsIOException{super(绘图控制端+InetAddress.getLocalHost()+:+port);this.setDefaultCloseOperation(EXIT_ON_CLOSE);jp1=newJPanel();jp2=newJPanel();text_q=newJTextField(5);text_l=newJTextField(15);text_f=newJTextField(data.data,6);jp1.add(newJLabel(圈数:));jp1.add(text_q);jp1.add(newJLabel(颜色:));Stringcolorstr[]={红,绿,蓝};ButtonGroupcolorgroup=newButtonGroup();bcolor=newJRadioButton[colorstr.length];for(inti=0;ibcolor.length;i++){-3-bcolor[i]=newJRadioButton(colorstr[i]);colorgroup.add(bcolor[i]);jp1.add(bcolor[i]);bcolor[i].addActionListener(this);}jb1=newJButton(开始绘制);jb1.addActionListener(this);jb2=newJButton(断开);jb2.addActionListener(this);jb3=newJButton(保存数据);jb3.addActionListener(this);jb4=newJButton(打开);jb4.addActionListener(this);jp2.add(jb1);jp2.add(jb2);jp2.add(jb3);jp2.add(text_f);jp2.add(jb4);this.getContentPane().add(jp1,Center);this.getContentPane().add(text_l,North);this.getContentPane().add(jp2,South);this.setVisible(true);this.pack();ServerSocketserver=newServerSocket(port);//创建指定端口的ServerSocket对象Socketclient=server.accept();//等待连接请求this.text_l.setText(连接+client.getPort());this.dout=newDataOutputStream(client.getOutputStream());//数据字节输出流while(flag==1){continue;}dout.close();server.close();}publicvoidwriteTo(Stringfilename){try{FileOutputStreamfout=newFileOutputStream(filename);DataOutputStreamdout2=newDataOutputStream(fout);this.n=Double.parseDouble(text_q.getText());dout2.writeDouble(n);//圈数写入文件dout2.writeInt(cl);//颜色按钮数组下标写入文件dout2.writeInt(rgb);//颜色值写入文件dout2.close();fout.close();}catch(FileNotFoundExceptione){e.printStackTrace();}catch(NumberFormatExceptionnfex){JOptionPane.showMessageDialog(this,无法转换成浮点数,提醒,JOptionPane.WARNING_MESSAGE);}catch(IOExceptione1){e1.printStackTrace();}}publicvoidreadFrom(Stringfilename){try{FileInputStreamfin=newFileInputStream(filename);DataInputStreamdin2=newDataInputStream(fin);this.text_q.setText(din2.readDouble()+);//读取圈数-4-this.bcolor[din2.readInt()].setSelected(true);//读取颜色按钮数组下标rgb=din2.readInt();//读取颜色值din2.close();fin.close();}catch(FileNotFoundExceptione){e.printStackTrace();}catch(IOExceptione1){e1.printStackTrace();}}publicstaticvoidmain(String[]args)throwsIOException{newArchimedesServer(3123,eric);}publicvoidactionPerformed(ActionEvente){Colorc=null;if(e.getSource()==bcolor[0]){c=newColor(255,0,0);rgb=c.getRGB();cl=0;}if(e.getSource()==bcolor[1]){c=newColor(0,255,0);rgb=c.getRGB();cl=1;}if(e.getSource()==bcolor[2]){c=newColor(0,0,255);rgb=c.getRGB();cl=2;}if(e.getSource()==jb1){try{this.n=Double.parseDouble(text_q.getText());if(n0||n20)thrownewException();dout.writeDouble(n);//写入圈数dout.writeInt(rgb);//写入颜色值}catch(NumberFormatExceptionnfex){JOptionPane.showMessageDialog(this,无法转换成浮点数,提醒,JOptionPane.WARNING_MESSAGE);}catch(Exceptionqwe){JOptionPane.showMessageDialog(this,圈数必须在0~20之间,提醒,JOptionPane.WARNING_MESSAGE);}}if(e.getSource()==jb2){jb1.setEnabled(false);//断开连接}if(e.getSource()==jb3){this.filename=text_f.getText();writeTo(this.filename);//保存到文件}if(e.getSource()==jb4){this.filename=text_f.getText();-5-readFrom(this.filename);//读取文件}}}客户端程序:importjava.awt.*;importjavax.swing.*;importjava.net.*;importjava.io.*;publicclassArchimedesClientextendsJFrame{privateArchimedesCanvasarchimedes;privateDataInputStreamdin;privateJPaneljp1;pri

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功