基本功能:
添加个人信息
删除个人信息
修改个人信息
名字排序
全部信息展示
退出
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
struct Contact
{
char name[50];
char address[100];
char phoneNumber[12];
char postalCode[7];
char email[50];
};
struct Contact addressBook[100];
int contactCount = 0;
void addContact()
{
if (contactCount < 100)
{
struct Contact newContact;
printf("请输入姓名: ");
scanf("%s", newContact.name);
printf("请输入家庭住址: ");
scanf("%s", newContact.address);
printf("请输入手机号码: ");
scanf("%s", newContact.phoneNumber);
printf("请输入邮编: ");
scanf("%s", newContact.postalCode);
printf("请输入E-mail: ");
scanf("%s", newContact.email);
addressBook[contactCount++] = newContact;
printf("成功添加个人信息!\n");
}
else {
printf("通讯录已满,无法添加更多信息。\n");
}
}
void searchContact() //搜索联络人
{
char query[50]; //查询
int found = 0;
printf("请输入要查询的姓名或手机号: ");
scanf("%s", query);
for (int i = 0; i < contactCount; ++i)
{ //strcmp比较2个字符串的指针 逻辑或
if (strcmp(addressBook[i].name, query) == 0 || strcmp(addressBook[i].phoneNumber, query) == 0) {
printf("姓名: %s\n家庭住址: %s\n手机号码: %s\n邮编: %s\nE-mail: %s\n",
addressBook[i].name, addressBook[i].address,
addressBook[i].phoneNumber, addressBook[i].postalCode,
addressBook[i].email);
found = 1;
break;
}
}
if (found==0)
{
printf("未找到匹配的信息。\n");
}
}
void deleteContact()
{
char query[50];
int found = 0;
printf("请输入要删除的姓名或手机号: ");
scanf("%s", query);
int j = 0;
for (int i = 0; i < contactCount; ++i) {
if (strcmp(addressBook[i].name, query) == 0 || strcmp(addressBook[i].phoneNumber, query) == 0) {
for ( j = i; j < contactCount - 1; ++j)
{
addressBook[j] = addressBook[j + 1];
}
--contactCount;
found = 1;
printf("成功删除个人信息!\n");
break;
}
}
if (found==0)
{
printf("未找到匹配的信息。\n");
}
}
void modifyContact()
{
char query[50];
int found = 0;
printf("请输入要修改的姓名或手机号: ");
scanf("%s", query);
for (int i = 0; i < contactCount; ++i)
{
if (strcmp(addressBook[i].name, query) == 0 || strcmp(addressBook[i].phoneNumber, query) == 0) {
printf("请输入新的姓名: ");
scanf("%s", addressBook[i].name);
printf("请输入新的家庭住址: ");
scanf("%s", addressBook[i].address);
printf("请输入新的手机号码: ");
scanf("%s", addressBook[i].phoneNumber);
printf("请输入新的邮编: ");
scanf("%s", addressBook[i].postalCode);
printf("请输入新的E-mail: ");
scanf("%s", addressBook[i].email);
found = 1;
printf("成功修改个人信息!\n");
break;
}
}
if (found==0)
{
printf("未找到匹配的信息。\n");
}
}
void sortContacts()
{
// 简单实现按姓名排序
for (int i = 0; i < contactCount - 1; ++i) {
for (int j = 0; j < contactCount - i - 1; ++j) {
if (strcmp(addressBook[j].name, addressBook[j + 1].name) > 0) {
// 交换元素
struct Contact temp = addressBook[j];
addressBook[j] = addressBook[j + 1];
addressBook[j + 1] = temp;
}
}
}
printf("通讯录已按姓名排序。\n");
}
void printAllContacts()
{
if (contactCount > 0)
{
printf("通讯录中的所有个人信息:\n");
for (int i = 0; i < contactCount; ++i) {
printf("姓名: %s\n家庭住址: %s\n手机号码: %s\n邮编: %s\nE-mail: %s\n",
addressBook[i].name, addressBook[i].address,
addressBook[i].phoneNumber, addressBook[i].postalCode,
addressBook[i].email);
printf("------------------------------\n");
}
}
else
{
printf("通讯录为空。\n");
}
}
int main()
{
int a;
do
{
printf("\n===== 通讯录管理系统 =====\n");
printf("1. 添加个人信息\n");
printf("2. 查询个人信息\n");
printf("3. 删除个人信息\n");
printf("4. 修改个人信息\n");
printf("5. 信息排序\n");
printf("6. 输出全部信息\n");
printf("0. 退出\n");
printf("请输入您的选择: ");
scanf("%d", &a);
switch (a) {
case 1:
addContact();
break;
case 2:
searchContact();
break;
case 3:
deleteContact();
break;
case 4:
modifyContact();
break;
case 5:
sortContacts();
break;
case 6:
printAllContacts();
break;
case 0:
printf("感谢使用,再见!\n");
break;
default:
printf("无效的选择,请重新输入。\n");
}
}
while (a != 0);
return 0;
}