#include<stdio.h>
#pragma warning(disable:4996)
#include<stdlib.h>
#include<string.h>
struct phonebook
{
char name[20];
char gender[5];
int age;
char number[20];
};
typedef struct phonebook ph;
FILE* fp1;
FILE* fp2;
ph s[100];
int luru(int num)
{
int i;
num += 1;
printf("输入第%d个人的姓名:", num);
scanf("%s", s[num].name);
printf("输入第%d个人的性别:", num);
scanf("%s", s[num].gender);
printf("输入第%d个人的年龄:", num);
scanf("%d", &s[num].age);
printf("输入第%d个人电话号码:", num);
scanf("%s", s[num].number);
printf("存入成功!\n");
return num;
}
int chazhao(int num)
{
char name[20];
int i, t = 0;
printf("输入您想查找的姓名:");
scanf("%s", name);
for (i = 1; i <= num; i++) {
if (strcmp(name, s[i].name) == 0)
{
printf("%s的性别为:%s\n", s[i].name, s[i].gender);
printf("%s的年龄为:%d\n", s[i].name, s[i].age);
printf("%s的电话号码为:%s\n", s[i].name, s[i].number);
t = 1;
}
}
if (t != 1)
{
printf("查找失败\n");
}
return num;
}
int xiugai(int num)
{
int i;
char name[20];
printf("输入您想改的数据的姓名:");
scanf("%s", name);
for (i = 1; i <= num; i++)
{
if (strcmp(name, s[i].name) == 0)
{
printf("输入第%d个人的姓名:", i);
scanf("%s", s[i].name);
printf("输入第%d个人的性别:", i);
scanf("%s", s[i].gender);
printf("输入第%d个人的年龄:", i);
scanf("%d", &s[i].age);
printf("输入第%d个人电话号码:", i);
scanf("%s", &s[i].number);
printf("存入成功!\n");
}
}
return num;
}
int shanchu(int num)
{
char name[20];
int i, j;
printf("输入您想删除的姓名:");
scanf("%s", name);
for (i = 1; i <= num; i++)
{
while (strcmp(name, s[i].name) == 0)
{
s[i] = s[i + 1];
}
}
num = num - 1;
return num;
}
int cd()
{
int num;
printf("1---录入数据\n");
printf("2---按姓名查找数据\n");
printf("3---按姓名修改数据\n");
printf("4---按姓名删除数据\n");
scanf("%d", &num);
return num;
}
void baocun(int num)
{
int i;
if ((fp1 = fopen("phonebook.txt", "wb+")) == NULL)
{
printf("wrong!");
exit(0);
}
fwrite(s, sizeof(ph), num, fp1);
fclose(fp1);
}
void baocun2(int num) {
if ((fp2 = fopen("count.txt", "w+")) == NULL)
{
printf("wrong!");
exit(0);
}
fprintf(fp2,"%d",num);
fclose(fp2);
}
int jiazai(int num)
{
int i;
if ((fp2 = fopen("count.txt", "a+")) == NULL)
{
printf("wrong!");
exit(0);
}
fscanf(fp2, "%d", &num);
fclose(fp2);
if ((fp1 = fopen("phonebook.txt", "rb+")) == NULL)
{
printf("wrong!");
exit(0);
}
for (i = 1; i <= num; i++)
fread(&s[i], sizeof(ph),1, fp1);
fclose(fp1);
return num;
}
int main()
{
int a;
int count = 0;
count = jiazai(count);
while (1)
{
a = cd();
switch (a)
{
case 1:count = luru(count); baocun(count); baocun2(count); break;
case 2:count = chazhao(count); break;
case 3:count = xiugai(count); baocun(count); baocun2(count); break;
case 4:count = shanchu(count); baocun(count); baocun2(count); break;
}
}
return 0;
}
#pragma warning(disable:4996)
#include<stdlib.h>
#include<string.h>
struct phonebook
{
char name[20];
char gender[5];
int age;
char number[20];
};
typedef struct phonebook ph;
FILE* fp1;
FILE* fp2;
ph s[100];
int luru(int num)
{
int i;
num += 1;
printf("输入第%d个人的姓名:", num);
scanf("%s", s[num].name);
printf("输入第%d个人的性别:", num);
scanf("%s", s[num].gender);
printf("输入第%d个人的年龄:", num);
scanf("%d", &s[num].age);
printf("输入第%d个人电话号码:", num);
scanf("%s", s[num].number);
printf("存入成功!\n");
return num;
}
int chazhao(int num)
{
char name[20];
int i, t = 0;
printf("输入您想查找的姓名:");
scanf("%s", name);
for (i = 1; i <= num; i++) {
if (strcmp(name, s[i].name) == 0)
{
printf("%s的性别为:%s\n", s[i].name, s[i].gender);
printf("%s的年龄为:%d\n", s[i].name, s[i].age);
printf("%s的电话号码为:%s\n", s[i].name, s[i].number);
t = 1;
}
}
if (t != 1)
{
printf("查找失败\n");
}
return num;
}
int xiugai(int num)
{
int i;
char name[20];
printf("输入您想改的数据的姓名:");
scanf("%s", name);
for (i = 1; i <= num; i++)
{
if (strcmp(name, s[i].name) == 0)
{
printf("输入第%d个人的姓名:", i);
scanf("%s", s[i].name);
printf("输入第%d个人的性别:", i);
scanf("%s", s[i].gender);
printf("输入第%d个人的年龄:", i);
scanf("%d", &s[i].age);
printf("输入第%d个人电话号码:", i);
scanf("%s", &s[i].number);
printf("存入成功!\n");
}
}
return num;
}
int shanchu(int num)
{
char name[20];
int i, j;
printf("输入您想删除的姓名:");
scanf("%s", name);
for (i = 1; i <= num; i++)
{
while (strcmp(name, s[i].name) == 0)
{
s[i] = s[i + 1];
}
}
num = num - 1;
return num;
}
int cd()
{
int num;
printf("1---录入数据\n");
printf("2---按姓名查找数据\n");
printf("3---按姓名修改数据\n");
printf("4---按姓名删除数据\n");
scanf("%d", &num);
return num;
}
void baocun(int num)
{
int i;
if ((fp1 = fopen("phonebook.txt", "wb+")) == NULL)
{
printf("wrong!");
exit(0);
}
fwrite(s, sizeof(ph), num, fp1);
fclose(fp1);
}
void baocun2(int num) {
if ((fp2 = fopen("count.txt", "w+")) == NULL)
{
printf("wrong!");
exit(0);
}
fprintf(fp2,"%d",num);
fclose(fp2);
}
int jiazai(int num)
{
int i;
if ((fp2 = fopen("count.txt", "a+")) == NULL)
{
printf("wrong!");
exit(0);
}
fscanf(fp2, "%d", &num);
fclose(fp2);
if ((fp1 = fopen("phonebook.txt", "rb+")) == NULL)
{
printf("wrong!");
exit(0);
}
for (i = 1; i <= num; i++)
fread(&s[i], sizeof(ph),1, fp1);
fclose(fp1);
return num;
}
int main()
{
int a;
int count = 0;
count = jiazai(count);
while (1)
{
a = cd();
switch (a)
{
case 1:count = luru(count); baocun(count); baocun2(count); break;
case 2:count = chazhao(count); break;
case 3:count = xiugai(count); baocun(count); baocun2(count); break;
case 4:count = shanchu(count); baocun(count); baocun2(count); break;
}
}
return 0;
}
