java课程设计实验报告.docx
- 文档编号:7319538
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:20
- 大小:74.15KB
java课程设计实验报告.docx
《java课程设计实验报告.docx》由会员分享,可在线阅读,更多相关《java课程设计实验报告.docx(20页珍藏版)》请在冰豆网上搜索。
java课程设计实验报告
《Java语言程序设计》
综合实验报告
系别:
计算机科学与技术系
学科专业:
信息管理与信息系统
课题题目:
qq聊天系统
人员及分工:
白娟(2011100605)
张丹(2011100607)
张富利(2011100608)
指导老师:
卢照
2014年6月13日
目录
一、课程设计目的3
二、课程内容3
三、实现代码(部分重要代码,不需要全粘)3
1.服务器:
4
2.客户端:
4
3.功能实现:
7
4.图形化界面的转换:
7
5.连接数据库代码:
8
四、运行结果(有必要的截图)11
1.服务器启动:
11
2.客户端启动:
12
3.登入界面:
12
4.好友列表:
12
5.聊天界面:
13
6.数据库信息:
13
五、课程总结14
六、小组分工14
1、课程设计目的
运用本学期java课程所学知识制作一个小型的比较完整的小系统,旨在使学生对所学知识有一个整体的运用,了解java功能的强大,对学习java产生兴趣。
2、课程内容
基本页面:
登入页面,注册页面,好友列表页面,聊天页面,查询好友界面
基本功能:
注册信息,添加好友,查找好友,聊天
三、实现代码(部分重要代码,不需要全粘)
1.服务器代码:
packagecom.sram.server;
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.ObjectInputStream;
importjava.io.ObjectOutputStream;
importjava.io.OutputStream;
importjava.io.PrintStream;
import.ServerSocket;
import.Socket;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;
importcom.sram.bean.User;
importcom.sram.dao.UserDao;
publicclassServer{
publicstaticMapsocketMap=newHashMap();
publicstaticvoidmain(String[]args){
try{
ServerSocketss=newServerSocket(20001);
System.out.println("服务器已启动,准备接收数据");
while(true){
Socketsoc=ss.accept();
ServerSocketThreadsst=newServerSocketThread(soc);
Threadthr=newThread(sst);
thr.start();
}
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
classServerSocketThreadimplementsRunnable{
privateSocketsoc;
publicServerSocketThread(Socketsoc){
this.soc=soc;
}
publicvoidrun(){
System.out.println("接受到数据");
UserDaoud=newUserDao();
try{
BufferedReaderbr=newBufferedReader(newInputStreamReader(soc.getInputStream()));
Stringstr="";
while((str=br.readLine())!
=null){
String[]strs=str.split(",");
//1代表
if(strs[0].equals("1")){
Stringqq=strs[1];
Stringpass=strs[2];
Useru=ud.findUser(qq,pass);
OutputStreamos=soc.getOutputStream();
PrintStreamps=newPrintStream(os);
if(u!
=null){
System.out.println("登陆成功");
Server.socketMap.put(u.getQqNum(),soc);
ps.println("1,yes,"+u.getNickName());
ps.flush();
List
li.add(u);
ObjectOutputStreamoos=newObjectOutputStream(soc.getOutputStream());
oos.writeObject(li);
oos.flush();
}else{
System.out.println("登陆失败");
ps.println("1,no");
}
}
if(strs[0].equals("2")){
ObjectInputStreamois=newObjectInputStream(soc.getInputStream());
try{
Useru=(User)ois.readObject();
Stringqqnum=ud.insertUser(u);
OutputStreamos=soc.getOutputStream();
PrintStreamps=newPrintStream(os);
ps.println("2,ok,"+qqnum);
}catch(ClassNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
if(strs[0].equals("3")){
StringfriendNum=strs[1];
StringuserNum=strs[2];
Stringmessage=strs[3];
System.out.println("好友号码:
"+friendNum+",用户号码:
"+userNum+",信息:
"+message);
SocketfriendSoc=(Socket)Server.socketMap.get(friendNum);
PrintStreamps=newPrintStream(friendSoc.getOutputStream());
ps.println(str);
ps.flush();
}
if(strs[0].equals("4")){
Stringqqnum=strs[1];
Usernu=ud.findUserfromQQ(qqnum);
OutputStreamos=soc.getOutputStream();
PrintStreamps=newPrintStream(os);
if(nu!
=null){
ps.println("4,ok");
ps.flush();
ObjectOutputStreamoos=newObjectOutputStream(soc.getOutputStream());
oos.writeObject(nu);
oos.flush();
}else{
ps.println("4,no");
ps.flush();
}
}
if(strs[0].equals("5")){
Stringqqnum=strs[1];
ObjectInputStreamois=newObjectInputStream(soc.getInputStream());
Useru=(User)ois.readObject();
Usernu=ud.findUserfromQQ(qqnum);
ud.addFriend(u.getId(),nu.getId());
OutputStreamos=soc.getOutputStream();
PrintStreamps=newPrintStream(os);
ps.println("5,ok,"+u.getQqNum()+","+u.getPass());
ps.flush();
}
}
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(ClassNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
2.客户端:
packagecom.sram.client;
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
import.Socket;
importjava.util.List;
importcom.sram.bean.User;
importcom.sram.util.MessageIO;
importcom.sram.view.ChatUI;
importcom.sram.view.FriendListUI;
importcom.sram.view.LoginUI;
importcom.sram.view.RegisterSuccessUI;
importcom.sram.view.SearchFriendUI;
importcom.sram.view.UIList;
publicclassClient{
publicstaticSocketsoc;
publicstaticvoidmain(String[]args){
LoginUIlu=newLoginUI();
UIList.UIlist.put("login",lu);
ClientThreadct=newClientThread();
newThread(ct).start();
}
}
classClientThreadimplementsRunnable{
publicvoidrun(){
try{
BufferedReaderbr=newBufferedReader(newInputStreamReader(Client.soc.getInputStream()));
Stringstr="";
while((str=br.readLine())!
=null){
String[]strs=str.split(",");
if(strs[0].equals("1")){
if(strs[1].equals("yes")){
List
FriendListUIfui=newFriendListUI(li);
UIList.UIlist.put("friend",fui);
UIList.UIlist.get("login").setVisible(false);
}
}
if(strs[0].equals("2")){
if(strs[1].equals("ok")){
UIList.UIlist.get("register").setVisible(false);
//UIList.UIlist.get("login").setVisible(true);
newRegisterSuccessUI(strs[2]);
}
}
if(strs[0].equals("3")){
ChatUIcu=(ChatUI)UIList.UIlist.get("chatui");
cu.jta1.setText(strs[3]);
}
if(strs[0].equals("4")){
SearchFriendUIsfui=(SearchFriendUI)UIList.UIlist.get("search");
if(strs[1].equals("ok")){
Useru=(User)MessageIO.getObject();
sfui.jl2.setText(u.getNickName());
}else{
sfui.jl2.setText("QQ号码错误");
}
}
if(strs[0].equals("5")){
if(strs[1].equals("ok")){
UIList.UIlist.get("friend").setVisible(false);
Stringqq=strs[2];
Stringpass=strs[3];
MessageIO.printlnString("1,"+qq+","+pass);
}
}
}
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
3.数据库的连接以及实现功能
packagecom.sram.util;
publicclassMessageIO{
privatestaticSocketsoc;
publicMessageIO(Socketsoc){
this.soc=soc;
}
publicstaticvoidprintlnString(Stringmessege){
try{
PrintStreamps=newPrintStream(soc.getOutputStream());
ps.println(messege);
ps.flush();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
publicstaticvoidprintObject(Objectobj){
OutputStreamos;
try{
os=soc.getOutputStream();
ObjectOutputStreamoos=newObjectOutputStream(os);
oos.writeObject(obj);
oos.flush();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
packagecom.sram.dao;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importjava.util.ArrayList;
importjava.util.List;
importcom.sram.bean.User;
importcom.sram.util.GetConnection;
publicclassUserDao{
publicUserfindUser(Stringname,Stringpass){
Connectionconn=null;
Statementstmt=null;
ResultSetrs=null;
try{
conn=GetConnection.getConnection();
stmt=conn.createStatement();
rs=stmt.executeQuery("select*fromt_userwhereqqnum='"+name+"'andpassword='"+pass+"'");
rs.next();
Useru=newUser();
u.setId(rs.getInt("id"));
u.setNickName(rs.getString("nickname"));
u.setPass(rs.getString("password"));
u.setQqNum(rs.getString("qqnum"));
returnu;
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
try{
if(rs!
=null){
rs.close();
}
if(stmt!
=null){
stmt.close();
}
if(conn!
=null){
conn.close();
}
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
returnnull;
}
publicStringinsertUser(Useru){
Connectionconn=null;
PreparedStatementptmt=null;
ResultSetrs=null;
Stringqqnum=null;
try{
conn=GetConnection.getConnection();
ptmt=conn.prepareStatement("insertintot_user(qqnum,nickname,password)values(?
?
?
)");
inti=findLastId();
qqnum=(20000+i+1)+"";
ptmt.setString(1,qqnum);
ptmt.setString(2,u.getNickName());
ptmt.setString(3,u.getPass());
booleanb=ptmt.execute();
System.out.println(b);
returnqqnum;
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
try{
if(rs!
=null){
rs.close();
}
if(ptmt!
=null){
ptmt.close();
}
if(conn!
=null){
conn.close();
}
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
returnqqnum;
}
publicintfindLastId(){
Connectionconn=null;
Statementstmt=null;
ResultSetrs=null;
try{
conn=GetConnection.getConnection();
stmt=conn.createStatement();
rs=stmt.executeQuery("selectidfromt_userorderby
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课程设计 实验 报告