Windows编程课设(C#)——基于WPF和.net的即时通讯系统(仿微信)

简介: 一款参考QQ、微信的即时通讯软件。采用CS结构,客户端基于.Net与WPF开发,服务端使用Java开发。

一款参考QQ、微信的即时通讯软件。采用CS结构,客户端基于.Net与WPF开发,服务端使用Java开发。


提供的服务

  1. 注册功能:用户通过手机号码进行账号的注册,每个手机号唯一对应一个用户,需要接收验证码进行手机的绑定。此外用户需要上传头像,设置用户名和密码等信息以完成注册功能。
  2. 登录功能:系统提供两种登录方式:一种采用手机号+密码的方式进行登录;一种通过 QQ 平台的 OAuth2 进行登录,即将用户与 QQ号进行关联,通过该方式不需要设置手机号码。
  3. 好友相关功能:a.用户可以通过搜索其他用户的手机号码,用户名等方式查找其他用户,并查看其他用户的信息。b.可以向用户发送好友添加请求,发送请求时可以携带验证信息,同时可以为该其设置一个备注名。被发送好友添加请求的用户可以选择接受或者拒绝该请求,如果接受请求则同样可以为好友设置备注名。c.用户可以删除好友,单方发出删除请求后后双方的好友关系同时解除。d.用户可以通过好友备注或者手机号码等对好友列表进行筛选,搜索好友。
  4. 聊天功能:a.用户可以与自己的好友进行聊天,发送文本消息。b.用户接收到消息之后会有未读消息数量的提示。c.用户可以进入群组中发送消息,群组会话中可以看到所有用户的用户名和头像。d.用户可以查看群组或者好友的所有聊天记录。
  5. 用户个人资料修改功能:用户可以修改自己的头像、用户名、个性签名、性别、邮箱以及所在地区等信息,对于账号 id、手机号码以及注册时间等信息则没有权限进行修改。
  6. 消息推送:当用户上线或下线时,都会将消息推送给所有的好友。
  7. AI 机器人功能:每个用户在完成注册之后都会分配得到一个属于自己的AI机器人,其具有专属于这个用户的上下文,用户可以与其交流,向其提问,或者对其进行训练已达到自己的预期。


运行说明

  1. 打开软件后首先进入登录界面,如果已经完成注册,则通过输入手机号码和密码进行登录,也可以使用QQ进行授权登录。如果未注册则可以点击注册账号按钮进入注册界面。


  1. 进入注册界面后,点击头像框的从本地选择图片作为头像,紧接着填写用户名、密码以及手机号码,用户名和密码会有长度的限制,而手机号码会进行合法性的校验。手机号码合法的情况下,点击获取验证码按钮之后,对应的手机号就可以收到验证短信。接着填写验证码之后就可以点击注册按钮完成注册。





  1. 注册成功之后会自动跳转到登录界面,接着输入注册的手机号码和密码之后点击登录(或键入回车键)就可以进入主界面。用户在注册后系统会自动添加一个名为 Robot的AI好友,可以通过在消息框输入内容后点击发送按钮或键入回车键发送消息与其进行对话。


  1. 用户也可以点击添加按钮进入添加好友界面,通过输入用户名搜索其他用户(支持模糊查询)。



5.用户可以点击查询结果项进入用户的个人资料界面查看用户相关信息。



6.如果想要添加用户则通过点击+号按钮,进入好友请求界面。在该界面可以通过点击用户名后的铅笔按钮为用户设置备注名,同时填写验证消息,最后通过点击发送请求按钮来发送好友请求。




7.另一个用户可以通过点击好友请求按钮进入好友请求列表界面,查看发送给自己的添加好友请求。可以通过点击√按钮来接受请求,也可以通过点击×按钮来拒绝请求。之后同样可以通过点击用户名后面的铅笔按钮为好友设置备注名。




8.接受请求之后双方便成为好友关系,并且可以在各自的好友列表中看到对方的存在。好友列表会有一个带颜色的圆圈表示用户状态,绿色表示用户在线,灰色表示用户离线。用户可以点击好友来进入与其的会话框,之后即可以与好友进行通讯。用户还可以点击群聊按钮进去群聊列表,之后同样可以选择一个群聊进行通讯。




9.用户可以通过列表上访的搜索框进行搜索,如果当前是在好友列表则搜索显示匹配的好友;如果当前切换到了群组列表,则搜索显示出匹配的群组。


10.用户还可以通过点击上方的房子形状的按钮进入个人主页。在该界面中用户可以通过点击铅笔按钮进入修改模式,点击之后用户可以上传头像,修改用户名、个性签名、性别、邮箱号、所在地区等信息,对于账号,手机号码和注册时间等信息则无法进行修改。修改完成之后点击Save则完成保存并且同步渲染到主界面,如果点击Cancel则会将所有信息重置到修改以前。



11.用户通过右键指定的好友可以唤起一个菜单,其中可以选择显示好友资料或者删除好友。如果点击删除好友则会弹出提示框询问是否确认操作,在确认删除之后则会解除双方的好友消息,同时将双方从对方的好友列表中移除,此外被删除方还会收到被对方删除的提示消息。




12.当用户进入主界面之后,点击界面右上方的x按钮并不会退出软件,而只是最小化到系统托盘。如果用户想真正退出程序,应该通过右键系统托盘选择退出项进行退出。


环境准备

  1. 数据库准备:需要先运行MySQL脚本,进行数据库表的创建
  2. 服务器准备:修改Server项目中的application.xaml文件,配置OAuth2授权平台的相关信息以及项目的端口等信息后启动服务端。(其中第三方授权依赖引入自我的阿里云私服,Maven无法直接下载,可前往我的Github:openauth-spring-boot-starter进行下载)
  3. 客户端准备:进入App.xaml.cs文件配置服务端的IP地址,同时在HttpUtil工具类中接入AI机器人接口、短信验证服务接口等,正确地配置SocketUtil中的连接。


项目源码

WPF-IM:Ken-Chy129/WPF-IM: 一款参考QQ、微信的即时通讯软件。采用CS结构,客户端基于.Net与WPF开发,服务端使用Java开发。 (github.com)


引用到的依赖:


  1. OAuth2登录脚手架:Ken-Chy129/openauth-spring-boot-starter: 基于OAuth2的第三方授权登录脚手架,轻量且方便,支持自定义扩展 (github.com)
  2. Ken-Chy129/OpenAuth: 基于OAuth2的第三方授权登陆组件,目前已集成Github、Gitee以及QQ等第三方平台的授权登录,具有高度封装,使用简单,易扩展等优点


相关文章
|
5月前
|
小程序 Java 关系型数据库
基于微信小程序的智慧养老服务系统
本系统基于Java、MySQL和Spring Boot技术,构建高效、安全的养老院管理系统,提升信息处理速度与管理规范性,实现数据自动化备份与网络化管理,助力养老机构信息化升级。
|
5月前
|
JavaScript 小程序 Java
基于微信小程序的线上博物馆系统
线上博物馆系统利用互联网与数字技术,实现文化遗产的数字化保护与传播,打破时空限制,推动文化传承与教育创新。结合Java、Vue及Uniapp等技术,构建跨平台、高互动的在线展览平台,提升公众文化体验。
|
7月前
|
缓存 小程序 开发工具
最新原创uniapp+vue3仿微信界面聊天app系统
最新原创研发uniapp+vue3实战跨端仿微信App界面聊天程序。支持运行到H5+小程序+APP端。
350 7
最新原创uniapp+vue3仿微信界面聊天app系统
|
11月前
|
SQL 数据库 数据安全/隐私保护
C#wpf学习卡后台管理系统
C#wpf学习卡后台管理系统
276 32
|
12月前
|
存储 移动开发 小程序
校园圈子系统小程序(圈子论坛、私信聊天、资料共享、二手交易、兼职,跑腿)开源码开发/微信公众号、小程序、H5多端账号同步/搭建多城市的综合社交生活平台
基于开源技术栈构建的校园圈子系统小程序,整合社交与生活服务功能,涵盖兴趣圈子、私信聊天、资料共享、二手交易、兼职跑腿等六大核心模块。通过多端账号同步(微信公众号/小程序/H5),实现数据实时交互,满足学生群体的多元化需求。项目精准锚定校园市场,以“社交+服务”双轮驱动,提供一站式解决方案,支持快速部署与多校区运营,同时具备广告、佣金、会员等多元变现能力,是打造校园生态的理想工具。
1264 3
校园圈子系统小程序(圈子论坛、私信聊天、资料共享、二手交易、兼职,跑腿)开源码开发/微信公众号、小程序、H5多端账号同步/搭建多城市的综合社交生活平台
|
存储 缓存 关系型数据库
社交软件红包技术解密(六):微信红包系统的存储层架构演进实践
微信红包本质是小额资金在用户帐户流转,有发、抢、拆三大步骤。在这个过程中对事务有高要求,所以订单最终要基于传统的RDBMS,这方面是它的强项,最终订单的存储使用互联网行业最通用的MySQL数据库。支持事务、成熟稳定,我们的团队在MySQL上有长期技术积累。但是传统数据库的扩展性有局限,需要通过架构解决。
440 18
|
11月前
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
455 0
|
存储 缓存 监控
社交软件红包技术解密(四):微信红包系统是如何应对高并发的
本文将为读者介绍微信百亿级别红包背后的高并发设计实践,内容包括微信红包系统的技术难点、解决高并发问题通常使用的方案,以及微信红包系统的所采用高并发解决方案。
410 13
|
存储 监控 容灾
社交软件红包技术解密(五):微信红包系统是如何实现高可用性的
本次分享介绍了微信红包后台系统的高可用实践经验,主要包括后台的 set 化设计、异步化设计、订单异地存储设计、存储层容灾设计与平行扩缩容等。听众可以了解到微信红包后台架构的设计细节,共同探讨高可用设计实践上遇到的问题与解决方案。
469 5