黑马程序员-通讯录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CQYCCCCC/article/details/46701127

------- 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培训、期待与您交流! ----------

阅读更多

没有更多推荐了,返回首页