java课程设计--WeTalk(201521123076)
在线群聊系统
1,团队课程设计博客链接
http://www.cnblogs.com/slickghost/p/7018105.html
个人负责模块或任务说明
负责模块:总体设计及主要聊天功能实现
2,自己的代码提交记录截图


3,自己负责模块或任务详细说明
服务器和客户端之间的各种请求,我通过自定义的标志来确认,如验证用户,首先,客户端会先发送”login”告诉服务器,这是一个登入请求。服务器接收到这个请求,就会等待接收一个User对象(通过序列化传输,把信息都放在这个对象内,更方便)提取用户名密码进行验证,通过数据库验证返回结果,再把结果告诉客户端,客户端收到true后,便告知用户登入成功。
//验证用户
public boolean sendUserToServerLogin(User user) throws IOException, ClassNotFoundException{
objectout.writeObject("login");
objectout.flush();
objectout.writeObject(user);
objectout.flush();
//输入对象, 一定要flush()
//objectout.close();
//验证结果
while(true){
String msg = objectin.readObject().toString();
if(msg.equals("true")){
return true;
}
else {
socket.close();
return false;
}
}
}
//1.登入请求,接收到一个User对象,验证其用户名和密码
if(mgs.equals("login")){
if((obj = objectin.readObject()) !=null){
User user = (User)obj;
if(serverUserDaoJDBCImpl.checkUser(user)){
ServerRunLog.log.info("User("+
user.getNumber()+") Login." );
objectout.writeObject("true");
}
else{
objectout.writeObject("false");
}
}
}
public boolean checkUser(User user) {
if(loadUser(user.getNumber()).getNumber() == user.getNumber() &&
loadUser(user.getNumber()).getPassword().equals(user.getPassword()))
return true;
return false;
}
public User loadUser(int number) {
Connection conn = null;
PreparedStatement pstat = null;
String sql = "select * from userData where number = ?";
ResultSet rs = null;
try {
conn = JDBCUtil.getConnection();
pstat = conn.prepareStatement(sql);
pstat.setInt(1, number);
rs = pstat.executeQuery();
while(rs.next()){
String netName = rs.getString("netName");
String password = rs.getString("password");
String sign=rs.getString("sign");
String telephone=rs.getString("telephone");
int isVip = rs.getInt("isVip");
User user = new User(number,password,netName,sign,telephone,isVip);
return user;
}
}catch (SQLException sqle) {
sqle.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCUtil.realeaseAll(null,pstat, conn);
}
return new User();
}
其他请求类似。
接下来看一下主要的聊天转发功能:某个加入群聊,服务器将其加入线程列表,其发送消息时,服务器会将消息转发到线程列表内的所有用户。
if(e.getSource()==chatJFrame.getSendButton()){
String msg = chatJFrame.getEditorTextArea1().getText();
try {
objectout.writeObject("message");
objectout.flush();
objectout.writeObject(msg);
objectout.flush();
//System.out.println(msg);
chatJFrame.getEditorTextArea1().setText("");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
//6.普通信息
if(mgs.equals("message")){
String groupMsg = user.getNetName() + ": " + objectin.readObject().toString();
for (int i = 0; i < mainThread.onLineUserList.size(); i++) {
mainThread.onLineUserList.get(i).objectout.writeObject("groupMessage");
mainThread.onLineUserList.get(i).objectout.flush();
mainThread.onLineUserList.get(i).objectout.writeObject(groupMsg + "\n");
mainThread.onLineUserList.get(i).objectout.flush();
}
4,课程设计感想
作为一个小组组长,本次课程设计让我收获了许多东西。 与第一次一个人做C语言课设不同的是,这次需要根据组员的实际情况安排具体任务,其实这本身就是一个难度所在。整个过程中也需要协调所有组员的工作。好在从结果来看,分配给大家的任务都能够大部分完成。第一次体验到团队协作的感觉。
本次课设不足:最初的设计还是欠缺深度思考,导致在写的过程中两次改变整体包结构;任务安排上还不是很合理;没有实现最初设计的文件共享模块;
通过本次课设,每个组员都能强化自己所做的那一部分知识,整体完成后一起过了一遍,了解了整体流程;可能是效率不高,时间不够,只实现了最基本的功能,当初预想的一些功能慢慢地删除,不过实现最基本的通信之后,在这基础上添加后续功能难度不是很大。
java课程设计--WeTalk(201521123076)的更多相关文章
- java课程设计--WeTalk(201521123072秦贞一)
在线群聊系统 1,团队课程设计博客链接 http://www.cnblogs.com/slickghost/p/7018105.html 个人负责模块或任务说明 负责模块:界面设计与实现 2,自己的代 ...
- java课程设计--We Talk(201521123061)
java课程设计--We Talk(201521123061) 团队博客链接:http://www.cnblogs.com/slickghost/ 数据库 一.通过Dao模式建立与数据库的连接 1.数 ...
- java(课程设计之记事本界面部分代码公布)
代码:涉及记事本的一些界面......!! /* *java课程设计之记事本(coder @Gxjun) * 编写一个记事本程序 * 要求: * 用图形用户界面实现. * 能实现编辑.保存.另存为.查 ...
- java课程设计(计算器)
JAVA课程 设 计 报 告 1206401-18 瞿杰 一.设计时间 2013年6月 24日-----6月28日 二.设计地点 湖南城市学院实验楼计算机506机房 三.设计目的 1.巩固学习VB ...
- Java课程设计——博客作业教学数据分析系统(201521123084 林正晟)
#课程设计--博客作业教学数据分析系统(201521123084 林正晟) 1.团队课程设计博客链接 博客作业教学数据分析系统 2.个人负责模块或任务说明 学生登陆界面的前端实现和与数据库的连接 学生 ...
- Java课程设计——博客作业教学数据分析系统(201521123082 黄华林)
Java课程设计--博客作业教学数据分析系统(201521123082 黄华林) 一.团队课程设计博客链接 博客作业教学数据分析系统(From:网络五条狗) 二.个人负责模块或任务说明 1.网络爬虫 ...
- Java 课程设计 "Give it up"小游戏(团队)
JAVA课程设计 "永不言弃"小游戏(From :Niverse) 通过Swing技术创建游戏的登陆注册界面,使用mySQL数据库技术完成用户的各项信息保存和游戏完成后的成绩保存. ...
- Java课程设计----仿Windows标准型计算器
JAVA课程设计 仿Windows标准型计算器(By Yanboooooooo) 一.团队介绍: 连燕波[组长]:网络1513学生. 张文博[组员]:网络1513学生. 二.项目git地址 码云项目地 ...
- Java课程设计—象棋
1. 团队名称.团队成员介绍 团队名称:WY 团队成员: 吴慧婷[组长] 201521123094 网络1514 姚佳希 201521123042 网络1512 2 项目git地址 Java课程设计 ...
随机推荐
- MySQL数据库 —子查询,联合查询
一 使用IN关键字的子查询 1.查询游戏类型是'棋牌类' 的游戏的分数信息 游戏分数表中并未包含游戏类型信息 思路一:采用链接查询 思路二: 分两步进行,首先找到所以'棋牌类'游戏的编号,再以这一组编 ...
- SQL的JOIN语法解析(inner join, left join, right join, full outer join的区别)
原文链接:http://www.powerxing.com/sql-join/ 总的来说,四种JOIN的使用/区别可以描述为: left join 会从左表(shop)那里返回所有的记录,即使在右表( ...
- [js高手之路] 跟GhostWu一起封装一个字符串工具库-扩展字符串位置方法(4)
本文,我们接着之前的框架继续扩展,这次扩展了一共有5个与字符串位置相关的方法 between( left, right ) 返回两个字符串之间的内容, 如果第二个参数没有传递,返回的是找到的第一个参数 ...
- Spring(一)之IOC、bean、注入
[TOC] spring简介 首先它是一个开源的.用来简化企业级应用开发的框架. Spring为编写企业应用程序提供了轻量的解决方案,同时仍然支持使用声明式事务. 用RMI或web service远程 ...
- js 小数计算为啥和想象中不一样!
今天遇到了一个比较有趣的事,如果要你计算0.1+0.2等于多少你会怎么回答? "0.3啊!"你可能都不会考虑.我也一样,当a=0.1,b=0.2时 if(a+b === 0.3){ ...
- 陈年佳酿之 - Winform ListView 控件 double click 事件中获取选中的row与column
背景 最近收到了一个关于以前项目的维护请求,那时的楼主还是刚刚工作的小青年~~~ 项目之前使用的是.net/winform.今天重新打开代码,看着之前在FrameWork2.0下面的代码, 满满的回忆 ...
- EasyUI Datagrid 鼠标悬停显示单元格内容 复制代码
EasyUI Datagrid 鼠标悬停显示单元格内容 ,halign:, align: 0 « 上一篇:LINQ to Entities 中的查询» 下一篇:去掉字符串中的非数字字符 posted ...
- .NET平台微服务项目汇集
最近博客园出现了一篇文章<微服务时代之2017年五军之战:Net PHP谁先死>,掀起了一波撕逼,作者只是从一个使用者的角度来指点江山,这个姿势是不对的..NET Core就是专门针对模块 ...
- 【Linux 网络】网络测试命令 长期更新
一.网络测试命令 1.测试 网络连接 发送两包后停发 [oracle@hadoop ~]$ PING www.a.shifen.com (() bytes of data. bytes from tt ...
- java中 this 的三种用法
Java中this的三种用法 调用属性 (1)this可以调用本类中的任何成员变量 调用方法(可省略) (2)this调用本类中的成员方法(在main方法里面没有办法通过this调用) 调用构造方法 ...