学生管理系统C语言程序
时间: 2023-10-25 18:11:02 浏览: 39
很抱歉,我是AI语言模型,无法提供完整的学生管理系统C语言程序。但是,我可以给您一些参考:
1. 首先,需要定义学生结构体,包括学号、姓名、性别、年龄、成绩等信息。
typedef struct student{
char id[20]; //学号
char name[20]; //姓名
char sex[5]; //性别
int age; //年龄
float score; //成绩
}STUDENT;
2. 然后,可以定义一个链表存储学生信息。
typedef struct node{
STUDENT data; //学生信息
struct node *next; //指向下一个节点的指针
}NODE;
NODE *head = NULL; //链表头指针
3. 接下来,需要实现添加学生、删除学生、修改学生、查询学生等基本功能。
void add_student(){ //添加学生
NODE *p = (NODE *)malloc(sizeof(NODE)); //创建新节点
printf("请输入学号:");
scanf("%s", p->data.id);
printf("请输入姓名:");
scanf("%s", p->data.name);
printf("请输入性别:");
scanf("%s", p->data.sex);
printf("请输入年龄:");
scanf("%d", &p->data.age);
printf("请输入成绩:");
scanf("%f", &p->data.score);
p->next = head; //插入链表头部
head = p;
}
void delete_student(){ //删除学生
char id[20];
printf("请输入要删除的学生的学号:");
scanf("%s", id);
NODE *p = head;
NODE *pre = NULL;
while(p != NULL){
if(strcmp(p->data.id, id) == 0){ //找到要删除的节点
if(pre == NULL){ //删除头节点
head = p->next;
}else{
pre->next = p->next;
}
free(p); //释放内存
printf("删除成功!\n");
return;
}
pre = p;
p = p->next;
}
printf("未找到该学生!\n");
}
void modify_student(){ //修改学生
char id[20];
printf("请输入要修改的学生的学号:");
scanf("%s", id);
NODE *p = head;
while(p != NULL){
if(strcmp(p->data.id, id) == 0){ //找到要修改的节点
printf("请输入修改后的姓名:");
scanf("%s", p->data.name);
printf("请输入修改后的性别:");
scanf("%s", p->data.sex);
printf("请输入修改后的年龄:");
scanf("%d", &p->data.age);
printf("请输入修改后的成绩:");
scanf("%f", &p->data.score);
printf("修改成功!\n");
return;
}
p = p->next;
}
printf("未找到该学生!\n");
}
void search_student(){ //查询学生
char id[20];
printf("请输入要查询的学生的学号:");
scanf("%s", id);
NODE *p = head;
while(p != NULL){
if(strcmp(p->data.id, id) == 0){ //找到要查询的节点
printf("学号:%s\n", p->data.id);
printf("姓名:%s\n", p->data.name);
printf("性别:%s\n", p->data.sex);
printf("年龄:%d\n", p->data.age);
printf("成绩:%.2f\n", p->data.score);
return;
}
p = p->next;
}
printf("未找到该学生!\n");
}
4. 最后,可以实现一个简单的菜单程序,让用户选择需要执行的功能。
int main(){
int choice;
while(1){
printf("\n**********学生管理系统**********\n");
printf("1.添加学生\n");
printf("2.删除学生\n");
printf("3.修改学生\n");
printf("4.查询学生\n");
printf("0.退出系统\n");
printf("请输入你的选择:");
scanf("%d", &choice);
switch(choice){
case 1: add_student(); break;
case 2: delete_student(); break;
case 3: modify_student(); break;
case 4: search_student(); break;
case 0: exit(0);
default: printf("输入错误,请重新输入!\n"); break;
}
}
return 0;
}
这只是一个简单的示例,实际应用中还需要考虑数据存储、文件读写、界面设计等问题。