【黑马程序员】C语言—通讯录系统的实现

来源:互联网 发布:php 去除所有html标签 编辑:程序博客网 时间:2024/05/16 18:56


------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


c语言通讯录系统实现:

需求分析:

利用文件读,写的方法 

实现增加通讯录联系人信息

实现删除通讯录联系人信息

实现查找通讯录联系人信息

实现修改通讯录联系人信息

实现查看现有通讯录联系人信息


代码实现:

<span style="font-size:14px;">////  main.c//  C语言通讯录实现////  Created by Brisinga on 15/10/14.//  Copyright © 2015年 yan. All rights reserved.//#include <stdio.h>#include<string.h>#define LEN 10#define NAMELEN 22#define TELLEN 12//*************结构体变量定义****************//定义联系人的个数int contactCount = 0;//定义结构体typedef struct{    //定义联系人姓名    char name[NAMELEN];    //定义联系人电话    char tel[TELLEN];}Person;//初始化联系人数组Person contact[LEN];//定义文件名char *path = "a.data";//接收用户输入的编号int no;//**************函数声明********************//初始化声明void init();//校验声明int isValid(int n,int min,int max);//添加联系人void addContact();//删除联系人void deleteContact();//修改联系人void updateContact();//查看所有联系人void doList();//搜索联系人void searchContact();//退出系统void quit();//联系人写入文件void writeFile();//***************************************int main(int argc, const char * argv[]) {         //通讯录初始化    init();    printf("通讯录初始化成功!\n");                while (1) {                //定义界面    printf("**********************************\n");    printf("***********欢迎使用通讯录***********\n");    printf("***********1.添加联系人*************\n");    printf("***********2.删除联系人*************\n");    printf("***********3.修改联系人*************\n");    printf("***********4.查看所有联系人**********\n");    printf("***********5.搜索联系人*************\n");    printf("***********6.退出系统***************\n");    printf("**********************************\n");                        //提示用户输入编号        printf("请输入要进行操作的编号:\n");        scanf("%d",&no);        //判断输入是否合法        isValid(no, 1, 6);        //判断用户的操作        switch (no) {            case 1:                //添加联系人                addContact();                break;            case 2:                //删除联系人                deleteContact();                break;            case 3:                //更新联系人                updateContact();                break;            case 4:                //查看联系人                doList();                break;            case 5:                //搜索联系人                searchContact();                break;            case 6:                //退出                quit();                return 0;                            default:                break;        }            }    return 0;}//通讯录初始化void init(){    //定义文件指针    FILE *fp = fopen(path, "r");    //判断通讯录是否存在    if (fp!=NULL) {    //如果存在    //1.读取联系人个数        fread(&contactCount, sizeof(contactCount), 1, fp);    //2.读取每一个联系人nts        for (int i=0; i<contactCount; i++) {            fread(&contact[i], sizeof(Person), 1, fp);        }            }else{        //如果不存在    //创建通讯录        fp = fopen(path, "wb");    //写入当前联系人的个数        fwrite(&contactCount, sizeof(contactCount), 1, fp);    }    fclose(fp);}//校验输入是否合法int isValid(int n,int min,int max){        //如果输入的编号大于min小于max,则返回0    if (n>=min&&n<=max) {        return 0;    }        //否则返回1    printf("输入非法!\n");    return 1;}//添加联系人void addContact(){        //提示用户输入要添加联系人的姓名    printf("请输入要添加的联系人姓名:*注意姓名之间不能有空格\n");    //接收联系人姓名    scanf("%s",contact[contactCount].name);    //提示用户输入要添加联系任的电话    printf("请输入要添加联系人的电话: *注意电话号码之间不能有空格\n");    //接收联系人电话    scanf("%s",contact[contactCount].tel);    //询问是否确定添加    printf("确定要添加么?1.确定  0.取消\n");    scanf("%d",&no);    if (no) {        contactCount++;        //写入文件        writeFile();        printf("添加成功!\n");    }}//删除联系人void deleteContact(){        //显示联系人    doList();    int flag;    //提示用户输入要删除联系人的编号    printf("请输入要删除联系人的编号:\n");    //接收用户输入的编号    scanf("%d",&no);    //判断编号是否合法    if(!isValid(no, 1, contactCount)){    //编号合法        printf("确定要删除么?删除后将无法恢复!1.确定 0.取消\n");        scanf("%d",&flag);        if (flag) {            //如果要删除的联系人在末尾        if (no==contactCount) {            //则contactCount-1            contactCount--;        }else{        //如果要删除的联系人不在末尾    //移动数组元素            for (int i=no-1; i<contactCount-1; i++) {                contact[i]=contact[i+1];            }                    }    //contactCount--            contactCount--;    //写文件        writeFile();        }        }else    //编号不合法,则退出        printf("编号不合法!\n");        return ;}//修改联系人void updateContact(){        //显示联系人    doList();    //提示用户输入要修改联系人的编号    printf("请输入要修改的联系人的编号:\n");    //接收用户输入的编号    scanf("%d",&no);    //判断编号是否合法    int flag;    if (!isValid(no, 1, contactCount)) {        //提示用户输入新的的联系人的姓名            printf("请输入新的姓名:*注意:姓名之间不能有空格\n");          //接收用户输入的姓名            scanf("%s",contact[no-1].name);          //提示用户输入新的电话号码            printf("请输入新的电话号码:*注意:电话号码之间不能有空格\n");          //接收用户输入的电话号码            scanf("%s",contact[no-1].tel);                  //询问用户确定修改么?        printf("确定要修改么?1.确定 0.取消\n");        scanf("%d",&flag);        if (flag) {                    //写文件            writeFile();            printf("联系人修改成功!\n");        }else{                printf("编号不合法!!\n");            return ;                }        }   }//查看所有联系人void doList(){        printf("显示所有联系人:\n");    printf("编号\t姓名\t电话\n");    for (int i=0; i<contactCount; i++) {        printf("%d\t%s\t%s\n",i+1,contact[i].name,contact[i].tel);    }}//搜索联系人void searchContact(){        int flag = 1;    //接收用户输入的姓名    char searchName[NAMELEN];    //接收用户输入的电话    char searchTel[TELLEN];    //询问用户搜索方式    printf("请输入查找的方式: 1.按姓名查找 2.按电话号码查找\n");    //接收用户的搜索方式    scanf("%d",&no);    if (no==1) {        //请用户输入要查找的姓名        printf("请输入要查找到姓名:\n");        scanf("%s",searchName);        for (int i=0; i<contactCount; i++) {            if (!strcmp(searchName,contact[i].name)) {                printf("您查找的联系人为:\n");                printf("%d\t%s\t%s\n",i+1,contact[i].name,contact[i].tel);                return ;            }else{                            flag = 0;            }        }            }else if(no==2){                //请用户输入要查找的电话号码        printf("请输入要查找的电话号码:\n");        scanf("%s",searchTel);        for (int i=0; i<contactCount; i++) {            if (!strcmp(searchTel,contact[i].tel)) {                printf("您查找的联系人为:\n");                printf("%d\t%s\t%s\n",i+1,contact[i].name,contact[i].tel);                return ;            }else{                                flag = 0;            }        }            }else{        printf("非法输入!\n");        return ;    }    if (!flag) {        printf("很抱歉!小伙伴不在通讯录中!\n");    }           }//退出系统void quit(){        printf("系统正在退出...\n");    printf("系统已经退出!\n");    }//联系人写入文件void writeFile(){    //定义文件指针    FILE *fp = fopen(path, "wb");    if (fp!=NULL) {        //写入联系人个数        fwrite(&contactCount, sizeof(contactCount), 1, fp);        //写入每个联系人        for (int i=0; i<contactCount; i++) {                        fwrite(&contact[i], sizeof(Person),1, fp);        }            }    fclose(fp);}</span>


1 0
原创粉丝点击