如何用c++实现联系人系统
时间: 2024-04-30 21:20:14 浏览: 116
基于C++的通讯录联系人系统
5星 · 资源好评率100%
要实现一个联系人系统,需要考虑以下几个方面:
1. 数据存储:需要存储联系人的信息,可以使用文件、数据库等方式进行存储。
2. 联系人的增加、删除、修改、查询等操作:需要实现这些基本操作,以方便用户管理联系人。
3. 用户界面:需要实现一个用户友好的界面,以方便用户使用系统。
下面是一个简单的联系人系统的代码示例,使用文件存储联系人信息:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 联系人结构体
typedef struct {
char name[20];
char phone[20];
char email[30];
} Contact;
// 添加联系人
void add_contact() {
Contact contact;
printf("请输入联系人姓名:");
scanf("%s", contact.name);
printf("请输入联系人电话:");
scanf("%s", contact.phone);
printf("请输入联系人邮箱:");
scanf("%s", contact.email);
FILE *fp = fopen("contacts.txt", "a");
if (fp == NULL) {
printf("打开文件失败!\n");
return;
}
fprintf(fp, "%s %s %s\n", contact.name, contact.phone, contact.email);
fclose(fp);
printf("联系人添加成功!\n");
}
// 删除联系人
void delete_contact() {
char name[20];
printf("请输入要删除的联系人姓名:");
scanf("%s", name);
FILE *fp = fopen("contacts.txt", "r");
if (fp == NULL) {
printf("打开文件失败!\n");
return;
}
FILE *temp = fopen("temp.txt", "w");
if (temp == NULL) {
printf("创建临时文件失败!\n");
fclose(fp);
return;
}
char line[100];
int found = 0;
while (fgets(line, 100, fp) != NULL) {
char *p = strtok(line, " ");
if (strcmp(p, name) != 0) {
fprintf(temp, "%s", line);
} else {
found = 1;
}
}
fclose(fp);
fclose(temp);
remove("contacts.txt");
rename("temp.txt", "contacts.txt");
if (found) {
printf("联系人删除成功!\n");
} else {
printf("联系人不存在!\n");
}
}
// 修改联系人
void modify_contact() {
char name[20];
printf("请输入要修改的联系人姓名:");
scanf("%s", name);
FILE *fp = fopen("contacts.txt", "r");
if (fp == NULL) {
printf("打开文件失败!\n");
return;
}
FILE *temp = fopen("temp.txt", "w");
if (temp == NULL) {
printf("创建临时文件失败!\n");
fclose(fp);
return;
}
char line[100];
int found = 0;
while (fgets(line, 100, fp) != NULL) {
char *p = strtok(line, " ");
if (strcmp(p, name) != 0) {
fprintf(temp, "%s", line);
} else {
Contact contact;
printf("请输入联系人电话:");
scanf("%s", contact.phone);
printf("请输入联系人邮箱:");
scanf("%s", contact.email);
sprintf(line, "%s %s %s\n", name, contact.phone, contact.email);
fprintf(temp, "%s", line);
found = 1;
}
}
fclose(fp);
fclose(temp);
remove("contacts.txt");
rename("temp.txt", "contacts.txt");
if (found) {
printf("联系人修改成功!\n");
} else {
printf("联系人不存在!\n");
}
}
// 查询联系人
void search_contact() {
char name[20];
printf("请输入要查询的联系人姓名:");
scanf("%s", name);
FILE *fp = fopen("contacts.txt", "r");
if (fp == NULL) {
printf("打开文件失败!\n");
return;
}
char line[100];
int found = 0;
while (fgets(line, 100, fp) != NULL) {
char *p = strtok(line, " ");
if (strcmp(p, name) == 0) {
printf("联系人姓名:%s\n联系人电话:%s\n联系人邮箱:%s\n", p, strtok(NULL, " "), strtok(NULL, " "));
found = 1;
break;
}
}
fclose(fp);
if (!found) {
printf("联系人不存在!\n");
}
}
// 显示联系人列表
void list_contacts() {
FILE *fp = fopen("contacts.txt", "r");
if (fp == NULL) {
printf("打开文件失败!\n");
return;
}
char line[100];
while (fgets(line, 100, fp) != NULL) {
printf("%s", line);
}
fclose(fp);
}
// 主菜单
void main_menu() {
printf("欢迎使用联系人系统!\n");
printf("1. 添加联系人\n");
printf("2. 删除联系人\n");
printf("3. 修改联系人\n");
printf("4. 查询联系人\n");
printf("5. 显示联系人列表\n");
printf("0. 退出\n");
}
int main() {
int choice = -1;
while (choice != 0) {
main_menu();
printf("请输入操作编号:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_contact();
break;
case 2:
delete_contact();
break;
case 3:
modify_contact();
break;
case 4:
search_contact();
break;
case 5:
list_contacts();
break;
case 0:
printf("欢迎再次使用!\n");
break;
default:
printf("无效的操作编号!\n");
break;
}
}
return 0;
}
```
在代码中,使用了文件 `contacts.txt` 来存储联系人信息。在添加联系人时,将联系人信息写入文件;在删除、修改联系人时,将文件中相应的行删除或修改;在查询联系人和显示联系人列表时,从文件中读取数据并输出。注意,在删除、修改联系人时,需要使用临时文件来保存修改后的数据,然后再将临时文件重命名为原文件,以保证文件数据的完整性。
阅读全文