**
学生成绩管理系统C语言
代码:
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
/*主程序*/
void main()
{
int i;
ReadIn();
system("color F0");
while(1)
{
/*主菜单*/
printf("-----------------欢迎使用成绩管理系统----------------\n");
printf("*****************************************************\n");
printf("* 学生成绩管理系统 *\n");
printf("* *\n");
printf("* 1.添加学生成绩 *\n");
printf("* 2.更改学生成绩 *\n");
printf("* 3.删除学生成绩 *\n");
printf("* 4.按姓名查找学生成绩 *\n");
printf("* 5.按学号查找学生成绩 *\n");
printf("* 6.按总成绩排序 *\n");
printf("* 7.显示学生成绩 *\n");
printf("* 8.退出 *\n");
printf("*****************************************************\n");
printf("请输入数字:\n");
judge:
scanf("%d",&i);
switch(i)
{
case 1:
add(); //添加学生信息
break;
case 2:
Change(); //修改学生信息
break;
case 3:
Delete(); //删除学生信息
break;
case 4:
Find(); //按姓名查找学生信息
break;
case 5:
Find2(); //按学号查找学生信息
case 6:
paixu(); //按总成绩排序
break;
case 7:
Display(); //显示学生信息
break;
case 8:
Exit();
break;
default:
printf("输入错误,请重新输入!\n");
goto judge;
}
WriteIn();
}
}
void Exit()
{
printf("-----------------------感谢使用----------------------\n\n\n\n\n----按任意键退出----\n");
exit(0);
}
/*定义结构体*/
struct Student
{
char ID[20];
char Name[20];
float Math;
float English;
float PE;
float sum;
};
/*声明学生数组及学生数量*/
struct Student students[1000];
int num=0;//刚开始的学生数目为0
/*求总成绩*/
float Sum(struct Student stu)
{
return (stu.Math+stu.English+stu.PE);//返回总成绩
}
/*通过姓名返回数组下标*/
int Byname(char name[])
{
int a;
for (a=0;a<num;a++)
{
if (strcmp(students[a].Name,name)==0) //通过在结构体里面查找学生的姓名,然后返回此学生在数组里的位置
{
return a;
}
}
return -1;//不存在这名学生
}
/*通过学号返回数组下标*/
int Byindex(char id[])
{
int b;
for (b=0;b<num;b++)
{
if (strcmp(students[b].ID,id)==0) //通过在结构体里面查找学生的学号,然后返回此学生在数组里的位置
{
return b;
}
}
return -1;//不存在这名学生
}
/*显示一个学生的成绩*/
void DisplaySingle(int index)
{
printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名"," 高数成绩 "," 英语成绩 "," 体育成绩 ","总成绩");
printf("------------------------------------------------------------------\n");
printf("%10s%10s%10.2f%10.2f%12.2f%12.2f\n",students[index].ID,students[index].Name,
students[index].Math,students[index].English,students[index].PE,students[index].sum);
}
/*添加学生信息*/
void add()
{
system("cls"); //清屏
int n,i=0;
printf("请输入增加的人数:\n");
scanf("%d",&n);
while(n>i)
{
printf("请输入第%d名同学的信息:\n",i+1);
printf("请输入学号:");
scanf("%s",&students[num].ID);
//getchar();
printf("请输入姓名:");
scanf("%s",&students[num].Name);
//getchar();
printf("请输入高数成绩:");
scanf("%f",&students[num].Math);
//getchar();
printf("请输入英语成绩:");
scanf("%f",&students[num].English);
//getchar();
printf("请输入体育成绩:");
scanf("%f",&students[num].PE);
printf("---------录入成功!--------\n\n");
//getchar();
students[num].sum=Sum(students[num]);//求出录入学生的总成绩
num++;
i++;
}
printf("按任意键返回\n");
getch(); //随便按下一个字符,函数返回主界面
system("cls");
}
/*修改学生信息*/
void Change()
{
//float Math,English,PE;
system("cls");
while(1) //进行永真循环
{
char id[20];
int index;
Display();//展示出所有的学生的信息
printf("请输入要修改学生的学号:");
scanf("%s",&id);
//getchar();
index=Byindex(id);//通过数组下标查找是否有这名学生
if (index==-1)
{
printf("学生不存在!\n");
}
if(index!=-1)
{
system("cls");
printf("你要修改的学生信息为:\n\n\n\n\n");
DisplaySingle(index); //显示要修改学生的信息
printf("\n\n\n");
printf("------------ 请输入新值-------------\n");
printf("请输入学号:\n");
scanf("%s",&students[index].ID);
//getchar();
printf("请输入姓名:\n");
scanf("%s",&students[index].Name);
//getchar();
printf("请输入高数成绩:\n");
scanf("%f",&students[index].Math);
//getchar();
printf("请输入英语成绩:\n");
scanf("%f",&students[index].English);
//getchar();
printf("请输入体育成绩:\n");
scanf("%f",&students[index].PE);
//getchar();
students[index].sum=Sum(students[index]);
printf("--------修改成功!----------\n");
printf("是否继续修改学生信息?(y/n)\n");
getchar();
if (getchar()=='n')
{
system("cls");
break;
}
}
}
}
/*删除学生信息*/
void Delete()
{
system("cls");
int i;
while(1)
{
Display();
char id[20];
int index;
printf("请输入要删除的学生的学号:");
scanf("%s",&id);
index=Byindex(id);//通过数组下标查找是否有这名学生
if (index==-1)
{
printf("学生不存在!\n");
}
if(index!=-1)
{
system("cls");
printf("你要删除的学生信息为:\n\n\n\n");
DisplaySingle(index);
printf("是否真的要删除?(y/n)\n");
getchar();
if (getchar()=='y')
{
for (i=index;i<num-1;i++)
{
students[i]=students[i+1];//把后边的对象都向前移动
}
num--;
printf("---------删除成功!------------\n\n\n\n");
}
printf("是否继续操作?(y/n)\n");
getchar();
if (getchar()=='n')
{
system("cls");
break;
}
}
}
}
/*按姓名查询*/
void Find()
{
while(1)
{
char name[20];
int index;
system("cls");
printf("请输入要查询学生的姓名:");
scanf("%s",&name);
index=Byname(name);
if (index==-1)
{
printf("不存在%s同学的信息\n",name);
}
if(index!=-1)
{
printf("%s的信息为:\n",name);
DisplaySingle(index);
}
printf("是否继续查询操作?(y/n)");
getchar();
if (getchar()=='n')
{
system("cls");
break;
}
}
}
/*按学号查询*/
void Find2()
{
while(1)
{
char num[20];
int index;
printf("请输入要查询学生的学号:");
scanf("%s",&num);
index=Byindex(num);//通过数组下标查找是否有这名学生
if (index==-1)
{
printf("不存在%s同学的信息\n",num);
}
if(index!=-1)
{
printf("%s的信息为:\n",num);
DisplaySingle(index);
}
printf("是否继续查询操作?(y/n)");
getchar();
if (getchar()=='n')
{
system("cls");
break;
}
}
}
/*按总成绩排序*/
void paixu()
{
system("cls");
int i,j;
struct Student t;
for (i=0;i<num;i++)
{
for (j=1;j<num-i;j++)
{
if (students[j-1].sum<students[j].sum)
{
t=students[j-1];
students[j-1]=students[j];
students[j]=t;
}
}
}
printf("\n");
printf("\n");
printf("\n");
}
/*显示学生信息*/
void Display()
{
system("cls");
int i;
printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名"," 高数成绩 "," 英语成绩 "," 体育成绩 ","总成绩");
printf("------------------------------------------------------------------\n");
for (i=0;i<num;i++)
{
printf("%10s%10s%10.2f%10.2f%12.2f%12.2f\n",students[i].ID,students[i].Name,
students[i].Math,students[i].English,students[i].PE,students[i].sum);
}
printf("\n");
printf("\n");
printf("\n");
printf("\n");
}
/*将学生信息写入文件*/
void WriteIn()
{
FILE *fp;
int i;
if ((fp=fopen("Database.txt","wb"))==NULL)
{
printf("不能打开文件!\n");
return;
}
if (fwrite(&num,sizeof(int),1,fp)!=1)
{
printf("写入文件错误!\n");
}
for (i=0;i<num;i++)
{
if (fwrite(&students[i],sizeof(struct Student),1,fp)!=1)
{
printf("写入文件错误!\n");
}
}
fclose(fp);
}
/*将学生信息从文件读出*/
void ReadIn()
{
FILE *fp;
int i;
if ((fp=fopen("Database.txt","rb"))==NULL)
{
printf("不能打开文件!\n");
return;
}
if (fread(&num,sizeof(int),1,fp)!=1)
{
num=-1;
}
else
{
for(i=0;i<num;i++)
{
fread(&students[i],sizeof(struct Student),1,fp);
}
}
fclose(fp);
}
有不懂的内容问我QQ:1816002714