当前位置:
文档之家› 仿QQ聊天软件MyQQ源代码教学(北大青鸟完整版)
仿QQ聊天软件MyQQ源代码教学(北大青鸟完整版)
需求分析——功能分析
主要功能:
注册与登录 好友管理 消息管理 个人设置
需求分析——界面分析
需要的界面:
注册界面 登录界面 登录后的主界面 查找/添加好友界面 聊天界面 系统消息界面 个人设置界面
头像列表界面
需求分析——辅助类分析
需要添加的辅助类:
DBHelper类 UserHelper 类
小组分工
4
4 4 4 4
软件开发流程
比尔盖子是一名建筑工人 起初只干一些比较简单的 建筑工作 凭个人技术和经验,不需要特 别设计,可以顺利完成
如同编写早期比较小的程序
软件开发流程
新任务:建造一间非常美 丽而完整的房间 工作变得复杂许多
像不断发展的软件,功能 越来越多,越来越复杂
软件开发流程
软件复杂性
图形用户界面 客户/服务器结构 分布式应用 数据通信 超大型关系型数据库
// 判断 ListView 中是否有选中的项 if (lvFaces.SelectedItems.Count == 0) { // … } // 获得选中的头像的索引 int faceId = lvFaces.SelectedItems[0].ImageIndex;
第四次集中编码:A任务
个人信息修改功能
第一次集中编码:难点分析
好友列表——第三方控件 SideBar
SbGroup 类型 Items 属性 Groups 属性 SbItem 类型
第一次集中编码:难点分析
SideBar
// 命名空间 using Aptech.UI; // 添加组 sbFriends.AddGroup("我的好友"); sbFriends.AddGroup("陌生人"); 显示的文字 // 添加项 SbItem item = new SbItem((string)dataReader["NickName"], (int)dataReader["FaceId"]); sbFriends.Groups[0].Items.Add(item); 显示的图像索引
大小头像切换—— SideBar 的 View 属性
// 小头像 sbFriends.View = SbView.SmallIcon;
总结及项目答辩
教员对项目完成情况作总结 学员以小组形式按要求答辩
Thank you
确定项目目的 了解系统中客户的期望 确定系统的规模 论证项目可行性
技术可行性 经济可行性 操作可行性 社会可行性
需求分析阶段
需求是产品的根源 需求工作的优劣对产品影响最大
获取需求 客户 同行、专家 已经存在的同类软件产品 行业标准、规则 Internet相关资料 可能遇到的问题 用户说不清楚需求 误解需求
分析需求
功能需求记录在客户需求说明书中
需求分析阶段
文档介绍
产品功能性需求
需求说明书
产品介绍
产品非功能性需求
产品应当遵循的标准和规范
其他需求
需求分析阶段
设计阶段
目的:根据用户的需要制定标准,划分并分配任务
构建原型 设计GUI标准
设计阶段涉及的活动
设计数据库
设计过程模块
分配任务和监督任务
设计编码标准
第四次集中编码:B任务
完善登录后主窗体:
扫描未读系统消息 右键菜单 工具条按钮功能
第四次集中编码:C任务
添加好友请求窗体设计及功能实现
第四次集中编码:难点分析
登录主窗体的右键菜单中
删除好友功能——从 SideBar 中移除一项
// 从SideBar中将选中的项移除 sbFriends.SeletedItem.Parent.Items.Remove( sbFriends.SeletedItem);
// 判断选中行的第一个单元格是否有值 if (dgvBasicResult.SelectedRows[0].Cells[0] != null) { // … } 表示空 // 获得选中行的第一个单元格的值 dgvBasicResult.SelectedRows[0].Cells[0].Value
第三次集中编码:A任务
开发阶段
开发阶段
对用户界面 进行最后的修改
构建数据库
通过添加代码 使其具备功能
评估/测试阶段
本阶段测试每个单元的功能
数据验证测试 单元测试 安全性测试
测试阶段涉及的活动
强度测试
集成测试
维护阶段
为客户提供故障诊断支持
网络 电话 上门
应用程序要求的任何软件升级
版本 补丁
软件开发过程
比尔通过类似软件瀑布模型的方 式成功完成了自己的建筑项目
WINDOWS 2000:
项目经理:250人 开发人员:1700人 测试人员:3200人
软件工程师的工作
项目设计与分析 编码 编写文档 测试 团队管理
软件工程师的素质
团队组织和管理能力
良好的编码能力 规范化编码习惯 具有软件工程的概念
规范意识 团队精神
求知欲、进取心 和学习总结的能力
软件开发过程
第二次集中编码:A任务
查找/添加好友窗体设计
第二次集中编码:B任务
查找/添加好友功能实现
第二次集中编码:C任务
聊天窗体设计及功能实现
第二次集中编码:难点分析
添加好友判断流程
第二次集中编码:难点分析
操作显示查询好友结果的 DataGridView
// 判断是否有单元格选中 if (dgvBasicResult.SelectedRows.Count == 0) { // … }
建库 建表
Users Friends FriendShipPolicy
建关系
项目准备阶段:C任务
建表
Star BloodType Messages MessageType
第一次集中编码:A任务
设计注册窗体界面 实现用户注册功能
第一次集中编码:B任务
设计登录后主窗体 显示好友列表
第一次集中编码:C任务
“这次不能盲目开工, 我们需要首先好好设 计一下!” 构想 分析 设计 构造 评估
软件的制作过程也非常相似
软件开发过程
建造房屋 构想 分析 设计 构造 评估 维护
软件开发 可行性研究与计划 需求分析 设计 开发 评估/测试 维护
软件开发过程模型
软件开发需要经历几个步骤 具体如何实施,具体项目不同,有所区别 软件开发过程模型:制作具体软件时,开发步骤的具体实 施方法
项目团队中的角色
比尔想到需要更多的人手帮他 终于组成了自己工作团队 就像软件中的项目团队
软件项目团队中的角色
项目团队
项目经理 技术负责人
软件架构师
分析师
设计人员 开发人员
测试人员
项目人员构成比例
例子: 微软 EXCHANGE 2000 SERVER 的开发:
项目经理:25人 开发人员:140人 测试人员:350人
MyQQ 聊天工具
组员 B
协助
组长 A
协助
组员 C
登 录 后 主 窗 体
查 找 / 添 加 好 友
注 册 窗 体
查 找 / 添 加 好 友
个 人 信 息 窗 体
辅 助 类
登 录 窗 体
聊 天 窗 体
头 像 列 表 窗 体
系 统 消 息 窗 体
查找/添加功能编码
界面设计、辅助功能
阶段划分
项目准备阶段 (2学时)
瀑布模型
瀑布模型
瀑布模型—— “线性顺序模型” 可行性研究报告 可行性研究与计划 将每个阶段都清楚定义了起止点 产生明确的交付成果 需求说明书 需求分析 阶段之间通过文档进行沟通 每个阶段都必需完成全部规定的任务(文档)后才能够进 设计文档 设计 入下一个阶段
开发 程序
测试
测试报告 维护
可行性研究与计划阶段
项目框架、建库、建表、提交计划
第一次集中编码 (4学时)
注册、登录功能
第二次集中编码 (4学时)
查找/添加好友、部分聊天功能
第三次集中编码 (4学时)
个人信息显示、完整聊天功能
第四次集中编码 (4学时)
个人信息修改、完善整个功能
项目答辩、总结(4学时)
项目准备阶段:A任务
搭建项目框架
提交小组计划
项目准备阶段:B任务
阶段项目 MyQQ
阶段项目简介
任务:MyQQ 聊天工具 系统结构:C/S,通过数据库交换聊天消息 小组形式完成 学时:24学时
项目实施和课程安排
课程进度 第一次课 项目讲解 项目准备阶段
描述
课时 2 2
第二次课
第三次课 第四次课 第五次课 第六次课
任务讲解
第一次集中编码 任务讲解 第二次集中编码 任务讲解 第三次集中编码 任务讲解 第四次集中编码 总结和答辩
设计登录窗体 实现登录功能
第一次集中编码:难点分析
注册功能难点
// 获取自动生成的Id值 // 查询新增加的记录的标识号的 SQL 语句 sql = "SELECT @@Identity FROM Users"; // …… // 执行查询语句 myQQNum = Convert.ToInt32(command.ExecuteScalar());
设计个人信息窗体 显示个人信息
第三次集中编码:B任务
完善登录后主窗体,扫描未读聊天消息
利用 Timer 实现
控制好友头像闪烁
来消息,头像闪烁
第三次集中编码:C任务
头像列表窗体设计及功能实现
第三次集中编码:难点分析
头像闪烁效果:
改变头像显示的图片,用Timer控制切换