C#通讯录管理系统总结汇报.docx
《C#通讯录管理系统总结汇报.docx》由会员分享,可在线阅读,更多相关《C#通讯录管理系统总结汇报.docx(26页珍藏版)》请在冰豆网上搜索。
C#通讯录管理系统总结汇报
C#通讯录管理系统
总结汇报
课题名称:
C#通讯录管理系统
专业:
软件技术
班级:
1111
姓名:
祝中兴
学号:
2011828136
1系统分析
1.1需求分析
本系统将实现多用户对各自通讯录的管理功能,包括:
添加联系人、修改联系人、删除联系人、查找联系人。
为了体现多用户的特性,还必须包含一个用户管理子系统,作用是对用户的信息进行管理。
具体功能模块如图1-1所示
图1-1功能模块
1.2储存过程分析
查找联系人模块使用储存过程来搜索数据,查找联系人的储存过程如下
//(教材P250)
ALTERPROCEDURE[查找联系人]
(
@namevarchar(50),
@phonevarchar(50),
@uservarchar(50)
)
AS
iflen(@user)=0return1
iflen(@name)=0andlen(@phone)=0
begin
select姓名,组别,工作单位,联系电话,电子邮箱?
from[联系人]
return
end
iflen(@name)<>0andlen(@phone)=0
begin
set@name='%'+@name+'%'
select姓名,组别,工作单位,联系电话,电子邮箱?
from[联系人]
where姓名like@name
return
end
iflen(@name)=0andlen(@phone)<>0
begin
select姓名,组别,工作单位,联系电话,电子邮箱?
from[联系人]
where联系电话like@phone
return
end
iflen(@name)=0andlen(@phone)<>0
begin
select姓名,组别,工作单位,联系电话,电子邮箱?
from[联系人]
where联系电话like@phoneand姓名like@name
return
end
Go
2系统的实现
2.1登陆界面的实现
登录窗体如图2-1
图2-1
处理流程图如图2-2示
不合法接受到用户输入不匹配
合法
匹配
2-2录窗体流程图
实现代码如下
privatevoidbtnCannel_Click(objectsender,EventArgse)
{
Application.Exit();
}
privatevoidbtnOk_Click(objectsender,EventArgse)
{
stringusername,password;
username=txtUserName.Text.Trim();
password=txtPassWord.Text.Trim();
if(username=="")
{
MessageBox.Show("用户名不能为空!
");
return;
}
if(password=="")
{
MessageBox.Show("密码不能为空!
");
return;
}
SqlConnectionconn=newSqlConnection();
conn.ConnectionString="server=.;DataBase=PhoneBook;UID=sa;PWD=;";
conn.Open();
SqlCommandcm=newSqlCommand();
cm.Connection=conn;
cm.CommandText="selectcount(*)from用户where用户名='"+username+"'and密码='"+password+"'";
intrecordC=Convert.ToInt32(cm.ExecuteScalar());
if(recordC==1)
{
this.Hide();
frmMainf=newfrmMain();
f.tsslUserName.Text=txtUserName.Text.Trim();
f.Show();
}
else
{
MessageBox.Show("用户不合法!
");
}
conn.Close();
}
2.2主窗体的实现
主窗体设计如图2-3
图2-3
主窗体处理流程图如图2-4示
等待用户命令
添加命令修改命令删除命令查找命令视图命令
2.4窗体流程图
实现代码如下
publicpartialclassfrmMain:
Form
{
publicfrmMain()
{
InitializeComponent();
}
privatestringstrConn=System.Configuration.ConfigurationManager.AppSettings["ConnectionString"];
//主窗体加载事件
privatevoidMainForm_Load(objectsender,EventArgse)
{
LoadGroup();
if(trvGroup.Nodes.Count>0)
{
trvGroup.SelectedNode=trvGroup.Nodes[0];
LoadList();
}
else
{
lvContact.Clear();
}
}
//加载分组信息到TreeView
privatevoidLoadGroup()
{
try
{
trvGroup.Nodes.Clear();
SqlConnectionconn=newSqlConnection(strConn);
SqlCommandcmd=newSqlCommand();
cmd.Connection=conn;
cmd.CommandText="selectdistinct组别from联系人where用户名='"+tsslUserName.Text+"'";
conn.Open();
SqlDataReadersdr=cmd.ExecuteReader();
while(sdr.Read())
{
trvGroup.Nodes.Add(sdr[0].ToString());
}
sdr.Close();
conn.Close();
}
catch
{}
}
//加载当前分类的联系人信息
privatevoidLoadList()
{
if(trvGroup.Nodes.Count==0)
{
lvContact.Clear();
return;
}
if(trvGroup.SelectedNode.Index>=0)
{
stringstrGroup=trvGroup.SelectedNode.Text;
try
{
lvContact.Clear();
lvContact.Columns.Add("姓名",100);
lvContact.Columns.Add("工作单位",150);
lvContact.Columns.Add("联系电话",100);
lvContact.Columns.Add("电子邮箱",150);
SqlConnectionconn=newSqlConnection(strConn);
SqlCommandcmd=newSqlCommand();
cmd.Connection=conn;
cmd.CommandText="select编号,姓名,工作单位,联系电话,电子邮箱from联系人where组别='"+strGroup+"'and用户名='"+tsslUserName.Text+"'";
conn.Open();
SqlDataReadersdr=cmd.ExecuteReader();
intcount=0;
while(sdr.Read())
{
ListViewItemlvi=newListViewItem();
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
{}
}
}
//添加方法在主窗体中的实现
privatevoidAdd()
{
frmAddf=newfrmAdd();
if(f.ShowDialog(this)==DialogResult.OK)
{
LoadGroup();
if(trvGroup.Nodes.Count>0)
{
trvGroup.SelectedNode=trvGroup.Nodes[0];
LoadList();
}
else
{
lvContact.Clear();
}
}
}
//编辑方法在主窗体的实现
privatevoidEdit()
{
if(lvContact.SelectedItems.Count==1)
{
intid=Convert.ToInt32(lvContact.SelectedItems[0].Tag);
frmEditf=newfrmEdit(id);
if(f.ShowDialog(this)==DialogResult.OK)
{
LoadGroup();
if(trvGroup.Nodes.Count>0)
{
trvGroup.SelectedNode=trvGroup.Nodes[0];
LoadList();
}
else
{
lvContact.Clear();
}
}
}
}
//删除方法在住窗体中的实现
privatevoidDelete()
{
if(lvContact.SelectedItems.Count<1)
{
return;
}
if(MessageBox.Show("是否要删除选中的联系人?
","删除确认",MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.Yes)
{
stringstrWhere="where编号in(";
foreach(ListViewItemlviinlvContact.SelectedItems)
{
strWhere+=lvi.Tag.ToString()+",";
}
strWhere=strWhere.Substring(0,strWhere.Length-1);
strWhere+=")";
try
{
SqlConnectionconn=newSqlConnection(strConn);
SqlCommandcmd=newSqlCommand();
cmd.Connection=conn;
cmd.CommandText="deletefrom联系人"+strWhere;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
LoadGroup();
if(trvGroup.Nodes.Count>0)
{
trvGroup.SelectedNode=trvGroup.Nodes[0];
LoadList();
}
else
{
lvContact.Clear();
}
}
catch{}
}
}
//搜索方法在主窗体中的实现
privatevoidSearch()
{
frmSearchf=newfrmSearch(tsslUserName.Text);
f.ShowDialog();
}
2.3新增联系人实现
新增联系人设计如图2-5
图2-5
新增联系人窗体流程图如图2-6
N
Y
N
Y
添加命令
图2-6
实现代码如下
publicpartialclassfrmAdd:
Form
{
publicfrmAdd()
{
InitializeComponent();
}
privatestringstrUserName="";
privateintgroupCount=0;
privateintcontentCount=0;
privatestringtxtFilePath="";
privatestringstrConn=System.Configuration.ConfigurationManager.AppSettings["ConnectionString"];
privatevoidfrmAdd_Load(objectsender,EventArgse)
{
//获取用户名
strUserName=((frmMain)(this.Owner)).tsslUserName.Text;
try
{
SqlConnectionconn=newSqlConnection(strConn);
SqlCommandcmd=newSqlCommand();
cmd.Connection=conn;
//获取配置信息
cmd.CommandText="select*from用户where用户名='"+strUserName+"'";
conn.Open();
SqlDataReadersdr=cmd.ExecuteReader();
if(sdr.Read())
{
groupCount=Convert.ToInt32(sdr["组别数量最大值"]);
contentCount=Convert.ToInt32(sdr["联系人数量最大值"]);
}
sdr.Close();
//获取联系人数
cmd.CommandText="selectcount(*)from联系人where用户名='"+strUserName+"'";
intcount=Convert.ToInt32(cmd.ExecuteScalar());
if(count>=contentCount)
{
MessageBox.Show("联系人的个数已经达到上限!
\r\n如需继续添加联系人,请联系管理员。
","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);
btnOK.Enabled=false;
}
conn.Close();
}
catch
{}
//加载组别
LoadGroup();
}
protectedvoidLoadGroup()
{
try
{
cmbGroup.Items.Clear();
SqlConnectionconn=newSqlConnection(strConn);
SqlCommandcmd=newSqlCommand();
cmd.Connection=conn;
cmd.CommandText="selectdistinct组别from联系人";
conn.Open();
SqlDataReadersdr=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
{}
}
protectedvoidbtnOK_Click(objectsender,EventArgse)
{
#region获取信息
//用户名
strUserName=((frmMain)(this.Owner)).tsslUserName.Text;
//姓名
stringname;
if(txtName.Text=="")
{
MessageBox.Show("联系人姓名不能为空!
","添加失败",MessageBoxButtons.OK,MessageBoxIcon.Error);
return;
}
else
{
name=txtName.Text;
}
//组别
stringgroup;
if(cmbGroup.Text.Trim()=="")
{
group="未分组";
}
else
{
group=cmbGroup.Text.Trim();
}
//电话
stringphone=txtPhone.Text.Trim();
//工作单位
stringcompany=txtCompany.Text.Trim();
//email
stringemail=txtEmail.Text.Trim();
byte[]b=null;
if(txtFilePath!
="")
{
try
{
FileStreamfs=newFileStream(txtFilePath,FileMode.Open,FileAccess.Read);
intlen=Convert.ToInt32(fs.Length);
b=newbyte[len];
fs.Read(b,0,len);
fs.Close();
}
catch
{
b=null;
}
}
#endregion获取信息
#region添加数据
try
{
SqlConnectionconn=newSqlConnection(strConn);
SqlCommandcmd_maxid=newSqlCommand();
cmd_maxid.Connection=conn;
//获取最大编号
cmd_maxid.CommandText="selectisnull(max(编号),0)+1from联系人";
conn.Open();
intmaxid;
try
{
maxid=Convert.ToInt32(cmd_maxid.ExecuteScalar());
}
catch
{
maxid=1;
}
//insert
SqlCommandcmd_insert=newSqlCommand();
cmd_insert.Connection=conn;
cmd_insert.CommandText="insertinto联系人(编号,用户名,组别,姓名,工作单位,联系电话,电子邮箱,照片)";
cmd_insert.CommandText+="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_inse