Java聊天室系统方案Word文档格式.docx
《Java聊天室系统方案Word文档格式.docx》由会员分享,可在线阅读,更多相关《Java聊天室系统方案Word文档格式.docx(30页珍藏版)》请在冰点文库上搜索。
2.主人和客人之间可以互相发送短消息进行即时聊天。
3课程设计报告书主要容
1需求分析
2总体设计
2.1设计的总体思想与算法描述
2.2模块结构图
2.3各功能模块的功能与处理流程描述
2.4界面设计
3各功能模块程序设计
按照功能模块的功能与处理流程描述给出详细的程序代码,并给出重点语句
的注释.
4小结
4课程设计要求
1按时到机房签到,在指定机位上机。
遵守机房纪律。
2独立完成课程设计任务。
指导教师到机位上指导学生和分时段验收学生完成的程序。
3按时提交打印的课程设计报告书。
5课程设计参考书
[1]许文宪懂子建.Java程序设计教程与实训.:
大学,2005.
[2]辛运帏.Java程序设计.:
清华大学,2004
[3][美]Echel,B.Java编程思想(第三版).:
机械工业,2005
1需求分析
聊天室系统使用JAVA+SQL完成,ECLIPSE完成代码编写,JIGLOO完成界面设计,SQLSERVER完成数据库管理。
聊天室通过输入的对方IP,将JTextField中的容发送到拥有此IP的主机(前提是对方也启动了聊天室程序)。
网络的通信使用UDP协议,即时搜寻网络上的短消息,并可恢复对方消息。
数据库的表只有一个User_Info,用户通过用户管理模块登录,注册,修改密码。
系统有三个类,MainWin、ChatRoom、jdbcodbc。
MainWin是程序的入口类,界面是登陆,注册,修改密码的JFrame窗口。
ChatRoom是聊天室的主窗口,负责搜发消息。
jdbcodbc负责数据库的连接,有一个构造函数,一个查询方法,一个更新方法,三个返回方法。
三个类都放在Com包里,Com包在Chat项目里。
具体需要实现以下一些基本功能:
●用户管理模块
●数据库连接模块
●聊天室界面
2总体设计
2.1设计的总体思想
程序分为三个部分:
数据库连接,聊天室管理,用户管理。
其中用户管理有分为用户注册,用户登录,用户修改密码。
2.2程序功能模块设计
图2.1程序功能模块图
2.2.1主窗口对象
MainWin()方法:
构造函数,调用initGUI()方法以与父类JFRAME的构造函数。
main()方法:
程序的入口。
initGUI()方法:
加载窗口的各个组件以与事件处理。
2.2.2数据库连接对象
jdbcodbc():
构造函数,加载数据库驱动,建立数据库连接。
CheckInfo():
将查询语句得到的数据库容赋给数据集。
UpdateInfo():
用插入语句使数据库更新。
2.2.3聊天室对象
ChatRoom():
并用循环实现实时接受数据包里的消息。
initGUI():
2.3界面设计
2.3.1程序登录界面设计
图2.2登录界面
2.3.2程序注册界面设计
图2.3注册界面
2.3.3程序密码修改界面设计
图2.4密码修改界面
2.3.4聊天室界面设计
图2.5聊天室界面
3程序设计
3.1程序主界面设计
publicclassMainWinextendsjavax.swing.JFrame{
publicstaticvoidmain(String[]args){
MyThreadth=newMyThread();
th.start();
}
publicMainWin(){
super();
initGUI();
privatevoidinitGUI(){
try{
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
this.setPreferredSize(newjava.awt.Dimension(571,395));
getContentPane().setLayout(null);
this.setTitle("
\u6b22\u8fce\u8fdb\u5165\u804a\u5929\u5ba4"
);
getContentPane().setBackground(newjava.awt.Color(236,233,216));
this.setVisible(false);
this.setResizable(false);
{
jTabbedPane1=newJTabbedPane();
getContentPane().add(jTabbedPane1,"
Center"
jTabbedPane1.setBounds(0,0,563,361);
jTabbedPane1.setBackground(newjava.awt.Color(236,233,216));
{
jPanel1=newJPanel();
jTabbedPane1.addTab("
登录"
null,jPanel1,null);
jPanel1.setPreferredSize(newjava.awt.Dimension(522,250));
jPanel1.setLayout(null);
{
utton1=newutton();
jPanel1.add(utton1);
utton1.setText("
\u767b\u5f55"
utton1.setBounds(384,176,85,31);
utton1.setFont(newjava.awt.Font("
宋体"
0,20));
}
jTextField1=newJTextField();
jPanel1.add(jTextField1);
jTextField1.setBounds(208,80,93,31);
jTextField1.setFont(newjava.awt.Font("
jPasswordField1=newJPasswordField();
jPanel1.add(jPasswordField1);
jPasswordField1.setBounds(208,177,93,31);
jPasswordField1.setFont(newjava.awt.Font("
jLabel1=newJLabel();
jPanel1.add(jLabel1);
jLabel1.setText("
\u7528\u6237\u540d\uff1a"
jLabel1.setBounds(52,76,93,31);
jLabel1.setFont(newjava.awt.Font("
0,22));
jLabel2=newJLabel();
jPanel1.add(jLabel2);
jLabel2.setText("
\u5bc6\u7801\uff1a"
jLabel2.setBounds(52,177,93,31);
jLabel2.setFont(newjava.awt.Font("
}
jPanel2=newJPanel();
注册"
null,jPanel2,null);
jPanel2.setLayout(null);
jLabel3=newJLabel();
jPanel2.add(jLabel3);
jLabel3.setText("
jLabel3.setBounds(117,70,65,23);
jLabel3.setFont(newjava.awt.Font("
jLabel3.setSize(93,31);
jLabel4=newJLabel();
jPanel2.add(jLabel4);
jLabel4.setText("
jLabel4.setBounds(117,122,93,31);
jLabel4.setFont(newjava.awt.Font("
jLabel5=newJLabel();
jPanel2.add(jLabel5);
jLabel5.setText("
\u59d3\u540d\uff1a"
jLabel5.setBounds(117,180,93,31);
jLabel5.setFont(newjava.awt.Font("
jLabel6=newJLabel();
jPanel2.add(jLabel6);
jLabel6.setText("
\u6027\u522b\uff1a"
jLabel6.setBounds(117,237,93,31);
jLabel6.setFont(newjava.awt.Font("
jTextField2=newJTextField();
jPanel2.add(jTextField2);
jTextField2.setBounds(234,70,93,31);
jTextField2.setFont(newjava.awt.Font("
jPasswordField2=newJPasswordField();
jPanel2.add(jPasswordField2);
jPasswordField2.setBounds(234,122,93,31);
jPasswordField2.setFont(newjava.awt.Font("
jTextField3=newJTextField();
jPanel2.add(jTextField3);
jTextField3.setBounds(234,180,93,31);
jTextField3.setFont(newjava.awt.Font("
jTextField4=newJTextField();
jPanel2.add(jTextField4);
jTextField4.setBounds(234,237,93,31);
jTextField4.setFont(newjava.awt.Font("
utton2=newutton();
jPanel2.add(utton2);
utton2.setText("
\u6ce8\u518c"
utton2.setBounds(373,236,85,31);
utton2.setFont(newjava.awt.Font("
jPanel3=newJPanel();
密码修改"
null,jPanel3,null);
jPanel3.setLayout(null);
jLabel7=newJLabel();
jPanel3.add(jLabel7);
jLabel7.setText("
\u65e7\u5bc6\u7801\uff1a"
jLabel7.setBounds(98,94,36,15);
jLabel7.setFont(newjava.awt.Font("
jLabel7.setSize(93,31);
jLabel8=newJLabel();
jPanel3.add(jLabel8);
jLabel8.setText("
\u65b0\u5bc6\u7801\uff1a"
jLabel8.setBounds(98,148,36,15);
jLabel8.setFont(newjava.awt.Font("
jLabel8.setSize(93,31);
jLabel9=newJLabel();
jPanel3.add(jLabel9);
jLabel9.setText("
\u786e\u8ba4\u5bc6\u7801\uff1a"
jLabel9.setBounds(98,202,114,31);
jLabel9.setFont(newjava.awt.Font("
jPasswordField3=newJPasswordField();
jPanel3.add(jPasswordField3);
jPasswordField3.setBounds(232,94,93,31);
jPasswordField4=newJPasswordField();
jPanel3.add(jPasswordField4);
jPasswordField4.setBounds(232,148,93,31);
jPasswordField5=newJPasswordField();
jPanel3.add(jPasswordField5);
jPasswordField5.setBounds(232,202,93,31);
utton3=newutton();
jPanel3.add(utton3);
utton3.setText("
\u786e\u8ba4"
utton3.setBounds(373,203,85,31);
utton3.setFont(newjava.awt.Font("
jTextField5=newJTextField();
jPanel3.add(jTextField5);
jTextField5.setBounds(232,42,10,22);
jTextField5.setFont(newjava.awt.Font("
jTextField5.setSize(93,31);
jLabel10=newJLabel();
jPanel3.add(jLabel10);
jLabel10.setText("
jLabel10.setBounds(98,42,36,15);
jLabel10.setFont(newjava.awt.Font("
jLabel10.setSize(93,31);
}
pack();
this.setSize(571,395);
}catch(Exceptione){
e.printStackTrace();
}
utton1.addMouseListener(newMouseAdapter(){
publicvoidmouseClicked(MouseEvente){
intvisible=0;
try{
jdbcodbcdb=newjdbcodbc();
db.CheckInfo("
select*fromUser_Info"
while(db.GetRS().next()){
if(db.GetRS().getString("
ID"
).trim().equals(
jTextField1.getText())){
if(db.GetRS().getString("
PassWord"
newString(jPasswordField1.getPassword()))){
JFrame.setDefaultLookAndFeelDecorated(true);
ChatRoomchatroom=newChatRoom();
chatroom.setLocationRelativeTo(null);
chatroom.setVisible(true);
visible=1;
//窗体可见,说明用户信息正确
}
}
if(visible==0){
JOptionPane.showMessageDialog(null,"
用户信息错误"
"
警告"
JOptionPane.ERROR_MESSAGE);
jTextField1.setText("
"
jPasswordField1.setText("
jTextField1.requestFocus();
}catch(SQLExceptionsqe){
});
utton2.addMouseListener(newMouseAdapter(){
StringID=jTextField2.getText().trim();
StringPassWord=newString(jPasswordField2.getPassword());
StringUser_Name=jTextField3.getText().trim();
StringUser_Sex=jTextField4.getText().trim();
Stringsql="
insertintoUser_Infovalues('
+ID+"
'
'
+PassWord+"
+User_Name+"
+User_Sex
+"
)"
;
jdbcodbcdb1=newjdbcodbc();
jdbcodbcdb2=newjdbcodbc();
db1.CheckInfo("
if(jTextField2.getText().length()==0){
请输入用户名!
jTextField2.requestFocus();
return;
if(jTextField3.getText().length()==0){
请输入!
jTextField3.requestFocus();