题目:设计一个学生成绩查询统计系统内容要求:(1)分析数据的逻辑结构。(2)设计数据的存储结构。(诸如一个记录应包括哪些字段数据,每个字段的数据是什么类型的,应用什么数据结构来保存众多的记录)(3)根据学生姓名进行字典排序。(4)根据成绩进行由高到低排序。(可采用冒泡法或其他快速算法)(5)根据学号或姓名查找学生成绩。(可采用顺序查找或二分查找等方法,并实现查找结构的打印)(6)统计各分数段(≥90分、80-89分、70-79分、60-69分、60分以下)的学生人数及其所占比例,并打印统计的结果。(7)编写主要的C语言代码,尤其是对函数头部涉及的主要参数要进行注释说明。(8)系统的程序结构可以考虑采用多文件组合框架,也可以采用单文件多模块组合框架。用c语言来写
时间: 2024-03-14 11:49:35 浏览: 120
在这个学生成绩查询统计系统中,我们需要存储每个学生的姓名、学号、成绩等信息。为了方便排序和查找,我们可以使用结构体来存储每个学生的信息。具体实现如下:
```c
typedef struct {
char name[20]; // 学生姓名
int id; // 学生学号
float score; // 学生成绩
} Student;
Student students[100]; // 存储所有学生信息的数组
int num_students; // 学生总数
```
在这里,我们使用了一个数组来存储所有的学生信息,并用一个变量 `num_students` 来记录学生总数。
接下来,我们需要实现根据学生姓名进行字典排序和根据成绩进行由高到低排序的功能。这里我们可以使用冒泡排序算法来实现。具体实现如下:
```c
// 根据学生姓名进行字典排序
void sortByName() {
for (int i = 0; i < num_students - 1; i++) {
for (int j = 0; j < num_students - i - 1; j++) {
if (strcmp(students[j].name, students[j+1].name) > 0) {
Student temp = students[j];
students[j] = students[j+1];
students[j+1] = temp;
}
}
}
}
// 根据成绩进行由高到低排序
void sortByScore() {
for (int i = 0; i < num_students - 1; i++) {
for (int j = 0; j < num_students - i - 1; j++) {
if (students[j].score < students[j+1].score) {
Student temp = students[j];
students[j] = students[j+1];
students[j+1] = temp;
}
}
}
}
```
接下来,我们需要实现根据学号或姓名查找学生成绩的功能。这里我们可以使用顺序查找或二分查找算法来实现。具体实现如下:
```c
// 根据学号查找学生成绩
float searchById(int id) {
for (int i = 0; i < num_students; i++) {
if (students[i].id == id) {
return students[i].score;
}
}
return -1; // 如果找不到对应学号的学生,返回 -1
}
// 根据姓名查找学生成绩
float searchByName(char name[]) {
for (int i = 0; i < num_students; i++) {
if (strcmp(students[i].name, name) == 0) {
return students[i].score;
}
}
return -1; // 如果找不到对应姓名的学生,返回 -1
}
```
最后,我们需要统计各分数段的学生人数及其所占比例,并打印统计结果。具体实现如下:
```c
// 统计各分数段的学生人数及其所占比例
void countScores() {
int count[5] = {0}; // 存储各分数段的学生人数
for (int i = 0; i < num_students; i++) {
if (students[i].score >= 90) {
count[0]++;
} else if (students[i].score >= 80) {
count[1]++;
} else if (students[i].score >= 70) {
count[2]++;
} else if (students[i].score >= 60) {
count[3]++;
} else {
count[4]++;
}
}
printf("≥90分的学生人数:%d,占比%.2f%%\n", count[0], count[0]*100.0/num_students);
printf("80-89分的学生人数:%d,占比%.2f%%\n", count[1], count[1]*100.0/num_students);
printf("70-79分的学生人数:%d,占比%.2f%%\n", count[2], count[2]*100.0/num_students);
printf("60-69分的学生人数:%d,占比%.2f%%\n", count[3], count[3]*100.0/num_students);
printf("60分以下的学生人数:%d,占比%.2f%%\n", count[4], count[4]*100.0/num_students);
}
```
至此,我们已经完成了学生成绩查询统计系统的所有功能实现。完整的代码如下:
阅读全文