/******************极限俱乐部会员信息系统*******************************/
#include "stdio.h" /*控制台I/O的头文件*/
#include "string.h" /*字符串函数的头文件*/
#include "stdlib.h" /*exit()函数的头文件*/
#define Max 100 /*定义最多可以输入的职工数*/
int Interface(char (*x)[20],int n); /*操作界面*/
int Add(int start,struct staff *p); /*增加职工数*/
void Display( struct staff *p,int start,int end); /*显示已存在的数据*/
void Sort(struct staff *p,int n); /*信息排序*/
int Search (struct staff *p,char *t,int n); /*信息检索*/
int Find(struct staff *p,int n); /*信息查找*/
void Modify(struct staff *p,int n); /*信息修改*/
int Delete(struct staff *p,int n); /*信息删除*/
void Swap(struct staff *p1,struct staff *p2); /*会员信息互换*/
char password[8]="7654321"; /*设置系统管理员密码*/
struct staff
{
char unit[60];
char name[20];
char sex[20];
int age;
int height;
int weight;
};
/*说明:《极限俱乐部会员信息系统》基本信息包括单位、姓名、性别、年龄、身高、体重六个基本信息,可以根据实际情况有所增减*/
/**********************************************************\
主函数
\**********************************************************/
void main()
{
struct staff sta[Max]; /*结构数组,即可输入的最大会员数,*/
/*最大值为声明中预定义的Max*/
int s; /*设置变量,以用于用户输入信息的接收,并将其作为转向函数的参数*/
int n=0; /*整型变量*/
char menu[][20]={"添加","显示","排序","检索","修改","删除"};
/**********************系统密码管理********************/
char choice;
char pass[8];
int flag=0;
int w=3; /*设置输入密码最多允许连续出错的次数*/
do
{
printf("请输入管理员密码:\n");
scanf("%s",pass);
if(!strcmp(pass,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\t\t\t~~~~~~~~~~~~~\n");
printf("\t\t欢迎进入极限俱乐部会员信息系统\n"); /*标题*/
printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%\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
{
s=Interface(menu,6);
switch (s) /*转向语句,选择以实现不同的功能*/
{
case 0,n=Add(n,sta);break;
case 1,Display(sta,0,n-1);break;
case 2,Sort(sta,n);break;
case 3,Find(sta,n);break;
case 4,Modify(sta,n);break;
case 5,n=Delete(sta,n);break;
}
}
while(s>=0&&s<=5);
}
/**********************************************************\
操作界面函数
\**********************************************************/
int Interface(char (*x)[20],int n)
{
int i;
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 Add(int start,struct staff *p)
{
int n;
for (n=start;n<Max;n++)
{
printf("\n [%d]请输入会员信息(按e键退出):\n",n+1);
printf(“单位:”);
scanf("%s",(p+n)->unit);
if (strcmp((p+n)->unit,"e")==0) break; /*若输入e则结束数据输入*/
printf("姓名:");
scanf("%s",(p+n)->name);
printf("性别(Male/Female):");
scanf("%s",(p+n)->sex);
printf("年龄:");
scanf("%d",&((p+n)->age));
printf("身高(cm):");
scanf("%d",&((p+n)->height));
printf("体重(kg):");
scanf("%d",&((p+n)->weight));
}
return n;
}
/**********************************************************\
显示信息函数
\**********************************************************/
void Display(struct staff *p,int start,int end)
{
int i;
printf("\n%10s%10s%10s","单位","姓名","性别"); /*显示标题*/
printf("%10s%10s%10s","年龄","身高","体重");
printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
for(i=start;i<=end;i++) /*显示数据信息*/
{
printf("%10s%10s%10s",(p+i)->unit,(p+i)->name,(p+i)->sex);
printf("%10d%10d%10d",(p+i)->age,(p+i)->height,(p+i)->weight);
printf("\n");
}
}
/**********************************************************\
按姓名排序函数
\**********************************************************/
void Sort(struct staff *p,int n)
{
int i,j,k;
for (i=0;i<n-1;i++)
{
k=i;
for (j=i+1;j<n;j++)
if(strcmp((p+k)->name,(p+j)->name)>0) k=j;
if(i!=k) Swap(p+k,p+i); /*交换会员信息*/
}
printf("\n 完成排序!\n");
}
/**********************************************************\
查找信息函数
\**********************************************************/
int Find(struct staff *p,int n)
{
int i;
char str[20];
printf("\n 请输入会员姓名:");
scanf("%s",str);
i=Search(p,str,n);
if(i==-1)
printf("没有匹配信息,请重试 %s!\n",str);
else
Display(p,i,i);
printf("按任意键回到主界面.\n");
getchar();
return i;
}
int Search(struct staff *p,char *t,int n)
{
int i;
for (i=0;i<n;i++)
if(!strcmp((p+i)->name,t)) /*将输入信息与已有信息比较*/
return i;
return -1;
}
/**********************************************************\
修改信息函数
\**********************************************************/
void Modify(struct staff *p,int n)
{
int i;
i=Find(p,n); /*查找待修改的信息*/
if(i>=0)
{
printf("请输入新信息:\n");
printf("单位:");
scanf("%s",(p+i)->unit);
printf("姓名:");
scanf("%s",(p+i)->name);
printf("性别(Male/Female):");
scanf("%s",(p+i)->sex);
printf("年龄:");
scanf("%d",&((p+i)->age));
printf("身高(cm):");
scanf("%d",&((p+i)->height));
printf("体重(kg):");
scanf("%d",&((p+i)->weight));
printf("\n修改已完成!\n");
}
}
/**********************************************************\
删除信息函数
\**********************************************************/
int Delete(struct staff *p,int n)
{
int i;
i=Find(p,n); /*查找待删除的信息*/
if(i>=0)
{
p[i]=p[n-1]; /*将最后一条记录覆盖当前记录*/
n=n-1;
printf("\n信息已删除!\n");
}
return n;
}
/**********************************************************\
信息互换函数函数
\**********************************************************/
void Swap(struct staff *p1,struct staff *p2)
{
struct staff temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}