• 基于Socket编程Java和mysql实现的简易微信设计


    目 录

    1. 项目功能与平台介绍 3
      1.1 实现的功能 3
      1.1.1 基本功能 3
      1.1.2 附加功能 4
      1.2 使用平台与技术 4
      1.2.1 Java 4
      1.2.2 MySQL介绍 5
    2. 程序架构分析 6
      2.1 程序架构图 6
      2.2 程序结构分析 6
      2.3 程序流程图 7
      2.4 程序流程图分析 7
    3. 功能分析和设计方法 8
      3.1 注册功能 8
      3.2 登录功能 8
      3.3 忘记密码 9
      3.4 好友列表 10
      3.5 好友聊天 10
      3.6 添加好友 11
      3.7 修改密码 12
      3.8 好友消息群发 12
      3.9 局域网搜索与通话 13
    4. 数据库说明 15
      4.1 数据库表表结构 15
      4.1.1 用户信息表 15
      4.1.2 用户好友列表 15
      4.2 数据库表数据 16
      4.2.1 用户信息表 16
      4.2.2 用户关系表 16
      4.3 数据库相关的建表语句 16
      4.3.1 建立用户信息表 16
      4.3.2 插入第一个用户 17
      4.3.3 为相关用户建立其好友列表 17
    5. 项目总结 18
    6. 项目功能与平台介绍
      1.1 实现的功能
      1.1.1 基本功能
      通讯录功能。通讯录按照字母表顺序显示。
      能添加新的朋友。A向服务器发送查询请求,并根据得到的信息,向B发出好友请求和验证信息,通过验证之后,将新的朋友添加到通讯录中。
      可以通过服务器与通讯录中的朋友进行即时通信。(双方可以互发信息,包括文字和图片),发送信息不成功时要有相应的提示。
      局域网发现功能。能够发现局域网中其他正在使用简易微信的用户,并且可以通过局域网发起临时会话。
      1.1.2 附加功能
      用户注册功能。用户可以创建自己的账号、密码来使用客户端。
      密码修改功能。用户可以修改自己账号的密码。
      忘记密码功能。用户注册的时候,会登记一个个人问题,并自己给出答案,使用忘记密码时,只需要记得自己的账号和问题的答案,即可修改自己的密码。
      好友消息群发功能。在逢年过节时,如果想要向所有好友群发消息,则可以使用这个功能,实现好友消息群发的功能。
      1.2 使用平台与技术
      此项目运行在Windows 10上,使用Eclipse作为IDE,用MySQL作为数据库。以Java为主要设计语言。
      1.2.1 Java
      ①Socket实现简便
      Java提供了较多的Socket相关的API,Socekt编程的时候可以方便地调用API来实现通信。
      ②面向对象
      Java提供了简单的类机制和动态的架构模型。对象中封装了它的状态变量和方法。很好地实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承和重载机制,子类可以使用或重新定义父类或超类所提供的方法,从而既实现了代码的复用,又提供了一种动态的解决方案。
      Java同样支持继承特性,java的类可以从其他类中继承行为,但java只支持类的单重继承,即每个类只能从一个类中继承。
      Java支持界面,界面允许程序员定义方法但不立即实现,一个类可以实现多个界面,利用界面可以得到多重继承的许多优点而又没有多重继承的问题。
      ③多线程
      多线程使应用程序可以同时进行不同的操作,处理不同的事件。在多线程机制中,不同的线程处理不同的任务,他们之间互不干涉,不会由于一处等待影响其他部分,这样容易实现网络上的实时交互操作。多线程保证了较高的执行效率。
      1.2.2 MySQL介绍
      MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
      MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。本文转载自http://www.biyezuopin.vip/onews.asp?id=15394,MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
    package Entity;
    
    import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.Collections;
    
    import javax.swing.ImageIcon;
    /**
    *  
    */
    public class User extends Person implements Serializable{
    	private static final long serialVersionUID = 1L;
    	private String user_pwd;
    	private String ques_to_retrieve_the_pwd;
    	private String ans_to_retrieve_the_pwd;
    	private int friends_num = 0;
    	private int all_onlines = 0;
    	private int groups_num = 0;
    	private ArrayList<String> friendslist;
    	private ArrayList<String> all_online;
    	
    	public User() {
    		super();
    	}
    	
    	public User(String username, String password) {
    		super();
    		this.user_name = username;
    		this.user_pwd = password;
    	}
    
    	public String setUsername(String username) {//修改用户名
    		return this.user_name = username;
    	}
    
    	public String getUsername() {//修改用户名
    		return user_name;
    	}
    	
    	public String getUserpwd() {
    		return user_pwd;
    	}
    
    	public String setUserpwd(String password) {//修改用户密码
    		return this.user_pwd = password;
    	}
    	
    	
    	public String setUserNickname(String nickname) {
    		return this.user_nickname = nickname;
    	}
    	
    	public String getUserQuestion() {
    		return ques_to_retrieve_the_pwd;
    	}
    	
    	public String setUserQuestion(String question) {
    		return this.ques_to_retrieve_the_pwd = question;
    	}
    	
    	public String getUserAnswer() {
    		return ans_to_retrieve_the_pwd;
    	}
    	
    	public String setUserAnswer(String answer) {
    		return this.ans_to_retrieve_the_pwd = answer;
    	}
    	
    
    	public int setUserSex(int sex) {
    		return this.user_sex = sex;
    	}
    	public ImageIcon setUserAvata(ImageIcon user_avata) {
    		return this.user_avata = user_avata;
    	}
    	
    	public int getFriendsNum() {
    		return friends_num;
    	}
    	
    	public void setFriendsNum(int friends_num) {
    		this.friends_num = friends_num;
    	}
    	
    	public int getAllOnlineNum(){
    		return all_onlines;
    	}
    	
    	public void setFriendsList(ArrayList<String> friendList) {
    		Collections.sort(friendList);
    		this.friendslist = new ArrayList<String>(friendList);
    		this.friends_num = friendList.size();
    	}
    	
    	public ArrayList<String> getFriend() {//获取用户朋友
    		return friendslist;
    	}
    	
    	public void setAllOnline(ArrayList<String> all_online) {
    		Collections.sort(all_online);
    		this.all_online = new ArrayList<String>(all_online);
    		this.all_onlines = all_online.size();
    	}
    	
    	public ArrayList<String> getAllOnline() {//获取用户朋友
    		return all_online;
    	}
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    在Photoshop上标小图标的操作记录
    工厂模式介绍
    请问swat输出的是有机氮、 有机磷、 硝态氮等,但目前只有总磷、总氮和氨氮的数据,该怎么率定呢?
    [ 漏洞复现篇 ] yapi 代码执行 getshell 漏洞复现详解
    主图上视频全面开放,亚马逊试验新功能将让跟卖更加猖獗
    ubuntu18/20 下如何生成core文件
    38_final关键字
    专家解读 | NIST网络安全框架(3):层级配置
    hive on spark下row_number()问题排查
    产教融合 | 力软联合重庆科技学院开展低代码应用开发培训
  • 原文地址:https://blog.csdn.net/newlw/article/details/126700879