|
|
#include<stdio.h>
|
|
|
#include <string.h>
|
|
|
#include <stdlib.h>
|
|
|
#include <conio.h>
|
|
|
#define N 1000
|
|
|
typedef struct student
|
|
|
{
|
|
|
int number;
|
|
|
char name[20];
|
|
|
int grade;
|
|
|
int yu;
|
|
|
int shu;
|
|
|
int ying;
|
|
|
int sum;
|
|
|
}STUDENT;
|
|
|
STUDENT student[N];
|
|
|
|
|
|
void zhu();
|
|
|
void DengJi();
|
|
|
void ShanChu();
|
|
|
void LiuLan();
|
|
|
void ChaZhao();
|
|
|
void PaiXu();
|
|
|
void menu();
|
|
|
int shuliang=0; //记录学生数量
|
|
|
|
|
|
void zhu() //返回主界面
|
|
|
{
|
|
|
char shibie[20];
|
|
|
printf("请问是否继续操作,请输入yes or no\n");
|
|
|
scanf("%s",&shibie);
|
|
|
if(strcmp(shibie,"yes")==0)
|
|
|
{
|
|
|
menu();
|
|
|
}
|
|
|
else if(strcmp(shibie,"no")==0)
|
|
|
exit(0); //库函数,退出系统
|
|
|
|
|
|
else
|
|
|
{
|
|
|
printf("请输入正确的字符,谢谢!");
|
|
|
zhu();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
void DengJi() //登记学生信息
|
|
|
{
|
|
|
|
|
|
int sm; //记录学生数目
|
|
|
int i,k=1;
|
|
|
system("CLS");
|
|
|
printf("请输入需要输入几个学生信息:");
|
|
|
scanf("%d",&sm);
|
|
|
for(i=shuliang;i<shuliang+sm;i++,k++)
|
|
|
{
|
|
|
printf("请输入第%d个学生的学号:",k);
|
|
|
scanf("%d",&student[i].number);
|
|
|
printf("请输入学生的姓名:");
|
|
|
scanf("%s",&student[i].name);
|
|
|
//cout<<"请输入学生3门课的成绩:";
|
|
|
printf("请输入语文成绩:");
|
|
|
scanf("%d",&student[i].yu);
|
|
|
printf("请输入数学成绩:");
|
|
|
scanf("%d",&student[i].shu);
|
|
|
printf("请输入英语成绩:");
|
|
|
scanf("%d",&student[i].ying);
|
|
|
}
|
|
|
shuliang=shuliang+sm;
|
|
|
zhu();
|
|
|
}
|
|
|
|
|
|
void ShanChu() //删除学生信息
|
|
|
{
|
|
|
char shanchuinfo[10];
|
|
|
system("CLS"); //库函数,清屏
|
|
|
printf("删除全部学生信息请输入\"all\",删除指定学号的学生信息请输入\"one\"\n");
|
|
|
scanf("%s",&shanchuinfo);
|
|
|
if(strcmp(shanchuinfo,"all")==0)
|
|
|
{
|
|
|
int j;
|
|
|
printf("你删除的学生信息如下:\n");
|
|
|
printf("------学号-------姓名------语文-------数学-------英语-------\n");
|
|
|
for(j=0;j<shuliang;j++)
|
|
|
printf("------%d--------%s----------%d----------%d----------%d-------\n",student[j].number,student[j].name,student[j].yu,student[j].shu,student[j].ying);
|
|
|
shuliang=0;
|
|
|
printf("删除成功\n");
|
|
|
}
|
|
|
|
|
|
else if(strcmp(shanchuinfo,"one")==0)
|
|
|
{
|
|
|
struct student *p=NULL;
|
|
|
int choice;
|
|
|
int i,j,k=0;
|
|
|
printf("请输入你要删除的学生的学号:");
|
|
|
scanf("%d",&choice);
|
|
|
for(i=0;i<shuliang;i++)
|
|
|
{
|
|
|
if(choice==student[i].number)
|
|
|
{
|
|
|
k=1;j=i;break;
|
|
|
}
|
|
|
}
|
|
|
if(k)
|
|
|
{
|
|
|
if(shuliang==1)
|
|
|
{
|
|
|
p=&student[0];
|
|
|
free(p);
|
|
|
shuliang=0;
|
|
|
}
|
|
|
|
|
|
else
|
|
|
{
|
|
|
for(i=j;i<shuliang;i++)
|
|
|
{
|
|
|
student[i]=student[i+1];
|
|
|
}
|
|
|
shuliang=shuliang-1;
|
|
|
}
|
|
|
|
|
|
printf("删除成功\n");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
printf("输入数据错误!");
|
|
|
}
|
|
|
}
|
|
|
zhu();
|
|
|
}
|
|
|
|
|
|
void LiuLan() //浏览函数
|
|
|
{
|
|
|
int i;
|
|
|
|
|
|
system("CLS");
|
|
|
if(shuliang==0)
|
|
|
{
|
|
|
printf("系统里面没有任何学生的信息!");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
for(i=0;i<shuliang;i++)
|
|
|
{
|
|
|
student[i].sum=student[i].yu+student[i].shu+student[i].ying;
|
|
|
printf("\t\t☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
|
|
|
printf("\t\t第%d个学生的学号为:%d\n",i+1,student[i].number);
|
|
|
printf("\t\t第%d个学生的姓名为:%s\n",i+1,student[i].name);
|
|
|
printf("\t\t第%d个学生的语文成绩为:%d\n",i+1,student[i].yu);
|
|
|
printf("\t\t第%d个学生的数学成绩为:%d\n",i+1,student[i].shu);
|
|
|
printf("\t\t第%d个学生的英语成绩为:%d\n",i+1,student[i].ying);
|
|
|
printf("\t\t第%d个学生的总成绩为:%d\n",i+1,student[i].sum);
|
|
|
printf("\t\t☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
|
|
|
}
|
|
|
}
|
|
|
zhu();
|
|
|
}
|
|
|
|
|
|
void ChaZhao() //查找信息
|
|
|
{
|
|
|
int xx,choice;
|
|
|
char yy[20];
|
|
|
int i,j,k=0;
|
|
|
system("CLS");
|
|
|
if(shuliang==0)
|
|
|
{
|
|
|
printf("系统里面没有任何学生的信息!");
|
|
|
zhu();
|
|
|
}
|
|
|
printf("两种查找方式:按学号,按姓名\n如果按学号查找请输1,如果按姓名查找请输2\n请输入您查找的方式:");
|
|
|
scanf("%d",&choice);
|
|
|
if(choice==1)
|
|
|
{
|
|
|
printf("请输入需要查找学生的学号:");
|
|
|
scanf("%d",&xx);
|
|
|
printf("您所查找的学生的信息为:\n");
|
|
|
printf("----学号----姓名----语文成绩----数学成绩----英语成绩----\n");
|
|
|
for(i=0;i<shuliang;i++)
|
|
|
{
|
|
|
if(xx==student[i].number)
|
|
|
{
|
|
|
j=i;k=1;
|
|
|
printf("-----%d--------%s--------%d--------%d--------%d------\n",student[j].number,student[j].name,student[j].yu,student[j].shu,student[j].ying);
|
|
|
}
|
|
|
}
|
|
|
if(k==0)
|
|
|
printf("输入信息有误:");
|
|
|
}
|
|
|
|
|
|
else if(choice==2)
|
|
|
{
|
|
|
printf("请输入需要查找学生的姓名:\n");
|
|
|
scanf("%s",yy);
|
|
|
printf("您所查找的学生的信息为:\n");
|
|
|
printf("----学号----姓名----语文成绩----数学成绩----英语成绩----\n");
|
|
|
for(i=0;i<shuliang;i++)
|
|
|
{
|
|
|
if(strcmp(yy,student[i].name)==0)
|
|
|
{
|
|
|
j=i;k=1;
|
|
|
printf("-----%d--------%s--------%d--------%d--------%d-----\n",student[j].number,student[j].name,student[j].yu,student[j].shu,student[j].ying);
|
|
|
|
|
|
}
|
|
|
}
|
|
|
if(k==0)
|
|
|
printf("输入信息有误:");
|
|
|
}
|
|
|
zhu();
|
|
|
}
|
|
|
|
|
|
void PaiXu() //排序函数
|
|
|
{
|
|
|
struct student *p1[N],**p2,*temp;
|
|
|
int i,j;
|
|
|
system("CLS");
|
|
|
p2=p1;
|
|
|
for( i=0;i<shuliang;i++)
|
|
|
{
|
|
|
p1[i]=student+i;
|
|
|
}
|
|
|
|
|
|
for( i=0;i<shuliang;i++)
|
|
|
{
|
|
|
for( j=i+1;j<shuliang;j++)
|
|
|
{
|
|
|
if((*(p2+i))->sum<(*(p2+j))->sum)
|
|
|
{
|
|
|
temp=*(p2+i);*(p2+i)=*(p2+j);*(p2+j)=temp;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
printf("按照总成绩排序之后的信息为:\n");
|
|
|
printf("----学号----姓名----总成绩----\n");
|
|
|
for( i=0;i<shuliang;i++)
|
|
|
{
|
|
|
student[i].sum=student[i].yu+student[i].shu+student[i].ying;
|
|
|
printf("-----%d--------%s--------%d------\n",(*(p2+i))->number,(*(p2+i))->name,(*(p2+i))->sum);
|
|
|
}
|
|
|
zhu();
|
|
|
}
|
|
|
|
|
|
void menu()
|
|
|
{
|
|
|
int n=0;
|
|
|
system("CLS");
|
|
|
printf("\t\t☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
|
|
|
printf("\t\t☆===============学生信息管理系统=================☆\n");
|
|
|
printf("\t\t☆= 1.登记学生信息 =☆\n");
|
|
|
printf("\t\t☆= 2.删除学生信息 =☆\n");
|
|
|
printf("\t\t☆= 3.浏览学生信息 =☆\n");
|
|
|
printf("\t\t☆= 4.查找学生信息 =☆\n");
|
|
|
printf("\t\t☆= 5.根据总成绩排序 =☆\n");
|
|
|
printf("\t\t☆= 6.退出系统 =☆\n");
|
|
|
printf("\t\t☆================================================☆\n");
|
|
|
printf("\t\t☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
|
|
|
printf("\t\t*请选择*");
|
|
|
scanf("%d",&n);
|
|
|
switch (n)
|
|
|
{
|
|
|
case 1:
|
|
|
DengJi();break; //登记信息
|
|
|
case 2:
|
|
|
ShanChu();break; //删除信息
|
|
|
case 3:
|
|
|
LiuLan();break; //浏览信息
|
|
|
case 4:
|
|
|
ChaZhao();break; //查找信息
|
|
|
case 5:
|
|
|
PaiXu();break; //对成绩排序
|
|
|
case 6:
|
|
|
exit(0);break; //退出系统
|
|
|
}
|
|
|
}
|
|
|
|
|
|
int main()
|
|
|
{
|
|
|
menu();
|
|
|
return 0;
|
|
|
}
|
|
|
|