实现一个简单的通讯录
来源:互联网 发布:航天飞机知乎 编辑:程序博客网 时间:2024/05/29 21:35
实现一个通讯录:
通讯录可以用来存储1000个人的信息,每个人的信息包括:
姓名、性别、年龄、电话、住址
提供方法:
1. 添加联系人信息
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息
5. 显示所有联系人信息
6. 清空所有联系人
7. 以名字排序所有联系人
未使用开辟动态内存的方法:
头文件部分(test.h)
#define _CRT_SECURE_NO_WARNINGS 1#ifndef __CONTACTS_H__#define __CONTACTS_H__#include<stdio.h>#include<string.h>#include<stdlib.h>#include<assert.h>#define N 1000typedef struct contact{ char name[20]; char sex[4]; int age; int telephone; char address[20];}*c;void show(struct contact *c, int len); //struct contact *c:结构体指针指向这个结构体//int len:结构体数组的长度void add(struct contact *c, int len, int flag);int Delete(struct contact *c, int d_number, int len);void find(struct contact *c, int d_number, int len);void empty(struct contact *c);//清空联系人void modify(struct contact *c, int m_member, int len);//修改联系人int cmp(const void*a, const void*b);void sort(struct contact *c, int len);//根据联系人的名字进行排序 #endif
contact.c文件
#define _CRT_SECURE_NO_WARNINGS 1#include"test.h"void show(struct contact *c, int len){ assert(c); int i = 0; for (i = 0; i < len; i++) { printf("name:%s sex:%s age:%d telephone:%d address:%s", \ c[i].name, c[i].sex, c[i].age, c[i].telephone, c[i].address); printf("\n"); }}void add(struct contact *c, int len, int flag){ int i = 0; for (i = flag; i < len; i++) { printf("输入姓名:"); scanf("%s",&c[i].name); printf("输入性别:"); scanf("%s", &c[i].sex); printf("输入年龄:"); scanf("%d", &c[i].age); printf("输入电话号码:"); scanf("%d", &c[i].telephone); printf("输入地址:"); scanf("%s", &c[i].address); }}int Delete(struct contact *c, int d_number, int len) //删除联系人 { int i = 0; for (i = d_number - 1; i < len - 1; i++) { c[i] = c[i + 1]; }}void find(struct contact *c, int d_number, int len){ if (d_number - 1 >= 0 || d_number - 1 < len) { printf("name:%s sex:%s age:%d telephone:%d address:%s", \ c[d_number].name, c[d_number].sex, c[d_number].age, c[d_number].telephone, c[d_number].address); printf("\n"); } else { printf("不存在"); return; }}void empty(struct contact *c)//清空联系人{ int i = 0; for (i = 0; i < 1000; i++) { memset(c + i, 0, sizeof(struct contact)); }}void modify(struct contact *c,int m_member,int len)//修改联系人{ char name[20]; printf("输入要修改联系人姓名:"); scanf("%s", name); for(m_member = 0; m_member < len; m_member++) { if (strcmp(c[m_member].name, name) == 0) { printf("修改的姓名为:"); scanf("%s", &c[m_member].name); printf("修改的性别为:"); scanf("%s", &c[m_member].sex); printf("修改的年龄为:"); scanf("%d", &c[m_member].age); printf("修改的电话为:"); scanf("%d", &c[m_member].telephone); printf("修改的地址为:"); scanf("%s", &c[m_member].address); break; } } if (m_member == len) { printf("没有此人\n"); return; }}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 *c, int len){ assert(c); qsort(c, len, sizeof(struct contact), cmp);}
test.c文件
#define _CRT_SECURE_NO_WARNINGS 1#include"test.h"void menu(){ printf("*************************\n"); printf("******* 通讯录 ******\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");}int main(){ struct contact people[N]; int len = 0; int delete_number = 0; int flag = 0;//定义一个标志位来表示结构体数组中每个结构体的位置 int input; menu(); while (1) { printf("请选择"); scanf("%d", &input); switch (input) { case 1: { printf("请添加len个联系人的信息:"); scanf("%d", &len); add(people,len+flag,flag); flag = flag + len; }break; case 2: { printf("请输入要删除第i个联系人的信息:"); scanf("%d", &delete_number); Delete(people,delete_number,len+flag); flag = flag - 1; }break; case 3: { int find_number =0; printf("请输入要查找的第i个联系人的信息:"); scanf("%d", &find_number); find(people,delete_number,len+flag); }break; case 4: { printf("清空所有联系人"); empty(people); }break; case 5: { int m_member = 0; modify(people,m_member,len+flag); }break; case 6: { printf("根据名字排序所有人:"); sort(people,len+flag); }break; case 7: { printf("打印所有人的信息:"); show(people,flag); }break; case 0: { exit(1); } default:printf("输入有误!"); } } system("pause"); return 0;}
阅读全文
0 0
- 实现一个简单的通讯录
- 【C语言】实现一个简单的通讯录
- 用C++实现一个简单的通讯录
- 一个简单的通讯录
- 一个简单的通讯录。。。
- 通讯录的简单实现
- 通讯录的简单实现
- 通讯录的简单实现
- 简单通讯录的实现
- 简单通讯录的实现
- 这次我实现了一个简单的通讯录
- 一个简单的通讯录程序
- 用类写一个简单的通讯录
- 手机通讯录的简单实现
- Python 实现简单的通讯录
- 实现简单功能的通讯录
- Android简单通讯录的实现
- 二叉排序树实现简单的通讯录
- Java中对象的序列化和反序列化
- Ali Java 开发手册摘录
- 二叉树的递归建立
- [笔记]:归并排序
- 三种近距离技术ZigBee、蓝牙(Bluetooth)和WiFi介绍
- 实现一个简单的通讯录
- CSS Modules
- JavaScript之函数绑定与函数柯里化(高级函数)
- C++ 类的继承与派生
- 【mysql】mycat实现mysql读写分离
- POJ 1199 Left labyrinths 笔记
- Angular传多个值到controller
- perl 学习 0515
- mark一下,其实并不难,只要静下心去找