问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用C语言编写一个成绩管理的程序,在该程序的主函数中显示一个菜单,当选...

发布网友 发布时间:2024-09-26 22:54

我来回答

2个回答

热心网友 时间:2024-10-04 07:43

#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "string.h"
#define MAXSTUDENT (1024)
#define CheckData()\
{\
if(!studentNum)\
{\
printf("没有学生数据,按任意键返回……\n");\
getch();\
return;\
}\
}\
int studentNum = 0;
typedef struct Student
{
int id;
int cScore;
int mathScore;
}Student;
void ClearStudent(Student* student)
{
memset((void*)student,0,sizeof(*student));
}
void ShowMainMenu()
{
system("cls");
printf("1.增加记录\n2.计算每个学生的总成绩\n3.计算每门课程的平均成绩\n4.按座号查询学生的成绩\n5.按总分排名\n6.输出前n名的学生的成绩\n7.修改成绩\n0.退出\n");
}
void ShowCountScore(const Student* student)
{
system("cls");
CheckData();
for(int i = 0;i < studentNum;i++)
printf("学生%04d的总成绩:%d\n",(student+i)->id,(student+i)->cScore+(student+i)->mathScore);
printf("\n按任意键继续……");
getch();
}
void ShowClassAvg(const Student* student)
{
system("cls");
CheckData();
double sumc = 0;
double summath = 0;
for(int i = 0;i < studentNum;i++)
{
sumc += (student+i)->cScore;
summath += (student+i)->mathScore;
}
printf("C语言平均成绩为:%lf\n",sumc/studentNum);
printf("数学平均成绩为:%lf\n",summath/studentNum);
printf("\n按任意键继续……");
getch();
}
void AddStudent(Student* student)
{
system("cls");
if(studentNum == MAXSTUDENT)
{
printf("人数已满,按任意键返回……\n");
getch();
}
printf("分别录入座号、C语言成绩、数学成绩:\n");
int id = 0;
int cScore = 0;
int mathScore = 0;
scanf("%d%d%d",&id,&cScore,&mathScore);
for(int i = 0 ;i < studentNum;i++)
if((student+i)->id == id)
{
printf("座号重复,按任意键返回……\n");
getch();
return;
}
(student+studentNum)->id = id;
(student+studentNum)->cScore = cScore;
(student+studentNum)->mathScore = mathScore;
studentNum++;
}
void SelectFromID(const Student* student)
{
system("cls");
CheckData();
printf("输入查询ID:\n");
int id = 0;
scanf("%d",&id);
printf("查询结果:\n");
for(int i = 0;i<studentNum;i++)
if(id == (student+i)->id)
{
printf("C语言成绩为:%d\n数学成绩为:%d\n",(student+i)->cScore,(student+i)->mathScore);
break;
}
printf("\n按任意键继续……");
getch();
}
void SortForCount(Student* student)
{
system("cls");
CheckData();
for(int i = 0;i < studentNum;i++)
{
for(int j = studentNum -1;j > i;j--)
if(((student+j)->cScore+(student+j)->mathScore) > ((student+j-1)->cScore+(student+j-1)->mathScore))
{
Student stu;
stu = *(student+j);
*(student+j) = *(student+j-1);
*(student+j-1) = stu;
}
}
}
void SortForN(Student* student,int n)
{
SortForCount(student);
if(!studentNum)
return;
n = n>studentNum?studentNum:n;
for(int i = 0;i< n;i++)
printf("第%d名:\nID:%d\nC语言成绩为:%d\n数学成绩为:%d\n总分为:%d\n\n",i+1,(student+i)->id,(student+i)->cScore,(student+i)->mathScore,(student+i)->cScore+(student+i)->mathScore);
printf("\n按任意键继续……");
getch();
}
void UpdateScore(Student* student)
{
system("cls");
CheckData();
printf("输入修改ID:\n");
int id = 0;
scanf("%d",&id);
int i = 0;
for(;i<studentNum;i++)
if(id == (student+i)->id)
break;
if(i == studentNum)
printf("\n查无此人,按任意键继续……");
else
{
printf("输入欲修改的C语言成绩、数学成绩:\n");
int cScore = 0;
int mathScore = 0;
scanf("%d%d",&cScore,&mathScore);
(student+i)->cScore=cScore;
(student+i)->mathScore = mathScore;
printf("\n按任意键继续……");
}
getch();
}
void RunStudent(Student* student)
{
while(1)
{
ShowMainMenu();
char chGet = getch();
switch(chGet)
{
case  '1':
AddStudent(student);
break;
case  '2':
ShowCountScore(student);
break;
case '3':
ShowClassAvg(student);
break;
case '4':
SelectFromID(student);
break;
case  '5':
SortForCount(student);
for(int i =0;i<studentNum;i++)
printf("第%d名:\nID:%d\nC语言成绩为:%d\n数学成绩为:%d\n总分为:%d\n\n",i+1,(student+i)->id,(student+i)->cScore,(student+i)->mathScore,(student+i)->cScore+(student+i)->mathScore);
printf("\n按任意键继续……");
getch();
break;
case '6':
{
int n = 0;
printf("输入N:\n");
scanf("%d",&n);
SortForN(student,n);
}
break;
case '7':
UpdateScore(student);
break;
case '0':
return;
default:
break;
}
}
}
int main()
{
Student* allStudent = (Student*)malloc(MAXSTUDENT*sizeof(Student));
memset((void*)allStudent,0,MAXSTUDENT*sizeof(Student));
RunStudent(allStudent);
return 0;
}

热心网友 时间:2024-10-04 07:49

之前做过一个学生管理系统,你这只做一个界面太简单了吧
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 前几天有个自称是农商行的员工来办银行卡跟商家收款二维码,拍了我... 狗狗什么时候开始驱虫?吃什么狗粮,20-? 中国古时分阶段年龄都有那些啊? 铃木红宝um125t要加多少升机油 如果公司破产股东会终止清算吗 闪存表需要安装电池吗 4.2.5 身心疗愈中,所谓的外道,歪道,到底是什么? 歪道词语释义 LSI、Dell、Adaptec等阵列卡的缓存保护技术 90米多三分之一多少米 列式计算:一个二分之一比三分之一多15,这个数是多少? 90升水每次换三分之一是多少升水? 90的三分之一是60的百分之几? 郑州九龙办事处属于哪个税务局 元氏县铲车撞人事件概述 诺基亚6300为什么来电没有声音呢 诺基亚6300震动 诺基亚6300来电声音大小 为什么我的诺基亚6300设置不到来电提醒和信息提醒啊?我开了振动了的... 诺基亚6300不能设置成振动,请问怎么设置才能解决? 为啥孤儿去别人家吃饭,别人家只给他几十粒米饭 连个二两米饭都没有... 猫和老鼠特工行动 特工模式玩法介绍 猫和老鼠手游特工模式怎么玩_猫和老鼠手游特工模式攻略 户口在南京和湖北孝感在武汉可以办理离婚手续吗? 爸爸妈妈离婚了怎么办 鸿运当头k300免驱摄像头无法识别 苹果系统更新要流量吗 为什么iphone用的流量那么快 ...没启动3G及蜂窝数据,请问更新程序费流量吗? ...出现:554 Relay rejected for policy reasons。 梦见用手机照相是什么意思 文科有哪些科目,求助 关于,格力空调“悦风”系列,遥控器上的“温度显示”功能。 格力空调悦风挂机怎么调制冷,什么符号是制冷,谢了我要详细步骤_百度知 ... 高中文科哪些 合同转包差价是如何计算的 用C#计算两种商品的差价代码~ 去嵊泗列岛旅行应该怎么打卡? 秋高气爽什么意思?出处是哪里? 秋高气爽的意思 秋高气爽解释什么意思