学生健康管理系统的设计与实现 主要实现学生健康情况管理的几个操作功能:新建、插入、删除、写入文件和查询、屏幕输出功能。健康表中学生的信息由学号、姓名、出生日期、性别、身体状况。 利用二叉树来实现,系统的菜单功能如下: 1、新建学生健康表 2、向学生健康表插入学生信息 3、从文件中读取健康表信息 4、向文件写入学生健康表信息 5、在建康表中查询学生信息(按学号进行查询) 6、在屏幕中输出全部学生信息 7、退出 实验设计 以排序二叉树为储存机制,可以方便的实现插入或删除学生信息。每个学生的信息储存在一个结构体 Student中,并且这个结构体帯有输出学生信息的函数output()。然后以这个结构体作为二叉树节点的数据类 型,这样就实现了学生信息的存储。在创建二叉树对象时将已存储在文件中的学生信息写入二叉树,在析构函数里实现将学生信息写入文件。 使用C语言,充分使用数据结构中的二叉树知识 语言简明,模块清晰。
时间: 2024-03-30 07:38:25 浏览: 49
您刚才说的是关于学生健康管理系统的设计与实现。该系统的主要功能是对学生的健康情况进行管理,包括新建、插入、删除、写入文件和查询、屏幕输出等操作。学生的健康表中包含学号、姓名、出生日期、性别和身体状况等信息。为了实现该系统,我们采用了二叉树来储存学生信息,并使用结构体来表示每一个学生。在创建二叉树对象时,我们会将文件中已存储的学生信息写入二叉树中,而在析构函数中则会将学生信息写回文件中。使用C语言,充分利用数据结构中的二叉树知识,实现了语言简明、模块清晰的系统设计。系统的菜单功能包括新建学生健康表、向学生健康表插入学生信息、从文件中读取健康表信息、向文件写入学生健康表信息、在健康表中查询学生信息(按学号进行查询)、在屏幕中输出全部学生信息和退出。我们以排序二叉树为储存机制,可以方便地实现插入或删除学生信息。每个学生的信息存储在一个结构体Student中,并且这个结构体带有输出学生信息的函数output()。然后以这个结构体作为二叉树节点的数据类型,这样就实现了学生信息的存储。
相关问题
写出学生健康管理系统的设计与实现 的代码,要求主要实现学生健康情况管理的几个操作功能:新建、插入、删除、写入文件和查询、屏幕输出功能。健康表中学生的信息由学号、姓名、出生日期、性别、身体状况。 利用二叉树来实现,系统的菜单功能如下: 1、新建学生健康表 2、向学生健康表插入学生信息 3、从文件中读取健康表信息 4、向文件写入学生健康表信息 5、在建康表中查询学生信息(按学号进行查询) 6、在屏幕中输出全部学生信息 7、退出 实验设计 以排序二叉树为储存机制,可以方便的实现插入或删除学生信息。每个学生的信息储存在一个结构体 Student中,并且这个结构体帯有输出学生信息的函数output()。然后以这个结构体作为二叉树节点的数据类 型,这样就实现了学生信息的存储。在创建二叉树对象时将已存储在文件中的学生信息写入二叉树,在析构函数里实现将学生信息写入文件。 使用C语言,充分使用数据结构中的二叉树知识 语言简明,模块清晰。
下面是一个简单的C语言实现,实现学生健康管理系统的设计与实现,要求主要实现学生健康情况管理的几个操作功能:新建、插入、删除、写入文件和查询、屏幕输出功能。健康表中学生的信息由学号、姓名、出生日期、性别、身体状况。利用二叉树来实现,系统的菜单功能如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct student {
char id[10];
char name[20];
char birth[20];
char sex[10];
char health[20];
} Student;
typedef struct node {
Student data;
struct node *left;
struct node *right;
} Node;
Node *create_tree() {
return NULL;
}
void insert_node(Node **tree, Student data) {
if (*tree == NULL) {
*tree = (Node *)malloc(sizeof(Node));
(*tree)->data = data;
(*tree)->left = NULL;
(*tree)->right = NULL;
} else if (strcmp(data.id, (*tree)->data.id) < 0) {
insert_node(&(*tree)->left, data);
} else {
insert_node(&(*tree)->right, data);
}
}
void delete_node(Node **tree, char *id) {
if (*tree == NULL) {
return;
}
if (strcmp(id, (*tree)->data.id) < 0) {
delete_node(&(*tree)->left, id);
} else if (strcmp(id, (*tree)->data.id) > 0) {
delete_node(&(*tree)->right, id);
} else {
if ((*tree)->left == NULL) {
Node *temp = (*tree)->right;
free(*tree);
*tree = temp;
} else if ((*tree)->right == NULL) {
Node *temp = (*tree)->left;
free(*tree);
*tree = temp;
} else {
Node *temp = (*tree)->right;
while (temp->left != NULL) {
temp = temp->left;
}
(*tree)->data = temp->data;
delete_node(&(*tree)->right, temp->data.id);
}
}
}
void write_to_file(Node *tree) {
FILE *fp = fopen("students.txt", "w");
if (tree == NULL) {
return;
}
write_to_file(tree->left);
fprintf(fp, "%s,%s,%s,%s,%s\n", tree->data.id, tree->data.name, tree->data.birth, tree->data.sex, tree->data.health);
write_to_file(tree->right);
fclose(fp);
}
void read_from_file(Node **tree) {
FILE *fp = fopen("students.txt", "r");
if (fp == NULL) {
return;
}
char buffer[100];
while (fgets(buffer, 100, fp) != NULL) {
Student data;
sscanf(buffer, "%[^,],%[^,],%[^,],%[^,],%[^\n]", data.id, data.name, data.birth, data.sex, data.health);
insert_node(tree, data);
}
fclose(fp);
}
void find_node(Node *tree, char *id) {
if (tree == NULL) {
printf("Student not found.\n");
return;
}
if (strcmp(id, tree->data.id) < 0) {
find_node(tree->left, id);
} else if (strcmp(id, tree->data.id) > 0) {
find_node(tree->right, id);
} else {
printf("Student id: %s\n", tree->data.id);
printf("Student name: %s\n", tree->data.name);
printf("Student birth: %s\n", tree->data.birth);
printf("Student sex: %s\n", tree->data.sex);
printf("Student health: %s\n", tree->data.health);
}
}
void print_tree(Node *tree) {
if (tree == NULL) {
return;
}
print_tree(tree->left);
printf("Student id: %s\n", tree->data.id);
printf("Student name: %s\n", tree->data.name);
printf("Student birth: %s\n", tree->data.birth);
printf("Student sex: %s\n", tree->data.sex);
printf("Student health: %s\n", tree->data.health);
printf("\n");
print_tree(tree->right);
}
void menu() {
printf("1. Create new student health table\n");
printf("2. Insert student information\n");
printf("3. Read student information from file\n");
printf("4. Write student information to file\n");
printf("5. Find student information\n");
printf("6. Print all student information\n");
printf("7. Quit\n");
}
int main() {
Node *tree = create_tree();
int choice;
do {
menu();
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1: {
tree = create_tree();
printf("Student health table created.\n");
break;
}
case 2: {
Student data;
printf("Enter student id: ");
scanf("%s", data.id);
printf("Enter student name: ");
scanf("%s", data.name);
printf("Enter student birth: ");
scanf("%s", data.birth);
printf("Enter student sex: ");
scanf("%s", data.sex);
printf("Enter student health: ");
scanf("%s", data.health);
insert_node(&tree, data);
printf("Student information inserted.\n");
break;
}
case 3: {
read_from_file(&tree);
printf("Student information read from file.\n");
break;
}
case 4: {
write_to_file(tree);
printf("Student information written to file.\n");
break;
}
case 5: {
char id[10];
printf("Enter student id: ");
scanf("%s", id);
find_node(tree, id);
break;
}
case 6: {
print_tree(tree);
break;
}
case 7: {
printf("Exiting program.\n");
break;
}
default: {
printf("Invalid choice.\n");
break;
}
}
} while (choice != 7);
return 0;
}
```
注意:上述代码只是一个简单的实现,还有很多问题需要考虑,比如如何处理异常情况、如何保证程序的安全性和稳定性等。在实际使用中需要根据具体的需求进行修改和完善。
阅读全文