信息与电气工程学院
课程设计说明书
(2013/2014学年第一学期)
课程名称 : 软件程序设计 题 目 : 通 讯 录 专业班级 : 电子信息1103 学生姓名 : 学 号: 指导教师 :
设计周数 : 2周
设计成绩 :
2013年1月8日
一、课程设计目的
随着人们的人际关系越来越广泛,想要记住他们的联系方式是一大难题,所以通讯录能够方便的给我们带来所需要的相关信息。然而像以前的记事本,电话薄已经无法满足我们的需求。现在计算机越来月普及,所以一个通讯录管理系统很好的满足了用户的需求。直接可以通过电脑的通讯录来查询联系人信息,可以脱离那繁琐的记事本。通讯录管理系统能给用户带来很大的方便。
通讯录管理系统是一个用户用来存储联系方式的管理系统,它方便了用户对联系人的个人信息的储存和快速查阅的功能,大大减少了查找过程的时间。
二、课程设计正文 2.1 设计题目
通讯录管理系统
2.2 设计思路
通讯录管理系统功能需求分析:
1、通讯录管理系统主要功能分为七个模块:用户登录、密码修改、显示全部、用户查询、添加记录、修改记录、删除记录。
2、用户登录与密码修改:实现用户登录通讯录后可以修改密码已实现信息的安全性。
3、显示全部:实现用户对所有在数据库中的数据的显示,方便用户了解数据存储的情况。
4、添加联系人:实现用户添加一条完整的记录,包括姓名、生日、电话、QQ、地址。
5、查找联系人:支持模糊查找和精确查找,实现用户在本软件数据库中查找自己需要的数据功能。
6、修改信息:用户对数据库中已存在的记录进行修改,然后保存已经修改过的数据
7、删除信息:用户对数据库中已经存在的记录进行行删除操作,然后保存修改过的数据
2.3运行界面需求
界面应简洁,使用者易操作
2.4开发及运行环境
本系统开发平台及运行环境如下:
系统开发平台:Microsoft Visual Studio 2010 系统开发语言:C#
运行环境:Microsoft.NET Framework SDK v2.0
三、模块分析及设计 3.1系统数据结构图如图1
图1
3.2系统功能结构图如图2
图2
3.3、系统数据流程图
登录窗口流程图
修改密码流程图
添加信息流程图
修改与删除的流程图
四、数据库设计 4.1数据库需求分析
针对通讯录管理系统,分别对用户登录、添加通讯录和查找、删除以及修改数据进行详细的调研和分析,总结出如下的需求信息:
1. 每条原始记录要有姓名、生日、电话、QQ、地址,其中姓名不能为空。 2. 保证查询到的数据与姓名相一致 3. 根据相应姓名删除对应的全部数据
4.2 数据表设计
数据库名称:xlw,共有2个表: 1、用户表(UserName)2、通讯录信息表(information)
4.2.1用户登录信息表
4.2.2通讯录信息表
五、制作过程及要点 5.1、登录窗口界面如图
主要代码实现如下:
namespace xlw {
public partial class Form1 : Form {
public Form1() {
InitializeComponent(); }
public static string UserName = null;
private void button2_Click(object sender, EventArgs e) {
string connString = @"Data
Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\xlw.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
SqlConnection conn = new SqlConnection(connString); conn.Open();
string sql = "select*from 登录表 where UserName='" +
txtUsername.Text.Trim().ToLower() + "'and UserPwd='" + txtPassword.Text.Trim() + "'"; SqlCommand cmd = new SqlCommand(sql, conn); SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) {
UserName = dr["UserName"].ToString(); FrmMain1 frm = new FrmMain1(); frm.Show(); this.Hide(); } else {
MessageBox.Show("用户名或密码错误", "出错了", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void txtUsername_TextChanged(object sender, EventArgs e) { }
private void button1_Click(object sender, EventArgs e) {
Form1 frm = new Form1 (); frm.Show(); this.Hide(); }
private void txtUsername_MouseHover(object sender, EventArgs e) {
txtUsername.Focus(); }
private void txtPassword_MouseHover(object sender, EventArgs e) {
txtPassword.Focus(); }
private void txtUsername_KeyPress(object sender, KeyPressEventArgs e) {
if (e.KeyChar == (char)13) {
txtPassword.Focus(); } }
private void Form1_Load(object sender, EventArgs e) {
button1.Image = imageList1.Images[0]; button2.Image = imageList1.Images[1]; }}}
5.2系统主界面设计
5.2.1主界面运行截图如下:
5.2.2通讯录“修改密码”界面截图如下:
主要代码如下:
namespace xlw {
public partial class Form2 : Form {
public Form2() {
InitializeComponent(); }
private void Form2_Load(object sender, EventArgs e)
{
button1.Image = imageList1.Images[0]; button2.Image = imageList1.Images[1];
}
private void button1_Click(object sender, EventArgs e) {
if (txtNewpwd.Text.Trim() == txtNewpwdagain.Text.Trim()) {
string connString = @"Data
Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\xlw.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
SqlConnection conn = new SqlConnection(connString); conn.Open();
string sqlCheckPwd = "select count(*)from 登录表where
UserName='"+Form1.UserName +"'and UserPwd='" + txtOldpwd .Text .Trim () + "'"; SqlCommand cmdCheckPwd = new SqlCommand(sqlCheckPwd, conn); int j = (int)cmdCheckPwd.ExecuteScalar(); if (j == 1) {
string sql = "update 登录表set UserPwd='" + txtNewpwd.Text.Trim() + "'where UserName='" + Form1.UserName + "'";
SqlCommand cmd =new SqlCommand(sql, conn); int i = cmd.ExecuteNonQuery(); if (i == 1) {
MessageBox.Show("密码修改成功!"); } else {
MessageBox.Show("密码修改失败!");
} } else
{ MessageBox.Show("输入的旧密码不正确!"); }
conn.Close(); } else
{ MessageBox.Show("两次新密码不一致!"); } }
private void button2_Click(object sender, EventArgs e) {
txtOldpwd.Text = ""; txtNewpwd.Text = ""; txtNewpwdagain .Text = ""; } } }
5.2.3、用户添加模块
用户进入通讯录系统主界面,点击添加,进行通讯录的添加操作,填写相应的内容。
相关运行界面如下:
相关代码如下
namespace xlw {
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string connString = @"Data
Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\xlw.mdf;Integrated
Security=True;Connect Timeout=30;User Instance=True";
SqlConnection conn = new SqlConnection(connString);
conn.Open();
if (txtName.Text.Trim().Length != 0)
{
string sql = "insert into
information(UserName,UserBirthday,UserTelphone,UserNumber,UserAddress,PictureBox) Values('" + txtName.Text.Trim() + "','" + txtBirthday.Text + "','" + txtTelphone.Text + "','" + txtNumber.Text + "','" + txtAddress.Text + "','" + textBox1.Text.Trim() + "')";
SqlCommand cmd = new SqlCommand(sql, conn);
int j = cmd.ExecuteNonQuery();
if (j == 1)
{
MessageBox.Show("添加成功");
}
else
{
MessageBox.Show("添加失败");
}
}
else
{
MessageBox.Show("姓名不能为空!");
}
this.Hide();
conn.Close();
}
private void pictureBox1_Click(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
FrmMain1 frm = new FrmMain1 ();
this.Hide();
}
//public string photoadress = @"c:\001.jpg";
private void button3_Click(object sender, EventArgs e)
{
using (OpenFileDialog lvse = new OpenFileDialog())
{
lvse.Title = "选择图片"; lvse.InitialDirectory = "";
lvse.Filter = "图片文件|*.bmp;*.jpg;*.jpeg;*.gif;*.png"; lvse.FilterIndex = 1; if (lvse.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = Image.FromFile(lvse.FileName);
textBox1.Text = lvse.FileName;
}
}
}
private void Form3_Load(object sender, EventArgs e)
{
}
private void txtName_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)13)
{
txtBirthday.Focus();
}
}
private void txtBirthday_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)13)
{
txtTelphone.Focus();
}
}
private void txtTelphone_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)13)
{
txtNumber.Focus();
}
}
private void txtNumber_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)13)
{
txtAddress.Focus();
}
}
private void button4_Click(object sender, EventArgs e)
{
FrmMain1 frm = new FrmMain1();
frm.Show();
this.Close();
}
5.2.4显示全部模块
用户进入编辑界面之后,点击显示全部按钮,则系统将数据库中数存储的所有联系人的记录显示到dataGridView1界面中,按照一定的规格排列。其中各项中的数据则严格按照数据库中的要求排列显示。
显示全部功能截图如下:
实现的代码如下
private void button4_Click(object sender, EventArgs e)
{
string ConnString = @"Data
Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\xlw.mdf;Integrated
Security=True;Connect Timeout=30;User Instance=True";
SqlConnection conn = new SqlConnection(ConnString);
conn.Open();
string sql = "select UserName as 姓名,UserBirthday as 生日,UserTelphone as 电话,UserNumber as QQ,UserAddress as 地址,PictureBox from information ";
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
SqlCommand cmd = new SqlCommand(sql, conn);
DataSet ds = new DataSet();
da.Fill(ds);
this.dataGridView1.DataSource = ds.Tables[0].DefaultView;
}
5.2.5 修改界面模块
截图如下:
实现的代码如下:
private void button1_Click(object sender, EventArgs e)
{
SqlCommandBuilder cb = new SqlCommandBuilder(da);
da.Update(ds);
MessageBox.Show("修改成功!");
}
5.2.6删除界面模块
删除前后比较截图如下:
删除前 删除后
实现删除功能的代码如下:
private void button2_Click(object sender, EventArgs e)
{
DialogResult dlResult = MessageBox.Show(this, "要删除这些信息吗?", "请确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dlResult == DialogResult.Yes)
{
int j = dataGridView1.SelectedRows.Count;
int[] l = new int[j];
int i;
for (i = 0; i
{
l[i] = dataGridView1.SelectedRows[i].Index;
}
int k = 0;
while (k
{
ds.Tables[0].Rows[l[k]].Delete();
k++;
}
SqlCommandBuilder cb = new SqlCommandBuilder(da);
da.Update(ds);
}
}
5.2.7查询界面模块
查询的截图如下:
实现查询功能的代码如下:
private void button3_Click(object sender, EventArgs e)
{
string ConnString = @"Data
Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\xlw.mdf;Integrated
Security=True;Connect Timeout=30;User Instance=True";
SqlConnection conn = new SqlConnection(ConnString);
conn.Open();
string sql = "select UserName as 姓名,UserBirthday as 生日,UserTelphone as 电话,UserNumber as QQ,UserAddress as 地址,PictureBox from information where UserName like '" +
textBox1.Text.Trim() + "%'";
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
SqlCommand cmd = new SqlCommand(sql, conn);
DataSet ds = new DataSet();
da.Fill(ds);
this.dataGridView1.DataSource = ds.Tables[0].DefaultView;
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{ if (dr["PictureBox"].ToString().Trim() == "")
{ this.pictureBox1.Visible = false; }
else
{
this.pictureBox1.Visible = true;
string a = dr["PictureBox"].ToString();
this.pictureBox1.Image = Image.FromFile(a);
}
}
}
六、设计总结
通过这次的课程设计,让我好好的检查了一下自己的c#知识和数据库知识,发现了自己有很大的不足,自己的c#知识学的不够扎实,还有之前学的数据库知识也都忘得差不多了,所以这个课程设计做的时候有点吃力,到处碰壁,通过老师的视频演示和同学的帮助下,克服了一个个难题。在操作过程中也遇到了很大的问题,一个可以改个属性就能实现的问题,我却不知道该如何下手,由此可见自己的动手能力是何等的差,不过经过这两周的课程设计,自己的动手能力有了明显的提高,比以前的操作熟练了好多,在调试出错时能很快的发现了自己在哪里出错,让我在这次课程设计中复习了c#的知识,又回顾的数据库相关的知识,使我对VS程序设计有了更深层次的认识和理解,懂得了VS窗体应用程序基本设计流程
这次课程设计老师给我们分了小组,在我这个小组里,我们很好的体现了团结的精神,在一个人遇到难题无法解决的时候,大家都会伸出援助之手,帮助一起解决问题,这样既能帮助别人,自己也能掌握解决这个问题的方法,可谓是两全齐美。
最后,在此由衷的向我的指导老师们表示衷心的感谢,是他们的悉心指导和严格要求,才使我的课程设计有了较为完善的一面,才有了我能力的提高,得到了充分的锻炼。
最后,在此由衷的向我的指导老师们表示衷心的感谢,是他们的悉心指导和严格要求,才使我的课程设计有了较为完善的一面,才有了我能力的提高,得到了充分的锻炼。
七、参考文献
[1] 沃森,内格尔,齐立波,黄静.c#入门经典[5].清华大学出版社,2012,12.
[2] 米凯利斯(Mark Michaelis),周靖.c#本质论[3].人民邮电出版社,2010,09.
[3] 马俊.c#程序设计及应用教程[3]. 人民邮电出版社,2009,05.
信息与电气工程学院
课程设计说明书
(2013/2014学年第一学期)
课程名称 : 软件程序设计 题 目 : 通 讯 录 专业班级 : 电子信息1103 学生姓名 : 学 号: 指导教师 :
设计周数 : 2周
设计成绩 :
2013年1月8日
一、课程设计目的
随着人们的人际关系越来越广泛,想要记住他们的联系方式是一大难题,所以通讯录能够方便的给我们带来所需要的相关信息。然而像以前的记事本,电话薄已经无法满足我们的需求。现在计算机越来月普及,所以一个通讯录管理系统很好的满足了用户的需求。直接可以通过电脑的通讯录来查询联系人信息,可以脱离那繁琐的记事本。通讯录管理系统能给用户带来很大的方便。
通讯录管理系统是一个用户用来存储联系方式的管理系统,它方便了用户对联系人的个人信息的储存和快速查阅的功能,大大减少了查找过程的时间。
二、课程设计正文 2.1 设计题目
通讯录管理系统
2.2 设计思路
通讯录管理系统功能需求分析:
1、通讯录管理系统主要功能分为七个模块:用户登录、密码修改、显示全部、用户查询、添加记录、修改记录、删除记录。
2、用户登录与密码修改:实现用户登录通讯录后可以修改密码已实现信息的安全性。
3、显示全部:实现用户对所有在数据库中的数据的显示,方便用户了解数据存储的情况。
4、添加联系人:实现用户添加一条完整的记录,包括姓名、生日、电话、QQ、地址。
5、查找联系人:支持模糊查找和精确查找,实现用户在本软件数据库中查找自己需要的数据功能。
6、修改信息:用户对数据库中已存在的记录进行修改,然后保存已经修改过的数据
7、删除信息:用户对数据库中已经存在的记录进行行删除操作,然后保存修改过的数据
2.3运行界面需求
界面应简洁,使用者易操作
2.4开发及运行环境
本系统开发平台及运行环境如下:
系统开发平台:Microsoft Visual Studio 2010 系统开发语言:C#
运行环境:Microsoft.NET Framework SDK v2.0
三、模块分析及设计 3.1系统数据结构图如图1
图1
3.2系统功能结构图如图2
图2
3.3、系统数据流程图
登录窗口流程图
修改密码流程图
添加信息流程图
修改与删除的流程图
四、数据库设计 4.1数据库需求分析
针对通讯录管理系统,分别对用户登录、添加通讯录和查找、删除以及修改数据进行详细的调研和分析,总结出如下的需求信息:
1. 每条原始记录要有姓名、生日、电话、QQ、地址,其中姓名不能为空。 2. 保证查询到的数据与姓名相一致 3. 根据相应姓名删除对应的全部数据
4.2 数据表设计
数据库名称:xlw,共有2个表: 1、用户表(UserName)2、通讯录信息表(information)
4.2.1用户登录信息表
4.2.2通讯录信息表
五、制作过程及要点 5.1、登录窗口界面如图
主要代码实现如下:
namespace xlw {
public partial class Form1 : Form {
public Form1() {
InitializeComponent(); }
public static string UserName = null;
private void button2_Click(object sender, EventArgs e) {
string connString = @"Data
Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\xlw.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
SqlConnection conn = new SqlConnection(connString); conn.Open();
string sql = "select*from 登录表 where UserName='" +
txtUsername.Text.Trim().ToLower() + "'and UserPwd='" + txtPassword.Text.Trim() + "'"; SqlCommand cmd = new SqlCommand(sql, conn); SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) {
UserName = dr["UserName"].ToString(); FrmMain1 frm = new FrmMain1(); frm.Show(); this.Hide(); } else {
MessageBox.Show("用户名或密码错误", "出错了", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void txtUsername_TextChanged(object sender, EventArgs e) { }
private void button1_Click(object sender, EventArgs e) {
Form1 frm = new Form1 (); frm.Show(); this.Hide(); }
private void txtUsername_MouseHover(object sender, EventArgs e) {
txtUsername.Focus(); }
private void txtPassword_MouseHover(object sender, EventArgs e) {
txtPassword.Focus(); }
private void txtUsername_KeyPress(object sender, KeyPressEventArgs e) {
if (e.KeyChar == (char)13) {
txtPassword.Focus(); } }
private void Form1_Load(object sender, EventArgs e) {
button1.Image = imageList1.Images[0]; button2.Image = imageList1.Images[1]; }}}
5.2系统主界面设计
5.2.1主界面运行截图如下:
5.2.2通讯录“修改密码”界面截图如下:
主要代码如下:
namespace xlw {
public partial class Form2 : Form {
public Form2() {
InitializeComponent(); }
private void Form2_Load(object sender, EventArgs e)
{
button1.Image = imageList1.Images[0]; button2.Image = imageList1.Images[1];
}
private void button1_Click(object sender, EventArgs e) {
if (txtNewpwd.Text.Trim() == txtNewpwdagain.Text.Trim()) {
string connString = @"Data
Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\xlw.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
SqlConnection conn = new SqlConnection(connString); conn.Open();
string sqlCheckPwd = "select count(*)from 登录表where
UserName='"+Form1.UserName +"'and UserPwd='" + txtOldpwd .Text .Trim () + "'"; SqlCommand cmdCheckPwd = new SqlCommand(sqlCheckPwd, conn); int j = (int)cmdCheckPwd.ExecuteScalar(); if (j == 1) {
string sql = "update 登录表set UserPwd='" + txtNewpwd.Text.Trim() + "'where UserName='" + Form1.UserName + "'";
SqlCommand cmd =new SqlCommand(sql, conn); int i = cmd.ExecuteNonQuery(); if (i == 1) {
MessageBox.Show("密码修改成功!"); } else {
MessageBox.Show("密码修改失败!");
} } else
{ MessageBox.Show("输入的旧密码不正确!"); }
conn.Close(); } else
{ MessageBox.Show("两次新密码不一致!"); } }
private void button2_Click(object sender, EventArgs e) {
txtOldpwd.Text = ""; txtNewpwd.Text = ""; txtNewpwdagain .Text = ""; } } }
5.2.3、用户添加模块
用户进入通讯录系统主界面,点击添加,进行通讯录的添加操作,填写相应的内容。
相关运行界面如下:
相关代码如下
namespace xlw {
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string connString = @"Data
Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\xlw.mdf;Integrated
Security=True;Connect Timeout=30;User Instance=True";
SqlConnection conn = new SqlConnection(connString);
conn.Open();
if (txtName.Text.Trim().Length != 0)
{
string sql = "insert into
information(UserName,UserBirthday,UserTelphone,UserNumber,UserAddress,PictureBox) Values('" + txtName.Text.Trim() + "','" + txtBirthday.Text + "','" + txtTelphone.Text + "','" + txtNumber.Text + "','" + txtAddress.Text + "','" + textBox1.Text.Trim() + "')";
SqlCommand cmd = new SqlCommand(sql, conn);
int j = cmd.ExecuteNonQuery();
if (j == 1)
{
MessageBox.Show("添加成功");
}
else
{
MessageBox.Show("添加失败");
}
}
else
{
MessageBox.Show("姓名不能为空!");
}
this.Hide();
conn.Close();
}
private void pictureBox1_Click(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
FrmMain1 frm = new FrmMain1 ();
this.Hide();
}
//public string photoadress = @"c:\001.jpg";
private void button3_Click(object sender, EventArgs e)
{
using (OpenFileDialog lvse = new OpenFileDialog())
{
lvse.Title = "选择图片"; lvse.InitialDirectory = "";
lvse.Filter = "图片文件|*.bmp;*.jpg;*.jpeg;*.gif;*.png"; lvse.FilterIndex = 1; if (lvse.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = Image.FromFile(lvse.FileName);
textBox1.Text = lvse.FileName;
}
}
}
private void Form3_Load(object sender, EventArgs e)
{
}
private void txtName_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)13)
{
txtBirthday.Focus();
}
}
private void txtBirthday_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)13)
{
txtTelphone.Focus();
}
}
private void txtTelphone_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)13)
{
txtNumber.Focus();
}
}
private void txtNumber_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)13)
{
txtAddress.Focus();
}
}
private void button4_Click(object sender, EventArgs e)
{
FrmMain1 frm = new FrmMain1();
frm.Show();
this.Close();
}
5.2.4显示全部模块
用户进入编辑界面之后,点击显示全部按钮,则系统将数据库中数存储的所有联系人的记录显示到dataGridView1界面中,按照一定的规格排列。其中各项中的数据则严格按照数据库中的要求排列显示。
显示全部功能截图如下:
实现的代码如下
private void button4_Click(object sender, EventArgs e)
{
string ConnString = @"Data
Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\xlw.mdf;Integrated
Security=True;Connect Timeout=30;User Instance=True";
SqlConnection conn = new SqlConnection(ConnString);
conn.Open();
string sql = "select UserName as 姓名,UserBirthday as 生日,UserTelphone as 电话,UserNumber as QQ,UserAddress as 地址,PictureBox from information ";
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
SqlCommand cmd = new SqlCommand(sql, conn);
DataSet ds = new DataSet();
da.Fill(ds);
this.dataGridView1.DataSource = ds.Tables[0].DefaultView;
}
5.2.5 修改界面模块
截图如下:
实现的代码如下:
private void button1_Click(object sender, EventArgs e)
{
SqlCommandBuilder cb = new SqlCommandBuilder(da);
da.Update(ds);
MessageBox.Show("修改成功!");
}
5.2.6删除界面模块
删除前后比较截图如下:
删除前 删除后
实现删除功能的代码如下:
private void button2_Click(object sender, EventArgs e)
{
DialogResult dlResult = MessageBox.Show(this, "要删除这些信息吗?", "请确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dlResult == DialogResult.Yes)
{
int j = dataGridView1.SelectedRows.Count;
int[] l = new int[j];
int i;
for (i = 0; i
{
l[i] = dataGridView1.SelectedRows[i].Index;
}
int k = 0;
while (k
{
ds.Tables[0].Rows[l[k]].Delete();
k++;
}
SqlCommandBuilder cb = new SqlCommandBuilder(da);
da.Update(ds);
}
}
5.2.7查询界面模块
查询的截图如下:
实现查询功能的代码如下:
private void button3_Click(object sender, EventArgs e)
{
string ConnString = @"Data
Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\xlw.mdf;Integrated
Security=True;Connect Timeout=30;User Instance=True";
SqlConnection conn = new SqlConnection(ConnString);
conn.Open();
string sql = "select UserName as 姓名,UserBirthday as 生日,UserTelphone as 电话,UserNumber as QQ,UserAddress as 地址,PictureBox from information where UserName like '" +
textBox1.Text.Trim() + "%'";
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
SqlCommand cmd = new SqlCommand(sql, conn);
DataSet ds = new DataSet();
da.Fill(ds);
this.dataGridView1.DataSource = ds.Tables[0].DefaultView;
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{ if (dr["PictureBox"].ToString().Trim() == "")
{ this.pictureBox1.Visible = false; }
else
{
this.pictureBox1.Visible = true;
string a = dr["PictureBox"].ToString();
this.pictureBox1.Image = Image.FromFile(a);
}
}
}
六、设计总结
通过这次的课程设计,让我好好的检查了一下自己的c#知识和数据库知识,发现了自己有很大的不足,自己的c#知识学的不够扎实,还有之前学的数据库知识也都忘得差不多了,所以这个课程设计做的时候有点吃力,到处碰壁,通过老师的视频演示和同学的帮助下,克服了一个个难题。在操作过程中也遇到了很大的问题,一个可以改个属性就能实现的问题,我却不知道该如何下手,由此可见自己的动手能力是何等的差,不过经过这两周的课程设计,自己的动手能力有了明显的提高,比以前的操作熟练了好多,在调试出错时能很快的发现了自己在哪里出错,让我在这次课程设计中复习了c#的知识,又回顾的数据库相关的知识,使我对VS程序设计有了更深层次的认识和理解,懂得了VS窗体应用程序基本设计流程
这次课程设计老师给我们分了小组,在我这个小组里,我们很好的体现了团结的精神,在一个人遇到难题无法解决的时候,大家都会伸出援助之手,帮助一起解决问题,这样既能帮助别人,自己也能掌握解决这个问题的方法,可谓是两全齐美。
最后,在此由衷的向我的指导老师们表示衷心的感谢,是他们的悉心指导和严格要求,才使我的课程设计有了较为完善的一面,才有了我能力的提高,得到了充分的锻炼。
最后,在此由衷的向我的指导老师们表示衷心的感谢,是他们的悉心指导和严格要求,才使我的课程设计有了较为完善的一面,才有了我能力的提高,得到了充分的锻炼。
七、参考文献
[1] 沃森,内格尔,齐立波,黄静.c#入门经典[5].清华大学出版社,2012,12.
[2] 米凯利斯(Mark Michaelis),周靖.c#本质论[3].人民邮电出版社,2010,09.
[3] 马俊.c#程序设计及应用教程[3]. 人民邮电出版社,2009,05.