commit
23ff3bbe4a
@ -0,0 +1,266 @@
|
||||
#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 ();
|
||||
}
|
Loading…
Reference in new issue