【项目】—— 通讯录3(C语言)
通讯录是存储和管理我们的个人信息的程序应用。这里我们实现一个文件版本的通讯录(联系人信息存储在文件内,每次运行程序都会加载联系人信息进入文件,结束程序会保存联系人信息到文件)
通讯录的功能
- 在文件里存储联系人的信息(姓名、性别、年龄、电话、地址)
- 加载文件中的联系人信息进入内存
- 添加联系人
- 删除联系人
- 修改联系人
- 根据姓名查寻联系人
- 根据姓名将联系人升序排序
- 展示所有联系人
目录
一、通讯录的结构
通讯录由C语言实现,实现环境是VS2019
编译程序,结构如下
- 头文件
contact.h
:引入头文件,并声明通讯录的数据类型和函数声明 - 源文件
contact.c
:实现通讯录各个功能的函数 - 测试文件
test.c
:写有main
函数,启动程序并实现业务逻辑 - 联系人文件
contact.txt
:存储联系人信息的文件
二、头文件
1. 头文件引用
#pragma once //防止头文件重复引用
#include <stdio.h> //标准输入输出,具体作用懂得都懂
#include <assert.h> //我们会对每个函数内部的一些变量进行断言,方便我们调试
#include <string.h> //我们会对字符串进行操作
#include <Windows.h> //我们会执行一些命令行
2. 结构体声明
//定义变量最大数量
#define MAX_NAME 20 //姓名占20字符
#define MAX_SEX 10 //性别占10字符
#define MAX_TEL 20 //电话占20字符
#define MAX_ADDR 50 //地址占50字符
//个人信息
typedef struct PeoInfo
{
char name[MAX_NAME]; //姓名
char sex[MAX_SEX]; //性别
int age; //年龄
char tel[MAX_TEL]; //电话
char addr[MAX_ADDR]; //地址
} PeoInfo;
//通讯录
typedef struct Contact
{
PeoInfo* data; //联系人
int count; //联系人数量
} Contact;
3. 函数声明
void menu(); // 菜单
void init(Contact* pc); // 初始化
void add(Contact* pc); // 添加
void del(Contact* pc); // 删除
void search(const Contact* pc); // 查寻
void alter(Contact* pc); // 修改
void sort(Contact* pc); // 排序
void show(const Contact* pc); // 展示
void saveContact(const Contact* pc); // 保存信息进入文件
void destroy(Contact* pc); // 销毁
三、测试文件
当我们声明完变量和函数时,不要着急去实现函数,而是先构思好逻辑业务,构思好后再实现函数,边实现边调试,才能将BUG
消灭到最初的时候
int main()
{
Contact con;
init(&con);
menu();
int chose = 0;
do
{
printf("请输入您要进行的操作序号>");
scanf("%d", &chose);
system("cls"); //此时有一个清屏,让黑乎乎的界面更加美观,清完之后打印菜单,方便用户操作
menu();
switch (chose)
{
case 0:
printf("欢迎下次光临!\n");
saveContact(&con);
destroy(&con);
return 0;
break;
case 1:
add(&con); //添加联系人
break;
case 2:
del(&con); //删除联系人
break;
case 3:
search(&con); //查找联系人
break;
case 4:
alter