我编了个小系统,可能是主函数有问题吧,操作界面显示有问题,高手帮我看看啊,谢谢!!!!
程序如下:#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#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);//信息查找
int modify(struct staff *p,int n);//信息修改
int Delete(struct staff *p,int n);//信息删除
void swap(struct staff *p1,struct staff *p2);//会员信息互换
char password[8]="1234567";
struct staff
{
char unit[60];
char name[20];
char sex[20];
int age;
int height;
int weight;
};/*说明:《会员信息系统》基本信息包括单位,姓名,性别,年龄,身高,体重六个基本信息,可以根据实际情况有所增减*/
/***************************************************************\
主函数
/***************************************************************/
main()
{
struct staff sta[max];//结构数组,即可输入的最大会员数,
int s;//设置变量,已用于用户输入信息的接收,并将其作为转向函数的参数
int n=0;
char menu[][20]={"添加","显示","排序","修改","删除"};
/************************系统密码管理***********************/
char choice;
char pass[8];
int flag=0;
int w=3;//设置密码输入次数
while(w>0)
{ printf("请输入管理员的密码:\n");
scanf("%s",pass);
if(!strcmp(pass,password))//验证密码
{
printf("PASS\n\n");
flag=1;
break;
}
else
{
printf("密码错误,请重新输入:\n");
w--;
}
}
if(!flag)
{printf("你已连续三次输入错误,请确认后在使用本系统,谢谢!!!!\n");
exit(0);
}
system("cls");//使用system 调用dos命令清屏
/*****************欢迎界面****************/
printf("~~~~~~~~~~~~\t\t\t\t\t\t\t\t~~~~~~~~~~~~~~\n");
printf("~~~~~~~~~~~~\t\t\t\t\t\t\t\t~~~~~~~~~~~~~~\n");
printf(" 欢迎进入极限俱乐部会员信息系统\n");
printf("%%%%%%%%%%%%%%%%%%%%\t\t\t\t\t\t\t%%%%%%%%%%%%%%%%\n");
printf("\n\n\n\n\n");
printf("作者:***\n");
printf("====================\t\t\t\t\t\t\t================\n");
scanf("%s",&choice);
if(choice=='n'||choice=='N')
exit(1);
/**************************欢迎界面结束********************/
system("cls");
while(s>=0&&s<=5)
{
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;
}
}
system("pause");
return 0;
}
/**************************************************************\
操作界面函数
\**************************************************************/
int Interface(char (*x)[20],int n)
{
int i,j;
printf("\nXXXXXXXXXXXX俱乐部会员信息系统XXXXXXXXXXXXXXX\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("%10s%10s%10s","单位","姓名","性别");
printf("%10s%10s%10s","年龄","身高","体重");
printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
for(i=0;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完成排序");
}
/******************************************************************\
查找信息函数
\******************************************************************/
int find(struct staff *p,int n)
{
int i;
char str[20];
printf("请输入会员姓名:");
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 -1;
return 1;
}
/******************************************************************\
修改信息函数
\******************************************************************/
int 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");}
return 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;
}
[ 本帖最后由 fanfan320 于 2010-6-18 19:35 编辑 ]