C语言 结构体一个简单的通讯录程序

本文介绍了一个简易的通讯录管理系统的设计与实现,该系统使用C语言编写,具备增加、删除、修改和查询联系人的功能。系统通过菜单引导用户进行操作,并支持按姓名或手机号查询联系人信息。

         
  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <string.h>
  4 
  5 #define MAX 100
  6 #define TRUE 1
  7 #define FALSE 0
  8 #define Status int
  9 
 10 typedef struct node
 11 {
 12         char name[12];
 13         char addr[40];
 14         char mphone[12];
 15         char tel[14];
 16         char sex;
 17         unsigned char age;
 18 }NODE;
 19 
 20 NODE txl[MAX];
 21 int len = 0;
 22 
 23 char *menu_1[] = {
 24         "***********************\n",
 25         "1.增加记录\n",
 26         "2.删除记录\n",
 27         "3.修改记录\n",
 28         "4.查询记录\n",
 29         "0.退出\n",
 30         "***********************\n"
 31         };
 32 char *menu_query1[] = {
 33         "***********************\n",
 34         "1.按姓名查询\n",
 35         "2.按手机号码查询\n",
 36         "3.全部输出\n",
 37         "0.退出\n",
 38         "***********************\n"
 39         };
 40 
 41 char menu(char *str[],int len)
 42 {
 43         char sel;
 44         int i;
 45         for (i=0 ; i<len; i++)
 46         {
 47                 printf("%s",str[i]);
 48         }
 49         printf("请输入您的选择:");
 50         scanf(" %c",&sel);
 51     getchar();
 52         return sel;
 53 }
 54 
 55 Status input(void)
 56 {
 57         int age;
 58         printf("请输入姓名:");
 59         fgets(txl[len].name,12,stdin);
 60         printf("请输入地址:");
 61         fgets(txl[len].addr,40,stdin);
 62         printf("请输入手机号:");
 63         fgets(txl[len].mphone,12,stdin);
 64         printf("请输入电话号码:");
 65         fgets(txl[len].tel,14,stdin);
 66         printf("请输入性别:");
 67         scanf(" %c",&txl[len].sex);
 68         printf("请输入年龄:");
 69         scanf("%d",&age);
 70         getchar();
 71         txl[len].age = (unsigned char)age;
 72         return TRUE;
 73 }
 74 
 75 Status output(int i)
 76 {
 77         char sex[3];
 78         printf("姓名:%s",txl[i].name);
 79         printf("地址:%s",txl[i].addr);
 80         printf("手机号:%s",txl[i].mphone);
 81         printf("电话号码:%s",txl[i].tel);
 82         if ( '0' == txl[i].sex )
 83         {
 84                 strcpy(sex,"女");
 85         }
 86         else if ( '1' == txl[i].sex)
 87         {
 88                 strcpy(sex,"男");
 89         }
 90         else
 91         {
 92                 strcpy(sex,"错");
 93         }
 94         printf("性别:%s\n",sex);
 95         printf("年龄:%d\n",(int)txl[i].age);
 96         return TRUE;
 97 }
 98 Status query(void)
 99 {
100         char sel=1,name[12],mphone[12];
101         int i;
102         while('0' != sel)
103         {
104         sel = menu(menu_query1,6);
105         switch (sel)
106         {
107                 case '1':
108                 {
109                         printf("请输入姓名:");
110                         fgets(name,12,stdin);
111                         for(i=0; i<len; i++)
112                         {
113                                 if( !strcmp(name,txl[i].name) ) break;
114                         }
115                         output(i);
116                 } break;
117                 case '2':
118                 {
119                         printf("请输入手机号:");
120                         fgets(mphone,12,stdin);
121                         for(i=0; i<len; i++)
122                         {
123                                 if( !strcmp(mphone,txl[i].mphone) ) break;
124                         }
125                         output(i);
126                 } break;
127                 case '3':
128                 {
129                         for(i=0; i<len; i++)
130                         {
131                                 printf("第%d条记录\n",i+1);
132                                 output(i);
133                                 printf("\n");
134                         }
135                 } break;
136                 case '0':break;
137                 default:printf("错误输入\n");break;
138         }
139         }
140         return TRUE;
141 }
142 int main(int argc,char *argv[])
143 {
144         char sel;
145         printf("sizeof struct = %d\n",sizeof(NODE));
146         while (1)
147         {
148         sel = menu(menu_1,7);
149         switch (sel)
150         {
151                 case '1':input();len++; break;
152                 case '2':printf("you select 2\n");break;
153                 case '3':printf("you select 3\n");break;
154                 case '4':query();break;
155                 case '0':exit(0);break;
156                 default:printf("错误输入\n");break;
157         }
158         }
159         return 0;
160 }
         

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值