C语言学生成绩管理系统小设计攻略
1. 系统需求分析
为了设计一个学生成绩管理系统,我们需要先明确系统的需求,包括以下几个方面:
- 系统能够输入学生信息,包括学生的姓名和学号;
- 系统能够输入学生课程成绩;
- 系统能够计算学生课程成绩的平均分并展示;
- 系统能够按照平均分对学生进行排序并输出;
- 系统能够按照学号或者姓名进行查询相应学生成绩;
- 系统能够修改学生成绩信息;
- 系统能够删除学生信息。
2. 系统设计
2.1 数据结构设计
根据上述系统需求,我们可以设计出以下的数据结构:
typedef struct {
int id;
char name[20];
float score;
} Student;
其中,id代表学生的学号,name代表学生的姓名,score代表学生的成绩。
2.2 功能模块设计
根据系统需求,我们可以将系统设计为以下几个功能模块:
- 输入学生信息模块:输入学生的姓名和学号;
- 输入学生成绩模块:输入学生的课程成绩;
- 计算成绩平均分模块:计算学生的平均分并展示;
- 按平均分排序模块:对学生按照平均分进行排序并输出;
- 按学号或姓名查询模块:查询相应学生成绩;
- 修改学生成绩模块:修改学生成绩信息;
- 删除学生信息模块:删除学生信息。
2.3 主函数设计
根据上述的功能模块设计,我们可以设计出以下主函数:
int main() {
Student students[MAX_LENGTH];
int count = 0;
int choice;
do {
printf("=====Student Score Managment System===== \n");
printf("1. Add student information.\n");
printf("2. Add student score.\n");
printf("3. Calculate the average score.\n");
printf("4. Sort by average score.\n");
printf("5. Search by id or name.\n");
printf("6. Modify student score.\n");
printf("7. Delete student information.\n");
printf("0. Exit the system.\n");
printf("Please enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
inputStudent(students, &count);
break;
case 2:
inputScore(students, &count);
break;
case 3:
averageScore(students, count);
break;
case 4:
sortScore(students, count);
break;
case 5:
searchScore(students, count);
break;
case 6:
modifyScore(students, count);
break;
case 7:
deleteStudent(students, &count);
break;
case 0:
break;
default:
printf("Invalid choice, please choose again.\n");
break;
}
} while (choice != 0);
return 0;
}
3. 示例说明
3.1 示例一:输入学生信息和成绩
输入学生信息和成绩,可以通过如下代码实现:
void inputStudent(Student students[], int* count) {
if (*count < MAX_LENGTH) {
printf("Enter student id: ");
scanf("%d", &(students[*count].id));
printf("Enter student name: ");
scanf("%s", students[*count].name);
printf("Add student successfully!\n");
(*count)++;
} else {
printf("The size of students array is not enough!\n");
}
}
void inputScore(Student students[], int* count) {
int id;
printf("Enter student id: ");
scanf("%d", &id);
int i;
for (i = 0; i < *count; i++) {
if (students[i].id == id) {
printf("Enter student score: ");
scanf("%f", &(students[i].score));
printf("Add score successfully!\n");
return;
}
}
printf("The student does not exist!\n");
}
3.2 示例二:计算成绩平均分并按平均分排序
计算成绩平均分并按平均分排序,可以通过如下代码实现:
void averageScore(Student students[], int count) {
int i;
float sum = 0;
for (i = 0; i < count; i++) {
sum += students[i].score;
}
printf("The average score is: %.2f\n", sum / count);
}
void sortScore(Student students[], int count) {
int i, j, maxIndex;
for (i = 0; i < count - 1; i++) {
maxIndex = i;
for (j = i + 1; j < count; j++) {
if (students[j].score > students[maxIndex].score) {
maxIndex = j;
}
}
if (maxIndex != i) {
Student temp = students[i];
students[i] = students[maxIndex];
students[maxIndex] = temp;
}
}
printf("Sort by average score:\n");
printf("id name score\n");
for (i = 0; i < count; i++) {
printf("%-10d%-12s%-8.2f\n", students[i].id, students[i].name, students[i].score);
}
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言学生成绩管理系统小设计 - Python技术站