(c语言VC版)电子通讯录

/* ************************************电子通讯录**************************************** */
//                                   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();    
}
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值