(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();    
}
 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值