C语言编程学生成绩管理系统,输入学号或者姓名删除学生的记录
时间: 2024-09-15 19:15:17 浏览: 84
在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;
}
```
阅读全文