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
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 ();
|
|
}
|