您的位置:首页 > 其它

Day12-实战(单项链表循环-通讯录)

2016-01-10 23:28 267 查看
#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#define Data_Base "phoneNumber.txt"

typedef struct{

    int ID;

    char name[15];

    char phoneNumber[15];

}phoneNum;

phoneNum Nums[1024];

int user_Num=0;

void addUser();

void delUser();

void printUser();

void updateUser();

void searchUser();

int main(int argc,
const char * argv[]) {

    while (1) {

        FILE *p =fopen(Data_Base, "r");

        if(p!=NULL){

            printf("\n===============\n");

            fread(&user_Num, sizeof(int), 1, p);

            for (int i=0; i<user_Num; i++) {

                fread(&Nums[i], sizeof(phoneNum), 1, p);

                printf("%d %s %s\n",Nums[i].ID,Nums[i].name,Nums[i].phoneNumber);

            }

            printf("===============\n");

            int temp=0;

            printf("已打开文件\n");

            printf("*************************\n");

            printf("***** 1.添加联系人   ******\n");

            printf("***** 2.删除联系人   ******\n");

            printf("***** 3.修改联系人   ******\n");

            printf("***** 4.查看所有联系人 *****\n");

            printf("***** 5.搜索联系人   ******\n");

            printf("***** 6.退出系统   ********\n");

            printf("*************************\n");

            scanf("%d",&temp);

            switch (temp) {

       
4000
        case 1:

                    addUser();

                    break;

                case 2:

                    delUser();

                    break;

                case 3:

                    updateUser();

                    break;

                case 4:

                    printUser();

                    break;

                case 5:

                    searchUser();

                    break;

                case 6:

                    printf("系统正在退出~\n");

                    return 0;

                default:

                    printf("输入有误,系统选择退出\n");

                    return 0;

            }

            

        }

        else{

            FILE *b =fopen("phoneNumber.txt",
"w");

            printf("开始初始化\n");

            fwrite(&user_Num, sizeof(int), 1, b);

            printf("初始化结束\n");

            fclose(b);

            continue;

        }

        fclose(p);

    }

    

    return 0;

}

void addUser(){

    FILE *p =fopen(Data_Base, "r");

    if (p!=NULL) {

        fread(&user_Num, sizeof(int), 1, p);

        char name[15];

        printf("请输入联系人姓名\n");

        scanf("%s",name);

        char phone[20];

        printf("请输入联系人电话\n");

        scanf("%s",phone);

        printf("确定要添加联系人%s
手机号%s吗?0.取消 1.确定\n",name,phone);

        int temp=0;

        scanf("%d",&temp);

        if(1==temp){

            printf("正在输入\n");

            for (int i=0; i<user_Num; i++) {

                fread(&Nums[i], sizeof(phoneNum), 1, p);

            }

            

            FILE *b=fopen(Data_Base, "w");

            

            Nums[user_Num].ID=user_Num+1;

            strcpy(Nums[user_Num].name, name);

            strcpy(Nums[user_Num].phoneNumber, phone);

            user_Num++;

            fwrite(&user_Num, sizeof(int), 1, b);

            for (int i=0; i<user_Num; i++) {

                fwrite(&Nums[i], sizeof(phoneNum), 1, b);

            }

            printf("添加成功\n");

            fclose(b);

            

        }

    

    }

    else{

       printf("程序出错!(同志,快醒醒,有行代码出错误了快改改!\n");

    }

    fclose(p);

}

void delUser(){

    FILE *p=fopen(Data_Base, "r");

    FILE *b=fopen(Data_Base, "w");

    int temp=0,yes=0;

    printf("%d",user_Num);

    fread(&user_Num, sizeof(int), 1, p);

    if (b!=NULL) {

        for (int i=0; i<user_Num; i++) {

            fread(&Nums[i], sizeof(phoneNum), 1, p);

            printf("%d %s %s\n",Nums[i].ID,Nums[i].name,Nums[i].phoneNumber);

        }

        printf("请输入要删除的联系人的ID\n");

        scanf("%d",&temp);

        printf("确定要删除%d号联系人吗?0.取消
1.确定\n",temp);

        scanf("%d",&yes);

        if(1==yes){

            for (int i=temp; i<user_Num; i++) {

                        Nums[i-1].ID=Nums[i].ID-1;

                        strcpy(Nums[i-1].name, Nums[i].name);

                        strcpy(Nums[i-1].phoneNumber, Nums[i].phoneNumber);

            }

            user_Num--;

            fwrite(&user_Num, sizeof(int), 1, b);

            for (int i=0; i<user_Num; i++) {

                fwrite(&Nums[i], sizeof(phoneNum), 1, b);

            }

            printf("删除成功!\n");

        }

        else{

            printf("已经取消删除\n");

        }

    }

    else {

        printf("程序出错!(同志,快醒醒,有行代码出错误了快改改!\n");

    }

    fclose(b);

}

void updateUser(){

        FILE *p=fopen(Data_Base, "r");

        if (p!=NULL) {

            fread(&user_Num, sizeof(int), 1, p);

            for (int i=0; i<user_Num; i++) {

                fread(&Nums[i], sizeof(phoneNum), 1, p);

            }

            printf("请输入要修改的ID\n");

            int temp=0;

            scanf("%d",&temp);

            printf("请输入新的姓名以及新的电话
以空格隔开\n");

            char name[20];

            char phoneNumber[20];

            scanf("%s %s",name,phoneNumber);

            printf("确定要修改%d号联系人吗?0.取消
1.确定\n",temp);

            int yes=0;

            scanf("%d",&yes);

            if (1==yes) {

                FILE *b=fopen(Data_Base, "w");

                strcpy(Nums[temp-1].name, name);

                strcpy(Nums[temp-1].phoneNumber, phoneNumber);

                fwrite(&Nums, sizeof(phoneNum), 1, b);

                printf("修改成功!\n");

            }

            else{

                printf("修改取消!\n");

            }

        }

        else{

            printf("程序出错!(同志,快醒醒,有行代码出错误了快改改!\n");

        }

            fclose(p);

}

void printUser(){

    FILE *p=fopen(Data_Base, "r");

    if (p!=NULL) {

        fread(&user_Num, sizeof(int), 1, p);

        for (int i=0; i<user_Num; i++) {

            fread(&Nums[i], sizeof(phoneNum), 1, p);

            printf("ID=%d,name=%s,phoneNumber=%s",Nums[i].ID,Nums[i].name,Nums[i].phoneNumber);

        }

    }

}

void searchUser(){

    FILE *p=fopen(Data_Base, "r");

    if (p!=NULL) {

        fread(&user_Num, sizeof(int), 1, p);

        for (int i=0; i<user_Num; i++) {

            fread(&Nums[i], sizeof(phoneNum), 1, p);

        }

        printf("请输入要查询的用户姓名\n");

        char name[20];

        scanf("%s",name);

        int i=0;

        for (; i<user_Num; i++) {

            if (strcmp(Nums[i].name, name)==0){

                printf("ID=%d,name=%s,phoneNumber=%s\n",Nums[i].ID,Nums[i].name,Nums[i].phoneNumber);

                break;

            }

        }

        if (i==user_Num) {

            printf("我跟你说!查无此人!\n");

        }

    }

    else{

        printf("程序出错!(同志,快醒醒,有行代码出错误了快改改!\n");

    }

    fclose(p);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: