C语言实现简易通讯录
2015-11-28 22:47
681 查看
实现一个通讯录;
通讯录可以用来存储联系人的信息,每个人的信息包括:
姓名、性别、年龄、电话、住址
提供方法:
1.添加联系人信息
2.删除指定联系人信息
3.查找指定联系人信息
4.修改指定联系人信息
5.显示所有联系人信息
6.以名字排序所有联系人
联系人的添加:
![](http://s1.51cto.com/wyfs02/M02/76/B3/wKioL1ZZvYDSN767AAApsPHUygw708.png)
联系人的显示:
![](http://s2.51cto.com/wyfs02/M01/76/B3/wKiom1ZZvR_AGLplAAAjMx49_4w158.png)
联系人的排序(按名称排序):
![](http://s2.51cto.com/wyfs02/M02/76/B3/wKiom1ZZvR_TitSEAAAfAG6Z8dY199.png)
联系人信息的修改:
![](http://s2.51cto.com/wyfs02/M02/76/B3/wKioL1ZZvYGD_7zmAAAe6s04UCc035.png)
修改后的联系人显示:
![](http://s2.51cto.com/wyfs02/M00/76/B3/wKiom1ZZvSDhiLaDAAAeUAAT3qo603.png)
联系人的删除:
![](http://s2.51cto.com/wyfs02/M01/76/B3/wKiom1ZZvSDQkK6AAAApzZXv_us852.png)
查找联系人(按电话或姓名查找):
1.按姓名查找
![](http://s3.51cto.com/wyfs02/M00/76/B3/wKioL1ZZwPfyGLUYAAAmQXCtA8A260.png)
2.按电话查找:
![](http://s3.51cto.com/wyfs02/M01/76/B3/wKioL1ZZwPjiT8ivAAAmcXhxGNk422.png)
通讯录可以用来存储联系人的信息,每个人的信息包括:
姓名、性别、年龄、电话、住址
提供方法:
1.添加联系人信息
2.删除指定联系人信息
3.查找指定联系人信息
4.修改指定联系人信息
5.显示所有联系人信息
6.以名字排序所有联系人
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> enum OP //枚举定义switch转换的接口位置 { NUL, ADD, //ADD=1 DELETE, //DELETE=2 FIND, //FIND=3 ALTER, //ALTER=4 PRINT, //PRINT=5 SORT //SORT=6 }; void menu() { printf("************* 简易通讯录 ************\n"); printf("************* 1.添加联系人信息 ************\n"); printf("************* 2.删除联系人信息 ************\n"); printf("************* 3.查找联系人信息 ************\n"); printf("************* 4.修改联系人信息 ************\n"); printf("************* 5.显示所有联系人 ************\n"); printf("************* 6.排序所有联系人 ************\n"); printf("************* 0. 退 出 ************\n"); } typedef struct man //定义联系人相关信息的结构体 { char name[15]; char sex[6]; char adrr[30]; char phone_num[10]; }Man; Man man[10]; //存储10个联系人信息 int Add_man(Man man[],int n) //添加联系人函数 { int i = 0; char sign = 0; //继续添加时Y/N的输入 char x[10]; while (sign != 'n'&&sign != 'N') { printf("phone_number:"); scanf("%s",&man[n+i].phone_num); printf("name:"); scanf("%s", &man[n + i].name); printf("sex:"); scanf("%s",&man[n+i].sex); printf("address:"); scanf("%s",&man[n+i].adrr); gets(x); printf("\n是否继续添加?(Y/N)"); scanf("%c",&sign); i++; } return (n + i); } int Delete_man(Man man[],int n) //删除联系人信息 { char a[10]; int i = 0; int j = 0; printf("请输入要删除的联系人姓名:"); scanf("%s",a); while (strcmp(man[i].name, a) != 0 && i < n) { i++; } if (i == n) { printf("查无此人,输入有误!"); return (n); } for (j = i; j < n - 1; j++) { strcpy(man[j].phone_num, man[j + 1].phone_num); strcpy(man[j].name, man[j + 1].name); strcpy(man[j].sex, man[j + 1].sex); strcpy(man[j].adrr, man[j + 1].adrr); } printf("Delete success!\n\n\n"); return (n - 1); } void Alter_man(Man man[],int n) //修改联系人信息 { char a[10]; int i = 0; printf("请输入要修改的联系人姓名:"); scanf("%s",a); while (strcmp(man[i].name, a) != 0 && i < n) { i++; } if (i == n) { printf("查无此人,输入有误!\n"); } printf("phone_number:"); scanf("%s",&man[i].phone_num); printf("name:"); scanf("%s",&man[i].name); printf("sex:"); scanf("%s",&man[i].sex); printf("address:"); scanf("%s",&man[i].adrr); printf("Alter success!\n\n\n"); } void Find_man(Man man[],int n) //查找相关联系人 { int choose = 0; printf("******************************\n"); printf("******** 查询方式 **********\n"); printf("***** 1.people_name *****\n"); printf("******************************\n"); printf("***** 2.phone_number *****\n"); printf("******************************\n"); printf("choose one find way:"); scanf("%d",&choose); while (choose != 1 && choose != 2) { printf("输入有误,请重新输入!"); scanf("%d",&choose); } if (choose == 1) { char a[10]; int i = 0; printf("请输入要查找的联系人姓名:"); scanf("%s",a); while (strcmp(man[i].name, a) != 0 && i < n) { i++; } if (i == n) { printf("\n\n查无此人!\n\n"); } else { printf("phone_number:%s\n", man[i].phone_num); printf("name:%s\n", man[i].name); printf("sex:%s\n", man[i].sex); printf("address:%s\n", man[i].adrr); } } if (choose == 2) { char a[10]; int i = 0; printf("请输入要查找的联系人电话:"); scanf("%s",a); while (strcmp(man[i].phone_num, a) != 0 && i < n) { i++; } if (i == n) { printf("\n\n查无此号!\n\n"); } else { printf("phone_number:%s\n", &man[i].phone_num); printf("name:%s\n", man[i].name); printf("sex:%s\n", man[i].sex); printf("address:%s\n", man[i].adrr); } } } void Print_man(Man man[],int n) //显示所有联系人信息 { int i = 0; printf("----------------------------------------------\n"); printf("电话姓名性别地址\n"); printf("----------------------------------------------\n"); for (i = 0; i < n ; i++) { printf("%s \t %s \t %s \t %s\n",man[i].phone_num,man[i].name,man[i].sex,man[i].adrr); } printf("----------------------------------------------\n"); } void Sort_man(Man man[],int n) //按联系人名称排序所有联系人 { int i = 0; int j = 0; struct man tmp; for (i = 0; i < n - 1; i++) { for (j = i; j < n; j++) { if (strcmp(man[i].name, man[j].name)>0) { tmp = man[i]; man[i] = man[j]; man[j] = tmp; } } } for (i = 0; i < n ; i++) { printf("%s \t %s \t %s \t %s\n", man[i].phone_num, man[i].name, man[i].sex, man[i].adrr); } } //主函数 int main() { int input = 1; int ret = 0; while (input) { menu(); printf("请输入您的选项:>"); scanf("%d",&input); switch (input) { case ADD: //利用枚举定义的函数名替代了case后的1,2,3,4等,使得每一个调用函数的入口有意义,而非毫无意义的单纯数字 ret=Add_man(man,ret); break; case DELETE: ret=Delete_man(man,ret); break; case FIND: Find_man(man,ret); break; case ALTER: Alter_man(man,ret); break; case PRINT: Print_man(man,ret); break; case SORT: Sort_man(man,ret); break; case 0: return 0; break; default: break; } } return 0; }
联系人的添加:
![](http://s1.51cto.com/wyfs02/M02/76/B3/wKioL1ZZvYDSN767AAApsPHUygw708.png)
联系人的显示:
![](http://s2.51cto.com/wyfs02/M01/76/B3/wKiom1ZZvR_AGLplAAAjMx49_4w158.png)
联系人的排序(按名称排序):
![](http://s2.51cto.com/wyfs02/M02/76/B3/wKiom1ZZvR_TitSEAAAfAG6Z8dY199.png)
联系人信息的修改:
![](http://s2.51cto.com/wyfs02/M02/76/B3/wKioL1ZZvYGD_7zmAAAe6s04UCc035.png)
修改后的联系人显示:
![](http://s2.51cto.com/wyfs02/M00/76/B3/wKiom1ZZvSDhiLaDAAAeUAAT3qo603.png)
联系人的删除:
![](http://s2.51cto.com/wyfs02/M01/76/B3/wKiom1ZZvSDQkK6AAAApzZXv_us852.png)
查找联系人(按电话或姓名查找):
1.按姓名查找
![](http://s3.51cto.com/wyfs02/M00/76/B3/wKioL1ZZwPfyGLUYAAAmQXCtA8A260.png)
2.按电话查找:
![](http://s3.51cto.com/wyfs02/M01/76/B3/wKioL1ZZwPjiT8ivAAAmcXhxGNk422.png)
相关文章推荐
- C/C++对一个整数求出每一位的数值
- Effective c++学习笔记四
- C语言打印最长字符串
- C语言打印水平直方图或者垂直直方图
- C语言开发总结(十五)
- 【转】C语言中标识符的作用域、命名空间、链接属性、生命周期、存储类型
- C/C++整数除法以及保留小数位的问题
- 【简易通讯录】——C语言实现
- Visual Studio 2015 快捷键(C++篇可通用)
- C语言运算符小结
- C语言学习笔记1
- C++中单链表的建立
- C语言链表的操作和讲解
- 在YouCompleteMe+Syntastic中添加和取消对C++11的支持
- 【LeetCode从零单刷】Convert Sorted List to Binary Search Tree
- 编译原理(六) LL(1)文法分析法(分析过程的C++实现)
- [温故而知新] 《深度探索c++对象模型》——对象方法成员
- ROS_hydro_helloworld.cpp_g++编译
- 宏定义-C语言基础学习笔记
- 570B. Simple Game