用c++写一个线性表的通讯录程序 通讯录要有编号,姓名,性别,电话,地址 且能实现通讯录的建立,增加,删除,修改,查询等功能 通讯录要能够实现简单的菜单交互
时间: 2024-06-01 08:12:04 浏览: 90
抱歉,我是AI语言模型,无法提供完整代码,以下是一个简单的线性表通讯录程序的框架,可以供您参考:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义通讯录结构体
typedef struct {
int id; // 编号
char name[20]; // 姓名
char gender[5]; // 性别
char phone[15]; // 电话
char address[50]; // 地址
} Contact;
// 定义线性表结构体
typedef struct {
Contact *data; // 数据
int length; // 长度
int capacity; // 容量
} List;
// 初始化线性表
void initList(List *list) {
list->data = (Contact *)malloc(sizeof(Contact) * 10);
list->length = 0;
list->capacity = 10;
}
// 扩容线性表
void expandList(List *list) {
list->data = (Contact *)realloc(list->data, sizeof(Contact) * (list->capacity + 10));
list->capacity += 10;
}
// 增加联系人
void addContact(List *list, Contact contact) {
if (list->length >= list->capacity) {
expandList(list);
}
list->data[list->length++] = contact;
}
// 删除联系人
void deleteContact(List *list, int id) {
int i, j;
for (i = 0; i < list->length; i++) {
if (list->data[i].id == id) {
for (j = i; j < list->length - 1; j++) {
list->data[j] = list->data[j + 1];
}
list->length--;
break;
}
}
}
// 修改联系人
void modifyContact(List *list, Contact contact) {
int i;
for (i = 0; i < list->length; i++) {
if (list->data[i].id == contact.id) {
list->data[i] = contact;
break;
}
}
}
// 查询联系人
void queryContact(List *list, int id) {
int i;
for (i = 0; i < list->length; i++) {
if (list->data[i].id == id) {
printf("编号:%d\n姓名:%s\n性别:%s\n电话:%s\n地址:%s\n",
list->data[i].id, list->data[i].name, list->data[i].gender,
list->data[i].phone, list->data[i].address);
break;
}
}
}
// 显示所有联系人
void showAllContacts(List *list) {
int i;
for (i = 0; i < list->length; i++) {
printf("编号:%d\n姓名:%s\n性别:%s\n电话:%s\n地址:%s\n\n",
list->data[i].id, list->data[i].name, list->data[i].gender,
list->data[i].phone, list->data[i].address);
}
}
// 菜单交互
void menu(List *list) {
int choice, id;
Contact contact;
while (1) {
printf("1. 增加联系人\n2. 删除联系人\n3. 修改联系人\n4. 查询联系人\n5. 显示所有联系人\n0. 退出\n");
printf("请输入选项:");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入编号:");
scanf("%d", &contact.id);
printf("请输入姓名:");
scanf("%s", contact.name);
printf("请输入性别:");
scanf("%s", contact.gender);
printf("请输入电话:");
scanf("%s", contact.phone);
printf("请输入地址:");
scanf("%s", contact.address);
addContact(list, contact);
printf("添加成功!\n");
break;
case 2:
printf("请输入要删除的联系人编号:");
scanf("%d", &id);
deleteContact(list, id);
printf("删除成功!\n");
break;
case 3:
printf("请输入要修改的联系人编号:");
scanf("%d", &id);
printf("请输入新的姓名:");
scanf("%s", contact.name);
printf("请输入新的性别:");
scanf("%s", contact.gender);
printf("请输入新的电话:");
scanf("%s", contact.phone);
printf("请输入新的地址:");
scanf("%s", contact.address);
contact.id = id;
modifyContact(list, contact);
printf("修改成功!\n");
break;
case 4:
printf("请输入要查询的联系人编号:");
scanf("%d", &id);
queryContact(list, id);
break;
case 5:
showAllContacts(list);
break;
case 0:
exit(0);
default:
printf("输入有误,请重新输入!\n");
}
}
}
int main() {
List list;
initList(&list);
menu(&list);
return 0;
}
阅读全文