动态通讯录
来源:互联网 发布:手机测谎软件 编辑:程序博客网 时间:2024/05/21 22:30
动态通讯录:
**提供方法:
1. 添加联系人信息
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息
5. 显示所有联系人信息
6. 清空所有联系人
7. 以名字排序所有联系人**
具体实现如下:
头文件:contact.h
#ifndef __CONTACT_H__#define __CONTACT_H__#define BIG 100#include <stdio.h>#include <string.h>#include <stdlib.h>#include <Windows.h>typedef struct Man { char name[20]; char sex[10]; int age; char address[30]; char tel[20];}Man;typedef struct Contact { Man* start; int count; int info;}Contact;void menu();void init_con(Contact* pcon);int cmp_con(Contact* pcon,char* name);void check_con(Contact* pcon);void add_con(Contact* pcon);void del_con(Contact* pcon);void find_con(Contact* pcon);void mod_con(Contact* pcon);void show_con(Contact* pcon);void empty_con(Contact* pcon);void sort_con(Contact* pcon);#endif //CONTACT_H__
contact.c :
#define _CRT_SECURE_NO_WARNINGS 1#include "contact.h"void menu(){ printf("***********************************\n"); printf("**********1:添加 2:删除**********\n"); printf("**********3:查找 4:修改**********\n"); printf("**********5:显示 6:清空**********\n"); printf("**********7:排序 0:退出**********\n"); printf("***********************************\n");}void init_con(Contact* pcon){ pcon->start = (Man*)malloc(20 * sizeof(Man)); if(pcon->start == NULL) { printf("空间不足\n"); return; } pcon->count = 0; pcon->info = BIG;}void check_con(Contact* pcon){ Contact *temp; if(pcon->count == pcon->info) { temp = (Contact *)realloc(pcon->start,BIG*sizeof(Man)); if(temp == NULL) { printf("空间不足\n"); return; } else { pcon->start = temp; pcon->info += BIG; } }}int cmp_con(Contact* pcon,char* name){ int i = 0; for(i=0;i<pcon->count;i++) { if(strcmp(pcon->start[i].name,name) == 0) { return i; } } return -1;}void add_con(Contact* pcon){ check_con(pcon); if(pcon->count == pcon->info) { printf("已存满\n"); return; } else { printf("请输入姓名>"); scanf("%s",pcon->start[pcon->count].name); printf("请输入性别>"); scanf("%s",pcon->start[pcon->count].sex); printf("请输入年龄>"); scanf("%d",&pcon->start[pcon->count].age); printf("请输入地址>"); scanf("%s",pcon->start[pcon->count].address); printf("请输入电话>"); scanf("%s",pcon->start[pcon->count].tel); } printf("信息录入完毕\n"); pcon->count++;}void del_con(Contact* pcon){ char name[20]; int input = 0; int ret = 0; int i = 0; printf("请输入要删除那个人的姓名>"); scanf("%s",name); ret = cmp_con(pcon,name); if(ret == -1) { printf("没有此人的信息\n"); return; } printf("****** 确定要删除? ******\n"); printf("******1:删除 2:取消******\n"); printf("请选择>"); scanf("%d",input); if(input == 2) { printf("取消成功\n"); return; } for(i=ret;i<pcon->count-1;i++) { Man temp; temp = pcon->start[i]; pcon->start[i] = pcon->start[i+1]; pcon->start[i+1] = temp; } printf("删除完毕\n");}void find_con(Contact* pcon){ int ret = 0; char name[20]; printf("请输入要查找那个人的姓名>"); scanf("%s",name); ret = cmp_con(pcon,name); if(ret == -1) { printf("没有此人\n"); return; } printf("\n"); printf("姓名为: %s\n",pcon->start[ret].name); printf("性别为: %s\n",pcon->start[ret].sex); printf("年龄为: %d\n",pcon->start[ret].age); printf("地址为: %s\n",pcon->start[ret].address); printf("电话为: %s\n",pcon->start[ret].tel); printf("\n");}void mod_con(Contact* pcon){ char name[20]; int ret = 0 ; printf("请输入要修改那个人的姓名>"); scanf("%s",name); ret = cmp_con(pcon,name); if(ret == -1) { printf("没有此人\n"); return; } printf("请输入姓名>"); scanf("%s",pcon->start[pcon->count].name); printf("请输入性别>"); scanf("%s",pcon->start[pcon->count].sex); printf("请输入年龄>"); scanf("%d",&pcon->start[pcon->count].age); printf("请输入地址>"); scanf("%s",pcon->start[pcon->count].address); printf("请输入电话>"); scanf("%s",pcon->start[pcon->count].tel); printf("修改完毕\n");}void show_con(Contact* pcon){ int i = 0; for (i = 0; i <(pcon->count); i++) { printf("\n"); printf("姓名为:%s\n",pcon->start[i].name); printf("性别为:%s\n",pcon->start[i].sex); printf("年龄为:%d\n",pcon->start[i].age); printf("地址为:%s\n",pcon->start[i].address); printf("电话:%s\n",pcon->start[i].tel); printf("\n"); } printf("输出完毕\n");}void empty_con(Contact* pcon){ pcon->count = 0; printf("清空完成\n");}void sort_con(Contact* pcon){ int i = 0; int j = 0; for(i=0;i<pcon->count-1;i++) { for(j=0;j<pcon->count-1-i;i++) { if(strcmp(pcon->start[j].name,pcon->start[j+1].name)>0) { Man temp; temp = pcon->start[j]; pcon->start[j] = pcon->start[j+1]; pcon->start[j+1] = temp; } } } printf("排序完成\n");}
test.c :
#define _CRT_SECURE_NO_WARNINGS 1#include "contact.h"int main(){ Contact my_con; int input = 0; void (* p[8])(Contact *pcon) = {NULL,add_con,del_con,find_con,mod_con,show_con,empty_con,sort_con}; init_con(&my_con); do { menu(); printf("请选择>"); scanf("%d",&input); if((input>0)&&(input<=7)) { p[input](&my_con); } else { printf("选择错误\n"); } } while (input); free(my_con.start); return 0;}
阅读全文
0 0
- 静态通讯录、动态通讯录
- 动态通讯录
- 动态通讯录
- 动态通讯录
- 动态通讯录
- 动态通讯录
- 动态通讯录
- 通讯录.动态
- 动态通讯录
- 通讯录的动态实现
- 动态存储实现通讯录
- 通讯录动态版本
- 通讯录(动态版本)
- 通讯录动态开辟版本
- 通讯录动态实现
- 动态版通讯录
- 模拟实现通讯录-动态
- 模拟实现动态通讯录
- 关闭迅雷首页自动播放视频
- c++作业6
- 读书笔记《Effective C++》条款24:若所有参数皆需类型转换,请为此采用non-member函数
- Windows系统命令窗口启动Tomcat9
- 生活中的设计模式之观察者模式
- 动态通讯录
- 求两个数的最大公约数和最小公倍数
- 排列 算法竞赛入门经典刘汝佳
- 高级网络配置
- 嵌套矩形(刘汝佳262,NYOJ16)
- display&&visbility
- 【安全】WannaCry-一周目体验
- 微信小程序:隐藏控件
- Python通过url获取图片的几种方法