/*
***************************电子通讯录*****************************************
*/
/*
纯C版本,TC运行
*/
/*
*************************作者: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");
*/
int
choise;
char
a;
do
{
/*
system("cls");
*/
system(
"
cls
"
);
fflush(stdin);
printf(
"
********************************************************************************
"
);
printf(
"
welcome use this telephone book!
"
);
printf(
"
********************************************************************************
"
);
printf(
"
"
);
printf(
"
1:creat and save
"
);
printf(
"
2:delete info
"
);
printf(
"
3:insert and save
"
);
printf(
"
4:search info
"
);
printf(
"
5:putout info
"
);
printf(
"
6:amend info
"
);
printf(
"
7:exit system
"
);
printf(
"
please input you choise:
"
);
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(
"
input error,input blank(
"
"
) to afresh do it
"
);
if
((a
=
getche())
==
'
'
)
{
Zhu_d();
}
else
{
system(
"
cls
"
);
printf(
"
input error,you have lase chance to input blank(
"
"
) to afresh do it
"
);
if
((a
=
getche())
==
'
'
)
{
Zhu_d();
}
}
}
}
while
(choise
<
7
&&
choise
>
0
);
}
void
input()
{
char
key[
4
];
int
i
=
1
;
person numbone;
if
((fp
=
fopen(filename,
"
w
"
))
==
NULL)
{
printf(
"
can not open file!
"
);
exit(
1
);
}
system(
"
cls
"
);
/*
*********************修改*****************************
*/
fprintf(fp,
"
%-10s%-20s%-50s
"
,
"
name
"
,
"
telephone
"
,
"
address
"
);
/*
******************************************************
*/
do
{
printf(
"
input of%d friend name:
"
,i);
fflush(stdin);
gets(numbone.name);
printf(
"
input of%d friend telephone:
"
,i);
fflush(stdin);
gets(numbone.tel);
printf(
"
input of%d friend address:
"
,i);
fflush(stdin);
gets(numbone.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
++
;
}
while
(
!
strcmpi(key,
"
yes
"
));
printf(
"
finish input info
"
);
fclose(fp);
printf(
"
press any key to return!
"
);
getch();
}
void
del()
{
char
name[
20
];
person del;
int
flag
=
0
;
int
m;
long
offset;
if
((fp
=
fopen(filename,
"
r+
"
))
==
NULL)
{
printf(
"
file can not open
"
);
exit(
1
);
}
system(
"
cls
"
);
fflush(stdin);
printf(
"
input you will delete info's name:
"
);
gets(name);
/*
puts(name);
*/
rewind(fp);
while
(
!
feof(fp))
{
offset
=
ftell(fp);
fgets(del.name,strlen(name)
+
1
,fp);
if
(strcmpi(name,del.name)
==
0
)
{
flag
=
1
;
break
;
}
}
if
(flag)
{
printf(
"
already find, register:
"
);
fseek(fp,offset,SEEK_SET);
fscanf(fp,
"
%s%s%s
"
,del.name,del.tel,del.Address);
printf(
"
name:%s
"
,del.name);
printf(
"
telephone:%s
"
,del.tel);
printf(
"
address:%s
"
,del.Address);
printf(
"
delete press 1,no delete press 0:
"
);
scanf(
"
%d
"
,
&
m);
if
(m)
{
fseek(fp,offset,SEEK_SET);
fprintf(fp,
"
%-20s%-20s%-50s
"
,
""
,
""
,
""
);
}
}
else
{
printf(
"
sorry,in data was not find you will delete info!
"
);
}
printf(
"
work ok!
"
);
fclose(fp);
printf(
"
press any key to return
"
);
getch();
}
void
append()
{
person one;
if
((fp
=
fopen(filename,
"
a+
"
))
==
NULL)
{
printf(
"
can not open file!
"
);
exit(
1
);
}
system(
"
cls
"
);
printf(
"
input name:
"
);
fflush(stdin);
gets(one.name);
printf(
"
input telephone:
"
);
fflush(stdin);
gets(one.tel);
printf(
"
input address:
"
);
fflush(stdin);
gets(one.Address);
printf(
"
work ok!
"
);
fprintf(fp,
"
%-20s%-20s%-50s
"
,one.name,one.tel,one.Address);
fclose(fp);
printf(
"
press any key to return
"
);
getch();
}
void
search()
{
char
Search_name[
20
];
person find;
int
flag
=
0
;
if
((fp
=
fopen(filename,
"
r+
"
))
==
NULL)
{
printf(
"
can not open file
"
);
exit(
1
);
}
system(
"
cls
"
);
printf(
"
input you will search name:
"
);
fflush(stdin);
gets(Search_name);
puts(Search_name);
printf(
"
input ok
"
);
fflush(stdin);
rewind(fp);
while
(
!
feof(fp))
{
fscanf(fp,
"
%s%s%s
"
,find.name,find.tel,find.Address);
if
(strcmpi(Search_name,find.name)
==
0
)
{
flag
=
1
;
printf(
"
flag = %d
"
,flag);
break
;
}
}
if
(flag)
{
printf(
"
alread search you input info!
"
);
printf(
"
name:%-20s telephone:%-20s address:%-50s
"
,find.name,find.tel,find.Address);
}
else
{
printf(
"
sorry,not find you input data!
"
);
}
fclose(fp);
printf(
"
press any key to return
"
);
getch();
}
void
putout()
{
char
ch;
if
((fp
=
fopen(filename,
"
r+
"
))
==
NULL)
{
printf(
"
can not open file
"
);
exit(
1
);
}
system(
"
cls
"
);
rewind(fp);
ch
=
fgetc(fp);
while
(ch
!=
EOF)
{
putchar(ch);
ch
=
fgetc(fp);
}
printf(
"
input ok!
"
);
printf(
"
press any to return
"
);
fclose(fp);
getch();
}
void
quit()
{
system(
"
cls
"
);
fflush(stdin);
exit(
0
);
}
void
modify()
{
person amend;
person Search;
int
k,flag
=
0
;
long
offset;
if
((fp
=
fopen(filename,
"
r+
"
))
==
NULL)
{
printf(
"
can not open!
"
);
exit(
1
);
}
system(
"
cls
"
);
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(
"
name:%s
"
,Search.name);
printf(
"
telephone:%s
"
,Search.tel);
printf(
"
address:%s
"
,Search.Address);
printf(
"
delete press1,not press0:
"
);
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(); }