学生成绩统计c语言
- 格式:doc
- 大小:231.59 KB
- 文档页数:13
*题目七:学生成绩管理系统设计学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。
主要功能:(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单要求:使用二进制文件方式存储数据,系统以菜单方式工作源代码:#include<stdio.h>#include<ctype.h>#include<stdlib.h>#include<string.h>struct Student{int cls;char nam[10];char num[10];int chinese;int english;int computer;int math;}stud1[100],stud2[100];{char a;while(a>'7'||a<'0'){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(" 0.储存学生资料并退出系统\n");printf("********************************************************************* *\n");printf("请选择(0-7)\n");a=getchar();}return(a-'0');}/******************************************************************************int Input(Student stud[],int n) //输入数据(第一学期)。
c语言输入10个同学的成绩总分和平均值C语言输入10个同学的成绩总分和平均值一、前言在学习编程语言的过程中,C语言是一个非常基础且重要的语言。
在C 语言中,输入输出是非常基础的内容之一,学会如何输入和处理数据是我们学习编程的第一步。
本文将以输入10个同学的成绩总分和平均值为题,深入探讨C语言中的输入输出操作,并共享我对这个主题的个人理解。
二、基本概念在C语言中,我们可以通过scanf()函数来实现数据的输入。
scanf()函数是一个输入函数,可以将用户输入的数据存储到指定的变量中。
在本题中,我们需要输入10个同学的成绩,分别存储到不同的变量中。
三、具体操作在C语言中,我们可以使用循环来反复输入数据,以实现输入10个同学的成绩。
我们需要定义一个数组来存储这10个同学的成绩,然后通过循环依次输入每个同学的成绩。
我们可以使用循环再次遍历数组,求得这10个同学的成绩总和。
通过平均值公式,我们可以求得这10个同学的成绩平均值。
四、代码示例```c#include <stdio.h>int main() {int scores[10];int sum = 0;double average = 0.0;// 输入10个同学的成绩for (int i = 0; i < 10; i++) {printf("请输入第%d个同学的成绩:", i + 1);scanf("%d", &scores[i]);}// 计算成绩总和for (int i = 0; i < 10; i++) {sum += scores[i];}// 计算平均值average = (double) sum / 10;// 输出成绩总和和平均值printf("这10个同学的成绩总和为:%d\n", sum);printf("这10个同学的成绩平均值为:%.2f\n", average);return 0;}```五、总结回顾通过以上的代码示例,我们了解了如何在C语言中输入10个同学的成绩总分和平均值。
填写说明:1、同一名教师在不同教学班教授的同一门课程只须填写一份教学日历;由不同教师教授的同一门课程每人填写一份教学日历。
2、“作业、实验”栏中的作业,是指教师计划布置的,应该批改的作业。
3、法定假日不安排教学内容,其课次顺延安排.系统开发语言作业现有一个班级,共10人,本学期共学习三门课程,设计一个学生成绩管理系统,要求如下:1、完成三门课程成绩输入;或单门课程录入、或同时录入三门课.2、完成成绩排序:按单科成绩排序、按平均分排序;3、完成成绩统计:按单科分段统计人数、按平均分分段统计(60分以下,60—79分,80以上);4、用结构体完成学生姓名和成绩的输入:5、完成成绩查询:单科查询、平均分查询、按姓名查询、分段查询等;6、完成奖学金统计:三门课均高于90分,一等奖学金;三门课均高于80分,二等奖学金,统计获奖学金人数7、完成成绩输出:按单科输出、输出所有成绩、按平均分由高到低输出,输出奖学金名单等;.作业要求第1、2、3周、完成成绩录入、排序和统计第4、5、6周、完成菜单和函数编制第2、8、9周、完成成绩查询和统计第10、11周、完成查询输出第12、13周、讲程序进行函数化、模块化第14、15周、应用指针、指针函数以及函数指针等第16周,完善程序、验收。
最后打印出完整代码清单代码如下:#include<stdio.h〉struct student{float math;float Chinese;float English;float average;char name[5];};void inputgread(struct student stu)//输入成绩{int a=0;scanf(”%s”,);printf("按顺序输入数学成绩,语文成绩,英语成绩");scanf("%f%f%f”,&stu。
math,&stu.Chinese,&stu。
学生成绩管理系统c语言课程设计报告一、引言学生成绩管理系统是一个为学校或教育机构提供学生学业成绩管理的重要工具。
通过该系统,可以方便地记录和查询学生的各项成绩,帮助教师和学生了解学生的学业表现,及时作出教学和学习的调整和改进。
本文将介绍一个基于C语言的学生成绩管理系统的设计与实现。
二、需求分析1. 学生信息管理:包括学生基本信息的录入、修改和删除。
2. 成绩信息管理:包括成绩的录入、修改和删除。
3. 成绩查询与统计:可以按照学生学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。
4. 数据存储与备份:能够将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。
三、系统设计1. 学生信息管理模块:设计一个结构体来存储学生的基本信息,包括学号、姓名、性别、年龄等。
通过菜单选择,可以实现学生信息的录入、修改和删除功能。
2. 成绩信息管理模块:设计一个结构体来存储学生的成绩信息,包括科目名称和成绩。
通过菜单选择,可以实现成绩信息的录入、修改和删除功能。
3. 成绩查询与统计模块:通过学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。
4. 数据存储与备份模块:设计文件操作函数,将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。
四、系统实现1. 使用C语言编写程序代码,通过结构体和数组等数据结构实现学生信息和成绩信息的存储。
2. 利用文件操作函数实现数据的读取和存储,包括学生信息和成绩信息的存储和备份。
3. 设计菜单界面,通过用户选择来实现各个功能模块的调用。
五、系统测试与优化1. 针对各个功能模块进行测试,验证系统的正确性和稳定性。
2. 根据测试结果优化程序代码,提高系统性能和用户体验。
3. 完善系统功能,考虑异常情况的处理,提高系统的容错性和健壮性。
六、总结与展望通过本次课程设计,我们成功实现了一个基于C语言的学生成绩管理系统。
该系统能够方便地记录和查询学生的成绩信息,帮助教师和学生进行教学和学习的分析和改进。
功能:查询修改统计成绩。
#include <stdio.h>struct student /*成绩表的结构声明*/{int num;char name[15];char sex;float WuLi;float ShuXue;float YingYu;float KuaiJi;float totle;};/*定义6个学生的信息:*/#define STU_NUMBER 6 /*宏定义学生数为6*/struct student Stu[STU_NUMBER]={{101,"yuchen", 'F', 98,85,96,89,0},{102,"xiaotong", 'F', 99,91,90,93,0},{103,"likanglong",'M', 76,83,74,82,0},{104,"yinger", 'F', 88,76,89,77,0},{105,"fengjiao", 'F', 97,100,94,96,0},{106,"sunyao", 'M', 87,89,66,84,0} };int SelectMainMenu(); /*显示并选择主菜单。
返回:被选择的菜单项*//*所有的函数声明:*/void Show(); /*成绩查询模块*/void Modify(); /*成绩修改模块*/void Stat(); /*成绩统计模块*/void StatAve(float *AveWuLi,float *AveShuXue,float *AveYingYu,float *AveKuaiJi);/*统计平均分*/int FindStudent(int num); /*根据学号查找某一学生*/void SetAllTotle(); /*计算所有学生总分*/void SetTotle(int No); /*计算第No个学生总分*/void ShowAllStudent(); /*显示所有成绩*/void ShowTitle(); /*显示表头信息*/void ShowStudent(int No); /*显示第No个的学生信息*/void main(){int isend=0,password=0; /*程序结束标志量,0表示不结束,1表示结束*/SetAllTotle(); /*计算所有学生总分*/while(password!=666){printf("qing shu ru mi ma:\n");scanf("%d",&password);}{switch(SelectMainMenu()) /*显示并选择主菜单*/{case 1: /*成绩查询*/Show(); /*调用成绩查询函数*/break;case 2: /*成绩修改*/Modify(); /*调用成绩修改函数*/break;case 3: /*成绩统计*/Stat(); /*调用成绩统计函数*/break;case 4: /*退出系统*/printf("\nxie xie nin de shi yong,zai jian!\n\n");isend = 1; /*设置程序结束标志*/break;}if(isend) break; /*程序结束*/}}int SelectMainMenu() /*显示并选择主菜单。
按成绩从高到低顺序输出学生信息程序描述:输入并保存10个学生的信息,计算并输出平均分,再按照从低分到高分的顺序输出他们的信息;样例输入:1 啊102 吧93 才84 的75 额 66 飞 57 个 48 好 39 就 210 看 1样例输出:出题人:我们一起的痕迹程序代码int score;};struct student stud[10];int main(void){int i,j,index,sum=0;struct student temp;printf("\nInput the student's number,name and score:\n");for(i=0;i<10;i++){printf("No %d:",i+1);scanf("%d%s%d",&stud[i].num,stud[i].name,&stud[i].score);sum=sum+stud[i].score;}for(i=0;i<9;i++){index=i;for(j=i+1;j<10;j++)if(stud[j].score<stud[index].score)index=i;temp=stud[index];stud[index]=stud[i];stud[i]=temp;}printf("The average:%d\n",sum/10);printf("The student score:\n");for(i=9;i>=0;i--)printf("%d %s %d\n",stud[i].num,stud[i].name,stud[i].score); system("pause"); (提交代码这行需删去)return 0;}我们一起的痕迹。
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;}。
填写说明:1、同一名教师在不同教学班教授的同一门课程只须填写一份教学日历;由不同教师教授的同一门课程每人填写一份教学日历。
2、“作业、实验”栏中的作业,是指教师计划布置的,应该批改的作业。
3、法定假日不安排教学内容,其课次顺延安排。
系统开发语言作业现有一个班级,共10人,本学期共学习三门课程,设计一个学生成绩管理系统,要求如下:1、完成三门课程成绩输入;或单门课程录入、或同时录入三门课。
2、完成成绩排序:按单科成绩排序、按平均分排序;3、完成成绩统计:按单科分段统计人数、按平均分分段统计(60分以下,60-79分,80以上);4、用结构体完成学生姓名和成绩的输入:5、完成成绩查询:单科查询、平均分查询、按姓名查询、分段查询等;6、完成奖学金统计:三门课均高于90分,一等奖学金;三门课均高于80分,二等奖学金,统计获奖学金人数7、完成成绩输出:按单科输出、输出所有成绩、按平均分由高到低输出,输出奖学金名单等;.作业要求第1、2、3周、完成成绩录入、排序和统计第4、5、6周、完成菜单和函数编制第2、8、9周、完成成绩查询和统计第10、11周、完成查询输出第12、13周、讲程序进行函数化、模块化第14、15周、应用指针、指针函数以及函数指针等第16周,完善程序、验收。
最后打印出完整代码清单代码如下:#include<stdio.h>struct student{float math;float Chinese;float English;float average;char name[5];};void inputgread(struct student stu) //输入成绩{int a=0;scanf("%s",);printf("按顺序输入数学成绩,语文成绩,英语成绩");scanf("%f%f%f",&stu.math,&stu.Chinese,&stu.English); }void Chinesecompositor(struct student stu[]) //按语文排序{int num=0,num2=0;struct student p;for(num2;num2<9;num2++){for(num;num<9;num++)if(stu[num].Chinese<stu[num+1].Chinese){p=stu[num];stu[num]=stu[num+1];stu[num+1]=p;}}}for(num=0;num<10;num++){printf("%c:%f",stu[num].name,stu[num].Chinese); }}void mathcompositor(struct student stu[]) //按数学排序{int num=0,num2=0;struct student p;for(num2;num2<9;num2++){for(num;num<9;num++)if(stu[num].math<stu[num+1].math){p=stu[num];stu[num]=stu[num+1];stu[num+1]=p;}}}for(num=0;num<10;num++){printf("%c:%f",stu[num].name,stu[num].math);}}void Englishcompositor(struct student stu[]) //按英语排序{int num=0,num2=0;struct student p;for(num2;num2<9;num2++){for(num;num<9;num++)if(stu[num].English<stu[num+1].English){p=stu[num];stu[num]=stu[num+1];stu[num+1]=p;}}}for(num=0;num<10;num++){printf("%c:%f",stu[num].name,stu[num].English); }}void Average(struct student stu) //平均分{int num=0;stu.average=(stu.Chinese+stu.English+stu.math)/3; }void Averagecompositor(struct student stu[])//按平均分排序{int num=0,num2=0;struct student p;for(num2;num2<9;num2++){for(num;num<9;num++){if(stu[num].average<stu[num+1].average){p=stu[num];stu[num]=stu[num+1];stu[num+1]=p;}}}for(num=0;num<10;num++){printf("%c:%f",stu[num].name,stu[num].average);}}void namecheck(struct student stu[],char *na) //按姓名查询{int num=0;for(num;num<10;num++){if (na==stu[num].name){printf("姓名:%s 数学:%f 语文:%f 英语:%f",stu[num].name,stu[num].math,stu[num].English);}}}void scholarship(struct student stu[]) //奖学金{int num=0,count=0;printf("一等奖学金名单:\n");for(num;num<10;num++){if(stu[num].Chinese>=90&&stu[num].English>=90&&stu[n um].math>=90){printf("%s ",stu[num].name);count++;}}printf("\n二等奖学金名单:\n");for(num;num<10;num++){if(stu[num].Chinese>=80&&stu[num].English>=80&&stu[n um].math>=80){printf("%s ",stu[num].name);count++;}}printf("奖学金人数:%d",count);}void scorecut(struct student stu[],int n)//分数段{int num=0,count=0;switch(n){case 1:{printf("语文成绩分数段:\n");printf("90分以上:\n");for(num;num<10;num++){if(stu[num].Chinese>=90){printf("%s\n",stu[num].name);}}printf("80---90: \n");for(num=0;num<10;num++){if(stu[num].Chinese>=80&&stu[num].Chinese<90) {printf("%s\n",stu[num].name);}}printf("70--80: \n");for(num=0;num<10;num++){if(stu[num].Chinese>=70&&stu[num].Chinese<80) {printf("%s\n",stu[num].name);}}printf("60--70: \n");for(num=0;num<10;num++){if(stu[num].Chinese>=60&&stu[num].Chinese<70) {printf("%s\n",stu[num].name);}}printf("不及格: \n");for(num=0;num<10;num++){if(stu[num].Chinese<60){printf("%s\n",stu[num].name);}}}case 2:{printf("平均分成绩分段:\n");printf("90分以上:\n");for(num;num<10;num++){if(stu[num].average>=90){printf("%s\n",stu[num].name);}}printf("80---90: \n");for(num=0;num<10;num++){if(stu[num].average>=80&&stu[num].average<90) {printf("%s\n",stu[num].name);}}printf("70--80: \n");for(num=0;num<10;num++){if(stu[num].average>=70&&stu[num].average<80) {printf("%s\n",stu[num].name);}}printf("60--70: \n");for(num=0;num<10;num++){if(stu[num].average>=60&&stu[num].average<70) {printf("%s\n",stu[num].name);}}printf("不及格: \n");for(num=0;num<10;num++){if(stu[num].average<60){printf("%s\n",stu[num].name);}}}}}void menu(){printf(" 1.成绩录入\n");printf(" 2.成绩查询\n");printf(" 3.分数段查询\n");printf(" 4.奖学金查询\n");printf(" 5.成绩排序\n");}main(){struct student stu[10];int num=0,n;char *na;while(1){menu();scanf("%d",&n);switch(n){case 1:for(num;num<10;num++){printf("输入第%d个学生姓名",num+1);inputgread(stu[num]);Average(stu[num]);}break;case 2:{printf(" 1.按姓名查询\n");printf(" 2.查询平均分\n");printf(" 3.退出查询\n");scanf("%d",&n);switch(n){case 1:{printf("输入学生姓名:");scanf("%s",&na);namecheck(stu,na);}case 2:{for(num=0;num<10;num++){printf("3科平均分:\n");printf("%c:%f\n",stu[num].name,stu[num].average);}}case 3: break;}}case 3:{}case 4:{printf(" 1.语文单科成绩分段\n");printf(" 2.平均分分段\n");scanf("%d",&n);switch(n){case 1:scorecut(stu,n);case 2:scorecut(stu,n);case 3:break;}}case 5:{printf("按数学成绩排序:\n");mathcompositor(stu);printf("按语文成绩排序: \n");Chinesecompositor(stu);printf("按英语成绩排序: \n");Englishcompositor(stu);printf("按平均分排序: \n");Averagecompositor(stu);}}}}。
/*1、一个班级有M=5个学生,每个学生有N=3门成绩,一个学号Num。
均由键盘输入。
a) 每个学生的平均成绩,连同学号,输出。
要求每行输出一个同学,其格式为:学号,平均成绩b) 按照学生平均成绩从高到低排序后,连同学号,输出。
要求每行输出一个同学,其格式为:学号,平均成绩c) 全班每门课程的平均成绩,输出。
要求每行输出一门平均成绩,保留小数点后两位,比如:输出:第一门课程的平均成绩:90.35第二门课程的平均成绩:89.86第三门课程的平均成绩:77.682、输入一个长度不超过32的字符串,判断它是否回文。
如:ab22ba,level 均为回文。
3、编一个程序,将两个字符串连接起来,作为另外一个字符串输出。
不要用strcat 函数。
(例:输入china 和pliceman 两个字符串,结果应为chinapliceman 字符串)4、用选择法对7个字符串排序,并输出。
7个字符串用gets函数输入。
*/#include<stdio.h>#include<string.h>#define NUM 5int main(){struct student{int ID;int score1;int score2;int score3;double ave;}stu[5],t;int a,b,c;double p1,p2,p3;for(a=0;a<NUM;a++){printf("请输入第%d位同学的三门课程成绩:\n",a+1);scanf("%d %d %d",&stu[a].score1,&stu[a].score2,&stu[a].score3);printf(" 学号第一门成绩第二门成绩第三门成绩平均分\n");stu[a].ave=(stu[a].score1+stu[a].score2+stu[a].score3)/3;stu[a].ID=a+1;printf("%5d %5d %5d %5d %-8.1f\n",stu[a].ID,stu[a].score1,stu[a].score2,s tu[a].score3,stu[a].ave);}p1=(stu[0].score1+stu[1].score1+stu[2].score1+stu[3].score1+stu[4].score1)/3;p2=(stu[0].score2+stu[1].score2+stu[2].score2+stu[3].score2+stu[4].score2)/3;p3=(stu[0].score3+stu[1].score3+stu[2].score3+stu[3].score3+stu[4].score3)/3;for(c=0;c<NUM;c++){for(b=0;b<NUM-c-1;b++){if(stu[b].ave>stu[b+1].ave){t=stu[b];stu[b]=stu[b+1];stu[b+1]=t;}}}printf("第一门课程全班平均分%.2lf\n",p1);printf("第二门课程全班平均分%.2lf\n",p2);printf("第三门课程全班平均分%.2lf\n",p3);printf("");return 0;}。
学生成绩管理系统一,实验目的用C 语言实现基本的学生成绩管理系统的基本功能,完成既定要求。
二,需要处理的基础数据学生基本信息包括:①学号(如2010级14班6号写作20101406)②姓③名④性别⑤出生年月日⑤课程对应的考试成绩(外语SCORE[0]、高数SCORE[1]、C 语言SCORE[2]、马哲SCORE[3]) 平均成绩和总成绩三,系统功能1学生基本情况录入。
要求对输入的性别、出生年月日的合理性进行判断(如0代表“女”,1代表“男”,输入其他值非法,年龄不能为负,月份不能大于13等)。
2允许对已经录入的数据进行显示。
3允许进行数据的插入。
4删除基本数据的相关信息。
5基于姓名的查询。
如:姓张的所有同学。
6基于各种基本数据的统计计算。
如:①统计每个学生各门功课的平均成绩,并按平均成绩从高到低的次序排名输出每个学生各门功课的综合成绩和平均成绩(名次、学号、姓名、平均成绩、各门功课的考试成绩)。
②列出90分及以上、80分及以上、70分及以上、60分及以上、不及格学生清单(学号、姓名、不及格的课程和成绩)。
③统计并输出各门功课的平均成绩和总平均成绩。
④按班级统计并输出总成绩(需对学号进行解析)。
四,系统功能模块图五,数据结构设计 输入学生信息按学号删除学生信息显示链表中所有记录从文件中读入记录将链表中的记录保存到文件中按姓名查找计算学生成绩按班级查询退出struct St{char IDNumber[16]; //学号char FamilyName[16]; //姓char GivenName[16]; //名int sex; //性别(0女,1男)intBirthYear; //出生年intBirthMonth; //出生月intBirthDay; //出生日float score[4]; //成绩float sum; //总分float average; //平均分struct St *next;};六,程序结构流程图main•包含以下9个功能根据用户选择的功能实现input •录入学生基本信息,学号、姓名、性别出生日期以及各科成绩del•删除学生数据listprint•将链表中的学生信息输出searchname•按照姓名查找学生信息fsave•将链表中的学生信息保存在文件中七,模块功能 在结构流程图中已经给出。
【学生成绩管理系统】计算机程序编程课程设计实验报告实验地点:第一教学楼502室实验平台:Windows XP Microsoft Visual C++ 6.0实验用时:2013.8。
27——2013.8.30实验题目学生成绩管理系统一.实验目的使用标准C或C++实现一般管理系统的基本功能。
进一步巩固C语言的学习,培养一定的综合编程能力。
二.实验设计要求(一)需要处理的基础数据学生基本信息包括:➢学号(如2010级14班6号写作20101406)➢姓➢名➢性别➢出生年月日➢课程对应的考试成绩(外语SCORE[0]、高数SCORE[1]、C语言SCORE[2]、马哲SCORE[3])➢平均成绩和总成绩(二)系统功能1.学生基本情况录入.要求对输入的性别、出生年月日的合理性进行判断(如0代表“女”,1代表“男",输入其他值非法,年龄不能为负,月份不能大于13等)。
2.允许对已经录入的数据进行显示。
3.允许进行数据的插入。
4.删除基本数据的相关信息。
5.基于姓名的查询。
如:姓张的所有同学。
6.基于各种基本数据的统计计算。
如:①统计每个学生各门功课的平均成绩,并按平均成绩从高到低的次序排名输出每个学生各门功课的综合成绩和平均成绩(名次、学号、姓名、平均成绩、各门功课的考试成绩)。
②列出90分及以上、80分及以上、70分及以上、60分及以上、不及格学生清单(学号、姓名、不及格的课程和成绩)。
③统计并输出各门功课的平均成绩和总平均成绩。
④按班级统计并输出总成绩(需对学号进行解析).(三)数据结构说明typedef struct St1{ char IDNumber[16]; /*学号*/char FamilyName[16];/*姓*/char GivenName[16]; /*名*/int sex;/*性别(0代表“女”,1代表“男”)*/int BirthYear;/*出生年*/int BirthMonth;/*出生月*/int BirthDay;/*出生日*/float score[4]; /*成绩*/float sum; /*总分*/float average;/*平均分*/struct St1 *next;}StudentNode;(四)菜单的样板模式为:1。
学生成绩管理系统(数据结构C语言版源代码)-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII#include<stdio.h>#include<string.h>#include<stdlib.h>struct students{char Num[10]; /*字符型学生学号*/char Name[20]; /*字符型学生姓名*/char Sex[3]; /*字符型学生性别*/double English; /*双精度实型英语成绩*/double Java; /*双精度实型Java成绩*/double Sjjg; /*双精度实数据结构*/double Szdl; /*双精度实型数字电路*/double Jsj; /*计算机组成原理*/struct students *next; /*用与构建连表指向下一结点*/};FILE *fp; /*定义全局变量fp*/void Revisemenu();/*修改菜单*/void Sortmenu();/*排序菜单*/void menu();/*主菜单*/void secret();/*安全验证*/struct students * Input();/*新建学生信息*/void fprint(struct students *head);/*将信息导入文件可追加*/void fprint_(struct students *head);/*将信息导入文件并覆盖*/void Browse(struct students *head);/*浏览全部学生信息*/struct students * create(struct students *head,int *n);/*从tushu_list中读取数据构建链表*/void FindofNum(struct students *head);/*按学号查询学生信息*/void FindofNname(struct students *head);/*按姓名查询学生信息*/void SortEnglish(struct students * head);/*按英语成绩排序*/void SortJava(struct students * head);/*按Java成绩排序*/void SortSjjg(struct students * head);/*按数据结构成绩排序*/void SortSzdl(struct students * head);/*按数字逻辑电路成绩排序*/void SortJsj(struct students * head);/*按计算机组成原理成绩排序*/struct students * Delete(struct students * head,char m[15]);/*按学号删除学生成绩信息*/struct students * Revise();/*修改学生信息(按编号修改)*//*主菜单*/void menu(){printf("\n\n");printf("***************************************************\n");printf(" 学生成绩管理系统 \n");printf("---------------------------------------------------\n");printf(" 1-添加新同学 2-浏览学生信息 \n");printf(" 3-按学号查询 4-按姓名查询 \n");printf(" 5-按成绩排序 6-修改学生信息 \n");printf(" 7-删除学生信息 0-退出系统 \n");printf("---------------------------------------------------\n");printf("___________________________________________________\n");}/*排序菜单*/void Sortmenu(){printf("\n\n");printf("***************************************************\n");printf(" 按成绩排序 \n");printf(" 1-大学英语 2-JAVA编程 \n");printf(" 3-数据结构 4-数字逻辑电路 \n");printf(" 5-计算机组成原理 0-返回上级菜单 \n");printf("***************************************************\n");}/*修改菜单*/void Revisemenu(){printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf(" 1--修改学生姓名 2--修改学生学号 \n");printf(" 3--修改学生性别 4--修改英语成绩 \n");printf(" 5--修改JAVA成绩 6--修改数据结构 \n");printf(" 7--修改数字电路 8--修改计算计 \n");printf(" 0--返回上级菜单 \n");printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");}/*安全验证*/void secret(){char a[20];printf("**欢迎来到学生信息管理系统,进入系统前请先进行密码验证---");printf(" ");do{gets(a); /*输入密码*/system("cls"); /*调用库函数清屏*/printf("对不起!您输入的密码有误,请重新输入---");}while(strcmp(a,"0605")!=0); /*单一密码"0605"*/system("cls");}/*新建学生信息*/struct students * Input(){struct students *p1,*p2,*head; /*建立辅助结点及头结点*/char Name;int n=0,x;printf("\n请按对应项输入学生信息以#结束:\n");printf("姓名学号性别英语 Java 数据结构数字电路计算机组成原理\n");p1=(struct students *)malloc(sizeof(struct students));head=p2=p1;do{ /*使用do while语句输入学生信息*/scanf("%s",&p1->Name);if(strcmp(p1->Name,"#")==0)break; /*判断结束符*/elsescanf("%s%s%lf%lf%lf%lf%lf",p1->Num,p1->Sex,&p1->English,&p1->Java,&p1->Sjjg,&p1->Szdl,&p1->Jsj);Name='#';p1=(struct students *)malloc(sizeof(struct students));p2->next=p1;p2=p1;n++;}while(1);p1->next=NULL;printf("学生信息输入结束!\n");getchar();printf("是否保存学生信息(1.是/2.否):");scanf("%d",&x);if(x==1)fprint(head); /*调用函数保存至文件*/elseprintf("\n文件没有被保存!\n");return head; /*返回头指针*/}/*将信息导入文件可追加*/void fprint(struct students *head){struct students *p1;if((fp=fopen("students_list.txt","a"))==NULL){printf("File open error!\n");exit(0);}for(p1=head;p1->next!=NULL;p1=p1->next) /*遍历*/fprintf(fp,"%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n", p1->Name,p1->Num,p1->Sex,p1->English,p1->Java,p1->Sjjg,p1->Szdl,p1->Jsj);/*将学生信息写入文件*/fclose(fp); /*关闭文件*/printf("\n学生信息已成功保存到文件 students_list.txt 中!\n");getchar();}/*将信息导入文件并覆盖*/void fprint_(struct students *head){struct students *p1;if((fp=fopen("students_list.txt","w"))==NULL){printf("File open error!\n");exit(0);}for(p1=head;p1!=NULL;p1=p1->next) /*遍历*/fprintf(fp,"%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n", p1->Name,p1->Num,p1->Sex,p1->English,p1->Java,p1->Sjjg,p1->Szdl,p1->Jsj);/*将学生信息写入文件*/fclose(fp); /*关闭文件*/;getchar();}/*浏览全部学生信息*/void Browse(struct students *head){char Num[10]; /*字符型学生学号*/char Name[20]; /*字符型学生姓名*/char Sex[3]; /*字符型学生性别*/double English; /*双精度实型英语成绩*/double Java; /*双精度实型Java成绩*/double Sjjg; /*双精度实数据结构*/double Szdl; /*双精度实型数字电路*/double Jsj; /*计算机组成原理*/if((fp=fopen("students_list.txt","a+"))==NULL){printf("File open error!\n");exit(0);}printf("-------------------------------------------------------------\n");printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(!feof(fp))/*读取并输出*/{fscanf(fp,"%s%s%s%lf%lf%lf%lf%lf",Name,Num,Sex,&English,&Java,&Sjjg,&Sz dl,&Jsj);printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",Name,Num,Sex,English,Java,Sjjg,Szdl,Jsj);};if(fclose(fp)){printf("Can not close the file!\n");exit(0);}}/*从tushu_list中读取数据构建链表*/struct students * create(struct students * head,int *n){FILE *fp;struct students*p,*p1,*p2;if((fp=fopen("students_list.txt","a+"))==NULL){printf("File open error!\n");exit(0);}while(!feof(fp)){(*n)++;p=(struct students *)malloc(sizeof(struct students));fscanf(fp,"%s%s%s%lf%lf%lf%lf%lf",p->Name,p->Num,p->Sex,&p->English,&p->Java,&p->Sjjg,&p->Szdl,&p->Jsj);if(head==NULL){head=p;p1=p;}else{p1->next=p;p2=p1;p1=p;}}p2->next=NULL;free(p);(*n)--;fclose(fp);return head;}/*按姓名查询学生信息*/void FindofName(struct students *head){int i=0,n=0;char b[20];struct students *p;head=create(head,&n);p=head;printf("\n请输入要查询的学生姓名:");scanf("%s",b);while(p!=NULL){if(strcmp(p->Name,b)==0){printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);i++;}p=p->next;}if(i==0)printf("\n对不起!没有找到名为“%s”的学生信息!\n",b);}/*按学号查询学生信息*/void FindofNum(struct students *head){int i=0,n;char b[20];struct students *p;head=create(head,&n);p=head;printf("\n请输入要查询的学生学号:");scanf("%s",b);while(p!=NULL){if(strcmp(p->Num,b)==0){printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);i++;}p=p->next;}if(i==0)printf("\n对不起!没有找到学号为“%s”学生信息!\n",b);}/*按英语成绩排序*/void SortEnglish(struct students * head){struct students *p,*tail; /*定义中间变量*/int n;double English;p=(struct students *)malloc(sizeof(struct students));head=create(head,&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;English=p->English; /*将链表中第一个成绩赋给English*/while(p!=NULL){if((p->English)>English)/*比较*/English=p->English;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->English==English){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->English==English){ /*分数相同时无需比较*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);/*浏览排序后的信息*/printf("按英语成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按JAVA成绩排序*/void SortJava(struct students * head){struct students *p,*tail; /*定义中间变量*/int n;double Java;p=(struct students *)malloc(sizeof(struct students));head=create(head,&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;Java=p->Java; /*将链表中第一个成绩赋给Java*/while(p!=NULL){if((p->Java)>Java)/*比较*/Java=p->Java;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->Java==Java){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->Java==Java){ /*成绩相同时无需比较*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);/*浏览排序后的信息*/printf("按Java成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按数据结构排序*/void SortSjjg(struct students * head){struct students *p,*tail; /*定义中间变量*/int n;double Sjjg;p=(struct students *)malloc(sizeof(struct students));head=create(head,&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;Sjjg=p->Sjjg; /*将链表中第一个成绩赋给Sjjg*/while(p!=NULL){if((p->Sjjg)>Sjjg)/*比较*/Sjjg=p->Sjjg;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->Sjjg==Sjjg){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->Sjjg==Sjjg){ /*成绩相同时无需比较*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);/*浏览排序后的信息*/printf("按数据结构成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按数字电路排序*/void SortSzdl(struct students * head){struct students *p,*tail; /*定义中间变量*/int n;double Szdl;p=(struct students *)malloc(sizeof(struct students));head=create(head,&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;Szdl=p->Szdl; /*将链表中第一个成绩赋给Szdl*/while(p!=NULL){if((p->Szdl)>Szdl)/*比较*/Szdl=p->Szdl;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->Szdl==Szdl){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->Szdl==Szdl){ /*成绩相同时无需比较*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);/*浏览排序后的信息*/printf("按数字电路成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按计算机组成原理排序*/void SortJsj(struct students * head){struct students *p,*tail; /*定义中间变量*/int n;double Jsj;p=(struct students *)malloc(sizeof(struct students));head=create(head,&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;Jsj=p->Jsj; /*将链表中第一个成绩赋给Jsj*/while(p!=NULL){if((p->Jsj)>Jsj)/*比较*/Jsj=p->Jsj;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->Jsj==Jsj){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->Jsj==Jsj){ /*成绩相同时无需比较*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);/*浏览排序后的信息*/printf("按计算机组成原理成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按学号删除学生成绩信息*/struct students * Delete(struct students * head,char m[15]){struct students *ptr1,*ptr2;int n;printf("\n所有学生信息如下:\n");Browse(head);printf("\n请输入想要删除的学生学号:");scanf("%s",m);head=create(head,&n);if(head==NULL){printf("无学生信息!\n");return head;}if((strcmp(head->Num,m)==0)&&head!=NULL){ptr2=head;head=head->next;free(ptr2);}if(strcmp(head->Num,m)!=0){ptr1=head;ptr2=head->next;while(ptr2!=NULL){if(strcmp(ptr2->Num,m)==0){ptr1->next=ptr2->next;free(ptr2);}elseptr1=ptr2;ptr2=ptr1->next;}}fprint_(head);printf("\n学号为' %s '学生信息已被删除,并保存至文件!\n",m);return head;}/*修改学生信息(按编号修改)*/struct students * Revise(){int n=0,t;char num[10];char Num[10]; /*字符型学生学号*/char Name[20]; /*字符型学生姓名*/char Sex[3]; /*字符型学生性别*/double English; /*双精度实型英语成绩*/double Java; /*双精度实型Java成绩*/double Sjjg; /*双精度实数据结构*/double Szdl; /*双精度实型数字电路*/double Jsj; /*计算机组成原理*/struct students *head=NULL;struct students *p;printf("\n所有学生信息如下:\n");Browse(head);head=create(head,&n);printf("\n输入需要修改的学生的学号:");scanf("%s",num);p=head;while(head!=NULL){if(strcmp(p->Num,num)==0){system("cls");Revisemenu();printf("编号为%s的学生信息如下:\n",num);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);while(1){printf("请选择需要修改的信息:");scanf("%d",&t);switch(t){case 1:printf("请输入新姓名:");scanf("%s",Name);strcpy(p->Name,Name);break;case 2:printf("请输入新学号:");scanf("%s",&Num);strcpy(p->Num,Num);break;case 3:printf("请输入新性别:");scanf("%s",Sex);strcpy(p->Sex,Sex);break;case 4:printf("请输入新英语成绩:");scanf("%lf",&English);p->English=English;break;case 5:printf("请输入新Java成绩:");scanf("%lf",&Java);p->Java=Java;break;case 6:printf("请输入新数据结构成绩:");scanf("%lf",&Sjjg);p->Sjjg=Sjjg;break;case 7:printf("请输入新数字电路成绩:");scanf("%lf",&Szdl);p->Szdl=Szdl;break;case 8:printf("请输入新计算机组成原理成绩:");scanf("%lf",&Jsj);p->Jsj=Jsj;break;case 0:system("cls");menu();goto lab;break;default:printf("对不起,输入有误!");break;}}}elsep=p->next;}lab:fprint_(head);printf("修改完成,并储存至文件!\n");return head;}/*主函数*/void main(){int choice,ch;char m[15];struct students *head=NULL;secret();menu();while(1){printf("请输入选项:");scanf("%d",&choice);switch(choice){case 1:Input();break;case 2:system("cls");menu();Browse(head);break;case 3:system("cls");menu();FindofNum(head);break;case 4:system("cls");menu();FindofName(head);break;case 5:system("cls");Sortmenu();do{printf("请输入您的选择:");scanf("%d",&ch);switch(ch){case 1:system("cls");Sortmenu();SortEnglish(head);break;case 2:system("cls");Sortmenu();SortJava(head);break;case 3:system("cls");Sortmenu();SortSjjg(head);break;case 4:system("cls");Sortmenu();SortSzdl(head);break;case 5:system("cls");Sortmenu();SortJsj(head);break;}}while(ch!=0);system("cls");menu();break;case 6:system("cls");menu();Revise();break;case 7:system("cls");menu();head=Delete(head,m);break;case 0:system("cls");printf("\t\t欢迎下次再来!");exit(0);default:printf("对不起,输入有误!");break;}}return ;}。
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。
学生成绩管理系统c语言课程设计一、引言学生成绩管理系统是一种可以帮助学校或教育机构管理学生的成绩、课程和考试信息的软件。
本文将介绍一个基于C语言的学生成绩管理系统的设计过程。
二、需求分析在设计一个学生成绩管理系统之前,我们需要先进行需求分析。
以下是该系统需要满足的基本需求:1. 学生信息管理:包括添加、删除和修改学生信息,如姓名、性别、年龄等;2. 课程信息管理:包括添加、删除和修改课程信息,如课程名称、授课教师等;3. 成绩录入:可以录入每个学生在每门课程中的成绩;4. 成绩查询:可以查询某个学生在某门课程中的成绩以及某门课程所有学生的成绩排名等;5. 成绩统计:可以统计某个班级或某门课程所有学生的平均分、最高分和最低分等。
三、系统设计1. 数据结构设计为了实现上述需求,我们需要定义一些数据结构来存储相关信息。
以下是我们所定义的数据结构:(1)Student结构体:用于存储每个学生的基本信息,包括姓名、性别、年龄等。
typedef struct {char name[20];char sex[10];int age;} Student;(2)Course结构体:用于存储每门课程的基本信息,包括课程名称、授课教师等。
typedef struct {char name[20];char teacher[20];} Course;(3)Score结构体:用于存储每个学生在每门课程中的成绩。
typedef struct {int student_id;int course_id;float score;} Score;(4)Class结构体:用于存储某个班级的所有学生和所选的所有课程。
typedef struct {Student students[MAX_STUDENT_NUM];int student_num;Course courses[MAX_COURSE_NUM];int course_num;} Class;2. 功能实现在上述数据结构定义完成之后,我们可以开始实现各个功能模块。