/*
************************************电子通讯录****************************************
*/
// 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();
}