学生成绩管理系统
来源:互联网 发布:硬盘覆盖数据恢复 编辑:程序博客网 时间:2024/04/29 17:53
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<windows.h>typedef struct Student{ int id;//学号 char name[20];//名字 float a,b,c,sum,average;//三科分数,总和,平均数}Student;//#define size sizeof(Student)//结构体的大小,注释掉的文件操作需要使用#define MAXSIZE 100 //最大限制void savefile(Student student[],int n);//保存文件int readfile(Student student[],int n);//读取文件,返回学生数量值void mainmenu();//主菜单void admistermenu();//管理学生信息二级菜单void lookmenu();//查看学生信息二级菜单int MainMenu(Student student[],int n);//主菜单处理函数int AdmisterMenu(Student student[],int n);//管理学生信息二级菜单处理函数void LookMenu(Student student[],int n);//查看学生信息二级菜单处理函数int addstudent(Student student[],int n);//录入学生信息void modifystudent(Student student[],int n);//修改学生信息void showallstudent(Student student[],int n);//展示所有学生成绩int deletestudent(Student student[],int n);//删除学生信息void sortid(Student student[],int n);//按照学号排序void sortaverage(Student student[],Student std[],int n);//按照平均分排序void dengji(Student student[],int n);//成绩分析void geren(Student student[],int n);//查看个人成绩void last(Student student[],int n);//不及格学生名单//展示学生成绩信息表头void showtop(){ printf(" ----------------------------------------------------------------\n"); printf("\t\t\t序号\t学号\t姓名\tA\tB\tC\t总分\t平均分\n"); printf(" ----------------------------------------------------------------\n");}//展示所有学生成绩信息void showallstudent(Student student[],int n){ int i; system("cls"); printf("\n\n -----------------------------------学生信息管理系统---------------------------------\n\n\n"); printf("\t\t\t\t\t\t所有学生成绩表\n"); showtop(); for(i=0;i<n;i++) { printf("\t\t\t%d\t%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n",i+1,student[i].id,student[i].name,student[i].a,student[i].b,student[i].c,student[i].sum,student[i].average); printf(" ﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋\n"); }}//求所有人的学科总分void zstudent(Student student[],int n){ int i; float sum[3]={0}; float average[3]; for(i=0;i<n;i++) { sum[0]=sum[0]+student[i].a; sum[1]=sum[1]+student[i].b; sum[2]=sum[2]+student[i].c; } average[0]=sum[0]/n; average[1]=sum[1]/n; average[2]=sum[2]/n; if(n==0){} else{ printf("\t\t\t%s\t\t\t%.1f\t%.1f\t%.1f\n","学科总分",sum[0],sum[1],sum[2]); printf(" ﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋\n"); printf("\t\t\t%s\t\t\t%.1f\t%.1f\t%.1f\n","学科平均分",average[0],average[1],average[2]); printf(" ﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋\n"); }}//主菜单void mainmenu(){ system("cls");//刷新页面 printf("\n\n -----------------------------------学生信息管理系统---------------------------------\n\n\n"); printf(" ▉ ▉\n"); printf(" ▉ 1.管理学生信息 ▉\n"); printf(" ▉ 2.查询学生信息 ▉\n"); printf(" ▉ 0.退出系统 ▉\n"); printf(" ▉ ▉\n"); printf(" ▉ ▉\n\n\n");}//管理学生信息二级菜单void admistermenu(){ system("cls"); printf("\n\n -----------------------------------学生信息管理系统---------------------------------\n\n\n"); printf(" ▉ ▉\n"); printf(" ▉ 1.录入学生信息 ▉\n"); printf(" ▉ 2.修改学生信息 ▉\n"); printf(" ▉ 3.删除学生信息 ▉\n"); printf(" ▉ 0.返回主菜单 ▉\n"); printf(" ▉ ▉\n\n\n");}//查看学生信息二级菜单void lookmenu(){ system("cls"); printf("\n\n -----------------------------------学生信息管理系统---------------------------------\n\n\n"); printf(" ▉ 1.查看学生成绩 ▉\n"); printf(" ▉ 2.查看学生名次 ▉\n"); printf(" ▉ 3.查看成绩分析 ▉\n"); printf(" ▉ 4.查看个人成绩 ▉\n"); printf(" ▉ 5.查看不及格科目▉\n"); printf(" ▉ 0.返回主菜单 ▉\n\n\n");}//主菜单处理函数int MainMenu(Student student[],int n){ system("COLOR 75");//控制台颜色 int select; do{ mainmenu(); printf("请输入您的选项:"); scanf("%d",&select); while(select<0||select>2){ fflush(stdin);//清空缓冲区 printf("输入错误,请重新输入:"); scanf("%d",&select); } switch(select) { case 1: n=AdmisterMenu(student,n);//管理学生信息子菜单 break; case 2: LookMenu(student,n); break; } }while(select!=0); return n;}//管理学生信息二级菜单处理函数int AdmisterMenu(Student student[],int n){ int select; do{ admistermenu(); printf("请输入您的选项:"); scanf("%d",&select); while(select<0||select>3){ fflush(stdin); printf("输入错误,请重新输入:"); scanf("%d",&select); } switch(select) { case 1: n=addstudent(student,n);//录入学生信息 break; case 2: modifystudent(student,n); break; case 3: n=deletestudent(student,n); break; } }while(select!=0); return n;}//查看学生信息菜单处理函数void LookMenu(Student student[],int n){ int select; Student std[n]; do{ lookmenu(); printf("请输入您的选项:"); scanf("%d",&select); while(select<0||select>5){ fflush(stdin); printf("输入错误,请重新输入:"); scanf("%d",&select); } switch(select) { case 1: showallstudent(student,n);//学生成绩展示 zstudent(student,n);//总分平均分输出 system("pause"); break; case 2: sortaverage(student,std,n);//平均分排序展示 showallstudent(std,n); zstudent(student,n); system("pause"); break; case 3: dengji(student,n);//成绩分析展示 break; case 4: geren(student,n);//个人成绩查询 break; case 5: last(student,n);//不及格学生名单 break; } }while(select!=0);}//录入学生信息int addstudent(Student student[],int n){ int ID,i; char NAME[20]; float A,B,C; printf("请输入学生的学号:"); scanf("%d",&ID); for(i=0;i<n;i++)//防止学号重复 { if(student[i].id==ID){//学号已存在 printf("您输入的学号已存在!\n"); break; } } if(i==n)//输入的学号不存在 { printf("请输入学生的姓名:"); scanf("%s",&NAME); printf("请输入第一科的成绩:"); scanf("%f",&A); printf("请输入第二科的成绩:"); scanf("%f",&B); printf("请输入第三科的成绩:"); scanf("%f",&C); student[n].id=ID; strcpy(student[n].name,NAME); student[n].a=A; student[n].b=B; student[n].c=C; student[n].sum=A+B+C; student[n].average=(A+B+C)/3.0; n++; printf("录入成功!\n"); } sortid(student,n); savefile(student,n);//保存学生信息 system("pause");//暂停一下 return n;}//修改学生信息void modifystudent(Student student[],int n){ int ID,i,c; char y,NAME[20]; float A,B,C; printf("请输入您要修改的学生的学号:"); scanf("%d",&ID); for(i=0;i<n;i++) { if(student[i].id==ID)//查找学号对应的位置 { c=i; break; } } if(c==n) { printf("您输入的学号不存在!"); } else{ printf("请输入修改后的信息:\n"); printf("请输入学生的学号:"); scanf("%d",&ID); for(i=0;i<n;i++)//防止学号重复 { if((student[i].id==ID)&&(i!=c)){//学号已存在 printf("您输入的学号已存在!\n"); break; } } if(i==n)//输入的学号不存在 { printf("请输入学生的姓名:"); scanf("%s",&NAME); printf("请输入第一科的成绩:"); scanf("%f",&A); printf("请输入第二科的成绩:"); scanf("%f",&B); printf("请输入第三科的成绩:"); scanf("%f",&C); student[c].id=ID; strcpy(student[c].name,NAME); student[c].a=A; student[c].b=B; student[c].c=C; student[c].sum=A+B+C; student[c].average=(A+B+C)/3.0; printf("修改成功!\n"); sortid(student,n); savefile(student,n);//保存学生信息 } } system("pause");}//删除学生信息int deletestudent(Student student[],int n){ int ID,i,j; printf("请输入您需要删除的学生学号:"); scanf("%d",&ID); for(i=0;i<n;i++) { if(student[i].id==ID) { break; } } if(i==n){ printf("您输入学生学号不存在!\n"); } else{ for(j=i;j<n-1;j++){ student[j]=student[j+1]; } n--; printf("删除成功!\n"); savefile(student,n);//保存学生信息 } system("pause"); return n;}//按照学号排序void sortid(Student student[],int n){ Student temp; int i,j,s; for(i=0;i<n-1;i++)//简单选择排序 { s=i; for(j=i+1;j<n;j++) { if(student[s].id>student[j].id) { s=j; } } if(s!=i) { temp=student[s]; student[s]=student[i]; student[i]=temp; } }}//按照平均分降序排序void sortaverage(Student student[],Student std[],int n){ Student temp; int i,j,s; for(i=0;i<n;i++) { std[i]=student[i]; } for(i=0;i<n-1;i++)//简单选择排序 { s=i; for(j=i+1;j<n;j++) { if(std[s].average<std[j].average) { s=j; } } if(s!=i) { temp=std[s]; std[s]=std[i]; std[i]=temp; } }}//成绩分析void dengji(Student student[],int n){ int i; int n1[5]={0}; int n2[5]={0}; int n3[5]={0}; char d[5][20]={"优秀","良好","中等","及格","不及格"}; for(i=0;i<n;i++) { if(student[i].a>=90&&student[i].a<=100){ n1[0]++; } else if(student[i].a>=80&&student[i].a<90){ n1[1]++; } else if(student[i].a>=70&&student[i].a<80){ n1[2]++; } else if(student[i].a>=60&&student[i].a<70){ n1[3]++; } else{ n1[4]++; } } for(i=0;i<n;i++) { if(student[i].b>=90&&student[i].b<=100) n2[0]++; else if(student[i].b>=80&&student[i].b<90) n2[1]++; else if(student[i].b>=70&&student[i].b<80) n2[2]++; else if(student[i].b>=60&&student[i].b<70) n2[3]++; else n2[4]++; } for(i=0;i<n;i++) { if(student[i].c>=90&&student[i].c<=100) n3[0]++; else if(student[i].c>=80&&student[i].c<90) n3[1]++; else if(student[i].c>=70&&student[i].c<80) n3[2]++; else if(student[i].c>=60&&student[i].c<70) n3[3]++; else n3[4]++; } system("cls"); printf("\n\n -----------------------------------学生信息管理系统---------------------------------\n\n\n"); printf("\t\t\t\t\t\t学生成绩分析表\n"); printf(" ----------------------------------------------------------------\n"); printf("\t\t\t等级\t\tA\t\tB\t\tC\n"); printf(" ----------------------------------------------------------------\n"); for(i=0;i<5;i++) { printf("\t\t\t%s\t\t%d\t\t%d\t\t%d\n",d[i],n1[i],n2[i],n3[i]); printf("\t\t\t\t\t%d%%\t\t%d%%\t\t%d%%\n",100*n1[i]/n,100*n2[i]/n,100*n3[i]/n); printf(" ﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋\n"); } system("pause");}//个人成绩查询void geren(Student student[],int n){ int ID; printf("请输入要查询的学生学号:"); scanf("%d",&ID); int i; for(i=0;i<n;i++) { if(student[i].id==ID) { break; } } if(i==n){ printf("您输入的学生学号不存在!\n"); } else{ system("cls"); printf("\n\n -----------------------------------学生信息管理系统---------------------------------\n\n\n"); printf("\t\t\t\t\t\t学生成绩表\n"); showtop(); printf("\t\t\t%d\t%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n\n",i+1,student[i].id,student[i].name,student[i].a,student[i].b,student[i].c,student[i].sum,student[i].average); } system("pause");}//不及格学生名单void last(Student student[],int n){ char c[3][20]={"A","B","C"}; int nn[3][n]; int n1=0,n2=0,n3=0,i,max;//三科不及格人数 for(i=0;i<n;i++){ if(student[i].a<60) { nn[0][n1]=i; n1++; } if(student[i].b<60) { nn[1][n2]=i; n2++; } if(student[i].c<60) { nn[2][n3]=i; n3++; } } system("cls"); printf("\n\n -----------------------------------学生信息管理系统---------------------------------\n\n\n"); printf("\t\t\t\t\t\t不及格学生名单\n"); printf(" ----------------------------------------------------------------\n"); printf("\t\t\t\t\tA\t\tB\t\tC\n"); printf(" ----------------------------------------------------------------\n"); max=n1; if(max<n2){ max=n2; } if(max<n3){ max=n3; } for(i=0;i<max;i++) { if(i<n1){ printf("\t\t\t\t\t%s",student[nn[0][i]].name); } else{ printf("\t\t\t\t\t"); } if(i<n2){ printf("\t\t%s",student[nn[1][i]].name); } else{ printf("\t\t"); } if(i<n3) { printf("\t\t%s\n",student[nn[2][i]].name); } else{ printf("\t\t\t\n"); } printf(" ----------------------------------------------------------------\n"); } system("pause");}//保存文件void savefile(Student student[],int n){ FILE *fp; int i; if((fp=fopen("student.txt","w"))==0) { printf("ERROR!"); return ; } for(i=0;i<n;i++) { //写入到文件中 fprintf(fp,"%d\t%s\t%f\t%f\t%f\t%f\t%f\n",student[i].id,student[i].name,student[i].a,student[i].b,student[i].c,student[i].sum,student[i].average); } /* if((fp=fopen("student.dat","wb"))==NULL) { printf("ERROR!"); return ; } for(i=0;i<n;i++) { fwrite(&student[i],size,1,fp); } fwrite(student,size,n,fp);//写入文件 */ fclose(fp);}//读取文件int readfile(Student student[],int n){ FILE *fp; if((fp=fopen("student.txt","r"))==0) { printf("ERROR"); return 0; } //fscanf(fp,"%d\t%s\t%f\t%f\t%f\t%f\t%f\n",&student[n].id,student[n].name,&student[n].a,&student[n].b,&student[n].c,&student[n].sum,&student[n].average); while(!feof(fp)) { // n++; fscanf(fp,"%d\t%s\t%f\t%f\t%f\t%f\t%f\n",&student[n].id,student[n].name,&student[n].a,&student[n].b,&student[n].c,&student[n].sum,&student[n].average); n++; } /* if((fp=fopen("student.dat","rb"))==NULL) { printf("ERROR"); return 0; } fread(&student[i],size,1,fp); while(!feof(fp)) { n++; fread(&student[i],size,1,fp); } */ fclose(fp); return n;}int main(){ int n=0;//学生数量 Student student[MAXSIZE]; n=readfile(student,n);//读取学生信息 n=MainMenu(student,n); savefile(student,n);//保存学生信息 return 0;}
0 0
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 学生成绩管理系统
- 网页设计理念
- FineUi表格利用EF框架数据库分页
- cf-【Queue 】
- jquery和zepto有什么区别
- echo用法
- 学生成绩管理系统
- 魔术师发牌问题 java 实现
- 软件开发的功能性需求和非功能性需求
- 用Python写剪刀石头布小游戏
- angular的双向绑定原理
- bat 命令如何启动远程PC上的一个程序?
- scrapy源码分析(十一)----------下载器Downloader
- 【android 】守护进程的实现及进程拉活详解
- HttpServletResponse的字符字节输出流、编码、文件下载、Captcha图片与HttpServletRequest获取request数据表单非表单数据、重定向与转发