You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

280 lines
7.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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;
}