C语言学生成绩管理系统:添加、显示、修改、删除、计算、排序、文件保存
#include <stdio.h> #include <stdlib.h> #include <string.h>
#define MAX_STUDENT_NUM 100 // 最大学生数量 #define MAX_NAME_LENGTH 20 // 最长姓名长度 #define MAX_MAJOR_LENGTH 20 // 最长专业长度 #define MAX_ADDRESS_LENGTH 50 // 最长籍贯长度
typdef struct { char name[MAX_NAME_LENGTH]; // 姓名 char major[MAX_MAJOR_LENGTH]; // 专业 char address[MAX_ADDRESS_LENGTH]; // 籍贯 float chinese; // 语文成绩 float math; // 数学成绩 float english; // 英语成绩 float computer; // 计算机成绩 float internet; // 互联网成绩 float additive; // 增材制造成绩 float average; // 平均成绩 float total; // 总成绩 } Student;
int student_num = 0; // 学生数量 Student students[MAX_STUDENT_NUM]; // 学生信息数组
// 显示菜单 void show_menu() { printf("------学生成绩管理系统------\n"); printf("1. 添加学生信息\n"); printf("2. 显示学生信息\n"); printf("3. 修改学生信息\n"); printf("4. 删除学生信息\n"); printf("5. 计算学生成绩\n"); printf("6. 文件保存\n"); printf("7. 退出\n"); printf("---------------------------\n"); }
// 添加学生信息 void add_student() { if (student_num >= MAX_STUDENT_NUM) { printf("学生数量已达到上限!\n"); return; } printf("请输入学生姓名:"); scanf("%s", students[student_num].name); printf("请输入学生专业:"); scanf("%s", students[student_num].major); printf("请输入学生籍贯:"); scanf("%s", students[student_num].address); printf("请输入学生语文成绩:"); scanf("%f", &students[student_num].chinese); printf("请输入学生数学成绩:"); scanf("%f", &students[student_num].math); printf("请输入学生英语成绩:"); scanf("%f", &students[student_num].english); printf("请输入学生计算机成绩:"); scanf("%f", &students[student_num].computer); printf("请输入学生互联网成绩:"); scanf("%f", &students[student_num].internet); printf("请输入学生增材制造成绩:"); scanf("%f", &students[student_num].additive); student_num++; printf("添加成功!\n"); }
// 显示学生信息 void show_students() { if (student_num == 0) { printf("暂无学生信息!\n"); return; } printf("姓名\t专业\t籍贯\t语文\t数学\t英语\t计算机\t互联网\t增材制造\t平均成绩\t总成绩\n"); for (int i = 0; i < student_num; i++) { printf("%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", students[i].name, students[i].major, students[i].address, students[i].chinese, students[i].math, students[i].english, students[i].computer, students[i].internet, students[i].additive, students[i].average, students[i].total); } }
// 修改学生信息 void modify_student() { if (student_num == 0) { printf("暂无学生信息!\n"); return; } char name[MAX_NAME_LENGTH]; printf("请输入要修改的学生姓名:"); scanf("%s", name); for (int i = 0; i < student_num; i++) { if (strcmp(name, students[i].name) == 0) { printf("请输入学生专业:"); scanf("%s", students[i].major); printf("请输入学生籍贯:"); scanf("%s", students[i].address); printf("请输入学生语文成绩:"); scanf("%f", &students[i].chinese); printf("请输入学生数学成绩:"); scanf("%f", &students[i].math); printf("请输入学生英语成绩:"); scanf("%f", &students[i].english); printf("请输入学生计算机成绩:"); scanf("%f", &students[i].computer); printf("请输入学生互联网成绩:"); scanf("%f", &students[i].internet); printf("请输入学生增材制造成绩:"); scanf("%f", &students[i].additive); printf("修改成功!\n"); return; } } printf("未找到该学生!\n"); }
// 删除学生信息 void delete_student() { if (student_num == 0) { printf("暂无学生信息!\n"); return; } char name[MAX_NAME_LENGTH]; printf("请输入要删除的学生姓名:"); scanf("%s", name); for (int i = 0; i < student_num; i++) { if (strcmp(name, students[i].name) == 0) { for (int j = i; j < student_num - 1; j++) { students[j] = students[j + 1]; } student_num--; printf("删除成功!\n"); return; } } printf("未找到该学生!\n"); }
// 计算学生成绩 void calculate_score() { if (student_num == 0) { printf("暂无学生信息!\n"); return; } for (int i = 0; i < student_num; i++) { students[i].total = students[i].chinese + students[i].math + students[i].english + students[i].computer + students[i].internet + students[i].additive; students[i].average = students[i].total / 6.0; } printf("计算成功!\n"); }
// 以计算机成绩为关键字进行升序排名 void sort_computer_score() { if (student_num == 0) { printf("暂无学生信息!\n"); return; } for (int i = 0; i < student_num - 1; i++) { for (int j = 0; j < student_num - i - 1; j++) { if (students[j].computer > students[j + 1].computer) { Student temp = students[j]; students[j] = students[j + 1]; students[j + 1] = temp; } } } printf("计算机成绩排序成功!\n"); }
// 文件保存 void save_file() { FILE *fp; fp = fopen("students.txt", "w"); if (fp == NULL) { printf("文件打开失败!\n"); return; } fprintf(fp, "姓名\t专业\t籍贯\t语文\t数学\t英语\t计算机\t互联网\t增材制造\t平均成绩\t总成绩\n"); for (int i = 0; i < student_num; i++) { fprintf(fp, "%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", students[i].name, students[i].major, students[i].address, students[i].chinese, students[i].math, students[i].english, students[i].computer, students[i].internet, students[i].additive, students[i].average, students[i].total); } fclose(fp); printf("文件保存成功!\n"); }
int main() { int choice; do { show_menu(); printf("请输入操作编号:"); scanf("%d", &choice); switch (choice) { case 1: add_student(); break; case 2: show_students(); break; case 3: modify_student(); break; case 4: delete_student(); break; case 5: calculate_score(); break; case 6: sort_computer_score(); break; case 7: save_file(); break; case 8: printf("感谢使用本系统,再见!\n"); return 0; default: printf("输入有误,请重新输入!\n"); break; } } while (1); }
原文地址: http://www.cveoy.top/t/topic/oW0L 著作权归作者所有。请勿转载和采集!