zoukankan      html  css  js  c++  java
  • 基于C语言的电话簿功能的实现

    要求用C语言实现电话簿查找删除增加新联系人16:20:48

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<getch.h>
    #include<stdbool.h>

    char name[100][20]={};
    char sex[100]={};
    char tell[100][12]={};
    int i=0;

    bool is_sub(char *str1,char *str2)
    {
    int k;
    for(k=0;str1[k];k++)
    {
    }
    for(int i=0;str1[i];i++)
    {
    int num=0;
    for(int j=0;str2[j];j++)
    {
    if(str1[i]==str2[j])
    {
    num++;
    i++;
    }

    }
    if(num==k)
    {
    return true;
    }
    return false;
    }
    }


    void clear_stdin(void)
    {
    stdin->_IO_read_ptr=stdin->_IO_read_end;
    }

    char* get_str(char* str,size_t size)
    {
    if(NULL==str) return str;
    clear_stdin();
    fgets(str,size,stdin);
    if(size-1 == strlen(str))
    {
    if('\n' == str[size-2])
    str[size-2] = '\0';
    else
    clear_stdin();
    }
    else
    str[strlen(str)-1]='\0';
    }

    void show(void)
    {
    system("clear");
    printf("* * *欢迎使用指针电话簿* * *\n");
    printf("1、增加联系人:姓名 性别 电话\n");
    printf("2、删除联系人:按姓名、电话删除联系人\n");
    printf("3、修改联系人信息:按姓名修改联系人信息\n");
    printf("4、查询联系人:姓名\n");
    printf("5、显示所有联系人\n");
    printf("请输入指令:\n");
    }

    void add(void)
    {
    system("clear");
    if(i==100)
    {
    printf("电话簿已满\n");
    return ;
    }
    get_str(name[i],20);
    get_str(&sex[i],4);
    get_str(tell[i],12);
    getch();
    i++;
    }

    void delete(void)
    {
    char str[20]={};
    system("clear");
    printf("请输入联系人姓名或电话:\n");
    gets(str);

    for(int j=0;j<i;j++)
    {
    if(strcmp(name[j],str)==0 || strcmp(tell[j],str)==0)
    {
    sex[j]=0;
    printf("已删除\n");
    }
    }
    getch();

    }

    void modify(void)
    {
    char n1[20]={};
    char n2;
    char n3[20]={};
    char str[20]={};
    system("clear");
    gets(str);
    for(int j=0;j<i;j++)
    {
    if(sex[j]==0)
    {
    continue;
    }
    if(strcmp(name[j],str)==0)
    {
    printf("请输入新信息:\n");
    get_str(n1,20);
    strcpy(name[j],n1);
    scanf("%c",&n2);
    sex[j]=n2;
    get_str(n3,12);
    strcpy(tell[j],n3);
    return ;
    }
    }
    printf("此人不存在\n");
    getch();
    }

    void find(void)
    {
    char str[20]={};
    system("clear");
    gets(str);
    printf("查找结果为:\n");
    for(int j=0;j<i;j++)
    {
    if(sex[j]==0)
    {
    continue;
    }
    if(is_sub(str,name[j]))
    {
    printf("%s %c %s\n",name[j],sex[j],tell[j]);
    }

    }
    getch();

    }
    void show_all(void)
    {
    system("clear");
    for(int j=0;j<i;j++)
    {
    if(sex[j]==0)
    {
    continue;
    }
    printf("%s ",name[j]);
    printf("%c ",sex[j]);
    printf("%s\n",tell[j]);
    }
    getchar();
    }

    int main()
    {
    while(1)
    {
    show();
    switch(getch())
    {
    case '1':add();break;
    case '2':delete();break;
    case '3':modify();break;
    case '4':find();break;
    case '5':show_all();break;
    }
    }
    }

     2018.11

  • 相关阅读:
    Android模拟器操作快捷键
    【从零之三(更)】自定义类中调用讯飞语音包错误解决办法
    解决Please ensure that adb is correctly located at 'D:javasdkplatform-toolsadb.exe' and can be executed.
    辛星浅析同源策略
    Java读源代码学设计模式:适配器Adapter
    iOS 隐藏NavigationBar的方法
    Odoo(OpenERP)开发实践:数据模型学习
    Android软键盘状态的切换及其强制隐藏
    用python阐释工作量证明(proof of work)
    基于spark1.4的Spark-Sql
  • 原文地址:https://www.cnblogs.com/kid971220/p/10097179.html
Copyright © 2011-2022 走看看