基于局域网的超简易即时通讯软件(一)

  开博也那么多天了,一直没有放什么上来,今天心血来潮,就放一个之前用C#写的,基于局域网即时通讯的简易版QQ吧。

  首先呢,得了解,既然是能实现局域网的即时通讯,就必定是有服务器和客户端的,是基于C/S结构的。当时想的是为易于后期维护所以用了三层架构编写。开发软件用的是Microsoft Visual Studio 2010,数据库用的是SQL Server 2008,程序基本实现注册、登录、忘记密码、添加好友、查找好友、编辑个性签名、即时聊天等一系列功能。接下来就简单的介绍一下程序吧。

  三层架构大致是这么摆放的(如图1-1),主要就是BLL(业务逻辑层)、DB(数据访问层)、UI(界面层)。DB主要就是放对数据库增删改查之类的操作语句;而BLL则是数据进行传递和数据处理的,这层依赖于DB层;UI层就是对界面的设计,给用户展示的一层。

  

图1-1 三层架构示意图

 

  好了接下来就写写客户端吧,主界面呢是仿QQ写的(如图2-1),不是仿的特别像,将就着看吧,哈哈哈哈哈哈~~~~  界面的上部是从QQ上截下来的动图(#捂脸),在运行的时候也像QQ一样是会动的,实现呢就很简单了,一个 pictureBox就搞定了。不知道看不看的出,界面是有点半透明状态的,这个的实现也非常的简单,就在程序初始化的时候执行  this.Opacity = 0.9;  然后登录按钮的事件下写的就更、、、RZ?好吧,简单到爆的判断语句,就判断QQ号密码框是否为空,为空提示,不为空则查找与数据库中的用户名密码是否匹配,不匹配则提示账号密码错误,匹配跳转好友列表。

  

图2-1 主界面

 

  嗯~接下来说说注册吧,在主界面点击注册账号这个按钮跳转注册界面(如图2-2),同样的,界面也是半透明的,好像所有界面都是这样的,,,(也不知道我当时咋想的。。。)然后背景主体采用了一个渐变色,恩,对,所有界面的主题色都是这个(#捂脸)。弱鸡的判断语句就不详细说了,主要就是全部不能为空,然后两个密码要输入一致。验证码这块是个难点,不过其实也还好,主要就是将26个英文字母和10个数字随机抽选4个进行组合,然后用GDI将随机组合的字母和数字绘制成一张图片,同时呢,将随机组合的字母和数字保存到一个String字段中,判断用户在验证码文本框输入的和这个字段是否匹配,哦对了,当时在写这个的时候,,,在网上参考了许多,,,看到说有软件可以识别图片中的文字从而恶意注册,所以将这个随机组合的字母和数字又随机左右翻转45度,毕竟验证码主要的作用就是为了防止机器批量恶意注册嘛。。。好吧,虽然我这个程序完全没必要,反倒让我测试软件的时候烦了很多(再#捂脸)略略略。。。哦哦哦,还有重要的一点忘记说了,注册成功是会跳出一个QQ号的,QQ号则是数据库中自动生成的,在信息全部输入正确后,存储到数据库中,数据库自动生成对应的QQ号,当时想的是为了QQ号不那么连续,所以在数据库中用了一个标识规范,标识种子是1000000,标识增量设置了231(这个数字闭着眼睛随便按的。。。)。恩,这就生成了专属的QQ号,然后程序从数据库中读取这个QQ号,在注册成功界面弹出,恩~基本就是这样了啦。

图2-2 注册界面

 

   忘记密码这块就不过多描述了,同样是通过主界面跳转,主要作用。。。>->用于忘记密码时重置密码。功能实现?匹配数据库中QQ号所对应的密保问题和答案,匹配成功把用户重置的密码更新到数据库中,就只用到了简单的数据库的改、查功能。对了,在这个界面和注册界面都还有一个简单但是实用的的的的的,关闭?对,关闭窗口后的跳转,写在FormClosed事件中,在主界面跳转到本界面时,主界面用了一个this.Visible=false;方法,将主界面隐藏,然后在重置密码成功,或者关闭本窗口时,再将登录界面在本界面实例化,重新将主界面的Visible设置为true;同时将本界面释放掉(Dispose),注册界面也是一样实现的。

  图2-3 重置密码

 

   看了看时间。。。学习好像要断网了,那今天就先介绍这几个小功能吧,虽然很基础,很弱鸡,但也算是自己写的第一个完整的程序,虽然觉得不会有太多人注意到这篇小文章,但还是欢迎各位来喷~~~有大牛什么的也请不要吝啬的多多指导(大牛-_-我会不会想太多)。无论如何,第一篇博客(好吧好吧,半篇半篇>_>)就先写到这吧。

   恩~还有就是现在在自学JAVA,也希望可以有人一起相互交流学习。

 

原文地址:https://www.cnblogs.com/mingwei-cheng/p/6512275.html