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__H 
contact.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;}

测试图列:

添加功能


删除功能


查找功能


更新功能


打印功能


清空功能


排序功能


退出功能




原创粉丝点击