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

  • 相关阅读:
    Oracle SQL语句大全—查看表空间
    Class to disable copy and assign constructor
    在moss上自己总结了点小经验。。高手可以飘过 转贴
    在MOSS中直接嵌入ASP.NET Page zt
    Project Web Access 2007自定义FORM验证登录实现 zt
    SharePoint Portal Server 2003 中的单一登录 zt
    vs2008 开发 MOSS 顺序工作流
    VS2008开发MOSS工作流几个需要注意的地方
    向MOSS页面中添加服务器端代码的另外一种方式 zt
    状态机工作流的 SpecialPermissions
  • 原文地址:https://www.cnblogs.com/kid971220/p/10097179.html
Copyright © 2011-2022 走看看