静态版通讯录的实现
来源:互联网 发布:上海网络教研 编辑:程序博客网 时间:2024/06/05 17:48
首先也是自定义头文件,函数实现部分还有测试函数
头文件部分:
#ifndef __CONTACT_H__#define __CONTACT_H__#define MAX_NAME 20#define MAX_SEX 5#define MAX_TELE 12#define MAX_ADDR 100#define MAX 1000typedef struct PeoInfo//定义结构体包括名字 年龄 性别 电话 地址{ char name[MAX_NAME]; int age; char sex[MAX_SEX]; char tele[MAX_TELE]; char addr[MAX_ADDR];}PeoInof;typedef struct Con{ PeoInof con[MAX]; int sz;}Con,*pCon;enum input{ EXIT, ADD, DELETE, SEARCH, MODIFY, SHOW, EMPTY, SORT};void init(pCon Con);//初始化通讯录void add(pCon Con);//添加联系人void delete(pCon Con);//删除联系人void search(pCon Con);//查找联系人void modify(pCon Con);//修改联系人void show(pCon Con);//显示联系人void empty(pCon Con);//清空通讯录void sort(pCon Con);//排序联系人#endif
函数实现部分:
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include <string.h>#include "contact.h"void init(pCon Con)//初始化通讯录{ memset(Con->con, 0, MAX*sizeof(PeoInof)); Con->sz = 0;}int find_peo(pCon Con,char *name){ int i = 0; if (Con->sz == 0) { printf("通讯录为空,不能查找联系人!\n"); } else { for (i = 0; i < Con->sz; i++) { if (strcmp(Con->con[i].name, name) == 0) return i; } } return -1;}void add(pCon Con)//添加联系人{ if (Con->sz == MAX) { printf("通讯录已满,不能再添加!\n"); } else { printf("请输入姓名:"); scanf("%s", Con->con[Con->sz].name); printf("请输入年龄:"); scanf("%d", &Con->con[Con->sz].age); printf("请输入性别:"); scanf("%s", Con->con[Con->sz].sex); printf("请输入电话:"); scanf("%s", Con->con[Con->sz].tele); printf("请输入地址:"); scanf("%s", Con->con[Con->sz].addr); Con->sz++; printf("添加联系人成功!\n"); }}void delete(pCon Con)//删除指定联系人{ if (Con->sz == 0) { printf("通讯录为空,不能进行删除!\n"); } else { int i = 0; int ret = 0; char name[MAX_NAME] = { 0 }; printf("请输入要删除人的姓名:"); scanf("%s",name); ret = find_peo(Con, name); if (ret != -1) { for (i = ret; i < Con->sz - 1; i++) { Con->con[i] = Con->con[i + 1]; } Con->sz--; printf("删除成功!\n"); } else { printf("没有此联系人!\n"); } }}void search(pCon Con)//查找指定联系人{ int i = 0; int ret = 0; char name[MAX_NAME] = { 0 }; printf("请输入要查找的人的姓名:"); scanf("%s",name); ret = find_peo(Con, name); if (ret != -1) { printf("%5s %5d %5s %5s %5s\n", Con->con[ret].name, Con->con[ret].age, Con->con[ret].sex, Con->con[ret].tele, Con->con[ret].addr); } else { printf("没有找到指定联系人!\n"); }}void modify(pCon Con)//修改指定联系人{ int i = 0; int ret = 0; char name[MAX_NAME] = { 0 }; printf("请输入要修改的人的姓名:"); scanf("%s",name); ret = find_peo(Con,name); if (ret != -1) { printf("%5s %5s %5s %5s %5s\n", "name", "age", "sex", "tele", "addr"); scanf("%5s%5d%5s%5s%5s", Con->con[ret].name, &Con->con[ret].age, Con->con[ret].sex, Con->con[ret].tele, Con->con[ret].addr); printf("修改成功,修改后为:\n"); printf("%5s %5d %5s %5s %5s\n", Con->con[ret].name, Con->con[ret].age, Con->con[ret].sex, Con->con[ret].tele, Con->con[ret].addr); } else { printf("没有此联系人!\n"); }}void show(pCon Con)//显示联系人{ int i = 0; for (i = 0; i < Con->sz; i++) { printf("%5s %5d %5s %5s %5s\n", Con->con[i].name, Con->con[i].age, Con->con[i].sex, Con->con[i].tele, Con->con[i].addr); }}void empty(pCon Con)//清空通讯录{ Con->sz = 0; printf("完成清空!\n");}void sort(pCon Con)//排序{ int i = 0; if (Con->sz == 0) { printf("通讯录为空!\n"); } else { for (i = 0; i<Con->sz - 1; i++) { int j = 0; for (j = 0; j<Con->sz - 1 - i; j++) { if (strcmp(Con->con[j].name, Con->con[j + 1].name)>0) { PeoInof tmp = Con->con[j]; Con->con[j] = Con->con[j + 1]; Con->con[j + 1] = tmp; } } } printf("排序完成!\n"); }}
主函数的测试部分:
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include "contact.h"void menu(){ printf("***********************************************\n"); printf("************** 1.添加联系人信息 ***************\n"); printf("************** 2.删除指定联系人 ***************\n"); printf("************** 3.查找指定联系人 ***************\n"); printf("************** 4.修改指定联系人 ***************\n"); printf("************** 5.显示所有联系人 ***************\n"); printf("************** 6.清空所有联系人 ***************\n"); printf("************** 7.排序所有联系人 ***************\n"); printf("************** 0.退出 ***************\n"); printf("***********************************************\n");}int main(){ menu(); Con my_con; init(&my_con); int input = 0; while (input) { printf("请输入要执行的操作:"); scanf("%d",&input); switch (input) { case ADD: add(&my_con); break; case DELETE: delete(&my_con); break; case SEARCH: search(&my_con); break; case MODIFY: modify(&my_con); break; case SHOW: show(&my_con); break; case EMPTY: empty(&my_con); break; case SORT: sort(&my_con); break; case EXIT: break; default: printf("请输入正确选项\n"); break; } } system("pause"); return 0;}
0 0
- 静态版通讯录的实现
- 通讯录的静态实现
- 静态通讯录的实现
- 简单静态通讯录的实现
- 简单的静态通讯录的实现。
- 模拟实现通讯录-静态的方法
- 静态顺序表实现简单的通讯录
- 结构体 静态通讯录的实现
- C语言实现通讯录(静态版)
- 通讯录-静态实现
- 静态存储实现通讯录
- 【C语言】实现一个通讯录(一:静态的实现)
- 1000人通讯录的实现(静态实现)
- 有趣的通讯录—<静态版>
- 通讯录——静态实现
- 静态实现通讯录的增添、删除、查找等操作
- C语言——简易的静态通讯录实现
- 编写一个可容纳1000人的通讯录(【结构体】静态通讯录的实现)
- HTML5 新增的结构元素——能用不代表用对了
- Mybatis特殊值Enum类型转换器-ValuedEnumTypeHandler
- iOS PNChart 使用详解
- 计算机程序
- java练习---季节
- 静态版通讯录的实现
- 对应用程序角度的MySQL查询优化的一点个人小结
- 蓝鸥Unity开发教程之课时6 脚本生命周期
- Android 判断用户2G/3G/4G移动数据网络
- python实现模拟登录
- HTML学习笔记2
- 给VMware下的Linux扩展磁盘空间(以CentOS6.3为例)
- android-async-http源码宏观分析
- servlet 剖析