收藏 分销(赏)

用c语言编写学生成绩标准管理系统.doc

上传人:a199****6536 文档编号:2720135 上传时间:2024-06-04 格式:DOC 页数:17 大小:41.04KB 下载积分:8 金币
下载 相关 举报
用c语言编写学生成绩标准管理系统.doc_第1页
第1页 / 共17页
用c语言编写学生成绩标准管理系统.doc_第2页
第2页 / 共17页


点击查看更多>>
资源描述
#include<stdio.h> //编译预处理指令 #include<string.h> //定义处理字符串函数 #include<process.h> //宏指令申明 #include<conio.h> //定义经过控制台进行数据输入和输出 #define N //最多人数人 #define M 3 //统计成绩 typedef struct student //定义类型 { char number[10]; //保留全部些人学号 char name[20]; //保留学生姓名 char sex[10]; //保留性别 float score[M]; //保留全部课程成绩 float aver; //保留每个人平均成绩 float total; //总计成绩 }STU; STU stu[N]; int n; void inputscore(void); //学生成绩新建 void savescore(void); //学生成绩保留 void avergescore(void); //学生平均成绩 void total(void); //学生成绩总计 void modifyscore(void); //学生成绩修改 void lookscore(void); //学生成绩查看 void searchscore(void); //学生成绩查询 void statistic(void); //学生成绩统计 void add(void); //学生成绩添加 void modify(void); //学生成绩修改 void delscore(void); //学生成绩删除 void menu(void); //学生成绩菜单 void main() { short int flag=0; menu(); do { flag=1; switch(getch()) { case '1' : inputscore();break; //在菜单界面输入1,调用i函数nputscore()实现输入学生成绩信息功效 case '2' : lookscore();break; //在菜单界面输入2,调用函数lookscore()实现学生成绩按平均分高低排序输出,同时lookscore()函数调用avregescore()函数实现各个学生平均分计算 case '3' : searchscore();break; //在菜单界面输入3,调用searchscore()函数实现经过学号查找学生成绩信息功效 case '4' : statistic();break; //在菜单界面输入4,调用statistic()函数输出每一门课程最高分,平均分和不及格人员 case '5' : modify();break; //在菜单界面输入5,调用modify()函数实现经过学号修改学生成绩功效 case '6' : add();break; //在菜单界面输入6,调用add()函数实现添加学生成绩 case '7' : delscore();break; //在菜单界面输入7,调用delscore()函数实现删除指定学生成绩 case '8' : savescore();break; //在菜单界面输入8,调用savescore()函数将学生成绩信息保留 case '9' :exit(0); break; //在菜单界面输入9,退出成绩管理系统 default : printf("输入有误\n"); } printf("按任意键继续\n"); getch(); //按任意键继续,起到暂停作用,函数头文件conio.h已经定义过 menu(); // 菜单 }while (flag==1); } void menu(void) { system("cls"); //清屏 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(" ☆退出系统-------------------------------------9\n"); printf(" ★★★★★★★★★★★★★★★★★★★★★★★★\n"); printf(" 请输入您选择(1~9)\n"); } /***************输入各个同学学生信息******************************/ void inputscore(void) //输入成绩 { int i,j; system("cls"); //清屏专用,以下出现位置作用相同 printf(" 已经转到输入成绩菜单\n"); printf("请输入学生总数:\n"); scanf("%d",&n); printf("提醒:输入学号时请输入9位学生编号:图书借阅证上学号\n"); //因二维表上下需对正故有此要求 for(i=0;i<n;i++) { printf("\n"); printf("请输入第%d位学生学号:\n",i+1); scanf("%s",stu[i].number); //输入学生学号 printf("姓名:\n"); scanf("%s",stu[i].name); //输入学生名字 printf("请输入该学生性别\n"); scanf("%s",stu[i].sex); //输入性别 printf("请输入学生成绩:\n"); printf("高数分\t英语分\tC语言分\n"); for(j=0;j<M;j++) scanf("%f",&stu[i].score[j]); //输入高数、英语、C语言成绩 } printf(" 成功输入(按任意键继续后请输入8进行保留)\n"); } /*****************计算各个同学总分*****************************/ void total(void) { int i,j; //定义变量i,j;i用来表示学生个数,j则用来表示学生每门课分数 for(i=0;i<n;i++) { stu[i].total=0; for(j=0;j<M;j++) //M表示科目在头文件出已经定义 { stu[i].total+=stu[i].score[j]; } } } /*****************计算各个同学平均分*****************************/ void avergescore(void) { int i,j; //定义变量i,j;i用来表示学生个数,j则用来表示学生每门课分数 for(i=0;i<n;i++) { stu[i].aver=0; for(j=0;j<M;j++) //M表示科目在头文件出已经定义 { stu[i].aver+=stu[i].score[j]; } stu[i].aver=stu[i].aver/M; //计算平均分 } } /************查看学生成绩及依据平均分对学生进行排序*********************/ void lookscore(void) { int i,j,k; // i,j,k全部表示学生成绩比较用来调换次序 STU t; total(); // 此处用来对调用函数申明 avergescore(); system("cls"); // 清屏专用 printf(" 已经转到查看成绩及成绩排序菜单\n"); for(i=0;i<n-1;i++) { for(k=i,j=i+1;j<n;j++) if(stu[j].aver>stu[k].aver) k=j; if(k!=j) { t=stu[k]; stu[k]=stu[i]; stu[i]=t; } } printf("名次\t学号\t\t姓名\t性别\t高数分\t英语分\tC语言分\t总分\t平均分\n"); for(i=0;i<n;i++) { printf("%d\t%s\t%s\t%s\t",i+1,stu[i].number,stu[i].name,stu[i].sex); for(j=0;j<M;j++) printf("%4.2f\t",stu[i].score[j]); printf("%4.2f\t",stu[i].total); printf("%4.2f",stu[i].aver); printf("\n"); } } /*****************经过输入学号查找学生成绩***************************/ void searchscore(void) { char a[10]; //定义数组a类型可输入数字,字母或字符 int i,j; system("cls"); //清屏 printf(" 已经转到查询学生成绩菜单\n"); printf("请输入需查询学生学号\n"); scanf("%s",a); for(i=0;i<n;i++) { if(strcmp(a,stu[i].number)==0) //假如输入学号为真则输出相关信息 { printf("名次\t学号\t\t姓名\t性别\t高数分\t英语分\tC语言分\t总分\t平均分\n"); printf("%d\t%s\t%s\t%s\t",i+1,stu[i].number,stu[i].name,stu[i].sex); for(j=0;j<M;j++) printf("%4.2f\t",stu[i].score[j]); printf("%4.2f\t",stu[i].total); printf("%4.2f",stu[i].aver); printf("\n"); break; //找到该学生成绩信息后跳出for循环 } else printf("未找到该学生信息\n"); } } /*******统计学生成绩信息,计算出每一门课最高分****************/ void statistic() { int i,j=0,k=0,c1; char str[2]; float average[M],sum=0; printf("没有可被查找统计\n"); // system("cls"); if(M==0) //假如没有输入成绩则输出没有可查找统计 printf("没有可被查找统计\n"); else { while(1) { printf("下面将统计考试成绩\n"); printf("请选择你要统计哪科成绩 1.高数\t2.英语\t3.C语言\n"); scanf("%d",&c1); printf("\t一共有%d个统计\n",M); /*总共统计数*/ switch(c1) { case 1: //用来判定高数最高分,平均分,输出不及格人员名单 for(i=0;i<M;i++) { sum+=stu[i].score[0]; if(stu[k].score[0]>stu[i].score[0]) k=i; if(stu[j].score[0]<stu[i].score[0]) j=i; } average[0]=sum/M; printf("\t高数最高分:\n"); printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stu[j].number,stu[j].name,stu[j].score[0]); printf("\t高数最低分是:\n"); printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stu[k].number,stu[k].name,stu[k].score[0]); printf("\t高数平均分是 %5.2f\n",average[0]); printf("平均分低于60分学生组员名单\n"); for(i=0;i<M;i++) { if(stu[i].score[0]<60) printf("%s\n",stu[i].name); } break; case 2: // 用来判定英语最高分,平均分,输出不及格人员名单 for(i=0;i<M;i++) { sum+=stu[i].score[1]; if(stu[k].score[1]>stu[i].score[1]) k=i; if(stu[j].score[1]<stu[i].score[1]) j=i; } average[1]=sum/M; printf("\t英语最高分:\n"); printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stu[j].number,stu[j].name,stu[j].score[1]); printf("\t英语最低分是:\n"); printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stu[k].number,stu[k].name,stu[k].score[1]); printf("\t英语平均分是 %5.2f\n",average[1]); printf("平均分低于60分学生组员名单\n"); for(i=0;i<M;i++) { if(stu[i].score[1]<60) printf("%s\n",stu[i].name); } break; case 3: //用来判定C语言最高分,平均分,输出不及格人员名单 for(i=0;i<M;i++) /*循环输入判定*/ { sum+=stu[i].score[2]; if(stu[k].score[2]>stu[i].score[2]) k=i; if(stu[j].score[2]<stu[i].score[2]) j=i; } average[2]=sum/M; printf("\tC语言最高分:\n"); /*最高分*/ printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stu[j].number,stu[j].name,stu[j].score[2]); printf("\tC语言最低分是:\n"); /*最低分*/ printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stu[k].number,stu[k].name,stu[k].score[2]); printf("\tC语言平均分是 %5.2f\n",average[2]); printf("平均分低于60分学生组员名单\n"); for(i=0;i<M;i++) { if(stu[i].score[2]<60) printf("%s\n",stu[i].name); } break; default: //假如输入数字不符合要求则显示错误信息 printf("输入错误!请输入1~3之间数\n"); } sum=0; getchar(); printf("是否继续进行统计?(y/n)"); gets(str); if(str[0]=='y'||str[0]=='Y') statistic(); else break; } } } /***************修改学生成绩*****************/ void modify(void) { char a[10]; int i,j; system("cls"); printf(" 已经转到修改成绩菜单\n"); printf("请输入需要修改成绩学生学号\n"); scanf("%s",a); for(i=0;i<n;i++) { if(strcmp(a,stu[i].number)==0) { printf("名次\t学号\t\t姓名\t性别\t高数分\t英语分\tC语言分\t总分\t平均分\n"); printf("%d\t%s\t%s\t%s\t",i+1,stu[i].number,stu[i].name,stu[i].sex); for(j=0;j<M;j++) printf("%4.2f\t",stu[i].score[j]); printf("%4.2f",stu[i].total); printf("%4.2f",stu[i].aver); printf("\n"); printf("请重新输入该学生姓名:\n"); scanf("%%s",stu[i].number); printf("\n"); scanf("%s",stu[i].name); printf("请输入该学生性别\n"); scanf("%s",stu[i].sex); printf("请重新输入该学生成绩:\n"); printf("高数分\t英语分\tC语言分\n"); for(j=0;j<M;j++) scanf("%f",&stu[i].score[j]); printf("修改成功\n"); break; //找到该学生成绩后进行修改,跳出for循环 } else printf("请确定该学生是否为该校学生!\n"); } } /*****************添加学生成绩********************/ void add(void) { int a,i,j; //i定义为学生,j为学生分数,a代表加入学生数量 system("cls"); printf(" 已经转到添加成绩菜单\n"); printf("请输入新增加学生人数:\n"); scanf("%d",&a); n=n+a; for(i=n-a;i<n;i++) { printf("\n"); printf("请输入第%d位学生学号:\n",i+1); scanf("%s",stu[i].number); printf("姓名:\n"); scanf("%s",stu[i].name); printf("输入该学生性别\n"); scanf("%s",stu[i].sex); printf("请输入学生成绩:\n"); printf("高数分\t英语分\tC语言分\n"); for(j=0;j<M;j++) scanf("%f",&stu[i].score[j]); printf("添加成功\n"); } } /*******************删除学生成绩*************************/ void delscore(void) { int i,j,c; char m,a[10]; //m用来存放后面输入删除字母y或n system("cls"); printf(" 已经转到删除成绩菜单\n"); printf("请输入学生学号\n"); scanf("%s",a); for(i=0;i<n;i++) { if(strcmp(a,stu[i].number)==0) { printf("名次\t学号\t\t姓名\t性别\t高数分\t英语分\tC语言分\t总分\t平均分\n"); printf("%d\t%s\t%s\t%s\t",i+1,stu[i].number,stu[i].name,stu[i].sex); for(j=0;j<M;j++) printf("%4.2f\t",stu[i].score[j]); printf("%4.2f\t",stu[i].total); printf("%4.2f",stu[i].aver); printf("\n"); c=i; break; } else printf("未找到该学生信息\n"); } printf("是否删除该学生成绩(y/n)\n"); scanf("%s",&m); if(m=='y') { for(i=c;i<n-1;i++) stu[i]=stu[i+1]; //结构体整体赋值将后一位学生成绩信息拷贝进入前一位学生信息存放位置 n=n-1; //删除该学生信息后学生总数减一 printf("删除成绩成功\n"); } else printf("删除成绩失败\n"); } /******************保留学生成绩************************/ void savescore(void) { FILE *fp; //定义指针 int i,flag=1; char m; system("cls"); printf(" 已经转到保留成绩菜单\n"); puts("是否保留学生成绩(y/n)"); scanf("%s",&m); if(m=='y') { if((fp=fopen("score.dat","wb"))==NULL) //从文件score中打开 { printf("文件打开失败\n"); return; } for(i=0;i<n;i++) if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1) //学生成绩写入 { printf("保留失败\n"); flag=0; } if(flag==1) printf("保留成功!\n"); fclose(fp); //界面关闭 } else return; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服