/*************************************电子通讯录*****************************************/
// VC版本.转载请保持作者所有权 //
/************************************作者:CHLAWS**************************************/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#define LEN 10
typedef struct {
char name[8];
char tel[17];
char Address[50];
}person;
char filename[20]="telephone.dat";
FILE *fp;
void input();
void del();
void append();
void search();
void putout();
void Zhu_d();
void quit();
void modify();
void Zhu_d()
{
system("cls");
fflush(stdin);
int choise;
char a;
do{
system("cls");
printf(" ******************************************************************************** ");
printf(" 欢迎使用电子通讯录 ");
printf(" ******************************************************************************** ");
printf(" ");
printf(" 1:创建并保存 ");
printf(" 2:删除记录 ");
printf(" 3:插入并保存 ");
printf(" 4:查询 ");
printf(" 5:输出 ");
printf(" 6:修改 ");
printf(" 7:退出 ");
printf(" 输入你的选择:");
fflush(stdin);
scanf("%d",&choise);
printf("choise = %d",choise);
switch(choise)
{
case 1: input(); break; /*输入并保存函数*/
case 2: del(); break; /*删除函数*/
case 3: append(); break; /*插入函数*/
case 4: search(); break; /*查找函数*/
case 5: putout(); break; /*输出函数*/
case 6: modify(); break; /*修改函数*/
case 7: quit(); break; /*退出函数*/
default :
system("cls");
printf(" 输入错误,按空格重新来过 ");
if((a = getche()) == ' ')
{
Zhu_d();
}
else
{
system("cls");
printf(" 还是输入错误,按空格重新来过,再次输入错误程序将退出 ");
if((a = getche()) == ' ')
{
Zhu_d();
}
}
}
}while(choise<7 && choise>0);
}
void input()
{
system("cls");
fflush(stdin);
char key[4];
int i=1;
person numbone;
//char name[20]="姓名",tel[20]="电话号码",Address[50]="地址";
//printf(" 输入地址通讯薄的名字: ");
// gets(filename);
if((fp=fopen(filename,"w")) == NULL)
{
printf(" 不能打开! ");
exit(1);
}
/**********************修改******************************/
fprintf(fp,"%-10s%-20s%-50s ","姓名","电话号码","地址");
/********************************************************/
do{
printf(" 输入第%d个人的姓名:",i);
fflush(stdin);
gets(numbone.name);
printf(" 输入第%d个人的电话号码:",i);
fflush(stdin);
gets(numbone.tel);
printf(" 输入第%d个人的地址:",i);
fflush(stdin);
gets(numbone.Address);
//fprintf(fp,"%-20s%-20s%-50s ",name,tel,Address);
fprintf(fp," %-20s%-20s%-50s ",numbone.name,numbone.tel,numbone.Address);
printf("are you continue input data?(yes/no) ");
fflush(stdin);
gets(key);
i++;
printf(" 输入完成 ");
}while(!strcmpi(key,"yes"));
fclose(fp);
printf(" 按任意键返回主界面 ");
getch();
}
void del()
{
system("cls");
fflush(stdin);
char name[20];
person del;
int flag=0;
int m;
long offset;
if((fp=fopen(filename,"r+")) == NULL)
{
printf("文件不存在 ");
exit(1);
}
printf("输入要删除的姓名:");
gets(name);
puts(name);
rewind(fp);
while(!feof(fp))
{
offset = ftell(fp); //
fgets(del.name,strlen(name)+1,fp);
//fscanf(fp,"%s%s%s",del.name,del.tel,del.Address);
if(strcmpi(name,del.name) == 0)
{
flag = 1;
break;
}
}
if(flag)
{
printf("已经找到,记录为: ");
fseek(fp,offset,SEEK_SET);
fscanf(fp,"%s%s%s",del.name,del.tel,del.Address);
printf("姓名:%s ",del.name);
printf("电话号码:%s ",del.tel);
printf("地址:%s ",del.Address);
printf("确认删除请按1,不删除请按0: ");
scanf("%d",&m);
if(m)
{
fseek(fp,offset,SEEK_SET);
//fprintf(fp,"%-90s","");
fprintf(fp,"%-20s%-20s%-50s","","","");
}
}
else
{
printf("没找到你要删除的记录! ");
}
printf("操作完成! ");
fclose(fp);
getch();
}
void append()
{
system("cls");
fflush(stdin);
person one;
if((fp=fopen(filename,"a+")) == NULL)
{
printf("不能打开文件! ");
exit(1);
}
printf("输入姓名: ");
gets(one.name);
printf("输入电话号码: ");
gets(one.tel);
printf("输入地址: ");
gets(one.Address);
printf("操作完成");
fprintf(fp,"%-20s%-20s%-50s ",one.name,one.tel,one.Address);
fclose(fp);
printf(" 按任意键返回 ");
getch();
}
void search()
{
system("cls");
fflush(stdin);
char Search_name[20];
person find;
int flag = 0;
if((fp=fopen(filename,"r+")) == NULL)
{
printf("不能打开文件 ");
exit(1);
}
printf("输入你要查找的姓名: ");
gets(Search_name);
puts(Search_name);
printf("输入完成 ");
fflush(stdin);
rewind(fp);
while(!feof(fp))
{
fscanf(fp,"%s%s%s",find.name,find.tel,find.Address);
//printf("姓名:%-20s 电话号码:%-20s 地址:%-50s ",one.name,one.tel,one.Address);
if(strcmpi(Search_name,find.name) == 0)
{
flag = 1;
printf("flag = %d ",flag);
break;
}
}
if(flag)
{
printf(" 你要查找的记录已经知道! ");
printf("姓名:%-20s 电话号码:%-20s 地址:%-50s ",find.name,find.tel,find.Address);
}
else
{
printf("没有找到你要查找的! ");
}
fclose(fp);
printf(" 按任意键返回 ");
getch();
}
void putout()
{
system("cls");
fflush(stdin);
char ch;
if((fp=fopen(filename,"r+")) == NULL)
{
printf("不能打开 ");
exit(1);
}
rewind(fp);
ch = fgetc(fp);
while(ch != EOF)
{
putchar(ch);
ch = fgetc(fp);
}
printf(" 输入完成! ");
printf(" 按任意键返回 ");
fclose(fp);
getch();
}
void quit()
{
system("cls");
fflush(stdin);
exit(0);
}
void modify()
{
system("cls");
fflush(stdin);
person amend;
person Search;
int k,flag = 0;
long offset;
if((fp=fopen(filename,"r+"))==NULL)
{
printf("can not open! ");
exit(1);
}
printf("in here you can amend data! ");
printf(" input will amend name,system if find it,will show! ");
printf("amend name:");
fflush(stdin);
gets(amend.name);
while(!feof(fp))
{
offset = ftell(fp);
fgets(Search.name,strlen(amend.name)+1,fp);
if(strcmpi(Search.name,amend.name) == 0)
{
flag = 1;
break;
}
}
if(flag)
{
printf("you input amend was find: ");
fseek(fp,offset,SEEK_SET);
fscanf(fp,"%s%s%s",Search.name,Search.tel,Search.Address);
printf("姓名:%s ",Search.name);
printf("电话号码:%s ",Search.tel);
printf("地址:%s ",Search.Address);
printf("确认要修改请按1,不修改请按0: ");
fflush(stdin);
scanf("%d",&k);
}
if(k)
{
printf("input new name: ");
fflush(stdin);
gets(amend.name);
printf("input new telephone number: ");
fflush(stdin);
gets(amend.tel);
printf("input new address: ");
fflush(stdin);
gets(amend.Address);
fseek(fp,offset,SEEK_SET);
fprintf(fp,"%-20s%-20s%-50s",amend.name,amend.tel,amend.Address);
}
fclose(fp);
printf(" amend ok! ");
printf(" press any key to return! ");
getch();
return;
}
void main()
{
Zhu_d();
getch();
}
// VC版本.转载请保持作者所有权 //
/************************************作者:CHLAWS**************************************/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#define LEN 10
typedef struct {
char name[8];
char tel[17];
char Address[50];
}person;
char filename[20]="telephone.dat";
FILE *fp;
void input();
void del();
void append();
void search();
void putout();
void Zhu_d();
void quit();
void modify();
void Zhu_d()
{
system("cls");
fflush(stdin);
int choise;
char a;
do{
system("cls");
printf(" ******************************************************************************** ");
printf(" 欢迎使用电子通讯录 ");
printf(" ******************************************************************************** ");
printf(" ");
printf(" 1:创建并保存 ");
printf(" 2:删除记录 ");
printf(" 3:插入并保存 ");
printf(" 4:查询 ");
printf(" 5:输出 ");
printf(" 6:修改 ");
printf(" 7:退出 ");
printf(" 输入你的选择:");
fflush(stdin);
scanf("%d",&choise);
printf("choise = %d",choise);
switch(choise)
{
case 1: input(); break; /*输入并保存函数*/
case 2: del(); break; /*删除函数*/
case 3: append(); break; /*插入函数*/
case 4: search(); break; /*查找函数*/
case 5: putout(); break; /*输出函数*/
case 6: modify(); break; /*修改函数*/
case 7: quit(); break; /*退出函数*/
default :
system("cls");
printf(" 输入错误,按空格重新来过 ");
if((a = getche()) == ' ')
{
Zhu_d();
}
else
{
system("cls");
printf(" 还是输入错误,按空格重新来过,再次输入错误程序将退出 ");
if((a = getche()) == ' ')
{
Zhu_d();
}
}
}
}while(choise<7 && choise>0);
}
void input()
{
system("cls");
fflush(stdin);
char key[4];
int i=1;
person numbone;
//char name[20]="姓名",tel[20]="电话号码",Address[50]="地址";
//printf(" 输入地址通讯薄的名字: ");
// gets(filename);
if((fp=fopen(filename,"w")) == NULL)
{
printf(" 不能打开! ");
exit(1);
}
/**********************修改******************************/
fprintf(fp,"%-10s%-20s%-50s ","姓名","电话号码","地址");
/********************************************************/
do{
printf(" 输入第%d个人的姓名:",i);
fflush(stdin);
gets(numbone.name);
printf(" 输入第%d个人的电话号码:",i);
fflush(stdin);
gets(numbone.tel);
printf(" 输入第%d个人的地址:",i);
fflush(stdin);
gets(numbone.Address);
//fprintf(fp,"%-20s%-20s%-50s ",name,tel,Address);
fprintf(fp," %-20s%-20s%-50s ",numbone.name,numbone.tel,numbone.Address);
printf("are you continue input data?(yes/no) ");
fflush(stdin);
gets(key);
i++;
printf(" 输入完成 ");
}while(!strcmpi(key,"yes"));
fclose(fp);
printf(" 按任意键返回主界面 ");
getch();
}
void del()
{
system("cls");
fflush(stdin);
char name[20];
person del;
int flag=0;
int m;
long offset;
if((fp=fopen(filename,"r+")) == NULL)
{
printf("文件不存在 ");
exit(1);
}
printf("输入要删除的姓名:");
gets(name);
puts(name);
rewind(fp);
while(!feof(fp))
{
offset = ftell(fp); //
fgets(del.name,strlen(name)+1,fp);
//fscanf(fp,"%s%s%s",del.name,del.tel,del.Address);
if(strcmpi(name,del.name) == 0)
{
flag = 1;
break;
}
}
if(flag)
{
printf("已经找到,记录为: ");
fseek(fp,offset,SEEK_SET);
fscanf(fp,"%s%s%s",del.name,del.tel,del.Address);
printf("姓名:%s ",del.name);
printf("电话号码:%s ",del.tel);
printf("地址:%s ",del.Address);
printf("确认删除请按1,不删除请按0: ");
scanf("%d",&m);
if(m)
{
fseek(fp,offset,SEEK_SET);
//fprintf(fp,"%-90s","");
fprintf(fp,"%-20s%-20s%-50s","","","");
}
}
else
{
printf("没找到你要删除的记录! ");
}
printf("操作完成! ");
fclose(fp);
getch();
}
void append()
{
system("cls");
fflush(stdin);
person one;
if((fp=fopen(filename,"a+")) == NULL)
{
printf("不能打开文件! ");
exit(1);
}
printf("输入姓名: ");
gets(one.name);
printf("输入电话号码: ");
gets(one.tel);
printf("输入地址: ");
gets(one.Address);
printf("操作完成");
fprintf(fp,"%-20s%-20s%-50s ",one.name,one.tel,one.Address);
fclose(fp);
printf(" 按任意键返回 ");
getch();
}
void search()
{
system("cls");
fflush(stdin);
char Search_name[20];
person find;
int flag = 0;
if((fp=fopen(filename,"r+")) == NULL)
{
printf("不能打开文件 ");
exit(1);
}
printf("输入你要查找的姓名: ");
gets(Search_name);
puts(Search_name);
printf("输入完成 ");
fflush(stdin);
rewind(fp);
while(!feof(fp))
{
fscanf(fp,"%s%s%s",find.name,find.tel,find.Address);
//printf("姓名:%-20s 电话号码:%-20s 地址:%-50s ",one.name,one.tel,one.Address);
if(strcmpi(Search_name,find.name) == 0)
{
flag = 1;
printf("flag = %d ",flag);
break;
}
}
if(flag)
{
printf(" 你要查找的记录已经知道! ");
printf("姓名:%-20s 电话号码:%-20s 地址:%-50s ",find.name,find.tel,find.Address);
}
else
{
printf("没有找到你要查找的! ");
}
fclose(fp);
printf(" 按任意键返回 ");
getch();
}
void putout()
{
system("cls");
fflush(stdin);
char ch;
if((fp=fopen(filename,"r+")) == NULL)
{
printf("不能打开 ");
exit(1);
}
rewind(fp);
ch = fgetc(fp);
while(ch != EOF)
{
putchar(ch);
ch = fgetc(fp);
}
printf(" 输入完成! ");
printf(" 按任意键返回 ");
fclose(fp);
getch();
}
void quit()
{
system("cls");
fflush(stdin);
exit(0);
}
void modify()
{
system("cls");
fflush(stdin);
person amend;
person Search;
int k,flag = 0;
long offset;
if((fp=fopen(filename,"r+"))==NULL)
{
printf("can not open! ");
exit(1);
}
printf("in here you can amend data! ");
printf(" input will amend name,system if find it,will show! ");
printf("amend name:");
fflush(stdin);
gets(amend.name);
while(!feof(fp))
{
offset = ftell(fp);
fgets(Search.name,strlen(amend.name)+1,fp);
if(strcmpi(Search.name,amend.name) == 0)
{
flag = 1;
break;
}
}
if(flag)
{
printf("you input amend was find: ");
fseek(fp,offset,SEEK_SET);
fscanf(fp,"%s%s%s",Search.name,Search.tel,Search.Address);
printf("姓名:%s ",Search.name);
printf("电话号码:%s ",Search.tel);
printf("地址:%s ",Search.Address);
printf("确认要修改请按1,不修改请按0: ");
fflush(stdin);
scanf("%d",&k);
}
if(k)
{
printf("input new name: ");
fflush(stdin);
gets(amend.name);
printf("input new telephone number: ");
fflush(stdin);
gets(amend.tel);
printf("input new address: ");
fflush(stdin);
gets(amend.Address);
fseek(fp,offset,SEEK_SET);
fprintf(fp,"%-20s%-20s%-50s",amend.name,amend.tel,amend.Address);
}
fclose(fp);
printf(" amend ok! ");
printf(" press any key to return! ");
getch();
return;
}
void main()
{
Zhu_d();
getch();
}