c语言写教学信息管理系统的代码
时间: 2023-10-14 14:23:49 浏览: 47
好的,您可以参考以下代码实现基于C语言的教学信息管理系统:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//定义学生结构体
typedef struct{
char name[20];
int age;
char gender[5];
int id;
}Student;
//定义教师结构体
typedef struct{
char name[20];
char gender[5];
int id;
}Teacher;
//定义课程结构体
typedef struct{
char name[20];
int num;
float credit;
Teacher teacher;
}Course;
//定义节点结构体
typedef struct node{
Student student;
struct node *next;
}Node;
//添加学生信息节点的函数
void addStudent(Node *head){
Node *p = head;
//先找到链表尾部
while(p->next != NULL){
p = p->next;
}
//新建节点并输入学生信息
Node *newNode = (Node *)malloc(sizeof(Node));
printf("请输入学生姓名:");
scanf("%s", newNode->student.name);
printf("请输入学生年龄:");
scanf("%d", &newNode->student.age);
printf("请输入学生性别:");
scanf("%s", newNode->student.gender);
printf("请输入学生学号:");
scanf("%d", &newNode->student.id);
newNode->next = NULL;
//将新节点加入链表的最后一个节点
p->next = newNode;
printf("添加成功!\n");
}
//删除学生信息节点的函数
void deleteStudent(Node *head, int id){
Node *p = head;
Node *temp;
//找到要删除的节点
while(p->next != NULL && p->next->student.id != id){
p = p->next;
}
if(p->next == NULL){
printf("没有找到要删除的节点!\n");
return;
}
//删除节点
temp = p->next;
p->next = temp->next;
free(temp);
printf("删除成功!\n");
}
//查找学生信息节点的函数
void findStudent(Node *head, int id){
Node *p = head;
//找到要查找的节点
while(p->next != NULL && p->next->student.id != id){
p = p->next;
}
if(p->next == NULL){
printf("没有找到要查找的节点!\n");
return;
}
//输出节点信息
printf("姓名:%s\n", p->next->student.name);
printf("年龄:%d\n", p->next->student.age);
printf("性别:%s\n", p->next->student.gender);
printf("学号:%d\n", p->next->student.id);
}
//添加课程信息的函数
void addCourse(Course *courses, int *count){
int index = *count;
//输入课程信息
printf("请输入课程名称:");
scanf("%s", courses[index].name);
printf("请输入课程号:");
scanf("%d", &courses[index].num);
printf("请输入课程学分:");
scanf("%f", &courses[index].credit);
printf("请输入教师姓名:");
scanf("%s", courses[index].teacher.name);
printf("请输入教师性别:");
scanf("%s", courses[index].teacher.gender);
printf("请输入教师工号:");
scanf("%d", &courses[index].teacher.id);
(*count)++;
printf("添加成功!\n");
}
//删除课程信息的函数
void deleteCourse(Course *courses, int *count, int num){
int i, j;
int index = -1;
//找到要删除的课程在数组中的位置
for(i = 0; i < *count; i++){
if(courses[i].num == num){
index = i;
break;
}
}
if(index == -1){
printf("没有找到要删除的课程!\n");
return;
}
//将后面的课程向前移动
for(j = index + 1; j < *count; j++){
courses[j - 1] = courses[j];
}
(*count)--;
printf("删除成功!\n");
}
//修改课程信息的函数
void modifyCourse(Course *courses, int count, int num){
int i, choice;
int index = -1;
//找到要修改的课程在数组中的位置
for(i = 0; i < count; i++){
if(courses[i].num == num){
index = i;
break;
}
}
if(index == -1){
printf("没有找到要修改的课程!\n");
return;
}
//选择要修改的内容
printf("请选择要修改的内容:\n");
printf("1.课程名称\n2.课程学分\n3.教师姓名\n4.教师性别\n5.教师工号\n");
scanf("%d", &choice);
switch(choice){
case 1:
printf("请输入新的课程名称:");
scanf("%s", courses[index].name);
break;
case 2:
printf("请输入新的课程学分:");
scanf("%f", &courses[index].credit);
break;
case 3:
printf("请输入新的教师姓名:");
scanf("%s", courses[index].teacher.name);
break;
case 4:
printf("请输入新的教师性别:");
scanf("%s", courses[index].teacher.gender);
break;
case 5:
printf("请输入新的教师工号:");
scanf("%d", &courses[index].teacher.id);
break;
default:
printf("选择无效!\n");
break;
}
printf("修改成功!\n");
}
//输出所有学生信息的函数
void outputStudents(Node *head){
Node *p = head->next;
while(p != NULL){
printf("姓名:%s\n", p->student.name);
printf("年龄:%d\n", p->student.age);
printf("性别:%s\n", p->student.gender);
printf("学号:%d\n", p->student.id);
printf("\n");
p = p->next;
}
}
//输出所有课程信息的函数
void outputCourses(Course *courses, int count){
int i;
for(i = 0; i < count; i++){
printf("课程名称:%s\n", courses[i].name);
printf("课程号:%d\n", courses[i].num);
printf("课程学分:%f\n", courses[i].credit);
printf("教师姓名:%s\n", courses[i].teacher.name);
printf("教师性别:%s\n", courses[i].teacher.gender);
printf("教师工号:%d\n", courses[i].teacher.id);
printf("\n");
}
}
//主函数
int main(){
int choice, id, num;
int count = 0;
Node *head = (Node *)malloc(sizeof(Node));
head->next = NULL;
Course *courses = (Course *)malloc(10 * sizeof(Course));
while(1){
printf("请选择要进行的操作:\n");
printf("1.添加学生信息\n2.删除学生信息\n3.查找学生信息\n4.添加课程信息\n");
printf("5.删除课程信息\n6.修改课程信息\n7.输出所有学生信息\n8.输出所有课程信息\n9.退出\n");
scanf("%d", &choice);
switch(choice){
case 1:
addStudent(head);
break;
case 2:
printf("请输入要删除的学生学号:");
scanf("%d", &id);
deleteStudent(head, id);
break;
case 3:
printf("请输入要查找的学生学号:");
scanf("%d", &id);
findStudent(head, id);
break;
case 4:
addCourse(courses, &count);
break;
case 5:
printf("请输入要删除的课程号:");
scanf("%d", &num);
deleteCourse(courses, &count, num);
break;
case 6:
printf("请输入要修改的课程号:");
scanf("%d", &num);
modifyCourse(courses, count, num);
break;
case 7:
outputStudents(head);
break;
case 8:
outputCourses(courses, count);
break;
case 9:
exit(0);
default:
printf("选择无效!\n");
break;
}
}
return 0;
}
```
希望以上代码能够帮助您实现教学信息管理系统!