#include<stdio.h>
#include<string.h>
int menu();
int inputstu(int line);
void Print_stu();
int GetStuline(char No[]);
int Search_stu();
int modifystu();
int deletestu();
int Choose();
char students[50][200];
int stu_num=0;
int choose;
int result=1;
void main()
{
while(result)
{
Choose();
}
}
//选择
int Choose()
{
choose= menu();
// if(result==0)break;;
switch(choose)
{
case 1:
//printf("\n\t执行输入操作。");
result=inputstu(stu_num);
stu_num+=1;
break;
case 2:
//printf("\n\t执行查找操作。");
Search_stu();
break;
case 3:
//printf("\n\t执行修改操作。\n");
modifystu();
break;
case 4:
//printf("\n\t执行删除操作。");
deletestu();
break;
case 5:
//printf("\n\t执行输出操作。");
Print_stu();
break;
case 0:
printf("\n\t谢谢使用!");
result=0;
break;
}
}
//菜单
int menu()
{
int option;
printf("\n\t------------------------------\n");
printf("\n\t\t学员信息管理系统\n");
printf("\n\t------------------------------\n");
printf("\n\t1输入信息");printf("\t4删除信息\n");
printf("\n\t2查找信息");printf("\t5输出信息\n");
printf("\n\t3修改信息");printf("\t0退出信息\n");
printf("\n\t选择命令:");
scanf("%d",&option);
return option;
}
//输入
int inputstu(int line)
{
int number;
int flag=0;
char stu_temp[1][200];
char temp[20];
char name[20];
while(flag==0)
{
printf("\n\t输入学号:");
scanf("%d",&number);
if(number<1000||number>9999)
{
printf("\n\t输入四位学号!");
continue;
}
else
{
sprintf(temp,"%d",number);
strcpy(stu_temp[0],temp);
strcat(stu_temp[0],"-");
flag=1;
}
}
while(flag==1)
{
printf("\t输入姓名:");
scanf("%s",name);
if(strlen(name)>20)
{
printf("n\t输入过长。");
continue;
}
else
{
sprintf(temp,"%s",name);
strcat(stu_temp[0],temp);
strcat(stu_temp[0],"-");
flag=2;
}
}
while(flag==2)
{
printf("\t输入性别(1男2女):");
scanf("%d",&number);
if(number!=1&&number!=2)
{
printf("\n\t输入有误。");
continue;
}
else
{
if(number==1)strcat(stu_temp[0],"男");
if(number==2)strcat(stu_temp[0],"女");
strcat(stu_temp[0],"-");
flag=3;
}
}
while(flag==3)
{
printf("\t输入成绩:");
scanf("%d",&number);
if(number<0||number>100)
{
printf("\n\t成绩必须在1-100之间。");
continue;
}
else
{
sprintf(temp,"%d",number);
strcat(stu_temp[0],temp);
strcat(stu_temp[0],"-");
flag=4;
}
}
//确认信息
printf("\n\t输入的信息如下:");
printf("%s",stu_temp);
printf("\n\t是否确认信息(y|n)?");
scanf("%s",temp);
if(strcmp(temp,"y")==0)
{
strcpy(students[line],stu_temp[0]);
}
else
{
inputstu(line);
}
flag=1;
}
//输出
void Print_stu()
{
int i,j;
printf("\t********现存学员信息********\n\t");
printf("学号\t");
printf("姓名\t");
printf("性别\t");
printf("得分\n\t");
for(i=0;i<stu_num;i++)
{
for(j=0;j<200;j++)
{
if(students[i][j]!='-')
{ if(students[i][j]==0)break;
printf("%c",students[i][j]);
}
else
{
printf("\t");
}
}
printf("\n\t");
}
}
//查找行位置
int GetStuline(char No[])
{
char temp[5]="";
int i,j,pos=-1;
for(i=0;i<stu_num;i++)
{
for(j=0;j<4;j++)
{
temp[j]=students[i][j];
}
if(strcmp(temp,No)==0)
{
pos=i;break;
}
}
return pos;
}
//查找
int Search_stu()
{
char no[5];
int line,j;
printf("\n\t输入要查找的学号:");
scanf("%s",no);
line=GetStuline(no);
if(line==-1)
{
printf("\n\t无该学员!");
}
else
{
printf("\t*******该学员信息如下*******\n\t");
printf("学号\t");
printf("姓名\t");
printf("性别\t");
printf("得分\n\t");
//printf("\t%s",students[line]);
for(j=0;j<200;j++)
{
if(students[line][j]!='-')
{ if(students[line][j]==0)break;
printf("%c",students[line][j]);
}
else
{
printf("\t");
}
}
printf("\n");
}
}
//修改
int modifystu()
{
char No[5]="";
int row;
printf("\n\t输入要修改的学号:");
scanf("%s",No);
row=GetStuline(No);
if(row==-1)
{
printf("\n\t*****无该学员!*****");
//continue;
}
else
{
inputstu(row);
}
}
//删除
int deletestu()
{
char No[5];
int row,i,j;
printf("\n\t输入要删除的学号:");
scanf("%s",No);
row=GetStuline(No);
if(row==-1)
{
printf("\n\t*****无该学员!*****");
}
else
{
for(i=row;i<stu_num;i++)
{
strcpy(students[i],students[i+1]);
}
}
printf("\n\t删除成功!");
}
演示: