1、java课程设计 Java 程序设计课程 项目实践考核报告学生姓名: 刘亚萍 学 号: 20101130126 班 级: 10软件 指导教师: 刘发久 完成日期: 2011.6.22 目录1. Java 语言概述12. 项目选题说明及项目计划13. 项目需求分析24. 数据库设计35. 总体结构设计46. 主要程序描述67. 程序测试及项目测试128. 总结149. 产品使用说明书1410. 参考资料 141 Java 语言概述1.1 Java语言 Java语言是一种多用途的面向对象的编程语言。主要包括两个特点:面向对象和跨平台。面向对象是指主要用类为单位写程序,在程序中可以用类来创建对象和使
2、用对象;跨平台指的是Java程序编译后的.class文件可以在不同的操作系统且在任何具有Java虚拟机的计算机和电子设备上运行。1.2 Java平台Java平台是为java开发及java程序运行提供的运行环境的系统软件,即一个演员要把自己的才能展现出来,需要一个舞台,而Java平台就相当于这个舞台,它为java语言开发提供了编译器和解释器以及java开发的核心类库API,JDK就是Java开发平台的一种具体实现。 2. 项目选题说明及项目计划2.1 项目选题说明 随着网络信息化的发展,人们的需求也在不断地提高,交流的方式也在不断增加,为了使人们更好更快更有效且是多方进行交流,也就是人们所说的多
3、方聊天,socket编程的开发可以实现多个客户端与服务器之间的交流,达到快捷方便的目的。2.2项目计划a.调查身边人们的需求,很多人们因工作或学习原因与想见的人见面机会少,但有需要对方的消息(3天)。b.尝试socket套接口编程,实现简单的单线程,为了满足多数人需求,设计多个客户端与服务器连接(10天)。 c.编写完之后在JDK上执行,进行进一步测试(5天)。 d.写项目开发后的总结(2天)。系统开发的总的设计目标是通过团体的共同努力打造可以供多人即时聊天的系统,从而实现沟通的方便、快捷、实惠。2.3 第五小组人员分工姓 名 任务 完成情况周妍妍高丽佳注释1 Java 语言概述7. 程序测试
4、及项目测试5 总体结构设计已完成刘亚萍李涉娟4.数据库设计(语句)及语句调试10参考资料8. 程序使用说明书已完成刘彬注释由柏玉6. 主要程序描述9. 总结已完成李娜刘文淑2. 项目选题说明及项目计划 项目需求分析. 已完成3. 项目需求分析3.1 需求定义技术方面:信息传送速度快,更好的传递消息。经济方面:系统操作简便省事,不需要大方面的人力物力的投入。运行方面:该系统是一个简便的多线程聊天系统,系统占用的内存小,窗口简易,在电脑的任何地方都可进行聊天,而且与此同时还可以做其它方面的事情,并不会在耽误系统的运行。 人性化方面:不具有很强的高科技含量,适合大众人群畅聊,不具有病毒软件的侵袭。安
5、全高效,连接速度快,适应高节奏低消耗大众人群的使用。3.2 功能分析通过jdk运行环境实现客户端与服务器相连,通过启动多个客户端先连接服务器,然后实现与服务器之间的互相的交流,通过与数据库之间的相连,使其传输的内容保存在数据库中。3.3 性能分析(1).安全性 用户的合法性不能被伪装。防止网络对服务器的攻击。用户的信息应该尽可能不被黑客截取。因为这直接存储在数据库中,有效地为使用者做了保障。(2).扩展性该软件在编写的过程中使用了接口,系统建成之后,应用在现行的系统上不需要做太大的变动,不影响整个系统结构,为以后使用过程中的增加功能模块留有很大的空间进行扩展。(3).易用性系统操作的界面很简洁
6、、操作方便、设计合理。可以更好的然让用户接受。3.4 关键技术、开发环境、运行环境系统开发环境:JDK 7.0运行平台:Windows xp数据库:SQL Server 2000关键技术:Socket技术关键技术和数据库技术:Socket技术是基于TCPIP协议下的网络连接技术, SOCKET实际在计算机中提供了一个通信端口,可以通过这个端口与任何一个具有SOCKET接口的计算机通信。应用程序在网络上传输,接收的信息都通过这个SOCKET接口来实现。在应用开发中就像使用文件句柄一样,可以对SOCKET句柄进行读,写操作。Socket可以支持数据的发送和接收,它会定义一种称为套接字的变量,发送数
7、据时首先创建套接字,然后使用该套接字的sendto等方法对准某个IP/端口进行数据发送;接收端也首先创建套接字,然后该套接字绑定到一个IP/端口上,所有发向此端口的数据会被该套接字的recv等函数读出。如同读出文件中的数据一样。socket 是进行程序间通讯(IPC)的 BSD 方法。这意味着 socket 用来让一个进程和其他的进程互通信息,就象我们用电话来和其他的人交流一样socket是一进程与另一进程进行双向通讯的最终的套接点。4. 数据库设计4.1 设计表(sql语句)create database socketuse socketcreate table soc(neirong ch
8、ar(100) select * from soc4.2 SQL界面 5. 总体结构设计5.1总体流程图5.2例图5.3 顺序图6. 主要程序描述服务器:/引用包名import .*;import java.io.*;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;import java.sql.*;/执行服务器的类public class ThreadServer extends JFrame implements ActionListener LinkedList sList
9、=new LinkedList(); ServerSocket server; Socket user; DataOutputStream out; DataInputStream in; JTextField send,receive; JButton b1; /构造器建立窗口 ThreadServer() setTitle(FrameServer); setBounds(100,100,600,100); setLayout(new GridLayout(3,2); b1=new JButton(OK); send=new JTextField(10); receive=new JText
10、Field(10); receive.setEditable(false); add(new JLabel(接收);add(receive); add(new JLabel(发送);add(send); add(new JLabel(确认);add(b1); b1.addActionListener(this); setVisible(true); /捕捉异常等待客户端的访问,每一个客户端的访问用一个链表储存 try server=new ServerSocket(5678); while(true)/等待客户端访问 user=server.accept(); sList.add(user);
11、/把客户端Socket对象存储到链表sList中。 (new ServerThread(user,receive).start();/为每个客户端建立一个线程并启动执行run()方法。 catch(Exception eee)eee.printStackTrace(); pack(); /监听器监听 public void actionPerformed(ActionEvent e) if(e.getSource()=b1)/当点击按钮b1时,遍历链表,向每个客户端发送数据 try for(int i=0;isList.size();i+) out=new DataOutputStream(s
12、List.get(i).getOutputStream(); out.writeUTF(send.getText().trim(); catch(Exception eee)eee.printStackTrace(); /主函数 public static void main(String args) new ThreadServer(); class ServerThread extends Thread public ServerThread(Socket u,JTextField r) user=u; receive=r; Socket user; JTextField receive;
13、/输入输出流实现从套子接口写和读取数据 public void run() try DataOutputStream out; DataInputStream in; out=new DataOutputStream(user.getOutputStream(); in=new DataInputStream(user.getInputStream(); String readClient; while(true) readClient=in.readUTF(); receive.setText(readClient); catch(Exception eee)eee.printStackTr
14、ace();客户端:/引用包名 import .*;import java.io.*;import javax.swing.*;import java.awt.*;import java.awt.event.*;/执行客户端public class FrameClient extends JFrame implements ActionListener Socket client; DataOutputStream sender; DataInputStream receiver; JTextField sendingMessage,receivingMessage; JButton send
15、ingButton; /构造器建立窗口 FrameClient() setTitle(Client); setBounds(100,100,600,100); setLayout(new GridLayout(3,2); sendingButton=new JButton(send); sendingMessage=new JTextField(10); receivingMessage=new JTextField(10); receivingMessage.setEditable(false); add(new JLabel(接收);add(receivingMessage); add(n
16、ew JLabel(发送);add(sendingMessage); add(new JLabel(确认);add(sendingButton); sendingButton.addActionListener(this); setVisible(true); pack(); createClient(); receive(); /构造器 void createClient() try client = new Socket(localhost,5678); sender=new DataOutputStream(client.getOutputStream(); receiver=new D
17、ataInputStream(client.getInputStream(); catch(Exception e)e.printStackTrace(); /调用读数据库内容 void receive() try while(true) String readServer=receiver.readUTF(); receivingMessage.setText(readServer); catch(Exception e)e.printStackTrace(); void send() try sender.writeUTF(sendingMessage.getText().trim();
18、catch(Exception e)e.printStackTrace(); /监听器public void actionPerformed(ActionEvent e) if(e.getSource()=sendingButton) send(); /主函数public static void main(String args) new FrameClient(); 与数据库相连程序语句/连接数据源并存储于数据库tryClass.forName( sun.jdbc.odbc.JdbcOdbcDriver );Connection cn=DriverManager.getConnection(
19、jdbc:odbc:db);Statement st=cn.createStatement();String sql=insert gmuests(neirong)values(readClient);st.executeUpdate(sql);st.close();cn.close();catch(Exception sqle)System.out.println(sqle.toString(); 7. 程序测试及项目测试用dos窗口执行服务器程序服务器界面用dos窗口执行客户端程序客户端界面总体检测先是客户端连接服务器在进行双方自由交流启动多个客户端聊天界面客户端用户与服务器端对话客户端用
20、户与服务器端用户对话8. 总结通过这次聊天程序的编写,基本上了解了socket的C/S构架原理,通信流程也清楚了,体会了TCP/IP连接的稳定性,学会了Socket编程。Java语言具有平台独立、面向对象、多线程、简单性、解释性等许多优点,是目前广泛流行的编程语言,利用socket多线程的方法,编写了客户端与服务器之间并发的聊天程序,实现了多个客户端与服务器并发通信,并且内容可以储存在数据库中,可以随时查询。使我明白了TCP协议,它是一种面向连接的保证可靠的传输的协议,通过TCP协议传输,得到的是一个顺序的无差错的数据流。通过与宿舍其他姐妹一起分工完成,其中遇到很多困难,经过共同努力,互相帮助
21、终于完成,其中获得很多。9. 程序使用说明书1.在JDK的运行条件下,先执行client(多个)程序寻找服务器,在执行server程序,注意client的运行程序中注明服务器的IP地址。2.启动SQL Server 2000建立数据库并建立表格 3.再添加数据源4.进行多个客户端与服务器的传输信息。10. 参考资料【1】刘发久.JAVA程序设计. 大连理工出版社.2009.8 【2】郑阿奇 Java教程 电子工业出版社 【3】罗云彬 Windows环境下32位汇编语言程序设计 2010-2011学年度第2学期期末项目实践考核内容姓名刘亚萍班级10软件学号20101130126评分标准及得分项目
22、开发应包含的主要技术:满分:60分得分:1Java编程技术规范15分2Java GUI编程技术或Web网页技术 15分3Java数据库编程技术15分4Socket和多线程编程技术或Web编程技术15分项目文档应包含的主要内容:满分:40分得分:1选题说明及项目计划5分2需求规格说明 10分3总体设计说明5分4模块设计说明5分5模块测试说明5分6总体测试说明5分7. 项目部署与使用说明5分 任课教师签名 总成绩排课编号:0503351-00837-1 批阅日期: 年 月 日说明:1)可以根据自己的兴趣和能力自由选择项目。2)Java编程的4项主要技术都必须在项目中得到应用。 3)项目文档的7项内容都必须要按规范编写。4)项目必须能够成功演示。