用c语言编写一个成绩管理系统
学生成绩管理系统(c语言)
成
绩
管
理
系
统
printf(" ____________________________ \n"); printf(" │ ★主菜单★ │\n"); printf(" │ 0 退出系统 │\n"); printf(" │ 1 成绩录入 │\n"); printf(" │ 2 成绩修改 │\n"); printf(" │ 3 成绩查询 │\n"); printf(" │ 4 成绩汇总 │\n"); printf(" │ 5 成绩输出 │\n"); printf(" │ 6 成绩排名 │\n"); printf(" │ 7 修改密码 │\n"); printf("  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \n"); printf("请输入您的选择(0,1,2,3,4,5,6,7):"); scanf("%d",&c); switch(c){ case 1:GradeInput(&student); break; case 2:GradeCorrect(student); break; case 3:GradeInquire(student); break; case 4:GradeCollect(student); break; case 5:GradeOutput(student); break; case 6:GradePaixu(student); break; case 7:CodeCorrect(); break; case 0: printf("\n 谢谢使用!\n"); } }while(c!=0); printf("学生成绩管理系统已退出!\n"); } void GradeCode() { FILE *fp; char s[20],yhname[20],mima[20],ch; int i,j=39,flag1=0,flag2=0; do{ system("cls"); printf("\n*************************** 欢 迎 登 陆 学 生 成 绩 管 理 系 统 *****************************\n");
c语言学生成绩管理系统代码
include<stdio.h>include<string.h>include<stdlib.h>define MAXN 100 //一个班最多的人数define MAXM 2 //成绩的课程门数int R;void input; //1.学生成绩新建void sort; //2.学生成绩插入void load; //3.学生成绩修改void print; //4.学生成绩删除void total; //5.学生成绩统计void search; //6.学生成绩查询void save; //7.学生成绩保存void end; //8.结束struct student{char name20; //保存全班姓名char num12; //保存全班学号float scoreMAXM; //保存全班所有课程成绩float sum; //保存全班每个人的总成绩float avg; //保存每个人的平均成绩};struct student sMAXN;struct http{char subject20; //保存全班所有课程};struct http cMAXM;void main //欢迎首界面{int select;l;system"color fC";printf"\n";printf"\n";printf"\n";printf"\n";printf" ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥\n";printf" \n";printf" \n";printf" 欢迎进入终极一班学生管理系统\n";printf" \n";printf" ︻┳═一 cf ... \n";printf" ┈━═☆甘总管的多塔生活∝╬══→ \n";printf" \n";printf" 凸^-^凸凸^-^凸凸^-^凸凸^-^凸凸^-^凸凸^-^凸凸^-^凸 \n";printf" ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥\n";printf" ╭v╮ ╔══╗╔╗ ╔╗╔╗╭'''╮\n";printf" ^o^╚╗╔╝║║╔═╦╦╦═╗║╚╝╠═╦╦╗~ : ~\n";printf" ~ : ~╔╝╚╗║╚╣║║║║╠╣╚╗╔╣║║║║~v ~\n";printf" ╚══╝╚═╩═╩═╩═╝╚╝╚═╩═╝ \n";printf"\n";printf"\n";printf" 请按任意键进入下一界面\n";printf"------------------------------------------------------------------\n";system"pause";system"color f2";system"color f1";system"color f3";system"color fE";system"color fB";system"color f5";system"color f9";system"color f6";system"color f1";system"color f3";system"color fE";system"color fB";system"color f5";system"color f9";system"color f6";system"color f1";system"color f3";system"color f5";system"color f9";system"color f6";system"color fD";system"pause";system"color fC";system"cls"; //上面是第一个界面while1{system"cls";printf" 欢迎进入终极一班学生管理系统\n";printf" \n";printf" ∝╬══→ 1.学生成绩新建囧rz 欢\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";printf"\n"; printf"\n 请输入您的选择编号;回车键继续:\n";printf" ---------------------------------------------------------------------------\n";scanf"%d";&select;do{ifselect<1||select>8{printf" 您输入有误;请重新输入;谢谢\n";scanf"%d";&select;}l=select;}whilel<1||l>8;switchselect{case 1:input;break; //1.学生成绩新建case 2:sort; break; //2.学生成绩插入case 3:load; break; //3.学生成绩修改case 4:print; break; //4.学生成绩删除case 5:total;break; //5.学生成绩统计case 6:search;break; //6.学生成绩查询case 7:save;break; //7.学生成绩保存case 8: end;break; //8.结束default:printf" 请按相应数学选择系统功能:";}}}void input //1学生成绩输入成绩模块{int i;j;b;float a=0;printf" 请输入该班同学的人数:\n";printf" 班同学的人数在1~%d之间:\n";MAXN;scanf"%d";&R;do{ifR<1||R>100{printf" 您输入有误;请重新输入;谢谢\n";scanf"%d";&R;}b=R;}whileb<1||b>100;fori=0;i<MAXM;i++{printf" 请输入该班同学的第%d门课程名称为:\n";i+1;scanf"%s"; &ci.subject;}fori=0;i<R;i++{printf" 请输入第%d个同学的姓名:\n";i+1;scanf"%s";&;printf" 请输入第%d个同学的学号:\n";i+1;scanf"%s";&si.num;printf" 请依次输入%d门学科的成绩:\n";MAXM;forj=0;j<MAXM;j++{printf" 请输入课程%s的成绩为:\n";cj.subject;scanf"%f";&si.scorej;a=a+si.scorej;}si.sum=a;si.avg=si.sum/MAXM;a=0;}}void sort //2学生成绩插入成绩模块{int i;j;k;b;float a=0;printf" 请输入要插入的学生的位置1~%d号:\n";R;printf" 第几个学生的位置之后:\n";scanf"%d";&k;do{ifk<1||k>R{printf" 您输入有误;请重新输入;谢谢\n";scanf"%d";&k;}b=k;}whileb<1||b>R;R=R+1;fori=R;i>k;i--{;;strcpysi.num;si-1.num;si.sum=si-1.sum;si.avg=si-1.avg;forj=0;j<MAXM;j++{si.scorej=si-1.scorej;}}printf" 请输入第%d个同学的姓名:\n";k+1;scanf"%s";&;printf" 请输入第%d个同学的学号:\n";k+1;scanf"%s";&sk.num;printf" 请依次输入%d门学科的成绩:\n";MAXM;forj=0;j<MAXM;j++printf" 请输入课程%s的成绩为:\n";&cj.subject;scanf"%f"; &sk.scorej;a=a+sk.scorej;}sk.sum=a;sk.avg=sk.sum/MAXM;}void load //3学生成绩修改{float a=0;hMAXM;int i;j;b;printf" 请输入修改学生的位置1~%d 号: \n";R;scanf"%d";&i;do{ifi<1||i>R{printf" 您输入有误;请重新输入;谢谢\n";scanf"%d";&i;}b=i;}whileb<1||b>R;printf" 请输入%d号的新学号: \n";i;scanf"%s";&;printf" 请输入%d号的新姓名: \n";i;scanf"%s";&si-1.num;forj=0;j<MAXM;j++{printf" 请输入课程%s的成绩为:\n";&cj.subject;scanf"%f";&hj;si-1.scorej =hj;a=a+si-1.scorej;si-1.sum=a;si-1.avg=si-1.sum/MAXM;}void print //4学生成绩删除{int i;j;k;b;printf" 请输入删除学生的位置1~%d 号:\n";R;scanf"%d";&k;do{ifk<1||k>R{printf" 您输入有误;请重新输入;谢谢\n";scanf"%d";&k;}b=k;}whileb<1||b>R;i=k-1;fori;i<R;i++{;si+;strcpysi.num;si+1.num;si.sum=si+1.sum;si.avg=si+1.avg;forj=0;j<MAXM;j++{si.scorej=si+1.scorej;}}R=R-1;printf"删除成功 \n";}void total //5.学生成绩统计{int i;j;float aMAXM;b=0;printf"学号:姓名:课程%s的分数:课程%s的分数: 总成绩:平均成绩:\n";c0.subject;c1.subject;fori=0;i<R;i++{printf"%s%10.2s%16.2f%16.2f%16.2f%16.2f\n";si.num;;si.score0 ;si.score1;si.sum;si.avg;}fori=0;i<MAXM;i++{forj=0;j<R;j++{b=b+sj.scorei;}ai=b/R;b=0;}fori=0;i<MAXM;i++{printf" 全班课程%s的平均分为:%f\n";ci.subject;ai;}printf"排序完毕.\n";system"pause";}void search //6查询成绩模块{int search1;int search2;int select;index;b;while1{printf" \n";printf" 1.按学号查询\n";printf" 2.按姓名查询\n";printf" 0.返回\n";printf" 请输入您的选择编号:\n";printf" \n";scanf"%d";&select;do{ifselect<0||select>2{printf" 您输入有误;请重新输入;谢谢\n";scanf"%d";&select;}b=select;}whileb<0||b>2;switchselect{case 1:index=search1; break;case 2:index=search2;break;case 0:return;}ifindex=-1{int i;printf" \n";printf" 学号:%s \n"; sindex.num;printf" 姓名:%s \n"; ;printf" 总成绩:%f \n"; sindex.sum;printf" 平均成绩:%f \n"; sindex.avg;fori=0;i<MAXM;i++printf" 课程%s的成绩为:%f \n"; ci.subject;sindex.scorei;printf" \n";}else printf"没有这个同学..\n";}}int search1 //按学号查询模块{int i;char s_num12;printf" 请输入要查询的学号:";scanf"%s";&s_num;fori=0;i<MAXN;i++ifstrcmpsi.num;s_num==0break;ifi<MAXNreturn i;else return -1;}int search2 //按姓名查询模块{int i;char s_name10;printf" 请输入要查询的姓名:";scanf"%s";&s_name;fori=0;i<MAXN;i++;s_name==0break;ifi<MAXNreturn i;else return -1;}void save//7保存成绩模块{FILE fp;int i;j;k=0;char filename20;printf"请输入文件名请以 .txt 结束: ";scanf"%s";filename;iffp=fopenfilename; "w"==NULL{printf"打开文件失败.\n";return;}fprintffp; "该班学生数和所修课程数分别为:%d;%d\n\n";R;MAXM; fprintffp; "该班所修的课程有:\n";forj=0;j<MAXM;j++fprintffp; "课程%d:%s\n";1+j;cj.subject;fprintffp; "下面是该班学生信息:\n\n";fori=0;i<R;i++{fprintffp; "学号:%s 姓名:%s\n";si.num;;forj=0;j<MAXM;j++{fprintffp; "%s:%5.2f\n";cj.subject;sk.scorej;}fprintffp; "学生总成绩:%5.2f\n学生平均成绩:%5.2f\n\n";si.sum;si.avg;k++;}fclosefp;printf"\n\n 保存成功\n\n\n\n";fclosefp;printf"保存完毕.\n";}void end //8.结束{system"cls";system"color f4";printf"\n";printf"\n";printf"\n";printf" █◣◢█◣◢█◣◢█▁▁\n";printf"█████████████\\//\n";printf"\n";printf"◢█████████████◣//\\\n";printf"\n";printf"◢███████████████◣ ̄▌ ̄\n";printf"\n";printf" ██●███●██▌ \n";printf"\n";printf" ██◣◢███◣◢██▌\n";printf"\n";printf" ◥█████◤^◥█████◤▌\n";printf"\n";printf" ◥████◣/\◢████◤◢██\n";printf"\n";printf"◢█████████████◢██◤\n";printf"\n";printf"◢████████████████ \n";printf"\n";printf" ██◤◢███◤◥███◣\n";printf"\n";printf" ◢███◤◥███◣\n";printf"\n";printf" ████████ \n";printf"\n";printf"\n";printf"\n\n 谢谢您的使用..BYE\n\n\n\n\n\n\n\n";system"color f2";system"color f1";system"color f3";system"color fE";system"color fB";system"color f5";system"color f9";system"color f6";system"color f1";system"color f3";system"color fE";system"color fB";system"color f5";system"color f9";system"color f6";system"color f1";system"color f3";system"color f5";system"color f9";system"color f6";exit0;}。
c语言学生成绩信息管理系统源代码
C语言学生成绩信息管理系统源代码一、概述在学校教学管理工作中,学生成绩信息管理是一个至关重要的环节。
为了方便高效地进行学生成绩信息的录入、查询和管理,我们可以利用C语言编写一个学生成绩信息管理系统。
本文将介绍该系统的源代码,并对其进行详细的解释和讲解。
二、系统功能需求1. 录入学生成绩信息2. 查询学生成绩信息3. 修改学生成绩信息4. 删除学生成绩信息5. 显示所有学生成绩信息三、系统源代码实现```c#include <stdio.h>#include <stdlib.h>#include <string.h>// 定义学生结构体typedef struct student {int id; // 学号char name[20]; // 尊称float score; // 成绩} Student;// 全局变量int count = 0; // 记录学生数量Student students[100]; // 学生数组// 录入学生成绩信息void inputStudentInfo() {printf("请输入学生学号:");scanf("d", students[count].id);printf("请输入学生尊称:");scanf("s", students[count].name); printf("请输入学生成绩:");scanf("f", students[count].score); count++;}// 查询学生成绩信息void queryStudentInfo(int id) {for (int i = 0; i < count; i++) {if (students[i].id == id) {printf("学生信息如下:\n");printf("学号:d\n", students[i].id);printf("尊称:s\n", students[i].name);printf("成绩:.2f\n", students[i].score);return;}}printf("未找到该学生信息!\n");}// 修改学生成绩信息void modifyStudentInfo(int id, char *name, float score) { for (int i = 0; i < count; i++) {if (students[i].id == id) {strcpy(students[i].name, name);students[i].score = score;printf("修改成功!\n");return;}}printf("未找到该学生信息!\n");}// 删除学生成绩信息void deleteStudentInfo(int id) {for (int i = 0; i < count; i++) {if (students[i].id == id) {for (int j = i; j < count - 1; j++) { students[j] = students[j + 1]; }count--;printf("删除成功!\n");return;}}printf("未找到该学生信息!\n");}// 显示所有学生成绩信息void displayAllStudentInfo() {if (count == 0) {printf("暂无学生信息!\n");return;}printf("学生成绩信息如下:\n");for (int i = 0; i < count; i++) {printf("学号:d,尊称:s,成绩:.2f\n", students[i].id, students[i].name, students[i].score);}}int m本人n() {int choice, id;char name[20];float score;while (1) {printf("欢迎使用学生成绩信息管理系统!\n");printf("1. 录入学生成绩信息\n");printf("2. 查询学生成绩信息\n");printf("3. 修改学生成绩信息\n");printf("4. 删除学生成绩信息\n");printf("5. 显示所有学生成绩信息\n");printf("6. 退出系统\n");printf("请选择操作:");scanf("d", choice);switch (choice) {case 1: // 录入学生成绩信息inputStudentInfo();break;case 2: // 查询学生成绩信息printf("请输入要查询的学生学号:"); scanf("d", id);queryStudentInfo(id);break;case 3: // 修改学生成绩信息printf("请输入要修改的学生学号:"); scanf("d", id);printf("请输入修改后的尊称:");scanf("s", name);printf("请输入修改后的成绩:");scanf("f", score);modifyStudentInfo(id, name, score); break;case 4: // 删除学生成绩信息printf("请输入要删除的学生学号:"); scanf("d", id);deleteStudentInfo(id);break;case 5: // 显示所有学生成绩信息displayAllStudentInfo();break;case 6: // 退出系统printf("感谢使用学生成绩信息管理系统!\n");exit(0);default:printf("请输入正确的操作!\n");}}return 0;}```四、系统运行效果1. 运行系统后,会出现一个菜单,根据需求选择相应的操作。
用C语言实现学生成绩管理系统
int j,i;
printf("\n\n\n\t\t输出按学号排序的成绩表");
headno=(linklist)malloc(sizeof(Nodest));
p->next=q->next;
q->next=p;
}
} p=input_record();
scanf("%s",);
for(i=1;i<=NUM;i++)
{
printf("\t\t %s:",kname[i]);
p=p->next;
if(p!=NULL)
{
p->next=p->next->next;
return hsort;
}
else
}
return head;
}
linklist input_record()
{
linklist p;
student x;
int i;
x.total=0;
p=NULL;
strcpy(s->stu.no,p->stu.no);
for(i=1;i<=NUM;i++)
s->stu.score[i]=p->stu.score[i];
getchar();
}
void del()
{
linklist p,key_delect();
char x[10];
printf("\t删除模块\n");
学生成绩管理系统C语言版
1、2、编一程序,能计算每个学生的总分和平均分。
3、编一程序,能按输入要求打印各门课程的最高分和最低分的同学。
4、编一程序,能将五个学生的成绩按总分进行降序排序。
5、编一程序,能删除一个学生的记录;6、编一程序,能增加一个学生的记录;建立一个菜单模式的学生信息管理系统,完成功能如下:一、建立主菜单*****学生信息管理系统*****1、输入学生信息2、输出学生信息3、计算每个同学成绩的总分与平均分4、对学生成绩进行排序5、输出每门功课最高分的同学信息6、输出每门功课最低分的同学信息7、退出系统主菜单界面:二、将综合练习一中的程序改写为子程序并能通过主菜单进行调用。
先上图开发环境windows 7,vc 6.0 开始贴代码:/*************** 张海山* 10软件2班* 安庆职业技术学院* QQ:136533295******************/#include"stdio.h"#include"stdlib.h"#include"malloc.h"#include"string.h"typedef struct lode{int id;char name[20];char sex[10];int score[4];struct lode *next;}lode,*linklist;linklist input(linklist head)//输入学生信息{char cmd='y';int t,i,l;char name[10];char sex[2];int score[3]={0};//int sum;linklist p;while(cmd=='y'||cmd=='Y'){p=(linklist)malloc(sizeof(lode));printf("请输入学生的编号\n");fflush(stdin);scanf("%d",&t);p->id=t;printf("请输入学生的姓名:\n");fflush(stdin);scanf("%s",p->name);/* l=strlen(p->name);p->sex[l]='\0';/* for(i=0;i<l;i++){p->name[i]=name[i];}*/printf("请输入学生的性别:\n");fflush(stdin);scanf("%s",p->sex);/* l=strlen(p->sex);p->sex[l]='\0';/* for(i=0;i<l;i++){p->sex[i]=sex[i];}*/fflush(stdin);printf("请依次输入学生的三门课成绩:\n");scanf("%d",&score[0]);p->score[0]=score[0];fflush(stdin);scanf("%d",&score[1]);p->score[1]=score[1];fflush(stdin);scanf("%d",&score[2]);p->score[2]=score[2];fflush(stdin);p->next=head->next;head->next=p;printf("是否继续(y)&返回主菜单(n) y&n\n");fflush(stdin);scanf("%c",&cmd);}return head;}linklist print(linklist head){linklist p;int i=1;p=head->next;printf("\t序号\t姓名\t性别\t英语\t数学\t语文\n");while(p!=NULL){printf("\t%d\t%s\t%s\t%d\t%d\t%d\n",p->id,p->name,p->sex,p->score[0],p->score[1],p->sco re[2]);p=p->next;/*if(p==NULL)break;printf("%d\n",i);*/}//printf("%d\n",i);//printf("i=%d\n",i);return 0;}void avg(linklist head){int sum=0;double avg=0;linklist p;p=head->next;while(p!=NULL){sum=0;sum=p->score[1]+p->score[2]+p->score[0];avg=sum/3;printf("%s的总分为:%d\t平均分为:%.2lf\n",p->name,sum,avg);p=p->next;}}void maxmin(linklist head){linklist p;intmax1=0,max1index,min1=head->next->score[0],min1index,max2=0,max2index,min2=head->nex t->score[1],min2index,max3=0,max3index,min3=head->next->score[2],min3index;p=head->next;while(p!=NULL){if(max1<(p->score[0])){max1=p->score[0];max1index=p->id;}if(min1>=(p->score[0])){min1=p->score[0];min1index=p->id;}if(max2<(p->score[1])){max2=p->score[1];max2index=p->id;}if(min2>=(p->score[1])){min2=p->score[1];min2index=p->id;}if(max3<(p->score[2])){max3=p->score[2];max3index=p->id;}if(min3>=(p->score[2])){min3=p->score[2];min3index=p->id;}p=p->next;}printf("英语:\n");p=head->next;while(p!=NULL){if((p->id)==max1index)printf("英语最高分为:%d\t姓名为:%s\n",p->score[0],p->name);if((p->id)==min1index)printf("英语最低分为:%d\t姓名为:%s\n",p->score[0],p->name);p=p->next;}printf("数学:\n");p=head->next;while(p!=NULL){if((p->id)==max2index)printf("数学最高分为:%d\t姓名为:%s\n",p->score[1],p->name);if((p->id)==min2index)printf("数学最低分为:%d\t姓名为:%s\n",p->score[1],p->name);p=p->next;}printf("语文:\n");p=head->next;while(p!=NULL){if((p->id)==max3index)printf("语文最高分为:%d\t姓名为:%s\n",p->score[2],p->name);if((p->id)==min3index)printf("语文最低分为:%d\t姓名为:%s\n",p->score[2],p->name);p=p->next;}}void rank(linklist head){linklist p;int i=0,j,k,n=0;int sum[100];p=head->next;while(p!=NULL){n++;sum[i]=p->score[1]+p->score[2]+p->score[0];i++;p=p->next;}printf("n=%d\n",n);for(i=1;i<6;i++){for(j=0;j<6-i;j++)if(sum[j]<sum[j+1]){k=sum[j];sum[j]=sum[j+1];sum[j+1]=k;}}printf("\t序号\t姓名\t性别\t英语\t数学\t语文\n");for(i=0;i<n;i++){p=head->next;while(p!=NULL){if(sum[i]==(p->score[1]+p->score[2]+p->score[0])){printf("\t%d\t%s\t%s\t%d\t%d\t%d\n",p->id,p->name,p->sex,p->score[0],p->score[1],p->sco re[2]);break;}p=p->next;}}}void add(linklist head){linklist p,q;p=head;q=(linklist)malloc(sizeof(lode));printf("请输入要插入学生的序号:\n");fflush(stdin);scanf("%d",&q->id);fflush(stdin);printf("请输入学生的姓名:\n");scanf("%s",q->name);fflush(stdin);printf("请输入学生性别:\n");scanf("%s",q->sex);fflush(stdin);printf("请依次输入学生的三门课成绩:\n");scanf("%d",&q->score[0]);fflush(stdin);scanf("%d",&q->score[1]);fflush(stdin);scanf("%d",&q->score[2]);fflush(stdin);q->next=NULL;while(p->next!=NULL){p=p->next;}p->next=q;//p->next=NULL;}void del(linklist head){linklist p,temp;int j;p=head->next;temp=head;printf("请输入要删除学生记录的序号:\n");scanf("%d",&j);while(p!=NULL){if(p->id!=j){p=p->next;temp=temp->next;}else{temp->next=p->next;free(p);break;}}}void main(){int cmd;linklist head;head=(linklist)malloc(sizeof(lode));head->next=NULL;do{printf("\n\n |***************学生成绩管理程序***************|\n");printf(" |----------------------------------------------|\n");printf(" | |\n");printf(" | 主菜单|\n");printf(" | |\n");printf(" |----------------------------------------------|\n");printf(" | |\n");printf(" | 请输入选择项目:|\n");printf(" | |\n");printf(" | 1、输入学生成绩|\n");printf(" | |\n");printf(" | 2、输出学生成绩|\n");printf(" | |\n");printf(" | 3、计算总成绩、平均成绩|\n");printf(" | |\n");printf(" | 4、求最高分、最低分|\n");printf(" | |\n");printf(" | 5、排序|\n");printf(" | |\n");printf(" | 6、增加记录|\n");printf(" | |\n");printf(" | 7、删除记录|\n");printf(" | |\n");printf(" | 0、退出系统|\n");printf(" | |\n");printf(" |----------------------------------------------|\n");scanf("%d",&cmd);switch(cmd){case 0:break; //退出系统case 1: input(head);break; //输入学生信息case 2: print(head);break; //输出学生信息case 3: avg(head);break; //求总成绩、平均数case 4: maxmin(head);break; //最高分case 5: rank(head);break; //排序case 6: add(head);break; //增加记录case 7: del(head);break; //删除记录default :printf("您输入错误!\n");}}while(cmd!=0);}因为是C语言版的要严格按照样子输入哦要不然就会出现不可预料的结果。
学生成绩管理系统c语言代码(供参考)
C程序学生管理系统以下是用c语言编写的学生成绩管理系统的简单代码,可以用vc运行(供参考)#include"stdio.h"#include"stdlib.h"#include"string.h"typedef struct student//定义学生{char name[10];int number;char sex[2];int math;int eglish;int clanguge;int average;}student;typedef struct unit//定义接点{student date;struct unit *next;}unit;unit* build()//建立链表并返回指针{unit *p;if((p=(unit*)malloc(sizeof(unit)))==NULL){ printf("=>初始化失败!");return 0;}else{p->next=NULL;p->date.number=0;//头结点存放学生人数printf("初始化成功!\n");return p;}}void add(unit *head)//增加学生{unit *p,*q;int m,n=0;q=head->next;p=(unit*)malloc(sizeof(unit));printf("=>请输入新生姓名!\n");gets(p->);fflush(stdin);printf("=>请输入学号!\n");while(n==0){scanf("%d",&m);fflush(stdin);if(q==NULL) n=1;while(q){if(q->date.number==m){printf("=>你输入的学号与已有同学的学号相同,请重新输入!\n");q=head->next;break;}else{q=q->next;if(q==NULL) n=1;}}}p->date.number=m;printf("=>请输入性别!\n");gets(p->date.sex);fflush(stdin);printf("=>请输入数学成绩\n");scanf("%d",&m);fflush(stdin);p->date.math=m;printf("=>请输入英语成绩\n");scanf("%d",&m);fflush(stdin);p->date.eglish=m;printf("=>请输入c语言成绩\n");scanf("%d",&m);fflush(stdin);p->date.clanguge=m;p->date.average=(p->date.math+p->date.eglish+p->date.clanguge );q=head->next;head->next=p;p->next=q;head->date.number++;}void deletion(unit *head)//删除一名学生{unit *p=head->next,*q=head;char N[10];printf("=>请输入你想删除的学生姓名!\n");gets(N);fflush(stdin);if(p==NULL)printf("=>系统无学生可删除!\n");while(p){if(strcmp(p->,N)==0){q->next=p->next;head->date.number--;printf("=>删除%s成功!\n",p->);free(p);break;}else{p=p->next;q=q->next;if(p==NULL)printf("=>你要删除的学生不存在,删除失败!\n");}}}int display(unit *head)//显示学生信息{unit *p=head->next;int m,n=0;char N[10];if(p==NULL){printf("=>系统无学生!\n");return 0;}while(n==0){printf("**************************************************************** **************\n");printf("=>请选择你的操作!\n");printf("=>\t\t\t1.显示所有\t2.按姓名查找\n\t\t\t3.按学号查找\t4.返回主菜单\n");scanf("%d",&m);fflush(stdin);switch(m){case 1:printf("\n=>该系统拥有%d名学生!\n\n",head->date.number);p=head->next;printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t综合\n\n");while(p){printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p->,p->date.number,p->date.sex,p->date.math,p->date.eglish,p->date.clanguge,p->date.average);p=p->next;}break;case 2:printf("=>请输入查找姓名!\n");gets(N);fflush(stdin);p=head->next;while(p){if(strcmp(p->,N)==0){printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t综合\n");printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p->,p->date. number,p->date.sex,p->date.math,p->date.eglish,p->date.clanguge,p->date.average);break;else{p=p->next;if(p==NULL)printf("=>你要查的学生不存在!");}}break;case 3: printf("=>请输入查找学号!\n");scanf("%d",&m);fflush(stdin);p=head->next;while(p){if(p->date.number==m){printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t综合\n");printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p->,p->date. number,p->date.sex,p->date.math,p->date.eglish,p->date.clanguge,p->date.average);break;}else{p=p->next;if(p==NULL)printf("=>你要查的学生不存在!\n");}}break;case 4:n=1;break;}}return 1;}int range(unit *head)//排序{unit *p=head,*q=head->next;int n,i,m=head->date.number;printf("**************************************************************** ***************\n");printf("\t\t\t1.按学号\t2.按成绩\n\n");printf("=>请选择操作!\n》");scanf("%d",&n);fflush(stdin);if(q==NULL){ printf("=>无学生可排序!\n");return 0;}switch(n){case 2:for(i=0;i<m;i++)//按总分排序{p=head;q=head->next;while(q->next){if((q->date.average)<(q->next->date.average)){p=p->next;q->next=p->next;p->next=q;}else{p=p->next;q=q->next;}}}break;case 1:for(i=0;i<=m;i++)//按学号排序{p=head;q=head->next;while(q->next){if((q->date.number)>(q->next->date.number)){p->next=q->next;p=p->next;p->next=q;}else{p=p->next;q=q->next;}}}break;}printf("=>排序成功!\n");return 1;}void menu(){printf("\n********************************* 主菜单***************************************\n");printf("\t\t\t1.新建系统\t2.添加学生\n\t\t\t3.删除学生\t4.查看信息\n\t\t\t5.排列顺序\t6.读取信息\n\t\t\t7.保存信息\t8.退出系统\n");printf("=>请选择你的操作!\n");}int save(unit *head)//保存{FILE *fp;unit *p;p=head;if((fp=fopen("d:\\学生","wb+"))==NULL){printf("=>保存失败!");return 0;}while(p){fwrite(&(p->date),sizeof(student),1,fp);p=p->next;}printf("=>保存成功!");fclose(fp);return 1;}unit* read()//读入系统学生信息{int i;unit *p,*q,*head;FILE *fp;if((head=(unit*)malloc(sizeof(unit)))==NULL){ printf("=>开辟空间失败!");exit(1);}else{head->next=NULL;head->date.number=0;//头结点存放学生人数}q=head;if((fp=fopen("d:\\学生","rb"))==NULL){printf("=>系统无学生!\n");return 0;}fread(&(q->date),sizeof(student),1,fp);for(i=0;i<head->date.number;i++){if((p=(unit*)malloc(sizeof(unit)))==NULL){ printf("=>读值失败!");exit(1);}fread(&(p->date),sizeof(student),1,fp);p->next=q->next;q->next=p;}fclose(fp);return head;}void main(){int m=0,n, i;unit *head;printf("******************************************************************** ************\n\n");printf("\t\t\t* 欢迎使用学生成绩管理系统* \n");printf("\n\t\t\t\t\t\t\t\t编译员:吹吹风\n\n");printf("=>正在读取系统信息......\n");if((head=read())==0){printf("=>是否新建?\n");printf("\t\t\t是(1)\t\t否(2)\n");scanf("%d",&i);fflush(stdin);if(i==1)head=build();else if(i==2)exit(1);}elseprintf("=>信息导入成功!");while(m==0){menu();scanf("%d",&n);fflush(stdin);switch(n){case 1: head=build();break;case 2:add(head);break;case 3:deletion(head);break;case 4:display(head);break;case 5: range(head);break;case 6:head=read();if(head!=0) printf("=>读取存盘成功!\n");break;case 7:save(head);break;case 8:m=1;break;}}}。
c语言课程设计学生成绩管理系统代码
学生成绩管理系统是一个常见的C语言入门项目,可以帮助初学者了解循环、条件控制、结构体、文件操作等基本知识。
以下是一个简单的C语言学生成绩管理系统示例,实现了查询、添加、修改和删除学生成绩等功能。
您可以修改和扩展该代码以满足您的需求:#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct {int id;char name[20];float score;} Student;void display_menu();void add_student();void find_student();void edit_student();void delete_student();void save_data();void load_data();int student_count = 0;Student students[100];int main() {load_data();while (1) {display_menu();int choice;printf("请输入您的选择:");scanf("%d", &choice);switch (choice) {case 1:find_student();break;case 2:add_student();break;case 3:edit_student();break;case 4:delete_student();break;case 5:save_data();printf("数据已保存。
\n");exit(0);default:printf("无效的选项!\n");}}return 0;}void display_menu() {printf("学生成绩管理系统\n");printf("====================\n");printf("1. 查询学生成绩\n");printf("2. 添加学生成绩\n");printf("3. 修改学生成绩\n");printf("4. 删除学生成绩\n");printf("5. 退出系统\n");printf("====================\n");}void add_student() {printf("请输入学生ID:");scanf("%d", &students[student_count].id); printf("请输入学生姓名:");scanf("%s", students[student_count].name); printf("请输入学生成绩:");scanf("%f", &students[student_count].score); student_count++;printf("学生已添加成功!\n");}void find_student() {int id;printf("请输入要查询的学生ID:");scanf("%d", &id);for (int i = 0; i < student_count; ++i) {if (students[i].id == id) {printf("ID:%d, 姓名:%s, 成绩:%.2f\n", students[i].id, students[i].name, students[i].score);return;}}printf("未找到该学生。
C语言课程设计 学生成绩管理系统
#include <stdio.h>#include <malloc.h>#include <string.h>#include <stdlib.h>typedef struct student /*定义一个单链表*/ {char sno[10];char name[10];int Chinese;int Math;int English;int sum;float avg;struct student *next;}student1,*grade;grade get_info(grade L) //输入学生信息{student1 *s,*p=NULL,*q;int flag,n,i;char choice='Y';while(choice!='N'&&choice!='n'){printf("\n请输入要录入的学生个数:");scanf("%d",&n);for(i=1;i<=n;i++){s=(student1 *)malloc(sizeof(student1));printf("\n请输入学生的学号:\n");scanf("%s",&s->sno);printf("\n请输入学生的姓名:\n");scanf("%s",&s->name);printf("\n请输入学生的语文成绩:\n");scanf("%d",&s->Chinese);printf("\n请输入学生的数学成绩:\n");scanf("%d",&s->Math);printf("\n请输入学生的英语成绩:\n");scanf("%d",&s->English);s->sum=s->Chinese+s->Math+s->English;s->avg=(float)s->sum/3;if(L!=NULL){q=L;p=L;while(q){flag=strcmp(q->sno,s->sno);if(flag==0){printf("该学生已存在!\n");break;}q=q->next;}if(flag!=0){while(p->next) p=p->next;p->next=s;p=s;s->next=NULL; /*尾结点的指针置空,下同!*/}}else{L=s;s->next=NULL;}}printf("\n是否继续?(Y/N或y/n):");scanf("%s",&choice);system("cls");}return L;}sno_select(grade L) /*按学生学号查找*/{student1 *p=L;char num[10],choice='Y';int i=1,flag;while(choice!='N'&&choice!='n'){printf("\n请输入该学生的学号:");scanf("%s",&num);while(p){flag=strcmp(p->sno,num);if(flag==0){printf("\n*************************************************************\n");printf("\t学号\t姓名\t语文\t数学\t英语\t总分\t平均分\n");printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);printf("***************************************************************\n");break;}else p=p->next;}if(flag) printf("\n不存在该学号的学生!\n\n");printf("继续查找?(Y/N或y/n):");scanf("%s",&choice);system("cls");}return 0;}grade_select(grade L) /*按分数段查询*/{int n,m,j,k=0,x=0,y=0;char choice='Y';student1 *p=L;while(choice!='N'&&choice!='n'){printf("\n可查找的科目的菜单如下:\n");printf("\t 1.语文 2.数学 3.英语\n");printf("请选择(输入序号即可):");scanf("%d",&j);printf("\n请输入一个分数段,即输入n,m的值(n<m):");scanf("%d%d",&n,&m);printf("\n*************************************************************\n");printf("\t学号\t姓名\t语文\t数学\t英语\t总分\t平均分\n");while(p){if(j==1){x=1;y=1;if(p->Chinese>=n&&p->Chinese<=m){printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);k=1;}}if(j==2){k=1;y=1;if(p->Math>=n&&p->Math<=m){printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);x=1;}}if(j==3){k=1;x=1;if(p->English>=n&&p->English<=m){printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);}}p=p->next;}printf("\n*************************************************************\n");if(L==NULL) printf("该系统还没有存放数据!\n\n");else{if(k==0) printf("没有学生的语文成绩在这个分数段上\n\n");if(x==0) printf("没有学生的数学成绩在这个分数段上\n\n");if(y==0) printf("没有学生的英语成绩在这个分数段上\n\n");}k=0;x=0;y=0;printf("继续查找?(Y/N或y/n):");scanf("%s",&choice);system("cls");}}statistics(grade L) /*统计函数*/{student1 *p=L;int i=0;char choice='N';float all_avg=0;while(choice!='Y'&&choice!='y'){while(p){all_avg=all_avg+p->avg;p=p->next;i++;}printf("\n===================================================\n");printf("该班级总人数为:%d\n",i);if(L==NULL) printf("该班级的平均分为:0\n");else printf("该班级的平均分为:%5.2f\n",all_avg/i);printf("===================================================\n");printf("\n退出?(Y或y):");scanf("%s",&choice);}system("cls");}grade delete_grade(grade L) /*删除指定学生成绩函数*/{student1 *p=L,*q=L;int i=1,flag;char choice='Y',num[10];while(choice!='N'&&choice!='n'){printf("\n===================================================\n");if(L==NULL) printf("该系统中不存在任何数据\n\n");else{printf("\n请输入想要删除的学生学号:");scanf("%s",&num);while(p){flag=strcmp(p->sno,num);if(flag==0){if(q==p){L=q->next;free(q);}else{while(q->next!=p) q=q->next;q->next=p->next;free(p);}break;}p=p->next;}if(flag) printf("\n不存在该学生");else printf("\n删除成功!");printf("\n===================================================\n");}p=L;q=L;printf("继续删除?(Y/N或y/n):");scanf("%s",&choice);system("cls");}return L;}asc_order_grade(grade L) /*升序排序函数*/{int k,x=1,n=0,m,y;float z;student1 *p,*q,*s=L;char t[10],choice;while(s) /*计算链表数据个数n*/{s=s->next;n++;}while(x){choice='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("****************************************\n");printf("请选择(输入菜单序号即可):");scanf("%d",&k);system("cls");if(k==1) /*按语文成绩升序排序*/{while(choice!='Y'&&choice!='y'){for(m=0;m<n-1;m++){p=L;while(p->next){q=p->next;if(p->Chinese>=q->Chinese){strcpy(t,p->sno); /*学号交换*/strcpy(p->sno,q->sno);strcpy(q->sno,t);strcpy(t,p->name); /*学号交换*/strcpy(p->name,q->name);strcpy(q->name,t);y=p->Chinese; /*语文成绩交换*/p->Chinese=q->Chinese;q->Chinese=y;y=p->Math; /*数学成绩交换*/p->Math=q->Math;q->Math=y;y=p->English; /*英语成绩交换*/p->English=q->English;q->English=y;y=p->sum; /*总成绩交换*/p->sum=q->sum;q->sum=y;z=p->avg; /*平均成绩交换*/p->avg=q->avg;q->avg=z;}p=p->next;}}p=L;printf("\n按语文成绩升序排序的最终结果为:\n");printf("\n*************************************************************\n");printf("\t学号\t姓名\t语文\t数学\t英语\t总分\t平均分\n");while(p){printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);p=p->next;}printf("\n*************************************************************\n");printf("\n\n");printf("退出?(Y或y)");scanf("%s",&choice);system("cls");}}else if(k==2) /*按数学成绩升序排序*/{while(choice!='Y'&&choice!='y'){for(m=0;m<n-1;m++){p=L;while(p->next){q=p->next;if(p->Math>=q->Math){strcpy(t,p->sno); /*学号交换*/strcpy(p->sno,q->sno);strcpy(q->sno,t);strcpy(t,p->name); /*学号交换*/strcpy(p->name,q->name);strcpy(q->name,t);y=p->Chinese; /*语文成绩交换*/p->Chinese=q->Chinese;q->Chinese=y;y=p->Math; /*数学成绩交换*/p->Math=q->Math;q->Math=y;y=p->English; /*英语成绩交换*/p->English=q->English;q->English=y;y=p->sum; /*总成绩交换*/p->sum=q->sum;q->sum=y;z=p->avg; /*平均成绩交换*/p->avg=q->avg;q->avg=z;}p=p->next;}}p=L;printf("\n按数学成绩升序排序的最终结果为:\n");printf("\n*************************************************************\n");printf("\t学号\t姓名\t语文\t数学\t英语\t总分\t平均分\n");while(p){printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);p=p->next;}printf("\n*************************************************************\n");printf("\n\n");printf("退出?(Y或y)");scanf("%s",&choice);system("cls");}}else if(k==3) /*按英语成绩升序排序*/{while(choice!='Y'&&choice!='y'){for(m=0;m<n-1;m++){p=L;while(p->next){q=p->next;if(p->English>=q->English){strcpy(t,p->sno); /*学号交换*/strcpy(p->sno,q->sno);strcpy(q->sno,t);strcpy(t,p->name); /*学号交换*/strcpy(p->name,q->name);strcpy(q->name,t);y=p->Chinese; /*语文成绩交换*/p->Chinese=q->Chinese;q->Chinese=y;y=p->Math; /*数学成绩交换*/p->Math=q->Math;q->Math=y;y=p->English; /*英语成绩交换*/p->English=q->English;q->English=y;y=p->sum; /*总成绩交换*/p->sum=q->sum;q->sum=y;z=p->avg; /*平均成绩交换*/p->avg=q->avg;q->avg=z;}p=p->next;}}p=L;printf("\n按英语成绩升序排序的最终结果为:\n");printf("\n*************************************************************\n");printf("\t学号\t姓名\t语文\t数学\t英语\t总分\t平均分\n");while(p){printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);p=p->next;}printf("\n*************************************************************\n");printf("\n\n");printf("退出?(Y或y)");scanf("%s",&choice);system("cls");}}else if(k==4) /*按总成绩升序排序*/ {while(choice!='Y'&&choice!='y'){for(m=0;m<n-1;m++){p=L;while(p->next){q=p->next;if(p->sum>=q->sum){strcpy(t,p->sno); /*学号交换*/strcpy(p->sno,q->sno);strcpy(q->sno,t);strcpy(t,p->name); /*学号交换*/strcpy(p->name,q->name);strcpy(q->name,t);y=p->Chinese; /*语文成绩交换*/p->Chinese=q->Chinese;q->Chinese=y;y=p->Math; /*数学成绩交换*/p->Math=q->Math;q->Math=y;y=p->English; /*英语成绩交换*/p->English=q->English;q->English=y;y=p->sum; /*总成绩交换*/p->sum=q->sum;q->sum=y;z=p->avg; /*平均成绩交换*/p->avg=q->avg;q->avg=z;}p=p->next;}}p=L;printf("\n按总成绩升序排序的最终结果为:\n");printf("\n*************************************************************\n");printf("\t学号\t姓名\t语文\t数学\t英语\t总分\t平均分\n");while(p){printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);p=p->next;}printf("\n*************************************************************\n");printf("\n\n");printf("退出?(Y或y)");scanf("%s",&choice);system("cls");}}else if(k==5) /*按平均绩升序排序*/{while(choice!='Y'&&choice!='y'){for(m=0;m<n-1;m++){p=L;while(p->next){q=p->next;if(p->avg>=q->avg){strcpy(t,p->sno); /*学号交换*/strcpy(p->sno,q->sno);strcpy(q->sno,t);strcpy(t,p->name); /*学号交换*/strcpy(p->name,q->name);strcpy(q->name,t);y=p->Chinese; /*语文成绩交换*/p->Chinese=q->Chinese;q->Chinese=y;y=p->Math; /*数学成绩交换*/p->Math=q->Math;q->Math=y;y=p->English; /*英语成绩交换*/p->English=q->English;q->English=y;y=p->sum; /*总成绩交换*/p->sum=q->sum;q->sum=y;z=p->avg; /*平均成绩交换*/p->avg=q->avg;q->avg=z;}p=p->next;}}p=L;printf("\n按平均成绩升序排序的最终结果为:\n");printf("\n*************************************************************\n");printf("\t学号\t姓名\t语文\t数学\t英语\t总分\t平均分\n");while(p){printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);p=p->next;}printf("\n*************************************************************\n");printf("\n\n");printf("退出?(Y或y)");scanf("%s",&choice);system("cls");}}else if(k==6){system("cls");break;}else printf("请输入正确的序号!!\n\n");}}void menu() /*菜单函数*/{printf("\t\t|----------------------------------------|\n");printf("\t\t| 欢迎进入学生成绩管理系统|\n");printf("\t\t|----------------------------------------|\n");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| 7.退出|\n");printf("\t\t|****************************************|\n"); }int main(){int i=10;grade L=NULL;while(i!=8){menu();printf("根据菜单,请输入想要执行的功能的数字代号:");scanf("%d",&i);system("cls");switch(i){case 1:L=get_info(L);break;case 2:sno_select(L);break;case 3:grade_select(L);break;case 4:statistics(L);break;case 5:L=delete_grade(L);break;case 6:asc_order_grade(L);break;case 7:printf("\n\n\t\t\t谢谢使用!\n\n\t\t\t 再见!\n");break;default:printf("请输入正确的序号!!\n\n");}}}。
C语言编写的简单的学生成绩管理系统收藏
#include<stdio.h>#include<string.h>struct student{int num;char name[20];int score;}stu[6];int i;void main(){void in();void xianshi();void paixu();void charu();void shanchu();void chaxian();void g(); int n;while(n!=8){printf("\n\t\t\t学生管理系统");printf("\n\t\t1:输入一个班的学生信息\n");printf("\t\t2:显示所有学生的信息\n");printf("\t\t3:按学号对所有学生排序\n");printf("\t\t4:插入一条学生信息按学号排好\n");printf("\t\t5:按姓名查找,并删除一条信息\n");printf("\t\t6:查找并显示一条信息\n");printf("\t\t7:求出全班平均成绩,显示最高分最低分\n");printf("\t\t8:退出系统\n");printf("输入选项代码:");scanf("%d",&n);switch(n){case 1:in();break;case 2:xianshi();break;case 3:paixu();break;case 4:charu();break;case 5:shanchu();break;case 6:chaxian();break;case 7:g();break;case 8:printf("谢谢使用!\n");break;break;}}getchar();}void in() /* 输入一个班的学生信息*/{for(i=0;i<5;i++){ printf("请输入学号姓名成绩:\n");scanf("%d%s%d",&stu[i].num,stu[i].name,&stu[i].score);}}void xianshi(){ int i;printf("学号姓名成绩\n");for(i=0;i<5;i++)printf("%d%10.2s%10d\n",stu[i].num,stu[i].name,stu[i].score);}void paixu()/* 按学号对所有信息排序*/{ int a[5]={0,1,2,3,4};int i,j,temp;for(i=0;i<4-j;i++)if(stu[a[i]].num>stu[a[i+1]].num){ temp=a[i];a[i]=a[i+1];a[i+1]=temp;}printf("顺序为:\n");printf("学号姓名成绩\n");for(i=0;i<5;i++)printf("%d%10.2s%10d\n",stu[a[i]].num,stu[a[i]].name,stu[a[i]].score); printf("\n");}void charu()/*插入一条学生信息按学号排列*/{int i;printf("请输入要插入学生的学号姓名成绩:");scanf("%d%s%d",&stu[5].num,stu[5].name,&stu[5].score);for(i=0;i<5;i++)printf("%d%s%d\n",stu[i].num,stu[i].name,stu[i].score);{int a[6]={0,1,2,3,4,5};int i,j,temp;for(j=0;j<5;j++){ for(i=0;i<5-j;i++)if(stu[a[i]].num>stu[a[i+1]].num){ temp=a[i];a[i]=a[i+1]; a[i+1]=temp; }}printf("顺序为:\n");printf("学号姓名成绩\n");for(i=0;i<6;i++)printf("%d%10.2s%10d\n",stu[a[i]].num,stu[a[i]].name,stu[a[i]].score); printf("\n");}}void shanchu() /*按姓名查找,并删除一条信息*/{ int j=0,i=0,flag=0;char a[20];printf("请输入要删除学生的姓名:");scanf("%s",&a);for(i=0;i<5;i++){ if(strcmp((stu[i].name),a)==0){ flag=i; break;;}}for(j=flag;j<5;j++){ stu[j].num=stu[j+1].num; strcpy(stu[j].name,stu[j+1].name); stu[j].score=stu[j+1].score;}printf("学号姓名成绩\n");for(i=0;i<5;i++)printf("%d%10.2s%10d\n",stu[i].num,stu[i].name,stu[i].score); }void chaxian()/* 查找并显示一条信息*/{int j=0,i=0,flag=0;char a[20];printf("请输入要查找学生的姓名:");scanf("%s",&a);for(i=0;i<5;i++){if(strcmp((stu[i].name),a)==0){ flag=i; break; }}printf("您要查找的学生信息为:\n");printf("学号姓名成绩\n");printf("%d%11.2s%11d\n",stu[i].num,stu[i].name,stu[i].score);}void g()/* 求出全班平均成绩,显示最高分最低分信息*/{ int a[5]={0,1,2,3,4};int i,j,temp;float total=0;double ave;for(i=0;i<5;i++){total=total+stu[i].score;}ave=total/5.0;printf("ave=%f\n",ave);for(j=0;j<4;j++){ for(i=0;i<4-j;i++)if(stu[a[i]].num>stu[a[i+1]].num){ temp=a[i];a[i]=a[i+1]; a[i+1]=temp; } }printf("最高成绩为:\n");printf("学号姓名成绩\n");printf("%d%11.2s%11d\n",stu[a[4]].num,stu[a[4]].name,stu[a[4]].score); printf("最低成绩为:\n");printf("学号姓名成绩\n");printf("%d%11.2s%11d\n",stu[a[0]].num,stu[a[0]].name,stu[a[0]].score); }。
学生成绩管理系统c语言代码(供参考)
C程序学生管理系统以下是用c语言编写的学生成绩管理系统的简单代码,可以用vc运行(供参考)#include"stdio.h"#include"stdlib.h"#include"string.h"typedef struct student//定义学生{char name[10];int number;char sex[2];int math;int eglish;int clanguge;int average;}student;typedef struct unit//定义接点{student date;struct unit *next;}unit;unit* build()//建立链表并返回指针{unit *p;if((p=(unit*)malloc(sizeof(unit)))==NULL){ printf("=>初始化失败!");return 0;}else{p->next=NULL;p->date.number=0;//头结点存放学生人数printf("初始化成功!\n");return p;}}void add(unit *head)//增加学生{unit *p,*q;int m,n=0;q=head->next;p=(unit*)malloc(sizeof(unit));printf("=>请输入新生姓名!\n");gets(p->);fflush(stdin);printf("=>请输入学号!\n");while(n==0){scanf("%d",&m);fflush(stdin);if(q==NULL) n=1;while(q){if(q->date.number==m){printf("=>你输入的学号与已有同学的学号相同,请重新输入!\n");q=head->next;break;}else{q=q->next;if(q==NULL) n=1;}}}p->date.number=m;printf("=>请输入性别!\n");gets(p->date.sex);fflush(stdin);printf("=>请输入数学成绩\n");scanf("%d",&m);fflush(stdin);p->date.math=m;printf("=>请输入英语成绩\n");scanf("%d",&m);fflush(stdin);p->date.eglish=m;printf("=>请输入c语言成绩\n");scanf("%d",&m);fflush(stdin);p->date.clanguge=m;p->date.average=(p->date.math+p->date.eglish+p->date.clanguge);q=head->next;head->next=p;p->next=q;head->date.number++;}void deletion(unit *head)//删除一名学生{unit *p=head->next,*q=head;char N[10];printf("=>请输入你想删除的学生姓名!\n");gets(N);fflush(stdin);if(p==NULL)printf("=>系统无学生可删除!\n");while(p){if(strcmp(p->,N)==0){q->next=p->next;head->date.number--;printf("=>删除%s成功!\n",p->);free(p);break;}else{p=p->next;q=q->next;if(p==NULL)printf("=>你要删除的学生不存在,删除失败!\n");}}}int display(unit *head)//显示学生信息{unit *p=head->next;int m,n=0;char N[10];if(p==NULL){printf("=>系统无学生!\n");return 0;}while(n==0){printf("********************************************************* *********************\n");printf("=>请选择你的操作!\n");printf("=>\t\t\t1.显示所有\t2.按姓名查找\n\t\t\t3.按学号查找\t4.返回主菜单\n");scanf("%d",&m);fflush(stdin);switch(m){case 1:printf("\n=>该系统拥有%d名学生!\n\n",head->date.number);p=head->next;printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t综合\n\n");while(p){printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p->,p->date.numb er,p->date.sex,p->date.math,p->date.eglish,p->date.clanguge,p->date.average);p=p->next;}break;case 2:printf("=>请输入查找姓名!\n");gets(N);fflush(stdin);p=head->next;while(p){if(strcmp(p->,N)==0){printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t 综合\n");printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p->,p->date.numb er,p->date.sex,p->date.math,p->date.eglish,p->date.clanguge,p->date.average);break;}else{p=p->next;if(p==NULL)printf("=>你要查的学生不存在!");}}break;case 3: printf("=>请输入查找学号!\n");scanf("%d",&m);fflush(stdin);p=head->next;while(p){if(p->date.number==m){printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t 综合\n");printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p->,p->date.numb er,p->date.sex,p->date.math,p->date.eglish,p->date.clanguge,p->date.average);break;}else{p=p->next;if(p==NULL)printf("=>你要查的学生不存在!\n");}}break;case 4:n=1;break;}}return 1;}int range(unit *head)//排序{unit *p=head,*q=head->next;int n,i,m=head->date.number;printf("********************************************************* **********************\n");printf("\t\t\t1.按学号\t2.按成绩\n\n");printf("=>请选择操作!\n》");scanf("%d",&n);fflush(stdin);if(q==NULL){ printf("=>无学生可排序!\n");return 0;}switch(n){case 2:for(i=0;i<m;i++)//按总分排序{p=head;q=head->next;while(q->next){if((q->date.average)<(q->next->date.average)){p->next=q->next;p=p->next;q->next=p->next;p->next=q;}else{p=p->next;q=q->next;}}}break;case 1:for(i=0;i<=m;i++)//按学号排序{p=head;q=head->next;while(q->next){if((q->date.number)>(q->next->date.number)){p->next=q->next;p=p->next;q->next=p->next;p->next=q;}else{p=p->next;q=q->next;}}}break;}printf("=>排序成功!\n");return 1;}void menu(){printf("\n********************************* 主菜单***************************************\n");printf("\t\t\t1.新建系统\t2.添加学生\n\t\t\t3.删除学生\t4.查看信息\n\t\t\t5.排列顺序\t6.读取信息\n\t\t\t7.保存信息\t8.退出系统\n");printf("=>请选择你的操作!\n");}int save(unit *head)//保存{FILE *fp;unit *p;p=head;if((fp=fopen("d:\\学生","wb+"))==NULL){printf("=>保存失败!");return 0;}while(p){fwrite(&(p->date),sizeof(student),1,fp);p=p->next;}printf("=>保存成功!");fclose(fp);return 1;}unit* read()//读入系统学生信息{int i;unit *p,*q,*head;FILE *fp;if((head=(unit*)malloc(sizeof(unit)))==NULL) { printf("=>开辟空间失败!");exit(1);}else{head->next=NULL;head->date.number=0;//头结点存放学生人数}q=head;if((fp=fopen("d:\\学生","rb"))==NULL){printf("=>系统无学生!\n");return 0;}fread(&(q->date),sizeof(student),1,fp);for(i=0;i<head->date.number;i++){if((p=(unit*)malloc(sizeof(unit)))==NULL){ printf("=>读值失败!");exit(1);}fread(&(p->date),sizeof(student),1,fp);p->next=q->next;q->next=p;}fclose(fp);return head;}void main(){int m=0,n, i;unit *head;printf("************************************************************* *******************\n\n");printf("\t\t\t* 欢迎使用学生成绩管理系统 * \n");printf("\n\t\t\t\t\t\t\t\t编译员:吹吹风\n\n");printf("=>正在读取系统信息......\n");if((head=read())==0){printf("=>是否新建?\n");printf("\t\t\t是(1)\t\t否(2)\n");scanf("%d",&i);fflush(stdin);if(i==1)head=build();else if(i==2)exit(1);}elseprintf("=>信息导入成功!");while(m==0){menu();scanf("%d",&n);fflush(stdin);switch(n){case 1: head=build();break;case 2:add(head);break;case 3:deletion(head);break;case 4:display(head);break;case 5: range(head);break;case 6:head=read();if(head!=0) printf("=>读取存盘成功!\n");break;case 7:save(head);break;case 8:m=1;break;}}}。
用c语言编写学分管理系统-成绩管理系统
继续");
break;
}
else printf("\n对不起!没有该学号,任意键继续");
getch();
}
void query2()
printf("\t\t\t*** 0-退出 ***\n");
printf("\t\t\t*****************************\n");
}
void query1()
{ char sn[11];
int i;
printf("\t\t\t*** 1-按学号查询 ***\n");
printf("\t\t\t*** 2-按姓名查询 ***\n");
printf("\t\t\t*** 3-按班级查询 ***\n");
printf("\t\t\t*** 5-删除学生学分 ***\n");
printf("\t\t\t*** 6-统计学生学分 ***\n");
printf("\t\t\t*** 0-退出 ***\n");
{ char sn[7];
int i;
printf("请输入要查询的姓名:");
scanf("%s",sn);
用c语言编写一个成绩管理系统
程序说明:有N个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:(1)主菜单学生成绩管理系统 1、成绩录入 2、成绩查询 3、成绩统计 4、退出(2)各菜单项功能① 成绩录入:输入学生的学号、姓名及三门课的成绩;② 成绩查询:(至少一种查询方式)。
v 按学号查询学生记录。
v 查询不及格学生的记录。
③成绩统计: v 计算学生的平均分; v 根据学生的平均分高低,对学生的数据进行排序后输出; v 对学生单科成绩排序,输出学生姓名与该科成绩;④退出系统:退出整个系统(即主菜单)。
(3)结构体数组:#define N 30 struct student {int num; /* 定义学号*/char name[20]; /* 定义姓名*/float score[3]; /* 定义存贮三门课成绩的数组*/float average; /* 定义平均成绩*/};struct student stu[N]; /* 定义结构体数组,存贮多个学生的记录*/. #include<stdio.h>#include<stdlib.h>#include<string.h>struct student{ int num; char name[20];float score[4];float average;}stu[10000];long t,max;bool unpass[1000];FILE *fstu=fopen("stud.dat","at+");int init(){int no,i;float s[4],ave;char nam[20];while (!feof(fstu)){fscanf(fstu,"%d",&no);fscanf(fstu,"%s",nam);fscanf(fstu,"%f%f%f%f",&s[1],&s[2],&s[3],&ave);if (no>max)max=no;stu[no].num=no;strcpy(stu[no].name,nam);unpass[no]=false; for (i=1;i<=3;i++){stu[no].score[i]=s[i];if (s[i]<60)unpass[no]=true;}stu[no].average=ave;}}int stuinsert(){int no,i;float s[3],sum;char nam[20],cha;loop:printf("请输入学生的学号、姓名及三门课的成绩\n"); scanf("%d",&no); scanf("%s",nam);scanf("%f%f%f/n",&s[1],&s[2],&s[3]);if (no>max)max=no;stu[no].num=no;sum=0.0;strcpy(stu[no].name,nam);unpass[no]=false;for (i=1;i<=3;i++){stu[no].score[i]=s[i];sum=sum+s[i];if (s[i]<60)unpass[no]=true;}stu[no].average=sum/3.0;fprintf(fstu,"\n");fprintf(fstu,"%d %s %f %f %f %f\n",stu[no].num,stu[no].name,stu[no].score[1],stu[no].s core[2],stu[no].score[3],stu[no].average);}int find(int x){long i,no;switch (x){case 1:printf("请输入学号:");scanf("%d",&no);printf("%d %s %f %f %f %f\n",stu[no].num,stu[no].name,stu[no].score[1], stu[no].scor e[2],stu[no].score[3],stu[no].average);break;case 2:for (i=1;i<=max;i++) if (unpass[i]) printf("%d %s %f %f %f %f\n",stu[i].num,st u[i].name,stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].average);break;}}int sort(int x){extern int headprint(int x);student so[1000];int i,j,k,n;switch (x){case 1:for (i=1;i<=max;i++) if (stu[i].num==i) printf("%d %s %f\n",i,stu[i].name,stu[i].av erage);break;case 2:n=0;for (i=1;i<=max;i++){j=1; if (stu[i].num==i)while ((so[j].average>stu[i].average)&&(j<=n))j++; n++;for (k=n;k>=j;k--) so[k]=so[k-1]; so[j]=stu[i];}for (i=1;i<=n;i++)printf("%d %s %f %f %f %f\n",so[i].num,so[i].name,so[i].score[1],so[i].score[2],so[i].sc ore[3],so[i].average); break; case 3:headprint(4);}}int othersort(int x){extern int headprint(int x);student so[1000];int i,j,k,n,q; q=0;switch (x){case 1:if (q==0) q=1;case 2:if (q==0) q=2;case 3:if (q==0) q=3;n=0;for (i=1;i<=max;i++){j=1;if (stu[i].num==i)while ((so[j].score[q]>stu[i].score[q])&&(j<=n))j++;n++;for (k=n;k>=j;k--)so[k]=so[k-1];so[j]=stu[i];}for (i=1;i<=n;i++)printf("%d %s %f\n",so[i].num,so[i].name,so[i].score[q]);break;}}int select(int x){extern int headprint(int x);int p;switch (x){case 1:scanf("%d",&p);switch (p){case 1:stuinsert();break;case 2:headprint(2);break;case 3:headprint(3);break;case 4:t=0;break;}break;case 2:scanf("%d",&p);find(p);break;case 3:scanf("%d",&p);sort(p);break;case 4:scanf("%d",&p);othersort(p);break;}}int headprint(int x){switch (x){ case 1:printf("学生成绩管理系统\n");printf("1、成绩录入\n"); printf("2、成绩查询\n");printf("3、成绩统计\n");printf("4、退出\n");select(x);break;case 2:printf("1、按学号查询学生记录\n");printf("2、查询不及格学生的记录\n");select(x);break;case 3:printf("1、计算学生的平均分\n");printf("2、根据学生的平均分高低,对学生的数据进行排序后输出\n");printf("3、对学生单科成绩排序,输出学生姓名与该科成绩\n");select(x);break;case 4:printf("1、第一科\n"); printf("2、第二科\n");printf("3、第三科\n"); select(x); break;;}}int main(){ max=0; t=1;init();loop:headprint(1);if (t!=0)goto loop;}【下载本文档,可以自由复制内容或自由编辑修改内容,更多精彩文章,期待你的好评和关注,我将一如既往为您服务】。
学生成绩管理系统代码(c语言编写)
C程序学生管理系统之蔡仲巾千创作/* Note:Your choice is C IDE */#include"stdio.h"#include"stdlib.h"#include"string.h"typedefstruct student//定义学生{char name[10];int number;char sex[2];int math;int eglish;int clanguge;int average;}student;typedefstruct unit//定义接点{student date;struct unit *next;}unit;unit* build()//建立链表并返回指针{unit *p;if((p=(unit*)malloc(sizeof(unit)))==NULL){ printf("=>初始化失败!");return 0;}else{p>next=NULL;p>date.number=0;//头结点存放学生人数 printf("初始化成功!\n");return p;}}void add(unit *head)//增加学生{unit *p,*q;int m,n=0;q=head>next;p=(unit*)malloc(sizeof(unit));printf("=>请输入新生姓名!\n");gets(p>);fflush(stdin);printf("=>请输入学号!\n");while(n==0){scanf("%d",&m);fflush(stdin);if(q==NULL) n=1;while(q){if(q>date.number==m){printf("=>你输入的学号与已有同学的学号相同,请重新输入!\n");q=head>next;break;}else{q=q>next;if(q==NULL) n=1;}}}p>date.number=m;printf("=>请输入性别!\n");gets(p>date.sex);fflush(stdin);printf("=>请输入数学成绩\n");scanf("%d",&m);fflush(stdin);p>date.math=m;printf("=>请输入英语成绩\n");scanf("%d",&m);fflush(stdin);p>date.eglish=m;printf("=>请输入c语言成绩\n");scanf("%d",&m);fflush(stdin);p>date.clanguge=m;p>date.average=(p>date.math+p>date.eglish+p>date.cla nguge);q=head>next;head>next=p;p>next=q;head>date.number++;}void deletion(unit *head)//删除一名学生{unit *p=head>next,*q=head;char N[10];printf("=>请输入你想删除的学生姓名!\n");gets(N);fflush(stdin);if(p==NULL)printf("=>系统无学生可删除!\n");while(p){if(strcmp(p>,N)==0){q>next=p>next;head>date.number;printf("=>删除%s成功!\n",p>);free(p);break;}else{p=p>next;q=q>next;if(p==NULL)printf("=>你要删除的学生不存在,删除失败!\n");}}int display(unit *head)//显示学生信息{unit *p=head>next;int m,n=0;char N[10];if(p==NULL){printf("=>系统无学生!\n");return 0;}while(n==0){printf("******************************************** **********************************\n");printf("=>请选择你的操纵!\n");printf("=>\t\t\t1.显示所有\t2.按姓名查找\n\t\t\t3.按学号查找\t4.返回主菜单\n");scanf("%d",&m);fflush(stdin);switch(m)case 1:printf("\n=>该系统拥有%d名学生!\n\n",head>date.number);p=head>next;printf("\t姓名\t学号\t性别\t数学\t 英语\tc语言\t综合\n\n");while(p){printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p>, p>date.number,p>date.sex,p>date.math,p>date.eglish,p>date.clanguge,p>date.average);p=p>next;}break;case 2:printf("=>请输入查找姓名!\n");gets(N);fflush(stdin);p=head>next;while(p){if(strcmp(p>,N)==0){printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t综合\n");printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p>, p>date.number,p>date.sex,p>date.math,p>date.eglish,p>date.clanguge,p>date.average); break;}else{p=p>next;if(p==NULL)printf("=>你要查的学生不存在!"); }}break;case 3: printf("=>请输入查找学号!\n");scanf("%d",&m);fflush(stdin);p=head>next;while(p){if(p>date.number==m){printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t综合\n");printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p>, p>date.number,p>date.sex,p>date.math,p>date.eglish,p>date.clanguge,p>date.average); break;}else{p=p>next;if(p==NULL)printf("=>你要查的学生不存在!\n");}}break;case 4:n=1;break;}}return 1;}int range(unit *head)//排序{unit *p=head,*q=head>next;int n,i,m=head>date.number;printf("******************************************** ***********************************\n");printf("\t\t\t1.按学号\t2.按成绩\n\n");printf("=>请选择操纵!\n》");scanf("%d",&n);fflush(stdin);if(q==NULL){ printf("=>无学生可排序!\n");return 0;}switch(n){case 2:for(i=0;i<m;i++)//按总分排序{p=head;q=head>next;while(q>next){if((q>date.average)<(q>next>date.average)){p>next=q>next;p=p>next;q>next=p>next;p>next=q;}else{p=p>next;q=q>next; }}}break;case 1:for(i=0;i<=m;i++)//按学号排序{p=head;q=head>next;while(q>next){if((q>date.number)>(q>next>date.number)){p>next=q>next;p=p>next;q>next=p>next;p>next=q;}else{p=p>next;q=q>next; }}}break;}printf("=>排序成功!\n");return 1;}void menu(){printf("\n********************************* 主菜单***************************************\n");printf("\t\t\t1.新建系统\t2.添加学生\n\t\t\t3.删除学生\t4.检查信息\n\t\t\t5.排列顺序\t6.读取信息\n\t\t\t7.保管信息\t8.退出系统\n");printf("=>请选择你的操纵!\n");}int save(unit *head)//保管{FILE *fp;unit *p;p=head;if((fp=fopen("d:\\学生","wb+"))==NULL){printf("=>保管失败!");return 0;}while(p){fwrite(&(p>date),sizeof(student),1,fp);p=p>next;}printf("=>保管成功!");fclose(fp);return 1;}unit* read()//读入系统学生信息{int i;unit *p,*q,*head;FILE *fp;if((head=(unit*)malloc(sizeof(unit)))==NULL){ printf("=>开辟空间失败!");exit(1);}else{head>next=NULL;head>date.number=0;//头结点存放学生人数}q=head;if((fp=fopen("d:\\学生","rb"))==NULL){printf("=>系统无学生!\n");return 0;}fread(&(q>date),sizeof(student),1,fp);for(i=0;i<head>date.number;i++){if((p=(unit*)malloc(sizeof(unit)))==NULL){ printf("=>读值失败!");exit(1);}fread(&(p>date),sizeof(student),1,fp);p>next=q>next;q>next=p;}fclose(fp);return head;}void main(){int m=0,n, i;unit *head;printf("************************************************* *******************************\n\n");printf("\t\t\t* 欢迎使用学生成绩管理系统 * \n");printf("\n\t\t\t\t\t\t\t\t编译员:岳英明\n\n"); printf("=>正在读取系统信息......\n");if((head=read())==0){printf("=>是否新建?\n");printf("\t\t\t是(1)\t\t否(2)\n");scanf("%d",&i);fflush(stdin);if(i==1)head=build();elseif(i==2)exit(1);}elseprintf("=>信息导入成功!");while(m==0){menu();scanf("%d",&n);fflush(stdin);switch(n){case 1: head=build();break;case 2:add(head);break;case 3:deletion(head);break;case 4:display(head);break;case 5: range(head);break;case 6:head=read();if(head!=0) printf("=>读取存盘成功!\n");break;case 7:save(head);break;case 8:m=1;break;}}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序说明:有N个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:(1)主菜单学生成绩管理系统 1、成绩录入 2、成绩查询 3、成绩统计 4、退出(2)各菜单项功能① 成绩录入:输入学生的学号、姓名及三门课的成绩;② 成绩查询:(至少一种查询方式)。
v 按学号查询学生记录。
v 查询不及格学生的记录。
③成绩统计: v 计算学生的平均分; v 根据学生的平均分高低,对学生的数据进行排序后输出; v 对学生单科成绩排序,输出学生姓名与该科成绩;④退出系统:退出整个系统(即主菜单)。
(3)结构体数组:#define N 30 struct student {int num; /* 定义学号*/char name[20]; /* 定义姓名*/float score[3]; /* 定义存贮三门课成绩的数组*/float average; /* 定义平均成绩*/};struct student stu[N]; /* 定义结构体数组,存贮多个学生的记录*/. #include<stdio.h>#include<stdlib.h>#include<string.h>struct student{ int num; char name[20];float score[4];float average;}stu[10000];long t,max;bool unpass[1000];FILE *fstu=fopen("stud.dat","at+");int init(){int no,i;float s[4],ave;char nam[20];while (!feof(fstu)){fscanf(fstu,"%d",&no);fscanf(fstu,"%s",nam);fscanf(fstu,"%f%f%f%f",&s[1],&s[2],&s[3],&ave);if (no>max)max=no;stu[no].num=no;strcpy(stu[no].name,nam);unpass[no]=false; for (i=1;i<=3;i++){stu[no].score[i]=s[i];if (s[i]<60)unpass[no]=true;}stu[no].average=ave;}}int stuinsert(){int no,i;float s[3],sum;char nam[20],cha;loop:printf("请输入学生的学号、姓名及三门课的成绩\n"); scanf("%d",&no); scanf("%s",nam);scanf("%f%f%f/n",&s[1],&s[2],&s[3]);if (no>max)max=no;stu[no].num=no;sum=0.0;strcpy(stu[no].name,nam);unpass[no]=false;for (i=1;i<=3;i++){stu[no].score[i]=s[i];sum=sum+s[i];if (s[i]<60)unpass[no]=true;}stu[no].average=sum/3.0;fprintf(fstu,"\n");fprintf(fstu,"%d %s %f %f %f %f\n",stu[no].num,stu[no].name,stu[no].score[1],stu[no].s core[2],stu[no].score[3],stu[no].average);}int find(int x){long i,no;switch (x){case 1:printf("请输入学号:");scanf("%d",&no);printf("%d %s %f %f %f %f\n",stu[no].num,stu[no].name,stu[no].score[1], stu[no].scor e[2],stu[no].score[3],stu[no].average);break;case 2:for (i=1;i<=max;i++) if (unpass[i]) printf("%d %s %f %f %f %f\n",stu[i].num,st u[i].name,stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].average);break;}}int sort(int x){extern int headprint(int x);student so[1000];int i,j,k,n;switch (x){case 1:for (i=1;i<=max;i++) if (stu[i].num==i) printf("%d %s %f\n",i,stu[i].name,stu[i].av erage);break;case 2:n=0;for (i=1;i<=max;i++){j=1; if (stu[i].num==i)while ((so[j].average>stu[i].average)&&(j<=n))j++; n++;for (k=n;k>=j;k--) so[k]=so[k-1]; so[j]=stu[i];}for (i=1;i<=n;i++)printf("%d %s %f %f %f %f\n",so[i].num,so[i].name,so[i].score[1],so[i].score[2],so[i].sc ore[3],so[i].average); break; case 3:headprint(4);}}int othersort(int x){extern int headprint(int x);student so[1000];int i,j,k,n,q; q=0;switch (x){case 1:if (q==0) q=1;case 2:if (q==0) q=2;case 3:if (q==0) q=3;n=0;for (i=1;i<=max;i++){j=1;if (stu[i].num==i)while ((so[j].score[q]>stu[i].score[q])&&(j<=n))j++;n++;for (k=n;k>=j;k--)so[k]=so[k-1];so[j]=stu[i];}for (i=1;i<=n;i++)printf("%d %s %f\n",so[i].num,so[i].name,so[i].score[q]);break;}}int select(int x){extern int headprint(int x);int p;switch (x){case 1:scanf("%d",&p);switch (p){case 1:stuinsert();break;case 2:headprint(2);break;case 3:headprint(3);break;case 4:t=0;break;}break;case 2:scanf("%d",&p);find(p);break;case 3:scanf("%d",&p);sort(p);break;case 4:scanf("%d",&p);othersort(p);break;}}int headprint(int x){switch (x){ case 1:printf("学生成绩管理系统\n");printf("1、成绩录入\n"); printf("2、成绩查询\n");printf("3、成绩统计\n");printf("4、退出\n");select(x);break;case 2:printf("1、按学号查询学生记录\n");printf("2、查询不及格学生的记录\n");select(x);break;case 3:printf("1、计算学生的平均分\n");printf("2、根据学生的平均分高低,对学生的数据进行排序后输出\n");printf("3、对学生单科成绩排序,输出学生姓名与该科成绩\n"); select(x);break;case 4:printf("1、第一科\n"); printf("2、第二科\n");printf("3、第三科\n"); select(x); break;;}}int main(){ max=0; t=1;init();loop:headprint(1);if (t!=0)goto loop;}。