C语言简易通讯录
来源:互联网 发布:情趣用品淘宝店铺简介 编辑:程序博客网 时间:2024/05/23 16:04
实现一个通讯录;
通讯录可以用来存储1000个人的信息,每个人的信息包括:
姓名、性别、年龄、电话、住址
通讯录所具有的功能
1. 添加联系人信息
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息
5. 显示所有联系人信息
6. 清空所有联系人
7. 以名字排序所有联系人
结构体对于这个通讯录来说非常重要,我设计了两个结构体,一个是单个联系人的结构体,另外一个是通讯录集合的结构体,这个里面有当前存放容量,和联系人的集合,敲完之后充分理解了做一个交互性好的软件是非常必要的,让用户使用起来感觉方便,对程序员来说真的很有成就感,下面废话不多说,以下分别列出了各模块的代码
contact.h
#ifndef __CONTACT__H #define __CONTACT__H #define NAME_MAX 20#define SEX_MAX 5#define TEL_MAX 12#define ADDR_MAX 30#define MAX 1000#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>//通讯录单个元素typedef struct PeoInfo {char name[NAME_MAX];char sex[SEX_MAX];int age;char tel[TEL_MAX];char addr[NAME_MAX];}PeoInfo;//通讯录集合typedef struct Contact{PeoInfo data[MAX];int sz;}*pcon;void InitContact(pcon p);void AddContact(pcon p);void ShowContact(pcon p);void DeleteContact(pcon p);void EmptyContact(pcon p);void SearchContact(pcon p);void UpdateContact(pcon p);void SortContact(pcon p);#endif//__CONTACT__Hcontact.c
#include "contact.h" //初始化通讯录void InitContact(pcon p) { p->sz = 0; memset(p->data,0,sizeof(p->data)); } //当前函数内查找功能int find(pcon p){int i = 0;char name[NAME_MAX]; printf("请输入此联系人的姓名>");scanf("%s",name);for(i=0;i<p->sz;i++){if(strcmp((p->data[i].name),name)==0)return i;//找到返回对应下标} return -1;//找不到返回-1}//按照名字对通讯录排序void SortContact(pcon p){int i = 0;int j = 0;PeoInfo tmp;if(p->sz==0){printf("通讯录为空,无法删除!\n");return;}for(i=0; i<p->sz-1; i++) { for(j=0; j<p->sz-i-1; j++) { if(strcmp(p->data[j].name,p->data[j+1].name)>0) //按照名字的大小,按照从小到大冒泡排序 { tmp = p->data[j]; p->data[j] = p->data[j+1]; p->data[j+1] = tmp; } } } printf("排序成功!\n");return;}//更新通讯录某一个联系人void UpdateContact(pcon p){int ret = 0;ret=find(p);if(ret==-1){printf("通讯录无此联系人!\n");return;}printf("*******请输入变更后的信息*********\n"); printf("请输入姓名:");scanf("%s",p->data[ret].name);printf("请输入性别:");scanf("%s",p->data[ret].sex);printf("请输入年龄:");scanf("%d",&(p->data[ret].age));printf("请输入电话:");scanf("%s",p->data[ret].tel);printf("请输入住址:");scanf("%s",p->data[ret].addr);printf("更新成功!\n");return;}//根据名字查找对应联系人信息void SearchContact(pcon p){int ret = 0;ret=find(p);if(ret==-1){printf("通讯录无此联系人!\n");return;}//打印对应信息printf("------------------------------------------------\n");printf("| 姓名 | 性别 | 年龄 | 电话 | 住址 |\n");printf("%10s%4s%4d%12s%20s\n",p->data[ret].name,p->data[ret].sex,p->data[ret].age,p->data[ret].tel,p->data[ret].addr);}//清空通讯录void EmptyContact(pcon p){p->sz=0;printf("通讯录清空成功!\n");return;}//根据名字删除某个联系人void DeleteContact(pcon p){int ret = 0;int j = 0;if(p->sz==0){printf("通讯录为空,无法删除!\n");return;}//查找 ret = find(p); if(ret==-1) { printf("通讯录无此联系人!\n"); return; }//删除for(j=ret;j<(p->sz-1);j++)//这里注意是(p->sz-1),{p->data[j]=p->data[j+1];}p->sz--;//对sz减1printf("删除成功!\n");return;}//添加联系人void AddContact(pcon p){if(p->sz==MAX){printf("通讯录已满,无法添加!\n");} printf("请输入姓名:"); scanf("%s",p->data[p->sz].name); printf("请输入性别:"); scanf("%s",p->data[p->sz].sex); printf("请输入年龄:"); scanf("%d",&(p->data[p->sz].age)); printf("请输入电话:"); scanf("%s",p->data[p->sz].tel); printf("请输入住址:"); scanf("%s",p->data[p->sz].addr); p->sz++;//一定要对sz加一 printf("添加成功!\n"); return;}//打印通讯录void ShowContact(pcon p){int i = 0;if(p->sz==0){printf("通讯录中无数据,无法打印!\n");return;}printf("------------------------------------------------\n");printf("| 姓名 | 性别 | 年龄 | 电话 | 住址 |\n");for(i=0; i<(p->sz);i++){printf("%10s%4s%4d%12s%20s\n",p->data[i].name,p->data[i].sex,p->data[i].age,p->data[i].tel,p->data[i].addr);}printf("------------------------------------------------\n"); return;}test.c
#include "contact.h"#include <stdio.h>#define _CRT_SECURE_NO_WARNINGS //枚举功能enum OP{Exit,Add,Delete,Search,Update,Show,Empty,Sort};//菜单void menu(){printf("**************************\n");printf("*****1.Add 2.Delete****\n");printf("*****3.Search 4.Update****\n");printf("*****5.Show 6.Empty*****\n");printf("*****7.Sort 0.Exit******\n");}int main(){int input = 0; struct Contact s;InitContact(&s);do {menu();printf("请选择>:");scanf("%d",&input);switch(input){case Exit:break;case Add:AddContact(&s);break;case Delete:DeleteContact(&s);break;case Search:SearchContact(&s);break;case Update:UpdateContact(&s);break;case Show:ShowContact(&s);break;case Empty:EmptyContact(&s);break;case Sort:SortContact(&s);break;default:printf("输入错误,请重新输入!\n");break;}} while (input);return 0;}
测试图列:
添加功能
删除功能
查找功能
更新功能
打印功能
清空功能
排序功能
退出功能
阅读全文
0 0
- 【C语言】 简易通讯录
- C语言简易通讯录
- c语言-简易通讯录
- C语言实现简易通讯录
- C语言的简易通讯录
- 【简易通讯录】-----C语言实现
- C语言实现简易通讯录
- C语言编写简易通讯录
- c语言模拟实现简易通讯录
- 简易通讯录——C语言的一个小成果
- C语言——简易的静态通讯录实现
- 【C语言疯狂讲义】(十六)C语言简易通讯录(未优化版)
- 通讯录源码--C语言
- C语言通讯录编写
- 通讯录C语言代码
- 通讯录 C语言
- c语言实现----通讯录
- C语言课程设计---通讯录
- 深度学习AlexNet模型详细分析
- python 中TAB空格补全
- android java.lang.IllegalArgumentException: column 'id' does not exist 错误
- Java类加载过程
- 迭代回溯 ---8皇后
- C语言简易通讯录
- SwipeRefreshLayout(下拉刷新控件)的使用
- Linux基础学习笔记之硬盘空间计量单位换算与计算机数据计量单位换算区别
- 【剑指offer】连续子数组的最大和
- 扩展欧几里得
- 数据库 RBAC权限管理
- 安卓 简单的handle
- POJ 1195 Mobile phones 笔记
- reimage repair-打开网页总是自动跳转要你下reimage repair