#include<stdio.h>
#define N 200//最大人数
//now记录当前存储的学生数量
int now=0;
struct student
{
int num;
int term;
int classe;
char name[10];
float score[4];
float sum;
float aver;
}stu[N];
void input();//学生信息录入
void sort();//按成绩排序
void update();//修改成绩
void search();//按学号查询成绩
void output();//按班级输出学生信息
void lofstudent();//不及格学生名单
void menu();//显示系统主菜单函数
//主函数
void main(void)
{
int op;//operation
menu();
scanf("%d",&op);
while(op!=0)
{
switch(op)
{
case 1:
input();
break;
case 2:
sort();
output();
break;
case 3:
update();
break;
case 4:
search();
break;
case 5:
lofstudent();
break;
default:printf("没有此选项,请重新输入!");
}
menu();
scanf("%d",&op);
}
}
//显示系统主菜单函数
void menu()
{
printf(" 学生信息管理系统 \n");
printf(" ************************************* \n");
printf(" * 0:退出 1 :输入学生信息 * \n");
printf(" * 2:输出信息 3 :修改信息 * \n");
printf(" * 4:查询成绩 5 :不及格科目及名单 * \n");
printf(" ************************************* \n");
}
//学生信息录入
void input()
{
char ch;
int i=0,j=0;
do
{
printf("请输入班级: ");
scanf("%d",&stu[i].classe);
printf("请输入学期: ");
scanf("%d",&stu[i].term);
printf("请输入学号: ");
scanf("%d",&stu[i].num);
printf("请输入姓名: ");
scanf("%s",&stu[i].name);
printf("请输入4门课程的分数(分别为语文,数学,英语,计算机):");
for(j=0;j<4;j++)
{
scanf("%f",&stu[i].score[j]);
//每个学生的总分
stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3];
//每个学生的平均分
stu[i].aver=stu[i].sum/(float)4.0;
}
//读取一个键盘回车
getchar();
printf("您还要继续输入吗?输入y/n(确认/取消)\n");
//读取当前的键盘输入,判断是否继续输入
ch=getchar();
now=++i;
}while(ch!='n');
}
//按班级输出学生信息
void output()
{
int s,i;
printf("请输入要输出的班级: \n");
scanf("%d",&s);
printf("学号\t姓名\t学期\t语 文 数 学 英 语 计算机 总分 平均分\n");
for(i=0;i<now;i++)
{
//判断是否符合要输出的班级
if(s==stu[i].classe)
{ //打印学生信息
printf("%d\t%s\t%d\t%5.2f %5.2f %5.2f %5.2f %5.2f %5.2f\n",stu[i].num,stu[i].name,stu[i].term,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].aver);
}
}
}
//修改成绩
void update()
{
int a,m,num,j;
printf(" 修改信息的班级");
scanf("%d",&a);
printf(" 修改信息的学期");
scanf("%d",&m);
printf("要修改学生的学号");
scanf("%d",&num);
for(j=0;j<now;j++)
if(stu[j].num==num) break;
if(j<now)
{
printf(" 请输入要修改语文成绩:");
scanf("%f",&stu[j].score[0]);
printf(" 请输入要修改数学成绩:");
scanf("%f",&stu[j].score[1]);
printf(" 请输入要修改英语成绩:");
scanf("%f",&stu[j].score[2]);
printf(" 请输入要修改计算机:");
scanf("%f",&stu[j].score[3]);
//重新求每个学生的总分
stu[j].sum=stu[j].score[0]+stu[j].score[1]+stu[j].score[2]+stu[j].score[3];
//重新求每个学生的平均分
stu[j].aver=stu[j].sum/(float)4.0;
}
else printf("没有找到该学生的信息\n");
}
//对学生按平均分的高低排序
void sort()
{
struct student p;
int k,i,j,op;
printf(" 请输入排序方式:1 从高到底 2 从低到高 ");
scanf("%d",&op);
for(i=0;i<now;i++)
{
//每个学生的总分
stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3];
//每个学生的平均分
stu[i].aver=stu[i].sum/(float)4.0;
}
if(op==1)
{
//冒泡排序法由大到小
for(i=0;i<now-1;i++)
{
k=i;
for(j=i+1;j<now;j++)
{
if(stu[j].aver>stu[k].aver)
k=j;
}
//最大的保存在k中
if(k!=i)
{
p=stu[i];
stu[i]=stu[k];
stu[k]=p;
}
}
}else
{
//冒泡排序法由小到大
for(i=0;i<now-1;i++)
{
k=i;
for(j=i+1;j<now;j++)
{
if(stu[j].aver<stu[k].aver)
k=j;
}
//最小的保存在k中
if(k!=i)
{
p=stu[i];
stu[i]=stu[k];
stu[k]=p;
}
}
}
}
//按学号查询成绩
void search()
{
int num,i;
printf("请输入要查询的学号");
scanf("%d",&num);
printf("学期\t姓名\t班级 语 文 数 学 英 语 计算机 总分 平均分\n");
for(i=0;i<now;i++)
if(stu[i].num==num)break;
if(i<now)
{
printf("%3d\t%s\t%3d %5.2f %5.2f %5.2f %5.2f %5.2f %5.2f\n",stu[i].term,stu[i].name,stu[i].classe,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].aver);
}
else printf("不存在该学生\n");
}
//不及格学生名单
void lofstudent()
{
int n,i;
printf("请输入要查看的课程编号(默认:1 语文 2 数学 3 英语 4 计算机):");
scanf("%d",&n);
printf("***************成绩不及格学生信息如下************\n\n");
printf("学期 班级 学号 姓名 课程%d\n",n);
//此处是用数组存放的课程,数组最大下标为3,因此需要-1
n--;
for(i=0;i<now;i++)
{
//输出不及格学生名单及成绩
if(stu[i].score[n]<60)
printf("%d\t%d\t%d\t%s\t%3.1f\n",stu[i].term,stu[i].classe,stu[i].num,stu[i].name,stu[i].score[n]);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
设计内容与要求: 对学生成绩进行管理,学生信息包括:学号、姓名、班级、课程1、课程2、课程3、课程4、学期。 基本要求 (1) 能按学期、按班级完成对学生成绩的录入、修改; (2) 能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序; (3) 能查询学生成绩,不及格科目及学生名单; (4) 能按班级输出学生的成绩单。 此代码采用C语言实现了上述功能,是不可多得的c语言程序设计代码。内含大量注释,适合新手小白课设答疑写报告!
资源推荐
资源详情
资源评论
收起资源包目录
学生成绩管理系统设计.zip (1个子文件)
学生成绩管理系统设计.txt 6KB
共 1 条
- 1
资源评论
- 生活教会我们2023-07-29这个文件的界面简洁清晰,让人一目了然,非常易于上手。
- 人亲卓玛2023-07-29这个文件的设计非常实用,能够方便地管理学生成绩信息,提高教学效率。
- 洋葱庄2023-07-29这个学生成绩管理系统设计.zip文件让人眼前一亮,操作简单,功能齐全。
- 一筐猪的头发丝2023-07-29学生成绩管理系统设计.zip文件的功能设计合理,满足了我对学生成绩管理的需求,十分实用。
- 三更寒天2023-07-29使用这个学生成绩管理系统设计.zip文件,我能够轻松地查看学生的成绩情况,提供及时的反馈。
发奋的小张
- 粉丝: 571
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功