您好,登录后才能下订单哦!
在现代社会中,通讯录系统已经成为我们日常生活中不可或缺的一部分。无论是个人还是企业,都需要一个高效、便捷的通讯录管理系统来存储和管理联系人信息。本文将详细介绍如何使用C#编程语言和Windows Forms技术实现一个窗体通讯录系统。通过本文的学习,读者将掌握如何从零开始构建一个功能完善的通讯录系统,包括需求分析、系统设计、数据库设计、界面设计、功能实现以及测试与调试等环节。
在开始开发之前,首先需要明确系统的需求。一个基本的通讯录系统通常需要具备以下功能:
此外,系统还应具备良好的用户界面,操作简单直观,数据存储安全可靠。
本系统采用典型的三层架构,分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。这种架构有助于提高代码的可维护性和可扩展性。
通讯录系统的核心是联系人信息的存储。我们使用SQL Server作为数据库管理系统,设计一个简单的联系人表(Contacts)来存储联系人信息。表结构如下:
列名 | 数据类型 | 说明 |
---|---|---|
ContactID | int | 联系人ID(主键) |
Name | nvarchar(50) | 联系人姓名 |
Phone | nvarchar(20) | 联系人电话 |
nvarchar(50) | 联系人电子邮件 | |
Address | nvarchar(100) | 联系人地址 |
系统的用户界面应简洁明了,易于操作。我们设计一个主窗体,包含以下主要控件:
首先,打开Visual Studio 2022,创建一个新的Windows Forms应用程序项目,命名为“ContactManagementSystem”。
在项目中添加一个App.config
文件,配置数据库连接字符串:
<configuration>
<connectionStrings>
<add name="ContactDB" connectionString="Data Source=.;Initial Catalog=ContactDB;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
创建一个Contact
类,用于表示联系人信息:
public class Contact
{
public int ContactID { get; set; }
public string Name { get; set; }
public string Phone { get; set; }
public string Email { get; set; }
public string Address { get; set; }
}
创建一个ContactDAL
类,用于处理与数据库的交互:
public class ContactDAL
{
private string connectionString = ConfigurationManager.ConnectionStrings["ContactDB"].ConnectionString;
public List<Contact> GetContacts()
{
List<Contact> contacts = new List<Contact>();
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT * FROM Contacts", conn);
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
contacts.Add(new Contact
{
ContactID = (int)reader["ContactID"],
Name = reader["Name"].ToString(),
Phone = reader["Phone"].ToString(),
Email = reader["Email"].ToString(),
Address = reader["Address"].ToString()
});
}
}
return contacts;
}
public void AddContact(Contact contact)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
SqlCommand cmd = new SqlCommand("INSERT INTO Contacts (Name, Phone, Email, Address) VALUES (@Name, @Phone, @Email, @Address)", conn);
cmd.Parameters.AddWithValue("@Name", contact.Name);
cmd.Parameters.AddWithValue("@Phone", contact.Phone);
cmd.Parameters.AddWithValue("@Email", contact.Email);
cmd.Parameters.AddWithValue("@Address", contact.Address);
cmd.ExecuteNonQuery();
}
}
public void UpdateContact(Contact contact)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
SqlCommand cmd = new SqlCommand("UPDATE Contacts SET Name = @Name, Phone = @Phone, Email = @Email, Address = @Address WHERE ContactID = @ContactID", conn);
cmd.Parameters.AddWithValue("@Name", contact.Name);
cmd.Parameters.AddWithValue("@Phone", contact.Phone);
cmd.Parameters.AddWithValue("@Email", contact.Email);
cmd.Parameters.AddWithValue("@Address", contact.Address);
cmd.Parameters.AddWithValue("@ContactID", contact.ContactID);
cmd.ExecuteNonQuery();
}
}
public void DeleteContact(int contactID)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
SqlCommand cmd = new SqlCommand("DELETE FROM Contacts WHERE ContactID = @ContactID", conn);
cmd.Parameters.AddWithValue("@ContactID", contactID);
cmd.ExecuteNonQuery();
}
}
}
创建一个ContactBLL
类,用于处理业务逻辑:
public class ContactBLL
{
private ContactDAL contactDAL = new ContactDAL();
public List<Contact> GetContacts()
{
return contactDAL.GetContacts();
}
public void AddContact(Contact contact)
{
if (string.IsNullOrEmpty(contact.Name))
{
throw new ArgumentException("Name cannot be empty");
}
contactDAL.AddContact(contact);
}
public void UpdateContact(Contact contact)
{
if (string.IsNullOrEmpty(contact.Name))
{
throw new ArgumentException("Name cannot be empty");
}
contactDAL.UpdateContact(contact);
}
public void DeleteContact(int contactID)
{
contactDAL.DeleteContact(contactID);
}
}
在主窗体中,添加一个DataGridView
控件用于显示联系人列表,以及多个TextBox
和Button
控件用于输入和执行操作。
public partial class MainForm : Form
{
private ContactBLL contactBLL = new ContactBLL();
public MainForm()
{
InitializeComponent();
LoadContacts();
}
private void LoadContacts()
{
dataGridView1.DataSource = contactBLL.GetContacts();
}
private void btnAdd_Click(object sender, EventArgs e)
{
Contact contact = new Contact
{
Name = txtName.Text,
Phone = txtPhone.Text,
Email = txtEmail.Text,
Address = txtAddress.Text
};
contactBLL.AddContact(contact);
LoadContacts();
}
private void btnUpdate_Click(object sender, EventArgs e)
{
if (dataGridView1.SelectedRows.Count > 0)
{
Contact contact = new Contact
{
ContactID = (int)dataGridView1.SelectedRows[0].Cells["ContactID"].Value,
Name = txtName.Text,
Phone = txtPhone.Text,
Email = txtEmail.Text,
Address = txtAddress.Text
};
contactBLL.UpdateContact(contact);
LoadContacts();
}
}
private void btnDelete_Click(object sender, EventArgs e)
{
if (dataGridView1.SelectedRows.Count > 0)
{
int contactID = (int)dataGridView1.SelectedRows[0].Cells["ContactID"].Value;
contactBLL.DeleteContact(contactID);
LoadContacts();
}
}
private void btnSearch_Click(object sender, EventArgs e)
{
string searchText = txtSearch.Text;
var contacts = contactBLL.GetContacts().Where(c => c.Name.Contains(searchText)).ToList();
dataGridView1.DataSource = contacts;
}
private void btnExport_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "CSV文件|*.csv";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
using (StreamWriter sw = new StreamWriter(saveFileDialog.FileName))
{
var contacts = contactBLL.GetContacts();
sw.WriteLine("Name,Phone,Email,Address");
foreach (var contact in contacts)
{
sw.WriteLine($"{contact.Name},{contact.Phone},{contact.Email},{contact.Address}");
}
}
}
}
}
用户输入联系人信息后,点击“添加”按钮,系统将调用ContactBLL
的AddContact
方法,将联系人信息保存到数据库中,并刷新DataGridView
显示。
用户在DataGridView
中选择要删除的联系人,点击“删除”按钮,系统将调用ContactBLL
的DeleteContact
方法,从数据库中删除该联系人,并刷新DataGridView
显示。
用户在DataGridView
中选择要修改的联系人,修改相关信息后,点击“修改”按钮,系统将调用ContactBLL
的UpdateContact
方法,更新数据库中的联系人信息,并刷新DataGridView
显示。
用户在搜索框中输入查询条件,点击“查询”按钮,系统将调用ContactBLL
的GetContacts
方法,过滤出符合条件的联系人,并在DataGridView
中显示。
用户点击“导出”按钮,系统将弹出保存文件对话框,用户选择保存路径后,系统将联系人信息导出为CSV文件。
在完成功能实现后,需要对系统进行全面的测试,确保各项功能正常运行。测试内容包括:
在测试过程中,如果发现任何问题,应及时进行调试和修复。
通过本文的学习,我们成功实现了一个基于C#和Windows Forms的窗体通讯录系统。该系统具备添加、删除、修改、查询和导出联系人信息的功能,能够满足基本的通讯录管理需求。未来,我们可以进一步扩展系统功能,如增加分组管理、导入联系人、数据备份与恢复等,以提升系统的实用性和用户体验。
希望本文能为读者在C#窗体应用程序开发方面提供有益的参考和帮助。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。