| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 812 人关注过本帖
标题:一个电话薄的程序,怎么能够达到程序这个效果,删除修改没法实现
只看楼主 加入收藏
zbyw007
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-12-29
收藏
 问题点数:0 回复次数:2 
一个电话薄的程序,怎么能够达到程序这个效果,删除修改没法实现
task.zip (45.7 KB)

我的代码是
#include <stdio.h>
#include <stdlib.h>//标准库头文件
#include <string.h> //字符数组函数定义文件
#include <conio.h> //控制台输入输出

struct record
{
    char id[10];
    char name[20];  
    char tel[20];
    char adress[40];
    char postcode[10];
    char qq[30];
}

lianxiren[500];
int num=0;//库中总记录数
FILE *fp;
void mainmenu();
void newrecord();
void searchmenu();
void searchbyid();
void showall();
void readfromfile();
void writetofile();
void removelxr();

void main()
{
    readfromfile();
    while (1)
    {
    mainmenu();
    }
}


void readfromfile()
{
    if((fp=fopen("data.txt","rb"))==0)
    {
        printf("\n通讯录不存在");
        if ((fp=fopen("data.txt","wb"))==0)
        {
            printf("\n建立失败");
            exit(0);
        }
            else
        {
            printf("\n通讯录已建立");
            printf("\n按任意键进入主菜单");
            getch();
            return;
        }
        exit(0);
    }
    fseek(fp,0,2);

    if (ftell(fp)>0) /*非空白*/
    {
        rewind(fp);
        for (num=0;!feof(fp) && fread(&lianxiren[num],sizeof(struct record),1,fp);num++);
                printf("\n文件导入成功");
                printf("\n按任意键返回主菜单");
                getch();
                return;
    }
     printf("\n文件导入成功");
     printf("\n通讯录文件中无任何纪录");
     printf("\n按任意键返回主菜单");
     getch();
    return;
    }

 
void mainmenu()
{
    char choic;
    system("cls");
    printf("主菜单\n\n");
    printf("新添联系人    [1]\n");
    printf("查询已有联系人    [2]\n");
    printf("删除联系人    [3]\n");
    printf("保存并退出    [4]\n");
    printf("不保存并退出    [5]\n");
    printf("*******************\n");
    printf("请选择:");
    choic=getch();
    switch (choic)
    {
        case '1':newrecord();break;
        case '2':searchmenu();break;
        case '3':removelxr();break;
        case '4':writetofile();break;
        case '5':exit(0);
        default:mainmenu();
    }
}
void searchmenu()//查询菜单
{
    char choic;
    system("cls");
    printf("查询菜单\n\n");
    printf("显示所有    [1]\n");
    printf("按编号查询    [2]\n");
    printf("回到主菜单    [3]\n");
    printf("***************\n");
    printf("请选择:");
    choic=getch();
    switch (choic)
    {
        case '1':showall();break;
        case '2':searchbyid();break;
        case '3':mainmenu();break;
    }
}
void newrecord()//添加纪录
{
    printf("请输入联系人信息\n\n");
    printf("指定编号:");
    scanf("%s",&lianxiren[num].id);
    printf("输入姓名:");
    scanf("%s",&lianxiren[num].name);
    printf("输入电话号码:");
    scanf("%s",&lianxiren[num].tel);
    printf("输入地址:");
    scanf("%s",&lianxiren[num].adress);
    printf("输入邮编:");
    scanf("%s",&lianxiren[num].postcode);
    printf("输入QQ:");
    scanf("%s",&lianxiren[num].qq);
    num++;
    printf("是否继续添加?(Y/N):");
    if (getch()=='y')
        newrecord();
    return;
}
void showall()//显示所有
{
    int i;
    system("cls");
    if(num!=0)
    {
        printf("以下为通讯录所有信息\n\n");
        for (i=0;i<num;i++)
        {
            printf("编号: %s",lianxiren[i].id);
            printf("\n姓名: %s",lianxiren[i].name);
            printf("\n电话: %s",lianxiren[i].tel);
            printf("\n地址: %s",lianxiren[i].adress);
            printf("\n邮编: %s",lianxiren[i].postcode);
            printf("\nQQ:%s",lianxiren[i].qq);
            

                if (i+1<num)
                {
                printf("****************");
                system("pause");
                }
        }
        printf("*******************");
    }
    else
        printf("通讯录中无任何纪录");
        printf("按任意键返回主菜单:");
        getch();
        return;
}



void searchbyid()
{

    int i;
    char id[10];
    printf("按编号查找\n\n");  
    printf("请输入编号:");
    scanf("%s",&id);
    for(i=0;i<num;i++)
    {
        if (strcmp(lianxiren[i].id,id)==0)
        {
            printf("以下是您查找的联系人信息");
            printf("编号: %s",lianxiren[i].id);
            printf("\n姓名: %s",lianxiren[i].name);
            printf("\n电话: %s",lianxiren[i].tel);
            printf("\n地址: %s",lianxiren[i].adress);
            printf("\nQQ号码:%s",lianxiren[i].qq);  
            printf("\n任意键返回主菜单:");
            getch();
            return;
        }
    }

}
void removelxr()
    {
        
        int i;
        char id[10];
        printf("输入要删除的联系人编号");
        scanf("%s",&id);
    for(i=0;i<num;i++)
    {
        if (remove(lianxiren[i].id,id)==0)
        {
        printf("删除联系人成功");        
        }else
            printf("删除失败");
            printf("按任意键返回主菜单:");
            getch();
            return;
   
   
   
    }




    }



void writetofile()
{
    int i;
    if ((fp=fopen("data.txt","wb"))==0)
    {
        printf("\n文件未能打开");
    }
    for (i=0;i<num;i++)
    {
        if (fwrite(&lianxiren[i],sizeof(struct record),1,fp)!=1)
        {
            printf("\n写入文件错误!\n");
        }
    }
    fclose(fp);
    printf("\n通讯录已保存");
    printf("\n任意键退出程序\n");
    exit(0);
}

搜索更多相关主题的帖子: 电话 include record 控制台 
2011-12-29 11:09
zbyw007
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-12-29
收藏
得分:0 
删除的部分没法实现啊,本人新手,请各位大侠帮帮忙
2011-12-29 15:03
liuting8181
Rank: 2
等 级:论坛游民
帖 子:54
专家分:19
注 册:2011-4-21
收藏
得分:0 
回复 2楼 zbyw007
用数组做的话,首先这是个静态数组,你要删除某个数据,得用后面数据覆盖前面那一个,另外这个应该在C语言论坛问吧
2012-01-09 16:34
快速回复:一个电话薄的程序,怎么能够达到程序这个效果,删除修改没法实现
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028145 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved