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