用c语言编写学生成绩管理系统.docx
- 文档编号:10080563
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:24
- 大小:24.28KB
用c语言编写学生成绩管理系统.docx
《用c语言编写学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《用c语言编写学生成绩管理系统.docx(24页珍藏版)》请在冰点文库上搜索。
用c语言编写学生成绩管理系统
#include
指令
#include
符串函数
#include
明
#include
制台进行数据输入以及输出
#define N 2000//最多的人数
人
#define M 3//统计成绩
typedef struct student//定义类型
{char number[10];//保存所有人
的学号
char name[20];//保存学生姓
名
char sex[10];//保存性别
float score[M];//保存所有课程
成绩
float aver;//保存每个人的
平均成绩
float total;//总计成绩
}STU;
STU stu[N];
int n;
void inputscore(void);//学生成绩新建
void savescore(void);//学生成绩保存
void avergescore(void);//学生平均成绩
void total(void);//学生成绩总计
void modifyscore(void);//学生成绩修改
void lookscore(void);//学生成绩查看
void searchscore(void);//学生成绩查询
void statistic(void);//学生成绩统计
void add(void);//学生成绩添
加
void modify(void);//学生成绩修
改
void delscore(void);//学生成绩删除
void menu(void);//学生成绩菜
单
void main()
{short int flag=0;
menu();
do
{flag=1;
switch(getch())
{case '1' :
inputscore();break;//在菜单界面输入 1,调用 i 函数 nputscore()实现
输入学生成绩信息功能
case '2' :
lookscore();break;//在菜单界面输入 2,调用函数 lookscore()实现
学生成绩按平均分高低排序输出,同时 lookscore()函数调用 avregescore()函数实现各个学生的
平均分计算
case '3' :
searchscore();break;//在菜单界面输入 3,调用 searchscore()函数实现
通过学号查找学生成绩信息功能
case '4' :
statistic();break;//在菜单界面输入 4,调用 statistic()函数输出每
一门课程的最高分,平均分以及不及格人员
case '5' :
modify();break;//在菜单界面输入 5,调用 modify()函数实现通过
学号修改学生成绩的功能
case '6' :
add();break;//在菜单界面输入 6,调用 add()函数实现添
加学生成绩
case '7' :
delscore();break;//在菜单界面输入 7,调用 delscore()函数实现删
除指定学生的成绩
case '8' :
savescore();break;//在菜单界面输入 8,调用 savescore()函数将学生
成绩信息保存
case '9' :
exit(0);break;//在菜单界面输入 9,退出成绩管理系统
default :
printf("输入有误\n");
}
printf("按任意键继续\n");
getch();//按任意键继续,起到暂停的作用,函数头文件 conio.h 已经定义过
menu();// 菜单
}while (flag==1);
}
void menu(void)
{
system("cls");//清屏
printf("\n");
printf("★★★★★★★欢迎进入学生成绩管理系统★★★★★★★\n");
printf("菜单\n");
printf("☆输入成绩-------------------------------------1\n");
printf("☆查看成绩及成绩排序---------------------------2\n");
printf("☆查询学生成绩---------------------------------3\n");
printf("☆成绩统计-------------------------------------4\n");
printf("☆修改成绩-------------------------------------5\n");
printf("☆添加成绩-------------------------------------6\n");
printf("☆删除成绩-------------------------------------7\n");
printf("☆保存成绩-------------------------------------8\n");
printf("☆退出系统-------------------------------------9\n");
printf("★★★★★★★★★★★★★★★★★★★★★★★★\n");
printf("请输入您的选择(1~9)\n");
}
/***************输入各个同学的学生信息******************************/
void inputscore(void)//输入成绩
{int i,j;
system("cls");//清屏专用,以下出现位置作用相同
printf("已经转到输入成绩菜单\n");
printf("请输入学生总数:
\n");
scanf("%d",&n);
printf("提示:
输入学号时请输入 9 位学生编号:
图书借阅证上的学号\n");//因二维表
上下需对正故有此要求
for(i=0;i {printf("\n"); printf("请输入第%d 位学生的学号: \n",i+1); scanf("%s",stu[i].number);//输入学生学号 printf("姓名: \n"); scanf("%s",stu[i].name);//输入学生名字 printf("请输入该学生性别\n"); scanf("%s",stu[i].sex);//输入性别 printf("请输入学生成绩: \n"); printf("高数分\t 英语分\tC 语言分\n"); for(j=0;j scanf("%f",&stu[i].score[j]);//输入高数、英语、C 语言的成绩 } printf("成功输入(按任意键继续后请输入 8 进行保存)\n"); } /*****************计算各个同学的总分*****************************/ void total(void) {int i,j;//定义变量 i,j;i 用来表示学生个数,j 则用来表示学生每门 课的分数 for(i=0;i {stu[i].total=0; for(j=0;j { stu[i].total+=stu[i].score[j]; } } } /*****************计算各个同学的平均分*****************************/ void avergescore(void) {int i,j;//定义变量 i,j;i 用来表示学生个数,j 则用来表示学生每门课的 分数 for(i=0;i {stu[i].aver=0; for(j=0;j { stu[i].aver+=stu[i].score[j]; } stu[i].aver=stu[i].aver/M;//计算平均分 } } /************查看学生成绩及根据平均分对学生进行排序*********************/ void lookscore(void) {int i,j,k;// i,j,k 都表示学生成绩比较用来调换顺序 STU t; total();// 此处用来对调用函数的声明 avergescore(); system("cls"); // 清屏专用 printf("已经转到查看成绩及成绩排序菜单\n"); for(i=0;i {for(k=i,j=i+1;j if(stu[j].aver>stu[k].aver) k=j; if(k! =j) {t=stu[k]; stu[k]=stu[i]; stu[i]=t; } } printf("名次\t 学号\t\t 姓名\t 性别\t 高数分\t 英语分\tC 语言分\t 总分\t 平均分\n"); for(i=0;i {printf("%d\t%s\t%s\t%s\t",i+1,stu[i].number,stu[i].name,stu[i].sex); for(j=0;j printf("%4.2f\t",stu[i].score[j]); printf("%4.2f\t",stu[i].total); printf("%4.2f",stu[i].aver); printf("\n"); } } /*****************通过输入学号查找学生成绩***************************/ void searchscore(void) {char a[10];//定义数组 a 的类型可输入数字,字母或字符 int i,j; system("cls");//清屏 printf("已经转到查询学生成绩菜单\n"); printf("请输入需查询的学生学号\n"); scanf("%s",a); for(i=0;i {if(strcmp(a,stu[i].number)==0)//如果输入的学号为真则输出相关信息 {printf("名次\t 学号\t\t 姓名\t 性别\t 高数分\t 英语分\tC 语言分\t 总分\t 平均分\n"); printf("%d\t%s\t%s\t%s\t",i+1,stu[i].number,stu[i].name,stu[i].sex); for(j=0;j printf("%4.2f\t",stu[i].score[j]); printf("%4.2f\t",stu[i].total); printf("%4.2f",stu[i].aver); printf("\n"); break;//找到该学生成绩信息后跳出 for 循环 } else printf("未找到该学生信息\n"); } } /*******统计学生成绩信息,计算出每一门课的最高分****************/ void statistic() { int i,j=0,k=0,c1; char str[2]; float average[M],sum=0; printf("没有可被查找的记录\n");// system("cls"); if(M==0)//如果没有输入成绩则输出没有可查找的记录 printf("没有可被查找的记录\n"); else { while (1) { printf("下面将统计考试成绩\n"); printf("请选择你要统计哪科的成绩 1.高数\t2.英语\t3.C 语言\n"); scanf("%d",&c1); printf("\t 一共有%d 个记录\n",M); /*总共记录数*/ switch(c1) { case 1: //用来判断高数的最高分,平均分,输出不及格人员名单 for(i=0;i { sum+=stu[i].score[0]; if(stu[k].score[0]>stu[i].score[0]) k=i; if(stu[j].score[0] } average[0]=sum/M; printf("\t 高数的最高分: \n"); printf("\t\t 学号: %s 姓名: %s 分数: %.2f\n",stu[j].number,stu[j].name,stu[j].score[0]); printf("\t 高数的最低分是: \n"); printf("\t\t 学号: %s 姓名: %s 分数: %.2f\n",stu[k].number,stu[k].name,stu[k].score[0]); printf("\t 高数的平均分是 %5.2f\n",average[0]); printf("平均分低于 60 分的学生成员名单\n"); for(i=0;i { if(stu[i].score[0]<60) printf("%s\n",stu[i].name); } break; case 2: // 用来判断英语的最高分,平均分,输出不及格人员名单 for(i=0;i { sum+=stu[i].score[1]; if(stu[k].score[1]>stu[i].score[1]) k=i; if(stu[j].score[1] } average[1]=sum/M; printf("\t 英语的最高分: \n"); printf("\t\t 学号: %s 姓名: %s 分数: %.2f\n",stu[j].number,stu[j].name,stu[j].score[1]); printf("\t 英语的最低分是: \n"); printf("\t\t 学号: %s 姓名: %s 分数: %.2f\n",stu[k].number,stu[k].name,stu[k].score[1]); printf("\t 英语的平均分是 %5.2f\n",average[1]); printf("平均分低于 60 分的学生成员名单\n"); for(i=0;i { if(stu[i].score[1]<60) printf("%s\n",stu[i].name); } break; case 3: //用来判断 C 语言的最高分,平均分,输出不及格人员名单 for(i=0;i { sum+=stu[i].score[2]; if(stu[k].score[2]>stu[i].score[2]) k=i; if(stu[j].score[2] } average[2]=sum/M; printf("\tC 语言的最高分: \n"); /*最高分*/ printf("\t\t 学号: %s 姓名: %s 分数: %.2f\n",stu[j].number,stu[j].name,stu[j].score[2]); printf("\tC 语言的最低分是: \n"); /*最低分*/ printf("\t\t 学号: %s 姓名: %s 分数: %.2f\n",stu[k].number,stu[k].name,stu[k].score[2]); printf("\tC 语言的平均分是 %5.2f\n",average[2]); printf("平均分低于 60 分的学生成员名单\n"); for(i=0;i { if(stu[i].score[2]<60) printf("%s\n",stu[i].name); } break; default: //如果输入的数字不符合要求则显示错误信息 printf("输入错误! 请输入 1~3 之间的数\n"); } sum=0; getchar(); printf("是否继续进行统计? (y/n)"); gets(str); if(str[0]=='y'||str[0]=='Y') statistic(); else break; } } } /***************修改学生成绩*****************/ void modify(void) { char a[10]; int i,j; system("cls"); printf("已经转到修改成绩菜单\n"); printf("请输入需要修改成绩的学生学号\n"); scanf("%s",a); for(i=0;i {if(strcmp(a,stu[i].number)==0) {printf("名次\t 学号\t\t 姓名\t 性别\t 高数分\t 英语分\tC 语言分\t 总分\t 平均分\n"); printf("%d\t%s\t%s\t%s\t",i+1,stu[i].number,stu[i].name,stu[i].sex); for(j=0;j printf("%4.2f\t",stu[i].score[j]); printf("%4.2f",stu[i].total); printf("%4.2f",stu[i].aver); printf("\n"); printf("请重新输入该学生的姓名: \n"); scanf("%%s",stu[i].number); printf("\n"); scanf("%s",stu[i].name); printf("请输入该学生性别\n"); scanf("%s",stu[i].sex); printf("请重新输入该学生成绩: \n"); printf("高数分\t 英语分\tC 语言分\n"); for(j=0;j scanf("%f",&stu[i].score[j]); printf("修改成功\n"); break;//找到该学生成绩后进行修改,跳出 for 循环 } else printf("请确认该学生是否为该校学生! \n"); } } /*****************添加学生成绩********************/ void add(void) { int a,i,j;//i 定义为学生,j 为学生分数,a 代表加入学生的数量 system("cls"); printf("已经转到添加成绩菜单\n"); printf("请输入新增加的学生人数: \n"); scanf("%d",&a); n=n+a; for(i=n-a;i {printf("\n"); printf("请输入第%d 位学生的学号: \n",i+1); scanf("%s",stu[i].number); printf("姓名: \n"); scanf("%s",stu[i].name); printf("输入该学生性别\n"); scanf("%s",stu[i].sex); printf("请输入学生成绩: \n"); printf("高数分\t 英语分\tC 语言分\n"); for(j=0;j scanf("%f",&stu[i].score[j]); printf("添加成功\n"); } } /*******************删除学生成绩*************************/ void delscore(void) { int i,j,c; char m,a[10];//m 用来存放后面输入删除的字母 y 或 n system("cls"); printf("已经转到删除成绩菜单\n"); printf("请输入学生学号\n"); scanf("%s",a); for(i=0;i {if(strcmp(a,stu[i].number)==0) {printf("名次\t 学号\t\t 姓名\t 性别\t 高数分\t 英语分\tC 语言分\t 总分\t 平均分\n"); printf("%d\t%s\t%s\t%s\t",i+1,stu[i].number,stu[i].name,stu[i].sex); for(j=0;j printf("%4.2f\t",stu[i].score[j]); printf("%4.2f\t",stu[i].total); printf("%4.2f",stu[i].aver); printf("\n"); c=i; break; } else printf("未找到该学生信息\n"); } printf("是否删除该学生成绩(y/n)\n"); scanf("%s",&m); if(m=='y') { for(i=c;i stu[i]=stu[i+1];//结构体整体赋值将后一位学生成绩信 息拷贝进入前一位学生信息的存储位置 n=n-1;//删除该学生信息后学生总数减一 printf("删除成绩成功\n"); } else printf("删除成绩失败\n"); } /******************保存学生成绩************************/ void savescore(void) { FILE *fp;//定义指针 int i,flag=1; char m; system("cls"); printf("已经转到保存成绩菜单\n"); puts("是否保存学生成绩(y/n)"); scanf("%s",&m); if(m=='y') {if((fp=fopen("score.dat","wb"))==NULL)//从文件 score 中打开 {printf("文件打开失败\n"); return; } for(i=0;i if(fwrite(&stu[i],sizeof(struct student),1,fp)! =1)//学生成绩写入 {printf("保存失败\n"); flag=0; } if(flag==1) printf("保存成功! \n"); fclose(fp);//界面关闭 } else return; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 编写 学生 成绩管理系统
![提示](https://static.bingdoc.com/images/bang_tan.gif)