【C语言小程序】之通讯录

具体功能

退出通讯录、增加联系人、删除联系人、修改联系人信息、查找联系人、

显示全部联系人信息、按照性名排序

代码

宏定义

 #define MAX 1000
 #define MAX_NAME 20
 #define MAX_SEX 5
 #define MAX_ADDRESS 20
 #define MAX_TEL 20

联系人结构体

 typedef struct stu{
     char name[MAX_NAME];
     char sex[MAX_SEX];
     int age;
     char tel[MAX_TEL];
     char address[MAX_ADDRESS];
 }stu; 
 ​
 typedef struct Contact{
     stu data[MAX];
     int size;
 }Contact;

枚举功能选项

 enum Chooess{
     EXIT,
     INSERT,
     DELE,
     MODIFY,
     SEARCH,
     SHOWSTU,
     SORT
 };

功能函数声明

 void wel();
 void showmenu();
 void insert(Contact *p);
 void dele(Contact *p);
 void modify(Contact *p);
 void search(Contact *p);
 void showstu(Contact *p);
 void sort(Contact *p);
 int find_Contact(Contact *p,char name[]);

主函数

 int main(){
     wel();
     int input;
     Contact con={0};
     do{
         showmenu();
         printf("\t\t\t\t请输入功能指令!>");
         scanf("%d",&input);
         switch(input){
             case INSERT:
                 insert(&con);
                 break;
             case DELE:
                 dele(&con);
                 break;
             case MODIFY:
                 modify(&con);
                 break;
             case SEARCH:
                 search(&con);
                 break;
             case SHOWSTU:
                 showstu(&con);
                 break;
             case SORT:
                 sort(&con);
                 break;
             case EXIT:
                 printf("\n\t\t\t\t退出通讯本系统!\n");
                 break;
             default:
                 printf("\n\t\t\t\t您输入的指令有误!\n"); 
                 break;
         }
     }while(input!=0);
     return 0;
 }

欢迎函数

 void wel(){
     printf("\t\t\t*****************************************************************\n");
     printf("\t\t\t**********************Welcom to address book !!!*****************\n");
     printf("\t\t\t*****************************************************************\n\n");
 }

功能指令提示

 void showmenu(){
     printf("\n\t\t\t\t****************************************************\n");
     printf("\t\t\t\t******************功能简介,如下:******************\n");
     printf("\t\t\t\t****************************************************\n");
     printf("\t\t\t\t******************0、退出通讯录 ********************\n");
     printf("\t\t\t\t******************1、增加联系人*********************\n");
     printf("\t\t\t\t******************2、删除联系人*********************\n");
     printf("\t\t\t\t******************3、修改联系人信息*****************\n");
     printf("\t\t\t\t******************4、查找联系人*********************\n");
     printf("\t\t\t\t******************5、显示全部联系人信息*************\n");
     printf("\t\t\t\t******************6、按照性名排序*******************\n");
     printf("\t\t\t\t****************************************************\n");
 }

增加函数

 void insert(Contact *p){
     printf("\n\t\t\t\t****************************************************\n");
     printf("\t\t\t\t*****************使用添加联系人功能*****************\n");
     printf("\t\t\t\t****************************************************\n");
     if(p->size==MAX){
         printf("\n\t\t\t\t超出存储容量限制,不能在添加联系人!\n"); 
     }else{
         printf("\n\t\t\t\t请您进行信息录入:>\n");
         printf("\t\t\t\t联系人姓名:");  
         scanf("%s",p->data[p->size].name) ;
         printf("\t\t\t\t联系人性别:");  
         scanf("%s",p->data[p->size].sex) ;
         printf("\t\t\t\t联系人年龄:");  
         scanf("%d",&p->data[p->size].age) ;
         printf("\t\t\t\t联系人电话:");  
         scanf("%s",p->data[p->size].tel) ;
         printf("\t\t\t\t联系人住址:");  
         scanf("%s",p->data[p->size].address) ;
         printf("\t\t\t\t添加成功!\n");
         p->size++;
     } 
 }

查找要查找的联系人函数

 int find_Contact(Contact *p,char name[]){
     for(int i=0;i<p->size;i++){
         if(strcmp(p->data[i].name,name)==0){
             return i;
         }
     }
     return -1;
 }

删除函数

 void dele(Contact *p){
     printf("\n\t\t\t\t****************************************************\n");
     printf("\t\t\t\t*****************使用删除联系人功能*****************\n");
     printf("\t\t\t\t****************************************************\n");
     printf("\t\t\t\t请输入要删除的联系人姓名:>");
     char name[MAX_NAME];
     scanf("%s",name);
     int pos=find_Contact(p,name);
     if(pos==-1){
          printf("\n\t\t\t\t您要删除的联系人不在通讯本中!!!\n");
     }else{
         for(int i=pos;i<p->size-1;i++){
             p->data[i]=p->data[i+1];
         }
         printf("\n\t\t\t\t删除成功!\n");
         p->size--;
     }
 }

修改函数

 void modify(Contact *p){
     printf("\n\t\t\t\t****************************************************\n");
     printf("\t\t\t\t*****************使用修改联系人功能*****************\n");
     printf("\t\t\t\t****************************************************\n");
     printf("\n\t\t\t\t请输入要修改的联系人姓名:>");
     char name[MAX_NAME];
     scanf("%s",name);
     int pos=find_Contact(p,name);
     if(pos==-1){
         printf("\n\t\t\t\t您要修改的联系人不在通讯本中!!!\n");
     }else{
         printf("\t\t\t\t请您进行新信息录入:>\n");
         printf("\t\t\t\t联系人新的姓名:");  
         scanf("%s",p->data[pos].name) ;
         printf("\t\t\t\t联系人新的性别:");  
         scanf("%s",p->data[pos].sex) ;
         printf("\t\t\t\t联系人新的年龄:");  
         scanf("%d",&p->data[pos].age) ;
         printf("\t\t\t\t联系人新的电话:");  
         scanf("%s",p->data[pos].tel) ;
         printf("\t\t\t\t联系人新的住址:");  
         scanf("%s",p->data[pos].address) ;
         printf("\t\t\t\t修改成功!\n");
     }
 }

查找函数

void search(Contact *p){
     printf("\n\t\t\t\t****************************************************\n");
     printf("\t\t\t\t*****************使用查找联系人功能*****************\n");
     printf("\t\t\t\t****************************************************\n");
     printf("\n\t\t\t\t请输入要查找的联系人姓名:>");
     char name[MAX_NAME];
     scanf("%s",name);
     int pos=find_Contact(p,name);
     if(pos==-1){
         printf("\n\t\t\t\t您要查找的联系人不在通讯本中!!!\n");
     }else{
         printf("\n\t\t\t\t查找成功!查找到的联系人信息如下:\n");
         printf("\t\t\t\t序号\t姓名\t性别\t年龄\t电话号\t\t地址\n");
         printf("\t\t\t\t%d\t%s\t%s\t%d\t%s\t\t%s\n",
             pos+1,
             p->data[pos].name,
             p->data[pos].sex,
             p->data[pos].age,
             p->data[pos].tel,
             p->data[pos].address
         ) ;
     }
 }

显示联系人函数

void showstu(Contact *p){
     printf("\n\t\t\t\t****************************************************\n");
     printf("\t\t\t\t*************使用显示全部联系人信息功能*************\n");
     printf("\t\t\t\t****************************************************\n");
     if(p->size==0){
         printf("\n\t\t\t\t未添加联系人信息!\n");
     }else{
         printf("\n\t\t\t\t全部联系人信息如下:\n");
         printf("\t\t\t\t序号\t姓名\t性别\t年龄\t电话号\t\t地址\n");
         for(int i=0;i<p->size;i++){
         printf("\t\t\t\t%d\t%s\t%s\t%d\t%s\t\t%s\n",
             i+1,
             p->data[i].name,
             p->data[i].sex,
             p->data[i].age,
             p->data[i].tel,
             p->data[i].address
             ) ;
         }
     }
 } 

排序函数

 void sort(Contact *p){
     printf("\n\t\t\t\t****************************************************\n");
     printf("\t\t\t\t*************使用排序全部联系人信息功能*************\n");
     printf("\t\t\t\t****************************************************\n");
     if(p->size==0){
         printf("\n\t\t\t\t未添加联系人信息!\n");
     } else{
     for(int i=0;i<p->size;i++){
         for(int j=0;j<p->size-1-i;j++){
             if(strcmp(p->data[j].name,p->data[j+1].name)>0){
                 stu temp=p->data[j];
                 p->data[j]=p->data[j+1];
                 p->data[j+1]=temp;
             }
         }
     }
     printf("\n\t\t\t\t排序成功!\n\t\t\t\t排序后全部联系人信息如下:\n");
     printf("\t\t\t\t序号\t姓名\t性别\t年龄\t电话号\t\t地址\n");
     for(int i=0;i<p->size;i++){
     printf("\t\t\t\t%d\t%s\t%s\t%d\t%s\t\t%s\n",
         i+1,
         p->data[i].name,
         p->data[i].sex,
         p->data[i].age,
         p->data[i].tel,
         p->data[i].address
         ) ;
     }       
     }
 ​
 }

总代码:

 #include<stdio.h>
 #include<string.h>
 ​
 #define MAX 1000
 #define MAX_NAME 20
 #define MAX_SEX 5
 #define MAX_ADDRESS 20
 #define MAX_TEL 20
 ​
 typedef struct stu{
     char name[MAX_NAME];
     char sex[MAX_SEX];
     int age;
     char tel[MAX_TEL];
     char address[MAX_ADDRESS];
 }stu; 
 ​
 typedef struct Contact{
     stu data[MAX];
     int size;
 }Contact;
 ​
 enum Chooess{
     EXIT,
     INSERT,
     DELE,
     MODIFY,
     SEARCH,
     SHOWSTU,
     SORT
 };
 ​
 void wel();
 void showmenu();
 void insert(Contact *p);
 void dele(Contact *p);
 void modify(Contact *p);
 void search(Contact *p);
 void showstu(Contact *p);
 void sort(Contact *p);
 int find_Contact(Contact *p,char name[]);
 ​
 int main(){
     wel();
     int input;
     Contact con={0};
     do{
         showmenu();
         printf("\t\t\t\t请输入功能指令!>");
         scanf("%d",&input);
         switch(input){
             case INSERT:
                 insert(&con);
                 break;
             case DELE:
                 dele(&con);
                 break;
             case MODIFY:
                 modify(&con);
                 break;
             case SEARCH:
                 search(&con);
                 break;
             case SHOWSTU:
                 showstu(&con);
                 break;
             case SORT:
                 sort(&con);
                 break;
             case EXIT:
                 printf("\n\t\t\t\t退出通讯本系统!\n");
                 break;
             default:
                 printf("\n\t\t\t\t您输入的指令有误!\n"); 
                 break;
         }
     }while(input!=0);
     return 0;
 }
 ​
 void wel(){
     printf("\t\t\t*****************************************************************\n");
     printf("\t\t\t**********************Welcom to address book !!!*****************\n");
     printf("\t\t\t*****************************************************************\n\n");
 }
 ​
 void showmenu(){
     printf("\n\t\t\t\t****************************************************\n");
     printf("\t\t\t\t******************功能简介,如下:******************\n");
     printf("\t\t\t\t****************************************************\n");
     printf("\t\t\t\t******************0、退出通讯录 ********************\n");
     printf("\t\t\t\t******************1、增加联系人*********************\n");
     printf("\t\t\t\t******************2、删除联系人*********************\n");
     printf("\t\t\t\t******************3、修改联系人信息*****************\n");
     printf("\t\t\t\t******************4、查找联系人*********************\n");
     printf("\t\t\t\t******************5、显示全部联系人信息*************\n");
     printf("\t\t\t\t******************6、按照性名排序*******************\n");
     printf("\t\t\t\t****************************************************\n");
 }
 ​
 void insert(Contact *p){
     printf("\n\t\t\t\t****************************************************\n");
     printf("\t\t\t\t*****************使用添加联系人功能*****************\n");
     printf("\t\t\t\t****************************************************\n");
     if(p->size==MAX){
         printf("\n\t\t\t\t超出存储容量限制,不能在添加联系人!\n"); 
     }else{
         printf("\n\t\t\t\t请您进行信息录入:>\n");
         printf("\t\t\t\t联系人姓名:");  
         scanf("%s",p->data[p->size].name) ;
         printf("\t\t\t\t联系人性别:");  
         scanf("%s",p->data[p->size].sex) ;
         printf("\t\t\t\t联系人年龄:");  
         scanf("%d",&p->data[p->size].age) ;
         printf("\t\t\t\t联系人电话:");  
         scanf("%s",p->data[p->size].tel) ;
         printf("\t\t\t\t联系人住址:");  
         scanf("%s",p->data[p->size].address) ;
         printf("\t\t\t\t添加成功!\n");
         p->size++;
     } 
 }
 ​
 int find_Contact(Contact *p,char name[]){
     for(int i=0;i<p->size;i++){
         if(strcmp(p->data[i].name,name)==0){
             return i;
         }
     }
     return -1;
 }
 ​
 void dele(Contact *p){
     printf("\n\t\t\t\t****************************************************\n");
     printf("\t\t\t\t*****************使用删除联系人功能*****************\n");
     printf("\t\t\t\t****************************************************\n");
     printf("\t\t\t\t请输入要删除的联系人姓名:>");
     char name[MAX_NAME];
     scanf("%s",name);
     int pos=find_Contact(p,name);
     if(pos==-1){
          printf("\n\t\t\t\t您要删除的联系人不在通讯本中!!!\n");
     }else{
         for(int i=pos;i<p->size-1;i++){
             p->data[i]=p->data[i+1];
         }
         printf("\n\t\t\t\t删除成功!\n");
         p->size--;
     }
 }
 ​
 void modify(Contact *p){
     printf("\n\t\t\t\t****************************************************\n");
     printf("\t\t\t\t*****************使用修改联系人功能*****************\n");
     printf("\t\t\t\t****************************************************\n");
     printf("\n\t\t\t\t请输入要修改的联系人姓名:>");
     char name[MAX_NAME];
     scanf("%s",name);
     int pos=find_Contact(p,name);
     if(pos==-1){
         printf("\n\t\t\t\t您要修改的联系人不在通讯本中!!!\n");
     }else{
         printf("\t\t\t\t请您进行新信息录入:>\n");
         printf("\t\t\t\t联系人新的姓名:");  
         scanf("%s",p->data[pos].name) ;
         printf("\t\t\t\t联系人新的性别:");  
         scanf("%s",p->data[pos].sex) ;
         printf("\t\t\t\t联系人新的年龄:");  
         scanf("%d",&p->data[pos].age) ;
         printf("\t\t\t\t联系人新的电话:");  
         scanf("%s",p->data[pos].tel) ;
         printf("\t\t\t\t联系人新的住址:");  
         scanf("%s",p->data[pos].address) ;
         printf("\t\t\t\t修改成功!\n");
     }
 }
 ​
 void search(Contact *p){
     printf("\n\t\t\t\t****************************************************\n");
     printf("\t\t\t\t*****************使用查找联系人功能*****************\n");
     printf("\t\t\t\t****************************************************\n");
     printf("\n\t\t\t\t请输入要查找的联系人姓名:>");
     char name[MAX_NAME];
     scanf("%s",name);
     int pos=find_Contact(p,name);
     if(pos==-1){
         printf("\n\t\t\t\t您要查找的联系人不在通讯本中!!!\n");
     }else{
         printf("\n\t\t\t\t查找成功!查找到的联系人信息如下:\n");
         printf("\t\t\t\t序号\t姓名\t性别\t年龄\t电话号\t\t地址\n");
         printf("\t\t\t\t%d\t%s\t%s\t%d\t%s\t\t%s\n",
             pos+1,
             p->data[pos].name,
             p->data[pos].sex,
             p->data[pos].age,
             p->data[pos].tel,
             p->data[pos].address
         ) ;
     }
 }
 ​
 void showstu(Contact *p){
     printf("\n\t\t\t\t****************************************************\n");
     printf("\t\t\t\t*************使用显示全部联系人信息功能*************\n");
     printf("\t\t\t\t****************************************************\n");
     if(p->size==0){
         printf("\n\t\t\t\t未添加联系人信息!\n");
     }else{
         printf("\n\t\t\t\t全部联系人信息如下:\n");
         printf("\t\t\t\t序号\t姓名\t性别\t年龄\t电话号\t\t地址\n");
         for(int i=0;i<p->size;i++){
         printf("\t\t\t\t%d\t%s\t%s\t%d\t%s\t\t%s\n",
             i+1,
             p->data[i].name,
             p->data[i].sex,
             p->data[i].age,
             p->data[i].tel,
             p->data[i].address
             ) ;
         }
     }
 } 
 ​
 void sort(Contact *p){
     printf("\n\t\t\t\t****************************************************\n");
     printf("\t\t\t\t*************使用排序全部联系人信息功能*************\n");
     printf("\t\t\t\t****************************************************\n");
     if(p->size==0){
         printf("\n\t\t\t\t未添加联系人信息!\n");
     } else{
     for(int i=0;i<p->size;i++){
         for(int j=0;j<p->size-1-i;j++){
             if(strcmp(p->data[j].name,p->data[j+1].name)>0){
                 stu temp=p->data[j];
                 p->data[j]=p->data[j+1];
                 p->data[j+1]=temp;
             }
         }
     }
     printf("\n\t\t\t\t排序成功!\n\t\t\t\t排序后全部联系人信息如下:\n");
     printf("\t\t\t\t序号\t姓名\t性别\t年龄\t电话号\t\t地址\n");
     for(int i=0;i<p->size;i++){
     printf("\t\t\t\t%d\t%s\t%s\t%d\t%s\t\t%s\n",
         i+1,
         p->data[i].name,
         p->data[i].sex,
         p->data[i].age,
         p->data[i].tel,
         p->data[i].address
         ) ;
     }       
     }
 ​
 }
 ​
 ​

参考:https://blog.csdn.net/m0_50595617/article/details/112900602

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程远泊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值