项目总体思路
图1. 3服务器多线程处理流程
1.1.3 客户端设计思路
1) 设置端口号、命令长度、登录命令、私聊命令、群聊命令、添加好友请求命令等。
2) 支持多个客户端的连接,在服务器和多个客户端之间进行数据传输。 3) 接收客户端发送的消息,并显示在一个ListBox内。
4) 将注册(通过正则验证)的用户保存在数据库中,已经注册的用户可以登录。
5) 登录以后可以进入到聊天室界面,在界面内可以查询、添加好友,查询、创建、加入群组,私聊,群聊等,并将相关数据保存到数据库中,必要时获取相关信息。
1.1.4 系统说明
客户端和服务器都处在一个局域网中,在网内都有唯一的IP地址。此结构如同五台电脑组成,其中一台为服务器,各个客户端处在平等地位,服务器处在核心地位,为每个客户端进行消息中转,结构图如1.4所示。其中虚线表示客户端间的通信,它是虚的通信路径,实际的通信路径是通过服务器中转的。实线表示客户端和服务器间的通信。
Client AClient DServerClient BClient C 图1. 4系统结构图
3
山东科技大学
2 项目设计与实现
2.1 前台界面设计
2.1.1 服务器界面设计
图2.1是服务器Sever的界面设计,用了一个Label标签提示服务器是否启动以及启动服务器以后获取的本机的IP地址,还用了两个Button按钮分别用来启动服务器和关闭服务器。图2.2是启动服务器以后的界面。
图2. 1服务器界面设计图2. 2启动后的服务器
2.1.2 登录和注册界设计
图2.3登录界面和图2.4注册界面是用TabControl(选项卡)这个控件制作成,选项页内分别放了六个Label标签(其中三个做正则验证信息提示用的,只有鼠标悬停在TextBox文本框上和离开文本框时,提示信息才出现)、三个TextBox文本框用来填写基本信息、两个Botton按钮分别执行相关功能。
图2. 3登录界面图2. 4注册界面
4
项目设计与实现
2.1.3 聊天室界面设计
图2.5是聊天室的整理界面样式,分别使用了ListBox、Label、Botton、TabControl、TextBox等控件设置出来[1],分别设置其属性值及其触发事件来控制操作整个界面。
图2. 5聊天窗体
2.2 前台和数据库连接技术方法
2.2.1 代码的实现
定义一个
DataHelper
类,里面有连接数据库语句
\,和目标数据库连接以后,就可以进行查询、插入、删除、更改数据库里的数据,在进行查询、插入、删除、更改数据库之前要打开数据库连接,然后在执行相关操作,执行完相关操作以后,打开连接池(最晚打开,及早关闭)。具体代码如下所示[2]。
public class DataHelper
{
//连接数据库字符串
string connStr = @\ //查询方法
public SqlDataReader GetReader(string sql,SqlParameter[] pars) {
//打开数据库连接
SqlConnection conn = new SqlConnection(connStr); //执行SQL语句或存储过程的命令
SqlCommand cmd = new SqlCommand(sql, conn); if(pars !=null)
5
山东科技大学
{
//向命令参数中添加参数数组 cmd.Parameters.AddRange(pars); }
//打开连接池(最晚打开,及早关闭) conn.Open();
SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); return dr; }
//插删改操作
public bool ExeCommand(string sql, SqlParameter[] pars) {
//打开数据库连接
SqlConnection conn = new SqlConnection(connStr); //执行SQL语句或存储过程的命令
SqlCommand cmd = new SqlCommand(sql, conn); if (pars != null) {
//向命令参数中添加参数数组 cmd.Parameters.AddRange(pars); }
//打开连接池(最晚打开,及早关闭) conn.Open();
int count = cmd.ExecuteNonQuery (); conn.Close();
return count > 0 ? true : false; }
}
2.3 数据库的设计
2.3.1 数据库设计步骤
数据库设计可以分为概念结构设计、逻辑结构设计和物理结构设计三个阶段
[3]
。
(1)概念结构设计。这是数据库设计的第一个阶段,在管理信息系统的分
析阶段,已经得到了系统的数据流程图和数据字典,现在要结合数据规范化的理论,用一种数据模型将用户的数据需求明确地表示出来。
概念数据模型是面向问题的模型,反映了用户的现实工作环境,是与数据库
6
项目设计与实现
的具体实现技术无关的。建立系统概念数据模型的过程叫做概念结构设计。
(2)逻辑结构设计。根据已经建立的概念数据模型,以及所采用的某个数据库管理系统软件的数据模型特性,按照一定的转换规则,把概念模型转换为这个数据库管理系统所能够接受的逻辑数据模型。不同的数据库管理系统提供了不同的逻辑数据模型,如层次模型、网状模型、关系模型等。
(3)物理结构设计。为一个确定的逻辑数据模型选择一个最适合应用要求的物理结构的过程,就叫做数据库的物理结构设计。数据库在物理设备上的存储结构和存取方法称为数据库的物理数据模型。
2.3.2 表的设计
Users表设计:用户表编号Id设为主键,用户名UserName,密码PassWord,手机号Phone不为空且不可重复,如表2.1所示[4]。
表2. 1 Users表的设计
列名 Id(主键) UserName PassWord Phone 数据类型 int navachar(50) navachar(50) navachar(20) 允许Null值 否 是 是 否 AddFriend表设计:加好友列表编号Id设为主键,请求者Send设为外键(参照Users表中的Id),被请求者Receive设为外键(参照Users表中的Id),时间SendTime,状态State(0代表发送请求,1代表同意加好友,-1代表拒绝加好友,2代表加入黑名单),如表2.2所示。
表2. 2 AddFriend表的设计
列名
Id(主键) Send(外键) Receive(外键) State
SendTime
数据类型 int int int int
datetime
允许Null值 否 是 是 是 是
ToPerson表设计:私人消息表编号Id,消息发送者Send设为外键(参照Users表中的Id),消息接收者Receive设为外键(参照Users表中的Id),消息内容
7
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C#和数据库应用实训报告(2)在线全文阅读。
相关推荐: