目录
1 引言 (1)
1.1项目背景 (1)
1.2国内外研究现状 (2)
1.3主要思路 (2)
2 需求分析 (4)
2.1设计目标 (4)
2.2开发环境 (4)
2.3功能要求 (4)
2.4实现效果 (5)
2.5网络聊天室系统E-R图 (6)
3 系统概要设计 (7)
3.1需求规定 (7)
3.2系统层次结构 (7)
3.3系统数据结构设计 (8)
3.4系统流程图 (9)
4 详细设计及编码方式 (11)
4.1登录功能模块设计 (11)
4.2注册功能模块设计 (13)
4.3房间选择功能模块设计 (14)
4.4聊天室主界面设计 (16)
4.4.1聊天室整体框架设计 (16)
4.4.2导航区设计 (18)
4.4.3显示在线区用户设计 (19)
4.4.4显示聊天信息区设计 (20)
4.4.5发送信息区设计 (21)
4.5修改密码功能模块设计 (23)
4.6选择头像功能模块设计 (25)
4.7用户管理功能模块设计 (26)
5 系统测试 (29)
5.1系统测试目标 (29)
5.2系统测试内容 (29)
5.3系统测试结论 (30)
6 结论 (31)
参考文献 (32)
致谢 (33)
1引言
1.1项目背景
21世纪的一些重要特征就是数字化、网络化和信息化,它是一个以网络为核心的信息时代。要实现这些就要依靠完善的网络,因此网络现在已经成为信息社会的命脉和发展知识经济的重要基础。网络对社会生活的方方面面已经产生了不可估量的影响[1]。
截止2010年6月底,我国网民规模达4.2亿,互联网普及率持续上升增至31.8%,这其中手机网民增长明显,半年内新增4334万,达到2.77亿人[2]。我国网民的互联网应用表现出商务化程度迅速提高、娱乐化倾向继续保持、沟通和信息工具价值加深的特点。社交网站、即时通信使用率增长较快,半年用户增长19.6%和11.7%[3]。
由于交通的发达,现代人会经常地流动,因此面对面的亲身交流往往不可企及。而网络恰好就为这些希望能够经常交流的人们提供了加强联系、增进交流的平台。社交网络源自网络社交,网络社交的起点是电子邮件。早期的电子邮件解决了远程邮件传输的问题,至今它也是互联网上最普及的应用,而后BBS把网络社交推进了一步。即时通信的出现更像是前面两个社交工具的升级版本,提高了即时效果和同时交流能力[4]。社科院2005年调查关注了人们使用这些网络交流工具的情况,调查表明,人们最常用的网络交流工具为电子邮件,其次是ICQ和聊天[5]。
聊天室作为因特网应用工具之一,在社会上起着越来越重要的作用。70年代末,有一种冒险游戏,在这个游戏中,就有一些对话,它帮助了互联网中聊天室的诞生。也就是IRC。IRC是芬兰人Jarkko Oikarnen于1988年首创的一种在网络中进行聊天的协议。直到今天,大部分聊天室都会以IRC为基础。网络聊天室刚开始的时候是以文本聊天为主,后来出现了语音聊天,到了今天,视频、语音、文字都很好的融入到了聊天工具当中。网络聊天之所以不同于现实聊天,是因为网络聊天是在虚拟的环境中完成的,从某种意义上讲,网络聊天是现实聊天的延伸。虚拟的网络聊天客服了现实聊天中的空间限制,是的聊天的空间大大的扩展了。网络聊天因其技术的发展实现了空间的无限扩展,形成了只要有互联网,不同地方的人们就可以聊天的状况,使得现实生活的交往范围大大扩展了。随着互联网技术的不断发
展,衍生出各种形式的非文字类的交互式媒体元素,如FLASH、流媒体、互动白板等。这些元素在2004年后逐步被整合到了具有实时互动性概念的网络聊天室应用。而此时,聊天室的概念也逐步转向所谓“富媒体交互服务房间” [6]。随着互联网人数的不断增多,聊天室还会有更大的发展。
1.2国内外研究现状
在国内许多网站开设了聊天室,比如“新浪网”聊天室、“263在线”、“网易”聊天室等。而人气最旺的,莫过于有“全球最大中文聊天社区”之称的“新浪网”聊天室。该网站为不同年龄、不同职业、不同地区、不同爱好的网友量身定制了数百个不同主题的房间[7]。在国外,也出现了很多的聊天室,比如Omegle、Facebook、MSN、MySpace等。在这些聊天室中,Omegle聊天室比较特别,这是一个针对陌生人交流的Web产品,这个网站与众不同之处就在于能够随机的向每位用户推送一个陌生人与之进行交流。在这里,你不会知道对方的任何信息,所有的信息被红色的“Stranger”一词代替,因此会给人一种全新的感觉[8]。
网络聊天室带来了很多便利,但也出现了一些问题。以在线聊天这种方式出现的网络人际沟通,数量及其巨大,参与对话的人数众多,但与现实不同的是,良好沟通并不多见,通常一个人以他人的顺利交流是以数倍于此甚至更多的沟通失败为代价的[9]。同时,由于网上聊天室中,没有规范,没有固定感;人们来去自由,甚至仅仅只有相互的问候,它只是一种表达情感的介质,而且人们往往在表达是不考虑后果[10]。所以在网络聊天中出现了很多不良的信息,对于青少年的健康成长是很不利的[11]。但是随着技术的不断提高,这些必定会被改进。
1.3主要思路
一般的在线聊天室体系结构都包括数据库设计、数据访问层、业务逻辑层和页面显示层。数据库设计是最基础的工作,数据库的设计模型是整个系统设计的基础,一旦确定了数据库的结构,在开发过程中不要轻易地修改,否则会对后面的工作造成巨大的影响[12]。数据访问层完成所有与数据库的交互操作。业务逻辑层实现在线聊天室系统的所有业务逻辑,包括用户管理和发表信息的管理等。页面显示层用于实现最终显示在浏览器上的用户可以看到的界面,其主要功能包括业务逻辑层的调用、动态显示数据以及显示方式等[13,14]。
一般在设计程序前,需要对系统功能进行分析,并确定数据库中数据表机存储
过程的定义。而一般的聊天室具有以下的功能:
(1)采用数据库记录在线用户信息及聊天信息;
(2)登录及注册功能;
(3)群聊与私聊功能;
(4)聊天用户实时更新等。
俗话说“三分技术,七分管理,十二分基础数据”,可见数据库的设计也是十分重要的。数据库设计步骤为:
(1)需求分析;
(2)概念结构设计;
(3)逻辑结构设计;
(4)物理结构设计;
(5)数据库实施;
(6)数据库运行和维护[15]。
本系统采用https://www.360docs.net/doc/4d10929816.html,语言编写,并结合数据库,完成一个具有登录、注册、选择聊天室、群聊、私聊等功能的在线聊天室。
2需求分析
该部分主要叙述了该网络聊天室系统的设计目标、拥有的功能以及实现后的应具有的效果。
2.1设计目标
该系统为一个在线聊天室的网站,除了具备所有聊天室的基本功能外,在设计以及实施的过程中要尽可能做到使该聊天室系统具有易操作性、良好的扩展性、易用性等特性,确保在未来的安装、管理、运行维护中,使普通用户和专业管理人员得到最大的方便。
2.2开发环境
开发环境为:
(1)SQL Server 2008数据库工具;
(2)Windows Visual Studio 2010 编程软件。
2.3功能要求
该网络聊天室系统使用人员分为两类,一类为普通用户,另一类为管理员用户,他们具有不同的功能。普通用户是该系统的实际使用者,他们具有聊天室中的基本功能,包括:注册与登录、选择房间、群聊与私聊、更换头像和修改密码等功能。管理员是该系统的管理人员,他们除具有普通用户的基本功能外,还具有管理普通用户的功能,具体为:设置黑名单。
根据系统功能的不同,系统的功能结构图分三部分,第一部分为总的功能结构图,第二部分是普通用户的功能结构图,第三部分是管理员的功能结构图。总的功能结构图如图2.1。
图2.1系统总功能结构图
普通用户功能结构图如图2.2。
图2.2普通用户功能结构图
管理员功能结构图如图2.3。
图2.3 管理员功能结构图
2.4实现效果
该聊天室拥有两种不同的用户身份:普通用户和管理员。在登录时需要判断用户身份,当用户名、密码和身份输入正确进入后,用户将选择所要进入的聊天室,该系统默认设置了四个聊天室供用户选择。选择聊天室进入后,是聊天界面,聊天界面由三部分组成,分为显示在线用户、聊天信息显示和发送信息。显示在线用户是统计在线人数并列表显示,用户名列表中将显示用户头像和用户的用户名。聊天信息显示分为群聊信息显示和私聊信息显示。在聊天界面的菜单中有修改密码、退出和修改头像的功能。修改头像可以选择自己喜爱的头像,系统有十五个头像供用户选择。管理员除了具有这些普通用户的基本功能外,还具有管理用户的功能,可
以将某个用户加入黑名单,黑名单中的用户是不可以发言的,其他的功能没有影响。
总的来说,本网络聊天室系统实现了以下的功能:
(1) 注册功能,首先检测用户名是否使用,若未使用,则该用户可以使用;
(2) 登录功能,输入用户名和密码,并且选择用户登录的角色;
(3) 聊天室房间的选择,系统预置四个房间;
(4) 在线用户显示,定时更新在线用户列表;
(5) 聊天信息的显示,分为群聊和私聊,定时更新聊天信息;
(6) 发送信息,选择对象后,确定是私聊还是公聊;
(7) 更改密码功能;
(8) 选择头像功能,系统预设十五个头像;
(9) 更换聊天室功能;
(10) 管理黑名单功能,该功能为管理员的功能。
2.5网络聊天室系统E-R图
根据功能分析,得到该网络聊天室系统E-R如图2.4所示:
图2.4网络聊天室系统E-R图
3系统概要设计
该部分内容主要讲述了系统的模块划分、模块的层次结构及调用关系、模块接口和人机界面等内容。同时包括了系统数据库的设计。
3.1需求规定
(1)对功能的规定:
①主界面:该系统包括了注册与登录界面、选择房间界面、聊天室界面和管理用户界面。在这些不同的界面中,不同用户拥有不同的权限,根据权限的不同,用户所拥有的功能也是不同的。
②系统后台:包括系统数据库的建立、重要信息的管理,通过前台界面实现对数据库的查找、修改等功能。
(2) 对功能模块的描述:
①登录与注册功能模块:实现不同用户的注册与登录功能。
②选择房间功能模块:进入聊天室系统的用户,需要选择所要进入的房间,系统预设四个房间。
③聊天室主界面:该部分包括了显示在线用户、聊天信息的显示和发送信息三个功能模块。显示在线用户主要是统计在线用户人数并将其列表显示;聊天信息显示分为公聊信息显示和私聊信息显示,不同模式信息将显示在不同区域;发送信息则是按公聊或者私聊模式将信息发送出去。
④修改密码功能模块:重新修改用户的密码。
⑤选择头像功能模块:重新选择用户头像,系统预设十五个头像,头像将显示在在线用户区域。
⑥管理用户功能模块:该功能模块是只有管理员才拥有的功能,主要是黑名单的管理。
3.2系统层次结构
该系统的层次结构以及调用关系如图3.1。在该图中可以看到,经过注册与登录功能模块后,系统模块分为了两大部分,一部分为普通用户模块,另一部分为管理员模块。然后经过选择房间功能模块后,就进入了聊天室主界面模块。该模块中,根据用户角色的不同就包括了不同的功能,除了聊天室的三个主要功能模块外,还
包括了修改密码、选择头像、黑名单管理等功能。
图3.1系统层次结构图
3.3系统数据结构设计
数据库在该网络聊天室系统中占有重要地位,数据库的好坏直接影响到本系统的运行效率和运行效果。根据系统的实际应用情况,本系统采用SQL Server 2008作为后台数据库管理工具。
本系统包括了三张数据库表。表3.1为用户信息表,该表主要记录所有用户的基本信息,包括普通用户和管理员用户的基本信息。
表3.1 用户信息表(UserTable):
字段名称数据类型字段大小说明主键
UserName varchar(50) 50 用户名T
Password varchar(50) 50 密码 F
Role int 4 角色 F
IsBlack int 4 是否黑名单 F
ImageUrl varchar(50) 50 头像 F
表3.2为在线用户表,该表主要用于记录所有的在线用户的信息。
表3.2在线用户表(ChatUserTable):
字段名称数据类型字段大小说明主键
ImageUrl varchar(50) 50 头像 F
UserName varchar(50) 50 用户名T
RoomID varchar(50) 50 房间名字 F
表3.3为聊天信息表,该表主要用于记录所有聊天内容的相关信息。
表3.3聊天信息表(ChatInfoTable):
字段名称数据类型字段大小说明主键
MessageID bigint 8 聊天信息ID T
RoomID varchar(50) 50房间名字 F FromUserName varchar(50) 50 发送者 F ToUserName varchar(50) 50 接受者 F
CreatTime datetime 8 创建时间 F ContentData text 16信息内容 F
IsPublic int 4是否为私聊 F
3.4系统流程图
根据系统的功能结构图可以画出系统的流程图,系统流程图如图3.2,注册的流程图如图3.3。
图3.2 系统流程图
图3.3注册流程图
4详细设计及编码方式
该部分主要叙述了本系统的详细设计过程以及各个功能模块的编码方式和页面设计方式。
4.1登录功能模块设计
登录功能模块主要功能是判断用户是否为注册用户,并进行身份判断。用户在登录界面需要输入相应的信息,若正确则会跳转到相应页面,如果错误,则提示登录失败,重新输入。
(1)界面设计
图4.1登录功能模块界面设计
(2)程序设计
登录功能的主要目的是确定用户名、密码和身份是否匹配,若不一致,则不让用户登录。该功能的设计思路是通过用户输入的用户名,去数据库中查找相对应的密码和身份信息,然后将查询到的密码和身份信息与用户输入的信息匹配,若不一致则提示用户“用户名或密码错误”,并清空用户名和密码输入框;若一致,则记下该用户的个人信息,包括用户名、角色身份和头像,并跳转到房间选择页面。在该功能中,管理员角色用“1”代表,普通用户用“0”代表。该功能主要是通过条件语句实现的,首先从数据库中查到相对应的信息,然后通过条件句判断用户输入是否正确。由于管理员代码与普通用户的代码相似,以管理员为例,程序代码为:string UserName = this.yonghuming.Text.ToString().Trim();
string Password = this.mima.Text.ToString().Trim();
string strConn = "Data Source=LENOVO-PC;Initial Catalog=oline_chat;Integrated Security=True";
SqlConnection myConn = new SqlConnection(strConn);
string strSQL = "select * from [UserTable] where [UserName]='" + UserName + "'";
SqlCommand myCommand = new SqlCommand(strSQL, myConn);
if (guanliyuan.Checked == true)
{
int Role = 1;
myConn.Open();
SqlDataReader sdr = myCommand.ExecuteReader();
while (sdr.Read())
{ string SqlPassword = sdr.GetValue(1).ToString();
int SqlRole = Convert.ToInt32(sdr.GetValue(2));
string Image = sdr.GetValue(4).ToString();
if (Password == SqlPassword && Role == SqlRole)
{
Session["UserName"] = UserName;
Session["Role"] = 1;
Session["ImageUrl"] = Image;
Response.Redirect("RoomChoice.aspx");
}
else
{
yonghuming.Text = "";
mima.Text = "";
Label1.Text = "用户名或密码错误";
}
}
myConn.Close();
}
4.2注册功能模块设计
注册时首先输入用户名,并检测用户名是否使用。若已经使用,用户需更改用户名直到用户名未使用为止。用户名检测成功后,填入密码,两次密码输入必须一致。在输入用户名和密码时,应注意用户名和密码的位数要求,用户名输入小于12位,密码输入大于6位,小于18位。
(1) 界面设计
图4.2注册功能模块界面设计
(2)程序设计
注册功能的主要目的是进行用户注册,使合法用户可以登录该网络聊天室,并拒绝非法用户的登录。用户注册时,首先需要检测用户名的长度是否符合规定,然后再检测用户名是否使用。若输入用户名不符合规定,则提示“用户名输入不符合要求”;然后检测用户名是否使用。若未使用则提示“您可以使用该用户名”,若使用则提示“用户名已存在”。该部分的设计思路是通过用户输入的用户名,去数据库中查找相对应的用户名。用户输入用户名直到检测到未使用的用户名为止,否则该用户不可以注册。检测成功后,输入两次密码,两次密码输入要求一致,并且输入密码需要大于五位,小于十九位。当点击注册后,当两次密码输入一致时则将用户的用户名、密码、角色身份等信息加入到数据库中。以下程序是检测用户名的相关程序:
string UserName = this.yonghuming.Text.ToString().Trim();
string strConn = "Data Source=LENOVO-PC;Initial
Catalog=oline_chat;Integrated Security=True";
SqlConnection myConn = new SqlConnection(strConn);
string strSQL = "Select * from UserTable where UserName = '" + UserName + "'";
SqlCommand myCommand = new SqlCommand(strSQL, myConn);
myConn.Open();
SqlDataReader sdr = myCommand.ExecuteReader();
if(UserName.Length!=0&&UserName.Length<=12)
{
if (sdr.Read())
{
Label1.Text = "用户名已存在";
yonghuming.Text = "";
mima.Text = "";
Rmima.Text = "";
}
else
{
Label1.Text = "您可以使用该用户名";
}
}
else
{
Label1.Text = "用户名输入不符合要求";
}
myConn.Close();
}
4.3房间选择功能模块设计
房间选择模块是供用户选择要进入的房间,系统预设四个。当用户选择某个房间后,将用户的信息和所选房间号加入到在线用户列表,若用户未选择房间就点击
进入房间,则提示用户选择。
(1)界面设计
图4.3 房间选择功能模块界面设计
(2) 程序设计
该功能是供用户选择所要进入的房间。在该功能中有用户和管理员两种身份,身份不同会进入不同的房间,管理员进入的是具有管理员功能的“AdminChatRoom”房间,而普通用户则进入的是无管理员功能的“UserChatRoom”房间。当选择某个房间后,点击进入房间则进入到相关房间,否则提示“请您选择所要进入的房间”。该网络聊天室默认设置了四个聊天房间,这四个房间是通过设置四个RadioButton 控件来确定用户所选择的房间,然后通过条件句判断用户所进入的房间。当用户选定某个房间后,则记录用户的房间选择信息,并将头像、用户名和房间信息加入到在线用户信息列表中,再跳转到相应的页面。以下所示程序是当用户选定学习天地房间后,系统添加信息并跳转页面的程序:
string RoomID = "StudyRoom";
string strConn = "Data Source=LENOVO-PC;Initial
Catalog=oline_chat;Integrated Security=True";
SqlConnection myConn = new SqlConnection(strConn);
string strSQL = "insert into [ChatUserTable] values ('" + ImageUrl + "','" + UserName + "','" + RoomID + "') ";
SqlCommand myCommand = new SqlCommand(strSQL, myConn);
myConn.Open();
myCommand.ExecuteNonQuery();
myConn.Close();
Session["RoomID"] = RoomID;
if (Role == 0)
{
Response.Redirect("UserChatRoom.aspx");
}
else
{
Response.Redirect("AdminChatRoom.aspx");
}
4.4聊天室主界面设计
聊天室主界面有用户聊天界面和管理员聊天界面两种。整体采用框架设计,整体分为上部导航区和下部聊天区域,下部聊天区又分为了在线用户显示区、聊天信息显示区和发送信息区。整体页面设计如图4.4。
图4.4聊天室主界面设计
4.4.1聊天室整体框架设计
从图 4.4可以看到聊天室的整体设计。上部分为导航区,有用户导航区
(UserMenu)和管理员导航区(AdminMenu)之分,这主要是根据用户的身份不同,所进入的房间模式不同。用户导航是在“UserChatRoom”房间模式,而管理员导航是在“AdminChatRoom”房间模式。聊天室下部分为聊天区域(MessageRoom),不区分用户身份角色。以用户聊天界面“UserChatRoom”房间模式为例,页面整体设计框架代码为:
下部分聊天区域(MessageRoom)又由三部分组成。分别为在线用户区(OnlineUser)、聊天信息显示区(MessageView1-4)和发送信息区(SendMessage)。页面设计框架代码为: