通讯录管理系统(大一上)

//清屏 屏幕居中 功能板块 姓氏 
#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(" ****************************************************************** ");
printf(" *********************欢迎使用通讯录管理系统*********************** ");
printf(" *******Welcome to use the student status management system******** ");
printf(" ****************************************************************** ");
do
{
SetConsoleTextAttribute(handle, COMMON_LVB_GRID_HORIZONTAL|FOREGROUND_BLUE);
printf(" *******************主菜单********************* ");
printf(" ********************************************** ");
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf(" ****** ");
SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
printf("0. 输入通信录: ");
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf(" ****** ");
printf(" ****** ");
SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
printf("1. 显示通信录: ");
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf(" ****** ");
printf(" ****** ");
SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
printf("2. 删除通信录: ");
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf(" ****** ");
printf(" ****** ");
SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
printf("3. 查找通信录: ");
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf(" ****** ");
printf(" ****** "); 
SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
printf("4. 修改通信录: ");
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf(" ****** ");
printf(" ****** ");
SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
printf("5. 添加通信录:"); 
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf(" ****** ");
printf(" ****** ");
SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
printf("6. 筛选通信录: ");
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf(" ****** ");
printf(" ****** ");
SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
printf("7. 退出通信录: ");
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);
printf(" ****** ");
SetConsoleTextAttribute(handle,COMMON_LVB_UNDERSCORE| FOREGROUND_INTENSITY | FOREGROUND_RED);
printf(" ****** ");
SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
printf("请输入选项0-7 ");
SetConsoleTextAttribute(handle, COMMON_LVB_UNDERSCORE|FOREGROUND_INTENSITY | FOREGROUND_RED);
printf(" ****** ");
SetConsoleTextAttribute(handle, COMMON_LVB_UNDERSCORE|FOREGROUND_INTENSITY | FOREGROUND_BLUE);
printf(" *********************************************** ");
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("错误选择!请重选 ");break;
}
}
while(i!=7);
return 0;
}

//0.编写一个函数录入学生学号、姓名、个人邮箱、地址、联系电话。
void input(int a)
{
int i;
printf("输入学号: ");
scanf("%s",student[a].number);//录入学号查询 
for(i=0;i<a-T;i++)
{
if(strcmp(student[i].number,student[a].number)==0)
{
printf("此学号以存在通信录中,请勿重复输入! ");
main();
}
}
printf("输入姓名: ");
scanf("%s",student[a].name);
printf("输入个人邮箱: ");
scanf("%s",student[a].mail);
printf("输入地址: ");
scanf("%s",student[a].address);
printf("输入联系电话: ");
scanf("%s",student[a].tel);
printf("录入成功!!! ");
printf("系统3秒后返回主菜单...... ");
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(" 通信录中无显示对象 ");
printf("10秒后将自动跳转回主菜单...... ");
sleep(5);
system("cls");
main();
}
else
{
SetConsoleTextAttribute(handle, FOREGROUND_RED| FOREGROUND_GREEN);
printf(" 学号 姓名 个人邮箱 地址 联系电话 ");
SetConsoleTextAttribute(handle,FOREGROUND_GREEN);
for(i=0;i<a-T;i++)
printf("%13s %13s %13s %26s %13s ",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("通信录无人,无法操作! ");
printf("系统10秒后默认返回主菜单...... ");
sleep(5);
system("cls");
main();
}
else
{
printf("按*选择一键删除全部,按任意键删除选定学生: ");
scanf("%s",s);
if(strcmp(s,"*") == 0 )
{
printf("按*继续一键删除全部,按任意键返回主菜单:a ");
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("操作成功!!! ");
sleep(2);
}
else
main(); 
}
else
{
char x[20];
printf("请输入要删除学生的姓名或学号: ");
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("操作成功!!! ");
}
}
}

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

else
{
printf("请输入要查询的姓名或学号: ");
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 ",student[i].number);
printf("姓名:%s ",student[i].name);
printf("个人邮箱:%s ",student[i].mail);
printf("地址:%s ",student[i].address);
printf("联系电话:%s ",student[i].tel);
printf("按*键返回主菜单,按任意键继续进行查询: ");
scanf("%s",s);
if((strcmp(s,"*")==0))
{system("cls");break;}
else
search(a);
}
else if(i == a-T-i)
{
printf("没有查询到此联系人!! ");
printf("按任意键重新查询输入,输入*返回主菜单: ");
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("请输入要修改学生的姓名或学号: ");
if(a== 0 )
{
printf("通信录无人,无法操作!!! ");
printf("系统将在1秒后自动返回主菜单...... ");
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("请输入要修改人员的信息: ");
printf("请输入名字: ");
scanf("%s",student[j].name);
printf("请输入邮箱: ");
scanf("%s",student[j].mail);
printf("请输入地址: ");
scanf("%s",student[j].address);
printf("请输入电话: "); 
scanf("%s",student[j].tel);
break;
}
printf("修改成功! ");
printf("继续修改按任意键,返回主菜单输入*: ");
scanf("%s",s);
if(strcmp(s,"*") == 0)
{
system("cls");
main();
}
else
{
system("cls");
update(a);
}
}
else
{
printf("该列表无此人 ");
printf("请重新输入: ");
update (a);
}
main();
}
}
}

//5. 编写一个函数添加人员信息。
void add(int a) 
{
int z,i;
char s[20];
printf("请输入要添加的人员信息: "); 
if(a-T==0)
{
printf("现无联系人,请添加首位人员信息 ");
printf("添加的学号为: ");
scanf("%s",student[0].number);
printf("添加的姓名为: ");
scanf("%s",student[0].name);
printf("添加的地址为: ");
scanf("%s",student[0].address);
printf("添加的邮箱为: ");
scanf("%s",student[0].mail);
printf("添加的电话为: ");
scanf("%s",student[0].tel);
printf("按任意键继续输入,输入*返回主菜单 ");
scanf("%s",s);
if(strcmp(s,"*") == 0)
{
printf("10秒后将返回主菜单...... ");
sleep(3);
system("cls");
}
else//
add(a);
}
else 
{
printf("序数为0到%d,将该人员序数插至: ",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("添加的学号为: ");
scanf("%s",student[z].number);
printf("添加的姓名为: ");
scanf("%s",student[z].name);
printf("添加的地址为: ");
scanf("%s",student[z].address);
printf("添加的邮箱为: ");
scanf("%s",student[z].mail);
printf("添加的电话为: ");
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("通信录中无信息,无法筛选! ");
printf("系统3秒后将自动返回主菜单...... ");
sleep(3);
system("cls");
main();
}
else
{
printf("请选择根据地区还是姓名筛查 ");
printf("地区筛查为0,姓名筛查1 ");
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("请输入查询的地址: ");
scanf("%s",s);
for(i=0;i<a-T;i++)
{
if(strcmp(s,student[i].address) == 0)
{
printf("学号:%s ",student[i].number);
printf("姓名:%s ",student[i].name);
printf("个人邮箱:%s ",student[i].mail);
printf("地址:%s ",student[i].address);
printf("联系电话:%s ",student[i].tel);
printf(" ");
flag=1;n++;continue;
}
}
if(flag==1)
{
printf("在此地址下一共有%d人 ",n);
main();
}
else
{
printf("此地址无人 ");
printf("请按任意键重新输入地址或按*键返回回主菜单: ");
scanf("%s",x);
if(strcmp(x,"*") == 0)
{
sleep(1);system("cls");
main();
}
else
screena (a);
}
}

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

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

原文地址:https://www.cnblogs.com/zjwoo/p/12718470.html