用c语言设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。功能要求如下: 1、查询功能:
用c语言设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。功能要求如下:1、查询功能:(l)按类查询将所有记录分为办公类(A)、个人类(B)和商务类(0.按类查...
用c语言设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。功能要求如下: 1、查询功能:
( l )按类查询
将所有记录分为办公类(A)、个人类(B)和商务类(0 .按类查询选中某类时,显示所有属于此类记录的姓名和电话号码。
(2)按姓名查询
输入奸名后,显示此人对应的相关信息•
2、添加功能:
能添加新记录(一个记录包括:姓名、电话号码、分类(可选项有:A办公类B个人类C商务类)、电了邮件)•例如:
杨洋B588888888商务类chuny@126 om
当录入了重复的姓名和电话号码时,则提示数录入重复并取消录入:当通信录中超过巧条信息时,存储空间己满.不能再录入新数据:录入的新数据能按递增的砺序自动进行条目编号•
3,修改功能:选中某个人的姓名时,可对此人的相应敌锯进行修改。
毒、除功能:选中某个人的姓名时.可对此人的相应敌掘进行删除,并自动调整后续条目的编号. 展开
( l )按类查询
将所有记录分为办公类(A)、个人类(B)和商务类(0 .按类查询选中某类时,显示所有属于此类记录的姓名和电话号码。
(2)按姓名查询
输入奸名后,显示此人对应的相关信息•
2、添加功能:
能添加新记录(一个记录包括:姓名、电话号码、分类(可选项有:A办公类B个人类C商务类)、电了邮件)•例如:
杨洋B588888888商务类chuny@126 om
当录入了重复的姓名和电话号码时,则提示数录入重复并取消录入:当通信录中超过巧条信息时,存储空间己满.不能再录入新数据:录入的新数据能按递增的砺序自动进行条目编号•
3,修改功能:选中某个人的姓名时,可对此人的相应敌锯进行修改。
毒、除功能:选中某个人的姓名时.可对此人的相应敌掘进行删除,并自动调整后续条目的编号. 展开
1个回答
展开全部
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "string.h"
#define MAXRECORD (1024)
enum RecordType{OFFICE,PERSON,BUSINESS};
const char* const TypeName[] = {"办公","个人","商务"};
typedef struct Record
{
char name[128];
char phoneNum[32];
char email[128];
RecordType type;
}Record;
int recordNum = 0;
void ClearRecord(Record* record)
{
memset((void*)record,0,sizeof(*record));
recordNum--;
}
void ShowMainMenu()
{
system("cls");
printf("1.查询\n2.添加\n3.修改\n4.删除\n5.退出\n");
}
void InputRecord(Record* record)
{
if(recordNum == MAXRECORD)
{
printf("人数已满。\n");
getch();
}
system("cls");
printf("分别录入名字、手机号、电子邮箱、类型(0|办公 1|个人 2|商务):\n");
scanf("%s%s%s%d",record->name,record->phoneNum,record->email,&(record->type));
recordNum++;
}
void SelectFromName(const Record* record)
{
system("cls");
printf("输入查询名字:\n");
char name[128]={0};
scanf("%s",name);
printf("查询结果:\n");
for(int i = 0;i<recordNum;i++)
if(!(strcmp(name,(record+i)->name)))
printf("(%d):%s\t%s\t%s\t%s\n",i+1,(record+i)->name,(record+i)->phoneNum,(record+i)->email,TypeName[(record+i)->type]);
printf("\n按任意键继续……");
getch();
}
void SelectFromType(const Record* record)
{
system("cls");
printf("输入查询类型(0|办公 1|个人 2|商务):\n");
int type = 0;
scanf("%d",&type);
printf("查询结果:\n");
for(int i = 0;i<recordNum;i++)
if(type == (record+i)->type)
printf("(%d):%s\t%s\t%s\t%s\n",i+1,(record+i)->name,(record+i)->phoneNum,(record+i)->email,TypeName[(record+i)->type]);
printf("\n按任意键继续……");
getch();
}
void SelectRecord(const Record* record)
{
while(1)
{
system("cls");
printf("选择查询方案(0|按名字 1|按类型 2|返回上级菜单):\n");
char chGet = getch();
switch(chGet)
{
case '0':
SelectFromName(record);
break;
case '1':
SelectFromType(record);
break;
case '2':
return;
default:
break;
}
}
}
void UpdateRecord(Record* record)
{
system("cls");
printf("输入修改名字:\n");
char name[128]={0};
scanf("%s",name);
for(int i = 0;i<recordNum;i++)
if(!(strcmp(name,(record+i)->name)))
{
printf("分别录入名字、手机号、电子邮箱、类型(0|办公 1|个人 2|商务):\n");
scanf("%s%s%s%d",(record+i)->name,(record+i)->phoneNum,(record+i)->email,&((record+i)->type));
printf("\n修改成功,按任意键继续……");
getch();
return;
}
printf("\n查无此人,按任意键继续……");
getch();
}
void DeleteRecord(Record* record)
{
system("cls");
printf("输入删除名字:\n");
char name[128]={0};
scanf("%s",name);
for(int i = 0;i<recordNum;i++)
if(!(strcmp(name,(record+i)->name)))
{
for(int j = i;j<recordNum - 1;j++)
*(record+j) = *(record+j+1);
ClearRecord(record+recordNum-1);
printf("\n删除成功,按任意键继续……");
getch();
return;
}
printf("\n查无此人,按任意键继续……");
getch();
}
void RunRecord(Record* record)
{
while(1)
{
ShowMainMenu();
char chGet = getch();
switch(chGet)
{
case '1':
SelectRecord(record);
break;
case '2':
InputRecord(record+recordNum);
break;
case '3':
UpdateRecord(record);
break;
case '4':
DeleteRecord(record);
break;
case '5':
return;
default:
break;
}
}
}
int main()
{
Record* allRecord = (Record*)malloc(MAXRECORD*sizeof(Record));
memset((void*)allRecord,0,MAXRECORD*sizeof(Record));
RunRecord(allRecord);
return 0;
}
更多追问追答
追问
你运行了么 不对啊
能不能给改改
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询