#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
void showMain()
{
printf("\t=====欢迎使用=====\n");
printf("\t 1 创建学生信息\n");
printf("\t 2 查看学生信息\n");
printf("\t 3 修改学生信息\n");
printf("\t 4 删除学生信息\n");
printf("\t 5 插入学生信息\n");
printf("\t 6 学生最高分\n");
printf("\t 7 学生最低分\n");
printf("\t 0 结束\n");
}
int count;
/*
**检查学号是否已经存在
*/
bool queryId(int id[40],int num)
{
int i;
int flag=0;
for(i=0;i<40;i++)
{
if(id[i]==num)
{
flag=1;
break;
}
}
return flag;
}
/*
**检查用户输入的成绩是否符合标准(0-100的纯数字)
*/
int checkStu(char ch[20])
{
int i;
bool flag=1;
int numt;
for(i=0;ch[i];i++)
{
if(ch[i]<'0'||ch[i]>'9')
{
flag=0;
break;
}
if(i>=3)
{
flag=0;
break;
}
}
numt=-1;
if(flag)
{
if(i==1)
{
numt=(ch[0]-'0');
}
else if(i==2)
{
numt=(ch[0]-'0')*10+(ch[1]-'0');
}
else if(i==3)
{
numt=(ch[0]-'0')*100+(ch[1]-'0')*10+(ch[2]-'0');
if(numt>100)
{
numt=-1;
}
}
}
return numt;
}
/*
**创建学生信息
*/
void createStu(int id[40],int score[40],char name[40][16])
{
int i,num;
bool flag;
int numt;
char ch[10];
printf("请输入学生的个数:(1~40)\n");
scanf("%d",&count);
if(count>0 && count<=40)
{
for(i=0;i<count;i++)
{
printf("请输入第%d名学生的学号\n",i+1);
while(1)
{
scanf("%d",&num);
flag=queryId(id,num);
if(flag)
{
printf("您输入的学号已存在,请重新输入\n");
}
else
{
id[i]=num;
break;
}
}
printf("请输入第%d名学生的姓名\n",i+1);
scanf("%s",name[i]);
printf("请输入第%d名学生的成绩\n",i+1);
while(1)
{
scanf("%s",ch);
numt=checkStu(ch);
if(numt>=0&&numt<=100)
{
score[i]=numt;
break;
}
else
{
printf("输入的成绩有误,请重新输入:\n");
}
}
}
}
else
{
printf("请输入范围内的数字\n");
}
}
/*
** 显示学生信息
*/
void showStu(int id[40],int score[40],char name[40][16])
{
int i;
if(count==0)
{
printf("您未创建信息\n");
}
else
{
printf("\t学号\t姓名\t成绩\n");
for(i=0;i<count;i++)
{
printf("\t%d\t%s\t%d\n",id[i],name[i],score[i]);
}
printf("\n");
}
}
/*
** 修改学生信息
*/
void updataStu(int id[40],int score[40],char name[40][16])
{
int i;
int idt;
char ch[10];
int numt;
int flag;
int num;
if(count==0)
{
printf("您未创建信息\n");
}
else
{
printf("请输入要修改的学生的学号:\n");
scanf("%d",&idt);
for(i=0;i<count;i++)
{
if(id[i]==idt)
{
printf("请输入修改后的学生姓名:\n");
scanf("%s",name[i]);
while(1)
{
printf("请输入修改后的学生成绩:\n");
scanf("%s",ch);
numt=checkStu(ch);
if(numt>=0&&numt<=100)
{
score[i]=numt;
break;
}
else
{
printf("输入的成绩有误,请重新输入:\n");
}
}
}
}
}
}
/*
**删除学生信息
*/
void deleStu(int id[40],int score[40],char name[40][16])
{
int i,j;
int idd;
if(count==0)
{
printf("您未创建信息\n");
}
else
{
printf("请输入要删除的学生的学号:\n");
scanf("%d",&idd);
for(i=0;i<count;i++)
{
if(id[i]==idd)
{
for(j=i;j<count;j++)
{
id[j]=id[j+1];
score[j]=score[j+1];
strcpy(name[j],name[j+1]);
}
count--;
break;
}
}
}
return ;
}
/*
**插入学生信息
*/
void insertStu(int id[40],int score[40],char name[40][16])
{
int i;
int pos;
int choose;
int idd;
int num;
int flag;
int numt;
char ch[10];
printf("插入某个位置后---1\n");
printf("插入某个学生后---2\n");
scanf("%d",&choose);
if(choose==1)
{
printf("插入在第几名学生的后面:\n");
scanf("%d",&pos);
}
else if(choose==2)
{
printf("在某学生后插入,请输入这名学生的学号:\n");
scanf("%d",&idd);
for(i=0;i<count;i++)
{
if(id[i]==idd)
{
pos=i+1;
break;
}
}
}
for(i=count;i>pos;i--)
{
id[i]=id[i-1];
score[i]=score[i-1];
strcpy(name[i],name[i-1]);
}
printf("请输入要插入的学生的学号:\n");
while(1)
{
scanf("%d",&num);
flag=queryId(id,num);
if(flag)
{
printf("您输入的学号已存在,请重新输入\n");
}
else
{
id[pos]=num;
break;
}
}
printf("请输入要插入的学生的姓名:\n");
scanf("%s",name[pos]);
printf("请输入要插入的学生的成绩:\n");
while(1)
{
scanf("%s",ch);
numt=checkStu(ch);
if(numt>=0&&numt<=100)
{
score[pos]=numt;
break;
}
else
{
printf("输入的成绩有误,请重新输入:\n");
}
}
count++;
}
/*
**查找最高分成绩
*/
void maxscore(int id[40],int score[40],char name[40][16])
{
int i;
int max;
int u;
max=score[0];
u=0;
for(i=1;i<count;i++)
{
if(score[i]>max)
{
max=score[i];
u=i;
}
}
printf("最高分的学号:%d\n",id[u]);
printf("最高分的姓名:%s\n",name[u]);
printf("最高分的成绩:%d\n",score[u]);
}
/*
**查找最低分成绩
*/
void minscore(int id[40],int score[40],char name[40][16])
{
int i;
int min;
int u;
min=score[0];
u=0;
for(i=1;i<count;i++)
{
if(score[i]<min)
{
min=score[i];
u=i;
}
}
printf("最低分的学号:%d\n",id[u]);
printf("最低分的姓名:%s\n",name[u]);
printf("最低分的成绩:%d\n",score[u]);
}
int main()
{
int choose;
int id[45];
int score[45];
char name[45][16];
while(1)
{
showMain();
printf("\t 请选择功能号:\n");
scanf("%d",&choose);
if(choose==1)
{
//创建
createStu(id,score,name);
}
else if(choose==2)
{
//查看
showStu(id,score,name);
}
else if(choose==3)
{
//修改
updataStu(id,score,name);
}
else if(choose==4)
{
//删除
deleStu(id,score,name);
}
else if(choose==5)
{
//增加
insertStu(id,score,name);
}
else if(choose==6)
{
//学生最高分
maxscore(id,score,name);
}
else if(choose==7)
{
//学生最低分
minscore(id,score,name);
}
else if(choose==0)
{
break;
}
}
return 0;
}