java课程设计报告49112285.docx
《java课程设计报告49112285.docx》由会员分享,可在线阅读,更多相关《java课程设计报告49112285.docx(23页珍藏版)》请在冰豆网上搜索。
java课程设计报告49112285
(此文档为word格式,下载后您可任意编辑修改!
)
大连科技学院
Java课程设计报告
题目“即时通”网络通信系统的设计与开发
学生姓名田文超专业班级软件工程(莱)12-2
指导教师刘瑞杰职称 讲师
所在单位信息科学系软件工程教研室
教学部主任王立娟
完成日期2014年12月26日
课程设计报告单
学号
姓名
田文超
专业班级
软件工程(莱)12-2
考核项目
评分
备注
1
平时工作态度及遵守纪律情况
(10分)
2
掌握基本理论、关键知识、基本技能的程度和阅读参考资料的水平
(10分)
3
独立工作能力、综合运用所学知识分析和解决问题能力及实际工作能力提高的程度
(20分)
4
完成课程设计说明书及软件的情况与水平(小组分工情况、规范性、整洁清楚、叙述完整性、思路清晰程度、工作量及实际运行情况和创新性)
(60分)
总评成绩
综合评定:
(优、良、中、及格、不及格)
指导教师签字:
2014年12月26日
《Java课程设计》任务书
一、课程设计任务及要求:
任务:
针对小型信息管理系统或若干综合性设计题目,选择一种软件开发模型,完成从需求分析、系统设计、系统实现,软件测试的全过程。
要求:
(1)根据软件系统开发的一般原则,完成相应系统的功能设计,完成主要功能模块的程序实现并进行测试训练,给出代码运行结果和相应的设计文档。
可以分组进行,但所有学生必须经历整个系统的开发全过程,以便加深对系统开发全过程的认识。
(2)提交课程设计报告。
(3)指标:
要求完成课程设计报告3000字以上(约二十页);完成所设计的题目,设计题目的语句行数的和在200行语句以上。
二、工作量
2周(10个工作日)时间
三、计划安排
第1个工作日-第2个工作日:
查找相关资料、书籍,阅读示例文档;设计程序结构、模块图、完成类的设计。
第3个工作日-第7个工作日:
完成程序的编码,并且自己调试、测试。
穿插进行项目文档的撰写。
第8个工作日-第9个工作日:
撰写和整理项目文档。
第10个工作日:
由教师检查软件测试效果、项目文档,给出学生本课程成绩。
指导教师签字:
2014年12月15日
目录
题目:
1
1.需求分析1
2.概要设计1
2.1系统总的设计思路1
2.2体系结构1
2.3功能模块图1
3.详细设计3
4.编码3
4.1在登陆界面设置用户名和密码不能为空并给出提示3
4.2如果用户登陆成功如何直接进入聊天界面.3
4.3如何设置性别,是用户注册后性别显示在数据库表中4
5.调试分析5
6.测试结果及运行效果5
7.系统开发所用到的技术8
8.课程设计总结8
参考文献9
附录全部代码10
题目:
“即时通”网络通信系统的设计与开发
1.需求分析
《即时通》,是一个类似于QQ的网络通讯软件,系统包含了登陆界面,注册界面和聊天界面。
用户通过登陆进入聊天界面和好友进行聊天,用户如果没登陆的用户名和密码可以通过注册后再登录进入聊天界面和好友聊天。
2.概要设计
使用JAVA开发一个类似QQ的网络通讯系统,该系统能够进行用户管理,聊天通讯及系统管理。
该聊天室系统包括客户端和服务器端。
本系统使用JAVASWING技术进行前台界面的设计和开发,使用Socket与ServerSocket网络编程进行客户端与服务器端的连接与通信,使用Java输入输出流进行客户端与服务器端之间的数据传输,使用JDBC技术与后台数据库进行连接和访问。
该系统将能够实现用户登录功能,并能对用户信息进行增加,删除,修改和查询。
登录的用户将可以进行群发,私聊及文件发送和接收。
系统总体架构如下:
图2-1即时通总体框架图
2.1系统总的设计思路
首先设计系统管理,其次设计用户管理,再次设计通讯,最后设计数据库操作。
2.2体系结构
具体为客户端的设计,服务端的设计和公共端的设计。
2.3功能模
图2-2各功能模块流程图
编号
功能名
操作
组件程序
1
系统管理
登录界面
LoginGui.java
登录处理
LoginManager.java
2
用户管理
创建用户界面
UserAddGui.java
维护用户界面
UserEditGui.java
用户管理处理
UserManager.java
3
通讯
聊天主界面
MainChatGui.java
聊天界面
ChatGui.java
文件发送界面
FileSendGui.java
文件接收界面
FileReceiverGui.java
通讯处理
ChatManager.java
4
数据库操作
数据操作封装
JDBCUtil.java
表2-1个模块主要任务
3.详细设计
1“即时通”系统包括三个工程,工程一包括四个程序,分别为:
登陆(Login.java),注册(Register.java),聊天(Chat.java),客户工作者(ClientWorker.java);工程二包括四个程序,分别为:
DB帮助者(DBHelper.jav
a),信息(Message.java),信息服务(MessageService.java),用户(User.java);
工程三包括两个程序,分别为:
服务器(QQServer.java),服务器(ServerWor
ker.java)。
2运行服务器QQServer.java程序,在运行客户端的登陆,客户可以在登陆界面输入自己的用户名和密码点击“登陆”,如果用户名和密码都正确,点击“登陆”按钮会弹出提示框“登陆成功”,点击“确定”按钮将会进入到聊天界面;如果用户名或密码错误点击“登陆”按钮会弹出提示框“登陆失败”,如果用户名或密码为空点击“登陆”按钮会弹出提示框“用户名或密码不能为空”,如果点击“取消”按钮,你的用户名和密码将会被清空,点击“注册”,会直接进入注册界面。
3运行服务器QQServer.java程序,在运行客户端的注册,客户可以在注册界面输入自己的用户名,密码,确认密码,昵称,性别,爱好,城市,职称。
如果用户名和密码错误会弹出注册失败,如果用户名写了,密码没写会弹出提示框“密码不能为空”,如果密码写了,密码没写会弹出提示框“用户名不能为空”,如果用户名和密码注册过,会弹出提示框该“用户已存在,请更换用户名”。
如果用户名,密码,确认密码都正确会弹出提示框“注册成功”。
昵称,性别,爱好,城市,职称可以不写。
4运行服务器QQServer.java程序,在运行客户端的登陆,登陆成功后,客户进入到聊天界面。
可以连续登陆无数个用户,他们可以同时和其他的人聊天,输入要发送的内容再选中对象即可,如果在输入内容没有选择发送的对象将会弹出提示框“请选择好友”,如果没有输入内容就发送给好友将会弹出提示框“输入内容不能为空”。
4.编码
4.1在登陆界面设置用户名和密码不能为空并给出提示?
解决方案:
用if语句写一段代码:
Stringname=nameItem1.getText();
if(name==null||"".equals(name)){
JOptionPane.showMessageDialog(this,"用户名不能为空,请重新输入。
","异常提示",JOptionPane.ERROR_MESSAGE);
return;
}
char[]pwd=pwdItem1.getPassword();
Stringpwd1=newString(pwd);
if(pwd.length==0){
JOptionPane.showMessageDialog(this,"密码不能为空,请重新输入。
","异常提示",JOptionPane.ERROR_MESSAGE);
return;
}
4.2如果用户登录成功如何直接进入聊天界面?
解决方案:
在点击“确定”按钮事件,加上聊天界面的代码,代码如下:
Stringr=(String)result11.getBody();
if(r==null){登陆成功
JOptionPane.showMessageDialog(this,"登陆成功","弹出提示",JOptionPane.INFORMATION_MESSAGE);
java.awt.EventQueue.invokeLater(newRunnable(){
publicvoidrun(){
newChat(u,s).setVisible(true);
}
});
this.dispose();
}
4.3如何设置性别,使用户注册后性别显示在数据库表中?
解决方案:
在登录代码finalUseru=newUser(name,pwd1l);
中填入null,在注册代码添加:
StringSex=null;
if(Item1.isSelected())
Sex=Item1.getText();
elseif(Item2.isSelected())
Sex=Item2.getText();
elseif(Item3.isSelected())
Sex=Item3.getText();
elseif(Item4.isSelected())
Sex=Item4.getText();
在DBHelper.java代码
pstm=con.prepareStatement("insertintomodo(userName,userPwd,userSex)+"values(?
?
?
)");modo中添加userSex,values中加入?
在代码pstm.setString(1,u.getUserName());
pstm.setString(2,u.getUserPwd());
中加入pstm.setString(4,u.getUserSex());
在User.java中加入privateStringuserSex;
publicUser(StringuserName,StringuserPwd,StringuserSex){
this.userSex=userSex;
}
publicStringgetUserSex(){
returnuserSex;
}
publicvoidsetUserSex(StringuserSex){
this.userSex=userSex;
}
在数据库表设计表中加userSex即可。
测试:
用Access数据库制作表格,配置数据源,运行QQserver,在运行登陆,注册,聊天。
问题1:
如果该用户已经登陆成功没有下怎么能使该用户不能再次登陆。
解决方案:
用if语句判断该用户是否已登录,若已登录则再次登陆时显示登陆失败。
代码如下:
if(usersOnLine.containsKey(u)){
return"用户已经登陆";
}
检测用户名是否存在
if(!
DBHelper.getInstance().isUser