用C语言编写一个学生成绩管理系统,要求是使用链表作为结构,实现插入,删除,修改和查询功能。另外随机生成几组数据,可以输出目前所有的成绩信息到一个图形界面
时间: 2024-05-02 09:22:58 浏览: 91
好的,您的问题是如何使用C语言编写一个学生成绩管理系统,要求使用链表作为结构,实现插入、删除、修改和查询功能。同时,您还要求随机生成几组数据,并将所有成绩信息输出到一个图形界面。
首先,我们需要定义一个结构体来存储学生成绩信息,包括学生的姓名、学号和成绩。可以定义如下结构体:
```c
typedef struct student {
char name[20];
int id;
int score;
struct student *next;
} Student;
```
其中,next指向下一个节点,可以实现链表的功能。
接下来,我们可以定义一些基本的操作函数。
1. 插入操作函数
```c
void insert(Student *head, Student *stu) {
stu->next = head->next;
head->next = stu;
}
```
2. 删除操作函数
```c
void delete(Student *head, int id) {
Student *p = head, *q = head->next;
while (q) {
if (q->id == id) {
p->next = q->next;
free(q);
return;
}
p = q;
q = q->next;
}
}
```
3. 修改操作函数
```c
void modify(Student *head, int id, int score) {
Student *p = head->next;
while (p) {
if (p->id == id) {
p->score = score;
return;
}
p = p->next;
}
}
```
4. 查询操作函数
```c
Student *search(Student *head, int id) {
Student *p = head->next;
while (p) {
if (p->id == id) {
return p;
}
p = p->next;
}
return NULL;
}
```
然后,我们可以编写一个主函数,随机生成几组数据,对这些数据进行插入、删除、修改、查询等操作。
```c
int main() {
srand(time(NULL));
int i, id, score;
Student *head = (Student *)malloc(sizeof(Student));
head->next = NULL;
for (i = 0; i < 5; ++i) {
Student *stu = (Student *)malloc(sizeof(Student));
sprintf(stu->name, "Student%d", i + 1);
stu->id = i + 1;
stu->score = rand() % 101;
insert(head, stu);
}
// 打印所有学生成绩信息
Student *p = head->next;
while (p) {
printf("name = %s, id = %d, score = %d\n", p->name, p->id, p->score);
p = p->next;
}
// 删除某个学生的成绩信息
printf("Which student do you want to delete?\n");
scanf("%d", &id);
delete(head, id);
// 修改某个学生的成绩信息
printf("Which student do you want to modify?\n");
scanf("%d", &id);
printf("Please input the new score.\n");
scanf("%d", &score);
modify(head, id, score);
// 查询某个学生的成绩信息
printf("Which student do you want to search?\n");
scanf("%d", &id);
Student *q = search(head, id);
if (q) {
printf("name = %s, id = %d, score = %d\n", q->name, q->id, q->score);
} else {
printf("Not found.\n");
}
return 0;
}
```
最后,我们可以使用任意的图形界面库来显示所有学生成绩信息。比如,可以使用Qt或者MFC等库来实现。
阅读全文