使用数组或指针设计简单的学生成绩管理系统 功能界面: 0 退出 1 输入学生成绩 (学号、姓名、语文、数学、英语) 2 显示学生成绩(学号、姓名、语文、数学、英语、总分、平均成绩和等级) 平均成绩>=90时 等级为A; 90>平均成绩>=75时 等级为B; 75>平均成绩>=60时 等级为C; 平均成绩<60时 等级为D; 3 根据学生平均成绩排序 4 根据学生学号查询学生成绩 注:实现以上用C语言写出程序
时间: 2023-02-25 14:00:06 浏览: 140
这个学生成绩管理系统有如下四个功能:
0. 退出:退出程序
1. 输入学生成绩:输入学生的学号、姓名、语文、数学、英语成绩
2. 显示学生成绩:显示学生的学号、姓名、语文、数学、英语成绩、总分、平均成绩和等级。根据平均成绩的高低,将其分为A(平均成绩>=90)、B(90>平均成绩>=75)、C(75>平均成绩>=60)、D(平均成绩<60)四个等级
3. 排序:根据学生的平均成绩对学生的成绩进行排序
4. 查询:根据学生的学号查询学生的成绩
注意:该程序要用C语言编写。
相关问题
用结构体数组指针来写学生成绩管理系统
好的,我可以给您提供一个基本的代码框架,您可以在此基础上进行修改和完善:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT_NUM 100 // 学生最大数量
// 学生结构体
typedef struct {
char name[20]; // 学生姓名
int id; // 学生学号
float score; // 学生成绩
} Student;
// 学生数组指针
Student* students[MAX_STUDENT_NUM];
int studentCount = 0; // 学生数量
// 添加学生
void addStudent(char* name, int id, float score) {
if (studentCount >= MAX_STUDENT_NUM) {
printf("已达到最大学生数量,无法添加\n");
return;
}
Student* s = (Student*)malloc(sizeof(Student));
strcpy(s->name, name);
s->id = id;
s->score = score;
students[studentCount++] = s;
printf("添加学生成功\n");
}
// 删除学生
void deleteStudent(int id) {
for (int i = 0; i < studentCount; i++) {
if (students[i]->id == id) {
free(students[i]);
for (int j = i + 1; j < studentCount; j++) {
students[j - 1] = students[j];
}
studentCount--;
printf("删除学生成功\n");
return;
}
}
printf("未找到该学生\n");
}
// 修改学生成绩
void modifyScore(int id, float score) {
for (int i = 0; i < studentCount; i++) {
if (students[i]->id == id) {
students[i]->score = score;
printf("修改成绩成功\n");
return;
}
}
printf("未找到该学生\n");
}
// 查询学生信息
void queryStudent(int id) {
for (int i = 0; i < studentCount; i++) {
if (students[i]->id == id) {
printf("姓名:%s\n", students[i]->name);
printf("学号:%d\n", students[i]->id);
printf("成绩:%.2f\n", students[i]->score);
return;
}
}
printf("未找到该学生\n");
}
// 输出所有学生信息
void printAllStudents() {
for (int i = 0; i < studentCount; i++) {
printf("姓名:%s\n", students[i]->name);
printf("学号:%d\n", students[i]->id);
printf("成绩:%.2f\n", students[i]->score);
}
}
int main() {
// 添加示例学生
addStudent("张三", 1001, 90);
addStudent("李四", 1002, 80);
addStudent("王五", 1003, 70);
// 测试功能
modifyScore(1002, 85);
queryStudent(1003);
deleteStudent(1001);
printAllStudents();
// 释放内存
for (int i = 0; i < studentCount; i++) {
free(students[i]);
}
return 0;
}
```
这个代码框架包括了学生结构体的定义、学生数组指针的声明、添加学生、删除学生、修改学生成绩、查询学生信息和输出所有学生信息等功能。您可以根据自己的需求进行修改和完善。
C语言编程学生成绩管理系统,输入学号或者姓名删除学生的记录
在C语言编程中,设计一个学生成绩管理系统,可以包含以下几个步骤:
1. **数据结构设计**:首先,我们需要创建一个数据结构,比如`struct Student`,包括学号、姓名和成绩等属性。
```c
typedef struct {
int student_id;
char name[50];
float score;
} Student;
```
2. **动态内存管理**:由于需要删除特定的学生记录,我们会考虑使用链表作为存储结构,方便添加和删除元素。创建一个单向链表节点,并维护一个头指针。
```c
typedef struct Node {
Student data;
struct Node* next;
} Node, *StudentList;
```
3. **函数实现**:
- `add_student()`:用于添加新学生记录。
- `search_by_id()` 和 `search_by_name()`:通过学号或姓名查找学生。
- `delete_record()`:根据输入条件删除学生记录。如果提供学号,遍历链表找到对应节点并删除;如果提供姓名,则在整个数据库中查找并移除匹配项。
```c
void delete_record(StudentList* list, int id, char* name) {
if (id > 0) { // 删除按学号
for (Node* curr = list->next; curr != NULL; curr = curr->next) {
if (curr->data.student_id == id) {
Node* temp = curr;
curr = curr->next;
free(temp);
break;
}
}
} else if (name != NULL) { // 删除按姓名
// ... 实现姓名查找并删除相应节点
}
}
```
4. **用户交互界面**:编写主循环,接收用户的输入,调用相应的函数处理请求。
```c
int main() {
StudentList students = {NULL};
// ... 其他初始化操作 ...
while (true) {
printf("请输入操作选项(1: 添加,2: 删除,退出): ");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1: // 添加
// ...
case 2: {
printf("输入学号或姓名:");
int id = 0;
char name[50] = "";
scanf("%d", &id);
scanf("%s", name);
delete_record(&students, id, name);
break;
}
// 更多case...
default: exit(0); // 退出程序
}
}
return 0;
}
```
阅读全文