text.c

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include "contact.h"void menu(){    printf("==================================\n");    printf("==  1.add增加       2.del删除   ==\n");    printf("==  3.search查找    4.modify修改==\n");    printf("==  5.show显示      6.sort排序  ==\n");    printf("==  0.exit退出                  ==\n");    printf("==================================\n");}int main(){    int input=0;    struct Contact con;    //con就是通讯录,里面包含1000个元素的数组和size    InitContact(&con);     //初始化通讯录    do    {        menu();        printf("请选择:>");        scanf("%d", &input);        switch (input)        {        case ADD:            AddContact(&con);            //添加信息            break;        case DEL:            DelContact(&con);            break;         case SEARCH:            SearchContact(&con);            break;        case MODIFY:            ModifyContact(&con);            break;        case SHOW:            ShowContact(&con);            //打印信息            break;        case SORT:            SortContact(&con);            break;        case EXIT:            printf("退出通讯录\n");            break;        default:            printf("选择错误\n");            break;        }    } while (input);    return 0;}

contact.h

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <string.h>#define MAX 1000#define MAX_NAME 20#define MAX_SEX 5#define MAX_TELE 12#define MAX_ADDR 30enum Option{    EXIT,//0    ADD,//1    DEL,//2    SEARCH,//3    MODIFY,//4    SHOW,//5    SORT//6};struct Peoinfo{    char name[MAX_NAME];    //名字    int age;    //年龄    char sex[MAX_SEX];    //性别    char tele[MAX_TELE];    //电话    char addr[MAX_ADDR];    //住址};//通讯录类型struct Contact{    struct Peoinfo data[MAX];    //存放一个类型    int size;    //记录当前已有元素个数};//声明函数//初始化通讯录void InitContact(struct Contact* ps);//添加一个信息到通讯录void AddContact(struct Contact* ps);//打印通讯录的内容void ShowContact(const struct Contact* ps);//删除通讯录的一个信息void DelContact(struct Contact* ps);//查找void SearchContact(const struct Contact* ps);//修改void ModifyContact(struct Contact* ps);//排序void SortContact(struct Contact* ps);

contact.c

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <string.h>#include "contact.h"//初始化通讯录void InitContact(struct Contact* ps){    //memset 内存设置,把整个数组设置为一个值    memset(ps->data, 0, sizeof(ps->data));    ps->size = 0;    //设置通讯录最初只有0}//增加一个元素到通讯录里面void AddContact(struct Contact* ps){    if (ps->size == MAX){        printf("通讯录已满,无法增加");    }    else    {        printf("请输入名字:>");        scanf("%s", ps->data[ps->size].name);        printf("请输入年龄:>");        scanf("%d", &(ps->data[ps->size].age));        printf("请输入性别:>");        scanf("%s", ps->data[ps->size].sex);        printf("请输入电话:>");        scanf("%s", ps->data[ps->size].tele);        printf("请输入地址:>");        scanf("%s", ps->data[ps->size].addr);        ps->size++;        printf("添加成功\n");    }}void ShowContact(const struct Contact* ps){    if (ps->size == 0){        printf("通讯录为空\n");    }    else    {        int i = 0;        printf("%-20s\t%-4s\t%-5s\t%-12s\t%-20s\n", "名字", "年龄", "性别", "电话", "地址");        //%后面加数字是占多少各 \t是tab -号是左对齐        for ( i = 0; i < ps->size; i++)        {            printf("%-20s\t%-4d\t%-5s\t%-12s\t%-20s\n",                ps->data[i].name,                ps->data[i].age,                ps->data[i].sex,                ps->data[i].tele,                ps->data[i].addr                );        }    }}//static静态变量 只能在这个文件内部使用static int FindByname(const struct Contact* ps,char name[MAX_NAME]){    int i = 0;    for (i = 0; i < ps->size; i++)    {        if (0 == strcmp(ps->data[i].name, name)){            return i;        }    }    return -1;}void DelContact(struct Contact* ps){    char name[MAX_NAME];    printf("请输入要删除人的名字:>");    scanf("%s", name);    //1.查找要删除的人的位置    //我们希望这个函数找到返回元素的下标,找不到返回-1    int pos=FindByname(ps,name);    //2.删除    if (pos==-1)    {        printf("你要删除的人不存在\n");    }    else    {        int j = 0;        for ( j = pos; j < ps->size-1; j++)        {            ps->data[j] = ps->data[j + 1];        }        ps->size--;        printf("删除成功\n");    }}void SearchContact(const struct Contact* ps){    char name[MAX_NAME];    printf("请输入要查找人的名字:>");    scanf("%s", name);    int pos = FindByname(ps, name);    if (pos == -1){        printf("要查找的人不存在");    }    else    {        printf("%-20s\t%-4s\t%-5s\t%-12s\t%-20s\n", "名字", "年龄", "性别", "电话", "地址");        //%后面加数字是占多少各 \t是tab -号是左对齐            printf("%-20s\t%-4d\t%-5s\t%-12s\t%-20s\n",                ps->data[pos].name,                ps->data[pos].age,                ps->data[pos].sex,                ps->data[pos].tele,                ps->data[pos].addr                );    }}void ModifyContact(struct Contact* ps){    char name[MAX_NAME];    printf("请输入要修改人的名字:>");    scanf("%s", name);    int pos = FindByname(ps, name);    if (pos == -1){        printf("要修改的信息不存在");    }    else{        printf("请输入名字:>");        scanf("%s", ps->data[pos].name);        printf("请输入年龄:>");        scanf("%d", &(ps->data[pos].age));        printf("请输入性别:>");        scanf("%s", ps->data[pos].sex);        printf("请输入电话:>");        scanf("%s", ps->data[pos].tele);        printf("请输入地址:>");        scanf("%s", ps->data[pos].addr);        printf("修改完成\n");    }}void SortContact(struct Contact* ps){    if (ps->size == 0){        printf("通讯录为空\n");    }    else{        int i = 0;        for (i = 0; i < ps->size-1; i++)        {            printf("%d\n",strcmp(ps->data[i].name, ps->data[i + 1].name));            if (1 > strcmp(ps->data[i].name, ps->data[i + 1].name)){            }            else{                struct Peoinfo count = ps->data[i + 1];                ps->data[i + 1] = ps->data[i];                ps->data[i] = count;            }        }    }}
©著作权归作者所有:来自51CTO博客作者intmain233的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. Day_1_1.25-php数据类型与检测
  2. android从手机中获取通讯录时按名称排序
  3. Android(安卓)Studio打包时如何将版本号修改成apk名字
  4. Android(安卓)studio如何修改项目名称
  5. android项目之通讯录数据库
  6. android获取单个通讯录联系人信息并分享内容(短信邀请)
  7. android gradle 修改生成的apk的名字
  8. Android开发入门之访问通讯录中的联系人和添加联系人
  9. Android导入导出txt通讯录工具(源码共享)

随机推荐

  1. [新开一贴]php5.4 连接Sqlserver2008 的
  2. mysqldump的几个主要选项探究
  3. MYSQL学习笔记(三)
  4. mysql在组通过之前获得顺序
  5. mysql数据备份恢复和导入
  6. 如何将frm格式MYD格式MYI格式文件导入MyS
  7. 在C#.net的server explorer 上建立的数据
  8. 有人用过查询分析器里的TSQL调试程序吗?
  9. MySQL锁机制及优化
  10. MySQL存储过程简介