求一个c语言的学生信息管理系统。要简单点的,头文件只有string,stdio,math,等简单的

求一个c语言的学生信息管理系统。要简单点的,头文件只有string,stdio,math,等简单的要简单点的,别太复杂

#include <stdio.h>
#include <stdlib.h>
    int n;
 typedef struct student{
    int num;
    int mingci;
    char name[20];
    double a[4];
    double sum;
    double avreage;
  
    struct student *next;
} STU;
    STU *creat();
    void add_student(STU *);
    void show(STU *);
    STU *delete_student(STU *);
    void paiming(STU *);
    void show_one(STU *s);
    int panduan(double l);
  
    int main()  {
            int choose;
             STU *head=creat();
  
            while(1){
                        printf("1 å½•å…¥ä¿¡æ¯\n");
                        printf("2 æŸ¥è¯¢å­¦ç”Ÿä¿¡æ¯\n");
                        printf("3 åˆ é™¤å­¦ç”Ÿä¿¡æ¯\n");
  
  
                    scanf("%d",&choose);
                switch(choose){
                case 1:add_student(head);break;
                case 2:show(head);break;
                 case 3:head=delete_student(head);break;
                default: break;
  
                }
  
            }
  
  
  
    return 0;
}
//创建链表表头
STU *creat(){
    n=0;
    STU *head;
  
    head=(STU *)malloc(sizeof(STU));
     head->next=NULL;
    return head;
    }
//录入学生信息
void add_student(STU *s){
    STU *p=s;
    STU *p1;
    while(p->next!=NULL){
        p=p->next;
    }   while(1){
  
        printf("请输入学号:学号为0表示输入结束输入!");
        scanf("%d",&p->num);
        if(p->num!=0){
                 n++;
        printf("请输入姓名:");
        scanf("%s",p->name);
         printf("请输入成绩 æ ¼å¼C程序设计 é«˜ç­‰æ•°å­¦ è‹±è¯­ çº¿æ€§ä»£æ•°ï¼š");
        scanf("%lf%lf%lf%lf",&p->a[0],&p->a[1],&p->a[2],&p->a[3]);
        p->sum=p->a[0]+p->a[1]+p->a[2]+p->a[3];
        p->avreage=p->sum/4;
        p->mingci=0;
  
        p1=(STU *)malloc(sizeof(STU));
        p->next=p1;
        p1->next=NULL;
        p=p1;
        }else
            {
            printf("录入结束!\n");
            paiming(s);
            break;
                        }
  
        }
}
//根据学号删除学生信息
STU *delete_student(STU *s){
    int num;
    STU *p=s,*p1;
    printf("请输入要删除学生的学号:");
    scanf("%d",&num);
    while(p->next!=NULL){
  
        if(p->num==num&&s==p){
                n--;
            return p->next;
            }else if(p->num==num){
                n--;
                p1->next=p->next;
                paiming(s);
                return s;
  
            }   p1=p;
                p=p->next;
  
  
            }
            if(n==0){printf("数据库目前为空,请录入信息!\n");}
            else{
            printf("没有发现你输入的学号!\n");}
            return s;
  
}
//显示学生数据库信息
void show(STU *s){
    STU *head=s;
        if(n==0){
            printf("数据库为空,请先录入信息!\n");
    }
        else{
            while(s->next!=NULL){
            printf("学号:%d å§“名:%s æˆç»©:%.2lf %.2lf %.2lf %.2lf å¹³å‡åˆ†:%.2lf åæ¬¡:%d \n",s->num,s->name,s->a[0],s->a[1],s->a[2],s->a[3],s->avreage,s->mingci);
            s=s->next;
    }
    show_one(head);
}
}
//对学生按平均分排名
 void paiming(STU *s){
     double score[n];
     int j,i=0;
     STU *head=s;
     while(s->next!=NULL){
  
        score[i]=s->avreage;
        s=s->next;
        i++;
     }
     double temp;
     for(i=0;i<n;i++){
        for(j=i;j<n;j++){
               if(score[i]<score[j]){
                temp=score[i];
                score[i]=score[j];
                score[j]=temp;
               }
  
        }
     }
  
  
    for(i=0;i<n;i++){
            if(score[i]!=0){
                s=head;
            while(s->next!=NULL){
               if(s->mingci==0){
  
                    if(score[i]==s->avreage){
                        score[i]=0;
                        s->mingci=i+1;
                        break;
                                            }
  
                               }
                s=s->next;
        }
    }
}
  
  
  
}
//单科平均分统计
void show_one(STU *s){
  
    double ar[4]={0};
    int b[4][4]={{0},{0},{0},{0}};
    int i;
    while(s->next!=NULL){
  
            for(i=0;i<4;i++){
                b[i][panduan(s->a[i])]++;
                ar[i]+=s->a[i];
            }
        s=s->next;
    }
    printf("各科平均分 %.2lf %.2lf %.2lf %.2lf\n",ar[0]/n,ar[1]/n,ar[2]/n,ar[3]/n);
    printf("90-100分 %d %d %d %d\n",b[0][0],b[1][0],b[2][0],b[3][0]);
    printf("80-89分 %d %d %d %d\n",b[0][1],b[1][1],b[2][1],b[3][1]);
    printf("60-79分 %d %d %d %d\n",b[0][2],b[1][2],b[2][2],b[3][2]);
    printf("60分以下 %d %d %d %d\n",b[0][3],b[1][3],b[2][3],b[3][3]);
  
}
  
int panduan(double l){
  
    if(l>=90&&l<=100) return 0;
   else if(l>=80&&l<=89) return 1;
    else  if(l>=60&&l<=79) return 2;
    else return 3;
  
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-01-11
写了没
第2个回答  2018-01-09
还有其他要求吗追问

没了

追答

q我

我给你做

1123665434

相似回答