




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于 C#的网络聊天软件的设计与实现摘 要作为除电视、报纸、广播之外的第四大媒体,互联网不仅成为人们获取新闻信息的主要来源,更成为了人们闲暇之余的一种休闲手段。随着互联网技术的发展,各种各样基于网络的应用也随之诞生,网络聊天工具便是其中的一种。本文采用 Visual Studio 2015+MyMysql 开发环境,结合 WinForms、ADO.NET等多种技术,实现了一个类似 QQ 的网络聊天工具,并在 WINDOWS 平台上加以了实现。通过 C#语言进行网络编程,通过公共的数据库交换各种信息,实现了人性化的界面设计与功能设计。软件经过测试,满足现代人们即时通信的需求,达到预期的设计效果,对网络聊天工具的人性化设计具有一定的现实意义,同时也为其他相关项目的设计提供了参考。关键词:网络聊天工具 C# 即时通信 数据库 人性化四川职业技术学院计科系论文I目 录摘 要 .I第一章 引言 .12.3 WinForms 窗 体 设 计 技 术 .52.4 C/S 结 构 .52.5 ADO.NET 技 术 .62.6 MyMysql 数 据 库 简 介 .6第三章 需求分析 .83.1 可行性研究 .83.2 用 户 需 求 .83.3 性能需求 .83.4 系统功能需求 .9第四章 系统设计 .104.1 系统功能结构 .104.2 系统模块划分 .104.3 系统整体流程图 .11第五章 详细设计 .125.1 登录界面设计 .125.2 注册界面设计 .165.3 主界面设计 .205.4 查找/添加好友界面设计 .245.5 聊天界面设计 .295.6 个人设置界面设计 .345.7 头像选择界面设计 .365.8 系统消息界面设计 .37结束语 .40参考文献 .41附录一 .42附录二 .43基于 C#的网络聊天软件的设计与实现0第一章 引言1.1 系统开发背景当今社会已进入信息时代,信息是当今世界最重要的资源之一,它与物质及能源一起构成了三大能源支柱。信息高速公路是信息社会的基础设施,而互联网则是信息高速公路的重要组成部分。在互联网相当普及的今天,你们对网络的依赖越来越大,越来越离不开网络,网络聊天更是成为了人们的“家常便饭” 。通过网络聊天工具,人们足不出户就可进行闲聊甚至工作会谈,极大地方便了人们的日常生活与工作需求。常用的网络聊天工具主要是 QQ 与 MSN。MSN 主要用于国际,而国内的主流网络聊天工具是 QQ。QQ 有着非常良好的操作界面,和强大的通信功能,集娱乐、生活和工作于一身。随着技术的进步,QQ 不仅可以通过宽带网在 PC 上使用,通过手机也可以实现与好友、同事通信。而无论是 QQ 还是 MSN,都存在一个很大的问题广告。每次登陆后时不时会弹出一些广告窗口,绝大多数网友都对此感觉厌烦。因此在本次论文的激励下,我决定设计一个类似 QQ并且无垃圾信息的网络聊天工具,此外也希望通过本次论文能更好地学习与掌握网络软件编程知识。1.2 聊天软件的开发目标本论文的主要工作是设计一个类似 QQ 的网络即时聊天工具,主要是采用WinForms+ADO.NET 技术实现。软件功能主要包括用户注册、用户登录、用户间聊天、查找/添加好友、个人设置等。客户端通过公共的数据库交换信息,消息的发送和读取都是通过操作数据库来完成的。在程序中采用定时扫描数据库的方式来查找未读消息。文章首先简介涉及的相关技术与基本知识,然后阐述本软件的功能,再具体分析软件各个模块的功能及具体实现方法。四川职业技术学院计科系论文1第二章 开发环境与关键技术简介2.1 C#简介C#(读作 C Sharp)是微软公司发布的一种面向对象的、运行于.NET Framework 之上的高级程序设计语言, 是 一 种 安 全 的 、 稳 定 的 、 简 单 的 、 优 雅的 , 由 C 和 C+衍 生 出 来 的 面 向 对 象 的 编 程 语 言 。 它 在 继 承 C 和 C+强 大功 能 的 同 时 去 掉 了 一 些 它 们 的 复 杂 特 性 ( 例 如 没 有 宏 和 模 版 , 不 允 许 多 重 继承 ) 。 C#综 合 了 VB 简 单 的 可 视 化 操 作 和 C+的 高 运 行 效 率 , 以 其 强 大 的操 作 能 力 、 优 雅 的 语 法 风 格 、 创 新 的 语 言 特 性 和 便 捷 的 面 向 组 件 编 程 的 支 持成 为 .NET 开 发 的 首 选 语 言 。C#看 起 来 与 Java 有 着 惊 人 的 相 似 ;它 包 括 了 诸 如 单 一 继 承 ,界 面 ,与 Java几 乎 同 样 的 语 法 ,和 编 译 成 中 间 代 码 再 运 行 的 过 程 .但 是 C#与 Java 有 着 明 显的 不 同 ,它 借 鉴 了 Delphi 的 一 个 特 点 ,与 COM(组 件 对 象 模 型 )是 直 接 集 成 的 , 而 且 它 是 微 软 公 司 .NET windows 网 络 框 架 的 主 角 。C#最 引 人 入 胜 的 地 方 是 它 和 Java 的 不 同 ,而 不 是 相 似 的 地 方 :中 间 代 码微 软 在 用 户 选 择 何 时 MSIL 应 该 编 译 成 机 器 码 的 时 候 是 留 了 很 大 的 余 地。 微 软 公 司 很 小 心 的 声 称 MSIL 不 是 解 释 性 的 , 而 是 被 编 译 成 了 机 器 码 。 它也 明 白 许 多 , 如 果 不 是 大 多 数 的 话 , 程 序 员 认 为 Java 程 序 要 不 可 避 免 的 比C 编 写 的 任 何 东 西 都 要 慢 。 而 这 种 实 现 方 式 决 定 了 基 于 MSIL 的 程 序 (指 的是 用 C#,Visual Basic,“Managed C+“-C+的 一 个 符 合 CLS 的 版 本 -等 语言 编 写 的 程 序 )将 在 性 能 上 超 过 “解 释 性 的 “Java 代 码 。 当 然 , 这 一 点 还 需 要得 到 事 实 证 明 , 因 为 C#和 其 他 生 成 MSIL 的 编 译 器 还 没 有 发 布 。 但 是 Java JIT 编 译 器 的 普 遍 存 在 使 得 Java 和 C#在 性 能 上 相 对 相 同 。 象 “C#是 编 译 语言 而 Java 是 解 释 性 的 ,“之 类 的 声 明 只 是 商 业 技 巧 。 Java 的 中 间 代 码 和 MSIL 都 是 中 间 的 汇 编 形 式 的 语 言 ,它 们 在 运 行 时 或 其 它 的 时 候 被 编 译 成 机 器 代码 。命 名 空 间 中 的 申 明当 你 创 建 一 个 程 序 的 时 候 ,你 在 一 个 命 名 空 间 里 创 建 了 一 个 或 多 个 类 。同 在 这 个 命 名 空 间 里 (在 类 的 外 面 )你 还 有 可 能 声 明 接 口 , 枚 举 类 型 和 结 构 体。 必 须 使 用 using 关 键 字 来 引 用 其 他 命 名 空 间 的 内 容 。 基 本 的 数 据 类 型基于 C#的网络聊天软件的设计与实现2C#拥 有 比 C,C+或 者 Java 更 广 泛 的 数 据 类 型 。 这 些 类 型 是 bool, byte, ubyte, short, ushort, int, uint, long, ulong, float, double, 和 decimal。 象 Java 一 样 , 所 有 这 些 类 型 都 有 一 个 固 定 的 大 小 。 又 象 C 和 C+一 样, 每 个 数 据 类 型 都 有 有 符 号 和 无 符 号 两 种 类 型 。 与 Java 相 同 的 是 , 一 个 字符 变 量 包 含 的 是 一 个 16 位 的 Unicode 字 符 。 C#新 的 数 据 类 型 是 decimal 数据 类 型 , 对 于 货 币 数 据 , 它 能 存 放 28 位 10 进 制 数 字 。 两个基本类一 个 名 叫 object 的 类 是 所 有 其 他 类 的 基 类 。 而 一 个 名 叫 string 的 类 也象 object 一 样 是 这 个 语 言 的 一 部 分 。 作 为 语 言 的 一 部 分 存 在 意 味 着 编 译 器 有可 能 使 用 它 , 无 论 何 时 你 在 程 序 中 写 入 一 句 带 引 号 的 字 符 串 , 编 译 器 会 创 建一 个 string 对 象 来 保 存 它 。参 数 传 递方 法 可 以 被 声 明 接 受 可 变 数 目 的 参 数 。 缺 省 的 参 数 传 递 方 法 是 对 基 本 数据 类 型 进 行 值 传 递 。 ref 关 键 字 可 以 用 来 强 迫 一 个 变 量 通 过 引 用 传 递 , 这 使得 一 个 变 量 可 以 接 受 一 个 返 回 值 。 out 关 键 字 也 能 声 明 引 用 传 递 过 程 , 与 ref 不 同 的 地 方 是 , 它 指 明 这 个 参 数 并 不 需 要 初 始 值 。与 COM 的 集 成C#对 Windows 程 序 最 大 的 卖 点 可 能 就 是 它 与 COM 的 无 缝 集 成 了 ,COM 就 是 微 软 的 Win32 组 件 技 术 。 实 际 上 , 最 终 有 可 能 在 任 何 .NET 语 言里 编 写 COM 客 户 和 服 务 器 端 。 C#编 写 的 类 可 以 子 类 化 一 个 以 存 在 的 COM组 件 ; 生 成 的 类 也 能 被 作 为 一 个 COM 组 件 使 用 , 然 后 又 能 使 用 , 比 方 说 ,JScript 语 言 子 类 化 它 从 而 得 到 第 三 个 COM 组 件 。 这 种 现 象 的 结 果 是 导 致 了一 个 运 行 环 境 的 产 生 , 在 这 个 环 境 里 的 组 件 是 网 络 服 务 , 可 用 用 任 何 .NET语 言 子 类 化 。代 理 和 反 馈一 个 代 理 对 象 包 括 了 访 问 一 个 特 定 对 象 的 特 定 方 法 所 需 的 信 息 。 只要 把 它 当 成 一 个 聪 明 的 方 法 指 针 就 行 了 。 代 理 对 象 可 以 被 移 动 到 另 一 个 地 方 ,然 后 可 以 通 过 访 问 它 来 对 已 存 在 的 方 法 进 行 类 型 安 全 的 调 用 。 一 个 反 馈 方 法是 代 理 的 特 例 。 event 关 键 字 用 在 将 在 事 件 发 生 的 时 候 被 当 成 代 理 调 用 的 方法 声 明 。四川职业技术学院计科系论文32.2 .NET Framework 简介.NET Framework 是 支 持 生 成 、 运 行 下 一 代 应 用 程 序 和 XML Web Services 的 内 部 Windows 组 件 , 它 简 化 了 在 高 度 分 布 式 Internet 环 境 中 的应 用 程 序 开 发 , .NET Framework 可 实 现 的 功 能 如 下 : 提 供 一 个 一 致 的 面 向 对 象 的 编 程 环 境 , 而 无 论 对 象 代 码 是 在 本 地 存 储 和执 行 , 还 是 在 本 地 执 行 但 在 Internet 上 分 布 , 或 者 是 在 远 程 执 行 的 。 提 供 一 个 将 软 件 部 署 和 版 本 控 制 冲 突 最 小 化 的 代 码 执 行 环 境 。 提 供 一 个 可 提 高 代 码 ( 包 括 由 未 知 的 或 不 完 全 受 信 任 的 第 三 方 创 建 的 代码 ) 执 行 安 全 性 的 代 码 执 行 环 境 。 提 供 一 个 可 消 除 脚 本 环 境 或 解 释 环 境 的 性 能 问 题 的 代 码 执 行 环 境 。 使 开 发 人 员 的 经 验 在 面 对 类 型 大 不 相 同 的 应 用 程 序 ( 如 基 于 Windows 的 应 用 程 序 和 基 于 Web 的 应 用 程 序 ) 时 保 持 一 致 。 按 照 工 业 标 准 生 成 所 有 通 信 , 以 确 保 基 于 .NET Framework 的 代 码 可与 任 何 其 他 代 码 集 成 。.NET Framework 具 有 两 个 主 要 组 件 : 公 共 语 言 运 行 库 和 .NET Framework 类 库 。公 共 语 言 运 行 库 是 .NET Framework 的 基 础 。 您 可 以 将 公 共 语 言 运 行库 看 作 一 个 在 执 行 时 管 理 代 码 的 代 理 , 它 提 供 内 存 管 理 、 线 程 管 理 和 远 程 处理 等 核 心 服 务 , 并 且 还 强 制 实 施 严 格 的 类 型 安 全 以 及 可 提 高 安 全 性 和 可 靠 性的 其 他 形 式 的 代 码 准 确 性 。 这 类 似 于 Java 的 虚 拟 机 。 事 实 上 , 代 码 管 理 的概 念 是 公 共 语 言 运 行 库 的 基 本 原 则 。 以 公 共 语 言 运 行 库 为 目 标 的 代 码 称 为 托管 代 码 , 而 不 以 公 共 语 言 运 行 库 为 目 标 的 代 码 称 为 非 托 管 代 码 。.NET Framework 的 另 一 个 主 要 组 件 是 类 库 , 它 是 一 个 综 合 性 的 面 向 对象 的 可 重 用 类 型 集 合 , 您 可 以 使 用 它 开 发 多 种 应 用 程 序 , 这 些 应 用 程 序 包 括传 统 的 命 令 行 或 图 形 用 户 界 面 (GUI) 应 用 程 序 , 也 包 括 基 于 ASP.NET 所 提 供 的 最 新 创 新 的 应 用 程 序 ( 如 Web 窗 体 和 XML Web services) 。.NET Framework 可 由 非 托 管 组 件 承 载 , 这 些 组 件 将 公 共 语 言 运 行 库 加载 到 它 们 的 进 程 中 并 启 动 托 管 代 码 的 执 行 , 从 而 创 建 一 个 可 以 同 时 利 用 托 管和 非 托 管 功 能 的 软 件 环 境 。 .NET Framework 不 但 提 供 若 干 个 运 行 库 宿 主 ,而 且 还 支 持 第 三 方 运 行 库 宿 主 的 开 发 。基于 C#的网络聊天软件的设计与实现42.3 WinForms 窗 体 设 计 技 术WinForm 是 .Net 开 发 平 台 中 对 Windows Form 的 一 种 称 谓 。 .Net 为 开发 WinForm 的 应 用 程 序 提 供 了 丰 富 的 Class Library( 类 库 ) 。 这 些WinFrom 类 库 支 持 RAD(快 速 应 用 程 序 开 发 ), 这 些 类 库 被 封 装 在 一 个 名 称空 间 之 中 , 这 个 名 称 空 间 就 是 System.Windows.Forms。 在 此 名 称 空 间 中 定义 了 许 多 类 , 在 开 发 基 于 .Net 的 GUI 应 用 程 序 的 时 候 , 就 是 通 过 继 承 和 扩展 这 些 类 才 使 得 我 们 的 程 序 有 着 多 样 的 用 户 界 面 。2.4 C/S 结 构C/S ( Client/Server) 结 构 , 即 大 家 熟 知 的 客 户 机 和 服 务 器 结 构 。 它 是 软件 系 统 体 系 结 构 , 通 过 它 可 以 充 分 利 用 两 端 硬 件 环 境 的 优 势 , 将 任 务 合 理 分配 到 Client 端 和 Server 端 来 实 现 , 降 低 了 系 统 的 通 讯 开 销 。 目 前 大 多 数 应 用软 件 系 统 都 是 Client/Server 形 式 的 两 层 结 构 , 由 于 现 在 的 软 件 应 用 系 统 正 在向 分 布 式 的 Web 应 用 发 展 , Web 和 Client/Server 应 用 都 可 以 进 行 同 样 的 业务 处 理 , 应 用 不 同 的 模 块 共 享 逻 辑 组 件 ; 因 此 , 内 部 的 和 外 部 的 用 户 都 可 以访 问 新 的 和 现 有 的 应 用 系 统 , 通 过 现 有 应 用 系 统 中 的 逻 辑 可 以 扩 展 出 新 的 应用 系 统 。 这 也 就 是 目 前 应 用 系 统 的 发 展 方 向 。C/S 结构是当前数据库应用程序中极为流行的一种方式。尤其是网络技术的发展,使得当前很多系统都采用这种方式进行构造,其最大的优点是将计算机工作任务分别由客户端和服务器端来共同完成,这样有利于充分合理的利用系统资源。另外它的服务器端还可以将信息集中起来,任何客户机都可以通过访问服务器而获得所需的信息。Client/Server 模型最终可归结为一种“请求/应答”关系。一个请求总是首先被客户发出,然后服务器总是被动地接收请求,返回客户需要的结果。在客户发出一个请求之前,服务进程一直处于休眠状态。一个客户提出请求后,服务进程被“ 唤醒” 并且为客户提供服务 ,对客户的请求做出所需要的应答,如图 2-1 所示。四川职业技术学院计科系论文5图 2-1 客户机服务器通信结构示图2.5 ADO.NET 技 术ADO.NET 是 一 组 用 于 和 数 据 源 进 行 交 互 的 面 向 对 象 类 库 。 通 常 情 况 下 ,数据 源 是 数 据 库 , 但 它 同 样 也 能 够 是 文 本 文 件 、 Excel 表 格 或 者 XML 文 件 。ADO.NET 允 许 和 不 同 类 型 的 数 据 源 以 及 数 据 库 进 行 交 互 。 然 而 并 没 有 与此 相 关 的 一 系 列 类 来 完 成 这 样 的 工 作 。 因 为 不 同 的 数 据 源 采 用 不 同 的 协 议 ,所 以 对 于 不 同 的 数 据 源 必 须 采 用 相 应 的 协 议 。 一 些 老 式 的 数 据 源 使 用 ODBC 协 议 , 许 多 新 的 数 据 源 使 用 OleDb 协 议 , 并 且 现 在 还 不 断 出 现 更 多 的 数据 源 , 这 些 数 据 源 都 可 以 通 过 .NET 的 ADO.NET 类 库 来 进 行 连 接 。 ADO.NET 提 供 与 数 据 源 进 行 交 互 的 相 关 的 公 共 方 法 , 但 是 对 于 不 同 的 数据 源 采 用 一 组 不 同 的 类 库 。 这 些 类 库 称 为 Data Providers, 并 且 通 常 是 以 与之 交 互 的 协 议 和 数 据 源 的 类 型 来 命 名 的 。 然 而 无 论 使 用 什 么 样 的 Data Provider, 你 将 使 用 相 似 的 对 象 与 数 据 源 进 行 交 互 。 MysqlConnection 对 象 管 理与 数 据 源 的 连 接 。 MysqlCommand 对 象 允 许 你 与 数 据 源 交 流 并 发 送 命 令 给 它。 为 了 对 进 行 快 速 的 只 “向 前 ”地 读 取 数 据 , 使 用 MysqlDataReader。 如 果 想使 用 断 开 数 据 , 使 用 DataSet 并 实 现 能 进 行 读 取 或 者 写 入 数 据 源 的 MysqlDataAdapter。2.6 MyMysql 数 据 库 简 介MyMysql 是一个关系型数据库管理系统,由瑞典 MyMysql AB 公司开发,目前属于 Oracle 旗下产品。MyMysql 是最流行的关系型数据库管理系统之一,在 基于 C#的网络聊天软件的设计与实现6WEB 应用方面,MyMysql 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。MyMysql 所使用的 Mysql 语言是用于访问数据库的最常用标准化语言。MyMysql 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MyMysql 作为网站数据库。与其他的大型数据库,例如 Oracle、DB2、 Mysql Server 等相比,MyMysql 自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MyMysql 提供的功能已经绰绰有余,而且由于 MyMysql 是开放源码软件,因此可以大大降低总体拥有成本MyMysql 可应用于多种语言,包括 PERL, C, C+, JAVA 和 PHP。 在这些语言中,MyMysql 在 PHP 的 web 开发中是应用最广泛。 MyMysql 是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。本 网 络 聊 天 软 件 的 开 发 环 境 主 要 使 用 MyMysql。Editionnavicat for myMysql( 32 位 和 64 位 ) Navicat for MyMysql 是一套管理和开发 MyMysql 或 MariaDB 的理想解决方案,支持单一程序,可同时连接到 MyMysql 和 MariaDB。这个功能齐备的前端软件为数据库管理、开发和维护提供了直观而强大的图形界面,给 MyMysql 或MariaDB 新手以及专业人士提供了一组全面的工具。Navicat for MyMysql 是一款强大的 MyMysql 数据库管理和开发工具,它为专业开发者提供了一套强大的足够尖端的工具,但对于新用户仍然易于学习。Navicat for MyMysql 基于 Windows 平台,为 MyMysql 量身订作,提供类似于 MyMysql 的管理界面工具。此解决方案的出现,将解放 PHP、J2EE 等程序员以及数据库设计者、管理者的大脑,降低开发成本,为用户带来更高的开发效率。Navicat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 环境监测行业智能化升级路径研究-基于2025年数据质量控制报告
- 2025年血液透析室院感知识考核试题(附答案)
- 高中数学教材习题高考化改编案例集答案
- 2026届吉林省长春市养正高级中学高一化学第一学期期中质量检测模拟试题含解析
- 2025-2030年中国农村物流行业市场运行状况及竞争格局及发展预测研究报告
- 2025年工业污染源全面达标排放计划的实施方案与政策建议
- 2025-2030工业设计在机床产品附加值提升中的应用报告
- 2025-2030工业大数据平台数据治理与价值挖掘方法探讨
- 伯父鲁先生课件
- 高校学生求职成功秘诀:各类院校面试题目的应对策略
- 2022水环式机械真空泵选型计算手册
- 2024-2030全球商业电子垃圾回收行业调研及趋势分析报告
- 会议活动风险管理研究-全面剖析
- 机械传动知识课件2
- 2025年度运输业安全生产知识竞赛试题(附答案)
- 从业人员培训管理制度
- 酒店前台礼貌礼节培训
- 幸福心理学-(彭凯平)
- 2025年中邮保险招聘笔试参考题库含答案解析
- 《中国老年糖尿病诊疗指南(2024版)》解读课件
- 《中国女性乳腺癌患者糖尿病和糖尿病前期管理专家共识》 (2024版)
评论
0/150
提交评论