黑马程序员-通讯录

来源:互联网 发布:ssh 命令行带端口号 编辑:程序博客网 时间:2024/06/05 09:18

------- android培训java培训、期待与您交流! ----------

这是黑马视频的一个小程序,关于c语言的,简单,但是很强大,可以看看,很棒,很适合初学者。简单,完整,使用的代码,不好找哇

////  main.c//  con2////  Created by cqycomputer on 15/7/8.//  Copyright (c) 2015年 cqycomputer. All rights reserved.//#include <stdio.h>#include <stdio.h>#include <string.h>#define LEN 100#define NAMELEN 22#define TELLEN 12/** *打印功能的函数 */void interface(){    printf("**************************\n");    printf("****** 欢迎使用通讯录 ******\n");    printf("****** 1、添加联系人  ******\n");    printf("****** 2、删除联系人  ******\n");    printf("****** 3、修改联系人  ******\n");    printf("****** 4、查看所有联系人 ****\n");    printf("****** 5、搜索联系人  ******\n");    printf("****** 6、退出系统    ******\n");    printf("**************************\n\n");}//定义结构体说明联系人信息typedef struct{    char name[NAMELEN];    char tel[TELLEN];}Person;Person per[LEN];//文件指针哦FILE * fp=NULL;int totel,num;//遍历结构体数组哈void con(){    for(int i=0;i<totel;i++)        printf("%d\t%s\t\t%s\t\n",i+1,per[i].name,per[i].tel);}void doAdd(){    char a[NAMELEN],b[TELLEN];    int x;    printf("请输入联系人姓名..\n");    getchar();    fgets(a,NAMELEN,stdin);    if(a[strlen(a)-1]=='\n')        a[strlen(a)-1]='\0';    printf("请输入联系人电话号..\n");    fgets(b,TELLEN,stdin);    if(b[strlen(b)-1]=='\n')        b[strlen(b)-1]='\0';    printf("1.确认 2.取消\n");    scanf("%d",&x);    if(x==1){        strcpy(per[totel].name,a);        strcpy(per[totel].tel,b);        fp=fopen("contact.date","wb+");        totel++;        fwrite(&totel,4,1,fp);        fwrite(per,sizeof(Person)*totel,1,fp);        fclose(fp);        printf("添加成功!\n");    }}void doDelete(){    con();    printf("选择要删除的联系人编号..\n");    int x,y;    scanf("%d",&x);    if(x>0&&x<=totel){        printf("要删除 %s 吗?1.确定 2.取消\n",per[x-1].name);        scanf("%d",&y);        if(y==1){            for(int i=x;i<totel;i++)                per[i-1]=per[i];            totel--;            fp=fopen("contact.date","wb+");            fwrite(per,sizeof(Person)*totel,1,fp);            fwrite(&totel,4,1,fp);            fclose(fp);        }    }else{        printf("已取消删除!\n");    }}void doRevise(){    con();    int x,y;    char a[NAMELEN],b[TELLEN];    printf("请选择要修改的联系人编号..\n");    scanf("%d",&x);    if(x>0&&x<=totel){        printf("请输入新的姓名..\n");        scanf("%s",a);        printf("请输入新的电话号..\n");        scanf("%s",b);        printf("要修改联系人%s吗? 1.确定 2.取消\n",per[x-1].name);        scanf("%d",&y);        if(y==1){            strcpy(per[x-1].name,a);            strcpy(per[x-1].tel,b);            fp=fopen("contact.date","wb+");            fwrite(per,sizeof(Person)*totel,1,fp);            fwrite(&totel,4,1,fp);            fclose(fp);            printf("修改成功!\n");        }    }else{        printf("已取消修改!\n");    }}void doSearch(){    printf("请输入要查找的联系人姓名..\n");    char a[NAMELEN];    scanf("%s",a);    int i=0;    for(;i<totel;i++){        if(strcpy(per[i].name,a)==0){            printf("查找信息如下..\n");            printf("%d\t%s\t\t%s\t\n",i+1,per[i].name,per[i].tel);            break;        }    }    if(i==totel)        printf("查无此人!\n");}int main(int argc, const char * argv[]) {    //定义变量,结构体,文件指针    interface();    //将文件写入结构体    fp=fopen("contact.date","r");    if(fp!=NULL){        fread(&totel,4,1,fp);        fread(per,sizeof(Person)*totel,1,fp);        rewind(fp);        fclose(fp);    }    printf("请输入操作!\n");    //用循环来执行用户操作    while(1){        //接受用户操作,并判断是否合法        scanf("%d",&num);        if(num<1||num>6){            printf("操作错误!\n");            continue;        }        switch(num){            case 1:                doAdd();                break;            case 2:                doDelete();                break;            case 3:                doRevise();                break;            case 4:                con();                break;            case 5:                doSearch();                break;            case 6:                printf("系统已退出!\n");                return 0;        }        interface();    }            return 0;}


------- android培训java培训、期待与您交流! ----------

0 0
原创粉丝点击