一篇文章教你用C语言实现通讯录(静态版)
小标 2018-06-25 来源 : 阅读 1060 评论 0

摘要:本文主要向大家介绍了用C语言实现通讯录(静态版),通过具体的代码向大家展示,希望对大家学习C语言有所帮助。

本文主要向大家介绍了用C语言实现通讯录(静态版),通过具体的代码向大家展示,希望对大家学习C语言有所帮助。

利用c语言结构体、指针、函数等知识实现一个通讯录,具有基本增删改插等功能:

1.头文件部分:Contact.h

[cpp] view plain copy
1. #ifndef  __CONTACT_H__  
2. #define  __CONTACT_H__  
3.   
4. #define _CRT_SECURE_NO_WARNINGS  
5. #include<stdio.h>  
6. #include<stdlib.h>  
7. #include<string.h>  
8.   
9. #define NAME_MAX 20  
10. #define  SEX_MAX 5  
11. #define TELE_MAX 20  
12. #define ADD_MAX 50  
13. #define MAX_SIZE 1000  
14. typedef struct peo  
15. {  
16.     char name[NAME_MAX];  
17.     char sex[SEX_MAX];  
18.     int age;  
19.     char tele[TELE_MAX];  
20.     char address[ADD_MAX];  
21. }peo;  
22.   
23. typedef struct contact  
24. {  
25.     peo arr[MAX_SIZE];  
26.     int count;  
27. }contact;  
28.   
29. void Add(contact *pcon);      //添加  
30. void print_contact(contact *pcon);//打印  
31. int find_position(contact *pcon);//查找指定联系人所在位置  
32. int delete_contact(contact *pcon);//删除联系人信息  
33. int find_contacts(contact *pcon);//查找并且输出这个找到的信息。  
34. int revise_contact(contact *pcon);//修改指定联系人的信息  
35. void put_empty(contact *pcon);//清空所有联系人  
36. void sort_name(contact *pcon);//以名字排序所有联系人  
37. void init_contact(contact *pcon);//初始化通讯录  
38. void print_menu();//打印菜单  
39.   
40.   
41. #endif   //_CONTACT_H__

2.函数实现部分:Contact.c

[cpp] view plain copy
1. #include "Contact.h"  
2.   
3. void print_menu()//打印菜单  
4. {  
5.     printf("*******************************************\n");  
6.     printf("*****  1.add      2.del     3.clear  *****\n");  
7.     printf("*****  4.modify   5.show    6.search   *****\n");  
8.     printf("*****  7.sort     0.exit              *****\n");  
9.     printf("*******************************************\n");  
10. }  
11. void init_contact(contact *pcon)//初始化  
12. {  
13.     pcon->count = 0;  
14.     memset(pcon->arr, 0, MAX_SIZE*sizeof(peo));  
15. }  
16. void Add(contact *pcon)      //添加  
17. {  
18.     printf("请输入名字>");  
19.     scanf("%s",pcon->arr[pcon->count].name);  
20.     printf("请输入性别>");  
21.     scanf("%s",pcon->arr[pcon->count].sex);  
22.     printf("请输入年龄>");  
23.     scanf("%d",&(pcon->arr[pcon->count].age));  
24.     printf("请输入电话>");  
25.     scanf("%s",pcon->arr[pcon->count].tele);  
26.     printf("请输入住址>");  
27.     scanf("%s",pcon->arr[pcon->count].address);  
28.     pcon->count++;  
29. }  
30. void print_contact(contact *pcon)  
31. {  
32.     int i = 0;  
33.     for (i=0; i<pcon->count; i++)  
34.     {  
35.         printf("姓名:%s性别:%s年龄:%d电话:%s地址:%s\n",  
36.                                     pcon->arr[i].name,  
37.                                     pcon->arr[i].sex,  
38.                                     pcon->arr[i].age,  
39.                                     pcon->arr[i].tele,  
40.                                     pcon->arr[i].address);  
41.       
42.     }  
43. }  
44. int find_position(contact *pcon)//查找指定联系人所在位置  
45. {  
46.     int i = 0;  
47.     char name[NAME_MAX];  
48.     int ret = 0;  
49.     printf("请输入名字:");  
50.     scanf("%s",name);  
51.     for (i=0; i<pcon->count; i++)  
52.     {  
53.         ret = strcmp(name,pcon->arr[i].name);  
54.         if (ret == 0)  
55.         {  
56.             return i;  
57.         }  
58.     }  
59.     return -1;  
60. }  
61.   
62.   
63. int delete_contact(contact *pcon)//删除指定联系人信息  
64. {  
65.     int i = 0;  
66.     int ret = 0;  
67.     printf("删除联系人\n");  
68.     ret = find_position(pcon);  
69.     if (ret == -1)  
70.     {  
71.         printf("你要删除的姓名不存在!!!\n");  
72.         return -1;  
73.     }  
74.     else  
75.     {  
76.         for(i=ret; i<pcon->count-1; i++)  
77.         {  
78.             pcon->arr[i] = pcon->arr[i+1];  
79.         }  
80.         pcon->count--;  
81.         return 0;  
82.     }  
83. }  
84.   
85. int revise_contact(contact *pcon)//修改指定联系人的信息  
86. {  
87.     int ret = 0;  
88.     printf("修改联系人信息>");  
89.     ret = find_position(pcon);  
90.     if (ret == -1)  
91.     {  
92.         printf("你要修改的联系人不存在!!!\n");  
93.         return -1;  
94.     }  
95.     else  
96.     {  
97.         printf("请输入要修改的数据:\n");  
98.         printf("请输入名字>");  
99.         scanf("%s",pcon->arr[ret].name);  
100.         printf("请输入性别>");  
101.         scanf("%s",pcon->arr[ret].sex);  
102.         printf("请输入年龄>");  
103.         scanf("%d",&(pcon->arr[ret].age));  
104.         printf("请输入电话>");  
105.         scanf("%s",pcon->arr[ret].tele);  
106.         printf("请输入住址>");  
107.         scanf("%s",pcon->arr[ret].address);  
108.         return 0;  
109.     }  
110. }  
111.   
112. void put_empty(contact *pcon)//清空所有联系人(还原成初始化状态)  
113. {  
114.     memset(pcon->arr, 0, MAX_SIZE*sizeof(peo));  
115.     pcon->count = 0;  
116. }  
117.   
118. int find_contacts(contact *pcon)//查找并且输出这个找到的信息。  
119. {  
120.     int ret = 0;  
121.     ret = find_position(pcon);  
122.     if (ret == -1)  
123.     {  
124.         printf("你要查找的名字不存在!!!\n");  
125.         return -1;  
126.     }  
127.     else  
128.     {  
129.         printf("姓名:%s性别:%s年龄:%d电话:%s地址:%s\n",  
130.                                     pcon->arr[ret].name,  
131.                                     pcon->arr[ret].sex,  
132.                                     pcon->arr[ret].age,  
133.                                     pcon->arr[ret].tele,  
134.                                     pcon->arr[ret].address);  
135.         return 0;  
136.     }  
137. }  
138.   
139. void sort_name(contact *pcon)//以名字排序所有联系人  
140. {  
141.     int i = 0;  
142.     int j = 0;  
143.     int flag = 0;  
144.     printf("以名字进行排序(a-->z)\n");  
145.     while(1)  
146.     {  
147.         flag = 0;  
148.         for (j = 0; j < pcon->count - 1; j++)  
149.         {  
150.             if (strcmp(pcon->arr[j].name, pcon->arr[j + 1].name)>0)  
151.             {  
152.                 peo tmp =  pcon->arr[j];  
153.                 pcon->arr[j] = pcon->arr[j + 1];  
154.                 pcon->arr[j + 1] = tmp;  
155.                 flag = 1;  
156.             }  
157.         }  
158.         if (flag == 0)  
159.         break;  
160.     }  
161. }


3.测试部分:test.c

[cpp] view plain copy
1. #include "Contact.h"  
2.   
3. int main()  
4. {  
5.     contact con;  
6.     int input = 1;  
7.     init_contact(&con);  
8.     do   
9.     {  
10.         print_menu();  
11.         printf("请选择>");  
12.         scanf("%d",&input);  
13.         switch(input)  
14.         {     
15.         case 1:  
16.             Add(&con);  
17.             break;  
18.         case 2:  
19.             delete_contact(&con);  
20.             break;  
21.         case 3:  
22.             put_empty(&con);  
23.             break;  
24.         case 4:  
25.             revise_contact(&con);  
26.             break;  
27.         case 5:  
28.             print_contact(&con);  
29.             break;  
30.         case 6:  
31.             find_contacts(&con);  
32.             break;  
33.         case 7:  
34.             sort_name(&con);  
35.             break;  
36.         default:  
37.             break;    
38.         }  
39.           
40.     } while (input);  
41.     return 0;  
42. }

 


程序结果:

 一篇文章教你用C语言实现通讯录(静态版)

一篇文章教你用C语言实现通讯录(静态版)

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程