您的位置:首页 > 编程语言 > C语言/C++

C语言实现通讯录管理系统

2017-09-24 10:49 543 查看
#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<conio.h>

#define Len sizeof(struct Node)

void add();//添加函数

void print();//打印函数

void chaxun();//查询函数

void del();//删除函数

void save(struct Node node[]);//保存函数

void menu();//菜单函数

void exit();//退出函数

//定义一个结构的属性

struct Node

{
char name[20];
char sex[4];
char emp[20];
char number[20];
char adds[20];
char emil[20];
char QQ[20];

}node[50];

int n = 0;

void menu()

{
printf("============欢迎使用通讯录系统==============\n");
printf("            1.添加记录\n");
printf("            2.显示记录\n");
printf("            3.按名删除\n");
printf("            4.按名查询\n");
printf("            5.全部保存\n");
printf("            6.退出系统\n");
printf("=============================================\n");
printf("请选择操作数:(1~6)");
int num;
scanf("%d", &num);
switch (num)
{
case 1:
add();
break;
case 2:
print();
break;
case 3:
del();
break;
case 4:
chaxun();
break;
case 5:
save(node);
break;
case 6:
exit();
break;
}

}

void exit()

{
printf("欢迎使用本系统!再见! (按任意键退出!)");
getch();
exit(0);

}

void del()

{
FILE *fp;
FILE *fp1;
char name[20];
if ((fp = fopen("通讯录系统.txt", "rb")) == NULL)
{
printf("打开文件失败!");
exit(1);
}
printf("请输入要删除的名字;");
scanf("%s", &name);
int count = 0;
for (int i = 0; i < 50; i++)
{
if (feof(fp))
{
break;
}
fscanf(fp, "%s %s %s %s %s %s %s", node[i].name, node[i].sex, node[i].emp, node[i].number, node[i].adds,
node[i].emil, node[i].QQ);
if (strcmp(name, node[i].name) == 0)
{
count = i;
}
}
for (int i = count; i < 50; i++)
{
memcpy(&node[i], &node[i + 1],Len);
}
fclose(fp);
fp1 = fopen("通讯录系统.txt", "w");
for (int i=0; i < 3; i++)
{
fprintf(fp1, "\n%s %s %s %s %s %s %s", node[i].name, node[i].sex, node[i].emp, node[i].number, node[i].adds,
node[i].emil, node[i].QQ);
}
fclose(fp1);
int num2;
printf("是否返回主菜单? (1)是 (2)否");
scanf("%d", &num2);
if (num2 == 1)
{
menu();
}
else
{
return;
}

}

void chaxun()

{
int n=0;
FILE *fp;
char name[20];
if ((fp = fopen("通讯录系统.txt", "rb")) == NULL)
{
printf("打开文件失败!");
exit(1);
}
printf("请输入要查询的名字;");
scanf("%s", &name);
for (int i = 0; i < 50; i++)
{
if (feof(fp))
{
break;
}
fscanf(fp, "%s %s %s %s %s %s %s", node[i].name, node[i].sex, node[i].emp, node[i].number, node[i].adds,
node[i].emil, node[i].QQ);
if (strcmp(name, node[i].name) == 0)
{
printf("找到了!\n");
printf("信息是:%s %s %s %s %s %s %s", node[i].name, node[i].sex,node[i].emp,node[i].number,node[i].adds,
node[i].emil,node[i].QQ);
}
n++;
}
int num2;
printf("是否返回主菜单? (1)是 (2)否");
scanf("%d", &num2);
if (num2 == 1)
{
menu();
}
else
{
return;
}

}

void add()

{
int num = 0;
printf("请输入名字 性别 单位 电话 地址 邮箱 QQ(中间用空格隔开)\n");
scanf("%s %s %s %s %s %s %s", &node
.name, &node
.sex, &node
.emp, &node
.number, &node
.adds, &node
.emil,&node
.QQ);
printf("添加成功!");
n++;
printf("是否继续添加? (1)是 (2)否");
scanf("%d", &num);
while(num==1)
{
printf("请输入名字 性别 单位 电话 地址 邮箱 QQ(中间用空格隔开)\n");
scanf("%s %s %s %s %s %s %s", &node
.name, &node
.sex, &node
.emp, &node
.number, &node
.adds, &node
.emil, &node
.QQ);
printf("添加成功!");
n++;
printf("是否继续添加? (1)是 (2)否");
scanf("%d", &num);
}
int num2;
printf("是否返回主菜单? (1)是 (2)否");
scanf("%d", &num2);
if (num2 == 1)
{
menu();
}
else
{
return;
}

}

void save(struct Node node[])

{
FILE *fp;
if ((fp = fopen("通讯录系统.txt", "a")) == NULL)
{
printf("打开文件失败!");
exit(1);
}
for (int i = 0; i < n; i++)
{
fprintf(fp, "\n%s %s %s %s %s %s %s", node[i].name, node[i].sex, node[i].emp, node[i].number, node[i].adds,
node[i].emil, node[i].QQ);
}
printf("保存成功!\n");
n = 0;
fclose(fp);
int num2;
printf("是否返回主菜单? (1)是 (2)否");
scanf("%d", &num2);
if (num2 == 1)
{
menu();
}
else
{
return;
}

}

void print()

{
FILE *fp;
if ((fp = fopen("通讯录系统.txt", "rb")) == NULL)
{
printf("打开文件失败!");
exit(1);
}
for (int i = 0; i < 50; i++)
{
if (feof(fp))
{
break;
}
fscanf(fp, "%s %s %s %s %s %s %s", node[i].name, node[i].sex, node[i].emp, node[i].number, node[i].adds,
node[i].emil, node[i].QQ);
printf("%s %s %s %s %s %s %s\n", node[i].name, node[i].sex, node[i].emp, node[i].number, node[i].adds,
node[i].emil, node[i].QQ);
}
fclose(fp);
int num2;
printf("是否返回主菜单? (1)是 (2)否");
scanf("%d", &num2);
if (num2 == 1)
{
menu();
}
else
{
return;
}

}

int main()

{
menu();
system("pause");

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: