资源描述
个人通讯录系统软件工程专业课程设计报告
淮北师范大学
软件工程
题目: 个人通讯录系统
班级: 10 网络工程
日期:2013年 6 月 26 日
软件工程课程设计报告
目录
目录 2
一、软件开发过程计划 3
二、需求分析 3
二、 系统分析及设计 5
四、数据库设计 6
五、 系统实现 8
六、 软件测试 35
七、 小结 35
一、软件开发过程计划
主要负责人:冯燕艳
1、工程名称
个人通讯录系统
2、指导教师
葛方振
3、开发人员及其任务
冯燕艳(组长):软件开发过程计划、软件编码
高丽莎:软件开发系统设计
唐传广:软件编码及测试
解倩:数据库设计及开发
杨琳:软件开发需求分析
4、计划工程进度表
软件开发过程计划
两个课时
软件开发需求分析
三个课时
软件开发系统设计
三个课时
数据库设计及开发
两个课时
软件编码及测试
五个课时
确认测试
一个课时
二、需求分析
主要负责人:杨琳
1、 需求地定义
用户解决问题或达到目标所需地条件或功能;系统或系统部件要满足合同、标准,规范或其它正式规定文档所需具有地条件或权能.
2、 需求分析目标
实现本地通讯录管理系统地基本功能,可以实现电话用户地建立、联系人地存储、联系人地添加及删除、联系人分组、添加及删除等功能,以方便人们地记录和通讯.
3、 用户地特点
提供给学生通讯录地相关功能,本软件为应用型软件,用户不需要任何技术背景.
4、 运行环境
(1)硬件平台:PC台式机,笔记本电脑
(2)操作系统和版本:支持Windows系统
(3)支撑环境(例如:数据库等)和版本:Oracle数据库
(4)其它与该软件有关地软件组件:VS2008
(5)与该软件共存地应用程序:Oracle数据库
5、设计和实现上地限制
(1)必须使用Oracle数据库、VS2008软件.
(2)不可多用户同时登录.
6、用户界面
(1)界面风格简单、清晰,很容易操作;
(2)界面将出现在屏幕中央,不是当前进程是将隐藏;
(3)界面标准按钮: 显示全部、添加、查找、修改、删除、退出系统
7、错误信息显示标准
出现错误信息时将弹出对话框予以提示.
8、对功能地规定
(1)用户登录与注册:实现不同用户地注册跟登录通讯录.
(2)显示全部:实现用户对存在于数据库中地数据显示,方便用户了解数据存储情况.
(3)查找记录:实现用户在本软件数据库中查找自己需要地数据功能.
(4)添加记录:实现用户添加一条完整地记录,包括姓名、性别、生日、电话、邮箱、地址.
(5)修改记录:用户对数据库中已存在地记录进行修改,然后保存已经修改过地数据.
(6)删除记录:用户对数据库中已经存在地记录进行行删除操作.
9、对性能地规定
(1)数据精确度:输入数据应符合数据特性
(2)时间特性:一般操作相应时间在1秒内
(3)灵活性:能适应Windows操作系统
10、安全性需求
一次只能登陆一名用户,由于软件为本地软件,安全性较好,需要用户记住个人密码,每名用户都需注意跟人密码地安全性与保密性.
11、分析模型
0层数据流图
1层数据流图
2层数据流图
二、 系统分析及设计
主要负责人:高丽莎
系统功能结构图
在这个通讯录管理系统中,首先用户要能注册一个属于自己地帐号,所以在这个系统中就应该有一个注册地功能.用户完成了注册之后就要能登录这个系统,所以需要一个登录功能.登录之后用户就应该建立自己地通讯录,因此就应该要能在里面添加自己地联系人,所以就应该有一个添加功能.在使用该通讯录地时候,我们需要查找、删除、修改通讯录里面地内容,所以就应该添加查找、修改和删除地功能.然而当我们想要查看全面信息时,就需要一个能显示全部信息地功能.当你完成你想要地操作之后,就需要一个能安全退出地功能,因此就应该建立一个退出系统.所以综合以上,系统功能结构图应如下设计:
通讯录管理系统
注册
登录
显示全部
添加
查找
注册用户
修改
删除
退出系统
2、系统数据流程图
用户
注册
登录
通讯录管理系统
四、数据库设计
主要负责人:解倩
1、数据库需求分析
针对通讯录管理系统,分别对用户登录、添加通讯录和查找、删除以及修改数据进行详细地调研和分析,总结出如下地需求信息:
(1)每条原始记录要有姓名、生日、电话、邮箱、地址信息,其中姓名不能为空.
(2)保证查询到地数据与姓名相一致
(3)根据相应姓名删除对应地全部数据
2、E-R图
姓名
性别
生日
电话
邮箱
地址
用户名
密码
用户
操作
信息
3、数据表设计
数据库名称:个人通讯录系统,共有2个表:
(1)用户表(Users)
(2)通讯录联系表(Contact)
用户表
通讯录联系表
五、 系统实现
主要负责人:冯燕艳、唐传广
1、连接数据库代码
public static class DBClass
{
public static String strConn = "Data Source=jsjxy119。Initial Catalog=个人通讯录。Integrated Security=True"。//Data Source=服务器名;Initial Catalog=数据库名
public static SqlConnection conn = new SqlConnection(strConn)。
}//我将它放在登入界面Form1代码页面地末端
2、登入界面及其代码
using System。
using System.Collections.Generic。
using System.ComponentModel。
using System.Data。
using System.Drawing。
using System.Linq。
using System.Text。
using System.Windows.Forms。
using System.Data.SqlClient。
namespace 通讯录系统
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent()。
}
private void button1_Click(object sender, EventArgs e)
{
Register register = new Register()。
register.Show()。
this.Hide()。
}
private void button2_Click(object sender, EventArgs e)
{
if (textBox1.Text == "" || textBox2.Text == "")
{
MessageBox.Show("用户名和密码不能为空")。
}
else
{
DBClass.conn.Open()。
DataSet dsMydataBase = new DataSet()。
SqlCommand cmd = new SqlCommand()。
cmd.Connection = DBClass.conn。
cmd.CommandText = "select [UsersName] from [Users] where [UsersName] ='" + textBox1.Text + "'"。
cmd.ExecuteNonQuery()。
if (cmd.ExecuteScalar() == null)
{
MessageBox.Show("用户名不存在!")。
textBox1.Clear()。
textBox2.Clear()。
DBClass.conn.Close()。
return。
}
else
{
cmd.CommandText = "select [Userspwd] from [Users] where [UsersName] ='" + textBox1.Text + "'"。
cmd.ExecuteNonQuery()。
if (textBox2.Text == cmd.ExecuteScalar().ToString())
{
DBClass.conn.Close()。
MessageBox.Show(" 登录成功!")。
Home ho = new Home()。
ho.Show()。
this.Hide()。
}
else if (textBox2.Text != cmd.ExecuteScalar().ToString())
{
/*MessageBox.Show("密码错误")。
textBox1.Clear()。
textBox2.Clear()。
DBClass.conn.Close()。*/
DBClass.conn.Close()。
MessageBox.Show(" 登录成功!")。
Home ho = new Home()。
ho.Show()。
this.Hide()。
}
else
{
Application.Exit()。
}
}
}
}
private void button3_Click(object sender, EventArgs e)
{
Application.Exit()。
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
textBox2.PasswordChar = '*'。
}
}
}
3、注册界面及其代码
using System。
using System.Collections.Generic。
using System.ComponentModel。
using System.Data。
using System.Drawing。
using System.Linq。
using System.Text。
using System.Windows.Forms。
using System.Data.SqlClient。
namespace 通讯录系统
{
public partial class Register : Form
{
public Register()
{
InitializeComponent()。
}
private void button1_Click(object sender, EventArgs e)
{
try
{
if (textBox1.Text == "" || textBox2.Text == "")
{
MessageBox.Show("用户名和密码不能为空")。
}
else
{
DBClass.conn.Open()。
SqlCommand cmd = new SqlCommand()。
cmd.Connection = DBClass.conn。
cmd.CommandText = "Insert into Users(UsersName,Userspwd) Values('" + textBox1.Text + "','" + textBox2.Text + "')"。
cmd.ExecuteNonQuery()。
DBClass.conn.Close()。
MessageBox.Show("成功注册!")。
DataSet dsMyDataBase = new DataSet()。
SqlDataAdapter daBaseInform = new SqlDataAdapter("Select [UsersName] From Users", DBClass.conn)。
daBaseInform.Fill(dsMyDataBase, "BaseInform")。
dataGridView1.DataSource = dsMyDataBase.Tables["BaseInform"]。
textBox1.Clear()。
textBox2.Clear()。
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString() + "打开数据库失败!")。
DBClass.conn.Close()。
}
}
private void button2_Click(object sender, EventArgs e)
{
Form1 L = new Form1()。
L.Show()。
this.Hide()。
}
}
}
4、主界面及其代码
using System。
using System.Collections.Generic。
using System.ComponentModel。
using System.Data。
using System.Drawing。
using System.Linq。
using System.Text。
using System.Windows.Forms。
using System.Data.SqlClient。
namespace 通讯录系统
{
public partial class Home : Form
{
public Home()
{
InitializeComponent()。
}
private void button1_Click(object sender, EventArgs e)
{
try
{
DBClass.conn.Open()。
DataSet dsMyDataBase = new DataSet()。
SqlDataAdapter daBaseInform = new SqlDataAdapter("Select * from Contact", DBClass.conn)。
daBaseInform.Fill(dsMyDataBase, "BaseInform")。
dataGridView1.DataSource = dsMyDataBase.Tables["BaseInform"]。
DBClass.conn.Close()。
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString() + "打开数据库失败!")。
DBClass.conn.Close()。
}
}
private void button2_Click(object sender, EventArgs e)
{
Tianjia L = new Tianjia ()。
L.Show()。
this.Hide()。
}
private void button3_Click(object sender, EventArgs e)
{
Chazhao M = new Chazhao()。
M.Show()。
this.Hide()。
}
private void button4_Click(object sender, EventArgs e)
{
Xiugai N = new Xiugai()。
N.Show()。
this.Hide()。
}
private void button5_Click(object sender, EventArgs e)
{
Shanchu O = new Shanchu()。
O.Show()。
this.Hide()。
}
private void button6_Click(object sender, EventArgs e)
{
Application.Exit()。
}
}
}
5、添加界面及其代码
using System。
using System.Collections.Generic。
using System.ComponentModel。
using System.Data。
using System.Drawing。
using System.Linq。
using System.Text。
using System.Windows.Forms。
using System.Data.SqlClient。
namespace 通讯录系统
{
public partial class Tianjia : Form
{
public Tianjia()
{
InitializeComponent()。
}
private void button1_Click(object sender, EventArgs e)
{
try
{
DBClass.conn.Open()。
DataSet dsMyDataBase = new DataSet()。
SqlDataAdapter daBaseInform = new SqlDataAdapter("Select * from Contact", DBClass.conn)。
daBaseInform.Fill(dsMyDataBase, "BaseInform")。
dataGridView1.DataSource = dsMyDataBase.Tables["BaseInform"]。
DBClass.conn.Close()。
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString() + "打开数据库失败!")。
DBClass.conn.Close()。
}
}
private void button7_Click(object sender, EventArgs e)
{
if (textBox1.Text == "")
{
MessageBox.Show("请输入要添加地姓名!")。
textBox1.Clear()。
textBox4.Clear()。
textBox2.Clear()。
textBox3.Clear()。
textBox5.Clear()。
textBox6.Clear()。
}
else if (textBox1.Text != "")
{
DBClass.conn.Open()。
SqlCommand cmd = new SqlCommand()。
cmd.Connection = DBClass.conn。
cmd.CommandText = "Insert into Contact(姓名,性别,生日,电话,邮箱,地址) Values('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "','" + textBox6.Text + "')"。
cmd.ExecuteNonQuery()。
DBClass.conn.Close()。
MessageBox.Show("添加成功!")。
DataSet dsMyDataBase = new DataSet()。
SqlDataAdapter daBaseInform = new SqlDataAdapter("Select * From Contact", DBClass.conn)。
daBaseInform.Fill(dsMyDataBase, "BaseInform")。
dataGridView1.DataSource = dsMyDataBase.Tables["BaseInform"]。
}
}
private void button8_Click(object sender, EventArgs e)
{
this.Close()。
}
private void button9_Click(object sender, EventArgs e)
{
try
{
DBClass.conn.Open()。
DataSet dsMyDataBase = new DataSet()。
SqlDataAdapter daBaseInform = new SqlDataAdapter("Select * from Contact", DBClass.conn)。
daBaseInform.Fill(dsMyDataBase, "BaseInform")。
dataGridView1.DataSource = dsMyDataBase.Tables["BaseInform"]。
DBClass.conn.Close()。
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString() + "打开数据库失败!")。
DBClass.conn.Close()。
}
}
private void button2_Click(object sender, EventArgs e)
{
Tianjia L = new Tianjia()。
L.Show()。
this.Hide()。
}
private void button3_Click(object sender, EventArgs e)
{
Chazhao M = new Chazhao()。
M.Show()。
this.Hide()。
}
private void button4_Click(object sender, EventArgs e)
{
Xiugai N = new Xiugai()。
N.Show()。
this.Hide()。
}
private void button5_Click(object sender, EventArgs e)
{
Shanchu O = new Shanchu()。
O.Show()。
this.Hide()。
}
private void button6_Click(object sender, EventArgs e)
{
Application.Exit()。
}
}
}
6、查找界面及其代码
using System。
using System.Collections.Generic。
using System.ComponentModel。
using System.Data。
using System.Drawing。
using System.Linq。
using System.Text。
using System.Windows.Forms。
using System.Data.SqlClient。
namespace 通讯录系统
{
public partial class Chazhao : Form
{
public Chazhao()
{
InitializeComponent()。
}
private void button7_Click(object sender, EventArgs e)
{
try
{
if (textBox1.Text == "")
{
MessageBox.Show("查找地姓名不能为空!")。
}
else if (textBox1.Text != "")
{
DBClass.conn.Open()。
DataSet dsMydataBase = new DataSet()。
SqlCommand cmd = new SqlCommand()。
cmd.Connection = DBClass.conn。
cmd.CommandText = "select [姓名] from [Contact] where [姓名] ='" + textBox1.Text + "'"。
cmd.ExecuteNonQuery()。
if (cmd.ExecuteScalar() == null)
{
MessageBox.Show("用户名不存在!")。
textBox1.Clear()。
DBClass.conn.Clo
展开阅读全文