用c语言编写一个表格,此表格拥有增加、删除、修改、查询功能。表格内容为学生的姓名、年龄、学号、性别、成绩。并且显示学生总人数。
时间: 2024-09-09 21:02:30 浏览: 32
在C语言中,由于缺乏内置的数据结构支持,我们可以使用数组或链表等数据结构来模拟一个简单的数据库。这里我们使用动态内存分配的链表结构来实现这个功能,因为链表可以方便地插入、删除和修改元素。以下是基本的步骤:
1. 定义结构体 `Student` 用于存储学生信息:
```c
struct Student {
char name[50];
int age;
int student_id;
enum {MALE, FEMALE} gender;
float score;
};
```
2. 创建链表节点 `Node` 和全局链表头指针 `head`:
```c
typedef struct Node {
struct Student data;
struct Node* next;
} Node;
Node* head = NULL;
```
3. 功能实现:
- **增加** 学生:
```c
void add_student(Node** head, struct Student new_student) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (!newNode) {
printf("Memory allocation failed.\n");
return;
}
newNode->data = new_student;
newNode->next = *head;
*head = newNode;
}
```
- **删除** 学生(假设通过学号查找并删除):
```c
void delete_student(Node** head, int student_id) {
Node* current = *head;
while (current != NULL && current->data.student_id != student_id) {
current = current->next;
}
if (current == NULL) {
printf("Student not found.\n");
return;
}
Node* temp = current->next;
free(current);
*head = temp;
}
```
- **修改** 学生信息:
```c
void modify_student(Node** head, int student_id, int field, int value) {
Node* current = *head;
while (current != NULL && current->data.student_id != student_id) {
current = current->next;
}
if (current == NULL) {
printf("Student not found.\n");
return;
}
switch (field) {
// 修改对应字段
case 0: // 姓名
current->data.name = ...; // 更新名字
break;
// 其他字段类似...
}
}
```
- **查询** 学生总数:
```c
int get_total_students(Node* head) {
int count = 0;
Node* current = head;
while (current != NULL) {
count++;
current = current->next;
}
return count;
}
```
4. 最后,记得处理用户输入,如读取输入创建新学生、提供交互式界面进行操作等。
注意:这只是一个基础示例,实际应用中需要处理更多边界条件,并可能需要引入文件I/O来持久化数据。同时,为了保持代码整洁,你还可以考虑封装这些功能到函数中,以便于管理和维护。