通讯录(动态与静态,文件操作版)实现 w字 C语言进阶

简介: 通讯录(动态与静态,文件操作版)实现 w字 C语言进阶

1. 序言

对于通讯录的动静态差别还是很小的,所以本文章先实现静态的,动态的就把要改的拎出来就可以了,避免文章冗余哈。这里注意我们使用了枚举常量去替换了原来的switch,case语句中的数字,这是对于枚举常量的使用。


2. 静态实现

首先我们要知道我们要实现的功能,首先还是增删查改,然后是显示成员,排序,最后是退出。


2.1. 效果展示图


image.png


2.2. 接口实现


2.2.01. 首先是我们的框架

int main()
{
  do
  {
    menu();
    switch ()
    {
    case:
    default:
    }
  } while ();
  return 0;
}


2.2.02. 要实现的接口


image.png


image.png


2.2.03. 初始化


image.png


2.2.04. 增加联系人


image.png


2.2.05. 删除


image.png


2.2.06. 查找


image.png


找到了返回地址,找不到返回-1。


2.2.07. 改成员数据


image.png


这里显示了各数据对应的名称,注意%s长度一样‘-’是左对齐,/t是相当于4个空格。


2.02.09.  排序


image.png


这里我们是用了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[]);
相关文章
|
15天前
|
存储 C语言
C语言文件操作(2)
【10月更文挑战第2天】
|
13天前
|
存储 C语言
探索C语言数据结构:利用顺序表完成通讯录的实现
本文介绍了如何使用C语言中的顺序表数据结构实现一个简单的通讯录,包括初始化、添加、删除、查找和保存联系人信息的操作,以及自定义结构体用于存储联系人详细信息。
17 2
|
13天前
|
程序员 编译器 C语言
C语言底层知识------文件操作
本文详细介绍了文件操作的基本概念,包括文件的分类(程序文件和数据文件,其中着重于数据文件的文本文件和二进制文件),流的概念及其在C程序中的应用,以及标准输入输出流stdin、stdout和stderr的作用。作者通过示例展示了如何使用fopen、fclose和常见的读写函数如fgetc、fputc和fgets进行文件操作。
14 2
|
16天前
|
存储 缓存 编译器
文件操作——C语言
文件操作——C语言
|
6天前
|
存储 C语言
简述C语言文件操作
简述C语言文件操作
6 0
|
11天前
|
存储 文件存储 C语言
深入C语言:文件操作实现局外影响程序
深入C语言:文件操作实现局外影响程序
|
16天前
|
存储 程序员 编译器
C语言文件操作(1)
【10月更文挑战第1天】
|
16天前
|
存储 C语言
C语言的文件操作
C语言的文件操作
13 0
|
18天前
|
存储 C语言
手把手教你用C语言实现通讯录管理系统
手把手教你用C语言实现通讯录管理系统
|
18天前
|
存储 移动开发 Unix
C 语言文件操作详解
C 语言文件操作详解