C语言代码实现通讯录管理系统
1. 思路
通讯录管理系统主要分为三个模块:显示、添加、删除联系人。首先,我们需要定义一个联系人的结构体,包含姓名、电话、地址等基本信息。然后,通过数组来存储联系人信息,可以通过遍历数组来显示已有联系人,通过添加、删除数组中的元素来添加、删除联系人信息。
2. 代码实现
2.1 定义联系人结构体
在这个管理系统中,我们需要联系人的名字、电话和地址。一个合适的结构体定义如下:
#define MAX_NAME 20 // 姓名最大长度
#define MAX_PHONE 12 // 电话最大长度
#define MAX_ADDR 30 // 地址最大长度
typedef struct {
char name[MAX_NAME]; // 姓名
char phone[MAX_PHONE]; // 电话
char addr[MAX_ADDR]; // 地址
} person;
2.2 显示联系人信息
添加联系人后,我们需要显示已有的所有联系人信息。这个可以通过遍历数组来实现。示例代码如下:
int show(person *list, int count) {
int i;
if (count == 0) {
printf("\nEmpty List!\n");
return 0;
}
printf("%-20s%-20s%-20s\n", "Name", "Phone", "Address");
for (i = 0; i < count; i++) {
printf("%-20s%-20s%-20s\n", list[i].name, list[i].phone, list[i].addr);
}
return 0;
}
2.3 添加联系人
添加联系人主要是向数组中添加一个person结构体元素。示例代码如下:
int add(person *list, int *pcount) {
char ch;
do {
printf("Please enter the name [Length <= 20]:");
scanf("%s", list[*pcount].name);
printf("Please enter the phone [Length <= 12]:");
scanf("%s", list[*pcount].phone);
printf("Please enter the address [Length <= 30]:");
scanf("%s", list[*pcount].addr);
(*pcount)++; // count自增1
printf("Continue to add another person? (y/n): ");
scanf("%s", &ch);
} while (ch == 'y' || ch == 'Y');
return 0;
}
2.4 删除联系人
删除联系人实际上是将数组中的一个元素删除,并将后面的元素依次前移,最后将数组大小减1。示例代码如下:
int delete(person *list, int *pcount) {
int i, pos;
char name[MAX_NAME];
if (*pcount == 0) {
printf("\nEmpty List!\n");
return -1;
}
printf("Please enter the name to delete: ");
scanf("%s", name);
for (i = 0; i < *pcount; i++) {
if (strcmp(name, list[i].name) == 0) { // 找到对应的联系人
for (pos = i; pos < (*pcount) - 1; pos++) { // 将后面的元素前移
list[pos] = list[pos+1];
}
(*pcount)--; // 将数组大小减1
printf("\nDelete Done!\n");
return 0;
}
}
printf("\nCan't find the person whose name is %s!\n", name); // 未找到对应的联系人
return -1;
}
3. 示例说明
3.1 示例1
运行程序,在菜单中选择添加联系人:
=========================
Welcome to the Contacts System
=========================
Please select the operation you want to do:
1) Show all contacts
2) Add a new contact
3) Delete a contact
4) Quit
Your choice is [1-4]: 2
Please enter the name [Length <= 20]:Tom
Please enter the phone [Length <= 12]:139xxxxx
Please enter the address [Length <= 30]:Shanghai
Continue to add another person? (y/n): y
Please enter the name [Length <= 20]:Jerry
Please enter the phone [Length <= 12]:138xxxxx
Please enter the address [Length <= 30]:Beijing
Continue to add another person? (y/n): n
Add Done!
然后选择显示联系人:
Please select the operation you want to do:
1) Show all contacts
2) Add a new contact
3) Delete a contact
4) Quit
Your choice is [1-4]: 1
Name Phone Address
Tom 139xxxxx Shanghai
Jerry 138xxxxx Beijing
3.2 示例2
从上一个示例中删除联系人Jerry:
Please select the operation you want to do:
1) Show all contacts
2) Add a new contact
3) Delete a contact
4) Quit
Your choice is [1-4]: 3
Please enter the name to delete: Jerry
Delete Done!
然后再次选择显示联系人:
Please select the operation you want to do:
1) Show all contacts
2) Add a new contact
3) Delete a contact
4) Quit
Your choice is [1-4]: 1
Name Phone Address
Tom 139xxxxx Shanghai
4. 总结
通讯录管理系统的实现可以帮助我们了解数组和结构体的使用,同时也让我们熟悉C语言的基本语法。在实现过程中,需要注意错误处理、代码优化等方面。该系统还可以进一步扩展、完善,比如添加按姓名排序等功能,可以让我们继续深入学习,提高自己的编程能力。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言代码实现通讯录管理系统 - Python技术站