简单的学籍管理系统

来源:互联网 发布:知乎kindle推送 编辑:程序博客网 时间:2024/04/29 04:06
#include<stdio.h>#include<stdlib.h>typedef struct student{int num;                      //学号char name[20];                //姓名float Chinese;                //语数外成绩float Math;float English;float Average;                //平均成绩struct student* next;}Student;/*打印简单的职工管理系统*/void PrintHead(void){printf("**********************************\n");for(int i = 1;i <= 5;i ++){if(i != 3){printf("*                                *\n");}else{printf("*        简单的学生管理系统      *\n");}}printf("**********************************\n");}/*打印菜单*/void PrintManu(void){printf("  ****************************************************************************\n");printf("1:学生基本信息录入2:学生基本信息输出\n");printf("3:删除某学生信息4:插入单个学生 5:输出平均分大于80的学生的信息0:退出系统\n");printf("  ****************************************************************************\n");}/*初始化链表*/Student* InitLNode(void){Student *L;L = (Student*)malloc(sizeof(struct student));if(!L){printf("内存申请失败\n");exit(1);}L->next = NULL;return L;}/*检测学号是否存在*/Student* Ifhas(Student *L,int x){Student *p,*q;p = L;if(p->next == NULL)return NULL;q = p;p = p->next;while(p!=NULL){if(p->num == x)return q;q = p;p = p->next;}return NULL;}/*删除某学生信息*/void DeleteStudent(Student *L){Student *p,*q;p = L;printf("请输入你想删除学生的学号\n");int n;scanf("%d",&n);q = Ifhas(p,n);if(q){p = q;q = q->next;p->next = q->next;free(q);                 }elseprintf("不存在此学生\n");}/*添加学生*/void Checkin(Student *L){Student *p,*q;p = L;while(p->next!=NULL)p = p->next;q = (Student*)malloc(sizeof(struct student));if(!q)printf("Out of space\n");printf("请分别输入学生学号\n");scanf("%d",&q->num);if(Ifhas(L,q->num)){printf("已有此学号的学生\n");return;}printf("请继续输入学生姓名,语文成绩,数学成绩,英语成绩\n");scanf("%s %f %f %f",q->name,&q->Chinese,&q->Math,&q->English);q->Average = (q->Chinese + q->Math + q->English)/3;q->next = NULL;p->next = q;}/*输出*/void PrintStudent(Student *L){Student *p;if(L->next == NULL)printf("还没录入任何学生\n");p = L->next;while(p){printf("学号:%d\n名字:%s\n语文成绩:%.3f 数学成绩:%.3f 英语成绩:%.3f\n平均成绩:%.3f\n\n",p->num,p->name,p->Chinese,p->Math,p->English,p->Average);p = p->next;}}/*学生输入*/void AddStudent(Student *L){    int i,num;Student *p,*q;p = L;while(p->next!=NULL)p = p->next;printf("请输入学生人数:");scanf("%d",&num);for(i=1;i<=num;i++){q = (Student*)malloc(sizeof(struct student));if(!q){printf("内存申请失败\n");exit(1);}printf("请输入第%d个学生of%d\n",i,num);printf("学号:");scanf("%d",&q->num);printf("姓名:");scanf("%s",q->name);printf("语文:");scanf("%f",&q->Chinese);printf("数学:");scanf("%f",&q->Math);printf("英语:");scanf("%f",&q->English);q->Average = (q->Chinese+q->English+q->Math)/3;q->next = NULL;p->next = q;p = p->next;}}/*输出平均分大于80的学生的信息*/void PrintfGoodStudent(Student *L){Student *p;p = L->next;while(p){if(p->Average > 80.0)printf("学号:%d\n名字:%s\n语文成绩:%.3f 数学成绩:%.3f 英语成绩:%.3f\n平均成绩:%.3f\n\n",p->num,p->name,p->Chinese,p->Math,p->English,p->Average);p = p->next;}}int main(void){int n;Student *L;L = InitLNode();PrintHead();PrintManu();printf("请输入你要选择的功能:\n");while(scanf("%d",&n)!=EOF){if(n == 0)exit(1);else if(n == 1){AddStudent(L);}else if(n == 2){PrintStudent(L);}else if(n == 3){DeleteStudent(L);}else if(n == 4){Checkin(L);}if(n == 5)PrintfGoodStudent(L);PrintManu();printf("请输入你要选择的功能:\n");}return 0;}

0 0
原创粉丝点击