/*系统密码:123321*/
/*极限俱乐部会员信息系统*/
#include "stdio.h" /*控制台I/O的头文件*/
#include "string.h" /*字符串函数的头文件*/
#include "stdlib.h" /*exit()函数的头文件*/
#define M 20 /*定义最多可录入的单位数*/
#define N 100 /*定义最多可录入的会员数*/
int Interface(char (*x)[20],int n); /*操作界面函数*/
int AddList(int start,char Unit[][20],char Name[][20],
char Number[][20],int Parameter[][5]); /*添加信息函数*/
void Display(char (*x)[20],char (*y)[20],char (*z)[20],
int Parameter[][5],int start,int end); /*显示信息函数*/
void SwapChar(char *x,char *y); /*字符互换函数*/
void SwapeInt(int *x,int *y); /*整型数互换函数*/
void Sort(char (*x)[20],char (*y)[20],char (*z)[20],
int Parameter[][5],int n); /*按姓名排序函数*/
int Search (char (*x)[20],char (*y)[20],char (*z)[20],
char *person,int n); /*信息检索函数*/
int FindStaff(char (*x)[20],char (*y)[20],char (*z)[20],
int Parameter[][5],int n); /*信息查找函数*/
void Modify(char (*x)[20],char (*y)[20],char (*z)[20],
int Parameter[][5],int n); /*信息修改函数*/
int Delete(char (*x)[20],char (*y)[20],char (*z)[20],
int Parameter[][5],int n); /*信息删除函数*/
char password[8]="7654321"; /*/设置系统管理员密码*
/**********************************************************\
主函数
\**********************************************************/
void main()
{
char Unit[M][20]; /*单位*/
char Number[N][20]; /*编号*/
char Name[N][20]; /*姓名*/
int Parameter[N][5]; /*成绩*/
int select;
int n=0;
char mainName[][20]={"添加信息","显示信息","按姓名排序",
"按姓名检索","修改信息","删除信息"}; /*系统菜单*/
/**********************系统密码管理********************/
char choice;
char s[8];
int flag = 0;
int w = 3; /*设置输入密码最多允许连续出错的次数*/
do
{
printf("请输入管理员密码:\n");
scanf("%s",s);
if(!strcmp(s,password)) /*验证密码*/
{
printf("PASS\n\n\n"); /*密码正确,则输出“pass”*/
flag = 1;
break;
}
else
{
printf("密码错误,请重新输入:\n");
w--;
}
}
while(w>0);
if(!flag)
{
printf("你已连续三次输入错误,请确认后再使用本系统,谢谢!\n");
exit(0);
}
system("cls"); /*用system调用dos命令,清屏*/
/*************************欢迎界面************************************/
printf("~~~~~~~~~~~~~\t\t\t\t\t~~~~~~~~~~~~~\n");
printf("\t\t欢迎进入极限俱乐部会员信息系统\n"); /*标题*/
printf("\n%%%%%%%%%%%%%%%%%%%%%%%%%\t\t\t\t\t%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
printf("\n\n\n\n");
printf("单位:北京极限俱乐部\n"); /*用户单位*/
printf("地址北京市西城区西四\n");
printf("会员热线:010-66886688");
printf("\n\n\n\n");
printf("==============\t\t==============\n");
printf("本系统由“天地人和软件有限公司”开发\n"); /*开发商*/
printf("作者:天天\n");
printf("地址:北京市海淀区学院路\n");
printf("==============\t\t==============\n");
printf("\n\n");
printf("\t\t请任意输入一个值并回车进入系统\n");
scanf("%s",&choice);
if(choice== '\n'||choice== 'N')
exit(1);
/***********************欢迎界面结束******************************/
system("cls"); /*通过system()函数调用dos命令,清屏*/
do
{
select=Interface(mainName,6);
switch (select) /*转向语句,选择以实现不同的功能*/
{
case 0,n=AddList(n,Unit,Number,Name,Parameter);break;
case 1,Display(Unit,Number,Name,Parameter,0,n-1);break;
case 2,Sort(Unit,Number,Name,Parameter,n);break;
case 3,FindStaff(Unit,Number,Name,Parameter,n);break;
case 4,Modify(Unit,Number,Name,Parameter,n);break;
case 5,n=Delete(Unit,Number,Name,Parameter,n);break;
}
}
while(select>=0&&select<=5);
}
/**********************************************************\
操作界面函数
\**********************************************************/
int Interface(char (*x)[20],int n)
{
int i=0;
int j;
printf("\n×××××××极限俱乐部会员信息系统×××××××\n");
do
{
for (j=0;j<n;j++)
printf("%2d.%s\n",j+1,x[j]);
printf("%2d.返回并退出\n",j+1);
printf("请从上述选项中选择:\n");
scanf("%d",&i); /*输入选项*/
}
while (i<0||i>n+1);
return (i-1);
}
/**********************************************************\
添加信息函数
\**********************************************************/
int AddList(int start,char Unit[][20],char Number[][20],
char Name[][20],int Parameter[][5])
{
system("cls"); /*通过system()函数调用dos命令,清屏*/
int i,n;
for (n=start;n<N;n++)
{
printf("\n 请输入单位(按e键返回):\n"); /*若输入e则结束数据输入*/
scanf("%s",Unit[n]);
if (strcmp(Unit[n],"e")==0) break;
printf("\n 请输入会员编号:\n");
scanf("%s",Number[n]);
printf("\n 请输入会员姓名:\n");
scanf("%s",Name[n]);
for(i=0;i<5;i++) /*输入数据信息*/
{
printf("生理指标[%d]=",i+1);
scanf("%d",&Parameter[n][i]);
}
}
return n;
// system("cls");
}
/**********************************************************\
显示信息函数
\**********************************************************/
void Display(char (*x)[20],char (*y)[20],char (*z)[20],
int Parameter[][5],int start,int end)
{
system("cls");
int i,j;
printf("\n%18s %10s %8s ","单位","会员编号","姓名"); /*显示标题*/
for(i=0;i<5;i++) printf("%6s%d","指标",i+1);
printf("\n------------------------------------------\n");
for(i=start;i<=end;i++) /*显示数据信息*/
{
printf("%18s %10s %8s",x[i],y[i],z[i]);
for (j=0;j<5;j++)
printf("%7d",Parameter[i][j]);
printf("\n");
}
}
/**********************************************************\
字符串互换函数
\**********************************************************/
void SwapChar(char *x,char *y)
{
char temp[20];
strcpy(temp,x);
strcpy(x,y);
strcpy(y,temp);
}
/**********************************************************\
整型数互换函数
\**********************************************************/
void SwapInt(int *x,int *y)
{
int p;
p=*x;
*x=*y;
*y=p;
}
/**********************************************************\
按姓名字典顺序排序函数
\**********************************************************/
void Sort(char (*x)[20],char (*y)[20],char (*z)[20],
int Parameter[][5],int n)
{
int i,j,k;
for (i=0;i<n-1;i++)
{
k=i;
for (j=i+1;j<n;j++)
if(strcmp(z[k],z[j])>0) k=j;
if(i!=k)
{
SwapChar(x[k],x[i]); /*交换会员标识*/
SwapChar(y[k],y[i]);
SwapChar(z[k],z[i]);
for(j=0;j<5;j++) /*交换会员数据信息*/
SwapInt(&Parameter[k][j],&Parameter[i][j]);
}
}
printf("\n 按姓名排序已完成!\n");
}
/**********************************************************\
显示信息函数,为下一函数的中间调用
\**********************************************************/
int Search(char (*x)[20],char (*y)[20],char (*z)[20],char *person,int n)
{
int i;
for (i=0;i<n;i++)
if(!strcmp(z[i],person)) /*将输入信息与已有信息比较*/
return i;
return -1;
}
/**********************************************************\
显示信息函数
\**********************************************************/
int FindStaff(char (*x)[20],char (*y)[20],char (*z)[20],
int Parameter[][5],int n)
{
system("cls");
int i;
char str[20];
printf("\n 请输入要检索的会员姓名:");
scanf("%s",str);
i=Search(x,y,z,str,n); /*查找str是否在所选数组中*/
if(i==-1)
printf("没有关于 %s 的记录,请确认无误后再次输入!\n",str);
else
Display(x,y,z,Parameter,i,i); /*显示找到的会员信息*/
// printf("请按任意键返回操作界面.\n");
getchar();
return i;
}
/**********************************************************\
信息修改函数
\**********************************************************/
void Modify(char (*x)[20],char (*y)[20],char (*z)[20],
int Parameter[][5],int n)
{
// system("cls");
int i,j;
i=FindStaff(x,y,z,Parameter,n); /*寻找需要修改的会员信息*/
if(i>=0) /*若找到,则进行修改*/
{
printf("请输入修改后的会员信息:\n");
printf("\n 请输入单位:\n");
scanf("%s",x[i]);
printf("\n 请输入会员编号:\n");
scanf("%s",y[i]);
printf("\n 请输入会员姓名:\n");
scanf("%s",z[i]);
for(j=0;j<5;j++) /*输入修改后的数据信息*/
{
printf("生理指标[%d]=",j+1);
scanf("%d",&Parameter[i][j]);
}
printf("\n修改已完成!\n");
}
}
/**********************************************************\
信息删除函数
\**********************************************************/
int Delete(char (*x)[20],char (*y)[20],char (*z)[20],int Parameter[][5],int n)
{
// system("cls"); /*通过system()函数调用dos命令,清屏*/
int i,j;
i=FindStaff(x,y,z,Parameter,n); /*寻找需要删除的会员信息*/
if(i>=0) /*若找到,则删除*/
{
strcpy(x[i],x[n-1]);
strcpy(y[i],y[n-1]);
strcpy(z[i],z[n-1]);
for(j=0;j<5;j++)
Parameter[i][j]=Parameter[n-1][j]; /*将最后一条记录覆盖当前记录*/
n=n-1; /*记录数减少1*/
printf("\n已经删除所选会员信息!\n"); /*如果此时调用Display()函数,*/
} /*则显示删除后的结果*/
return n;
}