武 汉 工 业 学 院
Web高级程序设计 大 作 业 报 告
专业 信息系统与信息管理
学号 090502227
姓名 吴思敏
日期 20121019
。
1欢迎下载
精品文档
一、需求分析
1引言
随着网络与信息技术的发展,很多陌生人之间都有了或多或少的联系。如何更好地管理这些信息是没跟人必须面临的问题,特别是那些很久没有联系的朋友,再次见面无法马上想起关于这个人的记忆,造成一些不必要的尴尬。基于上述种种原因,开发一套通讯录管理系统很重要,我们结合这次课程设计开发以下的通讯录管理系统方案。 2编写目的
本系统主要是为了更好的管理每个人的通讯录,给每个人提供一个井然有序的管理平台,防止手工管理混乱,造成不必要的麻烦。 3功能需求
通过对自己及朋友的通讯录的询问以及了解,一个完整的通讯录管理系统应该包括:数据集模块,登录窗体模块,系统管理模块,主窗体模块,通讯录数据管理模块,信息管理模块,登录信息查询模块。本系统主要实现我们信息的管理,包括我们平时朋友信息的添加、修改、查询和删除,及一些辅助项目的管理,如登录系统用户管理和用户组管理。
二、系统框架
本系统将实现多用户对各自通讯录的管理功能,包括:添加联系人、修改联系人、删除联系人、查找联系人。为了体现多用户的特性,还必须包含一个用户管理子系统,作用是对用户的信息进行管理。具体功能模块如图所示
通讯录管理系统
删用用添修查 户除户加改找
管联登联联联
理 系录 系系系
人 人 人 人
登录的处理模块 处理流程图如图
等待用户输入
不合法 接受到用户输入 不匹配 验证数据合法
合法
验证身份
。
2欢迎下载
精品文档
匹配
主窗体处理流程图如图
等待用户输入
分组数量 加载当前分组 的联系人信息
等待用户命令
添加命令 修改命令 删除命令 查找命令 视图命令
修加加删加
改载载除载
视添修联查
图加改系找
模人 联联联
式 系系系
人人人
窗窗窗
体 体 体 加载联系人 分组信息 。
3欢迎下载
精品文档
新增联系人处理模块
新增联系人窗体流程图如图 获取配置信息
N 联系人数量 N 分组数量 加载分组信息 等待用户命令 添加命令 添加联系人 禁用添加联 系人功能 禁用添加分组功能 三、模块设计 登陆界面的实现 登录窗体如图 。 4欢迎下载 精品文档 主窗体的实现 主窗体设计如图 新增联系人实现 新增联系人设计如图 四、编码实现 存储过程代码 查找联系人模块使用储存过程来搜索数据,查找联系人的储存过程如下 ALTER PROCEDURE [查找联系人] ( @name varchar(50), @phone varchar(50), @user varchar(50) ) 。 5欢迎下载 精品文档 AS if len(@user)=0 return 1 if len(@name)=0 and len(@phone)=0 begin select 姓名,组别,工作单位,联系电话,电子邮箱? from [联系人] return end if len(@name)<>0 and len(@phone)=0 begin set @name='%'+@name+'%' select姓名,组别,工作单位,联系电话,电子邮箱? from [联系人] where 姓名 like @name return end if len(@name)=0 and len(@phone)<>0 begin select姓名,组别,工作单位,联系电话,电子邮箱? from [联系人] where 联系电话 like @phone return end if len(@name)=0 and len(@phone)<>0 begin select姓名,组别,工作单位,联系电话,电子邮箱? from [联系人] where 联系电话 like @phone and 姓名 like @name return end 登录窗体 实现代码如下 private void btnOK_Click(object sender, EventArgs e) { try { if (txtUserName.Text.Trim() == \"\" || txtPassword.Text.Trim() == \"\") { MessageBox.Show(\"用户名不能为空,登录失败\MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //验证用户 SqlConnection conn = new SqlConnection(\"server=.;database=通讯录管理系统;uid=sa;pwd=521125;\"); StringBuilder sql = new StringBuilder(); 。 6欢迎下载 精品文档 sql.AppendFormat(\"select count(*) from 用户where 用户名=杨雪 and 密码='01'xtPassword.Text.Trim()); SqlCommand cmd = new SqlCommand(sql.ToString(), conn); conn.Open(); int result = Convert.ToInt32(cmd.ExecuteScalar()); conn.Close(); if (result == 1) { //登陆成功 frmMain f = new frmMain(); f.tsslUserName.Text = txtUserName.Text.Trim(); f.Show(); this.Hide(); } else { MessageBox.Show(\"用户名错误!\登录失败\MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } catch (Exception ee) { MessageBox.Show(\"发生错误!\" + ee.Message, \"登录失败\MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } 主窗体 实现代码如下 public partial class frmMain : Form { private string strConn = \"server=.;database=通讯录管理系统;uid=sa;pwd=521125;\"; public frmMain() { InitializeComponent(); } private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { LoadList(); 。 7欢迎下载 精品文档 } //主窗体加载事件 private void frmMain_Load(object sender, EventArgs e) { LoadGroup(); if (trvGroup.Nodes.Count > 0) { trvGroup.SelectedNode = trvGroup.Nodes[0]; LoadList(); } else { lvContact.Clear(); } } /加载分组信息到TreeView private void LoadGroup() { try { trvGroup.Nodes.Clear(); SqlConnection conn = new SqlConnection(strConn); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = \"select 组别 from 联系人 where 用户名='\" + tsslUserName.Text + \"'\"; conn.Open(); SqlDataReader sdr = cmd.ExecuteReader(); while (sdr.Read()) { trvGroup.Nodes.Add(sdr[0].ToString()); } sdr.Close(); conn.Close(); } catch { } } //加载当前分类的联系人信息 private void LoadList() { if (trvGroup.Nodes.Count == 0) { lvContact.Clear(); 。 8欢迎下载 精品文档 return; } if (trvGroup.SelectedNode.Index >= 0) { string strGroup = trvGroup.SelectedNode.Text; try { lvContact.Clear(); lvContact.Columns.Add(\"姓名\ lvContact.Columns.Add(\"工作单位\ lvContact.Columns.Add(\"联系电话\ lvContact.Columns.Add(\"电子邮箱\ SqlConnection conn = new SqlConnection(strConn); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = \"select 编号,姓名,工作单位 ,联系电话,电子邮箱 from 联系人 where 组别='\" + strGroup + \"'and 用户名='\" + tsslUserName.Text + \"'\"; conn.Open(); SqlDataReader sdr = cmd.ExecuteReader(); int count = 0; while (sdr.Read()) { ListViewItem lvi = new ListViewItem(); lvi.Text = sdr[\"姓名\"].ToString(); lvi.SubItems.Add(sdr[\"工作单位\"].ToString()); lvi.SubItems.Add(sdr[\"联系电话\"].ToString()); lvi.SubItems.Add(sdr[\"电子邮箱?\"].ToString()); lvi.Tag = sdr[\"编号\"]; lvi.ImageIndex = 0; lvContact.Items.Add(lvi); count++; } tsslCount.Text=\"共计\"+count.ToString()+\"个联系人\"; sdr.Close(); conn.Close(); } catch { } } } 。 9欢迎下载 精品文档 //详细信息在工具栏上的事件 private void 详细信息ToolStripMenuItem_Click(object sender, EventArgs e) { lvContact.View=View.Details; } //详细信息在菜单栏上的事件 private void 详细信息ToolStripMenuItem1_Click(object sender, EventArgs e) { lvContact.View=View.Details; } //添加方法在主窗体中的实现 private void Add() { frmAdd f=new frmAdd(); if(f.ShowDialog(this)==DialogResult.OK) { LoadGroup(); if(trvGroup.Nodes.Count>0) { trvGroup.SelectedNode=trvGroup.Nodes[0]; LoadList(); } else { lvContact.Clear(); } } } //编辑方法在主窗体的实现 private void Edit() { if(lvContact.SelectedItems.Count==1) { string id=lvContact.SelectedItems[0].Text.ToString(); frmEdit f=new frmEdit(id); if(f.ShowDialog(this)==DialogResult.OK) { LoadGroup(); if(trvGroup.Nodes.Count>0) { trvGroup.SelectedNode=trvGroup.Nodes[0]; LoadList(); 。 10欢迎下载 精品文档 } else { lvContact.Clear(); } } } } //删除方法在住窗体中的实现 private void Delete() { if(lvContact.SelectedItems.Count<1) { return; } if(MessageBox.Show(\"是否要删除选中的联系人\删除确认 \ { string strWhere=\"\"; foreach (ListViewItem lvi in lvContact.SelectedItems) { strWhere+=lvi.Text.ToString(); } try { SqlConnection conn=new SqlConnection(strConn); SqlCommand cmd=new SqlCommand(); cmd.Connection=conn; cmd.CommandText = \"delete from 联系人where 姓名='\" + strWhere + \"'\"; conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); LoadGroup(); if(trvGroup.Nodes.Count>0) { trvGroup.SelectedNode=trvGroup.Nodes[0]; LoadList(); } else { lvContact.Clear(); } } 。 11欢迎下载 精品文档 catch { } } } //搜索方法在主窗体中的实现 private void Search() { frmSearch f = new frmSearch(); if (f.ShowDialog() == DialogResult.OK) { LoadGroup(); if (trvGroup.Nodes.Count > 0) { trvGroup.SelectedNode = trvGroup.Nodes[0]; LoadList(); } else { lvContact.Clear(); } } } } 新增联系人 实现代码如下 public partial class frmAdd : Form { private string strconn = \"server=.;database=通讯录管理系统;pwd=521125\"; private string strUserName= \"\"; private int groupCount = 0; private int contentCount = 0; private string txtFilePath = \"\"; public frmAdd() { InitializeComponent(); } private void textBox2_TextChanged(object sender, EventArgs e) { } 。 12欢迎下载 精品文档 private void frmAdd_Load(object sender, EventArgs e) { //获取用户名 strUserName = ((frmMain)(this.Owner)).tsslUserName.Text; try { SqlConnection conn = new SqlConnection(strconn); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; //获取配置信息 cmd.CommandText = \"selete * from 用户名where 用户名='\" + strUserName + \"'\"; conn.Open(); SqlDataReader sdr = cmd.ExecuteReader(); if (sdr.Read()) { groupCount = Convert.ToInt32(sdr[\"组别数量最大值\"]); contentCount = Convert.ToInt32(sdr[\" 联系人数量最大值\"]); } sdr.Close(); //获取联系人数 cmd.CommandText = \"select count(*) from联系人 where 用户名='\" + strUserName + \"'\"; int count = Convert.ToInt32(cmd.ExecuteScalar()); if (count >= contentCount) { MessageBox.Show(\"联系人的个数已经达到上限如需继续添加联系人,请联系管理员.\提示\MessageBoxIcon.Warning); btnOK.Enabled = false; } conn.Close(); } catch { } pic.Image =通讯录管理系统.Properties.Resources.main1; //加载组别 LoadGroup(); } protected void LoadGroup() { try { 。 13欢迎下载 精品文档 cmbGroup.Items.Clear(); SqlConnection conn = new SqlConnection(strconn); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = \"selete disinct 组别 from 联系人\"; conn.Open(); SqlDataReader sdr = cmd.ExecuteReader(); while (sdr.Read()) { cmbGroup.Items.Add(sdr[0].ToString()); } sdr.Close(); conn.Close(); if (groupCount > 0 && cmbGroup.Items.Count == groupCount) { cmbGroup.DropDownStyle = ComboBoxStyle.DropDownList; } else { cmbGroup.DropDownStyle = ComboBoxStyle.DropDown; } } catch { } } private void pic_Click(object sender, EventArgs e) { if (dlg.ShowDialog() == DialogResult.OK) { pic.Image = Image.FromFile(dlg.FileName); txtFilePath = dlg.FileName; } } private void btnOK_Click(object sender, EventArgs e) { #region 获取信息 //用户名 strUserName = ((frmMain)(this.Owner)).tsslUserName.Text; //姓名 string name; if (txtName.Text == \"\") 。 14欢迎下载 精品文档 { MessageBox.Show(\"联系人姓名不能为空\添加失败\MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else { name = txtName.Text; } string group; if (cmbGroup.Text.Trim() == \"\") { group = \"未分组\"; } else { group = cmbGroup.Text.Trim(); } //电话 string phone = txtPhone.Text.Trim(); //工作单位 string company = txtCompany.Text.Trim(); //email string email = txtEmail.Text.Trim(); //照片 byte[] b = null; if (txtFilePath != \"\") { try { FileStream fs = new FileStream(txtFilePath, FileMode.Open, FileAccess.Read); int len = Convert.ToInt32(fs.Length); b = new byte[len]; fs.Read(b, 0, len); fs.Close(); } catch { b = null; } } #endregion 获取信息 #region 添加数据 。 15欢迎下载 精品文档 try { SqlConnection conn = new SqlConnection(strconn); SqlCommand cmd_maxid = new SqlCommand(); cmd_maxid.Connection = conn; //获取最大编号 cmd_maxid.CommandText = \"selete isnull(max(编号),0)+1 from 联系人\"; conn.Open(); int maxid; try { maxid = Convert.ToInt32(cmd_maxid.ExecuteScalar()); } catch { maxid = 1; } //insert SqlCommand cmd_insert = new SqlCommand(); cmd_insert.Connection = conn; cmd_insert.CommandText = \"insert into联系人(编号,用户名,组别,姓名,工作单位,联系电话,电子邮箱,照片)values(@编号,@用户名,@组别,@姓名,@工作单位,@联系电话,@电子邮箱,@照片)\"; cmd_insert.Parameters.Add(\"@编号\ cmd_insert.Parameters.Add(\"@用户名\SqlDbType.VarChar, 50); cmd_insert.Parameters.Add(\"@组别\50); cmd_insert.Parameters.Add(\"@姓名\50); cmd_insert.Parameters.Add(\"@工作单位\SqlDbType.VarChar, 500); cmd_insert.Parameters.Add(\"@联系电话\SqlDbType.VarChar, 200); cmd_insert.Parameters.Add(\"@电子邮箱\SqlDbType.VarChar, 200); cmd_insert.Parameters.Add(\"@照片\ cmd_insert.Parameters[\"@编号\"].Value = maxid; cmd_insert.Parameters[\"@用户名\"].Value = strUserName; cmd_insert.Parameters[\"@组别\"].Value = group; cmd_insert.Parameters[\"@姓名\"].Value = name; 。 16欢迎下载 精品文档 cmd_insert.Parameters[\"@工作单位\"].Value = company; cmd_insert.Parameters[\"@联系电话\"].Value = phone; cmd_insert.Parameters[\"@电子邮箱\"].Value = email; if (txtFilePath == \"\") { cmd_insert.Parameters[\"@照片\"].Value = DBNull.Value; } else { cmd_insert.Parameters[\"@照片\"].Value = b; } cmd_insert.ExecuteNonQuery(); conn.Close(); DialogResult = DialogResult.OK; } catch (Exception ee) { MessageBox.Show(ee.Message); return; } #endregion 添加数据 } private void btnCancel_Click(object sender, EventArgs e) { DialogResult = DialogResult.Cancel; } } 五、系统测试和发布 软件支持:本软件开发是使用c#编写 设备支持:推荐配置:WindowsXP 数据库:Microsoft SQL Server 2005 五、实验总结 课程设计是培养学生综合运用所学知识 ,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.回顾起此次课程设计,至今我们仍感慨颇多,的确,从理论到实践,学到很多很多的东西。 通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知 。 17欢迎下载 精品文档 识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,我们把前面所学过的知识又重新温故了一遍。 通讯录管理系统,虽然是很简单的一个小的程序,但对我来说却是一个很大的困难。而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。所以认真仔细就是非常重要的了。当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。尽管程序不是很完善,不过还是很高兴的。无论如何是自己的劳动成果,是自己经过努力得到的成绩,同时也是学习windows的一次实践作业。 在此程序中有用到.NET中的许多知识,最基本的是增、删、改、查几个过程,此程序方便、快捷,但是还有一些不足之处,希望我自己以后慢慢研究,将此程序完善。 。 18欢迎下载 精品文档 欢迎您的下载, 资料仅供参考! 致力为企业和个人提供合同协议,策划案计划书,学习资料等等 打造全网一站式需求 。 19欢迎下载 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- howto1234.com 版权所有 湘ICP备2023017662号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务