通讯录小项目(C语言静态版)

来源:互联网 发布:阿里云域名主机记录 编辑:程序博客网 时间:2024/05/22 12:00

项目要求:

1、通讯录可以用来存储1000个人的信息,每个人的信息包括:`姓名、性别、年龄、电话、住址`。2、通讯录基本要求如下:a、添加联系人信息b、删除指定联系人信息c、查找指定联系人信息d、修改指定联系人信息e、显示所有联系人信息f、清空所有联系人g、以名字排序所有联系人

思路框图:

通讯录


test.c:

#include"address_list.h"void address_list()//通讯录主函数{    ADDRESS con;    int input = 0;    init(&con);    do    {        menu2();        printf("请选择:>");        scanf("%d", &input);        switch (input)        {        case EXIT:            break;        case ADD:            system("CLS");            add(&con);            break;        case DELETE:            system("CLS");            dele(&con);            break;        case SEARCH:            system("CLS");            search(&con);            break;        case MODIFY:            system("CLS");            modify(&con);            break;        case SHOW:            system("CLS");            show(&con);            break;        case CLEAR:            system("CLS");            clear(&con);            break;        case SORT:            system("CLS");            sort(&con);            break;        default:            printf("输入有误,请重新选择!\n");            break;        }    } while (input);}void menu1(){    printf("*************************\n");    printf("**** 1、open 0、exit ****\n");    printf("*************************\n");}void test()//测试函数{    int input = 0;    do    {        menu1();        printf("请选择:>");        scanf("%d", &input);        switch (input)        {        case 0:            break;        case 1:            system("CLS");            address_list();//通讯录主函数            break;        default:            printf("输入有误,请重新输入!\n");            break;        }    } while (input);}int main(){    test();//测试函数    return 0;}

address_list.h:

#ifndef __ADDRESS_LIST_H_#define __ADDRESS_LIST_H_#define _CRT_SECURE_NO_WARNINGS 1//此标识符为了防止微软VS2008及以上版本对scanf()函数报错处理。#include<stdio.h>#include<string.h>#include<stdlib.h>#define NAME_MAX 20//姓名最大长度#define SEX_MAX 6//性别最大长度#define PHONE_MAX 12//电话最大长度#define ADD_MAX 20//地址最大长度#define MAX 1000//通讯录最大容量struct list//单个联系人数据结构{    char name[20];    char sex[6];//男人man,女人woman    int age;    char phone[12];    char add[20];};typedef struct//通讯录整体结构{    struct list arr[MAX];    int count;//用于记录通讯录中实际存储人数} ADDRESS,*PADDRESS;enum//枚举结构为 case 后面标签使用{    EXIT,    ADD,    DELETE,    SEARCH,    MODIFY,    SHOW,    CLEAR,    SORT};void menu2();//通讯录功能菜单函数void init(PADDRESS pcon);//初始化函数void add(PADDRESS pcon);//添加函数void dele(PADDRESS pcon);//删除函数void search(PADDRESS pcon);//查找函数void modify(PADDRESS pcon);//修改函数void show(PADDRESS pcon);//显示函数void clear(PADDRESS pcon);//清空函数void sort(PADDRESS pcon);//排序函数#endif //__ADDRESS_LIST_H_

address_list.c:

#include"address_list.h"void menu2()//通讯录功能菜单函数实现{    printf("********************************\n");    printf("****  0.EXIT       1.ADD    ****\n");    printf("****  2.DELETE     3.SEARCH ****\n");    printf("****  4.MODIFY     5.SHOW   ****\n");    printf("****  6.CLEAR      7.SORT   ****\n");    printf("********************************\n");}void init(PADDRESS pcon)//初始化函数实现{    pcon->count = 0;}static int hunt(PADDRESS pcon,const char *pname)//各功能函数公共模块——搜索函数实现{    int i = 0;    for (i = 0; i < pcon->count; i++)    {        if (strcmp(pcon->arr[i].name, pname) == 0)        {            return i;        }    }    return -1;}void add(PADDRESS pcon)//添加函数实现{    if (pcon->count >= MAX)//判断通讯录是否存满    {        printf("Contact overflow!\n");    }    else    {        printf("请输入姓名:>");        scanf("%s", pcon->arr[pcon->count].name);        printf("请输入性别:>");        scanf("%s", pcon->arr[pcon->count].sex);        printf("请输入年龄:>");        scanf("%d", &(pcon->arr[pcon->count].age));        printf("请输入电话:>");        scanf("%s", pcon->arr[pcon->count].phone);        printf("请输入地址:>");        scanf("%s", pcon->arr[pcon->count].add);        pcon->count++;        printf("Add success!\n");    }}void dele(PADDRESS pcon)//删除函数实现{    char tmp[NAME_MAX] = { 0 };    int ret = 0;    printf("请输入要删除联系人姓名:>");    scanf("%s", tmp);    ret = hunt(pcon, tmp);    if (ret < 0)    {        printf("Not find contact!\n");    }    else    {        for (; ret < pcon->count - 1; ret++)        {            pcon->arr[ret] = pcon->arr[ret + 1];        }        pcon->count--;        printf("Delete success!\n");    }}void search(PADDRESS pcon)//查找函数实现{    int ret = 0;    char tmp[NAME_MAX] = { 0 };    printf("请输入要查找联系人姓名:>");    scanf("%s", tmp);    ret = hunt(pcon, tmp);    if (ret < 0)    {        printf("Not find contact!\n");    }    else    {        printf("Search contact subscript is :%d\n", ret+1);    }}void modify(PADDRESS pcon)//修改函数实现{    char tmp[NAME_MAX] = { 0 };    int ret = 0;    printf("请输入要修改联系人的姓名:>");    scanf("%s", tmp);    ret = hunt(pcon, tmp);    if (ret < 0)    {        printf("输入联系人姓名有误!\n");    }    else    {        printf("请输入姓名:>");        scanf("%s", pcon->arr[ret].name);        printf("请输入性别:>");        scanf("%s", pcon->arr[ret].sex);        printf("请输入年龄:>");        scanf("%d", &(pcon->arr[ret].age));        printf("请输入电话:>");        scanf("%s", pcon->arr[ret].phone);        printf("请输入地址:>");        scanf("%s", pcon->arr[ret].add);        printf("Modify success!\n");    }}void show(PADDRESS pcon)//显示函数实现{    int i = 0;    printf("%-10s %-6s %-3s %-12s %-15s\n", "NAME", "SEX", "AGE", "PHONE", "ADD");    for (i = 0; i < pcon->count; i++)    {        printf("%-10s %-6s %-3d %-12s %-15s\n", pcon->arr[i].name, pcon->arr[i].sex, pcon->arr[i].age, pcon->arr[i].phone, pcon->arr[i].add);    }}void clear(PADDRESS pcon)//清空函数实现{    pcon->count = 0;}void sort(PADDRESS pcon)//排序函数实现{    struct list tmp = {0};    int i = 0;    for (i = 0; i < pcon->count - 1; i++)    {        int j = 0;        for (j = 0; j < pcon->count - 1 - i; j++)        {            if (strcmp(pcon->arr[j].name,pcon->arr[j+1].name) > 0)            {                tmp = pcon->arr[j];                pcon->arr[j] = pcon->arr[j + 1];                pcon->arr[j + 1] = tmp;            }        }    }}

原创粉丝点击