用C语言代码写一个简单的学生成绩管理系统,通过菜单选择功能实现学生信息的录入、某门课程成绩的最高、最低和平均值计算、某门课程成绩的排序、学号/姓名查找学生信息等操作。
在你现有代码基础上补充吗?
截图不全啊,另外,建议用代码段把当前代码贴出来
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 100 // 最大学生数
#define MAX_NAME_LEN 20 // 最大姓名长度
#define MAX_COURSE_NUM 5 // 最大课程数
// 学生结构体
typedef struct {
int id; // 学号
char name[MAX_NAME_LEN]; // 姓名
int scores[MAX_COURSE_NUM]; // 成绩
} Student;
// 学生数组
Student students[MAX_STUDENTS];
int num_students = 0; // 学生数
// 菜单函数
void menu() {
printf("1. 录入学生信息\n");
printf("2. 计算某门课程成绩的最高、最低和平均值\n");
printf("3. 排序某门课程成绩\n");
printf("4. 学号/姓名查找学生信息\n");
printf("5. 退出\n");
}
// 录入学生信息函数
void input_student() {
if (num_students >= MAX_STUDENTS) {
printf("学生数已达到最大值,无法继续录入!\n");
return;
}
printf("请输入学生信息:\n");
printf("学号:");
scanf("%d", &students[num_students].id);
printf("姓名:");
scanf("%s", students[num_students].name);
for (int i = 0; i < MAX_COURSE_NUM; i++) {
printf("第%d门课程成绩:", i + 1);
scanf("%d", &students[num_students].scores[i]);
}
num_students++;
printf("录入成功!\n");
}
// 计算某门课程成绩的最高、最低和平均值函数
void calculate_scores() {
int course_num;
printf("请输入要计算的课程编号(1-%d):", MAX_COURSE_NUM);
scanf("%d", &course_num);
if (course_num < 1 || course_num > MAX_COURSE_NUM) {
printf("课程编号无效!\n");
return;
}
int max_score = students[0].scores[course_num - 1];
int min_score = students[0].scores[course_num - 1];
int sum_score = 0;
for (int i = 0; i < num_students; i++) {
if (students[i].scores[course_num - 1] > max_score) {
max_score = students[i].scores[course_num - 1];
}
if (students[i].scores[course_num - 1] < min_score) {
min_score = students[i].scores[course_num - 1];
}
sum_score += students[i].scores[course_num - 1];
}
float avg_score = (float)sum_score / num_students;
printf("最高分:%d\n", max_score);
printf("最低分:%d\n", min_score);
printf("平均分:%.2f\n", avg_score);
}
// 排序某门课程成绩函数
void sort_scores() {
int course_num;
printf("请输入要排序的课程编号(1-%d):", MAX_COURSE_NUM);
scanf("%d", &course_num);
if (course_num < 1 || course_num > MAX_COURSE_NUM) {
printf("课程编号无效!\n");
return;
}
// 冒泡排序
for (int i = 0; i < num_students - 1; i++) {
for (int j = 0; j < num_students - i - 1; j++) {
if (students[j].scores[course_num - 1] < students[j + 1].scores[course_num - 1]) {
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
printf("排序结果如下:\n");
printf("学号\t姓名\t第%d门课程成绩\n", course_num);
for (int i = 0; i < num_students; i++) {
printf("%d\t%s\t%d\n", students[i].id, students[i].name, students[i].scores[course_num - 1]);
}
}
// 学号/姓名查找学生信息函数
void search_student() {
int choice;
printf("请选择查找方式:\n");
printf("1. 学号查找\n");
printf("2. 姓名查找\n");
scanf("%d", &choice);
if (choice == 1) {
int id;
printf("请输入要查找的学生学号:");
scanf("%d", &id);
for (int i = 0; i < num_students; i++) {
if (students[i].id == id) {
printf("学号\t姓名\t第1门课程成绩\t第2门课程成绩\t第3门课程成绩\t第4门课程成绩\t第5门课程成绩\n");
printf("%d\t%s\t%d\t%d\t%d\t%d\t%d\n", students[i].id, students[i].name, students[i].scores[0], students[i].scores[1], students[i].scores[2], students[i].scores[3], students[i].scores[4]);
return;
}
}
printf("未找到该学生!\n");
} else if (choice == 2) {
char name[MAX_NAME_LEN];
printf("请输入要查找的学生姓名:");
scanf("%s", name);
for (int i = 0; i < num_students; i++) {
if (strcmp(students[i].name, name) == 0) {
printf("学号\t姓名\t第1门课程成绩\t第2门课程成绩\t第3门课程成绩\t第4门课程成绩\t第5门课程成绩\n");
printf("%d\t%s\t%d\t%d\t%d\t%d\t%d\n", students[i].id, students[i].name, students[i].scores[0], students[i].scores[1], students[i].scores[2], students[i].scores[3], students[i].scores[4]);
return;
}
}
printf("未找到该学生!\n");
} else {
printf("无效选择!\n");
}
}
// 主函数
int main() {
int choice;
while (1) {
menu();
printf("请选择功能:");
scanf("%d", &choice);
switch (choice) {
case 1:
input_student();
break;
case 2:
calculate_scores();
break;
case 3:
sort_scores();
break;
case 4:
search_student();
break;
case 5:
printf("谢谢使用!\n");
exit(0);
default:
printf("无效选择!\n");
break;
}
}
return 0;
}
- 录入学生信息;
- 将输入的学生信息能够存入一个文件中,并能在这个文件中读取出这些学生信息;
- 显示所有学生信息;
- 搜索某个学生的信息;
- 更改某个学生的信息;
- 根据学生成绩对学生进行排序;
可以借鉴下
#include "score.h"
//学生成绩管理系统
int main(int argc, const char *argv[])
{
int chose = 0;
int loop = 1;
// 1. 定义一个班级的的变量
Class_t *cls_p =(Class_t *)malloc(sizeof(Class_t));
if (cls_p == NULL)
{
printf("malloc failed!\n");
return -1;
}
// 初始化学生的个数, 数组的变量从第0开始的
cls_p->count = -1;
while (loop)
{
printf("################################################################\n");
printf("#### 0.录入 1.删除 2.修改 3.查询 4.遍历 5.排序 6.退出 ####\n");
printf("################################################################\n");
printf("请输入你的选择 > ");
scanf("%d", &chose);
while (getchar() != '\n'); // 循环吃掉所有的垃圾字符
switch (chose)
{
case INSERT:
insert_stu(cls_p);
break;
case DELECT:
delete_stu(cls_p);
break;
case UPDATE:
update_stu(cls_p);
break;
case SELECT:
select_stu(cls_p);
break;
case PRINT:
print_all_stu(cls_p);
break;
case SORT:
sort_stu(cls_p);
print_all_stu(cls_p);
break;
case QUIT:
loop = 0;
printf("退出学生成绩管理系统\n");
break;
default:
printf("输入错误,请重新输入!\n");
break;
}
if (!loop)
{
break;
}
}
if (cls_p != NULL)
{
free(cls_p);
cls_p = NULL;
}
return 0;
}
以下是一个简单的学生成绩管理系统的C语言代码示例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 100
#define MAX_NAME_LENGTH 20
typedef struct {
int id;
char name[MAX_NAME_LENGTH];
float scores[3];
float avg;
} Student;
Student students[MAX_STUDENTS];
int num_students = 0;
void add_student() {
if (num_students >= MAX_STUDENTS) {
printf("Error: too many students.\n");
return;
}
Student s;
printf("Enter student ID: ");
scanf("%d", &s.id);
printf("Enter student name: ");
scanf("%s", s.name);
printf("Enter scores for 3 courses: ");
scanf("%f %f %f", &s.scores[0], &s.scores[1], &s.scores[2]);
s.avg = (s.scores[0] + s.scores[1] + s.scores[2]) / 3;
students[num_students++] = s;
printf("Student added successfully.\n");
}
void print_student(Student s) {
printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n", s.id, s.name, s.scores[0], s.scores[1], s.scores[2], s.avg);
}
void print_students() {
printf("ID\tName\tCourse 1\tCourse 2\tCourse 3\tAverage\n");
for (int i = 0; i < num_students; i++) {
print_student(students[i]);
}
}
void print_course_stats(int course) {
float max_score = 0, min_score = 100, total_score = 0;
for (int i = 0; i < num_students; i++) {
float score = students[i].scores[course];
if (score > max_score) {
max_score = score;
}
if (score < min_score) {
min_score = score;
}
total_score += score;
}
float avg_score = total_score / num_students;
printf("Course %d stats:\n", course + 1);
printf("Max score: %.2f\n", max_score);
printf("Min score: %.2f\n", min_score);
printf("Average score: %.2f\n", avg_score);
}
void sort_students(int course) {
for (int i = 0; i < num_students - 1; i++) {
for (int j = i + 1; j < num_students; j++) {
if (students[i].scores[course] < students[j].scores[course]) {
Student temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
printf("Students sorted by course %d score.\n", course + 1);
}
void find_student() {
int choice;
printf("Search by:\n");
printf("1. ID\n");
printf("2. Name\n");
printf("Enter choice: ");
scanf("%d", &choice);
if (choice == 1) {
int id;
printf("Enter student ID: ");
scanf("%d", &id);
for (int i = 0; i < num_students; i++) {
if (students[i].id == id) {
print_student(students[i]);
return;
}
}
printf("Student not found.\n");
} else if (choice == 2) {
char name[MAX_NAME_LENGTH];
printf("Enter student name: ");
scanf("%s", name);
for (int i = 0; i < num_students; i++) {
if (strcmp(students[i].name, name) == 0) {
print_student(students[i]);
return;
}
}
printf("Student not found.\n");
} else {
printf("Invalid choice.\n");
}
}
int main() {
int choice;
do {
printf("Menu:\n");
printf("1. Add student\n");
printf("2. Print all students\n");
printf("3. Print course statistics\n");
printf("4. Sort students by course score\n");
printf("5. Find student\n");
printf("0. Exit\n");
printf("Enter choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
add_student();
break;
case 2:
print_students();
break;
case 3:
printf("Enter course number (1-3): ");
scanf("%d", &choice);
if (choice >= 1 && choice <= 3) {
print_course_stats(choice - 1);
} else {
printf("Invalid course number.\n");
}
break;
case 4:
printf("Enter course number (1-3): ");
scanf("%d", &choice);
if (choice >= 1 && choice <= 3) {
sort_students(choice - 1);
} else {
printf("Invalid course number.\n");
}
break;
case 5:
find_student();
break;
case 0:
printf("Exiting...\n");
break;
default:
printf("Invalid choice.\n");
break;
}
} while (choice != 0);
return 0;
}
该程序使用结构体存储学生信息,包括学号、姓名、三门课程的成绩和平均分。主函数中使用一个循环菜单,根据用户选择调用不同的函数实现不同的功能,包括添加学生、打印所有学生、计算某门课程成绩的最高、最低和
纯手写,望采纳
//
#include<stdio.h>
#include<windows.h>
#define Max_stu_num 25
#define obj_num 3
char File_Path[]="student_inf.txt";
typedef struct
{
char Name[25]; //姓名
int Number; //学号
char gender[25]; //性别
char city[25]; //籍贯
int score[obj_num]; //数学成绩//语文成绩//英语成绩
int Sum_score; //总成绩
} Stu;
char obj_name[obj_num][25]= {"数学","语文","英语"};
double ave[obj_num];
double stu_avescore[Max_stu_num]; //平均成绩
Stu stu[Max_stu_num];
int count_stu=0;
void cal_sum_score(int index)
{
stu[index].Sum_score=0;
for(int j=0; j<obj_num; j++)
{
stu[index].Sum_score+=stu[index].score[j];
}
}
void input()
{
printf("输入姓名:\n");
fflush(stdin);
scanf("%s",stu[count_stu].Name);
printf("输入学号:\n");
fflush(stdin);
scanf("%d",&stu[count_stu].Number);
printf("输入性别:\n");
fflush(stdin);
scanf("%s",stu[count_stu].gender);
printf("输入籍贯:\n");
fflush(stdin);
scanf("%s",stu[count_stu].city);
for(int i=0; i<obj_num; i++)
{
printf("输入%s成绩:\n",obj_name[i]);
fflush(stdin);
scanf("%d",&stu[count_stu].score[i]);
}
cal_sum_score(count_stu);
count_stu++;
}
void output_head()
{
printf("姓名\t学号\t\t性别\t籍贯\t");
for(int i=0; i<obj_num; i++)
{
printf("%s\t",obj_name[i]);
}
printf("总分\n");
}
void outputOne(int index)
{
printf("%s\t",stu[index].Name);
printf("%d\t",stu[index].Number);
printf("%s\t",stu[index].gender);
printf("%s\t",stu[index].city);
for(int i=0; i<obj_num; i++)
{
printf("%d\t",stu[index].score[i]);
}
printf("%d\t",stu[index].Sum_score);
printf("\n");
}
void output_all(int n)
{
output_head();
int j;
for(j=0; j<n; j++)
{
outputOne(j);
}
printf("---------------------------------------------------\n");
}
int search(int number)
{
int i,p=-1;
for(i=0; i<count_stu; i++)
{
if(stu[i].Number==number)
{
p=i;
return p;
}
}
return -1;
}
void modify(int number)
{
int index=search(number);
if(index==-1)
{
printf("找不到该学号\n");
}
else
{
printf("学号%d的学生是第%d位\n",number,index+1);
output_head();
outputOne(index);
puts("修改信息");
printf("输入姓名:\n");
fflush(stdin);
scanf("%s",stu[index].Name);
printf("输入学号:\n");
fflush(stdin);
scanf("%d",&stu[index].Number);
stu[index].Sum_score=0;
for(int i=0; i<obj_num; i++)
{
printf("输入%s成绩:\n",obj_name[i]);
fflush(stdin);
scanf("%d",&stu[index].score[i]);
stu[index].Sum_score+=stu[index].score[i];
}
cal_sum_score(index);
printf("修改成功\n");
}
}
void del(int number)
{
int index=search(number);
if(index==-1)
{
printf("找不到该学号\n");
}
else
{
printf("学号%d的学生是第%d位\n",number,index+1);
output_head();
outputOne(index);
int i;
for(i=index; i<count_stu-1; i++)
{
stu[i]= stu[i+1];
}
printf("删除成功\n");
count_stu--;
}
}
double calave()
{
int score_sum[obj_num]= {0};
for(int i=0; i<count_stu; i++)
{
for(int j=0; j<obj_num; j++)
{
score_sum[j]+=stu[i].score[j];
}
}
for(int j=0; j<obj_num; j++)
{
ave[j]=(double)score_sum[j]/count_stu;
}
}
void save()
{
FILE *fp;
fp = fopen(File_Path,"w");
if(fp == NULL)
{
printf("error!");
}
else
{
for(int j=0; j<count_stu; j++)
{
fprintf(fp,"%s %d ",stu[j].Name,stu[j].Number);
fprintf(fp,"%s %s ",stu[j].gender,stu[j].city);
for(int i=0; i<obj_num; i++)
{
fprintf(fp,"%d ",stu[j].score[i]);
}
fprintf(fp,"%d\n",stu[j].Sum_score);
}
printf("文件写入成功\n");
}
fclose(fp);
}
void read()
{
FILE *fp;
fp = fopen(File_Path,"r");
int count=0;
if(fp == NULL)
{
printf("error!");
}
else
{
int flag=2;
int j=count_stu;
do
{
flag=fscanf(fp,"%s %d ",stu[j].Name,&stu[j].Number);
fscanf(fp,"%s %s ",stu[j].gender,stu[j].city);
for(int i=0; i<obj_num; i++)
{
fscanf(fp,"%d ",&stu[j].score[i]);
}
fscanf(fp,"%d\n",&stu[j].Sum_score);
if(flag!=-1)
{
cal_sum_score(count);
count++;
}
j++;
}
while(flag>0);
printf("文件读取成功\n");
count_stu+=count;
}
fclose(fp);
}
void swap_stu_inf(Stu stu[],int a,int b)
{
Stu tem=stu[a];
stu[a]=stu[b];
stu[b]=tem;
}
void BubbleSort_number(Stu stu[],int n)
{
int j,k;
Stu t;
for(j=0; j<n-1; j++)
{
for(k=0; k<n-j-1; k++)
{
if(stu[k].Number>stu[k+1].Number)
{
t=stu[k];
stu[k]=stu[k+1];
stu[k+1]=t;
}
}
}
}
void BubbleSort_score(Stu stu[],int n)
{
int j,k;
Stu t;
for(j=0; j<n-1; j++)
{
for(k=0; k<n-j-1; k++)
{
if(stu[k].Sum_score<stu[k+1].Sum_score)
{
t=stu[k];
stu[k]=stu[k+1];
stu[k+1]=t;
}
}
}
}
void out_aveScore()
{
printf("平均分\t\t");
for(int i=0; i<obj_num; i++)
{
printf("%.2lf\t",ave[i]);
}
printf("\n");
}
void cal_stu_avescore()
{
for(int i=0; i<count_stu; i++)
{
stu_avescore[i]=(double)stu[i].Sum_score/obj_num;
}
}
void color(short x) //自定义函根据参数改变颜色
{
if(x>=0 && x<=15)//参数在0-15的范围颜色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x); //只有一个参数,改变字体颜色
else//默认的颜色白色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}
void put_stu_ave_score()
{
cal_stu_avescore();
printf("姓名\t学号\t平均分\n");
for(int i=0; i<count_stu; i++)
{
if(stu_avescore[i]<60)
{
color(6);
}
printf("%s\t%d\t%.2f\n",stu[i].Name,stu[i].Number,stu_avescore[i]);
color(7);
}
//color(7);
}
void sort_menu()
{
puts("--------1.按学号排序------------------------------");
puts("--------2.按总成绩排序----------------------------");
puts("--------3.返回主菜单------------------------------");
int option=0;
fflush(stdin);
scanf("%d",&option);
if(option==1)
{
system("cls");
BubbleSort_number(stu,count_stu);
puts("排序完成");
output_all(count_stu);
}
else if(option==2)
{
system("cls");
BubbleSort_score(stu,count_stu);
puts("排序完成");
output_all(count_stu);
}
else if(option==3)
{
return;
}
}
void count_stu_()
{
printf("统计学生总数\n");
printf("一共 %d 名学生\n",count_stu);
}
void insert(int index,Stu stu_)
{
for(int i=count_stu+1; i>index; i--)
{
stu[i]=stu[i-1];
}
stu[index]=stu_;
count_stu++;
cal_sum_score(index);
}
void menu()
{
int option=0;
while(option!=11)
{
system("cls");
printf("--------------------------------------------------------------------------------\n");
printf("------学生信息管理--------------------------------------------------------------\n");
printf("------1.录入学生信息 ----------------------------------------------------------\n");
printf("------2.查找学生信息 ----------------------------------------------------------\n");
printf("------3.删除学生信息 ----------------------------------------------------------\n");
printf("------4.修改学生信息------------------------------------------------------------\n");
printf("------5.学生信息排序------------------------------------------------------------\n");
printf("------6.统计学生总数 ----------------------------------------------------------\n");
printf("------7.显示所有学生信息--------------------------------------------------------\n");
printf("------8.插入学生信息------------------------------------------------------------\n");
printf("------9.文件读入 --------------------------------------------------------------\n");
printf("------10.保存至文件--------------------------------------------------------------\n");
printf("------11.退出系统---------------------------------------------------------------\n");
printf("--------------------------------------------------------------------------------\n");
printf("输入选项:\n");
fflush(stdin);
scanf("%d",&option);
if(option==1)
{
system("cls");
input();
system("pause");
}
else if(option==2)
{
system("cls");
//output(count_stu);
int number;
printf("输入要查找的学号:");
fflush(stdin);
scanf("%d",&number);
int index=search(number);
if(index==-1)
{
printf("查找失败\n");
}
else
{
printf("查找成功\n");
output_head();
outputOne(index);
}
system("pause");
}
else if(option==3)
{
system("cls");
int number;
printf("输入要删除的学号:");
scanf("%d",&number);
del(number);
puts("完成");
system("pause");
}
else if(option==4)
{
system("cls");
output_all(count_stu);
int number;
printf("输入要修改成绩的学生对应的学号:");
scanf("%d",&number);
modify(number);
system("pause");
}
else if(option==5)
{
system("cls");
sort_menu();
system("pause");
}
else if(option==6)
{
system("cls");
count_stu_();
system("pause");
}
else if(option==7)
{
system("cls");
puts("显示所有学生信息");
/**/
output_all(count_stu);
system("pause");
}
else if(option==8)
{
system("cls");
int index;
printf("输入要插入的位置(0~%d)",count_stu);
scanf("%d",&index);
Stu stu_;
printf("输入姓名:\n");
fflush(stdin);
scanf("%s",stu_.Name);
printf("输入学号:\n");
fflush(stdin);
scanf("%d",&stu_.Number);
printf("输入性别:\n");
fflush(stdin);
scanf("%s",stu_.gender);
printf("输入籍贯:\n");
fflush(stdin);
scanf("%s",stu_.city);
for(int i=0; i<obj_num; i++)
{
printf("输入%s成绩:\n",obj_name[i]);
fflush(stdin);
scanf("%d",&stu_.score[i]);
}
insert(index,stu_);
puts("插入完成");
system("pause");
}
else if(option==9)
{
system("cls");
read();
system("pause");
}
else if(option==10)
{
system("cls");
save();
system("pause");
}
else if(option==11)
{
system("cls");
return;
system("pause");
}
}
}
int main()
{
menu();
return 0;
}
C语言示例
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生结构体
struct student {
int id; // 学号
char name[20]; // 姓名
float score[3]; // 三门课的成绩
float avgScore; // 平均成绩
};
// 学生结构体数组,存储所有学生信息
struct student studentList[100];
// 学生数目
int studentNum = 0;
// 录入学生信息
void addStudent() {
printf("请输入学生信息:\n");
struct student stu;
printf("学号:");
scanf("%d", &stu.id);
printf("姓名:");
scanf("%s", stu.name);
printf("成绩1:");
scanf("%f", &stu.score[0]);
printf("成绩2:");
scanf("%f", &stu.score[1]);
printf("成绩3:");
scanf("%f", &stu.score[2]);
stu.avgScore = (stu.score[0] + stu.score[1] + stu.score[2]) / 3.0;
studentList[studentNum] = stu;
studentNum++;
printf("录入成功!\n");
}
// 计算某门课程成绩的最高、最低和平均值
void calculateScore(int courseNum) {
float sum = 0.0, max = 0.0, min = 100.0;
for (int i = 0; i < studentNum; i++) {
sum += studentList[i].score[courseNum];
if (studentList[i].score[courseNum] > max) {
max = studentList[i].score[courseNum];
}
if (studentList[i].score[courseNum] < min) {
min = studentList[i].score[courseNum];
}
}
float avg = sum / studentNum;
printf("第%d门课的最高分:%f\n", courseNum + 1, max);
printf("第%d门课的最低分:%f\n", courseNum + 1, min);
printf("第%d门课的平均分:%f\n", courseNum + 1, avg);
}
// 某门课程成绩排序(降序)
void sortScore(int courseNum) {
for (int i = 0; i < studentNum - 1; i++) {
for (int j = 0; j < studentNum - 1 - i; j++) {
if (studentList[j].score[courseNum] < studentList[j+1].score[courseNum]) {
struct student temp = studentList[j];
studentList[j] = studentList[j+1];
studentList[j+1] = temp;
}
}
}
printf("第%d门课的成绩排序结果如下:\n", courseNum + 1);
printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分\n");
for (int i = 0; i < studentNum; i++) {
printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",
studentList[i].id, studentList[i].name,
studentList[i].score[0], studentList[i].score[1],
studentList[i].score[2], studentList[i].avgScore);
}
}
// 按学号或姓名查找学生信息
void findStudent() {
printf("请输入要查找的学生信息:\n");
printf("(1) 按学号查找\n");
printf("(2) 按姓名查找\n");
int choice;
scanf("%d", &choice);
int id;
char name[20];
switch (choice) {
case 1:
printf("请输入学号:");
scanf("%d", &id);
for (int i = 0; i < studentNum; i++) {
if (studentList[i].id == id) {
printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分\n");
```c
printf("%s\t%.2f\t%.2f\t%.2f\t%.2f\n",
studentList[i].name, studentList[i].score[0],
studentList[i].score[1], studentList[i].score[2],
studentList[i].avgScore);
return;
}
}
printf("没有找到该学生!\n");
break;
case 2:
printf("请输入姓名:");
scanf("%s", name);
for (int i = 0; i < studentNum; i++) {
if (strcmp(name, studentList[i].name) == 0) {
printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分\n");
printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",
studentList[i].id, studentList[i].name,
studentList[i].score[0], studentList[i].score[1],
studentList[i].score[2], studentList[i].avgScore);
return;
}
}
printf("没有找到该学生!\n");
break;
default:
printf("输入有误!\n");
break;
}
}
int main() {
int choice;
while(1) {
printf("\n---------------------------\n");
printf("请选择功能:\n");
printf("(1) 录入学生信息\n");
printf("(2) 计算某门课程成绩的最高、最低和平均值\n");
printf("(3) 某门课程成绩排序(降序)\n");
printf("(4) 按学号或姓名查找学生信息\n");
printf("(5) 退出\n");
printf("---------------------------\n");
scanf("%d", &choice);
switch (choice) {
case 1:
addStudent();
break;
case 2:
printf("请输入课程编号:");
int courseNum;
scanf("%d", &courseNum);
calculateScore(courseNum - 1);
break;
case 3:
printf("请输入课程编号:");
scanf("%d", &courseNum);
sortScore(courseNum - 1);
break;
case 4:
findStudent();
break;
case 5:
exit(0); // 退出程序
break;
default:
printf("输入有误!\n");
break;
}
}
return 0;
}