手机建立网站软件,单页网站制作需要多少钱,wordpress吃内存cpu,做公众号首图网站C语言综合案例#xff1a;学生成绩管理系统
需求
1.存储最多50名学生的信息#xff08;不使用结构体#xff09;
2.每个学生包含#xff1a;
学号#xff08;字符数组#xff09;姓名#xff08;字符数组#xff09;3门课程成绩#xff08;一维数组#xff09;
…C语言综合案例学生成绩管理系统
需求
1.存储最多50名学生的信息不使用结构体
2.每个学生包含
学号字符数组姓名字符数组3门课程成绩一维数组
3.实现功能菜单
添加学生信息显示所有学生信息计算学生平均分查找最高分科目退出系统
代码
/************************************************************************* File Name: demo.c Author: 张扣 Description:C语言综合案例学生成绩管理系统 Created Time: 2025年02月27日 星期四 21时10分38秒************************************************************************/#include stdio.h
#include string.h//常量定义
#define MAX_STU 50 //定义学生数量
#define NAME_LEN 20 //名字的最大长度
#define ID_LEN 8 //学号的最大长度
#define COURSE_NUM 3 //课程数量//全局数组实现数据存储
char stu_id[MAX_STU][ID_LEN]; //学号二维数组
char stu_name[MAX_STU][NAME_LEN]; //姓名二维数组
int scores[MAX_STU][COURSE_NUM]; //成绩二维数组
int stu_count 0; //当前实际学生数/***输入校验成绩*course 课程名称*/
int get_valid_score(const char* course)//const修饰的变量值不能改变
{int score;while(1){printf(请输入%s成绩(0~100),course);//校验1.校验输入的数据格式 2.校验成绩的范围是否正确if(scanf(%d,score 1 score 0 score 100)){return score;}//输入有误while(getchar() ! \n); //清空输入缓冲区printf(成绩输入有误\n);}
}/***添加学生信息*/
void add_student()
{//判断数组是否已经存满if(stu_count MAX_STU){printf(存储已满\n);return;//函数返回后续代码不再执行}printf(\n---添加第%d个学生---\n,stu_count 1);//输入学号printf(请输入学号);scanf(%s,stu_id[stu_count]);//输入姓名printf(请输入姓名);getchar();scanf(%[^\n],stu_name[stu_count]);//%[^\n]匹配除了\n以外的输入//输入各科成绩scores[stu_count][0] get_valid_score(语文);scores[stu_count][1] get_valid_score(数学);scores[stu_count][2] get_valid_score(英语);stu_count;
}/***显示所有学生信息*/
void show_all()
{if(stu_count 0){printf(暂无学生信息\n);return;//跳出函数后续代码不执行}//格式化输出信息printf(\n%-12s%-20s%-12s%-12s%-12s\n,学号,姓名,语文,数学,英语);for(int i 0; i stu_count; i){//获取学号和姓名printf(%-12s%-20s,stu_id[i],stu_name[i]);for(int j 0; j COURSE_NUM; j){printf(%-12d,scores[i][j]);}printf(\n);}printf(\n);
}/***计算平均分*/
void calc_average()
{if(stu_count 0){printf(暂无数据\n);return;}char target_id[ID_LEN];printf(请输入要查询的学号);scanf(%s,target_id);for(int i 0; i stu_count; i){if(strcmp(stu_id[i],target_id) 0){float sum 0;for(int j 0; j COURSE_NUM; j){sum scores[i][j];}printf(平均分%.2f\n,sum/COURSE_NUM);return;}}printf(未找到该学生\n);
}/***查找最高分科目*/
void find_max()
{int max_score -1;char max_course[20];char max_stu[NAME_LEN];for(int i 0; i stu_count; i){for(int j 0; j COURSE_NUM; j){if(scores[i][j] max_score){max_score scores[i][j];//最高成绩对应的姓名strcpy(max_stu,stu_name[i]);switch(j){case 0:strcpy(max_course,语文);break;case 1:strcpy(max_course,数学);break;case 2:strcpy(max_course,英语);break;}}}}if(max_score ! -1){printf(最高分记录%s的%s获得%d分\n,max_stu,max_course,max_score);}else{printf(暂无数据!\n);}
}int main(int argc,char *argv[])
{//定义一个变量用来接收用户的输入int choice;while(1){//设计头printf(\n 学生成绩管理系统 v1.0 \n);printf(1.添加学生信息\n);printf(2.显示所有学生信息\n);printf(3.查看平均分\n);printf(4.查看最高分\n);printf(5.退出系统\n);printf(请选择操作);//过滤非数字int result scanf(%d,choice);//该判断的作用检测是否输入的是整数输入的数据匹配scanf() 1,不匹配scanf() ! 1if(result ! 1){//如果输入的不是数字就执行这个判断//清空输入缓冲区while(getchar() ! \n);printf(输入有误\n);continue;}//过滤掉15以外的数字//校验switch(choice){case 1://添加学生信息add_student();break;case 2://显示所有学生信息show_all();break;case 3://查看平均分calc_average();break;case 4://查找最高分find_max();break;case 5://退出系统printf(系统已退出\n);return 0;default:printf(无效选项\n);}}return 0;
}