实现一个通讯录;
通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址
- 添加联系人信息
- 删除指定联系人信息
- 查找指定联系人信息
- 修改指定联系人信息
- 显示所有联系人信息
- 清空所有联系人
- 以名字排序所有联系人
一、基础框架
使用多文件编程的写法,把方法的具体实现和声明和分开编写。
1.界面设计
先设计一个界面,其他的功能先写入分支循环中
main.cpp:
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include"contact.h"
enum Option
{
EIXT,
ADD,
DEL,
SEARCH,
PRINT,
MOD,
SORT,
CLEAN
};
void menu()
{
printf("************ 1.添加联系人 ************\n");
printf("************ 2.删除联系人 ************\n");
printf("************ 3.查找指定联系人 ************\n");
printf("************ 4.显示所有联系人 ************\n");
printf("************ 5.修改联系人 ************\n");
printf("************ 6.排序联系人 ************\n");
printf("************ 7.清空联系人 ************\n");
printf("************ 0.退出 ************\n");
}
int main()
{
int input = 1;
Contact person;
InitContact(&person);
while(input) {
menu();
printf("输入你的选择:>\n");
scanf("%d", &input);
switch (input)
{
case ADD:
Add(&person);
system("pause");
system("cls");
break;
case DEL:
Del(&person);
system("pause");
system("cls");
break;
case SEARCH:
Search(&person);
system("pause");
system("cls");
break;
case PRINT:
PrintContact(&person);
system("pause");
system("cls");
break;
case MOD:
Modify(&person);
system("pause");
system("cls");
break;
case SORT:
Sort(&person);
system("pause");
system("cls");
break;
case CLEAN:
Clean(&person);
system("pause");
system("cls");
break;
case EIXT:
printf("退出\n");
break;
default:
printf("输入错误,请重新输入\n");
}
}
return 0;
}
这种写法会发现跟我以前写的三子棋和扫雷异曲同工,不过这里使用switch做分支的时候,为了更方便的观察和理解代码,这里使用了枚举enum来做分支的标识。
2.设计结构体
结构体要包含联系人的所有信息
contact.h:
#define Max 1000
#define Name_Max 20
#define Tele_Max 12
#define Address_Max 20
#define Sex_Max 5
typedef struct PerInfo
{
char name[Name_Max];
int id;
int age;
char tele[Tele_Max];
char address[Address_Max];
char sex[Sex_Max];
}Perinfo,*pPerinfo;
为了方便定义变量,这里把结构体重命名了。也同时为了修改方便,把所有数组里面的大小进行了宏定义。
因为要查找和修改联系人,这里要把联系人存起来放到一个数组里。为了方便记录已经存储了多少联系人,定义一个变量sz,来做标识。那么就可以再设计一个结构体来操作这两个数据。