资源描述
企业QQ系统设计说明书
姓 名:
学 号:
班 级:
指导老师:
完成日期:
目录
第一章 绪论 3
1.1 企业QQ系统开发背景 3
1.2 企业QQ系统需求分析 3
1.3 企业QQ系统开发环境 3
第二章 设计 4
2.1设计内容 4
2.2 设计目标 4
第三章 设计过程 5
3.1数据库和类库设计 5
3.2用户端模块设计 6
3.3服务器端控制台设计 7
3.4关键代码 8
第四章 总结 10
4.1设计总结 10
4.2心得体会 10
第一章 绪论
1.1 企业QQ系统开发背景
二十一世纪将是网络化、信息化世纪,信息融合已经成为社会发展主流方向。简易版企业QQ聊天系统将不停和信息交流领域系统相互集成和渗透,扩展其自己功效和应用范围,满足未来话音,数据和视频多媒体应用需要,使即时消息以更丰富接入方法,更高服务质量,更友好面貌展现在世人面前。
多年来,大家创业激情愈发高涨,部分大大小小企业如雨后春笋相继创建,可企业职员之间管理和交流却成了一个问题。传统面对面交流效率往往很低且不利于管理,企业通这么类似于QQ局域网连天工具便应时而生。它能够不用连接Internet,直接在局域网内实现信息发送。它关键适适用于部分中、小型企业内部通信,能够大大提升职员工作效率,是现代企业不可缺乏辅助工具。
1.2 企业QQ系统需求分析
本系统是为了满足部分中小型企业内部职员之间交流,或是工作信息传输方便快捷而设计。伴随中小型企业不停发展,在企业内部实现局域网通信是必不可少。企业QQ系统就是一个很好局域通信软件,它能够在职员不移动位置情况下进行聊天、图片发送、文件传输和视频连接,还能够随时在网络中进行多人对话或网络会议。这么,能够提升企业工作效率,便于企业内部职员交流。
1.3 企业QQ系统开发环境
系统开发平台:Microsoft Visual Studio 。
系统开发语言:C#。
数据库管理系统软件:Microsoft SQL Server 。
运行平台:Windows 7
C#(C sharp)是一个最新、面向对象编程语言,它使得程序员能够快速地编写多种基于Microsoft .NET平台应用程序。Microsoft .NET提供了一系列工具和服务来最大程度地开发、利用计算和通讯领域。C#面向对象卓越设计使它成为构建各类组件理想之选——不管是高级商业对象还是系统级应用程序。使用简单C#语言结构,这些组件能够方便转化为XML 网络服务,从而使它们能够由任何语言在任何操作系统上经过Internet进行调用。最关键是,C#使得C++程序员能够高效率地开发程序,而绝不损失C/C++原有强大功效。因为这种继承关系,C#和C/C++含有极大相同性,熟悉类似语言开发者能够很快地转向C#。
在C#中,每个对象全部自动生成为一个COM对象。开发者不再需要显式实现IUnknown和其它COM接口.这些功效全部是内置、类似,C#能够调用现有COM对象,不管它是由什么语言编写。C#包含了一个特殊功效:使程序能够调用任何纯API。在一段尤其标识代码中,开发者能够使用指针和传统C/C++特征,如手工内存管理和指针运算。这是其相对于其它环境极大优势。这意味着C#程序员能够在原有C/C++代码基础上编写程序,而不是根本放弃那些代码
第二章 设计
2.1设计内容
企业QQ系统按以下过程完成通信:
(1) 用户向服务器注册,通知服务器它在监听某专题;
(2)用户注册以后,向服务器发送消息;
(3)服务器再把消息发送给全部监听些专题用户。
2.2 设计目标
此次开发简易版企业QQ聊天系统可作为个人交流工具使用,通信安全 性不是很高,但要求信息响应速度要较快,让用户充足享受到网络即时消息方便和快捷。本聊天工具由服务器端程序和用户端程序两部分组成,整体采取JAVA平台开发,并使用SQL Server管理数据库数据。服务器是能够监听和查看用户基础操作;用户端程序面向实际用户,它有必需界面按钮,向用户提供网络即时消息功效, 本聊天需包含以下基础功效:
1.用户端:
(1) 新用户注册;
(2)用户登录验证;
(3)获取好友列表并显示好友状态(在线/不在线);
(4)添加用户好友;
(5)删除用户好友;
(6) 用户和好友聊天(可查看聊天统计);
(7)接收系统信息。
2.服务端:
(1)开启和关闭后台服务器;
(2)查看用户端登录相关信息(用户端登陆时间/登陆IP);
(3) 向全部在线用户发送系统消息。
第三章 设计过程
3.1数据库和类库设计
在数据库中,首先创建企业QQ数据库,然后依据数据库逻辑结构分析创建2张数据表。
用户表结构:
列名
数据类型
许可为空
说明
Id
Int
否
主键、自增列
LoginPwd
varchar(50)
否
用户登录密码
UserState
varchar(50)
否
用户状态
FriendshipPolicyId
Int
否
表示好友策略
NichName
Varchar(50)
否
用户昵称
FaceId
Int
否
头像索引
Sex
Varchar(50)
否
性别
Age
Int
否
年纪
Name
Varchar(50)
是
真实姓名
StarId
Int
是
外键
BloodTypeId
Int
是
外键
好友表结构:
列名
数据类型
许可为空
说明
ID
Int
否
主键、自增
HostId
Int
否
好友关系中主人号码
FriendId
Int
否
好友关系中好友号码
类库集提供了使应用程序能够读写XML数据、在Internet上通信、访问数据库等代码。全部类库全部建立在一个基础类库之上,它提供管理使用最为频繁数据类型(比如数值或文本字符串)功效,和诸如文件输入/输出等底层功效。
3.2用户端模块设计
用户端即用户使用应用程序端。用户经过该聊天软件用户端来实现网上聊天相关功效:注册、登录、添加好友、文字聊天、文件传输、语音聊天、视频聊天等。注册功效是提交用户相关信息和取得一个属于自己登录该聊天软件,系统用户ID号;登录功效是实现验证用户信息和正当使用该聊天软件系统权限;添加好友是实现用户之间好友添加操作;添加好友成功后,就能够和好友之间开始文字聊天、文件传输、语音聊天、视频聊天等功效。
第一次使用该系统时,我们需要进行用户注册。
注册界面
注册完成后,进入登陆界面,进行登陆
登陆界面
第一次使用系统用户经过填写个人信息来注册,服务器返回一个注册ID号给注册用户,用来登录。已经注册用户在登录界面填写完相关登录信息,经过服务器验证后就能够进入用户端界面。在线用户在添加好友时能够查看所要添加用户列表信息。当对要添加好友发送请求添加信息后,由该好友验证是否经过请求,同意后会向请求方发送同意添加消息。当请求方添加完成后,服务器端会把相关信息存入到好友表数据库中。完成以上操作以后,两人即可进行在线聊天。
3.3服务器端控制台设计
主服务器实现了服务器多线程,服务器端有一个进程(或多个进程)在指定端口等候用户连接信息。一时连接成功,就能够按设计数据交换方法和格式进行数据传输。用户端只在需要时候向服务端发出连接请求。主服务器类调用ServerThread类,而每个ServerThread实体就是一个单独线程,即对应于用户端连接请求响应线程。
服务器为每个连接着用户建立一个线程,为了同时响应多个用户端,需设计一个根本程来开启服务器端多线程。根本程和进程结构类似,它在取得新连接时生成一个线程来处理这个这个连接。线程调度速度快,占用资源少,可共享进程空间中数据,所以服务器响应速度较快,且I/O吞吐量较大。
3.4关键代码
用户注册
private ClassMsg InsertUser(ClassMsg msg, System.Net.IPAddress Ip, int Port)
{
RegisterMsg registermsg = (RegisterMsg)new ClassSerializers().DeSerializeBinary(new MemoryStream(msg.Data));
ClassOptionData OptionData = new ClassOptionData();
MsgCommand Sate = msg.msgCommand;
String UserName = registermsg.UserName; //注痢?册á用?户§?名?称?
String PassWord = registermsg.PassWord;//注痢?册á用?户§?密ü码?
String vIP = Ip.ToString();//注痢?册á用?户§?IP地?址·
//向ò数簓据Y表括?中D添?加ó注痢?册á信?息¢
OptionData.ExSQL("insert into tb_CurreneyUser (IP,Port,Name,PassWord,Sign) values ('" + vIP + "'," +
Port.ToString() + ",'" + UserName + "','" + PassWord + "'," + Convert.ToString((int)(MsgCommand.Registered)) + ")");
SqlDataReader DataReader = OptionData.ExSQLReDr("Select * From tb_CurreneyUser");
UpdateUser();//更ü新?用?户§列表括?
OptionData.Dispose();
msg.msgCommand = MsgCommand.Registered;//用?户§注痢?册á结á束?命ü令?
SendMsgToOne(Ip,Port,msg);//将?注痢?册á命ü令?返う?回?给?注痢?册á用?户§
return msg;
}
用户登陆
private void UserLogin(ClassMsg msg, System.Net.IPAddress Ip, int Port, int State)
{
RegisterMsg registermsg = (RegisterMsg)new ClassSerializers().DeSerializeBinary(new MemoryStream(msg.Data));
ClassOptionData OptionData = new ClassOptionData();//创洹?建¨并¢引皔用?ClassOptionData
MsgCommand msgState = msg.msgCommand; //获?取?接ó收?消?息¢?命ü令?
String UserName = registermsg.UserName;//登?录?用?户§名?称?
String PassWord = registermsg.PassWord;//用?户§密ü码?
String vIP = Ip.ToString();//用?户§IP地?址·
SqlDataReader DataReader = OptionData.ExSQLReDr("Select * From tb_CurreneyUser Where Name = "+ "'"+UserName+"'"+" and PassWord = "
+"'"+PassWord+"'");//在ú数簓据Y库a中D通?过y用?户§名?和í密ü码?进?行D查é找ò
DataReader.Read();//读á取?查é找ò到??记?录?
string ID = Convert.ToString(DataReader.GetInt32(0));//获?取?第台?一?条?记?录?中D?ID字?段?值μ
if (DataReader.HasRows)//当獭繢ataReader中D有瓺记?录?信?息¢时骸?
{
//修T改?当獭?前°记?录??标括?识?为a上?线?状痢?态?
OptionData.ExSQL("Update tb_CurreneyUser Set Sign = " + Convert.ToString((int)(MsgCommand.Logined)) + ",IP = " + "'" + vIP + "',Port = " + "'" + Port.ToString() + "'" + " Where ID = " + ID);
msg.msgCommand = MsgCommand.Logined;//设Θ?置?为a上?线?命ü令?
msg.SID = ID;//用?户§ID值μ
SendMsgToOne(Ip, Port, msg);//将?消?息¢返う?回?给?发ぁ?送í用?户§
UpdateUserState(msg,Ip,Port);//更ü新?用?户§在ú线?状痢?态?
}
OptionData.Dispose();
UpdateUser();//更ü新?用?户§列表括?
}
第四章 总结
4.1设计总结
经过这次对聊天系统软件开发和设计,学到了很多知识,也对软件开发具体步骤有了更深入了解。
该系统采取C/S结构,基于.NET开发环境,用C#语言进行编译,在开发和设计这个聊天系统软件时,对.NET开发环境有基础认识,并基础学会利用C#语言编译简单程序。
此聊天软件开发是仿照现今中国最为流行即时聊天工具“腾迅QQ”设计,实现基础功效和QQ相同:能够实现注册、登录、添加好友、文字传输、文件传输、视频聊天、语音聊天等功效。
在开发此软件过程中,本人关键进行了聊天开发、设计和实现。在开发过程中,对网络多媒体基础知识有了初步认识,也对相关VFW基础功效有所初步了解。经过这次聊天系统开发,让我深刻感受到在软件开发过程中对基础知识掌握关键性。
伴随互联网技术、计算机技术发展,聊天工具功效不停完善,使其含有些人性化,受到更多用户青睐。在未来网络世界里,聊天工具会得到更多人喜爱,其功效也会伴随技术进步而不停地完善。
4.2心得体会
经过对“c#面向对象设计”这门课程学习,我感觉对计算机知识有了更深入认识,我知道了计算机一个新语言,经过课程最终设计,我在实践中学习了更多知识,之所以选择这个系统,我认为和我们平时很相关系,也十分有用处。
经过这门课学习,我我不仅学会相关企业QQ系统部分知识,而且我在学习过程中,经过自己查阅资料等方法,大大提升了我自主学习能力和专研能力,和同学之间相互合作能力。所以,我十分感谢这门课开设,让我学到了知识;我更感谢老师这种让学生自主学习教学方法,因为它提升了同学们之间相互合作能力。我们一起共同进步共同完成这个设计。
展开阅读全文