通讯录管理系统
【问题描述】
设计一个通讯录管理系统,实现对联系人信息的添加、查询、浏览、删除、修改等功能,联系人系统要保存在数据文件中。
【基本要求】
(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