|
发表于 2014-2-19 12:52:44
|
显示全部楼层
这是个体力活好不好(你没有给出DISPLAY函数我自己加的,你可以自己改掉),以下程序已经编译完成
#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 Search(char (*x)[20], char (*y)[20], char (*z)[20], char *person, int n) ; /*信息检索函数*/
int AddList(int start, char Unit[][20], char Nanme[][20], char Number[][20], int Parameter[][50]); /*添加信息函数*/
void Display(char (*x)[20], char (*y)[20], char (*z)[20], int Parameter[][50], int start, int end); /*显示信息函数*/
void SwapChar(char *x, char *y); /*字符互换函数*/
void SwapInt(int *x, int *y); /*整型互换函数*/
void Sort(char (*x)[20],char (*y)[20],char (*z)[20],int Parameter[][50],int n); /*按姓名排序函数*/
int FindStaff(char (*x)[20], char (*y)[20], char (*z)[20], int Parameter[][50],int n); /*信息查找函数*/
void Modify(char (*x)[20], char (*y)[20], char (*z)[20], int Parameter[][50],int n); /*信息修改函数*/
int Delete(char (*x)[20], char (*y)[20], char (*z)[20], int Parameter[][50],int n); /*信息删除函数*/
char password[8]="79260497"; /*设置系统管理员密码*/
/*************************************************************************\
主函数
\*************************************************************************/
void main()
{
char Unit[M][20];
char Number[N][20];
char Name[N][20];
int Parameter[N][50];
int select;
int n=0;
char mainName[][20]={"添加信息","显示信息","按姓名排序","按姓名检索","修改信息","删除信息"};
/***************************系统密码管理*******************************/
int flag;
char choice;
char s[8];
int dlag=0;
int w=3;
do
{
printf("请输入管理员密码:\n");
scanf("%s",s);
if(strcmp(s,password))
{
printf("PASS\n\n\n");
flag=1;
break;
}
else
{
printf("密码错误,请重新输入:\n");
w--;
}
}
while(w > 0);
if(!flag)
{
printf("你已连续三次输入错误,请确认后再使用本系统,谢谢!");
exit(0);
}
system("cls");
/*****************************欢迎界面***********************************/
printf("~~~~~~~~~~~~~~~~~~~~~~~~\t\t\t\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~");
printf("\t\t欢迎进入极限俱乐部会员管理信息系统\n");
printf("\n%%%%%%%%%%%%%%%%%%%%%%%\t\t\t\t\t%%%%%%%%%%%%%%%%%%%%%%%%%");
printf("\n\n\n\n");
printf("单位:北京极限俱乐部\n");
printf("地址:北京西城区四环\n");
printf("会员热线:010--66886688");
printf("\n\n\n\n");
printf("============================\t\t============================\n");
printf("本系统由天地人和软件有限公司开发");
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");
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 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;
}
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++);
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[][50])
{
system("cls");
int i, n;
for(n=start; n < N; n++)
{
printf("\n请输入单位(按e键返回):\n");
scanf("%s",Unit[n]);
if(strcmp(Unit[n],"e")==0 )break;
printf("\n请输入会员编号:\n");
scanf("%s",&Number[n]);
printf("请输入会员姓名:\n");
scanf("%s",&Name[n]);
for(i=0; i<5; i++)
{
printf("生理指标[%d]=",i++);
scanf("%d",&Parameter[n][i]);
}
}
return 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[][50], int n)
{
int i, k, j;
for(i=0; i <= n-1; i++)
{
k=1;
for(j=j+1; j < n; j++)
if(strcmp(z[k], z[j]) > 0);
k=j;
if(i!=k)
{
SwapChar(x[k], z[j]);
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 FindStaff(char (*x)[20], char (*y)[20], char (*z)[20], int Parameter[][50], int n)
{
system("cls");
int i;
char str[20];
printf("\n请输入要检索的会员姓名:");
scanf("%s",str);
i=Search(x, y, z, str, n);
if(i==-1)
printf("没有关于%s的记录,请确认输入后再次输入!\n",str);
else
Display(x, y, z, Parameter, i,n);
getchar();
return i;
}
/*********************************************************************************************\
信息修改函数
\*********************************************************************************************/
void Modify(char (*x)[20], char (*y)[20], char (*z)[20], int Parameter[][50], int n)
{
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]);
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[][50], int n)
{
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;
printf("\n已删除所选会员信息!\n");
}
return n;
}
void Display(char (*x)[20], char (*y)[20], char (*z)[20], int Parameter[][50], int start, int end)
{
printf("%s\n",x);printf("%s\n",y);printf("%s\n",z);printf("%d\n",Parameter);
}
|
|