1. 序言
对于通讯录的动静态差别还是很小的,所以本文章先实现静态的,动态的就把要改的拎出来就可以了,避免文章冗余哈。这里注意我们使用了枚举常量去替换了原来的switch,case语句中的数字,这是对于枚举常量的使用。
2. 静态实现
首先我们要知道我们要实现的功能,首先还是增删查改,然后是显示成员,排序,最后是退出。
2.1. 效果展示图
2.2. 接口实现
2.2.01. 首先是我们的框架
int main() { do { menu(); switch () { case: default: } } while (); return 0; }
2.2.02. 要实现的接口
2.2.03. 初始化
2.2.04. 增加联系人
2.2.05. 删除
2.2.06. 查找
找到了返回地址,找不到返回-1。
、
2.2.07. 改成员数据
这里显示了各数据对应的名称,注意%s长度一样‘-’是左对齐,/t是相当于4个空格。
2.02.09. 排序
这里我们是用了qsort快速排序这个库函数,这里我们是按的名字排序,后面会把实现快速排序的文章也发出来哈。
2.3. 源代码
test.c
#define _CRT_SECURE_NO_WARNINGS 1 #include"Contact.h" void menu() { printf("**************************************************************\n"); printf("******************** 1.Add 2.Delet ***********************\n"); printf("******************** 3.Search 4.Modify ***********************\n"); printf("******************** 5.Show 6.Sort ***********************\n"); printf("******************** 0.exitcontact ***********************\n"); printf("**************************************************************\n"); } int main() { int input=0; Contact con; char name[10] = { 0 }; InitContact(&con); do { menu(); printf("请输入你要选择的选项:\n"); scanf("%d", &input); switch (input) { case Add: printf("增加通讯录成员:\n"); AddContact(&con); break; case Delet: printf("删除通讯录成员:\n"); printf("请输入要删除人员姓名:"); char name[NAME_MAX] = { 0 }; scanf("%s", name); DeletContact(&con, name); break; case Search: printf("查找通讯录成员:\n"); printf("请输入要查找人员姓名:"); scanf("%s", name); SearchContact(&con, name); break; case Modify: printf("更改通讯录成员信息:\n"); printf("请输入要查找人员姓名:"); scanf("%s", name); ModifyContact(&con, name); break; case Show: printf("显示通讯录成员:\n"); ShowContact(&con); break; case Sort: printf("排序通讯录成员:\n"); SortContact(&con); break; case exitcontact: //DestoryContact(&con); printf("退出通讯录:\n"); break; default: printf("输入错误,请重新输入:"); break; } } while (input); return 0; }
Contact.h
#pragma once #include<stdio.h> #include<assert.h> #include<string.h> #include<stdlib.h> #define CONTACT_MAX 1000 #define NAME_MAX 10 #define SEX_MAX 5 #define TELEP_MAX 13 #define ADDRESS_MAX 20 typedef struct Student { char name[NAME_MAX]; char sex[SEX_MAX]; int age; char telep[TELEP_MAX]; char address[ADDRESS_MAX]; }Student; typedef struct Contact { Student date[CONTACT_MAX]; int sz; }Contact; enum contactmenu { exitcontact, Add, Delet, Search, Modify, Show, Sort, }; //初始化 void InitContact(Contact* pc); //增加 void AddContact(Contact* pc); //删除 void DeletContact(Contact* pc, char name[]); //查找 void SearchContact(Contact* pc, char name[]); //修改 void ModifyContact(Contact* pc, char name[]); //显示 void ShowContact(Contact* pc); //排序 void SortContact(Contact* pc); //void DestoryContact(Contact* pc); int FindContact(Contact* pc, char name[]);