简单静态通讯录的实现
来源:互联网 发布:彩票关注源码出售 编辑:程序博客网 时间:2024/05/16 16:01
头文件部分:
Contact.h#define _CRT_SECURE_NO_WARNINGS#ifndef __CONTACT_H__ #define __CONTACT_H__ #include <stdio.h>#include <assert.h>#include <string.h>#define MAX 1000 //通讯录最大存储量#define NAME_MAX 20//名字最大长度 #define SEX_MAX 5 //性别...#define ADDR_MAX 30 //地址...#define TELE_MAX 12 //电话...typedef struct PeoInfo { char name[NAME_MAX]; int age; char sex[SEX_MAX]; char addr[ADDR_MAX]; char tele[TELE_MAX]; }PeoInfo;//定义的新类型typedef struct Contact { PeoInfo data[MAX]; int sz; }Contact, *pContact; void InitContact(pContact pcon); //初始化通讯录void AddContact(pContact pcon); //添加void ShowContact(const pContact pcon); //展示void DelContact(pContact pcon); //删除void SearchContact(pContact pcon); //查找void ModifyContact(pContact pcon);//修改 void SortContact(pContact pcon); //排序void ClearContact(pContact pcon);//清空 #endif
测试程序
test.c
#define _CRT_SECURE_NO_WARNINGS #include "Contact.h" void menu()//菜单 { printf("*******************************************************\n"); printf("************* 1.ADD 2.DEL **************\n"); printf("******** 3.SEARCH 4..MODIFY ********\n"); printf("************* 5.SHOW 6.CLEAR ************\n"); printf("************* 7.SORT 0.EXIT **************\n"); printf("*******************************************************\n"); } enum { EXIT,//0 ADD,//1 DEL,//2 SEARCH,//3 MODIFY,//4 SHOW,//5 CLEAR,//6 SORT//7 }; void test() { int input = 0; Contact my_con; InitContact(&my_con);//初始化通讯录 do { menu();//打印菜单 printf("请选择:>"); scanf("%d",&input); switch (input) { case ADD: AddContact(&my_con); break; case SHOW: ShowContact(&my_con); break; case DEL: DelContact(&my_con); break; case SEARCH: SearchContact(&my_con); break; case MODIFY: ModifyContact(&my_con); break; case CLEAR: ClearContact(&my_con); break; case SORT: SortContact(&my_con); break; default: break;} } while (input); } int main() { test(); return 0; }
实现
Contact.c#define _CRT_SECURE_NO_WARNINGS #include "Contact.h" void InitContact(pContact pcon)//初始化通讯录 { pcon->sz = 0; memset(pcon->data, 0, sizeof(pcon->data)); } void AddContact(pContact pcon)//添加联系人 { assert(pcon!=NULL); if (pcon->sz == MAX) { printf("通讯录满了!\n"); } printf("请输入姓名:>\n"); scanf("%s",pcon->data[pcon->sz].name); printf("请输入性别:>\n"); scanf("%s",pcon->data[pcon->sz].sex); printf("请输入年龄:>\n"); scanf("%d",&(pcon->data[pcon->sz].age)); printf("请输入地址:>\n"); scanf("%s",pcon->data[pcon->sz].addr); printf("请输入电话:>\n"); scanf("%s",pcon->data[pcon->sz].tele); pcon->sz++; printf("录入成功!\n"); } int find(pContact pcon,char name[])//通用的查找函数 { int i = 0; assert(pcon!=NULL); for (i=0; i<pcon->sz; i++) { if (strcmp(pcon->data[i].name ,name) == 0) { return i; } }return -1;} void DelContact(pContact pcon)//删除联系人 { int ret = 0; char name[NAME_MAX] = {0}; assert(pcon!=NULL); printf("请输入要删除人的名字:>"); scanf("%s",name); ret = find(pcon, name); if (ret == -1) { printf("要查找的人不存在\n"); return; } else { int i =0; for (i=ret; i<pcon->sz; i++) { pcon->data[i] = pcon->data[i+1]; } pcon->sz--; printf("删除成功\n"); } } void SearchContact(pContact pcon)//查找联系人 { int ret = 0; char name[NAME_MAX] = {0}; assert(pcon!=NULL); printf("请输入要查找的名字:>"); scanf("%s",name); ret = find(pcon,name); if (ret == -1) { printf("要查找的人不存在\n"); return; } else { printf("%10s\t%5s\t%5s\t%15s\t%15s\n", "姓名", "性别", "年龄", "地址", "电话"); printf("%10s\t%5s\t%5d\t%15s\t%15s\n", pcon->data[ret].name, pcon->data[ret].sex, pcon->data[ret].age, pcon->data[ret].addr, pcon->data[ret].tele); } } void ModifyContact(pContact pcon)//修改联系人 { int ret = 0; char name[NAME_MAX] = {0}; assert(pcon!=NULL); printf("请输入要修改人的名字:>"); scanf("%s",name); ret = find(pcon,name); if (ret == -1) { printf("要查找的人不存在\n"); } else { printf("请输入姓名:>\n"); scanf("%s",pcon->data[ret].name); printf("请输入性别:>\n"); scanf("%s",pcon->data[ret].sex); printf("请输入年龄:>\n"); scanf("%d",&(pcon->data[ret].age)); printf("请输入地址:>\n"); scanf("%s",pcon->data[ret].addr); printf("请输入电话:>\n"); scanf("%s",pcon->data[ret].tele); } } void ShowContact(const pContact pcon)//展示联系人 { int i = 0; assert(pcon!=NULL); printf("%10s\t%5s\t%5s\t%15s\t%15s\n", "姓名", "性别", "年龄", "地址", "电话"); for (i=0; i<pcon->sz; i++) { printf("%10s\t%5s\t%5d\t%15s\t%15s\n", pcon->data[i].name, pcon->data[i].sex, pcon->data[i].age, pcon->data[i].addr, pcon->data[i].tele); } } void ClearContact(pContact pcon)//清空联系人 { assert(pcon!=NULL); pcon->sz = 0; } void SortContact(pContact pcon)//按名字进行排序 { int i = 0; int j = 0; PeoInfo tmp; assert(pcon!=NULL); for (i=0; i<pcon->sz; i++) { for (j=0; j<pcon->sz-i-1; j++) { if (strcmp(pcon->data[j].name, pcon->data[j+1].name)>0) { tmp = pcon->data[j]; pcon->data[j] = pcon->data[j+1]; pcon->data[j+1] = tmp; } } } ShowContact(pcon); }
选取其中几个进行截图:
阅读全文
0 0
- 简单静态通讯录的实现
- 简单的静态通讯录的实现。
- 静态顺序表实现简单的通讯录
- 通讯录的静态实现
- 静态通讯录的实现
- 通讯录的简单实现
- 通讯录的简单实现
- 通讯录的简单实现
- 简单通讯录的实现
- 简单通讯录的实现
- 静态版通讯录的实现
- 手机通讯录的简单实现
- Python 实现简单的通讯录
- 实现简单功能的通讯录
- Android简单通讯录的实现
- 二叉排序树实现简单的通讯录
- 实现一个简单的通讯录
- c++实现简单的通讯录
- 大数据入门(基础概念)
- 数据类型转换
- [LeetCode]538. Convert BST to Greater Tree
- PAT a1011题解
- Hdu 4063-Aircraft(计算几何+最短路)
- 简单静态通讯录的实现
- PAT a1012题解
- vue2.0之axios使用详解(一)
- Java中栈、堆的简单了解
- 【图算法】(1)初始化图
- python: 用把自己蠢哭的方式求3*3幻方
- markdown的常用格式
- PAT a1013题解
- 今宵别梦寒