#include #include"process.h" #include"ctype.h" typedef struc,咨信网zixin.com.cn" /> #include #include"process.h" #include"cty"/>
收藏 分销(赏)

C语言学生成绩标准管理系统源程序.doc

上传人:w****g 文档编号:2827606 上传时间:2024-06-06 格式:DOC 页数:20 大小:48.04KB 下载积分:10 金币
下载 相关 举报
C语言学生成绩标准管理系统源程序.doc_第1页
第1页 / 共20页
C语言学生成绩标准管理系统源程序.doc_第2页
第2页 / 共20页


点击查看更多>>
资源描述
附录程序 #include"stdio.h" #include<stdlib.h> #include<string.h> #include"process.h" #include"ctype.h" typedef struct { char num[10]; char name[10]; int chinese; int math; int english; int dianlu; double aver; }Student; Student stu[99]; int shuru(Student stud[],int n)/*输入若干条统计*/ { int i=0; char sign,x[10]; double a=0.0; while(sign!='n'&&sign!='N') { printf("输入学生学号:"); scanf("%s",stu[n+i].num); printf("输入学生姓名:"); scanf("%s",stu[n+i].name); printf("输入学生语文、数学、英语、电路分数:"); scanf("%d%d%d%d",&stu[n+i].chinese,&stu[n+i].math,&stu[n+i].english,&stu[n+i].dianlu); a=1.0*(stu[n+i].chinese+stu[n+i].math+stu[n+i].english+stu[n+i].dianlu)/4; stu[n+i].aver=a; gets(x); /*清除多出输入*/ printf("是否继续输入?(Y/N):\n"); scanf("%c",&sign); i++; } return(n+i); } void xianshi(Student stud[],int n) /*显示全部统计*/ { int i ; printf("----------------------------------------------------------\n"); /*格式头*/ printf("学号 姓名 语文 数学 英语 电路 平均成绩 \n"); printf("----------------------------------------------------------\n"); for(i=0;i<n;i++) { printf("%-10s%-10s%-10d%-10d%-10d%-10d%-10.2lf\n",stu[i].num,stu[i].name,stu[i].chinese,stu[i].math,stu[i].english,stu[i].dianlu,stu[i].aver); } } void xiugai(Student stud[],int n)/*修改*/ { int i=0,choice=1; char x[10]; while(choice!=0) { printf("请输入您要修改学生学号:\n"); scanf("%s",x); for(i=0;;i++) { if(strcmp(stu[i].num,x)==0) break; } printf("请选择您要修改内容:\n"); printf(" ---------------------- \n"); printf("| 姓名 请按 1 |\n"); printf("| 语文 请按 2 |\n"); printf("| 数学分数 请按 3 |\n"); printf("| 英语分数 请按 4 |\n"); printf("| 电路 请按 5 |\n"); printf("| 退出 请按 0|\n"); printf("+----------------------+\n"); printf("请输入您选择:"); scanf("%d", &choice); switch(choice) { case 0:break; case 1: printf("请输入新姓名:"); scanf("%s", stu[i].name); break; case 2: printf("请输入新语文分数:"); scanf("%d", &stu[i].chinese); break; case 3: printf("请输入新数学分数:"); scanf("%d",&stu[i].math); break; case 4: printf("请输入新英语分数:"); scanf("%d", &stu[i].english); break; case 5: printf("请输入新电路分数:"); scanf("%d", &stu[i].dianlu); break; default: printf("\n无效选项!"); break; } break; } return; } int shanchu(Student stud[],int n) /*按姓名查找,删除一条统计*/ { char s[20]; int i; int j; i=0; printf("输入要删除统计姓名:"); scanf("%s",s); while(strcmp(stu[i].name,s)!=0&&i<n) i++; if(i==n) {printf("not find!\n"); return(n); } for(j=i;j<n-1;j++) /*删除操作*/ { strcpy(stu[j].num,stu[j+1].num); strcpy(stu[j].name,stu[j+1].name); stu[j].chinese=stu[j+1].chinese; stu[j].math=stu[j+1].math; stu[j].english=stu[j+1].english; stu[j].dianlu=stu[j+1].dianlu; stu[j].aver=stu[j+1].aver; } printf("Delete Successed!\n"); return(n-1); } void chaxun_xingming(Student stud[],int n) /*按姓名查找并显示一个统计*/ { char s[20]; int i=0; printf("输入姓名:"); scanf("%s",s); while(strcmp(stu[i].name,s)!=0&&i<n) i++; /*查找判定*/ if(i==n) {printf("not find!\n"); /*输入失败信息*/ return; } printf("她姓名、学号是:%s %s\n",stu[i].name,stu[i].num); /*输出该学生信息*/ printf("语文 高数 英语 电路 平均成绩是:%d,%d,%d,%d,%lf\n",stu[i].chinese,stu[i].math,stu[i].english,stu[i].dianlu,stu[i].aver); } void chaxun_pingjun(Student stud[],int n) /*按平均成绩查找并显示一个统计*/ { double s; int i=0; printf("输入平均成绩:"); scanf("%lf",&s); while(stu[i].aver!=s && i<n) i++; if(i==n) { printf("not find!\n"); /*输入失败信息*/ return; } printf("她学号是:%s\n",stu[i].num); /*输出该学生信息*/ printf("她姓名是:%s\n",stu[i].name); printf("她语文、数学、英语、电路分数是:%d %d %d %d \n",stu[i].chinese,stu[i].math,stu[i].english,stu[i].dianlu); } void paixu_xuehao(Student stud[],int n) /*按学号排序*/ { int i,j,p,q,r,w; double y; char x[20],t[10]; for(i=0;i<n-1;i++) /*冒泡法排序*/ for(j=0;j<n-1-i;j++) if(strcmp(stud[j].num,stud[j+1].num)>0) { strcpy(t,stud[j].num); strcpy(stud[j].num,stud[j+1].num); strcpy(stud[j+1].num,t); strcpy(x,stud[j].name); strcpy(stud[j].name,stud[j+1].name); strcpy(stud[j+1].name,x); y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y; p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q; r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w; } return; } void paixu_pingjun(Student stud[],int n) /*按平均成绩排序*/ { int i,j,p,q,r,w; double y; char x[20],t[10]; for(i=0;i<n-1;i++) /*冒泡法排序*/ for(j=0;j<n-1-i;j++) if(stu[j].aver>stu[j+1].aver) { y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y; p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q; r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w; strcpy(x,stu[j].name); strcpy(stu[j].name,stu[j+1].name); strcpy(stu[j+1].name,x); strcpy(t,stu[j].num); strcpy(stu[j].num,stu[j+1].num); strcpy(stu[j+1].num,t); } return; } void paixu_chinese(Student stud[],int n) /*按语文成绩排序*/ { int i,j,p,q,r,w; double y; char x[20],t[10]; for(i=0;i<n-1;i++) /*冒泡法排序*/ for(j=0;j<n-1-i;j++) if(stu[j].chinese>stu[j+1].chinese) { y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y; p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q; r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w; strcpy(x,stu[j].name); strcpy(stu[j].name,stu[j+1].name); strcpy(stu[j+1].name,x); strcpy(t,stu[j].num); strcpy(stu[j].num,stu[j+1].num); strcpy(stu[j+1].num,t); } return; } void paixu_english(Student stud[],int n) /*按英语成绩排序*/ { int i,j,p,q,r,w; double y; char x[20],t[10]; for(i=0;i<n-1;i++) /*冒泡法排序*/ for(j=0;j<n-1-i;j++) if(stu[j].english>stu[j+1].english) { y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y; p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q; r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w; strcpy(x,stu[j].name); strcpy(stu[j].name,stu[j+1].name); strcpy(stu[j+1].name,x); strcpy(t,stu[j].num); strcpy(stu[j].num,stu[j+1].num); strcpy(stu[j+1].num,t); } return; } void paixu_math(Student stud[],int n) /*按数学成绩排序*/ { int i,j,p,q,r,w; double y; char x[20],t[10]; for(i=0;i<n-1;i++) /*冒泡法排序*/ for(j=0;j<n-1-i;j++) if(stu[j].math>stu[j+1].math) { y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y; p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q; r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w; strcpy(x,stu[j].name); strcpy(stu[j].name,stu[j+1].name); strcpy(stu[j+1].name,x); strcpy(t,stu[j].num); strcpy(stu[j].num,stu[j+1].num); strcpy(stu[j+1].num,t); } return; } void paixu_dianlu(Student stud[],int n) /*按电路成绩排序*/ { int i,j,p,q,r,w; double y; char x[20],t[10]; for(i=0;i<n-1;i++) /*冒泡法排序*/ for(j=0;j<n-1-i;j++) if(stu[j].dianlu>stu[j+1].dianlu) { y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y; p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p; q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q; r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r; w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w; strcpy(x,stu[j].name); strcpy(stu[j].name,stu[j+1].name); strcpy(stu[j+1].name,x); strcpy(t,stu[j].num); strcpy(stu[j].num,stu[j+1].num); strcpy(stu[j+1].num,t); } return; } void tongji(Student stud[],int n)//按分数段统计人数 { int i,j,a,max,min,k,l,q,p,w; k=0,l=0,p=0,q=0,w=0; printf("你想统计哪科成绩: 1语文 2数学 3英语 4电路 5平均 \n"); scanf("%d",&j); printf("input 2 score:\n"); scanf("%d%d",&max,&min); if(max<min) { a=max;max=min;min=a; } if(j==1) { for(i=0;i<99;i++) { if(stu[i].chinese>min&&stu[i].chinese<max) k++; } printf("分数段人数为 :%d",k); } else if(j==2) { for(i=0;i<99;i++) { if(stu[i].math>min&&stu[i].math<max) l++; } printf("分数段人数为 :%d",l); } else if(j==3) { for(i=0;i<99;i++) { if(stu[i].english>min&&stu[i].english<max) p++; } printf("分数段人数为 :%d",p); } else if(j==4) { for(i=0;i<99;i++) { if(stu[i].dianlu>min&&stu[i].dianlu<max) w++; } printf("分数段人数为 :%d",w); } else if(j==5) { for(i=0;i<99;i++) { if(stu[i].aver>min&&stu[i].aver<max) q++; } printf("分数段人数为 :%d",q); } return; } int wenjian2(Student stud[],int n) /*从文件中读入数据*/ { int i=0,num; FILE *fp; /*定义文件指针*/ char filename[20]; /*定义文件名*/ printf("\t\t\tInput the filename:"); scanf("\t\t\t%s",filename); /*输入文件名*/ if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/ { printf("\t\t\tcann't open the file\n"); /*打开失败信息*/ printf("\t\t\t"); system("pause"); return(n); } fscanf(fp,"%d",&num); /*读入总统计量*/ while(i<num) /*循环读入数据*/ { fscanf(fp,"%s %s %d %d %d %d %lf\n",stu[n+i].num,stu[n+i].name,&stu[n+i].chinese,&stu[n+i].math,&stu[n+i].english,&stu[n+i].dianlu,&stu[n+i].aver); i++; } n+=num; fclose(fp); /*关闭文件*/ printf("\t\t\tSuccessed!\n"); printf("\t\t\t"); system("pause"); return(n); } void wenjian1(Student stud[],int n) /*将全部统计写入文件*/ { int i=0; FILE *fp; /*定义文件指针*/ char filename[20]; /*定义文件名*/ printf("Input the filename:");/*输入文件名*/ scanf("%s",filename); if((fp=fopen(filename,"w"))==NULL) /*打开文件*/ { printf("cann't open the file\n"); return; } fprintf(fp,"%d\n",n); /*循环写入数据*/ while(i<n) { fprintf(fp,"%s %s %d %d %d %d %lf\n",stu[i].num,stu[i].name,stu[i].chinese,stu[i].math,stu[i].english,stu[i].dianlu,stu[i].aver); i++; } fclose(fp); /*关闭文件*/ printf("Successed!\n"); /*返回成功信息*/ } int menu() /*菜单函数*/ { int c; do{ 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 0. 退出 \n"); printf("************************************************************\n"); printf("\t\t\t请选择(0-6):"); scanf("%d",&c); }while(c<0||c>6); return(c-0); /*返回选择*/ } int bianji() { printf("\t\t 1. 录入\n"); printf("\t\t 2 .修改\n"); printf("\t\t 3. 删除 \n"); printf("\t\t 按其它数字键退出 \n"); int i; scanf("%d",&i); return i; } int chaxun() { printf("\t\t 1. 按姓名查询\n"); printf("\t\t 2 .按平均成绩查询\n"); printf("\t\t 按其它数字键退出\n"); int i; scanf("%d",&i); return i; } int paixu() { 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"); int i; scanf("%d",&i); return i; } int wenjian() { printf("\t\t 1. 从文件中读入数据\n"); printf("\t\t 2 .将全部统计写入文件\n"); printf("\t\t 按其它数字键退出 \n"); int i; scanf("%d",&i); return i; } void main() /*主函数*/ { int n=0; for(;;) { for(;;) { switch(menu()) { case 1: switch(bianji()) { case 1:n=shuru(stu,n);xianshi(stu,n); break; case 2:xiugai(stu ,n);xianshi(stu,n); break; case 3:shanchu(stu ,n);xianshi(stu,n); break; } break; case 2:xianshi(stu,n);break; case 3: switch(chaxun()) { case 1:chaxun_xingming(stu,n);break; case 2:chaxun_pingjun(stu ,n);break; } break; case 4: switch(paixu()) { case 1:paixu_xuehao(stu,n);xianshi(stu,n); break ; case 2:paixu_chinese(stu ,n);xianshi(stu,n);break; case 3:paixu_math(stu ,n);xianshi(stu,n); break; case 4:paixu_english(stu ,n);xianshi(stu,n); break; case 5:paixu_dianlu(stu ,n);xianshi(stu,n); break; case 6:paixu_pingjun(stu ,n);xianshi(stu,n); break; } break; case 5:tongji(stu,n);break; case 6: switch(wenjian()) { case 1:n=wenjian2(stu,n);break; case 2:wenjian1(stu ,n);break; } break; case 0: exit(0); /*结束程序*/ } } } }
展开阅读全文

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


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服