用简单基本的语言实现,要求里面一共有五个学科,分别为,英语,高数,c语言,计算机网络,近代史。可以追加酬金,看最终成品。
2条回答 默认 最新
- sinJack 2022-05-06 21:39关注
#include<stdio.h> #include<stdlib.h> #include<string.h> struct student { char num[12]; char name[12]; int a,b,c; }; typedef struct stu { struct student data; struct stu *next; } stu,*pupil; pupil L; void creat()//创建链表 { L = NULL; L = (pupil)malloc(sizeof(stu)); L->next = NULL; } int menu()//菜单 { printf("|**********欢迎进入学生信息管理系统**********|\n"); printf("| 1.录入学生信息 |\n"); printf("| 2.显示学生信息 |\n"); printf("| 3.查询学生信息 |\n"); printf("| 4.修改学生信息 |\n"); printf("| 5.添加学生信息 |\n"); printf("| 6.删除学生信息 |\n"); printf("| 7.按总分排名次 |\n"); printf("| 0.退出 |\n"); printf("|********************************************|\n"); printf("|请输入您所选的选项(0-7):"); int number; scanf("%d", &number); return number; } void join(pupil L)//录入学生信息 { pupil p; p = (pupil)malloc(sizeof(stu)); p->next = NULL; scanf("%s",&p->data.num); scanf("%s",&p->data.name); scanf("%d %d %d", &p->data.a, &p->data.b, &p->data.c); p->next = L->next; L->next = p; } void show(pupil L)//显示学生信息 { L = L->next; if(!L) { printf("|******************无学生信息****************|\n"); return ; } printf("|***************开始显示学生信息*************|\n"); while(L) { printf("%s ", L->data.num); printf("%s ", L->data.name); printf("%d %d %d\n", L->data.a, L->data.b, L->data.c); L = L->next; } } void inquire(pupil L)//查询学生信息 { char x[12]; printf("|输入你要查询的学号:"); scanf("%s",&x); while(L = L->next) { if(strcmp(L->data.num,x)==0) break; } printf("%s ", L->data.num); printf("%s ", L->data.name); printf("%d %d %d\n", L->data.a, L->data.b, L->data.c); } void alter(pupil L)//修改学生信息 { int z; char x[12],y; printf("输入修改学生的学号或名字:"); scanf("%s",&x); while(L = L->next) { if(strcmp(x,L->data.num)==0||strcmp(x,L->data.name)==0) break; } printf("修改该同学的第哪项成绩(1-3):"); getchar(); scanf("%c",&y); printf("输入修改后的成绩:"); scanf("%d",&z); if(y=='1') { L->data.a=z; } else if(y=='2') { L->data.b=z; } else { L->data.c=z; } printf("修改后:"); printf("%s ", L->data.num); printf("%s ", L->data.name); printf("%d %d %d\n", L->data.a, L->data.b, L->data.c); } void add(pupil L)//添加学生信息 { pupil p; p = (pupil)malloc(sizeof(stu)); p->next = NULL; printf("输入新添加同学的信息:"); scanf("%s",&p->data.num); scanf("%s",&p->data.name); scanf("%d %d %d", &p->data.a, &p->data.b, &p->data.c); p->next = L->next; L->next = p; } void del(pupil L)//删除学生信息 { char x[12]; if(!L->next) { printf("无学生信息,操作错误\n"); return ; } printf("输入需要删除的学生的学号或名字:"); scanf("%s",&x); pupil S; while(L->next) { S = L->next; if(strcmp(x,S->data.num)==0||strcmp(x,S->data.name)==0) { L->next = S->next; break; } L = L->next; } } void rank(pupil L)//按总分排名次 { L = L->next; pupil p = L->next->next,q = L->next; for(; q!=NULL; q = q->next) { for(; p!=NULL; p=p->next) { if(q->data.a+q->data.b+q->data.c < p->data.a+p->data.b+p->data.c) { q->next = p->next; p->next = q; L->next = p; } } } } void chooser(int number) { switch(number) { case 1: { int vis; printf("|********开始录入学生信息********|\n"); printf("你要录入人数为:"); scanf("%d",&vis); for(int i=0; i<vis; i++) { join(L); } } break;//录入学生信息 case 2: show(L); break;//显示学生信息 case 3: { inquire(L); } break;//查询学生信息 case 4: { alter(L); } break;//修改学生信息 case 5: { add(L); } break;//添加学生信息 case 6: { del(L); } break;//删除学生信息 case 7: rank(L); break;//按总分排名次 case 0: exit(0); break;//退出 } } int main() { int number; creat(); while(number = menu()) { chooser(number); } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥20 西门子S7-Graph,S7-300,梯形图
- ¥50 用易语言http 访问不了网页
- ¥50 safari浏览器fetch提交数据后数据丢失问题
- ¥15 matlab不知道怎么改,求解答!!
- ¥15 永磁直线电机的电流环pi调不出来
- ¥15 用stata实现聚类的代码
- ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
- ¥20 docker里部署springboot项目,访问不到扬声器
- ¥15 netty整合springboot之后自动重连失效
- ¥15 悬赏!微信开发者工具报错,求帮改