首页 > 技术文章 > 通讯录管理系统(大一上)

zjwoo 2020-04-17 11:00 原文

//清屏 屏幕居中 功能板块 姓氏 
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
#define N 10
int T=0,a=0,q=1,m;//t为删除的人数 ,a为序号 
int flag=0;
struct Person{
char number[20];//学号 
char name[20];//姓名 
char mail[20];//电子邮件 
char address[20];//地址 
char tel[15];//联系电话 
}student[N];
int main()
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
void first(void);
void input(int );
void show(int );
void del(int );
void search(int );
void update(int );
void add(int );
void screen(int );
int i;
if(q==1)
{
q=q-1;
first();
}
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY |COMMON_LVB_GRID_HORIZONTAL| FOREGROUND_RED|FOREGROUND_BLUE);
printf("\t\t\t******************************************************************\n");
printf("\t\t\t*********************欢迎使用通讯录管理系统***********************\n");
printf("\t\t\t*******Welcome to use the student status management system********\n");
printf("\t\t\t******************************************************************\n");
do
{
SetConsoleTextAttribute(handle, COMMON_LVB_GRID_HORIZONTAL|FOREGROUND_BLUE);
printf("\t\t\t\t*******************主菜单*********************\t\t\t\t\t\t\t\n");
printf("\t\t\t\t**********************************************\t\t\t\t\t\t\t\n");
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf("\t\t\t\t******\t\t");
SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
printf("0. 输入通信录: ");
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf("\t\t******\t\t\t\t\t\t\t\n");
printf("\t\t\t\t******\t\t");
SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
printf("1. 显示通信录: ");
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf("\t\t******\t\t\t\t\t\t\t\n");
printf("\t\t\t\t******\t\t");
SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
printf("2. 删除通信录: ");
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf("\t\t******\t\t\t\t\t\t\t\n");
printf("\t\t\t\t******\t\t");
SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
printf("3. 查找通信录: ");
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf("\t\t******\t\t\t\t\t\t\t\n");
printf("\t\t\t\t******\t\t"); 
SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
printf("4. 修改通信录: ");
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf("\t\t******\t\t\t\t\t\t\t\n");
printf("\t\t\t\t******\t\t");
SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
printf("5. 添加通信录:"); 
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf("\t\t******\t\t\t\t\t\t\t\n");
printf("\t\t\t\t******\t\t");
SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
printf("6. 筛选通信录: ");
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf("\t\t******\t\t\t\t\t\t\t\n");
printf("\t\t\t\t******\t\t");
SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
printf("7. 退出通信录: ");
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf("\t\t******\t\t\t\t\t\t\t\n");
SetConsoleTextAttribute(handle,COMMON_LVB_UNDERSCORE| FOREGROUND_INTENSITY | FOREGROUND_RED);
printf("\t\t\t\t******\t\t");
SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
printf("请输入选项0-7 ");
SetConsoleTextAttribute(handle, COMMON_LVB_UNDERSCORE|FOREGROUND_INTENSITY | FOREGROUND_RED);
printf("\t\t******\t\t\t\t\t\t\t\n");
SetConsoleTextAttribute(handle, COMMON_LVB_UNDERSCORE|FOREGROUND_INTENSITY | FOREGROUND_BLUE);
printf("\t\t\t\t***********************************************\n");
SetConsoleTextAttribute(handle,FOREGROUND_GREEN| FOREGROUND_RED );
scanf("%d",&i);//接受用户选择
switch(i)
{
case 0: input(a);a++;
break;
case 1: show(a);
break;
case 2: del(a);
break;
case 3: search(a);
break;
case 4: update(a);
break;
case 5: add(a);a++;
break;
case 6: screen(a);
break; 
case 7: {
printf("感谢使用!!!");exit (0);}

default :printf("错误选择!请重选\n");break;
}
}
while(i!=7);
return 0;
}

//0.编写一个函数录入学生学号、姓名、个人邮箱、地址、联系电话。
void input(int a)
{
int i;
printf("输入学号:\n");
scanf("%s",student[a].number);//录入学号查询 
for(i=0;i<a-T;i++)
{
if(strcmp(student[i].number,student[a].number)==0)
{
printf("此学号以存在通信录中,请勿重复输入!\n");
main();
}
}
printf("输入姓名:\n");
scanf("%s",student[a].name);
printf("输入个人邮箱:\n");
scanf("%s",student[a].mail);
printf("输入地址:\n");
scanf("%s",student[a].address);
printf("输入联系电话:\n");
scanf("%s",student[a].tel);
printf("录入成功!!!\n");
printf("系统3秒后返回主菜单......\n");
sleep(3);
system("cls");
}

//1.编写一个函数显示所有人员的信息。
void show(int a)
{
system("cls");
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
int i;
if(a-T == 0)
{SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
printf("\t\t\t\t通信录中无显示对象\n");
printf("10秒后将自动跳转回主菜单......\n");
sleep(5);
system("cls");
main();
}
else
{
SetConsoleTextAttribute(handle, FOREGROUND_RED| FOREGROUND_GREEN);
printf("\t学号\t\t姓名\t\t个人邮箱\t\t地址\t\t联系电话\t\n");
SetConsoleTextAttribute(handle,FOREGROUND_GREEN);
for(i=0;i<a-T;i++)
printf("%13s %13s %13s %26s %13s\n",student[i].number,student[i].name,student[i].mail,student[i].address,student[i].tel);
}
}

//2. 编写一个函数通过输入姓名或学号查找到要删除的人员信息,然后可以进行删除,
//回显当前通讯录信息。
void del(int a)
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
int i,j,o,u;
char s[20],x[20],c[20];
if(a-T==0)
{
printf("通信录无人,无法操作!\n");
printf("系统10秒后默认返回主菜单......\n");
sleep(5);
system("cls");
main();
}
else
{
printf("按*选择一键删除全部,按任意键删除选定学生:\n");
scanf("%s",s);
if(strcmp(s,"*") == 0 )
{
printf("按*继续一键删除全部,按任意键返回主菜单:\a\n");
scanf("%s",c);
if(strcmp(c,"*") == 0 )
{
for(u=0,o=a;u<a-T,o<2*(a-T);u++,o++)
{
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
strcpy(student[u].name,student[o].name);
strcpy(student[u].number,student[o].number);
strcpy(student[u].mail,student[o].mail);
strcpy(student[u].address,student[o].address);
strcpy(student[u].tel,student[o].tel);
}
T=a;
SetConsoleTextAttribute(handle,FOREGROUND_GREEN);
printf("操作成功!!!\n");
sleep(2);
}
else
main(); 
}
else
{
char x[20];
printf("请输入要删除学生的姓名或学号:\n");
scanf("%s",x);
for(i=0;i<a;i++)
{
if((strcmp(x,student[i].name)==0)||(strcmp(x,student[i].number)==0))
{
for(j=i;j<a-T;j++)
{
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
strcpy(student[j].name,student[j+1].name);
strcpy(student[j].number,student[j+1].number);
strcpy(student[j].mail,student[j+1].mail);
strcpy(student[j].address,student[j+1].address);
strcpy(student[j].tel,student[j+1].tel);
}
T++;
break;
}
}
system("cls");
printf("操作成功!!!\n");
}
}
}

//3. 编写一个函数通过输入姓名或学号查找学生信息。
void search(int a)
{
int i;
char x[20],s[20],b[20];
if(a-T== 0 )
{
printf("通讯录无人,无法查询\n");
printf("10秒后系统默认返回主菜单\n");
sleep(3);
system("cls");
main();

else
{
printf("请输入要查询的姓名或学号:\n");
scanf("%s",x);
for(i=0;i<a-T;i++)
{
if((strcmp(x,student[i].name)==0)||(strcmp(x,student[i].number)==0))
{
printf("学号:%s\n",student[i].number);
printf("姓名:%s\n",student[i].name);
printf("个人邮箱:%s\n",student[i].mail);
printf("地址:%s\n",student[i].address);
printf("联系电话:%s\n",student[i].tel);
printf("按*键返回主菜单,按任意键继续进行查询:\n");
scanf("%s",s);
if((strcmp(s,"*")==0))
{system("cls");break;}
else
search(a);
}
else if(i == a-T-i)
{
printf("没有查询到此联系人!!\n");
printf("按任意键重新查询输入,输入*返回主菜单:\n");
scanf("%s",b);
if(strcmp(b,"*") == 0)
{
system("cls");
main();
}
else 
search (a);
}
}
}
}
//4. 编写一个函数通过输入姓名或学号查找到要修改的人员信息,然后依次进行信息
//修改。
void update(int a)
{
int i,j;
char x[20],s[20];
printf("请输入要修改学生的姓名或学号:\n");
if(a== 0 )
{
printf("通信录无人,无法操作!!!\n");
printf("系统将在1秒后自动返回主菜单......\n");
sleep(5);
system("cls");
main();
}
else
{
scanf("%s",x);
for(i=0;i<a-T;i++)
{
if((strcmp(x,student[i].name)==0)||(strcmp(x,student[i].number)==0))
{
for(j=i;j<a-T;j++)
{
printf("请输入要修改人员的信息:\n");
printf("请输入名字:\n");
scanf("%s",student[j].name);
printf("请输入邮箱:\n");
scanf("%s",student[j].mail);
printf("请输入地址:\n");
scanf("%s",student[j].address);
printf("请输入电话:\n"); 
scanf("%s",student[j].tel);
break;
}
printf("修改成功!\n");
printf("继续修改按任意键,返回主菜单输入*:\n");
scanf("%s",s);
if(strcmp(s,"*") == 0)
{
system("cls");
main();
}
else
{
system("cls");
update(a);
}
}
else
{
printf("该列表无此人\n");
printf("请重新输入:\n");
update (a);
}
main();
}
}
}

//5. 编写一个函数添加人员信息。
void add(int a) 
{
int z,i;
char s[20];
printf("请输入要添加的人员信息:\n"); 
if(a-T==0)
{
printf("现无联系人,请添加首位人员信息\n");
printf("添加的学号为:\n");
scanf("%s",student[0].number);
printf("添加的姓名为:\n");
scanf("%s",student[0].name);
printf("添加的地址为:\n");
scanf("%s",student[0].address);
printf("添加的邮箱为:\n");
scanf("%s",student[0].mail);
printf("添加的电话为:\n");
scanf("%s",student[0].tel);
printf("按任意键继续输入,输入*返回主菜单\n");
scanf("%s",s);
if(strcmp(s,"*") == 0)
{
printf("10秒后将返回主菜单......\n");
sleep(3);
system("cls");
}
else//
add(a);
}
else 
{
printf("序数为0到%d,将该人员序数插至:\n",a);
scanf("%d",&z);
for(i=a-1;i>=z;i--)
{
strcpy(student[i+1].address,student[i].address);
strcpy(student[i+1].mail,student[i].mail);
strcpy(student[i+1].name,student[i].name);
strcpy(student[i+1].number,student[i].number);
strcpy(student[i+1].tel,student[i].tel);
}
printf("添加的学号为:\n");
scanf("%s",student[z].number);
printf("添加的姓名为:\n");
scanf("%s",student[z].name);
printf("添加的地址为:\n");
scanf("%s",student[z].address);
printf("添加的邮箱为:\n");
scanf("%s",student[z].mail);
printf("添加的电话为:\n");
scanf("%s",student[z].tel);
}
system("cls");
}

//筛选来自同一个地方或姓名的人
void screen(int a)
{
void screena(int a);
void screenb(int a);
int n,i;
char s[20];
if(a==0)
{
printf("通信录中无信息,无法筛选!\n");
printf("系统3秒后将自动返回主菜单......\n");
sleep(3);
system("cls");
main();
}
else
{
printf("请选择根据地区还是姓名筛查\n");
printf("地区筛查为0,姓名筛查1\n");
scanf("%d",&n);
if(n==0)
screena (a);
else
screenb (a);
}
}
void screena(int a)//地区筛选 
{
int n=0,i,flag=0;
char s[20],x[20];
printf("请输入查询的地址:\n");
scanf("%s",s);
for(i=0;i<a-T;i++)
{
if(strcmp(s,student[i].address) == 0)
{
printf("学号:%s\n",student[i].number);
printf("姓名:%s\n",student[i].name);
printf("个人邮箱:%s\n",student[i].mail);
printf("地址:%s\n",student[i].address);
printf("联系电话:%s\n",student[i].tel);
printf("\n");
flag=1;n++;continue;
}
}
if(flag==1)
{
printf("在此地址下一共有%d人\n",n);
main();
}
else
{
printf("此地址无人\n");
printf("请按任意键重新输入地址或按*键返回回主菜单:\n");
scanf("%s",x);
if(strcmp(x,"*") == 0)
{
sleep(1);system("cls");
main();
}
else
screena (a);
}
}

void screenb(int a)//姓名筛选 
{
char s[20];
printf("您无此操作权限,请联系管理员......\n");
printf("请选择操作:任意键返回上一步操作,输入*键返回主菜单\n");
scanf("%s",s);
if(strcmp(s,"*")==0)
{
printf("3秒后返回主菜单......\n");
sleep(3);
system("cls");
main();
}
else
{
printf("\n");
screen (a);
}
}

void first(void)
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
int n=0;
printf("\n\n\n\n");
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf("\t\t**********************************************************************************\n");
printf("\t\t**********************************************************************************\n");
printf("\t\t** **\n");
printf("\t\t** **\n");
printf("\t\t**");
SetConsoleTextAttribute(handle,FOREGROUND_RED|FOREGROUND_GREEN);
printf(" 欢迎使用通信录管理系统 ");
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf("**\n");
printf("\t\t** ");
SetConsoleTextAttribute(handle,FOREGROUND_RED|FOREGROUND_GREEN);
printf("\tWelcome to use the student status management system");
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf(" **\n");
printf("\t\t** **\n");
printf("\t\t** ");
SetConsoleTextAttribute(handle,FOREGROUND_RED|FOREGROUND_GREEN);
printf("制作者:XXX XXX XX XXX XXX XXX XXX XXX");
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf(" **\n");
printf("\t\t** **\n");
printf("\t\t** **\n");
printf("\t\t**********************************************************************************\n");
printf("\t\t**********************************************************************************\n");
sleep(5);
system("cls");
}

推荐阅读