用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`存储每个学生的信息,包括学号、姓名、多门课程的成绩、平均分和总分。用户可以通过菜单选择不同的操作
- 粉丝: 7
- 资源: 3万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助