摘要:本文主要向大家介绍了用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+频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号