#include
#include
#include
#include
#define MAX 1000
void input();
void sort(); /*排序数据函数*/
void display(); /*显示数据函数*/
void display1(); /*显示各科成绩函数*/
void display2(); /*按班级显示*/
void fail(); /*不及格科目和学生*/
void insert(); /*插入数据函数*/
void del(); /*删除数据函数*/
void average(); /*平均值函数*/
void find(); /*查找数据函数*/
void save(); /*保存数据函数*/
void read(); /*读出数据函数*/
void del_file(); /*删除文件函数*/
void modify(); /*修改文件函数*/
int now_no=0;
struct student //定义学生信息
{
int no; //学号
char name[20]; //姓名
char grade[20]; //班别
char term[20]; //年级
float score1; //语文
float score2; //数学
float score3; //英语
float score4; //计算机
float sort; //排序成绩
float ave; //平均分
float sum; //总分
};
struct student stu[MAX],*p;
void main() /*主函数*/
{
int as;
char ch;
do
{
start: printf("\n\n\n\n\n\n\t\t\t 欢迎使用学生成绩管理系统\n");
printf("\n\n\n\n\n\n\t\t******************按任意键继续********************");
ch=getch();
}
while(!ch);
system("cls"); /*清屏*/
/*以下为功能选择模块*/
do
{
printf("\n\t$ ******************************菜单*************************** $\n");
printf("\n\t$\t录入学生信息-------------------->\t1 \t$");
printf("\n\t$\t显示学生总成绩信息-------------------->\t2 \t$");
printf("\n\t$\t对总成绩排序-------------------->\t3 \t$");
printf("\n\t$\t显示学生单科成绩排序-------------------->\t4 \t$");
printf("\n\t$\t添加学生信息-------------------->\t5 \t$");
printf("\n\t$\t删除学生信息-------------------->\t6 \t$");
printf("\n\t$\t修改学生信息-------------------->\t7 \t$");
printf("\n\t$\t查询学生信息-------------------->\t8 \t$");
printf("\n\t$\t从文件读入学生信息-------------------->\t9 \t$");
printf("\n\t$\t删除文件中学生信息------------------- >\t10\t$");
printf("\n\t$\t保存学生信息-------------------->\t11\t$");
printf("\n\t$\t显示不及格情况-------------------->\t12\t$");
printf("\n\t$\t按班级显示-------------------->\t13\t$");
printf("\n\t$\t退出-------------------->\t14\t$");
printf("\n\n\t$ ************************************************************* $");
printf("\n选择功能选项(输入所选功能前的数字):");
fflush(stdin);
scanf("%d",&as);
switch(as)
{
case 1:system("cls");
input();
break;
case 2:system("cls");
display();
break;
case 3:system("cls");
sort();
break;
case 4:system("cls");
display1();
break;
case 5:system("cls");
insert();
break;
case 6:system("cls");
del();
break;
case 7:system("cls");
modify();
break;
case 8:system("cls");
find();
break;
case 9:system("cls");
read();
break;
case 10:system("cls");
del_file();
break;
case 11:system("cls");
save();
break;
case 12:system("exit");
fail();
break;
case 13:system("exit");
display2();
break;
case 14:system("cls");
exit(0);
default:system("cls");
goto start;
}
}while(1); /*while(1)表示永远循环下去*/
/*至此功能选择模块结束*/ }
void input() /*学生信息录入模块*/
{
int i=0;
char ch;
do
{
printf("\t\t\t\t1.录入学生信息\n输入第%d个学生的信息\n",i+1);
printf("请输入学期:");
fflush(stdin);
gets(stu[i].term);
printf("输入学生班别:");
fflush(stdin);
gets(stu[i].grade);
printf("输入学生学号:");
scanf("%u",&stu[i].no);
fflush(stdin);
printf("输入学生姓名:");
fflush(stdin);
gets(stu[i].name);
printf("输入学生语文成绩:");
scanf("%f",&stu[i].score1);
printf("输入学生数学成绩:");
fflush(stdin);
scanf("%f",&stu[i].score2);
printf("输入学生英语成绩:");
fflush(stdin);
scanf("%f",&stu[i].score3);
printf("输入学生计算机成绩:");
fflush(stdin);
scanf("%f",&stu[i].score4);
printf("\n");
i++;
now_no=i;
printf("是否继续输入?(Y/N)");
fflush(stdin);
ch=getch();
}while(ch!='n'&&ch!='N');
system("cls");
}
void sort() /*排序数据函数*/ {
struct student temp;
int i,j;
average();
for(i=1;i { for(j=1;j<=now_no-i;j++) { if(stu[j-1].ave { temp=stu[j]; stu[j]=stu[j-1]; stu[j-1]=temp; } } printf("排序已完成进入可进行显示\n"); system("pause"); system("cls"); } void sort1() /*排序数据函数*/ { struct student temp; int i,j; for(i=1;i { for(j=1;j<=now_no-i;j++) { if(stu[j-1].score1 { temp=stu[j]; stu[j]=stu[j-1]; stu[j-1]=temp; } } } } void sort2() /*排序数据函数*/ { struct student temp; int i,j; for(i=1;i { for(j=1;j<=now_no-i;j++) { if(stu[j-1].score2 { temp=stu[j]; stu[j]=stu[j-1]; stu[j-1]=temp; } } } } void sort3() /*排序数据函数*/ { struct student temp; int i,j; for(i=1;i for(j=1;j<=now_no-i;j++) { if(stu[j-1].score3 { temp=stu[j]; stu[j]=stu[j-1]; stu[j-1]=temp; } } } } /*排序数据函数*/ void sort4() { struct student temp; int i,j; for(i=1;i { for(j=1;j<=now_no-i;j++) { if(stu[j-1].score4 { temp=stu[j]; stu[j]=stu[j-1]; stu[j-1]=temp; } } } } /*排序数据函数*/ void display() /*显示数据函数*/ { int i; char as; average(); do { printf("\t\t\t\t班级学生信息列表\n\n"); printf("学期\t班别\t学号\t姓名\t语文\t数学\t英语\t计算机\t总分\t平均值\n"); for(i=0;i printf("%s\t%s\t%u\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].term,stu[i].grade,stu[i]. no,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4,stu[i].sum,stu[i].ave); printf("\t\t\t按任意键返回主菜单"); fflush(stdin); as=getch(); }while(!as); system("cls"); } void display1() /*显示数据函数*/ { int i; char as; do { printf("班级学生语文成绩排序:\n\n"); printf("\t班别\t学号\t姓名\t语文\n"); sort1(); for(i=0;i printf("\t%s\t%u\t%s\t%.2f\t\n",stu[i].grade,stu[i].no,stu[i].name,stu[i].score1); printf("班级学生数学成绩排序:\n\n"); printf("\t班别\t学号\t姓名\t数学\n"); sort2(); for(i=0;i printf("\t%s\t%u\t%s\t%.2f\t\n",stu[i].grade,stu[i].no,stu[i].name,stu[i].score2); printf("班级学生英语成绩排序:\n\n"); printf("\t班别\t学号\t姓名\t英语\n"); sort3(); for(i=0;i printf("\t%s\t%u\t%s\t%.2f\t\n",stu[i].grade,stu[i].no,stu[i].name,stu[i].score3); printf("班级学生计算机成绩排序:\n\n"); printf("\t班别\t学号\t姓名\t计算机\n"); sort4(); for(i=0;i printf("\t%s\t%u\t%s\t%.2f\t\n",stu[i].grade,stu[i].no,stu[i].name,stu[i].score4); printf("\t\t\t按任意键返回主菜单"); fflush(stdin); as=getch(); }while(!as); system("cls"); } void insert() /*插入数据函数*/ { char ch; int i; do { printf("\n输入新插入学生信息:\n"); printf("请输入学期:"); fflush(stdin); gets(stu[now_no].term); printf("输入学生班别:"); fflush(stdin); gets(stu[now_no].grade); printf("输入学生学号:"); scanf("%u",&stu[now_no].no); fflush(stdin); printf("输入学生姓名:"); fflush(stdin); gets(stu[now_no].name); printf("输入学生语文成绩:"); fflush(stdin); scanf("%f",&stu[now_no].score1); printf("输入学生数学成绩:"); fflush(stdin); scanf("%f",&stu[now_no].score2); printf("输入学生英语成绩:"); fflush(stdin); scanf("%f",&stu[now_no].score3); printf("输入学生计算机成绩:"); fflush(stdin); scanf("%f",&stu[now_no].score4); printf("\n"); now_no=now_no+1; sort(); printf("是否继续输入?(Y/N)"); fflush(stdin); ch=getch(); system("cls"); }while(ch!='n'&&ch!='N'); } void del() /*删除数据函数*/ { unsigned long inum; int i; printf("输入要删除学生的学号:"); fflush(stdin); scanf("%u",&inum); for(i=0;i { if(stu[i].no==inum) { if(i==now_no) now_no-=1; else { stu[i]=stu[now_no-1]; now_no-=1; } sort(); break; } } system("cls"); } void save() /*保存数据函数*/ { FILE *fp; int i; char filepath[20]; printf("输入要保存的文件路径:"); fflush(stdin); gets(filepath); if((fp=fopen(filepath,"wb"))==NULL) { printf("\n保存失败!"); exit(0); } for(i=0;i { stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3+stu[i].score4; stu[i].ave=stu[i].sum/4; fprintf(fp,"%s\t%s\t%u\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].term,stu[i].grade,stu[i].no,stu[i].nam e,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4,stu[i].sum,stu[i].ave); } fclose(fp); printf("学生信息已保存在%s中!\n",filepath); system("pause"); system("cls"); } void find() /*查询函数*/ { int i; char str[20],as; average(); do { printf("输入要查询的学生姓名:"); fflush(stdin); gets(str); for(i=0;i if(!strcmp(stu[i].name,str)) { printf("班别\t学号\t姓名\t语文\t数学\t英语\t计算机\t总分\t平均值\n"); printf("%s\t%u\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].grade,stu[i].no,stu[i].name,stu[i] .score1,stu[i].score2,stu[i].score3,stu[i].score4,stu[i].sum,stu[i].ave); } printf("\t\t\t按任意键返回主菜单"); fflush(stdin); as=getch(); }while(!as); system("cls"); } void average() /*求平均数*/ { int i; for(i=0;i { stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3+stu[i].score4; stu[i].ave=stu[i].sum/4; } } void modify() /*修改数据函数*/ { int i; char str[20]; printf("输入要修改的学生姓名:"); fflush(stdin); gets(str); for(i=0;i { if(!strcmp(stu[i].name,str)) { system("cls"); printf("\n\t\t输入修改后学生信息\n"); printf("\n输入学生学期:"); fflush(stdin); gets(stu[i].term); printf("\n输入学生学号:"); fflush(stdin); scanf("%u",&stu[i].no); printf("\n输入学生班别:"); fflush(stdin); gets(stu[i].grade); printf("\n输入学生语文成绩:"); fflush(stdin); scanf("%f",&stu[i].score1); printf("\n输入学生数学成绩:"); fflush(stdin); scanf("%f",&stu[i].score2); printf("\n输入学生英语成绩:"); fflush(stdin); scanf("%f",&stu[i].score3); printf("\n输入学生计算机成绩:"); fflush(stdin); scanf("%f",&stu[i].score4); printf("\n\n"); sort(); break; } } system("cls"); } void read() /*文件读取*/ { FILE *fp; int i; char filepath[20]; printf("输入要读入的文件路径:"); fflush(stdin); gets(filepath); if((fp=fopen(filepath,"r"))==NULL) { printf("找不到%s文件!\n",filepath); system("pause"); exit(0); } now_no=0; for(i=0;i { fscanf(fp,"%s\t%s\t%d\t%s\t%f\t%f\t%f\t%f\n",stu[i].term,stu[i].grade,&stu[i].no,stu[i].name ,&stu[i].score1,&stu[i].score2,&stu[i].score3,&stu[i].score4,&stu[i].sum,&stu[i].ave); now_no++; } fclose(fp); printf("保存的在文件%s中的所有信息已经读入!\n",filepath); system("pause"); /*按任意键继续*/ system("cls"); } void del_file() /*文件删除*/ { FILE *fp; char filepath[20]; printf("输入要删除的文件路径:"); fflush(stdin); gets(filepath); fp=fopen(filepath,"w"); fclose(fp); printf("保存的在文件%s中的所有信息已经删除!\n",filepath); system("pause"); system("cls"); } void fail() /*显示不及格情况*/ { int i; system("cls"); for(i=0;i { if(stu[i].score1<60||stu[i].score2<60||stu[i].score3<60||stu[i].score4<60) { printf("班级\t学号\t姓名"); printf("\t\t不及格科目"); printf("\n%s\t%d\t%s",stu[i].grade,stu[i].no,stu[i].name); if(stu[i].score1<60)printf("\t\t语文"); if(stu[i].score2<60)printf("\t\t数学"); if(stu[i].score3<60)printf("\t\t英语"); if(stu[i].score4<60)printf("\t\t计算机"); }printf("\n"); } system("pause"); system("cls"); } void display2() //按班级显示 { char ch[20]; int i; sort(); system("cls"); average(); printf("请输入要查询的班级:"); fflush(stdin); gets(ch); printf("\n查询结果:"); printf("\n班级\t学号\t姓名\t语文\t数学\t英语\t计算机\t总分\t平均分"); for(i=0;i { if(strcmp(stu[i].grade,ch)==0) { printf("\n%s\t%u\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f",stu[i].grade,stu[i].no,stu[i].name, stu[i].score1,stu[i].score1,stu[i].score3,stu[i].score4,stu[i].sum,stu[i].ave); } } printf("\n"); system("pause"); system("cls"); }