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.

746 lines
17 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#include<windows.h>
#define MAX 100
#define LEN 30
int flag;
struct contect
{
char Name[LEN]; //姓名
char Phone[LEN]; //电话
char Adress[LEN]; //地址
char Email[LEN];
};
void Welcome();
void Menu();
void Search_Menu();
void Search_By_Name();
void Search_By_Phone();
void Search_Next();
void Display();
void Add();
void Add_Next();
void Delete_Menu();
void Delete_By_Name();
void Delete_By_Phone();
void Delete_Next();
void Modify();
void Modify_Menu();
void Modify_Name();
void Modify_Phone();
void Modify_Adress();
void Modify_Email();
void Modify_Next();
//主函数
int main()
{
system("color 4A");
Welcome();
Menu();
return 0;
}
void Welcome()
{
char tmp[64];
int n,i,j;
long time1;
time_t t = time(0);
strftime( tmp, sizeof(tmp), " %Y年%m月%d日 %X\n",localtime(&t) );
printf("*************************欢迎来到个人通讯录管理系统!********************************\n");
for(i=0;i<1;i++)
{
if(i==0)
{
puts( tmp );
}
printf("\t\t\t *** ***\n");
printf("\t\t\t ********* *********\n");
printf("\t\t\t *********** ***********\n");
printf("\t\t\t ************ ************\n");
printf("\t\t\t ************* *************\n");
printf("\t\t\t ************** **************\n");
printf("\t\t\t ******* *** *** *******\n");
printf("\t\t\t ****** 欢 ***** 迎 ******\n");
printf("\t\t\t ****** *** ******\n");
printf("\t\t\t ****** * ******\n");
printf("\t\t\t ***********\n");
printf("\t\t\t *********\n");
printf("\t\t\t *******\n");
printf("\t\t\t *****\n");
printf("\t\t\t *\n");
for(j=0;j<1 ;j++)
{
system("color a");
/*for(time1=0;time1<99999999;time1++);
system("color b");
for(time1=0;time1<99999999;time1++);
system("color c");
for(time1=0;time1<99999999;time1++);
system("color d");
for(time1=0;time1<99999999;time1++);
system("color e");
for(time1=0;time1<99999999;time1++);
system("color f");
for(time1=0;time1<99999999;time1++);
system("color 0");
for(time1=0;time1<99999999;time1++);
system("color 1");
for(time1=0;time1<99999999;time1++);
system("color 2");
for(time1=0;time1<99999999;time1++);
system("color 3");
for(time1=0;time1<99999999;time1++);
system("color 4");
for(time1=0;time1<99999999;time1++); */
system("color 5");
for(time1=0;time1<99999999;time1++);
system("color 6");
for(time1=0;time1<99999999;time1++);
system("color 7");
for(time1=0;time1<99999999;time1++);
system("color 8");
for(time1=0;time1<99999999;time1++);
system("color 9");
for(time1=0;time1<99999999;time1++);
system("color ab");
for(time1=0;time1<99999999;time1++);
system("color ac");
for(time1=0;time1<99999999;time1++);
system("color ad");
for(time1=0;time1<99999999;time1++);
system("color ae");
for(time1=0;time1<99999999;time1++);
system("color af");
}
system("cls");
}
printf("正在载入中");
for(i=0;i<30;i++)
{
putchar('>');
Sleep(50);
}
putchar('\n');
printf("*************************************载入成功!***********************************\n");
puts(" 欢迎使用!");
Sleep(1500);
}
void Menu()
{
char i;
system("cls");
printf("\t\t\t______________________________________\t\n");
printf("\t\t\t│ *个人通讯录管理系统 │\t\n");
printf("\t\t\t│___________________________________│ \t\n");
printf("\t\t\t│ *请输入选项 │\t\n");
printf("\t\t\t│___________________________________│ \t\n");
printf("\t\t\t│ *【1】显示 │\t\n");
printf("\t\t\t│ *【2】搜索 │\t\n");
printf("\t\t\t│ *【3】添加 │\t\n");
printf("\t\t\t│ *【4】修改 │\t\n");
printf("\t\t\t│ *【5】删除 │\t\n");
printf("\t\t\t│ *【6】退出 │\t\n");
printf("\t\t\t│___________________________________│\t\n");
printf("\t\t\t<<<<<<<<<请输入选项:");
scanf("%s",&i);
if(i>='1'&&i<='6')
{
i=i-'0';
switch(i)
{
case 1: Display();break;
case 2: Search_Menu();break;
case 3: Add();break;
case 4: Modify();break;
case 5: Delete_Menu();break;
case 6: exit(0);
}
}
else
{
printf("\t请输入正确的选项!\n");
system("pause");
Menu();
}
}
void Display()
{
struct contect s1[MAX];
int f;//缓冲量
FILE *fp;
system("cls");
fp=fopen("contect.txt","r");
printf("*************************所有的的信息如下******************************\n");
for(f=0;f<MAX;f++)
{
fread(&s1[f],sizeof(struct contect),1,fp);
if(feof(fp)!=0) break;
printf("\t____________________________________________________\n");
printf("\t│姓名:%s \n",s1[f].Name);
printf("\t│电话:%s\n",s1[f].Phone);
printf("\t│地址:%s \n",s1[f].Adress);
printf("\t│邮箱:%s \n",s1[f].Email);
}
fclose(fp);
system("pause");
Menu();
}
void Search_Menu()
{
char i;
system("cls");
printf("\t\t\t_________________________________________\t\n");
printf("\t\t\t│ *请选择查找方式 │\t\n");
printf("\t\t\t│______________________________________│ \t\n");
printf("\t\t\t│ *【1】按姓名查找 │\t\n");
printf("\t\t\t│ *【2】按电话号码查找 │\t\n");
printf("\t\t\t│ *【3】返回 │\t\n");
printf("\t\t\t│______________________________________│\t\n");
printf("\t\t\t<<<<<<<<<请输入选项:");
scanf("%s",&i);
if(i>='1'&&i<='3')
{
i=i-'0';
switch(i)
{
case 1: Search_By_Name();break;
case 2: Search_By_Phone();break;
case 3: Menu();break;
}
}
else
{
printf("\t请输入正确的选项!\n");
system("pause");
Add_Next();
}
}
void Search_By_Name()
{
struct contect s1[MAX];
int f;//缓冲量
char name[LEN];
FILE *fp;
system("cls");
fp=fopen("contect.txt","r");
printf("请输入姓名:");
scanf("%s",name);
printf("*************************您要查找的信息如下******************************\n");
for(f=0;f<MAX;f++)
{
fread(&s1[f],sizeof(struct contect),1,fp);
if(strcmp(name,s1[f].Name)==0)
{
printf("\t____________________________________________________\n");
printf("\t│姓名:%s\n",s1[f].Name);
printf("\t│电话:%s\n",s1[f].Phone);
printf("\t│地址:%s\n",s1[f].Adress);
printf("\t│邮箱:%s\n",s1[f].Email);
break;
}
}
fclose(fp);
system("pause");
Search_Next();
}
void Search_By_Phone()
{
struct contect s1[MAX];
int f;//缓冲量
char phone[LEN];
FILE *fp;
system("cls");
fp=fopen("contect.txt","r");
printf("请输入电话号码:");
scanf("%s",phone);
printf("*************************您要查找的信息如下******************************\n");
for(f=0;f<MAX;f++)
{
fread(&s1[f],sizeof(struct contect),1,fp);
if(strcmp(phone,s1[f].Phone)==0)
{
printf("\t____________________________________________________\n");
printf("\t│姓名:%s\n",s1[f].Name);
printf("\t│电话:%s\n",s1[f].Phone);
printf("\t│地址:%s\n",s1[f].Adress);
printf("\t│邮箱:%s\n",s1[f].Email);
break;
}
}
fclose(fp);
system("pause");
Search_Next();
}
void Search_Next()
{
char i;
system("cls");
printf("\t\t\t______________________________________\t\n");
printf("\t\t\t│ *是否继续? │\t\n");
printf("\t\t\t│___________________________________│ \t\n");
printf("\t\t\t│ *【1】继续 │\t\n");
printf("\t\t\t│ *【2】返回 │\t\n");
printf("\t\t\t│___________________________________│\t\n");
printf("\t\t\t<<<<<<<<<请输入选项:");
scanf("%s",&i);
if(i>='1'&&i<='2')
{
i=i-'0';
switch(i)
{
case 1: Search_Menu();break;
case 2: Menu();break;
}
}
else
{
printf("\t请输入正确的选项!\n");
system("pause");
Modify_Next();
}
}
void Add()
{
struct contect s;
FILE *fp;
system("cls");
fp=fopen("contect.txt","a");
printf("******************************请输入以下信息!*************************\n");
printf("请输入姓名: ");
scanf("%s",s.Name) ;
printf("请输入电话:");
scanf("%s",s.Phone);
printf("请输入地址:");
scanf("%s",s.Adress);
printf("请输入邮箱:");
scanf("%s",s.Email);
if(fwrite(&s,sizeof(struct contect),1,fp)!=1) //写入文件失败
{
fclose(fp);
}
else
{
printf("添加成功!\n");
printf("----------------------------------------------------------\n");
}
fclose(fp);
Add_Next();
}
void Add_Next()
{
char i;
system("cls");
printf("\t\t\t______________________________________\t\n");
printf("\t\t\t│ *是否继续? │\t\n");
printf("\t\t\t│___________________________________│ \t\n");
printf("\t\t\t│ *【1】继续 │\t\n");
printf("\t\t\t│ *【2】返回 │\t\n");
printf("\t\t\t│___________________________________│\t\n");
printf("\t\t\t<<<<<<<<<请输入选项:");
scanf("%s",&i);
if(i>='1'&&i<='2')
{
i=i-'0';
switch(i)
{
case 1: Add();break;
case 2: Menu();break;
}
}
else
{
printf("\t请输入正确的选项!\n");
system("pause");
Add_Next();
}
}
void Modify()
{
struct contect s1[MAX];
int f;//缓冲量
char name[LEN];
FILE *fp;
system("cls");
fp=fopen("contect.txt","r");
printf("请输入联系人姓名:");
scanf("%s",name);
for(f=0;f<MAX;f++)
{
fread(&s1[f],sizeof(struct contect),1,fp);
if(strcmp(name,s1[f].Name)==0)
{
flag=f;
printf("\t____________________________________________________\n");
printf("\t│姓名:%s\n",s1[f].Name);
printf("\t│电话:%s\n",s1[f].Phone);
printf("\t│地址:%s\n",s1[f].Adress);
printf("\t│邮箱:%s\n",s1[f].Email);
break;
}
}
fclose(fp);
Sleep(300);
Modify_Menu();
}
void Modify_Menu()
{
char i;
printf("\t\t\t______________________________________\t\n");
printf("\t\t\t│ *请输入要修改的信息 │\t\n");
printf("\t\t\t│___________________________________│ \t\n");
printf("\t\t\t│ *【1】姓名 │\t\n");
printf("\t\t\t│ *【2】电话 │\t\n");
printf("\t\t\t│ *【3】地址 │\t\n");
printf("\t\t\t│ *【4】邮箱 │\t\n");
printf("\t\t\t│ *【5】返回 │\t\n");
printf("\t\t\t│___________________________________│\t\n");
printf("\t\t\t<<<<<<<<<请输入选项:");
scanf("%s",&i);
if(i>='1'&&i<='5')
{
i=i-'0';
switch(i)
{
case 1: Modify_Name();break;
case 2: Modify_Phone();break;
case 3: Modify_Adress();break;
case 4: Modify_Email();break;
case 5: Menu();break;
}
}
else
{
printf("\t请输入正确的选项!\n");
system("pause");
Modify_Menu();
}
}
void Modify_Name()
{
int f,count;
char name[LEN];
struct contect s1[MAX];
FILE *fp;
fp=fopen("contect.txt","r");
for(f=0;f<MAX;f++) //记录当前数据数量
{
if(feof(fp)!=0) break;
count=f;
fread(&s1[f],sizeof(struct contect),1,fp);
}
fclose(fp);
printf("----------------------------------------------------------\n");
printf("请输入新的姓名:");
scanf("%s",name);
strcpy(s1[flag].Name,name);
fp=fopen("contect.txt","w");//覆盖掉原来的文件
for(f=0;f<count;f++) //重新写入文件
{
fwrite(&s1[f],sizeof(struct contect),1,fp);
}
fclose(fp);
printf("修改成功!\n");
system("pause");
Modify_Next();
}
void Modify_Phone()
{
int f,count;
char phone[LEN];
struct contect s1[MAX];
FILE *fp;
fp=fopen("contect.txt","r");
for(f=0;f<MAX;f++) //记录当前数据数量
{
if(feof(fp)!=0) break;
count=f;
fread(&s1[f],sizeof(struct contect),1,fp);
}
fclose(fp);
printf("----------------------------------------------------------\n");
printf("请输入新的电话:");
scanf("%s",phone);
strcpy(s1[flag].Phone,phone);
fp=fopen("contect.txt","w");//覆盖掉原来的文件
for(f=0;f<count;f++) //重新写入文件
{
fwrite(&s1[f],sizeof(struct contect),1,fp);
}
fclose(fp);
printf("修改成功!\n");
system("pause");
Modify_Next();
}
void Modify_Adress()
{
int f,count;
char adress[LEN];
struct contect s1[MAX];
FILE *fp;
fp=fopen("contect.txt","r");
for(f=0;f<MAX;f++) //记录当前数据数量
{
if(feof(fp)!=0) break;
count=f;
fread(&s1[f],sizeof(struct contect),1,fp);
}
fclose(fp);
printf("----------------------------------------------------------\n");
printf("请输入新的地址:");
scanf("%s",adress);
strcpy(s1[flag].Adress,adress);
fp=fopen("contect.txt","w");//覆盖掉原来的文件
for(f=0;f<count;f++) //重新写入文件
{
fwrite(&s1[f],sizeof(struct contect),1,fp);
}
fclose(fp);
printf("修改成功!\n");
system("pause");
Modify_Next();
}
void Modify_Email()
{
int f,count;
char email[LEN];
struct contect s1[MAX];
FILE *fp;
fp=fopen("contect.txt","r");
for(f=0;f<MAX;f++) //记录当前数据数量
{
if(feof(fp)!=0) break;
count=f;
fread(&s1[f],sizeof(struct contect),1,fp);
}
fclose(fp);
printf("----------------------------------------------------------\n");
printf("请输入新的邮箱:");
scanf("%s",email);
strcpy(s1[flag].Email,email);
fp=fopen("contect.txt","w");//覆盖掉原来的文件
for(f=0;f<count;f++) //重新写入文件
{
fwrite(&s1[f],sizeof(struct contect),1,fp);
}
fclose(fp);
printf("修改成功!\n");
system("pause");
Modify_Next();
}
void Modify_Next()
{
char i;
system("cls");
printf("\t\t\t______________________________________\t\n");
printf("\t\t\t│ *是否继续? │\t\n");
printf("\t\t\t│___________________________________│ \t\n");
printf("\t\t\t│ *【1】继续 │\t\n");
printf("\t\t\t│ *【2】返回 │\t\n");
printf("\t\t\t│___________________________________│\t\n");
printf("\t\t\t<<<<<<<<<请输入选项:");
scanf("%s",&i);
if(i>='1'&&i<='2')
{
i=i-'0';
switch(i)
{
case 1: Modify_Menu();break;
case 2: Menu();break;
}
}
else
{
printf("\t请输入正确的选项!\n");
system("pause");
Modify_Next();
}
}
void Delete_Menu()
{
char i;
system("cls");
printf("\t\t\t______________________________________\t\n");
printf("\t\t\t│ *请输入选项 │\t\n");
printf("\t\t\t│___________________________________│ \t\n");
printf("\t\t\t│ *【1】按姓名删除 │\t\n");
printf("\t\t\t│ *【2】按电话号码删除 │\t\n");
printf("\t\t\t│ *【3】返回 │\t\n");
printf("\t\t\t│___________________________________│\t\n");
printf("\t\t\t<<<<<<<<<请输入选项:");
scanf("%s",&i);
if(i>='1'&&i<='3')
{
i=i-'0';
switch(i)
{
case 1: Delete_By_Name();break;
case 2: Delete_By_Phone();break;
case 3: Menu();break;
}
}
else
{
printf("\t请输入正确的选项!\n");
system("pause");
Delete_Menu();
}
}
void Delete_By_Name()
{
struct contect s1[MAX];
int f,j,count;//缓冲量
char name[LEN];
FILE *fp;
system("cls");
fp=fopen("contect.txt","r");
printf("请输入姓名:");
scanf("%s",name);
for(f=0;f<MAX;f++)
{
fread(&s1[f],sizeof(struct contect),1,fp);
if(feof(fp)!=0) break;
count=f;
}
for(f=0;f<=count;f++)
{
if(strcmp(name,s1[f].Name)==0)
{
flag=f;
printf("*****************已删除该联系人**************************\n");
printf("\t____________________________________________________\n");
printf("\t│姓名:%s\n",s1[f].Name);
printf("\t│电话:%s\n",s1[f].Phone);
printf("\t│地址:%s\n",s1[f].Adress);
printf("\t│邮箱:%s\n",s1[f].Email);
break;
}
}
fclose(fp);
for(f=flag,j=flag+1;f<=count;f++,j++)
{
s1[f]=s1[j];
}
fp=fopen("contect.txt","w");
for(f=0;f<count;f++)
{
fwrite(&s1[f],sizeof(struct contect),1,fp);
}
fclose(fp);
system("pause");
Delete_Next();
}
void Delete_By_Phone()
{
struct contect s1[MAX];
int f,j,count;//缓冲量
char phone[LEN];
FILE *fp;
system("cls");
fp=fopen("contect.txt","r");
printf("请输入电话号码 ");
scanf("%s",phone);
for(f=0;f<MAX;f++)
{
fread(&s1[f],sizeof(struct contect),1,fp);
if(feof(fp)!=0) break;
count=f;
}
for(f=0;f<=count;f++)
{
if(strcmp(phone,s1[f].Phone)==0)
{
flag=f;
printf("*****************已删除该联系人**************************\n");
printf("\t____________________________________________________\n");
printf("\t│姓名:%s\n",s1[f].Name);
printf("\t│电话:%s\n",s1[f].Phone);
printf("\t│地址:%s\n",s1[f].Adress);
printf("\t│邮箱:%s\n",s1[f].Email);
break;
}
}
fclose(fp);
for(f=flag,j=flag+1;f<=count;f++,j++)
{
s1[f]=s1[j];
}
fp=fopen("contect.txt","w");
for(f=0;f<count;f++)
{
fwrite(&s1[f],sizeof(struct contect),1,fp);
}
fclose(fp);
system("pause");
Delete_Next();
}
void Delete_Next()
{
char i;
system("cls");
printf("\t\t\t______________________________________\t\n");
printf("\t\t\t│ *是否继续? │\t\n");
printf("\t\t\t│___________________________________│ \t\n");
printf("\t\t\t│ *【1】继续 │\t\n");
printf("\t\t\t│ *【2】返回 │\t\n");
printf("\t\t\t│___________________________________│\t\n");
printf("\t\t\t<<<<<<<<<请输入选项:");
scanf("%s",&i);
if(i>='1'&&i<='2')
{
i=i-'0';
switch(i)
{
case 1: Delete_Menu();break;
case 2: Menu();break;
}
}
else
{
printf("\t请输入正确的选项!\n");
system("pause");
Delete_Next();
}
}