“MYQQ”系统需求和需求分析说明书.doc_第1页
“MYQQ”系统需求和需求分析说明书.doc_第2页
“MYQQ”系统需求和需求分析说明书.doc_第3页
“MYQQ”系统需求和需求分析说明书.doc_第4页
“MYQQ”系统需求和需求分析说明书.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Web程序设计项目实训指导书适用专业:计算机网络与应用制 定 人:高祖彦教 研 室:网络教研室计算机与信息工程系2009 年8 月第一部分、项目概述 1、 项目名称及背景 项目名称 “MyQQ”聊天系统 开发背景 在当今信息化的时代, 人们需要简捷快速的方式进行沟通。 用手机交流存在费用高, 操作麻烦的问题。因此开发一个基于 C/S 架构的 QQ,可解决在局域网范围内与好友进行便利交流,无需任何费用。 教师和学生可通过这个平台进行学习上、生活上的交流和沟通。 2、 文档说明 本文档系统的描述了“MyQQ”系的业务需求以及需求分析文档。可用与指导软件的系统设计和测试阶段的工作。 第二部分、任务说明 1、 功能概述 “MYQQ”系统提供的如下功能:l 用户注册 l 用户登录 l 个人信息编辑 l 查找/添加好友 l 好友列表 l 聊天 2、 用户环境 服务器硬件要求: 处理器:Pentium3 以上;内存=512MB;硬盘=40G; 服务器端软件要求: 操作系统:Windows 2003 或 Windows XP;数据库服务器:Microsoft SQL SERVER 2000; 客户端软件要求: 操作系统:Windows 2003 或 Windows XP; 开发工具:VC#.Net2005第三部分、需求分析 1、 实现功能 图一: “MyQQ”系统功能图 功能清单 01 注册 实现申请MyQQ 号 02 登录 用 MyQQ 号和密码登录 03 登录后主窗体 显示好友名单和未读信息 04 查找添加好友 查找在线好友 05 个人信息管理 编辑个人信息 06 聊天 与好友进行聊天 07 头像列表 提供可选择的头像 08 系统消息 09 辅助类 2、功能说明 登录 显示登录界面。用户输入用户名称和口令后,提交页面。系统验证用户的登录: 若用户名称或口令不正确,系统显示登录失败消息,用户可再次登录;若用户名 称和口令正确,登录成功,系统显示一个登录后的页面,可供用户进行聊天。若 忘记密码,可找回密码。 注册 用户必须先申请 QQ 号,才能登录 MYQQ 系统。用户注册信息的妮称不能相同。 注册信息除包含基本资料外,还包含星座和血型。 登录后主窗体 显示好友信息,扫描未读聊天信息,同时来消息的好友头像闪烁。可添加和删除 好友,并将头像设置为小图标。 查找添加好友 查找好友的方法可有精确查找和模糊查找。也可通过年龄和性别进行查找。可将 查到的网友添加为好友 个人信息管理 可以修改个人信息资料,如头像等。也可进行安全设置。如更改密码。更改完成 显示更改成功 聊天 可与好友进行聊天。信息即时更新。 头像列表 用列表的方式显示系统提供的头像。供用户选择。 系统消息 用户在操作 MYQQ 系统时,出现异常均采用系统消息的方式进行提示 第四部分、数据库设计一、数据库逻辑设计二、数据库表的设计表名功能说明 Users存储用户信息Messages存储 QQ消息MessageType存储 QQ消息类型 Friends存储好友FriendshipPolicy存储好友策略bloodType存储血型star存储星座SavePwd保存密码2.1存储用户信息表Users详细信息字段名称含义类型约束其它说明IdQQ号码Int(4)主键标识种子10000LoginPwdQQ密码varchar(50)非空FriendshipPolicyId好友策略IDInt(4)非空NickName昵称varchar(50)非空FaceId图像IDintSex姓别varchar(50)非空Age年龄int非空Name真实姓名varchar(50)StarId星座IDintBloodTypeId血型IDintState在线状态int非空Status身份证号码varchar(50)非空1518create database MyQQcreate table Users(Id int identity(1000,1) primary key,LoginPwd varchar(50) not null,FriendshipPolicyId int not null,NickName varchar(50) not null, FaceId int,Sex varchar(50) not null,Age int not null,Name varchar(50),StarId int,BloodTypeId int,State int not null,Status varchar(50) not null)use myqqinsert into Users(LoginPwd,FriendshipPolicyId,NickName,FaceId,Sex,Age,Name,State,Status) values(admin,1,灰太狼,0,男,24,高祖彦,0select * from users2.2存储 QQ消息表Messages详细信息字段名称含义类型约束其它说明Id发消息的用户号码int主键FromUserId收消息的用户号码int非空ToUserId消息内容int非空Message外键varchar(50)MessageTypeId消息状态int非空MessageState消息发送时间int非空MessageTime发消息的用户号码datetime非空2.3存储 QQ消息类型表MessageType详细信息字段名称含义类型约束其它说明Idint主键MessageType消息类型int非空2.4存储好友表Friends详细信息字段名称含义类型约束其它说明Idint主键HostId主机QQ号码int非空FriendId好友QQ号码int非空2.5存储好友策略表FriendshipPolicy 详细信息字段名称含义类型约束其它说明Idint主键FriendshipPolicy策略类型varchar(50)非空加为好友2.6存储血型表bloodType 详细信息字段名称含义类型约束其它说明Idint主键BloodType血型类型varchar(50)非空2.7存储星座类型表 star 详细信息字段名称含义类型约束其它说明Idint主键Star星座类型varchar(50)非空2.8存储密码表SavePwd 详细信息字段名称含义类型约束其它说明Idint主键LoginIdQQ号码varchar(50)LoginPwdQQ密码varchar(50)第五部分、系统界面设计一、 登录界面:二、 申请QQ界面三、 忘记密码窗体四、 主窗体:五、 修改个人信息六、 查找好友界面:七、 查看好友界面八、 聊天界面:第六部分、参考代码一、 登录验证: 1、数据库连接类DBHelper.csclass DBHelper /数据库连接字符串 private static string connString = User ID=sa;Initial Catalog=MyQQ;Data Source=(local);Password=sa; /数据库连接Connection对象 public static SqlConnection connection = new SqlConnection(connString);2、验证输入 private bool ValidateInput() if (txtId.Text.Trim() = ) MessageBox.Show(请输入MyQQ号码, 提示, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtId.Focus(); return false; if (txtPassword.Text.Trim() = ) MessageBox.Show(请输入MyQQ密码, 提示, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtPassword.Focus(); return false; return true; 2、 登录验证private void btnLogin_Click(object sender, EventArgs e) if (ValidateInput()/验证登录 try UserHelper.loginId = int.Parse(txtId.Text.Trim();/记录登录Id catch (Exception ex) MessageBox.Show(号码只能使用数字!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Error); txtId.Focus(); Console.WriteLine(ex); return; /隐身登录 if (chkYinShen.Checked=true) state = 0; else state = 1; /保存密码 if (chkSavePwd.Checked = true) /如果用户点击保存密码对数据库执行的操作 GetSendSavePwd(); else /不保存密码对数据库执行的操作 GetNoSave(); /查询Id是否存在 string sql = string.Format(select count(*) from Users where Id=0 and LoginPwd=1,txtId.Text.Trim(),txtPassword.Text); try SqlCommand command = new SqlCommand(sql, DBHelper.connection); DBHelper.connection.Open(); int count = (int)command.ExecuteScalar(); if (count 1) MessageBox.Show(用户名或密码不正确!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); else /验证成功关闭数据库 DBHelper.connection.Close(); /打开登录后的主窗体 MainForm mf = new MainForm(); mf.Show(); this.Hide(); catch (Exception ex) Console.WriteLine(ex.Message); finally DBHelper.connection.Close(); 3、 保存密码:private void GetSendSavePwd() try string sql = string.Format(update SavePwd set LoginId=0,LoginPwd=1 where Id=1, txtId.Text.Trim(), txtPassword.Text); SqlCommand command = new SqlCommand(sql, DBHelper.connection); DBHelper.connection.Open(); command.ExecuteNonQuery(); catch (Exception ex) Console.WriteLine(ex.Message); finally DBHelper.connection.Close(); 4、 不保存密码: private static void GetNoSave() try string sql = update SavePwd set LoginId=,LoginPwd= where Id=1; SqlCommand command = new SqlCommand(sql, DBHelper.connection); DBHelper.connection.Open(); command.ExecuteNonQuery(); catch (Exception ex) Console.WriteLine(ex.Message); finally DBHelper.connection.Close(); 5、 获得保存的用户名、密码private void GetSavePwd() try string sql = select * from SavePwd; SqlCommand command = new SqlCommand(sql, DBHelper.connection); DBHelper.connection.Open(); SqlDataReader dataReader = command.ExecuteReader(); dataReader.Read(); txtId.Text = (string)dataReaderLoginId; txtPassword.Text = (string)dataReaderLoginPwd; dataReader.Close(); catch (Exception ex) Console.WriteLine(ex.Message); finally DBHelper.connection.Close(); 二、 申请QQ号码RegisterForm.cs1、为血型加载内容的类private void GetBloodType() try string bloodtype = ; string sql = select BloodType from BloodType; SqlCommand comand = new SqlCommand(sql, DBHelper.connection); DBHelper.connection.Open(); SqlDataReader datareader = comand.ExecuteReader(); while (datareader.Read() bloodtype = (string)datareaderBloodType; cboBloodType.Items.Add(bloodtype); datareader.Close(); catch (Exception ex) MessageBox.Show(联接数据库出错, 提示, MessageBoxButtons.OK, MessageBoxIcon.Error); Console.WriteLine(ex.Message); finally DBHelper.connection.Close(); 2、星座类 private void GetStar() try string starname = ; string sql = select star from star; SqlCommand comand = new SqlCommand(sql, DBHelper.connection); DBHelper.connection.Open(); SqlDataReader datareader = comand.ExecuteReader(); while (datareader.Read() starname = (string)datareaderstar; cboStar.Items.Add(starname); datareader.Close(); catch (Exception ex) MessageBox.Show(数据库联接失败, 提示, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); Console.WriteLine(ex.Message); finally DBHelper.connection.Close(); 3、输入验证private bool ValidateInput() if (txtNickName.Text = ) MessageBox.Show(请输入昵称!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtNickName.Focus(); return false; if (txtLoginPwd.Text.Trim() = ) MessageBox.Show(请输入密码, 提示, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtLoginPwd.Focus(); return false; if (txtReLoginPwd.Text.Trim() = | txtReLoginPwd.Text.Trim() != txtLoginPwd.Text.Trim() MessageBox.Show(两次密码不一样, 提示, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtReLoginPwd.Focus(); return false; return true; 4、注册 private void btnRegist_Click(object sender, EventArgs e) int myQQNum = 0; int starId = 0;/星座Id int bloodId = 0;/血型Id string sex = ;/性别 int FriendshipPolicyId = 1;/消息状态,表中不允许为空 /验证用户输入 if (ValidateInput() bool getStatus = true; getStatus = GetStatus(getStatus); /验证身份证好是否重复 if (getStatus = true) MessageBox.Show(已有身份证号码,请重新输入!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtStatus.Focus(); else /判断单选按钮是男或者女 sex = GetSex(sex); /如果选填都没有填的原始SQL语句 string sql = string.Format(insert into Users(LoginPwd,FriendshipPolicyId,NickName,FaceId,Sex,Age,Name,State,Status) values(0,1,2,0,3,4,5,0,6), txtLoginPwd.Text, FriendshipPolicyId, txtNickName.Text.Trim(), sex, txtAge.Text.Trim(), txtName.Text.Trim(), txtStatus.Text.Trim(); try /验证选填选项是否被填充 if (cboStar.Text.Trim() != & cboBloodType.Text.Trim() != ) GetStarId(ref starId); GetBloodId(ref bloodId); sql = string.Format(insert into Users(LoginPwd,FriendshipPolicyId,NickName,FaceId,Sex,Age,Name,StarId,BloodTypeId,State,Status) values(0,1,2,0,3,4,5,6,7,0,8), txtLoginPwd.Text, FriendshipPolicyId, txtNickName.Text.Trim(), sex, txtAge.Text.Trim(), txtName.Text.Trim(), starId, bloodId, txtStatus.Text.Trim(); else if (cboStar.Text.Trim() != ) GetStarId(ref starId); sql = string.Format(insert into Users(LoginPwd,FriendshipPolicyId,NickName,FaceId,Sex,Age,Name,StarId,State,Status) values(0,1,2,0,3,4,5,6,0,7), txtLoginPwd.Text, FriendshipPolicyId, txtNickName.Text.Trim(), sex, txtAge.Text.Trim(), txtName.Text.Trim(), starId, txtStatus.Text.Trim(); else if (cboBloodType.Text.Trim() != ) GetBloodId(ref bloodId); sql = string.Format(insert into Users(LoginPwd,FriendshipPolicyId,NickName,FaceId,Sex,Age,Name,BloodTypeId,State,Status) values(0,1,2,0,3,4,5,6,0,7), txtLoginPwd.Text, FriendshipPolicyId, txtNickName.Text.Trim(), sex, txtAge.Text.Trim(), txtName.Text.Trim(), bloodId, txtStatus.Text.Trim(); SqlCommand command = new SqlCommand(sql, DBHelper.connection); DBHelper.connection.Open(); int result = command.ExecuteNonQuery(); /如果插入成功 if (result = 1) /查询信增加的记录的标识号的语句 string sql1 = select Identity from Users; command.CommandText = sql1;/重新指定 /执行查询语句 myQQNum = Convert.ToInt32(command.ExecuteScalar(); string message = string.Format(注册成功!您的MyQQ号码是0, myQQNum); DialogResult result1 = MessageBox.Show(message, 注册成功, MessageBoxButtons.OK, MessageBoxIcon.Information); /点击ok后关闭注册窗体 if (result1 = DialogResult.OK) this.Close(); catch (Exception ex) / MessageBox.Show(注册失败,请确认输入是否正确, 注册失败, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); Console.WriteLine(ex.Message); finally DBHelper.connection.Close(); 三、 找回密码窗体:FindPwdForm.cs private void btnSearchPwd_Click(object sender, EventArgs e) if (ValidateInput() try string sql = string.Format(select count(LoginPwd) from Users where Id=0 and Status=1, txtUserId.Text.Trim(), txtStatus.Text.Trim(); SqlCommand command = new SqlCommand(sql, DBHelper.connection); DBHelper.connection.Open(); int result = (int)command.ExecuteScalar(); if (result = 1) string sql1 = string.Format(select LoginPwd from Users where Id=0 and Status=1, txtUserId.Text.Trim(), txtStatus.Text.Trim(); command.CommandText = sql1; SqlDataReader dataReader = command.ExecuteReader(); dataReader.Read(); Console.WriteLine(); DialogResult dr = MessageBox.Show( + txtUserId.Text.Trim() + )您的密码是: + (string)dataReaderLoginPwd + n建议您登录系统后更改密码!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information); if (dr = DialogResult.OK) this.Close(); dataReader.Close(); else MessageBox.Show(系统没有找到您的信息,请核实身份证号码后查询!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information); txtUserId.Text = ; txtStatus.Text = ; txtUserId.Focus(); catch (Exception ex) Console.WriteLine(ex.Message); finally DBHelp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论