请用C语言及数据结构相关知识写出一个学生成绩查询统计系统其中包括成绩的录入和查询功能以及各个学生成绩统计和删除功能,并通过目录选择要进行的功能
时间: 2024-03-07 18:50:44 浏览: 60
C语言写的学生成绩查询系统
好的,我可以帮你实现一个简单的学生成绩查询统计系统。以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生结构体
typedef struct {
int id; // 学生编号
char name[20]; // 学生姓名
int score; // 学生成绩
} Student;
// 定义链表节点结构体
typedef struct node {
Student data; // 学生结构体
struct node *next; // 指向下一个节点的指针
} Node;
// 定义链表头指针
Node *head = NULL;
// 显示菜单
void showMenu() {
printf("\n-----------------\n");
printf("1. 录入学生成绩\n");
printf("2. 查询学生成绩\n");
printf("3. 统计学生成绩\n");
printf("4. 删除学生成绩\n");
printf("0. 退出程序\n");
printf("-----------------\n");
}
// 录入学生成绩
void addStudent() {
Student stu;
printf("请输入学生编号:");
scanf("%d", &stu.id);
printf("请输入学生姓名:");
scanf("%s", stu.name);
printf("请输入学生成绩:");
scanf("%d", &stu.score);
// 创建新节点
Node *newNode = (Node*) malloc(sizeof(Node));
newNode->data = stu;
newNode->next = NULL;
// 插入链表
if (head == NULL) {
head = newNode;
} else {
Node *p = head;
while (p->next != NULL) {
p = p->next;
}
p->next = newNode;
}
printf("录入成功!\n");
}
// 查询学生成绩
void queryScore() {
int id;
printf("请输入要查询的学生编号:");
scanf("%d", &id);
Node *p = head;
while (p != NULL) {
if (p->data.id == id) {
printf("学生编号:%d\n", p->data.id);
printf("学生姓名:%s\n", p->data.name);
printf("学生成绩:%d\n", p->data.score);
return;
}
p = p->next;
}
printf("未找到该学生!\n");
}
// 统计学生成绩
void statScore() {
int count = 0;
int sum = 0;
int max = 0;
Node *p = head;
while (p != NULL) {
count++;
sum += p->data.score;
if (p->data.score > max) {
max = p->data.score;
}
p = p->next;
}
float avg = (float) sum / count;
printf("学生总人数:%d\n", count);
printf("学生成绩总分:%d\n", sum);
printf("学生成绩平均分:%.2f\n", avg);
printf("学生成绩最高分:%d\n", max);
}
// 删除学生成绩
void deleteScore() {
int id;
printf("请输入要删除的学生编号:");
scanf("%d", &id);
Node *p = head;
Node *pre = NULL;
while (p != NULL) {
if (p->data.id == id) {
if (pre == NULL) {
head = p->next;
} else {
pre->next = p->next;
}
free(p);
printf("删除成功!\n");
return;
}
pre = p;
p = p->next;
}
printf("未找到该学生!\n");
}
int main() {
int choice;
do {
showMenu();
printf("请选择要进行的操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
addStudent();
break;
case 2:
queryScore();
break;
case 3:
statScore();
break;
case 4:
deleteScore();
break;
case 0:
printf("程序已退出!\n");
break;
default:
printf("输入错误,请重新输入!\n");
break;
}
} while (choice != 0);
return 0;
}
```
以上代码实现了一个简单的学生成绩查询统计系统,包括成绩的录入和查询功能以及各个学生成绩统计和删除功能,并通过目录选择要进行的功能。你可以根据需要进行修改和优化。
阅读全文