java 实训报告书写

时间:2024.5.2

课题名称:Hannoi塔

1.1系统介绍

本系统是旨在模拟Hannoi塔运行功能,暂时考虑单机环境下的实现;操作系统选择目前常用的Windows XP/2000。

1.2 设计要求

(见教材,自己书写)

1.3 总体设计

在设计Hannoi塔时,需编写6个Java源文件:HannoiWindow.java、

TowerPoint.java、Disc.java、HandleMouse.java、Tower.java、AutoMoveDisc.java。

类之间的组合关系:

(见教材,自己绘制)

1.3.1 HannoiWindow.java(主类)

(1)功能概述

负责创建Hannoi塔的主窗口,该类含有main方法,Hannoi塔从该类开始执行。HannoiWindows类的成员变量中有五种重要类型的对象、一个int基本型数据和一个char型数组。五种类型的对象分别是:Tower、JmunuBar、Jmenu、JmenuItem和Jbutton对象。

(2)UML图

(见教材,自己绘制)

1.3.2 Tower.java

(1)功能概述

Tower类是javax.swing包中Jpanel容器的子类,创建的容器被添加到HannoiWindow窗口的中心。Tower类的成员变量中有四种重要类型的对象、一个int基本型数据和一个char型数据。四种类型的对象分别是:Disc、TowerPoint、HandleMouse和AutoMoveDisc对象。

(2)UML图

(见教材,自己绘制)

1.3.3 Disc.java

(1)功能概述

Disc类是Jbutton的一个子类,创建的对象是Tower容器中的一个按钮,用来表示Tower中的“盘子”。

(2)UML图

(见教材,自己绘制)

1.3.4 TowerPoint.java

(1)功能概述

TowerPoint类负责在Tower中创建表示位置的塔点对象。

(2)UML图

(见教材,自己绘制)

1.3.5 HandleMouse.java

(1)功能概述

HandleMouse类创建的对象负责处理鼠标事件。

(2)UML图

(见教材,自己绘制)

1.3.6 AutoMoveDisc.java

(1)功能概述

AutoMoveDisc类创建的对象负责自动移动盘子从一个座到另一个座。

(2)UML图

(见教材,自己绘制)

1.4 详细设计

代码详见上交源文件。

课题名称:根据自己选做课题书写

1.1系统介绍

自己书写

1.2 设计要求

自己书写

1.3 总体设计

整个系统包含的Java源文件:根据选题书写

类之间的组合关系:

(根据选题,见教材,自己绘制)

根据分组分工,书写要求如下:

1) 自己编写的.java源文件的功能概述

2) 绘制源文件对应UML图

3) 写出图中有关数据和方法的详细说明。

1.4 详细设计

代码详见上交源文件。

实训总结

结合实训体会自己撰写


第二篇:Java聊天系统实训报告


Java聊天系统实训报告

一、实训目的:

1、理解C/S模式的软件系统结构,掌握网络编程的基本概念;
2、了解Java 的多线程机制,掌握Java多线程技术的应用;
3、熟练掌握基于TCP协议的Socket编程;
4、熟练掌握基于UDP协议的Socket编程;
5、了解Socket编程的协议约定以及信息交互方法;

二、实训要求:

使用JBuilder提供的组件及网络包,开发一个实用的C/S模式聊天室系统。

(1)       功能要求
要求该系统由客户端及服务器端两部分组成。

(2)       系统界面要求:

要求系统具有友好的用户界面,界面简洁、操作方便;

本程序客户端主要完成了:
1. 客户端发送信息可以广播客户。
2. 广播客户,则将信息转发到所有客户端。
服务器主要完成了:

客户-服务器之间信息的交互。例如hello发送信息到服务器,服务器将信息转发到所有与之连接的客户(hello、boy),通过这种形式,就可以实现客户之间的信息广播。


本程序可以实现发送信息广播,只要进入客户端都可以看到消息,本程序采用了流的概念,java多线程,Socket应用

程序中用到的代码如下

客户端代码:

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import java.net.*;

publicclass Login implements ActionListener{

        privatestaticfinal ActionListener WindowAdapter = null;

          private Frame f;

        private TextField tf;

        private Label l;

        private String tfContent="";

        public Login()

        {          

            f = new Frame("欢迎登陆本程序...按enter键直接登录");           

            l = new Label("请输入你的名字");          

            tf = new TextField(20);                                  

            f.setLayout(new FlowLayout());

            f.add(l);

            f.add(tf);

            f.pack();

           f.show();                     

            tf.addActionListener(this);

            f.addWindowListener(new WindowAdapter()

            {

                        publicvoid windowClosing(WindowEvent e){

                                System.exit(0);

                        }

                        }

            );

}

              publicvoid actionPerformed(ActionEvent e){

                System.out.println ("ft clicked");

                tfContent = tf.getText();

                ClientFrame cf = new ClientFrame(tfContent);

                f.dispose();

       }

       publicstaticvoid main(String[] args){

           new Login();

       }

}

class ClientFrame extends Thread implements ActionListener{

        private Frame f;

        private TextField tf;

        private Button btn;

        TextArea ta;

        private Panel pup;

        String data;

        BufferedReader InputS;

        PrintStream OutputS;

        String name;

        ClientFrame(String str){

          name = str;  

          Socket client;

          try {

            client = new Socket("localhost",6000);

            InputS = new BufferedReader(new InputStreamReader(client.getInputStream()));

            OutputS = new PrintStream(client.getOutputStream(),true);

          }

          catch (Exception ex) {

            ex.printStackTrace();

          }

                OutputS.println("欢迎" + name + "光临");

          f = new Frame("客户端");

          tf = new TextField(30);

          tf.addActionListener(this);                  

          btn = new Button("发送");

          ta = new TextArea();

          pup = new Panel();

          f.setLayout(new BorderLayout());

          f.add(pup,BorderLayout.NORTH);

          pup.add(tf);

          pup.add(btn);

          f.add(ta);        

          f.pack();

          f.setSize(400,300);

          f.addWindowListener(new WindowAdapter(){

            publicvoid windowClosing(WindowEvent e){

              OutputS.println(name + "已经离开");

              System.exit(0);

            }});

          btn.addActionListener(this);

          f. show();

          this.start();                   

              }

              public  void run(){

                     try {                     

                            while(true){

                                   System.out.println ("正在监听端口...");                       

                                   OutputS.println("\u0001");

                                   ta.setText(InputS.readLine().replaceAll("\u0001","\n"));

                                   Thread.sleep(1000);

                            }                   

                      }

                      catch (Exception ex) {

                            ex.printStackTrace();

                      }

           }

 publicvoid actionPerformed(ActionEvent e){

   String cmd = e.getActionCommand();

   if (cmd.equals("发送")){

     System.out.println ("发送 clicked");

     data = tf.getText();

     try {

       OutputS.println(name + "说:" + data);

      ta.setText(InputS.readLine().replaceAll("\u0001","\n"));

     }

     catch (Exception ex) {

       ex.printStackTrace();

     }

     tf.setText("");

   }

   else{

           System.out.println ("发送 clicked");

     data = tf.getText();

     try {

       OutputS.println(name + "说:" + data);

      ta.setText(InputS.readLine().replaceAll("\u0001","\n"));

     }

     catch (Exception ex) {

       ex.printStackTrace();

     }

     tf.setText("");

   }

 }

}

运行结果如下图:

服务器代码如下:

import java.io.*;

import java.awt.*;

import java.awt.event.*;

import java.net.*;

import java.util.ArrayList;

publicclass ServerFrame implements ActionListener

{

  private Frame f;

  private TextArea ta;

  private MenuBar mb;

  private MenuItem start;

  private Menu m;

  boolean isStop;

  static ArrayList clients;

  ServerFrame() {

    f = new Frame("java聊天系统服务器");

    ta = new TextArea();

    mb = new MenuBar();

    m = new Menu("服务器管理");

    start = new MenuItem("启动服务器");

    mb.add(m);

    m.add(start);  

    start.addActionListener(this);  

    f.setMenuBar(mb);

    f.add(ta);

    f.setSize(260, 60);

    f.addWindowListener(new WindowAdapter() {

      publicvoid windowClosing(WindowEvent e) {

        System.exit(0);

      }

    });

    f.show();

  }

  publicvoid actionPerformed(ActionEvent e)//该方法用来对发生在按钮上的事件进行处理

  {

    String cmd = e.getActionCommand();

    if (cmd.equals("启动服务器")) {

      System.out.println("初始化中...");

      try {

        System.out.println("服务器已经启动");

        ServerSocket server = new ServerSocket(6000);

        while(!isStop){

          Socket Client = server.accept();

          Service ss = new Service(Client);

        }

      }

      catch (Exception ex) {

        ex.printStackTrace();

      }

    }

  }

  publicstaticvoid main(String[] args) {

    new ServerFrame();

  }

}

class Service extends Thread{

  String data;

  BufferedReader InputS;

  PrintStream OutputS;

  Socket Client;

  static String Content="";

  public Service(Socket ClientSocket) throws Exception{

          Client = ClientSocket;

          try {

                  InputS = new BufferedReader(new InputStreamReader(Client.getInputStream()));

                  OutputS = new PrintStream( Client.getOutputStream(),true);

          }

          catch (Exception ex) {

                    System.out.println("不能连接客户端 !");

          return;

          }

          this.start();

  }

  publicvoid run() {

          System.out.println (this);

          try {

                  while(true){

                          data = InputS.readLine();

                          if(data.equals("\u0001")){

                              OutputS.println(Content);

                          }else{

                             Content = data +"\u0001"+ Content  ;

                            System.out.println (Content);

                            if (Content==null) break;

                            else{

                                  OutputS.println(Content);

                                  System.out.println("From Client: " + Content);

                            }

                          }                    

                  }

                Client.close();

          }

          catch (Exception ex) {

                  ex.printStackTrace();

          }

          try {

                   Client.close();

          }

          catch (Exception ex) {

                  ex.printStackTrace();

          }

  }

}

运行结果如下图:

实验中遇到的问题:

1、图形用户界面设计按钮和文本框设计中的按钮上的事件处理问题

2、输入流输出流的问题

3、监听端口的问题

解决:1、通过java语言程序设计(第2版)中第五章中的5.2事件和事件处理知道了具体事件的处理是使用事件对应的监听者接口中所提供的抽象方法,这些方法需要重新定义,例如本程序中publicvoid actionPerformed(ActionEvent e),该方法用来对对发生在按钮上事件的处理。通过学习终于解决了问题。

2、InputStreamReader缓冲处理流通信双方需要建立Socket连接,本程序中Socket包含两个流一个输出流向外发送数据,一个输入流接收数据

3、通过第10章10.5小节Socket应用知道了监听端口是引用Socket构造方法,指定了服务器程序中其监听的端口,还需抛出异常。

实验总结:通过本实训学习基本上把本学期书本上的知识都应用到了,当学习了书本上的知识应用到实际中才发现远没有那么简单,一个看似简单的程序其实需要坚实的理论知识,在这次实训中我学到了很多新知识,其实这些都是书本上的知识,做完这个程序我知道了一定要有坚实的理论基础要扎实才能把程序做好。

更多相关推荐:
java实习报告

石家庄学院习报告王荣传20xx0502027数学与信息科学系信息与计算科学专业本科一班崔永刚讲师姓名:学号:院系:专业:班级:指导教师:教师职称:实习基本情况河北中信联信息技术有实习单位:限公司实习时间:201…

Java实训报告

Java程序设计实训报告实训名称图书管理系统实训专业计算机应用技术班级学号090443220姓名高宇国指导教师侯丽敏20xx年12月26日实训成绩一实训目的1熟练掌握Java面向对象程序设计的基础知识2熟练掌握...

java实训报告

摘要随着自动化技术的不断发展电子产业对工艺生产的要求越来越高本次实训主要熟悉手工焊锡的常用工具的使用及其与修理手工电烙铁的焊接技术能够独立的简单电子产品的安装与焊接熟悉电子产品的生产流程印制电路板设计的和方法能...

java实训报告模板

辽宁建筑职业学院Java高级应用实训报告课题名称婚庆公司网站专业软件技术班级xxxxxxxxxx学号姓名xxxx指导教师xxx二O一三年十二月三十日成绩评定标准1目录一课程设计目的32二课程设计题目描述和要求3...

Java实验报告一[Java程序的编辑、编译运行]

ava面向对象编程实验报告题目Java程序的编辑运行专业网络工程班级1120xx20学号姓名太原工业学院计算机工程系年月日一实验目的与要求1掌握在window下的java环境的安装配置2掌握javac与java...

java实验报告2

实验报告20xx20xx学年第2学期1234567

Java实验报告5

山东师范大学人口资源与环境学院实验报告五山东师范大学人口资源与环境学院山东师范大学人口资源与环境学院山东师范大学人口资源与环境学院三使用日期类Java提供了3个日期类DateCalendar和DateForma...

java实训报告--高

Java实训设计报告专业班级学号姓名五子棋游戏软件技术0923090123030高丛凡石家庄科技信息职业学院信息工程系20xx年10月15日Java实训设计报告项目简介1Java实训设计报告五子棋游戏一项目需求...

《Java程序开发实训》综合实训报告

Java程序开发实训综合实训报告题目姓名学号班级一系统实现的主要功能及运行结果截图二综合实训过程中遇到的问题及解决方法三本次综合实训中的收获及体会四对本课程教学的建议

java实训报告

烟台南山学院软件工程学院网络编程课程实训报告20xx20xx学年第1学期姓名朕学号888888专业软件技术班级软8指导教师白晓网络编程课程实训报告

Java实验报告

JAVA课程标准实验报告学号1040501211姓名陈嘉生江苏科技大学计算机科学与工程学院基础部1实验一流程控制语句一实验目的1234二实验内容1安装开发环境JDK2编写一个JAVA应用程序在输出窗口显示quo...

java超市管理系统实训报告

11课程设计的目的通过本次课程设计使学生能够全面深刻地掌握数据库系统的设计流程根据在数据库原理课程中所学到的数据库理论知识结合某个具体的实际需求最终开发出一个较为实用的数据库系统12课程设计的背景和意义121课...

java 实训报告(25篇)