You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

267 lines
5.3 KiB

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
#define N 15
struct person
{
char name[10];
char phone[11];
char classify[10];
char email[20];
}per[N];
char A[]={"办公型"};
char B[]={"个人型"};
char C[]={"商务型"};
int load()//**********加载函数**********/
/***********加载所有记录,并且可以返回所有记录的个数********/
{
FILE *fp;
int i;
if((fp=fopen("person.txt","r"))==NULL)
{
printf("\n打开文件失败!\n");
return 0;
}
for(i=0;!feof(fp);i++)
fscanf(fp,"%s%s%s%s",&per[i].name,&per[i].phone,&per[i].classify,&per[i].email);
fclose(fp);
return(i);
}
/***************查看功能**************/
int search()
{
void menu();
int n,j,k=-1;
char p[10];
n=load();
printf("\n\nClassify A:办公型\nClassify B:个人型\nClassify C:商务型\n\n 选择你要查看的分类 分类:"); /*************输入要找的人的分类*********/
scanf("%s",p);
for(j=0;j<n;j++)
if(strcmp(p,per[j].classify)==0)
{
k=j;
printf("\n(%d).%s %s\n",j,per[j].name,per[j].phone);
}
if(k==-1)
/**********如果要查找的分类不存在,则显示不存在**********/ {
printf("\n\n该分类不存在!");
}
printf("\n输入任意键返回\n");
getchar();
getchar();
system("cls");
menu();
}
/**************增加功能*********/
void add()
{
void menu(); int n,j;
FILE *fp;
char name[10],classify[10],email[20];
char phone[11];
n=load();
printf("\n\n请输入您想添加的联系人姓名及其电话:\n\n");
/******输入要增加人的姓名和电话号码******/
scanf("%s%s",name,phone);
for(j=0;j<n;j++)
{
if(strcmp(name,per[j].name)==0&&strcmp(phone,per[j].phone)==0)/*如果输入的姓名和电话已存在,则提示已存在*/
{
printf("\n\n该联系人已经存在!\n");
return;
}
}
if(j==15)
{
//if(j>=15)
printf("\n\n空间已满无法储存\n\n");/*如果记录多余15条,则提示空间已满*/
}
else
{
printf("\n成功!输入分类以及电子邮件:\n");
/****如果输入的是新信息,则继续输入这个人的分类和电子邮件*****/
scanf("%s%s",classify,email);
fp=fopen("person.txt","a+");
fprintf(fp,"\n%s %s %s %s",name,phone,classify,email); }
fclose(fp);
printf("\n输入任意键返回\n");
getchar();
getchar();
system("cls");
menu();
}
/****************修改功能************/
void modify()
{
void menu() ;
int i,n,j,c;
int k=-1;
char name[10];
FILE *fp;
n=load();
printf("\n\n输入要修改人的姓名:\n");
/*****输入要修改人的姓名******/
scanf("%s",name);
if((fp=fopen("person.txt","r+"))==NULL)
{
printf("\n\n打开文件失败!\n\n");
}
for(j=0;j<n;j++)
if(strcmp(name,per[j].name)==0)
{ k=0;
do
{ puts("\n\n1).姓名\n2).号码\n3).分类\n4).电子邮件\n:");
printf("请选择一项:[ ]\b\b");
/*******输入要修改的选项********/
scanf("%d",&c);
if(c>4||c<1)
{
puts("\n选择错误,请重新尝试!\n");
getchar();
}
}
while(c>4||c<1);
}
if(k==-1)
printf("该联系人不存在!");
do
{ switch(c)
{
case 1:printf("name");scanf("%s",per[j].name);break;
case 2:printf("phone");scanf("%s",per[j].phone);break;
case 3:printf("classify");scanf("%s",per[j].classify);break;
case 4:printf("email");scanf("%s",per[j].email);break;
}
}
while(c<1||c>4);
for(i=0;i<n;i++)
fprintf(fp,"%s %s %s %s\n",per[i].name,per[i].phone,per[i].classify,per[i].email);
fclose(fp);
printf("\n输入任意键返回\n");
getchar();
getchar();
system("cls");
menu ();
}
/******************删除功能****************/
void del() {
void menu();
int i,j,n;
int k=-1;
FILE *fp;
char name[10];
n=load();
printf("\n\n输入要删除人的姓名:");
/******输入要删除人的姓名********/
scanf("%s",name);
if((fp=fopen("person.txt","w"))==NULL)
{
printf("\n\n打开文件失败\n\n");
}
for(j=0;j<n;j++)
if(strcmp(name,per[j].name)==0)
{
k=0;
break;
}
if(k==-1)
{
printf("该联系人不存在!");
}
for(i=0;i<n;i++)
if(i!=j)
/********删除选项,并自动调整其他所有选项*************/
fprintf(fp,"%s %s %s %s\n",per[i].name,per[i].phone,per[i].classify,per[i].email);
fclose(fp);
printf("\n输入任意键返回\n");
getchar();
getchar();
system("cls");
menu();
}
/****************显示功能***************/
void browse() {
void menu();
int n,i;
n=load();
for(i=0;i<n;i++) {
printf("\n(%d).%s-%s-%s-%s\n",i,per[i].name,per[i].phone,per[i].classify,per[i].email);
}
menu();
}
/*********拨号功能*********/
void call()
{ void menu();
int i,k,j,n;
k=-1;
n=load();
char name[10];
FILE *fp;
fp=fopen("person.txt","r");
if((fp=fopen("person.txt","r"))==NULL)
{
printf("\n打开文件失败!\n");
}
printf("输入拨号人姓名:");
scanf("%s",name);
for(i=0;i<n;i++)
{
if(strcmp(name,per[i].name)==0)
{ k=0;
for(j=0;j<8;j++)
{
printf("%c",per[i].phone[j]);
Sleep(1000);
}
}
}
if(k==-1)
{
printf("所拨号人不存在!");
}
fclose(fp);
printf("\n输入任意键返回\n");
getchar();
getchar();
system("cls");
menu();
}
/***************菜单*****************/
void menu()
{
int n,w1;/*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内*/
do
{
puts("\t\t**********通讯录主界面**********\n\n");
puts("\t\t\t\t 1. 查询成员资料");
puts("\t\t\t\t 2. 增加一位成员资料");
puts("\t\t\t\t 3. 修改一位成员资料");
puts("\t\t\t\t 4. 删除一位成员资料");
puts("\t\t\t\t 5. 成员总名单查看");
puts("\t\t\t\t 6. 选择一位成员拨号");
puts("\n\n\t\t*********************************\n");
printf("选择你要操作的序号(1-6):[ ]\b\b");
scanf("%d",&n); if(n<1||n>6)
{w1=1;getchar();}
else w1=0;
}
while(w1==1);
switch(n)
{
case 1:search();break; /*查看模块*/
case 2:add();break; /*增加模块*/
case 3:modify();break; /*修改模块*/
case 4:del();break; /*删除模块*/
case 5:browse();break; /*显示模块*/
case 6:call();
}
}
/***************主函数****************/
int main ()
{
menu ();
}