C#怎么实现窗体通讯录系统功能

发布时间:2022-04-18 13:45:13 作者:iii
来源:亿速云 阅读:222

C#怎么实现窗体通讯录系统功能

目录

  1. 引言
  2. 需求分析
  3. 系统设计
  4. 开发环境与工具
  5. 实现步骤
  6. 测试与调试
  7. 总结与展望

引言

在现代社会中,通讯录系统已经成为我们日常生活中不可或缺的一部分。无论是个人还是企业,都需要一个高效、便捷的通讯录管理系统来存储和管理联系人信息。本文将详细介绍如何使用C#编程语言和Windows Forms技术实现一个窗体通讯录系统。通过本文的学习,读者将掌握如何从零开始构建一个功能完善的通讯录系统,包括需求分析、系统设计、数据库设计、界面设计、功能实现以及测试与调试等环节。

需求分析

在开始开发之前,首先需要明确系统的需求。一个基本的通讯录系统通常需要具备以下功能:

  1. 添加联系人:用户可以添加新的联系人信息,包括姓名、电话、电子邮件、地址等。
  2. 删除联系人:用户可以删除不再需要的联系人信息。
  3. 修改联系人:用户可以修改已有联系人的信息。
  4. 查询联系人:用户可以通过姓名、电话等条件查询联系人信息。
  5. 导出联系人:用户可以将联系人信息导出为CSV或Excel文件,以便在其他系统中使用。

此外,系统还应具备良好的用户界面,操作简单直观,数据存储安全可靠。

系统设计

3.1 系统架构

本系统采用典型的三层架构,分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。这种架构有助于提高代码的可维护性和可扩展性。

3.2 数据库设计

通讯录系统的核心是联系人信息的存储。我们使用SQL Server作为数据库管理系统,设计一个简单的联系人表(Contacts)来存储联系人信息。表结构如下:

列名 数据类型 说明
ContactID int 联系人ID(主键)
Name nvarchar(50) 联系人姓名
Phone nvarchar(20) 联系人电话
Email nvarchar(50) 联系人电子邮件
Address nvarchar(100) 联系人地址

3.3 界面设计

系统的用户界面应简洁明了,易于操作。我们设计一个主窗体,包含以下主要控件:

开发环境与工具

实现步骤

5.1 创建项目

首先,打开Visual Studio 2022,创建一个新的Windows Forms应用程序项目,命名为“ContactManagementSystem”。

5.2 数据库连接

在项目中添加一个App.config文件,配置数据库连接字符串:

<configuration>
  <connectionStrings>
    <add name="ContactDB" connectionString="Data Source=.;Initial Catalog=ContactDB;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

5.3 数据模型

创建一个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; }
}

5.4 数据访问层

创建一个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();
        }
    }
}

5.5 业务逻辑层

创建一个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);
    }
}

5.6 用户界面

在主窗体中,添加一个DataGridView控件用于显示联系人列表,以及多个TextBoxButton控件用于输入和执行操作。

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}");
                }
            }
        }
    }
}

5.7 功能实现

5.7.1 添加联系人

用户输入联系人信息后,点击“添加”按钮,系统将调用ContactBLLAddContact方法,将联系人信息保存到数据库中,并刷新DataGridView显示。

5.7.2 删除联系人

用户在DataGridView中选择要删除的联系人,点击“删除”按钮,系统将调用ContactBLLDeleteContact方法,从数据库中删除该联系人,并刷新DataGridView显示。

5.7.3 修改联系人

用户在DataGridView中选择要修改的联系人,修改相关信息后,点击“修改”按钮,系统将调用ContactBLLUpdateContact方法,更新数据库中的联系人信息,并刷新DataGridView显示。

5.7.4 查询联系人

用户在搜索框中输入查询条件,点击“查询”按钮,系统将调用ContactBLLGetContacts方法,过滤出符合条件的联系人,并在DataGridView中显示。

5.7.5 导出联系人

用户点击“导出”按钮,系统将弹出保存文件对话框,用户选择保存路径后,系统将联系人信息导出为CSV文件。

测试与调试

在完成功能实现后,需要对系统进行全面的测试,确保各项功能正常运行。测试内容包括:

  1. 添加联系人:测试添加不同格式的联系人信息,确保数据正确保存。
  2. 删除联系人:测试删除已存在的联系人,确保数据正确删除。
  3. 修改联系人:测试修改联系人信息,确保数据正确更新。
  4. 查询联系人:测试不同查询条件,确保查询结果准确。
  5. 导出联系人:测试导出功能,确保导出的CSV文件内容正确。

在测试过程中,如果发现任何问题,应及时进行调试和修复。

总结与展望

通过本文的学习,我们成功实现了一个基于C#和Windows Forms的窗体通讯录系统。该系统具备添加、删除、修改、查询和导出联系人信息的功能,能够满足基本的通讯录管理需求。未来,我们可以进一步扩展系统功能,如增加分组管理、导入联系人、数据备份与恢复等,以提升系统的实用性和用户体验。

希望本文能为读者在C#窗体应用程序开发方面提供有益的参考和帮助。

推荐阅读:
  1. C# 开发圆角窗体
  2. C#防止窗体多次打开

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:vue怎么实现实时搜索显示功能

下一篇:在Flutter中怎么使用dio

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》