【C语言】通讯录管理系统(容量固定)

来源:互联网 发布:校园网络拓扑设计 编辑:程序博客网 时间:2024/06/02 02:53

话不多说,直接上代码。

tongxunlu.h

#ifndef _TONGXUNLU_H_#define _TONGXUNLU_H_#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct tongxunlu{    char name[16];    char sex;    int age;    char number[16];    char address[32];}list;void init(list * signal);                   //初始化通讯录void all_show(list *signal);                //显示所有联系人信息void my_add(list *signal);                  //添加联系人void my_delete(list *data,list *signal);    //删除联系人信息list * my_reserch(list *signal);            //查找联系人信息void my_remove(list *signal);               //修改联系人信息void name_sort(list *signal);               //联系人按照姓名排序void clear_all(list *signal);               //清空所有联系人#endif

tongxunlu.c

#include "tongxunlu.h"static int tag =0;  //静态全局变量tag,用来记录当前通讯录中的个数void my_add(list *signal)       //添加联系人{    if(tag<10)    {        signal+= tag;        printf("Please Enter: \n ");        printf("    name\tsex\tage\tnumber\t     address\n ");        scanf("%s%s%d%s%s",signal->name,&signal->sex,&signal->age,signal->number,signal->address);        tag++;      }    else    {           printf("the tongxunlu is full!!\n");    }}list * my_reserch(list *signal)     //查找联系人信息{    int count = 0;    char str[16] ={'\0'};    printf("请输入要查找的联系人姓名:");    scanf("%s",str);    while(count<10)    {        if(strcmp(str,signal->name)==0)        {            return signal;        }        signal++;        count++;    }    return NULL;}void my_delete(list *data,list *signal)     //删除联系人信息{       memset(data,0,sizeof(list));    list *i;    for(i=data;i<signal+9;i++)    {        *data = *(data+1);        data++;    }    memset(data,0,sizeof(list));    tag--;}void my_remove(list *signal)        //修改联系人信息{       int n=0;    printf("修改联系人的哪个信息:》1 姓名 》2 性别 》3 年龄 》4 电话号码 》5住址\n");    scanf("%d",&n);    switch(n)    {        case 1:                 {                printf("名字修改为:");                scanf("%s",signal->name);            }break;        case 2:                 {                printf("性别修改为:");                scanf("%s",&signal->sex);            }break;        case 3:                 {                printf("年龄修改为:");                scanf("%d",&signal->age);            }break;        case 4:                 {                printf("电话号码修改为:");                scanf("%s",signal->number);            }break;        case 5:                 {                printf("住址修改为:");                scanf("%s",signal->address);            }break;        default:    printf("Error!!Please try again.\n"); break;    }}void all_show(list *signal)     //显示所有联系人信息{    printf("    name\tsex\tage\tnumber\t     address\n ");    int count=0;    while(count<10)    {        printf("%s\t%c\t%d\t%s\t%s\n",signal->name,signal->sex,signal->age,signal->number,signal->address);        signal++;        count++;    }}void clear_all(list *signal)            //清空通讯录,相当于初始化{    int count=0;    while(count<10)    {        memset(signal,0,sizeof(list));        signal++;        count++;    }}static void swap(list * x,list * y){    list  tmp ;    tmp = *x;    *x = *y;    *y = tmp;}void name_sort(list *signal)        //联系人按照姓名排序{    int i=0,j=0,k=0;    for(i=0;i<9;i++)    //冒泡排序    {        list *buf = signal;        for(j=0;j<9-i;j++)        {            if(strcmp(buf->name,(buf+1)->name)>0)            {                swap(buf,buf+1);            }            buf++;        }    }    for(k=0;k<tag;k++)    {        *(signal) = *(signal+10-tag);//排好序后,中间不要有空白,分别移动到对应的位置        signal++;    }    memset(signal,0,(10-tag)*sizeof(list));//移动后,将当前还能添加的10-tag个联系人内存空间置0}

test.c

#include"tongxunlu.h"void menu(){    printf("*************************欢迎进入,通讯录管理系统**********************\n");    printf("**********》1 进入通讯录系统************》2 退出通讯录系统*************\n");    printf("***********************************************************************\n");}void son_menu(){    printf("************************欢迎进入,通讯录管理系统*****************************\n");    printf("**********》1 添加联系人*********************》2 删除联系人信息**************\n");    printf("**********》3 查找联系人信息*****************》4 修改联系人信息**************\n");    printf("**********》5 显示所有联系人*****************》6 清空所有联系人**************\n");    printf("**********》7 联系人按名排序*************************************************\n");}void gongneng(){       int q=0;    list *ret,person[10];    clear_all(person);do{    son_menu();    int n =0,m=0;    printf("Please Select Gongneng:");    scanf("%d",&n);    switch(n)    {        case 1:                     do            {                my_add(person);                printf("添加成功~~\n");                printf("是否继续添加?是(1),否(0)\n");                scanf("%d",&m);            }while(m);        break;        case 2:                 do            {                ret = my_reserch(person);                if(ret!= NULL)                {                    my_delete(ret,person);                    printf("删除成功~~\n");                }                else                {                    printf("此通讯录无此人!!!\n");                }                   printf("是否继续删除?是(1),否(0)\n");                scanf("%d",&m);            }while(m);          break;        case 3:                 ret = my_reserch(person);            if(ret!= NULL)            {                printf("%s   %c   %d   %s   %s\n",          ret->name,ret->sex,ret->age,ret->number,ret->address);            }            else            {                printf("此通讯录无此人!!!\n");            }               break;        case 4:                 do            {                ret = my_reserch(person);                if(ret!= NULL)                {                    my_remove(ret);                    printf("修改成功~~\n");                }                else                {                    printf("此通讯录无此人!!!\n");                }                   printf("是否继续修改?是(1),否(0)\n");                scanf("%d",&m);            }while(m);        break;        case 5:     all_show(person);   break;        case 6:     clear_all(person);      printf("清空联系人成功~~\n");    break;        case 7:     name_sort(person);      printf("排序成功~~\n");           break;        default:    printf("Enter error,Please try again\n");   break;    }    printf("是否回到功能页?(1),否(0)\n");    scanf("%d",&q);}while(q);}int main(){    while(1)    {                   menu();        int num =0;        printf("Please Enter:");        scanf("%d",&num);        switch(num)        {        case 1:     gongneng();     break;        case 2:     exit(1);    break;        default:    printf("Enter error,Please try again\n");   break;        }    }    return 0;}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 十个月宝宝反复发烧39度怎么办 2岁宝宝反复发烧怎么办39度左右 宝宝两周岁光吃水果不吃饭怎么办 3岁宝宝光吃水果不吃饭怎么办 中学生就爱玩儿游戏不爱学习怎么办 一岁宝宝只吃水果不吃饭怎么办 孩子发烧咳嗽怎么办最有效的方法 打了百白破孩子一直发烧咳嗽怎么办 顺产侧切肛门坠胀解大便难受怎么办 2岁拉肚子拉水怎么办吃什么药 三岁宝宝三天没拉大便怎么办 3个月宝宝3天没大便怎么办 3个月宝宝4天不拉大便怎么办 17个月宝宝看见生人害怕怎么办 大人给四个月婴儿喂糖水怎么办 宝宝12个月了还一直坐着玩怎么办 七个月宝宝发烧不到38℃怎么办 一个月大的婴儿头立不起来怎么办 18个月的宝宝晚上总找妈妈怎么办 婴儿吃了妈妈生气的奶上火怎么办 3个月的宝宝认人怎么办 十天大的婴儿大便是泡沫该怎么办 婴儿3天没有拉大便了怎么办 儿童两三天拉一次大便是稀便怎么办 五个月的婴儿一星期没大便怎么办 宝宝53天几天没大便了怎么办 42天宝宝4天没有大便怎么办 42天的宝宝3天没大便怎么办 6个月宝宝前额头碰青了怎么办 三个月的婴儿喝牛奶拉绿大便怎么办 已经喂了猫一个多月的高钙奶怎么办 几个月宝宝胳膊起来红豆豆怎么办 一岁半宝宝只喝牛奶不吃饭怎么办 儿子一生下来脖子上有淋巴结怎么办 满月宝宝睡觉不踏实易惊醒怎么办 两个月宝宝从婴儿车上掉下来怎么办 兔子不吃兔粮不喝水不拉粑粑怎么办 兔子吃了带水的菜叶怎么办 七个月的宝宝晚上睡觉总醒怎么办 紫薯和番茄一起吃了怎么办 1当半宝宝喝温开水后打隔怎么办