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

上传人:xmg****18 文档编号:141876967 上传时间:2020-08-13 格式:DOC 页数:11 大小:217.50KB
返回 下载 相关 举报
基于Socket的阿基米德螺线图形设计Java基础课程设计DOC_第1页
第1页 / 共11页
基于Socket的阿基米德螺线图形设计Java基础课程设计DOC_第2页
第2页 / 共11页
基于Socket的阿基米德螺线图形设计Java基础课程设计DOC_第3页
第3页 / 共11页
基于Socket的阿基米德螺线图形设计Java基础课程设计DOC_第4页
第4页 / 共11页
基于Socket的阿基米德螺线图形设计Java基础课程设计DOC_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《基于Socket的阿基米德螺线图形设计Java基础课程设计DOC》由会员分享,可在线阅读,更多相关《基于Socket的阿基米德螺线图形设计Java基础课程设计DOC(11页珍藏版)》请在金锄头文库上搜索。

1、 . . . 成绩工程学院课程设计说明书(论文)题 目 基于Socket的控制绘制阿基米德螺线 课 程 名 称 JAVA基础 院(系、部、中心) 计算机工程学院专 业 网络工程 班 级 网络132 学 号 202130834 学 生 姓 名 薛康威 设 计 地 点 信息楼A406 指 导 教 师 叶核亚 设计起止时间:2015年6月15日至2015年6月19日 . . . . 基于Socket的控制绘制阿基米德螺线一、 课程设计目的和要求JAVA基础课程设计是巩固所学理论知识、提高程序设计能力的重要实践环节。课程设计的目的是,使学生能够综合应用Java基础知识和基本方法,编写实用有效的应用程序

2、,体会软件设计的全过程,深入理解和进一步巩固所学知识,培养自学能力,培养独立分析问题和解决问题的作风和能力,提高软件设计能力,为今后进行系统软件和应用软件的开发研究打下坚实基础,培养刻苦钻研精神和严谨的治学作风。本课程设计的要,设计具有图形用户界面的、能够响应事件、能够处理异常的Java应用程序,并包含线程、流、文件操作、网络通信等技术。进行课题的需求分析、设计方案准备、编程、运行、调试、完善等软件设计的各环节,程序必须运行通过,对于各种输入数据,有明确的不同的输出结果。程序运行有错误时,必须采取各种调试手段排除错误。二、题意说明及分析基于Socket的控制绘制阿基米德螺线,意思就是指有两个进

3、程通过TCP建立连接,其中服务端负责发送数据指令,客户端接收这些数据指令后开始绘制阿基米德螺线,建立这样一个单项传输数据的连接。加入文件操作,将服务端的这些数据保存进指定文件,打开文件则可重新调用此前保存的数据,继续绘图。本次程序有三个重要的操作。首先是基于TCP连接的Socket通信,实现两个进程的互通,其次是传输数据时对输入输出流的操作,最后是保存和打开文件的实现(其中也涉及对流的操作)。三、算法设计与分析(1)首先得创建两个进程,分别以服务端ArchimedesServer和客户端ArchimedesClient创建,通过Socket连接。具体实现:1、服务端创建指定端口号的Server

4、Socket对象,调用accept()方法等待接收客户端的连接请求,等待期间当前进程阻塞。2、客户端创建Socket对象,指定服务端主机的ip和端口,发送TCP连接请求。3、服务端接收客户端连接请求,进程继续运行,建立TCP连接,accept()方法返回一个Socket对象,通过该对象和客户端Socket对象实现实时数据通信。(2)由于是一对一单向通信,约定由服务端发送数据,客户端接收数据并运行。具体实现是服务端获得Socket输出流,以数据字节输出流输出。客户端获得Socket输入流,以数据字节输入流输入,读取数据流的值。发送的数据有两个,圈数和颜色(double型和int型)。(3)这里保

5、存和读取的文件是阿基米德螺线的参数,分别是圈数(double n)、颜色(int rgb)和颜色按钮数组的下标(int cl)(为了打开文件后重新调用颜色参数,从而选中该按钮)。保存文件时,以文件字节输出流打开文件,数据字节输出流写入文件。反之,读取文件时,数据字节输入流读取文件容,并写入圈数文本框和选中所读取的颜色按钮,运行即可。 四、源程序服务端程序:import java.awt.*; import java.awt.event.*; import javax.swing.*; import .*;import java.io.*;public class ArchimedesServe

6、r extends JFrame implements ActionListenerprivate DataOutputStream dout;private JPanel jp1,jp2;private JRadioButton bcolor;private JButton jb1,jb2,jb3,jb4;private JTextField text_l,text_q,text_f;private int flag=1;private double n;private int rgb,cl;private String filename;public ArchimedesServer(in

7、t port,String name) throws IOExceptionsuper(绘图控制端 +InetAddress.getLocalHost()+:+port);this.setDefaultCloseOperation(EXIT_ON_CLOSE);jp1=new JPanel();jp2=new JPanel();text_q=new JTextField(5); text_l=new JTextField(15); text_f=new JTextField(data.data,6); jp1.add(new JLabel(圈数:); jp1.add(text_q); jp1.

8、add(new JLabel(颜色:); String colorstr=红,绿,蓝; ButtonGroup colorgroup=new ButtonGroup(); bcolor=new JRadioButtoncolorstr.length; for(int i=0;ibcolor.length;i+) bcolori=new JRadioButton(colorstri); colorgroup.add(bcolori); jp1.add(bcolori); bcolori.addActionListener(this); jb1=new JButton(开始绘制); jb1.add

9、ActionListener(this); jb2=new JButton(断开); jb2.addActionListener(this); jb3=new JButton(保存数据); jb3.addActionListener(this); jb4=new JButton(打开); 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.getConten

10、tPane().add(text_l,North); this.getContentPane().add(jp2,South); this.setVisible(true); this.pack(); ServerSocket server=new ServerSocket(port);/创建指定端口的ServerSocket对象Socket client=server.accept(); /等待连接请求this.text_l.setText(连接+client.getPort();this.dout=new DataOutputStream(client.getOutputStream();

11、/数据字节输出流while(flag=1)continue;dout.close();server.close();public void writeTo(String filename) try FileOutputStream fout=new FileOutputStream(filename);DataOutputStream dout2=new DataOutputStream(fout);this.n=Double.parseDouble(text_q.getText();dout2.writeDouble(n); /圈数写入文件dout2.writeInt(cl); /颜色按钮数

12、组下标写入文件dout2.writeInt(rgb); /颜色值写入文件dout2.close();fout.close(); catch (FileNotFoundException e) e.printStackTrace();catch(NumberFormatException nfex) JOptionPane.showMessageDialog(this, 无法转换成浮点数, 提醒, JOptionPane.WARNING_MESSAGE); catch (IOException e1) e1.printStackTrace();public void readFrom(String filename) try FileInputStream fin=new FileInputStream(filename);DataInputStream din2=new DataInputStream(fin);this.text_q.setText(din2.readDouble()+); /读取圈数this.bcolordin2.readInt().setSelected(true);/读取颜色按钮数组下标rgb=din2.readInt(); /读取颜色值din2.close();fin.close(); catch (F

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号