java课程设计.docx
《java课程设计.docx》由会员分享,可在线阅读,更多相关《java课程设计.docx(18页珍藏版)》请在冰点文库上搜索。
java课程设计
Java程序设计课程
项目实践考核报告
学生姓名:
刘亚萍
学号:
20101130126
班级:
10软件
指导教师:
刘发久
完成日期:
2011.6.22
目录
1.Java语言概述………………………………………………………1
2.项目选题说明及项目计划…………………………………………1
3.项目需求分析………………………………………………………2
4.数据库设计…………………………………………………………3
5.总体结构设计………………………………………………………4
6.主要程序描述………………………………………………………6
7.程序测试及项目测试………………………………………………12
8.总结…………………………………………………………………14
9.产品使用说明书……………………………………………………14
10.参考资料…………………………………………………………14
1.Java语言概述
1.1Java语言
Java语言是一种多用途的面向对象的编程语言。
主要包括两个特点:
面向对象和跨平台。
面向对象是指主要用类为单位写程序,在程序中可以用类来创建对象和使用对象;跨平台指的是Java程序编译后的.class文件可以在不同的操作系统且在任何具有Java虚拟机的计算机和电子设备上运行。
1.2Java平台
Java平台是为java开发及java程序运行提供的运行环境的系统软件,即一个演员要把自己的才能展现出来,需要一个舞台,而Java平台就相当于这个舞台,它为java语言开发提供了编译器和解释器以及java开发的核心类库API,JDK就是Java开发平台的一种具体实现。
2.项目选题说明及项目计划
2.1项目选题说明
随着网络信息化的发展,人们的需求也在不断地提高,交流的方式也在不断增加,为了使人们更好更快更有效且是多方进行交流,也就是人们所说的多方聊天,socket编程的开发可以实现多个客户端与服务器之间的交流,达到快捷方便的目的。
2.2项目计划
a.调查身边人们的需求,很多人们因工作或学习原因与想见的人见面机会少,但有需要对方的消息(3天)。
b.尝试socket套接口编程,实现简单的单线程,为了满足多数人需求,设计多个客户端与服务器连接(10天)。
c.编写完之后在JDK上执行,进行进一步测试(5天)。
d.写项目开发后的总结(2天)。
系统开发的总的设计目标是通过团体的共同努力打造可以供多人即时聊天的系统,从而实现沟通的方便、快捷、实惠。
2.3第五小组人员分工
姓名
任务
完成情况
周妍妍
高丽佳注释
1Java语言概述
7.程序测试及项目测试
5总体结构设计
已完成
刘亚萍
李涉娟
4.数据库设计(语句)及语句调试
10参考资料
8.程序使用说明书
已完成
刘彬 注释
由柏玉
6.主要程序描述
9.总结
已完成
李娜
刘文淑
2.项目选题说明及项目计划项目需求分析.
已完成
3.项目需求分析
3.1需求定义
技术方面:
信息传送速度快,更好的传递消息。
经济方面:
系统操作简便省事,不需要大方面的人力物力的投入。
运行方面:
该系统是一个简便的多线程聊天系统,系统占用的内存小,窗口简易,
在电脑的任何地方都可进行聊天,而且与此同时还可以做其它方面的事情,并不会
在耽误系统的运行。
人性化方面:
不具有很强的高科技含量,适合大众人群畅聊,不具有病毒软件的侵袭。
安全高效,连接速度快,适应高节奏低消耗大众人群的使用。
3.2功能分析
通过jdk运行环境实现客户端与服务器相连,通过启动多个客户端先连接服务器,然后实现与服务器之间的互相的交流,通过与数据库之间的相连,使其传输的内容保存在数据库中。
3.3性能分析
(1).安全性
用户的合法性不能被伪装。
防止网络对服务器的攻击。
用户的信息应该尽可能不被黑客截取。
因为这直接存储在数据库中,有效地为使用者做了保障。
(2).扩展性
该软件在编写的过程中使用了接口,系统建成之后,应用在现行的系统上不需要做太大的变动,不影响整个系统结构,为以后使用过程中的增加功能模块留有很大的空间进行扩展。
(3).易用性
系统操作的界面很简洁、操作方便、设计合理。
可以更好的然让用户接受。
3.4关键技术、开发环境、运行环境
系统开发环境:
JDK7.0
运行平台:
Windowsxp
数据库:
SQLServer2000
关键技术:
Socket技术关键技术和数据库技术:
Socket技术是基于TCPIP协议下的网络连接技术,SOCKET实际在计算机中提供了一个通信端口,可以通过这个端口与任何一个具有SOCKET接口的计算机通信。
应用程序在网络上传输,接收的信息都通过这个SOCKET接口来实现。
在应用开发中就像使用文件句柄一样,可以对SOCKET句柄进行读,写操作。
Socket可以支持数据的发送和接收,它会定义一种称为套接字的变量,发送数据时首先创建套接字,然后使用该套接字的sendto等方法对准某个IP/端口进行数据发送;接收端也首先创建套接字,然后该套接字绑定到一个IP/端口上,所有发向此端口的数据会被该套接字的recv等函数读出。
如同读出文件中的数据一样。
socket是进行程序间通讯(IPC)的BSD方法。
这意味着socket用来让一个进程和其他的进程互通信息,就象我们用电话来和其他的人交流一样socket是一进程与另一进程进行双向通讯的最终的套接点。
4.数据库设计
4.1设计表(sql语句)
createdatabasesocket
usesocket
createtablesoc(
neirongchar(100)
)
select*fromsoc
4.2SQL界面
5.总体结构设计
5.1总体流程图
5.2例图
5.3顺序图
6.主要程序描述
服务器:
//引用包名
import.*;
importjava.io.*;
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.util.*;
importjava.sql.*;
//执行服务器的类
publicclassThreadServerextendsJFrameimplementsActionListener{
LinkedListsList=newLinkedList();
ServerSocketserver;
Socketuser;
DataOutputStreamout;
DataInputStreamin;
JTextFieldsend,receive;
JButtonb1;
//构造器建立窗口
ThreadServer(){
setTitle("FrameServer");
setBounds(100,100,600,100);
setLayout(newGridLayout(3,2));
b1=newJButton("OK");
send=newJTextField(10);
receive=newJTextField(10);
receive.setEditable(false);
add(newJLabel("接收"));add(receive);
add(newJLabel("发送"));add(send);
add(newJLabel("确认"));add(b1);
b1.addActionListener(this);
setVisible(true);
//捕捉异常等待客户端的访问,每一个客户端的访问用一个链表储存
try{
server=newServerSocket(5678);
while(true){//等待客户端访问
user=server.accept();
sList.add(user);//把客户端Socket对象存储到链表sList中。
(newServerThread(user,receive)).start();//为每个客户端建立一个线程并启动执行run()方法。
}
}catch(Exceptioneee){eee.printStackTrace();}
pack();
}
//监听器监听
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==b1){//当点击按钮b1时,遍历链表,向每个客户端发送数据
try{
for(inti=0;iout=newDataOutputStream(sList.get(i).getOutputStream());
out.writeUTF(send.getText().trim());
}
}catch(Exceptioneee){eee.printStackTrace();}
}
}
//主函数
publicstaticvoidmain(Stringargs[]){
newThreadServer();
}
}
classServerThreadextendsThread{
publicServerThread(Socketu,JTextFieldr){
user=u;
receive=r;
}
Socketuser;
JTextFieldreceive;
//输入输出流实现从套子接口写和读取数据
publicvoidrun(){
try{
DataOutputStreamout;
DataInputStreamin;
out=newDataOutputStream(user.getOutputStream());
in=newDataInputStream(user.getInputStream());
StringreadClient;
while(true){
readClient=in.readUTF();
receive.setText(readClient);
}
}catch(Exceptioneee){eee.printStackTrace();}
客户端:
//引用包名
import.*;
importjava.io.*;
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
//执行客户端
publicclassFrameClientextendsJFrameimplementsActionListener{
Socketclient;
DataOutputStreamsender;
DataInputStreamreceiver;
JTextFieldsendingMessage,receivingMessage;
JButtonsendingButton;
//构造器建立窗口
FrameClient(){
setTitle("Client");
setBounds(100,100,600,100);
setLayout(newGridLayout(3,2));
sendingButton=newJButton("send");
sendingMessage=newJTextField(10);
receivingMessage=newJTextField(10);
receivingMessage.setEditable(false);
add(newJLabel("接收"));add(receivingMessage);
add(newJLabel("发送"));add(sendingMessage);
add(newJLabel("确认"));add(sendingButton);
sendingButton.addActionListener(this);
setVisible(true);
pack();
createClient();
receive();
}
//构造器
voidcreateClient(){
try{
client=newSocket("localhost",5678);
sender=newDataOutputStream(client.getOutputStream());
receiver=newDataInputStream(client.getInputStream());
}catch(Exceptione){e.printStackTrace();}
}
//调用读数据库内容
voidreceive(){
try{
while(true){
StringreadServer=receiver.readUTF();
receivingMessage.setText(readServer);
}
}catch(Exceptione){e.printStackTrace();}
}
voidsend(){
try{
sender.writeUTF(sendingMessage.getText().trim());
}catch(Exceptione){e.printStackTrace();}
}
//监听器
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==sendingButton){
send();
}
}
//主函数
publicstaticvoidmain(Stringargs[]){
newFrameClient();
}
}
与数据库相连程序语句
//连接数据源并存储于数据库
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connectioncn=DriverManager.getConnection("jdbc:
odbc:
db");
Statementst=cn.createStatement();
Stringsql="insertgmuests(neirong)values('readClient')";
st.executeUpdate(sql);
st.close();
cn.close();
}catch(Exceptionsqle){System.out.println(sqle.toString());}
}
}
7.程序测试及项目测试
用dos窗口执行服务器程序
服务器界面
用dos窗口执行客户端程序
客户端界面
总体检测
先是客户端连接服务器在进行双方自由交流
启动多个客户端聊天界面
客户端用户1与服务器端对话
客户端用户2与服务器端用户对话
8.总结
通过这次聊天程序的编写,基本上了解了socket的C/S构架原理,通信流程也清楚了,体会了TCP/IP连接的稳定性,学会了Socket编程。
Java语言具有平台独立、面向对象、多线程、简单性、解释性等许多优点,是目前广泛流行的编程语言,利用socket多线程的方法,编写了客户端与服务器之间并发的聊天程序,实现了多个客户端与服务器并发通信,并且内容可以储存在数据库中,可以随时查询。
使我明白了TCP协议,它是一种面向连接的保证可靠的传输的协议,通过TCP协议传输,得到的是一个顺序的无差错的数据流。
通过与宿舍其他姐妹一起分工完成,其中遇到很多困难,经过共同努力,互相帮助终于完成,其中获得很多。
9.程序使用说明书
1.在JDK的运行条件下,先执行client(多个)程序寻找服务器,在执行server程序,注意client的运行程序中注明服务器的IP地址。
2.启动SQLServer2000建立数据库并建立表格
3.再添加数据源
4.进行多个客户端与服务器的传输信息。
10.参考资料
【1】刘发久.《JAVA程序设计》.大连理工出版社.2009.8
【2】郑阿奇《Java教程》电子工业出版社
【3】罗云彬《Windows环境下32位汇编语言程序设计》
2010-2011学年度第2学期期末项目实践考核内容
姓名
刘亚萍
班级
10软件
学号
20101130126
评
分
标
准
及
得
分
项目开发应包含的主要技术:
满分:
60分
得分:
1.Java编程技术规范
15分
2.JavaGUI编程技术或Web网页技术
15分
3.Java数据库编程技术
15分
4.Socket和多线程编程技术或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)项目必须能够成功演示。