用c语言编写学生成绩管理系统.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
em("cls"); // 清屏 printf("\n"); printf(" ***************** 输入学生成绩 *****************\n"); printf("\n"); printf(" 请输入学生人数(不超过 %d 人):", N); scanf("%d", &n); for (i = 0; i < n; i++) { printf("\n"); printf(" 学生 %d 的信息:\n", i + 1); printf(" 学号(最多 %d 位):", strlen(stu[i].number)); scanf("%s", stu[i].number); printf(" 姓名(最多 %d 个字符):", strlen(stu[i].name)); scanf("%s", stu[i].name); printf(" 请输入 %d 门课程的成绩(每门课空格隔开):\n", M); for (j = 0; j < M; j++) { scanf("%f", &stu[i].score[j]); stu[i].total += stu[i].score[j]; } stu[i].aver = stu[i].total / M; } printf("\n"); printf(" 成绩输入完成!\n"); } /*************** 查看所有学生的成绩及排序 *****************/ void lookscore(void) { system("cls"); printf("\n"); printf(" **************** 查看成绩 ****************\n"); printf("\n"); printf(" 学号 姓名 成绩\n"); for (int i = 0; i < n; i++) { printf("%-10s %-10s", stu[i].number, stu[i].name); for (int j = 0; j < M; j++) { printf("%.2f ", stu[i].score[j]); } printf(" %.2f\n", stu[i].aver); } printf("\n"); } /*************** 查询指定学号学生的成绩 *****************/ void searchscore(void) { char input_number[10]; system("cls"); printf("\n"); printf(" **************** 查询成绩 ****************\n"); printf(" 请输入学号进行查询:"); scanf("%s", input_number); for (int i = 0; i < n; i++) { if (strcmp(stu[i].number, input_number) == 0) { printf("\n"); printf(" 学号: %s\n", stu[i].number); printf(" 姓名: %s\n", stu[i].name); printf(" 成绩: "); for (int j = 0; j < M; j++) { printf("%.2f ", stu[i].score[j]); } printf(" 平均分: %.2f\n", stu[i].aver); break; } } if (i == n) { printf("\n"); printf(" 没找到该学号的学生信息!\n"); } } /*************** 成绩统计 *****************/ void statistic(void) { float total_score = 0, max_score = stu[0].score[0], min_score = stu[0].score[0]; int max_index = 0, min_index = 0; for (int i = 0; i < n; i++) { total_score += stu[i].total; for (int j = 0; j < M; j++) { if (stu[i].score[j] > max_score) { max_score = stu[i].score[j]; max_index = i * M + j; } if (stu[i].score[j] < min_score) { min_score = stu[i].score[j]; min_index = i * M + j; } } } printf("\n"); printf(" 总体平均分:%.2f\n", total_score / (n * M)); printf(" 最高分科目及分数:第%d 位同学的第%d 门课 - %.2f\n", max_index / M + 1, max_index % M + 1, max_score); printf(" 最低分科目及分数:第%d 位同学的第%d 门课 - %.2f\n", min_index / M + 1, min_index % M + 1, min_score); } /*************** 修改指定学号学生的成绩 *****************/ void modify(void) { char input_number[10]; int index; system("cls"); printf("\n"); printf(" **************** 修改成绩 ****************\n"); printf(" 请输入要修改的学号:"); scanf("%s", input_number); for (index = 0; index < n; index++) { if (strcmp(stu[index].number, input_number) == 0) { printf(" 已找到学号为 %s 的学生,开始修改成绩:\n", input_number); printf(" 请依次输入 %d 门课程的新成绩(每门课空格隔开):\n", M); for (int j = 0; j < M; j++) { scanf("%f", &stu[index].score[j]); stu[index].total += stu[index].score[j]; } stu[index].aver = stu[index].total / M; printf(" 成绩已修改成功!\n"); break; } } if (index == n) { printf(" 没找到该学号的学生信息!\n"); } } /*************** 添加新的学生信息 *****************/ void add(void) { if (n < N) { system("cls"); printf("\n"); printf(" **************** 添加学生 ****************\n"); printf("\n"); printf(" 请输入新学生的信息:\n"); printf(" 学号(最多 %d 位):", strlen(stu[n].number)); scanf("%s", stu[n].number); printf(" 姓名(最多 %d 个字符):", strlen(stu[n].name)); scanf("%s", stu[n].name); printf(" 请输入 %d 门课程的成绩(每门课空格隔开):\n", M); for (int j = 0; j < M; j++) { scanf("%f", &stu[n].score[j]); stu[n].total += stu[n].score[j]; } stu[n].aver = stu[n].total / M; n++; printf("\n"); printf(" 新学生已成功添加!\n"); } else { printf(" 学生数量已达上限,无法添加新学生!\n"); } } /*************** 删除指定学号的学生信息 *****************/ void delscore(void) { char input_number[10]; int index; system("cls"); printf("\n"); printf(" **************** 删除学生 ****************\n"); printf(" 请输入要删除的学号:"); scanf("%s", input_number); for (index = 0; index < n; index++) { if (strcmp(stu[index].number, input_number) == 0) { printf(" 已找到学号为 %s 的学生,将删除其信息:\n", input_number); for (int i = index; i < n - 1; i++) { strcpy(stu[i].number, stu[i + 1].number); strcpy(stu[i].name, stu[i + 1].name); memcpy(stu[i].score, stu[i + 1].score, sizeof(float) * M); stu[i].aver = stu[i + 1].aver; stu[i].total = stu[i + 1].total; } n--; printf(" 学生信息已成功删除!\n"); break; } } if (index == n) { printf(" 没找到该学号的学生信息!\n"); } } /*************** 保存所有学生信息到文件 *****************/ void savescore(void) { FILE *fp; system("cls"); printf("\n"); printf(" **************** 保存成绩 ****************\n"); fp = fopen("scores.txt", "w"); if (fp != NULL) { for (int i = 0; i < n; i++) { fprintf(fp, "%s,%s,", stu[i].number, stu[i].name); for (int j = 0; j < M; j++) { fprintf(fp, "%.2f,", stu[i].score[j]); } fprintf(fp, "%.2f\n", stu[i].aver); } fclose(fp); printf(" 所有学生成绩已成功保存到 'scores.txt' 文件中!\n"); } else { printf(" 保存失败,无法打开或创建文件!\n"); } } 此代码实现了一个简单的C语言学生成绩管理系统,主要功能包括输入、查看、查询、统计、修改、添加、删除和保存学生成绩。通过结构体`STU`存储每个学生的信息,包括学号、姓名、多门课程的成绩、平均分和总分。用户可以通过菜单选择不同的操作
- 粉丝: 8
- 资源: 3万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于SpringBoot+vue的社区医院管理系统.zip
- 锂电池SOC估计基于二阶RC模型的扩展卡尔曼滤波估算SOC 验证工况:HPPC 和 1C放电
- c#轻量级高并发物联网服务器接收程序源码(仅仅是接收硬件数据程序,没有web端,不是java,协议自己写,如果问及这些问题统统不回复 ),对接几万个设备没问题,数据库采用ef6+sqlite,可改e
- CityGPT: Empowering Urban Spatial Cognition of Large Language Models
- 平安夜祝福代码html 代码实现示例.docx
- java(二叉树的基本操作和部分二叉树相关的题)
- Spring Boot 整合 RabbitMQ(在Spring项目中使用RabbitMQ)
- 三菱Fx3U三轴定位控制程序,其中两轴为脉冲输出同步运行360度转盘,3轴为工作台丝杆 1.本程序结构清晰,有公共程序,原点回归,手动点动运行,手动微动运行 报警程序,参数初始化程序等 2.自动
- armv7l的树莓派可以用的onnxruntime版本
- 纸袋检测15-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- Yealink VC Desktop1.28.0.72, 免费,局域网,IP电话, SIP, VOIP, 视频通话,可与手机互通,手机上也安装 yealink
- 全自动棒料加工自动设备sw17全套技术开发资料100%好用.zip
- 用Jenkins 跑gitte仓库中的postman脚本 请求
- Instruction Pre-Training: Language Models are Supervised Multitask Learners
- 图片转PDF_QQ浏览器_20241226.pdf
- STM8驱动的MPU6050陀螺仪源程序