用C语言实现一个通讯录
来源:互联网 发布:unity3d ai寻路 编辑:程序博客网 时间:2024/05/16 03:57
实现一个通讯录;
通讯录可以用来存储1000个人的信息,每个人的信息包括:
姓名、性别、年龄、电话、住址
提供方法:
1. 添加联系人信息
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息
5. 显示所有联系人信息
6. 清空所有联系人
7. 以名字排序所有联系人
没有开辟动态内存的方法:
头文件:test.h
#ifndef __CONTACT#define __CONTACT#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>#define N 1000typedef struct contact{char name[30];char gender[10];int age;int telephone;char address[100];};//结构体没有定义变量属于声明一个结构体类型void meau();void show(struct contact *p, int len);//struct contact *p:结构体指针指向这个结构体, int len:结构体数组的长度void Add_linkman(struct contact *p, int len,int flag);int Delete_linkman(struct contact *p, int d_number, int len);//int d_number选择要删除第几个结构体的内容void Find_member(struct contact *p, int d_number, int len);//int d_number表示要查找的第几个结构体的内容(即联系人的信息)void empty(struct contact *p);void Modify(struct contact *p, int M_member);//int M_member:要修改的第几个联系人int cmp(const void *a, const void *b);//qsort里面的比较函数定义任意类型void sort(struct contact *p, int len);//根据联系人的名字进行排序#endif//条件编译contact.c文件
#include"test.h"void meau(){printf(" *******************************************\n");printf(" *******************************************\n");printf(" ##############My address book##############\n");printf(" *1-Add 2-Delete 3-Find *\n");printf(" *4-Empty 5-Modify 6-Sort *\n");printf(" *0-Exit 7-Show *\n");printf(" *******************************************\n");printf(" *******************************************\n");}void show(struct contact *p, int len){assert(p);int i = 0;for (i = 0; i < len; i++){printf("name:%s gender:%s age:%d telephone:%d address:%s", \p[i].name, p[i].gender, p[i].age, p[i].telephone, p[i].address);printf("\n");}}void Add_linkman(struct contact *p, int len,int flag){assert(p);int i = 0;for (i = flag; i < len; i++){printf("请输入姓名:");scanf("%s", &p[i].name);printf("请输入姓别:");scanf("%s", &p[i].gender);printf("请输入年龄:");scanf("%d", &p[i].age);printf("请输入电话:");scanf("%d", &p[i].telephone);printf("请输入地址:");scanf("%s", &p[i].address);}}int Delete_linkman(struct contact *p, int d_number, int len){assert(p);int i = 0;for (i = d_number - 1; i < len - 1; i++){p[i] = p[i + 1];}}void Find_member(struct contact *p, int d_number, int len){assert(p);if (d_number - 1 >= 0 || d_number - 1<len){printf("name:%s gender:%s age:%d telephone:%d address:%s", \p[d_number].name, p[d_number].gender, p[d_number].age, p[d_number].telephone, p[d_number].address);printf("\n");}else{printf("不存在该联系人:");return;}}void empty(struct contact *p){assert(p);int i = 0;for (i = 0; i <1000; i++){memset(p+i, 0, sizeof(struct contact));}}void Modify(struct contact *p, int M_member){assert(p);printf("修改之前联系人的信息为:");printf("\n");printf("name:%s gender:%s age:%d telephone:%d address:%s", \p[M_member - 1].name, p[M_member - 1].gender, p[M_member - 1].age, p[M_member - 1].telephone, p[M_member - 1].address);printf("\n");printf("请输入要修改的信息:");printf("请输入姓名:");scanf("%s", &p[M_member - 1].name);printf("请输入姓别:");scanf("%s", &p[M_member - 1].gender);printf("请输入年龄:");scanf("%d", &p[M_member - 1].age);printf("请输入电话:");scanf("%d", &p[M_member - 1].telephone);printf("请输入地址:");scanf("%s", &p[M_member - 1].address);}int cmp(const void *a, const void *b){struct contact *aa = (struct contact *)a;struct contact *bb = (struct contact *)b;if (aa->name != bb->name)return(strcmp((aa->name), (bb->name)));}void sort(struct contact *p, int len){assert(p);qsort(p, len, sizeof(struct contact), cmp);}test.c文件:
#include"test.h"int main(){int num = 0;struct contact student[N];int len = 0;int flag = 0;//定义一个标志位来结构体数组中每个结构体的位置int total = N;int delete_number = 0;meau();while (1){printf("请输入数字进行选择:");scanf("%d", &num);switch (num){case 1:{ printf("请添加len个学生的信息:"); scanf("%d", &len); Add_linkman(student,len+flag,flag); flag=flag+len; }break;case 2:{ printf("请输入要删除的第i个学生的信息:"); scanf("%d", &delete_number); Delete_linkman(student, delete_number, len+flag); flag = flag - 1;}break;case 3:{ int Find_number = 0; printf("请输入要查找的第i个学生的信息:"); scanf("%d", &Find_number); Find_member(student, delete_number, len+flag);}break;case 4:{ printf("清空所有联系人:"); empty(student);}break;case 5:{ printf("请输入要修改的的第i个学生的信息:"); int M_member = 0; scanf("%d", &M_member); Modify(student, M_member);}break;case 6:{ printf("根据名字排序所有联系人:\n"); sort(student, len+flag);}break;case 7:{ printf("打印所有联系人的信息:\n"); show(student, flag);}break;case 0:{ exit(1);}default:printf("enter error data!!!");}}system("pause");return 0;}
2 0
- 用C语言实现一个通讯录
- 【c语言】实现一个通讯录
- 【C语言】实现一个简单的通讯录
- 用C语言实现通讯录
- c语言实现----通讯录
- C语言实现通讯录
- C语言实现通讯录
- c语言实现通讯录
- C语言实现通讯录
- 【C语言】实现一个通讯录(一:静态的实现)
- 【C语言】实现一个通讯录(二:动态的实现)
- 用C语言实现简单通讯录
- 用c语言链表实现通讯录
- 用c语言实现 一个通讯录(实现 增加、删除、查找、修改、显示、清空功能)
- 【C语言】通讯录代码(一个文件下实现)
- 【C语言】实现一个通讯录(三:加入文件读写)
- C语言利用结构体实现一个通讯录
- c语言实现通讯录系统
- 客户端网页编程02——CSS
- Android艺术开发探索第四章——View的工作原理(下)
- Oracle-表分析和索引分析解读
- 客户端网页编程03——CSS
- 充满良心的Python包下载网站
- 用C语言实现一个通讯录
- 晨起随笔
- 基础练习——鸡兔同笼
- ES6语法的reactjs组件babel编译
- 【Leetcode】398. Random Pick Index
- 如何将H265视频流和G711音频流存为文件呢
- 客户端网页编程04——CSS
- spring4.3.3 整合 Hibernate5.2.4 jar包冲突问题 org.jboss.logging.Logger.debugf(Ljava/lang/String;I)V
- 行业热点:微信小程序来了,这些你都应该知道下