2019年6月27日
Jerry
7101
2023年11月23日
一个简单的C#小课设——通讯录软件。软件基于winform平台,数据存储采用的文本文件,可以实现联系人信息的增删改查,列表显示。
一、功能实现
实现一个简单的通讯录软件,要求实现联系人的增删改查,列表显示,联系人信息读取、存储。
二、数据结构
一个联系人结构体,保存联系人相关信息:姓名、城市、号码1、号码2、Email地址。一个全局的结构体数组,用于联系人信息的存储、处理。
//联系人结构体
public struct persion_S
{
public string name; //联系人姓名
public string city; //联系人籍贯
public string num; //联系人号码1
public string num2; //联系人号码2
public string email; //联系人Email
}
// 全局联系人数组
public static persion_S[] g_persion = new persion_S[MAX_NUM];
三、界面展示
- 软件主页,启动过程中自动读取文本文档,将结果进行分析存储于全局数组。
- 联系人查询,可以根据ID、姓名、城市进行查询过滤
- 新增联系人,弹出界面填写信息点击添加即可
- 修改联系人,选择要修改的联系人,修改后保存,每次只能修改一位
- 删除联系人,勾选要删除的联系人点击删除,确认即可
- 保存退出,点击保存退出后即可存储数据
四、主要代码片段
- 读写文件
//读取文件
public static void read_file()
{
StreamReader sr = File.OpenText(@"通讯录.txt");
string nextLine;
while ((nextLine = sr.ReadLine()) != null)
{
string[] after = nextLine.Split(new char[] { '^' });
int ret = insert(after[0], after[1], after[2], after[3], after[4]);
if (ret == -1)
{
Console.WriteLine("写入失败!");
}
}
sr.Close();
}
//写入文件
public static void write_file()
{
int i;
FileInfo myFile = new FileInfo(@"通讯录.txt");
StreamWriter sw = myFile.CreateText();
for (i = 0; i < persion.g_index; i++)
{
string line = g_persion[i].name + '^' + g_persion[i].city + '^' +
g_persion[i].num + '^' + g_persion[i].num2 + '^' + g_persion[i].email;
Console.WriteLine(line);
sw.WriteLine(line);
}
sw.Close();
}
- listView的操作
//添加列
listView1.Columns.Add("ID", 40, HorizontalAlignment.Left);
listView1.Columns.Add("姓名", 100, HorizontalAlignment.Left);
listView1.Columns.Add("城市", 100, HorizontalAlignment.Left);
listView1.Columns.Add("号码1", 120, HorizontalAlignment.Left);
listView1.Columns.Add("号码2", 120, HorizontalAlignment.Left);
listView1.Columns.Add("Email", 120, HorizontalAlignment.Left);
//添加行
ListViewItem item = new ListViewItem();
item.Text = Convert.ToString(i);
item.SubItems.Add(persion.g_persion[i].name);
item.SubItems.Add(persion.g_persion[i].city);
item.SubItems.Add(persion.g_persion[i].num);
item.SubItems.Add(persion.g_persion[i].num2);
item.SubItems.Add(persion.g_persion[i].email);
listView1.BeginUpdate();
listView1.Items.Add(item);
listView1.EndUpdate();
//清空行
listView1.Items.Clear();
//获取选中行数及内容
int count = listView1.CheckedItems.Count;
for (i = 0; i < count; i++)
{
listView1.CheckedItems[i].SubItems[0].Text;
}
- 数据插入函数
public static int insert(string name, string city, string num, string num2, string email)
{
if (g_index + 1 > MAX_NUM)
{
return -1;
}
g_persion[g_index].name = name;
g_persion[g_index].city = city;
g_persion[g_index].num = num;
g_persion[g_index].num2 = num2;
g_persion[g_index].email = email;
g_index++;
return g_index;
}
- 数据删除函数
public static void del_one(int index)
{
int i;
for (i = index; i < g_index; i++)
{
g_persion[i] = g_persion[i + 1];
}
g_index--;
}
public static void del_arr(ArrayList d)
{
int k = 0;
for (k = 0; k < d.Count; k++)
{
int index = (int)d[k];
del_one(index);
}
}
- 数据查询函数
//按照姓名查询
public static int query_by_name(string name)
{
int i = 0;
for (i = 0; i < g_index; i++)
{
if (g_persion[i].name == name)
{
return i;
}
}
return -1;
}
//按照城市查询
public static ArrayList query_by_city(string name)
{
int i = 0;
ArrayList ret = new ArrayList();
for (i = 0; i < g_index; i++)
{
if (g_persion[i].city == name)
{
ret.Add(i);
}
}
ret.TrimToSize();
return ret;
}
- 数据修改函数
public static void modify(int index, string name, string city,
string num, string num2, string email)
{
g_persion[index].name = name;
g_persion[index].city = city;
g_persion[index].num = num;
g_persion[index].num2 = num2;
g_persion[index].email = email;
}
原创文章,转载请注明出处:
https://jerrycoding.com/article/address-book-cshap
《课设小程序》
0
微信
支付宝