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

  • 相关阅读:
    浅析C# new 和Override的区别
    用流打开open office ods 文件
    两个自己写的合并GridView 行的方法
    TSQL 日期格式化
    页面刷新后滚动条定位
    解决 TextBox 的 ReadOnly 属性为 true 时,刷新页面后值丢失的方法
    Sql server 查询条件中将通配符作为文字使用
    window.open 弹出页面回写父页面值及触发父页面Button事件
    注册光标丢失的事件
    模态对话框对父页面控件回写值
  • 原文地址:https://www.cnblogs.com/kid971220/p/10097179.html
Copyright © 2011-2022 走看看