C#项⽬实战练习:SunTalk——做你⾃⼰的QQ
朴龙河为什么自杀
⽂章⽬录
⼀、前⾔
  C#程序设计实战练习项⽬,做⼀个类似于QQ的软件,程序参考明⽇科技出版的《C#项⽬开发⼊门实战》第⼀章:Q友,做⾃⼰的QQ。
  众所周知,学编程实践⼤于纯论理学习。为巩固和练习C#程序设计在编写Winform窗体应⽤程序⽅⾯的开发与应⽤,着⼿做了这样⼀个练习,实战中确实遇到了很多坑,也学到了很多,回顾开发过程,记录⼼得,写下这篇博客。
⼆、项⽬介绍
  QQ作为⼀款即时通信软件,于1999年2⽉推出,⽬前以发展了22年,拥有海量⽤户和灵活强⼤的功能。本次实验仅仅做了最基本的四个模块的练习,分别是⽤户登录界⾯,⽤户账号注册界⾯,主界⾯,聊天界⾯.
  (虽然是练习,但还是想让软件拥有⾃⼰的特⾊,所以将书中的Q友改成了SunTalk,也更改了窗体背景,头像,控件颜⾊位置等属性)
三、开发技术
  查了下,腾讯QQ客户端采⽤ Microsoft Visual C++开发; 服务器端软件采⽤Linux gcc开发 ;数据库采⽤MySql 数据库。腾讯QQ采⽤标准的TCP/IP协议为通信协议。腾讯QQ客户端之间的消息传送也采⽤了UDP模式。
  本次练习是在windows操作系统下进⾏的,使⽤的是C#编程语⾔,数据库采⽤的是MS SQL Server 2019,集成开发环境使⽤的是Visual Studio 2019。
  主要涉及了以下内容:
Form窗体关键属性、⽅法和事件的应⽤;
如何触发窗体和控件的时间;
ListView控件和ImageLis t组件的结合使⽤;
数据库及数据表的建⽴与管理;
运势2013使⽤C#操作SQL server数据库;
腾讯手游
Timer定时器组件的使⽤;
如何判断是否按下了<Enter>键;
⾃定义最⼩化和关闭按钮。
四、程序缺陷
  本次练习主要实现了登录,注册,发消息这三个功能,⽽且只是单机的,确实⽐较鸡肋,但仍能学到很多东西。
五、前车之鉴
  在起初练习这个项⽬的时候,使⽤的框架是.NET Core框架。然⽽做到后⾯的时候,发现.NET Core框架存在个严重的bug,不⽀持上下⽂菜单组件,和⼯具栏控件等。这使得本次练习不能继续完美的进⾏下去了,翻阅了很多论坛,得到了⼀句真理,开发winform窗体应⽤程序还是⽼⽼实实的⽤.NET FrameWork框架吧。
  .NET Core框架⽆法直接更改成.NET Framework框架,所以,我重头来了⼀遍。。。
  然⽽当我设计完登录窗体,问题⼜出现了,运⾏调试,设计好的控件错位了国家助学金申请表申请理由
  于是⼜查了各⼤论坛,发现.NET FrameWork框架确实存在这个问题,笔记本电脑的显⽰屏分辨率缩放通常被放⼤到125%或者150%来适应电脑屏幕,⽽使⽤.NET FrameWork框架设计窗体似乎必须在分辨率缩放为100%的时候才能保证控件不发⽣错位(啊这,为什么⽤.NET core框架不会)但是相应的VS2019上的字体就⽐较模糊了,⽬前确实没到什么好的解决办法,就硬着头⽪继续做了下来。。。。。。。
六、正式开始
  SunTalk软件业务流程:⽤户——>软件登录——>是否注册(未注册进⼊注册页⾯)——>登录验证——>主窗体——>双击头像——>聊天窗体。
七、数据库设计
  后续功能的实现都需要操作数据库,所以设计数据库是第⼀要义,设计数据库之前,我们应该知道我们需要怎样的数据,进⽽需要设计怎样的表格,数据库的设计和程序窗体的设计应该是并⾏的,但为了后⾯调⽤的⽅便,还是先将数据库的设计好。
1、创建数据库
  右键对象资源管理器下的数据库,选择新建,为数据库起个名字,点击确定。
  右键db_SunTalk下的表,选择新建表,表的设计分别如下。
  值得注意的是,以下各表中的ID字段列属性的标识规范(是标识)需要设计成(是),表⽰增量和标识种⼦分别为1。
独生子女将无法继承父母房产  记得在初次更改标识规范时,出现过⽆法更改的现象,这时需要在⼯具下拉菜单的选项中取消阻⽌保存要求重新创建表的更改复选框的对勾。
2、数据表设计
2.1 tb_User(⽤户信息表)
2.2 tb_Friend(好友信息表)
高铁外卖2.3 tb_Message(消息表)
2.4 tb_MessageType(消息类型表)
2.5 tb_FriendLimit(添加好友条件表)