c#实现网络聊天室仿QQ课程设计.docx
- 文档编号:17717082
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:27
- 大小:2.14MB
c#实现网络聊天室仿QQ课程设计.docx
《c#实现网络聊天室仿QQ课程设计.docx》由会员分享,可在线阅读,更多相关《c#实现网络聊天室仿QQ课程设计.docx(27页珍藏版)》请在冰点文库上搜索。
c#实现网络聊天室仿QQ课程设计
c#实现网络聊天室(socket)仿QQ课程设计(总23页)
VisualC#程序设计
课程设计(报告)
题目:
网络聊天室
专业班级:
地信131
学生姓名:
胡宏勇
学号:
12
完成时间:
_________
任务书
项目四网络聊天室
、目的与要求
1.目的:
1)要求学生达到熟练掌握.NET基本结构以及C#语言的基本知识和技能;
2)基本掌握面向对象程序开发的基本思路和方法;
3)掌握网络程序开发的基本知识;
4)能够利用所学的基本知识和技能,进行简单的网络通信程序设计。
2.要求
基本要求:
1)要求利用C#的编程思想以及套接字开发原理来完成系统的设计;
2)突出C#语言与其它语言不同点(即体现C#的高级功能,如属性概念、接口、事件、委托等);
3)体现可视化编程基本东西,如系统带有菜单、工具栏、状态栏以及一些
常用的高级控件。
创新要求:
在基本要求达到后,可进行创新设计,如加入文件传输功能,以及远程控制功能。
、信息描述
有关该系统基本信息的描述,如:
客户端实例的信息等。
类似于QQ。
、功能描述
1.聊天室服务器端的创建。
2.聊天室客户端的创建。
3.实现客户与服务器的连接通讯。
4.实现客户之间的私聊。
5.实现客户端的在线信息显示。
6.实现服务器端当前在线客户信息。
7.保存谈话记录。
、解决方案
1.首先进行需求分析,搞清楚系统功能和任务。
2.然后总体设计中确定模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。
确定模块间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。
3.详细设计中为每个模块确定采用的算法,选择适当的工具表达算法的过程(流程图),描述模块的详细过程;确定每一模块使用的数据结构;确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口。
4.依据分析编写C#代码。
1.需求分析--------------------1
摘要
系统开发背景
聊天软件的开发目标
2.概要设计--------------------2
服务器端
客户端
3.详细设计--------------------3
4.编码--------------------6
服务器端核心编码
客户端核心代码
5.调试分析-------------------18
6.用户使用说明-----------------27
7.课程设计总结----------------28
8.参考文献-------------------28
1.需求分析
摘要
作为除电视、报纸、广播之外的第四大媒体,互联网不仅成为人们获取新闻信息的主要来源,更成为了人们闲暇之余的一种休闲手段。
随着互联网技术的发展,各种各样基于网络的应用也随之诞生,网络聊天工具便是其中的一种。
本文采用VisualStudio2010+SQLServer2008开发环境,结合WinForms、等多种技术,实现了一个类似QQ的网络聊天工具,并在WINDOWS平台上加以了实现。
通过C#语言进行网络编程,通过公共的数据库交换各种信息,实现了人性化的界面设计与功能设计。
软件经过测试,满足现代人们即时通信的需求,达到预期的设计效果,对网络聊天工具的人性化设计具有一定的现实意义,同时也为其他相关项目的设计提供了参考。
关键词:
网络聊天工具C#即时通信数据库人性化
系统开发背景
在互联网相当普及的今天,你们对网络的依赖越来越大,越来越离不开网络,网络聊天更是成为了人们的“家常便饭”。
通过网络聊天工具,人们足不出户就可进行闲聊甚至工作会谈,极大地方便了人们的日常生活与工作需求。
常用的网络聊天工具主要是QQ与MSN。
MSN主要用于国际,而国内的主流网络聊天工具是QQ。
为了方便同学之间的交流,我决定设计一个类似QQ并且无垃圾信息的网络聊天工具,此外也希望通过本次课程设计能更好地学习与掌握网络软件编程知识。
聊天软件的开发目标
本次课程设计的主要工作是设计一个类似QQ的网络即时聊天工具,主要是采用WinForms++Socket通信技术实现。
软件功能主要包括用户注册、用户登录、用户间聊天、查找/添加好友、个人设置以及服务器的搭建等。
客户端通过公共的数据库交换信息,消息的发送和读取都是通过Socket通信技术和操作数据库来完成的。
在程序中采用定时扫描数据库的方式来查找登录用户。
以及Socket通信技术实现信息交换。
2.概要设计
(1)数据库端
MODEL类:
数据库的模型层包括Users(用户层)Stars(用户所对应的星座)Friends(用户之间的好友关系层)BloodType(用户所对应的血型)
DAL类:
sqlHelper(数据库与数据层DAL的连接类)UsersDAL(用户的数据层)StasDAL(用户所对应的星座数据层)FriendsDAL(用户之间的好友关系的数据层)BloodTypeDAL(用户所对应的血型的数据层)
BLL类:
UsersBLL(用户的业务层)StarsBLL(用户所对应的星座的业务层)
FriendsBLL(用户之间的好友关系的业务层)BloodTypeBLL(用户所对应的血型的业务层)
(2)服务器端
Server类:
ClientManager(客户端通信管理类)DGSendMsg(显示消息的委托类)MainServer(主窗体)
(3)客户端
新建客户端类:
Login(登录主窗体)FrmInformation(登录后的消息提示)MainList(主界面与聊天窗口)AddFriend(通过Id添加好友)Apply(申请号码)forgetpwd(找回密码)HeadList(选择更换头像)MyDetail(个人详细资料设计)MyHead(浮动头像框)Search(不同条件查询好友)
3.详细设计
设计中定义的所有数据类型涉及太多就不一一列出,下面是我程序个个的调用流程图。
(1)(模型层-数据层-业务层)
(业务层与UI层)
(客户端与服务器通信)
4.编码
(1)(服务器端核型代码)
lose();
(strClientID);
}
}
publicvoidSendMsgToClient(stringMsg)
{
electById(strToId);
if{
byte[]buffer=Socketconn=ClientSocket[];
(buffer);
}
}
(客户端)
pDateIp,electById(strFromId);
ext==+"("++")")
{
}
else
{
if[i].Text==+"("++")")
{
[i].Text=+"("++")"+"...好友发来消息";
}
}
}
}
using(FileStreamfsWrite=newFileStream(path+"\\"++".txt",,)
{
byte[]newbuffer=(newbuffer,0,;
}
}
electById(strFromId);
xt",,)
{
byte[]newbuffer=(newbuffer,0,;
}
if("好友"++"发来一个文件是否接收","收到文件",==
{
SaveFileDialogsfd=newSaveFileDialog();
="保存文件";
="全部文件|*.*";
=@"C:
\Users\Administrator\Desktop";
(this);
using(FileStreamfs=newFileStream,,)
{
(buffer,1,r-1);
}
("保存成功");
using(FileStreamfsWrite=newFileStream(path+"\\"++".txt",,)
{
byte[]newbuffer="接收成功");
(newbuffer,0,;
}
}
else
{
using(FileStreamfsWrite=newFileStream(path+"\\"++".txt",,)
{
byte[]newbuffer="接收不成功");
(newbuffer,0,;
}
}
}
electById(strFromId);
stringnewstr=+":
"+"震动了一下"+"____["++"]"+"\r\n";
if==
{
showmsg(newstr);
}
for(inti=0;i<100;i++)
{
Randomrd=newRandom();
intx=(200,250);
Randomrx=newRandom();
inty=(200,250);
=newPoint(x,y);
();
}
using(FileStreamfsWrite=newFileStream(path+"\\"++".txt",,)
{
byte[]newbuffer=(newbuffer,0,;
}
}
}
}
catch
{
}
}
#endregion
xt",,)
{
byte[]newbuffer=(newbuffer,0,;
}
stringstr=+"|"++"|"+byte[]buffer=List
xt",,)
{
byte[]newbuffer=(newbuffer,0,;
}
try
{
using(FileStreamfs=newFileStream,,)
{
stringstr=+"|"++"|"+byte[]buffer0=byte[]buffer=newbyte[1024*1024*5];
intr=(buffer,0,;
List
xt",,)
{
byte[]newbuffer=(newbuffer,0,;
}
stringstr=+"|"++"|";
byte[]buffer=List
.]
*文字:
*命令
(1)|自己的Id|对方的Id|内容(文字)|...]
*震动
*命令
(2)|自己的Id|对方的Id|
(2)数据库:
远程虚拟机上的数据库,用户你要再有网络的地方都可以使用(数据库的配置文件在每个UI层的里面)
(3)通信必须在服务器打开的状态下,如果出现服务器异常,则不可以进行与好友之间的通信。
7.课程设计总结
总结
为期两周的课程设计结束了,在老师和同学的帮助下,我基本完成系统的设计。
我按照系统工程软件设计的要求,从需求分析,概念设计,总体设计,详细设计,系统测试等各个步骤,分步完成系统的各项任务,实现了系统中的学生信息查询,学生信息更新,学生信息添加等模块的功能。
本次课程设计的目的旨在通过C#实现更为人性化的网络聊天工具,通过不断地调试,掌握了网络socket通信的基本知识,通过系统功能的实现,充分的复习了winform编程,数据库编程,加深了对基础知识的了解,了解到基础知识的重要性。
8.参考文献
(1)博客园-----网络编程之Socket的TCP协议实现客户端与客户端之间的通信
(2)传智播客------传智播客.Net学院--特供精品.Net基础全套视频教程2014版\特供精品.Net基础全套视频教程2014版--04Winform应用程序\02--多线程和Socket网络编程\特供.Net基础全套视频教程2014版(第十六天)
(3)51ASPX源码
(1)51aspx_SocketChatTools68c6e423-990d-438c-a8cc-86e678edfcb0
(2)LikeQQLAN_4cad6d68-1659-4f92-b4ca-86684db046f0
(3)QQLiveChat_cb-4bb5-aa54-e903fbd2aec8
9.提示
作者博客园地址(本程序内容更新在我博客园上并有源码下载)。
作者个人网站:
共享GIS”(谢谢关注)
江西理工大学
VisualC#程序设计课程设计成绩表
建测学院地信专业13级1班学生胡宏勇
题目:
网络聊天室
平时成绩(40%)
程序运行、调试成绩(30%)
课程设计报告成绩(30%)
综合
成绩
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c# 实现 网络 聊天室 QQ 课程设计