资源描述
c企业QQ系统设计方案报告
企业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系统的开发背景
21世纪将是网络化、信息化的世纪,信息的融合已经成为社会发展的主流方向。简易版企业QQ聊天系统将不断与信息交流领域的系统相互集成和渗透,扩展其自己的功能和应用范围,满足未来话音,数据和视频的多媒体应用需要,使即时消息以更丰富的接入方法,更高的服务质量,更友好的面貌呈现在世人的面前。
近年来,人们创业的激情愈发高涨,一些大大小小的公司如雨后春笋相继创建,可公司员工之间的管理和交流却成了一个问题。传统的面对面交流效率往往很低且不利于管理,企业通这样类似于QQ的局域网连天工具便应时而生。它可以不用连接Internet,直接在局域网内实现信息的发送。它主要适用于一些中、小型企业的内部通信,可以大大的提高职工的工作效率,是现代企业不可缺少的辅助工具。
1.2 企业QQ系统的需求分析
本系统是为了满足一些中小型企业内部职工之间的交流,或是工作信息的传递的方便快捷而设计的。随着中小型企业的不断发展,在企业内部实现局域网通信是必不可少的。企业QQ系统就是一个非常好的局域通信软件,它可以在职工不移动位置的情况下进行聊天、图片发送、文件传递和视频连接,还可以随时在网络中进行多人对话或网络会议。这样,可以提高企业的工作效率,便于企业内部职工的交流。
1.3 企业QQ系统的开发环境
系统开发平台:Microsoft Visual Studio 2008。
系统开发语言:C#。
数据库管理系统软件:Microsoft SQL Server 2008。
运行平台: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系统的一些知识,而且我在学习的过程中,通过自己查阅资料等方法,大大的提高了我自主学习能力与专研能力,以及同学之间的相互合作能力。因此,我十分感谢这门课的开设,让我学到了知识;我更感谢老师这种让学生自主学习的教学方法,因为它提高了同学们之间的相互合作能力。我们一起共同进步共同完成这个设计。
展开阅读全文