C语言实现简易通讯录
来源:互联网 发布:java md5加密与解密 编辑:程序博客网 时间:2024/05/12 03:18
实现通讯录中基本的操作
提供方法:
1. 添加指定联系人信
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息
5. 显示所有联系人信息
6. 清空所有联系人
7. 以名字或年龄排序所有联系人
头文件
#include<stdlib.h>#define MAX 1000#define FIRST 3#define EXT 2typedef struct PeoInfo{ char name[20]; char sex[5]; int age; char phone[12]; char addr[30];}PeoInfo;typedef struct Contact{ int sz; int capacity; PeoInfo Info[];}Contact;void init(Contact *pcon);void add(Contact *pcon);void show(Contact *pcon);void modif(Contact *pcon);void sub(Contact *pcon);void search(Contact *pcon);void empty(Contact *pcon);void sort(Contact *pcon);#endif
实现相关函数
#include"contact.h"void init(Contact *pcon){ pcon->sz = 0; pcon->capacity = FIRST;}int find(Contact* pcon,const char *find_name){ int i = 0; assert(pcon != NULL); for(i=0;i<pcon->sz;i++) { if(strcmp(pcon->Info[i].name,find_name) == 0) { return i; } } return -1;}void add(Contact* pcon){ char name[20]; char sex[5]; int age; char phone[12]; char addr[30]; assert(pcon != NULL); if(pcon->sz>=pcon->capacity) { PeoInfo *p = realloc(pcon,sizeof(PeoInfo)+EXT*sizeof(PeoInfo)); if(p == NULL) { printf("扩容失败!\n"); exit(1); } else { printf("扩容成功!\n"); pcon->capacity += EXT; } } printf("请输入姓名:>"); scanf("%s",&name); strcpy(pcon->Info[pcon->sz].name,name); printf("\n请输入性别:>"); scanf("%s",&sex); strcpy(pcon->Info[pcon->sz].sex,sex); printf("\n请输入年龄:>"); scanf("%d",&age); pcon->Info[pcon->sz].age = age; printf("\n请输入电话:>"); scanf("%s",&phone); strcpy(pcon->Info[pcon->sz].phone,phone); printf("\n请输入地址:>"); scanf("%s",&addr); strcpy(pcon->Info[pcon->sz].addr,addr); pcon->sz++; printf("存储成功!\n"); }void show(Contact *pcon){ int i = 0; assert(pcon != NULL); if(pcon->sz == 0) printf("联系人为空!\n"); else { printf("%-12s%-12s%-12s%-12s%-12s\n","name","sex","age","phone","addr"); for(i=0;i<pcon->sz;i++) { printf("%-12s%-12s%-12d%-12s%-12s\n",pcon->Info[i].name,pcon->Info[i].sex,pcon->Info[i].age,pcon->Info[i].phone,pcon->Info[i].addr); } }}void modif(Contact *pcon){ int ret = 0; char find_name[20] = {0}; char sex[5] = {0}; int age = 0; char phone[12] = {0}; char addr[30] = {0}; char name[20] = {0}; int choose = 0; assert(pcon != NULL); printf("输入要修改的人名:>\n"); scanf("%s",&find_name); ret = find(pcon,find_name); if(ret == -1) printf("查无此人!\n"); else { printf("1.name 2.sex 3.age 4.phone 5.addr 0.save\n"); do { printf("请选择要修改的内容:>\n"); scanf("%d",&choose); switch(choose) { case 1: printf("请重新输入名字:>\n"); scanf("%s",name); strcpy(pcon->Info[ret].name,name); break; case 2: printf("请重新输入性别:>\n"); scanf("%s",sex); strcpy(pcon->Info[ret].sex,sex); break; case 3: printf("请重新输入年龄:>\n"); scanf("%d",&age); pcon->Info[ret].age=age; break; case 4: printf("请重新输入电话:>\n"); scanf("%s",phone); strcpy(pcon->Info[ret].phone,phone); break; case 5: printf("请重新输入地址:>\n"); scanf("%s",addr); strcpy(pcon->Info[ret].name,name); break; case 0: printf("保存成功\n"); return; default: printf("输入有误\n"); } }while(1); }}void sub(Contact *pcon){ char find_name[20] = {0}; int i = 0; int ret = 0; assert(pcon != NULL); printf("请输入你要删除的联系人:>\n"); scanf("%s",find_name); ret = find(pcon,find_name); if(ret == -1) printf("查无此人!\n"); else { for(i=0;i<pcon->sz-ret-1;i++) { pcon->Info[ret+i] = pcon->Info[ret+i+1]; } pcon->sz--; printf("删除成功!\n"); }}void search(Contact *pcon){ int ret = 0; char find_name[20] = {0}; assert(pcon != NULL); printf("请输入所查找人的名字:>\n"); scanf("%s",find_name); ret = find(pcon,find_name); if(ret == -1) printf("查无此人!\n"); else { printf("name:%s sex:%s age:%d phone:%s addr:%s\n",pcon->Info[ret].name,pcon->Info[ret].sex,pcon->Info[ret].age,pcon->Info[ret].phone,pcon->Info[ret].addr); }}void empty(Contact *pcon){ pcon->sz = 0; printf("清空成功!\n");}void sort_by_name(Contact *pcon){ PeoInfo tmp; int i = 0; int j = 0; for(i=0;i<pcon->sz-1;i++) { for(j=0;j<pcon->sz-i-1;j++) { if(strcmp(pcon->Info[j].name,pcon->Info[j+1].name)>0) { tmp = pcon->Info[j]; pcon->Info[j] = pcon->Info[j+1]; pcon->Info[j+1] = tmp; } } } printf("排序完成!\n");}void sort_by_age(Contact *pcon){ int i = 0; int j = 0; PeoInfo tmp; for(i=0;i<pcon->sz-1;i++) { for(j=0;j<pcon->sz-1-i;j++) { if(pcon->Info[j].age>pcon->Info[j+1].age) { tmp = pcon->Info[j]; pcon->Info[j] = pcon->Info[j+1]; pcon->Info[j+1] = tmp; } } } printf("排序完成!\n");}void sort(Contact *pcon){ int input = 0; printf("请选择排序方式:> 1.按名字排序 2.按年龄排序 \n"); scanf("%d",&input); switch(input) { case 1: sort_by_name(pcon); break; case 2: sort_by_age(pcon); break; default: printf("输入错误,请重新输入!\n"); break; }}
主函数部分
#include<stdio.h>#include"contact.h"enum op{ EXIT, ADD, SUB, SEARCH, MODIF, SHOW, EMPTY, SORT,};void meun(){ printf("*****************************\n"); printf("**** 1.Add 2.Sub ****\n"); printf("**** 3.Search 4.Modif ****\n"); printf("**** 5.Show 6.Empty ****\n"); printf("**** 7.Sort 0.exit ****\n"); printf("*****************************\n");}//姓名、性别、年龄、电话、住址int main(){ int input = 0; Contact* pcon = (Contact *)malloc(sizeof(Contact)+FIRST*sizeof(PeoInfo)); if(pcon == NULL) { printf("开辟失败!"); exit(1); } init(pcon); meun(); do{ printf("请输入你的选择:>\n"); scanf("%d",&input); switch(input) { case EXIT: free(pcon); return; case ADD: add(pcon); break; case SUB: sub(pcon); break; case SEARCH: search(pcon); break; case MODIF: modif(pcon); break; case SHOW: show(pcon); break; case EMPTY: empty(pcon); break; case SORT: sort(pcon); break; default: printf("输入错误,请重新输入.\n"); } }while(1); return 0;}
阅读全文
0 0
- C语言实现简易通讯录
- 【简易通讯录】-----C语言实现
- C语言实现简易通讯录
- c语言模拟实现简易通讯录
- 【C语言】 简易通讯录
- C语言简易通讯录
- c语言-简易通讯录
- C语言的简易通讯录
- C语言编写简易通讯录
- C语言——简易的静态通讯录实现
- c语言实现----通讯录
- C语言实现通讯录
- C语言实现通讯录
- c语言实现通讯录
- C语言实现通讯录
- 【c语言】实现一个通讯录
- c语言实现通讯录系统
- C语言实现简单通讯录
- 链式前向星
- 大数的用法
- linux 下部署spring定时任务执行shell脚本,shell脚本执行spoon
- RocketMQ源码分析之Broker概述与同步消息发送原理与高可用设计及思考
- Java 开发必会的 Linux 命令
- C语言实现简易通讯录
- 正则表达式介绍
- 51nod--1113 矩阵快速幂
- 悟空传电影悟空传百度云资源
- 优先队列的 java 代码实现
- 11-S3C2440驱动学习(八)嵌入式linux-块设备驱动程序
- windows 下进程池的操作
- 19、多线程
- 已知一个字符串都是由左括号(和右括号)组成,判断该字符串是否是有效的括号组合。