




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武 汉 工 业 学 院Web高级程序设计大 作 业 报 告专业 信息系统与信息管理 学号 090502227 姓名 吴思敏 日期 20121019 一、需求分析1引言随着网络与信息技术的发展,很多陌生人之间都有了或多或少的联系。如何更好地管理这些信息是没跟人必须面临的问题,特别是那些很久没有联系的朋友,再次见面无法马上想起关于这个人的记忆,造成一些不必要的尴尬。基于上述种种原因,开发一套通讯录管理系统很重要,我们结合这次课程设计开发以下的通讯录管理系统方案。2编写目的本系统主要是为了更好的管理每个人的通讯录,给每个人提供一个井然有序的管理平台,防止手工管理混乱,造成不必要的麻烦。 3功能需求通过对自己及朋友的通讯录的询问以及了解,一个完整的通讯录管理系统应该包括:数据集模块,登录窗体模块,系统管理模块,主窗体模块,通讯录数据管理模块,信息管理模块,登录信息查询模块。本系统主要实现我们信息的管理,包括我们平时朋友信息的添加、修改、查询和删除,及一些辅助项目的管理,如登录系统用户管理和用户组管理。二、系统框架本系统将实现多用户对各自通讯录的管理功能,包括:添加联系人、修改联系人、删除联系人、查找联系人。为了体现多用户的特性,还必须包含一个用户管理子系统,作用是对用户的信息进行管理。具体功能模块如图所示通讯录管理系统查找联系人用户管理用户登录添加联系人修改联系人用户管理用户登录添加联系人修改联系人删除联系人删除联系人登录的处理模块处理流程图如图等待用户输入 不合法 接受到用户输入 不匹配验证数据合法 合法验证身份等待用户输入 匹配主窗体处理流程图如图加载联系人分组信息分组数量加载当前分组的联系人信息 等待用户命令 添加命令 修改命令 删除命令 查找命令 视图命令修改视图模式删除联系人加载查找联系人窗体加载修改联系人窗体加载添加联系人窗体 新增联系人处理模块新增联系人窗体流程图如图获取配置信息禁用添加联系人功能联系人数量MAX N Y禁用添加分组功能分组数量MAX N Y加载分组信息等待用户命令 添加命令 添加联系人 三、模块设计登陆界面的实现 登录窗体如图 主窗体的实现主窗体设计如图新增联系人实现新增联系人设计如图四、编码实现存储过程代码查找联系人模块使用储存过程来搜索数据,查找联系人的储存过程如下ALTER PROCEDURE 查找联系人(name varchar(50),phone varchar(50),user varchar(50)ASif len(user)=0 return 1if len(name)=0 and len(phone)=0beginselect 姓名,组别,工作单位,联系电话,电子邮箱? from 联系人returnendif len(name)0 and len(phone)=0beginset name=%+name+%select姓名,组别,工作单位,联系电话,电子邮箱? from 联系人 where 姓名 like namereturnendif len(name)=0 and len(phone)0beginselect姓名,组别,工作单位,联系电话,电子邮箱? from 联系人 where 联系电话 like phonereturnendif len(name)=0 and len(phone)0beginselect姓名,组别,工作单位,联系电话,电子邮箱? from 联系人 where 联系电话 like phone and 姓名 like namereturnend登录窗体实现代码如下 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(); sql.AppendFormat(select count(*) from 用户where 用户名=杨雪 and 密码=01, txtUserName.Text.Trim(), txtPassword.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(); /主窗体加载事件 private void frmMain_Load(object sender, EventArgs e) LoadGroup(); if (trvGroup.Nodes.Count 0) trvGroup.SelectedNode = trvGroup.Nodes0; 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(sdr0.ToString(); sdr.Close(); conn.Close(); catch /加载当前分类的联系人信息 private void LoadList() if (trvGroup.Nodes.Count = 0) lvContact.Clear(); return; if (trvGroup.SelectedNode.Index = 0) string strGroup = trvGroup.SelectedNode.Text; try lvContact.Clear(); lvContact.Columns.Add(姓名, 100); lvContact.Columns.Add(工作单位, 150); lvContact.Columns.Add(联系电话, 100); lvContact.Columns.Add(电子邮箱, 150); 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 /详细信息在工具栏上的事件 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.Count0) trvGroup.SelectedNode=trvGroup.Nodes0; LoadList(); else lvContact.Clear(); /编辑方法在主窗体的实现 private void Edit() if(lvContact.SelectedItems.Count=1) string id=lvContact.SelectedItems0.Text.ToString(); frmEdit f=new frmEdit(id); if(f.ShowDialog(this)=DialogResult.OK) LoadGroup(); if(trvGroup.Nodes.Count0) trvGroup.SelectedNode=trvGroup.Nodes0; LoadList(); else lvContact.Clear(); /删除方法在住窗体中的实现 private void Delete() if(lvContact.SelectedItems.Count0) trvGroup.SelectedNode=trvGroup.Nodes0; LoadList(); else lvContact.Clear(); catch /搜索方法在主窗体中的实现 private void Search() frmSearch f = new frmSearch(); if (f.ShowDialog() = DialogResult.OK) LoadGroup(); if (trvGroup.Nodes.Count 0) trvGroup.SelectedNode = trvGroup.Nodes0; 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) 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(联系人的个数已经达到上限如需继续添加联系人,请联系管理员., 提示, MessageBoxButtons.OK, MessageBoxIcon.Warning); btnOK.Enabled = false; conn.Close(); catch pic.Image =通讯录管理系统.Properties.Resources.main1; /加载组别 LoadGroup(); protected void LoadGroup() try 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(sdr0.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 = ) 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 bytelen; fs.Read(b, 0, len); fs.Close(); catch b = null; #endregion 获取信息 #region 添加数据 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(编号, SqlDbType.Int); cmd_insert.Parameters.Add(用户名, SqlDbType.VarChar, 50); cmd_insert.Parameters.Add(组别, SqlDbType.VarChar, 50); cmd_insert.Parameters.Add(姓名, SqlDbType.VarChar, 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(照片, SqlDbType.Image); cmd_insert.Parameters编号.Value = maxid; cmd_insert.Parameters用户名.Value = strUserName; cmd_insert.Parameters组别.Value = group; cmd_insert.Parameters姓名.Value = name; cmd_insert.Parameters工作单位.Value = company; cmd_insert.Parameters联系电话.Value = phone; cmd_insert.Parameters电子邮箱.Value = email; if (txt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年山东省畜牧兽医局下属事业单位真题
- 2024年三亚市公立医院招聘专业技术人员真题
- 2024年辽宁省农业农村厅下属事业单位真题
- 边际效应理论在经济中的应用试题及答案
- 2024年天津市儿童医院招聘笔试真题
- 2024年绥化市招聘公益性岗位笔试真题
- 2024年数盾奇安科技公司郑州招聘笔试真题
- 2024年甘肃省畜牧兽医局下属事业单位真题
- 2024年昆明市红云医院招聘笔试真题
- 2024年吉安市吉安县大数据中心招聘笔试真题
- 2025至2030全球及中国黑磷行业销售模式与发展前景趋势研究报告
- 2025河南省水利第一工程局集团有限公司招聘49人笔试参考题库附带答案详解
- 2024年四川巴中事业单位招聘考试真题答案解析
- 2025年北京大兴区中考一模数学试卷及答案详解(精校打印)
- 2025年甘肃省武威第二十中学生物七年级下册新人教版期中模拟练习题(含答案)
- 仓库7s管理制度培训
- 2025-2030中国斯特林制冷机行业市场发展趋势与前景展望战略研究报告
- 制造业产品全生命周期管理流程
- 冷库安全培训
- 2024-2025北师版七下数学-第五章 图形的轴对称-章末复习【课件】
- 物业管理答辩5分钟
评论
0/150
提交评论