用c语言实现通讯录功能 要求:存储若干人的信息,每个人的信息包括:姓名,性别,年龄,电话号码,住址。此通讯录系统的功能包括:(1)增加联系人(2)删除对应的联系人(3)查找联系人4.修改联系人的信息5.排序此通讯录6.打印出通讯录每个人的信息。
时间: 2024-03-03 22:47:07 浏览: 55
好的,这是一个比较具体的问题,我可以为您提供一个大体的思路和代码框架。
1. 定义联系人结构体
联系人结构体包括姓名、性别、年龄、电话号码、住址等信息。
```
struct Contact {
char name[20];
char sex[5];
int age;
char phone[20];
char address[50];
};
```
2. 定义通讯录结构体
通讯录结构体包括联系人数组、联系人个数等信息。
```
struct AddressBook {
struct Contact contacts[100];
int count;
};
```
3. 实现增加联系人功能
增加联系人功能包括输入联系人信息和将联系人信息存入通讯录数组中。
```
void addContact(struct AddressBook *book) {
printf("请输入姓名:");
scanf("%s", book->contacts[book->count].name);
printf("请输入性别:");
scanf("%s", book->contacts[book->count].sex);
printf("请输入年龄:");
scanf("%d", &book->contacts[book->count].age);
printf("请输入电话号码:");
scanf("%s", book->contacts[book->count].phone);
printf("请输入住址:");
scanf("%s", book->contacts[book->count].address);
book->count++;
printf("联系人已添加!\n");
}
```
4. 实现删除联系人功能
删除联系人功能需要输入要删除的联系人姓名,然后在通讯录数组中查找并删除该联系人。
```
void deleteContact(struct AddressBook *book) {
char name[20];
printf("请输入要删除的联系人姓名:");
scanf("%s", name);
int i;
for (i = 0; i < book->count; i++) {
if (strcmp(name, book->contacts[i].name) == 0) {
int j;
for (j = i; j < book->count - 1; j++) {
book->contacts[j] = book->contacts[j + 1];
}
book->count--;
printf("联系人已删除!\n");
return;
}
}
printf("未找到该联系人!\n");
}
```
5. 实现查找联系人功能
查找联系人功能需要输入要查找的联系人姓名,然后在通讯录数组中查找并输出该联系人信息。
```
void findContact(struct AddressBook *book) {
char name[20];
printf("请输入要查找的联系人姓名:");
scanf("%s", name);
int i;
for (i = 0; i < book->count; i++) {
if (strcmp(name, book->contacts[i].name) == 0) {
printf("姓名:%s\n", book->contacts[i].name);
printf("性别:%s\n", book->contacts[i].sex);
printf("年龄:%d\n", book->contacts[i].age);
printf("电话号码:%s\n", book->contacts[i].phone);
printf("住址:%s\n", book->contacts[i].address);
return;
}
}
printf("未找到该联系人!\n");
}
```
6. 实现修改联系人信息功能
修改联系人信息功能需要输入要修改的联系人姓名,然后在通讯录数组中查找并修改该联系人信息。
```
void modifyContact(struct AddressBook *book) {
char name[20];
printf("请输入要修改的联系人姓名:");
scanf("%s", name);
int i;
for (i = 0; i < book->count; i++) {
if (strcmp(name, book->contacts[i].name) == 0) {
printf("请输入新的姓名:");
scanf("%s", book->contacts[i].name);
printf("请输入新的性别:");
scanf("%s", book->contacts[i].sex);
printf("请输入新的年龄:");
scanf("%d", &book->contacts[i].age);
printf("请输入新的电话号码:");
scanf("%s", book->contacts[i].phone);
printf("请输入新的住址:");
scanf("%s", book->contacts[i].address);
printf("联系人信息已修改!\n");
return;
}
}
printf("未找到该联系人!\n");
}
```
7. 实现排序功能
排序功能可以按照联系人的姓名或年龄进行排序。
```
void sortContact(struct AddressBook *book) {
int choice;
printf("请选择排序方式(1.按姓名排序 2.按年龄排序):");
scanf("%d", &choice);
int i, j;
struct Contact temp;
if (choice == 1) {
for (i = 0; i < book->count - 1; i++) {
for (j = 0; j < book->count - 1 - i; j++) {
if (strcmp(book->contacts[j].name, book->contacts[j + 1].name) > 0) {
temp = book->contacts[j];
book->contacts[j] = book->contacts[j + 1];
book->contacts[j + 1] = temp;
}
}
}
} else if (choice == 2) {
for (i = 0; i < book->count - 1; i++) {
for (j = 0; j < book->count - 1 - i; j++) {
if (book->contacts[j].age > book->contacts[j + 1].age) {
temp = book->contacts[j];
book->contacts[j] = book->contacts[j + 1];
book->contacts[j + 1] = temp;
}
}
}
} else {
printf("无效的选择!\n");
return;
}
printf("通讯录已按照您的要求排序!\n");
}
```
8. 实现打印通讯录功能
打印通讯录功能可以输出通讯录中每个联系人的信息。
```
void printContact(struct AddressBook *book) {
int i;
for (i = 0; i < book->count; i++) {
printf("姓名:%s\n", book->contacts[i].name);
printf("性别:%s\n", book->contacts[i].sex);
printf("年龄:%d\n", book->contacts[i].age);
printf("电话号码:%s\n", book->contacts[i].phone);
printf("住址:%s\n", book->contacts[i].address);
printf("\n");
}
}
```
以上就是一个简单的用 C 语言实现通讯录功能的代码框架。需要注意的是,这只是一个基础的实现,还有很多细节问题需要考虑,比如输入格式的判断、防止数组越界等等。
阅读全文