收藏 分销(赏)

用c语言编写学生成绩管理系统资料讲解.doc

上传人:丰**** 文档编号:3974615 上传时间:2024-07-24 格式:DOC 页数:12 大小:42KB
下载 相关 举报
用c语言编写学生成绩管理系统资料讲解.doc_第1页
第1页 / 共12页
用c语言编写学生成绩管理系统资料讲解.doc_第2页
第2页 / 共12页
用c语言编写学生成绩管理系统资料讲解.doc_第3页
第3页 / 共12页
用c语言编写学生成绩管理系统资料讲解.doc_第4页
第4页 / 共12页
用c语言编写学生成绩管理系统资料讲解.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、用c语言编写学生成绩管理系统精品资料#include /编译预处理指令#include /定义处理字符串函数#include /宏指令的声明#include /定义通过控制台进行数据输入以及输出#define N 2000 /最多的人数人#define M 3 /统计成绩typedef struct student /定义类型char number10; /保存所有人的学号char name20; /保存学生姓名 char sex10; /保存性别float scoreM; /保存所有课程成绩float aver; /保存每个人的平均成绩float total; /总计成绩STU;STU st

2、uN;int n;void inputscore(void); /学生成绩新建void savescore(void); /学生成绩保存void avergescore(void); /学生平均成绩void total(void); /学生成绩总计void modifyscore(void); /学生成绩修改void lookscore(void); /学生成绩查看 void searchscore(void); /学生成绩查询void statistic(void); /学生成绩统计void add(void); /学生成绩添加void modify(void); /学生成绩修改void d

3、elscore(void); /学生成绩删除void menu(void); /学生成绩菜单void main()short int flag=0;menu();doflag=1;switch(getch()case 1 : inputscore();break; /在菜单界面输入1,调用i函数nputscore()实现输入学生成绩信息功能case 2 : lookscore();break; /在菜单界面输入2,调用函数lookscore()实现学生成绩按平均分高低排序输出,同时lookscore()函数调用avregescore()函数实现各个学生的平均分计算case 3 : search

4、score();break; /在菜单界面输入3,调用searchscore()函数实现通过学号查找学生成绩信息功能case 4 : statistic();break; /在菜单界面输入4,调用statistic()函数输出每一门课程的最高分,平均分以及不及格人员case 5 : modify();break; /在菜单界面输入5,调用modify()函数实现通过学号修改学生成绩的功能case 6 : add();break; /在菜单界面输入6,调用add()函数实现添加学生成绩case 7 : delscore();break; /在菜单界面输入7,调用delscore()函数实现删除指

5、定学生的成绩case 8 : savescore();break; /在菜单界面输入8,调用savescore()函数将学生成绩信息保存case 9 :exit(0);break; /在菜单界面输入9,退出成绩管理系统default : printf(输入有误n);printf(按任意键继续n);getch(); /按任意键继续,起到暂停的作用,函数头文件conio.h已经定义过menu(); / 菜单while (flag=1);void menu(void)system(cls); /清屏printf(n);printf( 欢迎进入学生成绩管理系统n);printf( 菜单 n);prin

6、tf( 输入成绩-1n);printf( 查看成绩及成绩排序-2n);printf( 查询学生成绩-3n);printf( 成绩统计-4n);printf( 修改成绩-5n);printf( 添加成绩-6n);printf( 删除成绩-7n); printf( 保存成绩-8n);printf( 退出系统-9n);printf( n);printf( 请输入您的选择(19)n);/*输入各个同学的学生信息*/void inputscore(void) /输入成绩int i,j;system(cls); /清屏专用,以下出现位置作用相同printf( 已经转到输入成绩菜单n);printf(请输入

7、学生总数:n);scanf(%d,&n); printf(提示:输入学号时请输入9位学生编号:图书借阅证上的学号n);/因二维表上下需对正故有此要求for(i=0;in;i+) printf(n);printf(请输入第%d位学生的学号:n,i+1); scanf(%s,stui.number); /输入学生学号printf(姓名:n);scanf(%s,stui.name); /输入学生名字printf(请输入该学生性别n);scanf(%s,stui.sex); /输入性别printf(请输入学生成绩:n);printf(高数分t英语分tC语言分n);for(j=0;jM;j+)scanf

8、(%f,&stui.scorej); /输入高数、英语、C语言的成绩printf( 成功输入(按任意键继续后请输入8进行保存)n);/*计算各个同学的总分*/void total(void)int i,j; /定义变量i,j;i用来表示学生个数,j则用来表示学生每门课的分数for(i=0;in;i+)stui.total=0;for(j=0;jM;j+) /M表示科目在头文件出已经定义stui.total+=stui.scorej;/*计算各个同学的平均分*/void avergescore(void)int i,j; /定义变量i,j;i用来表示学生个数,j则用来表示学生每门课的分数for(

9、i=0;in;i+)stui.aver=0;for(j=0;jM;j+) /M表示科目在头文件出已经定义stui.aver+=stui.scorej;stui.aver=stui.aver/M; /计算平均分/*查看学生成绩及根据平均分对学生进行排序*/void lookscore(void)int i,j,k; / i,j,k都表示学生成绩比较用来调换顺序STU t;total(); / 此处用来对调用函数的声明avergescore();system(cls); / 清屏专用printf( 已经转到查看成绩及成绩排序菜单n);for(i=0;in-1;i+)for(k=i,j=i+1;js

10、tuk.aver)k=j;if(k!=j)t=stuk;stuk=stui;stui=t;printf(名次t学号tt姓名t性别t高数分t英语分tC语言分t总分t平均分n);for(i=0;in;i+)printf(%dt%st%st%st,i+1,stui.number,stui.name,stui.sex);for(j=0;jM;j+)printf(%4.2ft,stui.scorej);printf(%4.2ft,stui.total);printf(%4.2f,stui.aver);printf(n);/*通过输入学号查找学生成绩*/void searchscore(void)char

11、 a10; /定义数组a的类型可输入数字,字母或字符int i,j;system(cls); /清屏 printf( 已经转到查询学生成绩菜单n);printf(请输入需查询的学生学号n);scanf(%s,a);for(i=0;in;i+)if(strcmp(a,stui.number)=0) /如果输入的学号为真则输出相关信息printf(名次t学号tt姓名t性别t高数分t英语分tC语言分t总分t平均分n);printf(%dt%st%st%st,i+1,stui.number,stui.name,stui.sex);for(j=0;jM;j+)printf(%4.2ft,stui.sco

12、rej);printf(%4.2ft,stui.total);printf(%4.2f,stui.aver);printf(n);break; /找到该学生成绩信息后跳出for循环elseprintf(未找到该学生信息n);/*统计学生成绩信息,计算出每一门课的最高分*/ void statistic() int i,j=0,k=0,c1; char str2; float averageM,sum=0; printf(没有可被查找的记录n); / system(cls); if(M=0) /如果没有输入成绩则输出没有可查找的记录 printf(没有可被查找的记录n); else while(

13、1) printf(下面将统计考试成绩n); printf(请选择你要统计哪科的成绩 1.高数t2.英语t3.C语言n); scanf(%d,&c1); printf(t一共有%d个记录n,M); /*总共记录数*/ switch(c1) case 1: /用来判断高数的最高分,平均分,输出不及格人员名单 for(i=0;istui.score0) k=i; if(stuj.score0stui.score0) j=i; average0=sum/M; printf(t高数的最高分:n); printf(tt学号:%s 姓名:%s 分数:%.2fn,stuj.number,stuj.name,

14、stuj.score0); printf(t高数的最低分是:n); printf(tt学号:%s 姓名:%s 分数:%.2fn,stuk.number,stuk.name,stuk.score0); printf(t高数的平均分是 %5.2fn,average0); printf(平均分低于60分的学生成员名单n); for(i=0;iM;i+)if(stui.score060) printf(%sn,stui.name); break; case 2: / 用来判断英语的最高分,平均分,输出不及格人员名单 for(i=0;istui.score1) k=i; if(stuj.score1st

15、ui.score1) j=i; average1=sum/M; printf(t英语的最高分:n); printf(tt学号:%s 姓名:%s 分数:%.2fn,stuj.number,stuj.name,stuj.score1); printf(t英语的最低分是:n); printf(tt学号:%s 姓名:%s 分数:%.2fn,stuk.number,stuk.name,stuk.score1); printf(t英语的平均分是 %5.2fn,average1); printf(平均分低于60分的学生成员名单n);for(i=0;iM;i+)if(stui.score160) printf

16、(%sn,stui.name); break; case 3: /用来判断C语言的最高分,平均分,输出不及格人员名单 for(i=0;istui.score2) k=i; if(stuj.score2stui.score2) j=i; average2=sum/M; printf(tC语言的最高分:n); /*最高分*/ printf(tt学号:%s 姓名:%s 分数:%.2fn,stuj.number,stuj.name,stuj.score2); printf(tC语言的最低分是:n); /*最低分*/ printf(tt学号:%s 姓名:%s 分数:%.2fn,stuk.number,s

17、tuk.name,stuk.score2); printf(tC语言的平均分是 %5.2fn,average2); printf(平均分低于60分的学生成员名单n);for(i=0;iM;i+)if(stui.score260) printf(%sn,stui.name); break; default: /如果输入的数字不符合要求则显示错误信息printf(输入错误!请输入13之间的数n); sum=0; getchar(); printf(是否继续进行统计?(y/n); gets(str); if(str0=y|str0=Y) statistic(); else break; /*修改学生

18、成绩*/void modify(void) char a10;int i,j;system(cls); printf( 已经转到修改成绩菜单n);printf(请输入需要修改成绩的学生学号n);scanf(%s,a);for(i=0;in;i+)if(strcmp(a,stui.number)=0)printf(名次t学号tt姓名t性别t高数分t英语分tC语言分t总分t平均分n);printf(%dt%st%st%st,i+1,stui.number,stui.name,stui.sex);for(j=0;jM;j+)printf(%4.2ft,stui.scorej);printf(%4.2

19、f,stui.total);printf(%4.2f,stui.aver);printf(n);printf(请重新输入该学生的姓名:n);scanf(%s,stui.number);printf(n);scanf(%s,stui.name);printf(请输入该学生性别n);scanf(%s,stui.sex);printf(请重新输入该学生成绩:n);printf(高数分t英语分tC语言分n);for(j=0;jM;j+)scanf(%f,&stui.scorej); printf(修改成功n);break; /找到该学生成绩后进行修改,跳出for循环elseprintf(请确认该学生是

20、否为该校学生!n);/*添加学生成绩*/void add(void)int a,i,j; /i定义为学生,j为学生分数,a代表加入学生的数量system(cls);printf( 已经转到添加成绩菜单n);printf(请输入新增加的学生人数:n);scanf(%d,&a);n=n+a;for(i=n-a;in;i+) printf(n);printf(请输入第%d位学生的学号:n,i+1); scanf(%s,stui.number);printf(姓名:n);scanf(%s,stui.name);printf(输入该学生性别n);scanf(%s,stui.sex);printf(请输入

21、学生成绩:n);printf(高数分t英语分tC语言分n);for(j=0;jM;j+)scanf(%f,&stui.scorej);printf(添加成功n);/*删除学生成绩*/void delscore(void)int i,j,c;char m,a10; /m用来存放后面输入删除的字母y或nsystem(cls);printf( 已经转到删除成绩菜单n);printf(请输入学生学号n);scanf(%s,a);for(i=0;in;i+)if(strcmp(a,stui.number)=0)printf(名次t学号tt姓名t性别t高数分t英语分tC语言分t总分t平均分n);print

22、f(%dt%st%st%st,i+1,stui.number,stui.name,stui.sex);for(j=0;jM;j+)printf(%4.2ft,stui.scorej);printf(%4.2ft,stui.total);printf(%4.2f,stui.aver);printf(n);c=i;break;elseprintf(未找到该学生信息n);printf(是否删除该学生成绩(y/n)n);scanf(%s,&m);if(m=y)for(i=c;in-1;i+)stui=stui+1; /结构体整体赋值将后一位学生成绩信息拷贝进入前一位学生信息的存储位置n=n-1; /删

23、除该学生信息后学生总数减一printf(删除成绩成功n);elseprintf(删除成绩失败n);/*保存学生成绩*/void savescore(void)FILE *fp; /定义指针int i,flag=1;char m;system(cls);printf( 已经转到保存成绩菜单n);puts(是否保存学生成绩(y/n);scanf(%s,&m);if(m=y)if(fp=fopen(score.dat,wb)=NULL) /从文件score中打开printf(文件打开失败n);return;for(i=0;in;i+)if(fwrite(&stui,sizeof(struct student),1,fp)!=1) /学生成绩写入printf(保存失败n);flag=0;if(flag=1)printf(保存成功!n);fclose(fp); /界面关闭elsereturn; 仅供学习与交流,如有侵权请联系网站删除 谢谢12

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

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

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

关于我们      便捷服务       自信AI       AI导航        获赠5币

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

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

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

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服