数据结构课程设计——通讯录管理系统

通讯录管理系统

【问题描述】
设计一个通讯录管理系统,实现对联系人信息的添加、查询、浏览、删除、修改等功能,联系人系统要保存在数据文件中。
【基本要求】
(1)添加联系人的信息到通讯簿中,包括:姓名、性别、城市、邮编、手机号、QQ号、Email;
(2)可按姓名、手机号查询联系人信息;
(3)实现现有联系人信息的浏览、修改、删除功能,结果保存到文件中。

代码

CommunicationManageSystem.cpp

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

#define MAX 30
#define MIN 15
typedef struct
{
    char Name[MIN]={'\0'};    //姓名
    char Sex[MIN]={'\0'};       //性别
    char City[MIN]={'\0'};       //城市
    char PostCode[MIN]={'\0'};      //邮编
    char PhoneNumber[MIN]={'\0'};      //手机号
    char QQ[MIN]={'\0'};          //QQ号
    char Email[MAX]={'\0'};   //邮箱
} ConType;
typedef struct node
{
    ConType data;         //存放联系人信息
    struct node *next;        //指向下一个节点的指针
} ConList;       //联系人单链表节点类型

void ModifyCon(ConList *L);
void ReadFile(ConList *&L);
void SaveFile(ConList *L);
void InputCon(ConList *&L);
void DeleteCon(ConList *&L);
void DisplayCon(ConList *&L);
void LocateCon(ConList *L);
void DestroyCon(ConList *&L);
ConList *LocateAll(ConList *L, int select, char s[MAX]);
void DispCon(ConType con);
void ItemModifyCom(ConList *L, int item);
void DeleteOne(ConList *&L);
void DeleteAll(ConList *&L);

void ModifyCon(ConList *L)     //修改联系人信息
{
    system("cls");
    ConList *p;
    ConType con;
    char s[MIN] = {'\0'};      //接收选择
    char search[MIN] = {'\0'};     //输入要查找的联系人
    int item = 9;     //选择修改联系人项目
    int select;      //接收选择
    int i = 0;
    while (i < 100)
    {
        system("cls");
        printf("\t       修改\n");
        printf("\t******************** \n");
        printf("\t☆ 按姓名查找请按1\n");
        printf("\t☆ 按手机号查找请按2\n");
        printf("\t☆ 按QQ号查找请按3\n");
        printf("\t☆ 按Email查找请按4\n");
        printf("\t☆ 退出请按0\n");
        printf("\t********************\n");
        printf("\n>>请输入你的选择:");
        scanf("%s", &s);         //接收选择
        select = (int)s[0] - 48;       //接收选择
        p = (ConList *)malloc(sizeof(ConList));
        switch (select)
        {
        case 1:
            //按姓名查找
            printf("\n>>请输入待修改人的姓名:");
            scanf("%s", search);
            p = LocateAll(L, 1, search);      //返回所查找的姓名所在链表指针
            if (p == NULL)
            {
                printf("\n提示:无此联系人!请重新查找\n\n");
                system("pause");
            }
            else
            {
                DispCon(p->data);
                printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
                printf("\n可供修改的条目如下:\n");
                printf("\t1. 姓名");
                printf("\t\t2. 性别\n");
                printf("\t3. 城市");
                printf("\t\t4. 邮编\n");
                printf("\t5. 手机号");
                printf("\t6. QQ号\n");
                printf("\t7. Email");
                printf("\t0. 退出\n");
                printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
                while (1)
                {
                    printf("\n\n>>请选择需要修改的内容:");
                    scanf("%d", &item);
                    if (item == 0)
                        break;
                    ItemModifyCom(p, item);
                }
            }
            break;
        case 2:
            //按手机号查找
            printf(">>请输入待修改人的手机号:");
            scanf("%s", search);
            p = LocateAll(L, 1, search);
            if (p == NULL)
            {
                printf("提示:无此联系人!请重新查找\n");
                system("pause");
            }
            else
            {
                DispCon(p->data);
                printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
                printf("\n可供修改的条目如下:\n");
                printf("\t1. 姓名");
                printf("\t\t2. 性别\n");
                printf("\t3
  • 11
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值