通讯录-静态实现
2016-05-14 16:31
267 查看
题目:实现一个通讯录,通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名,性别,年龄,电话,住址。可以对个人信息进行增、删、查、改、显示、清空、排序等功能。
分析:
首先,要存放1000个人的信息,就要定义一个结构体,存放姓名,性别,年龄,电话,住址等信息。另外,还要定义一个结构体来存放通讯录的大小以及通讯录的当前存放的大小。通过结构体指针就可以访问各个功能函数。
其次,可以定义三个函数来分别实现不同的功能。"Contact.h"部分来实现结构体的定义以及增删查改等功能函数的定义。"Contact.c"部分分别实现每个函数的功能。"test.c"部分即为测试部分,包括主函数。
头文件:
“Contact.h”
函数:
“Contact.c”
主函数:
“test.c”
分析:
首先,要存放1000个人的信息,就要定义一个结构体,存放姓名,性别,年龄,电话,住址等信息。另外,还要定义一个结构体来存放通讯录的大小以及通讯录的当前存放的大小。通过结构体指针就可以访问各个功能函数。
其次,可以定义三个函数来分别实现不同的功能。"Contact.h"部分来实现结构体的定义以及增删查改等功能函数的定义。"Contact.c"部分分别实现每个函数的功能。"test.c"部分即为测试部分,包括主函数。
头文件:
“Contact.h”
#include<stdio.h> #include<stdlib.h> #include<string.h> enum po { EXIT, ADD, DELE, SER, MODIFY, DISPLAY, CLEAR, SORT }; #define NAME_MAX 100 //姓名的最大长度 #define SEX_MAX 5 //性别的最大长度 #define TELE_MAX 12 //电话的最大长度 #define ADDR_MAX 25 //地址的最大长度 #define MAX 1000 //最多存放的变量内容 typedef struct Perfo { char name[NAME_MAX]; char sex[SEX_MAX]; int age; char tele[TELE_MAX]; char addr[ADDR_MAX]; }Perfo; typedef struct Contact //定义此结构体来保存变量的大小 { Perfo data[MAX]; int size; }Con,*Pcon; void init(Pcon pcon); //结构体初始化 void _add(Pcon pcon); //插入 void _ser(Pcon pcon); //查找 void _dele(Pcon pcon); //删除 void _modify(Pcon pcon); //修改 void _display(Pcon pcon); //显示 void _clear(Pcon pcon); //清除 void _sort(Pcon pcon); //排序
函数:
“Contact.c”
#include"Contact.h" void init(Pcon pcon) { memset(pcon->data,0,MAX*sizeof(Perfo)); pcon->size = 0; } void _add(Pcon pcon) //插入 { if(pcon->size >= NAME_MAX) { printf("电话本已满,请删除部分后再插入\n"); return ; } else { printf("请输入信息:姓名 性别 年龄 电话 住址\n"); scanf("%s",pcon->data[pcon->size].name); scanf("%s",pcon->data[pcon->size].sex); scanf("%d",&pcon->data[pcon->size].age); scanf("%s",pcon->data[pcon->size].tele); scanf("%s", pcon->data[pcon->size].addr); pcon->size++; } printf("插入成功!\n"); } int find(Pcon pcon,char *name) { int i = 0; for(i = 0;i<pcon->size;i++) { if(strcmp(pcon->data[i].name,name) == 0) return i; } return -1; } void _ser(Pcon pcon) //查找联系人 { int ret = 0; char name[NAME_MAX] = {0}; printf("请输入要查找的人的名字:"); scanf("%s",name); ret = find(pcon,name); if(ret == -1) { printf("不存在此人\n"); return ; } else { printf("%9s\t%5s\t%7d\t%12s\t%15s\n", pcon->data[ret].name, pcon->data[ret].sex, pcon->data[ret].age, pcon->data[ret].tele, pcon->data[ret].addr); } } void _display(Pcon pcon) //显示 { int n = 0; printf("姓名 性别 年龄 电话 住址\n"); if(pcon->size <= 0) { printf("电话本空!\n"); } else { for(n = 0;n<pcon->size;n++) { printf("%9s\t%5s\t%7d\t%12s\t%15s\n", pcon->data .name, pcon->data .sex, pcon->data .age, pcon->data .tele, pcon->data .addr); } } } void _dele(Pcon pcon) //删除 { char name[NAME_MAX]; int ret = 0; int i = 0; printf("请输入要删除的人的姓名:"); scanf("%s",name); ret = find(pcon,name); if(ret == -1) printf("不存在此人!\n"); else { for(i = ret;i<pcon->size;i++) { pcon->data[i] = pcon->data[i+1]; } pcon->size--; printf("删除成功!\n"); } } void _modify(Pcon pcon) //修改 { int ret = 0; char name[NAME_MAX]; printf("请输入要修改的人的姓名:"); scanf("%s",name); ret = find(pcon,name); if(ret == -1) printf("不存在此人\n"); else { printf("请输入名字:>"); scanf("%s",pcon->data[ret].name); printf("请输入年龄:>"); scanf("%d",&(pcon->data[ret].age)); printf("请输入性别:>"); scanf("%s",pcon->data[ret].sex); printf("请输入电话:>"); scanf("%s",pcon->data[ret].tele); printf("请输入地址:>"); scanf("%s",pcon->data[ret].addr); } } void _clear(Pcon pcon) //清空 { pcon->size = 0; printf("电话本已空!\n"); } void _sort(Pcon pcon) // 排序 { int i = 0; int j = 0; for(i = 0;i<pcon->size-1;i++) { for(j = 0;j<pcon->size-1-i;j++) { Perfo temp = {0}; if(strcmp(pcon->data[j].name,pcon->data[j+1].name)>0) { temp = pcon->data[j]; pcon->data[j] = pcon->data[j+1]; pcon->data[j+1] = temp; } } } }
主函数:
“test.c”
#include "Contact.h" void menu() { printf("--------- 0.exit ---------\n"); printf("--------- 1.add ----------\n"); printf("--------- 2.dele ---------\n"); printf("--------- 3.ser ----------\n"); printf("--------- 4.modify -------\n"); printf("--------- 5.display ------\n"); printf("--------- 6.clear --------\n"); printf("--------- 7.sort ---------\n"); } int main() { int input = 1; Con con; init(&con); menu(); while(input) { menu(); printf("请选择要操作的数字:"); scanf("%d",&input); printf("\n"); { switch(input) { case EXIT: break; case ADD: _add(&con); break; case DELE: _dele(&con); break; case SER: _ser(&con); break; case MODIFY: _modify(&con); break; case DISPLAY: _display(&con); break; case CLEAR: _clear(&con); break; case SORT: _sort(&con); break; default: printf("无效选择!"); break; } } } system("pause"); return 0; }
相关文章推荐
- php实现在线通讯录功能(附源码)
- Android获取手机通讯录、sim卡联系人及调用拨号界面方法
- Android使用ContentResolver搜索手机通讯录的方法
- Android实现仿通讯录侧边栏滑动SiderBar效果代码
- Android实现通讯录效果――获取手机号码和姓名
- Python 实现简单的电话本功能
- Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
- Android通讯录开发之删除功能的实现方法
- iOS开发中使app获取本机通讯录的实现代码实例
- php实现在线通讯录功能(附源码)
- extmail全局地址本生成脚本
- AH名片簿客户通讯录管理软件V3.78
- [应用模板]HTML5+Phonegap通讯录
- lync 通讯录
- 让IT工作者过度劳累的13个坏习惯
- 通讯录相关(编辑)
- android手机应用程序操作手机通讯录的联系人
- ionic通讯录点击滑动效果的实现以及$ionicscrolldelegate使用分析
- IOS-OC读取通讯录联系人信息
- IOS打电话的3种方法