设为首页 加入收藏

TOP

C 语言实现一个简单通讯录(一)
2023-07-23 13:30:37 】 浏览:147
Tags:简单通

前言

回顾下C语言基础知识,通过实现一个简单小项目达到复习指针、动态内存、文件操作
等基本知识

内容

文件结构

main.c
concat.h
concat.c

入口文件main.c

#include "concat.c"



void initMemu()
{

	printf("*****************************************\n\n");
	printf("\t0 : exit \n");
	printf("\t1 : add \n");
	printf("\t2 : delete \n");
	printf("\t3 : update \n");
	printf("\t4 : search \n");
	printf("\t5 : show \n");
	printf("\t6 : sort \n");
	printf("\t7 : save \n");
	printf("\n*****************************************\n");
	printf("input a number for select your operation: ");
    

}

int main()
{

	Data data;

    // 初始化菜单
	init(&data);
    
    int num;
   
	do{  
        initMemu();
    	scanf("%d",&num);
		switch(num){
			case EXIT:
				saveConcat(&data);
			    destory(&data);
				break;
			case ADD:
			    addConcat(&data);
			    break;
			case DELETE:
			    deleteConcat(&data);
				break;
			case UPDATE:
			    updateConcat(&data);
				break;
			case SEARCH:
			    searchConcat(&data);
				break;
			case SHOW:
				showConcat(&data);
				break;
		    case SORT:
				break;
			case SAVE:
				saveConcat(&data);
				break;
			default:
				printf("place input sure menu number !\n");
				break;
		}

		

	} while(num);

	printf("exit success! %s\n",__TIME__);

	
	return 0;
}

头文件 Concat.h

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


#define CONCAT_MAX 3
#define OPCITY 3
#define DEFAULT_OPCITY 3

#define NAME_MAX 20
#define ADDRESS_MAX 30
#define SEX_MAX 4
#define TEL_MAX 20


typedef struct Concat {
    char name[NAME_MAX];
    char sex[SEX_MAX];
    char tel[TEL_MAX];
    char address[ADDRESS_MAX];
} Concat;


typedef struct Data {
    int size;
    int opcity;
    struct Concat *con;
} Data;

enum Operation {
    EXIT = 0,
    ADD = 1,
    DELETE = 2,
    UPDATE = 3,
    SEARCH = 4,
    SHOW = 5,
    SORT = 6,
    SAVE = 7
};


主要源文件concat.c

#include "concat.h"

void init(Data* data);
// 声明函数
// 添加
void addConcat(Data *data);

// 查看
void showConcat(const Data *data);

// 删除
void deleteConcat( Data *data);

// 修改
void updateConcat( Data *data);

// 查找
void searchConcat(const Data *data);
// 排序
void sortConcat(const Data *data);
// 根据名称查找
int findConcatByName(const Data *data);
// 打印头
void printHeader();
// 打印用户
void printBody(const Data *data,int index);

// 打印结果
void printResult(const Data *data,int index);
// 动态规划
void check( Data *data);
// 内存销毁
void destory( Data *data);
// 保存文件
void saveConcat( Data *data);
// 从文件中读取内容
void readConcat( Data *data);




void init(Data* data)
{
    data->size = 0;
    data->opcity = OPCITY;
    // 开辟空间
    Concat* pt = (Concat*)malloc(sizeof(Concat)*OPCITY);

    if( pt == NULL )
    {
      return;
    }
    data->con = pt;

    // 读取文件内容
    readConcat(data);
}


void check( Data *data)
{

    // 容量是否
    if( data->size == data->opcity )
    {
        // 每次开辟3个容量空间
        data->opcity +=  DEFAULT_OPCITY;
        // 使用 realloc 在原来基础上开辟空间
        Concat *pt = realloc(data->con,data->opcity*sizeof(Concat));

        if( pt != NULL)
        {
            data->con = pt;
        }

    }


}

void readConcat( Data *data)
{
    // 读取文件
    FILE *fp  = NULL;
    fp = fopen("db.txt","rb");
    if( fp == NULL ){
        //create file
        fp = fopen("db.txt", "w");
        printf(
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇OpenGL ES 名词解释(一) 下一篇C语言之围棋(利用队列实现)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目