标题:学生成绩管理系统
只看楼主
应惜红颜
Rank: 2
等 级:论坛游民
帖 子:35
专家分:27
注 册:2018-5-20
结帖率:100%
 问题点数:0 回复次数:3 
学生成绩管理系统
学生成绩管理.zip (6.36 KB)

觉得自己太懒了
这个东西是上学期的作业
用cfree写的,所以有可能VC不能用,会出错
用的都是文件
登录时还需要做个密码加密,懒~~~
搜索更多相关主题的帖子: 学生 成绩 管理系统 登录 加密 
2018-09-04 11:03
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define n 2  //定义人数
#define course 3   //定义课程门数
#define len sizeof(struct student)
void inquiry(struct student *head);
void score_max(struct student *head);
void score_average(struct student *head);
void score_alter(struct student *head);
void score_count(struct student *head);
void score_delete(struct student *head);
void score_min(struct student *head);
void score_ascending(struct student *head);
void course_ascending(struct student *head);
struct student
{
    char name[10];
    int stu_id;        
    int score[course];
    char sex;
    int age;
    struct student *next;
}a[n];

int main()
{  
    struct student *p1,*p2,*head,*p;
    p=a;
    for(int i=0;i<n;i++)
    {
        p1=(struct student *)malloc(len);
        printf("第%d个学生的信息为\n",i+1);
        
        printf("请输入姓名:");
        scanf("%s",&(*p1).name);
      
        printf("请输入学号:");
        scanf("%d",&(*p1).stu_id);
        
        printf("请输入成绩:");
        for(int j=0;j<course;j++)
            scanf("%d",&(*p1).score[j]);
        getchar();
      
        printf("请输入性别:");
        scanf("%c",&(*p1).sex);
        getchar();
        
        printf("请输入年龄:");
        scanf("%d",&(*p1).age);   
        
        if(i==0)
           head=p1;
        else
           p2->next=p1;
        p2=p1;
    }
    p2->next=NULL;
int xuanze;
    printf("菜单:\n\
            0 退出 :\n\
            1 请输入学号查询学生的信息\n\
            2 求某个学生的最高成分:\n\
            3 求某个学生的平均成绩:\n\
            4 修改某个学生的第n门课程的成绩:\n\
            5 统计某个学生不及格课程的门数及输出基本信息:\n\
            6 删除某一学生的成绩:\n\
            7 求某个学生的最低分:\n\
            8 把某个学生成绩升序排列:\n\
            9 把某门课的成绩按升序排列:\n");
    printf("请输入你的选择:0-9:");
    scanf("%d",&xuanze);
    switch(xuanze)
    {
      case 0:return 0;                 //必须用a不能用p,前面输入时p++,不再是数组的首地址了
      case 1:inquiry(head);break;
      case 2:score_max(head);break;
      case 3:score_average(head);break;
      case 4:score_alter(head);break;
      case 5:score_count(head);break;
      case 6:score_delete(head);break;
      case 7:score_min(head);break;
      case 8:score_ascending(head);break;
      case 9:course_ascending(head);break;
      default:printf("enter date error!:\n");   
    }
    return 0;
}
void inquiry(struct student *head)   //查询学生的基本信息
{
    struct student *p=head;
    int xh;
    printf("请输入学号:\n");
       scanf("%d",&xh);
    while(p!=NULL)
    {
        if((*p).stu_id==xh)
        {
            printf("姓名为:%s\n 学号为%d\n 性别为%c\n 年龄为%d\n ",
                  (*p).name,(*p).stu_id,(*p).sex,(*p).age);
            printf("成绩为");
            for(int i=0;i<course;i++)
                 printf("%3d",(*p).score[i]);
            break;
        }
        p=p->next;
    }
}
void score_max(struct student *head) //求学生课程的最高分
{
    int xh,max=(*p).score[0],t;
    printf("请输入要查找成绩最大的学生的学号:\n");
       scanf("%d",&xh);
     while(p!=NULL)
     {
         if((*p).stu_id==xh)
        {
          for(int i=1;i<c;i++)
           {
                if((*p).score[i]>max)
                {
                    t=max;
                    max=(*p).score[i];
                    (*p).score[i]=t;
                }
           }
           printf("几门课程中成绩最高的为:%d",max);
           break;
        }
        p++;
      }
}
void score_average(struct student *head)    //计算某一学生成绩的平均分
{
    int xh,sum=0;
    float aver=0;
    printf("请输入你要算平均值的学生的学号:\n");
        scanf("%d",&xh);
    while(p!=NULL)
    {
        if((*p).stu_id==xh)
        {
          for(int i=0;i<c;i++)
           {
                sum=sum+(*p).score[i];
           }
              aver=sum/c;
              printf("学号=%d,平均分=%.2f",xh,aver);
              break;
         }
       p++;
    }
}
void score_alter(struct student *head)  //修改某一学生的成绩
{
    int xh;
    printf("请输入要修改成绩的学生的学号:\n");
    scanf("%d",&xh);
    while(p!=NULL)
    {
        if((*p).stu_id==xh)
        {
               printf("请输入要修改的成绩:\n");
               for(int i=0;i<c;i++)
               {
                   scanf("%d",&(*p).score[i]);
            }
            break;
        }
        p++;
    }
    printf("修改过后的成绩为:\n");
    for(int i=0;i<c;i++)
       printf("%3d",(*p).score[i]);
}
void score_count(struct student *head)  //统计不及格学生的信息
{
    int xh,min=60,count=0;
    printf("请输入要统计不及格门数学生的学号:\n");
    scanf("%d",&xh);
    while(p!=NULL)
    {
        if((*p).stu_id==xh)
        {
            for(int i=0;i<c;i++)
            {
                if((*p).score[i]<min)
                   count++;
            
            }
            printf("不及格学生的基本信息为:\n");
            printf("姓名为:%s\n 学号为%d\n 性别为%c\n 年龄为%d\n ",
                  (*p).name,(*p).stu_id,(*p).sex,(*p).age);
            printf("成绩为");
            for(int i=0;i<c;i++)
                 printf("%3d",(*p).score[i]);
            break;
        }
        p++;
    }
    printf("不及格门数为:%d",count);
}
void score_delete(struct student *head)  //删除某一学生的成绩
{
   int xh;
   printf("请输入要删除成绩的学生的学号:\n");
   scanf("%d",&xh);
   while(p!=NULL)
   {
       if((*p).stu_id==xh)
       {
           memset((*p).score,0,sizeof((*p).score));
           break;  
       }
       p++;
   }
   for(int i=0;i<c;i++)
     if((*p).score[i]==0)
     {
        printf("成绩以删除成功!");
        break;
     }   
}
void score_min(struct student *head)  //求最低分
{
  int xh,min=(*p).score[0],t;
  printf("请输入要查询最低分学生的学号:\n");
  scanf("%d",&xh);
  while(p!=NULL)
  {
       if((*p).stu_id==xh)
        {
           for(int i=1;i<c;i++)
            if((*p).score[i]<min)
            {
              t=min;
              min=(*p).score[i];
              (*p).score[i]=t;
          }
          printf("最低分为:%d",min);
          break;
       }
    p++;
  }   
}
void score_ascending(struct student *head)
{
    int xh,t;
    printf("请输入要排列成绩的学生的学号:\n");
    scanf("%d",&xh);
    while(p!=NULL)
    {
        if((*p).stu_id==xh)
        {
            for(int j=0;j<c-1;j++)
                for(int i=0;i<c-1-j;i++)
                    if((*p).score[i+1]<(*p).score[i])
                    {
                        t=(*p).score[i];
                        (*p).score[i]=(*p).score[i+1];
                        (*p).score[i+1]=t;
                    }
            
            printf("升序排列后的顺序为:\n");
            for(int i=0;i<c;i++)
               printf("%3d",(*p).score[i]);   
            break;
        }
        p++;
    }
}
void course_ascending(struct student *head)
{
    int course;
    int max;
    printf("请输入你要按升序排列的课程号:\n");
    scanf("%d",&course);
    course--;                     //课程号减一,因为数组是从零开始计数的
    for(int j=0;j<n-1;j++)
    {
        for(int i=0;i<n-1-j;i++)
        {
            if((*(p+i)).score[course]>(*(p+i+1)).score[course])
            {
                max=(*(p+i)).score[course];
                (*(p+i)).score[course]=(*(p+i+1)).score[course];
                (*(p+i+1)).score[course]=max;
               
            }
        }
    }
    printf("第%d门课程排序后的成绩为:\n",course);
    for(int i=0;i<n;i++)
       printf("%3d",(*(p+i)).score[course]);
}

这是我原来做的
2018-09-04 12:01
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
得分:0 
回复 2楼 花脸
厉害了,你用的什么软件写代码,能不能发个链接给我
2018-09-05 08:57
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
回复 3楼 lxk1732942
什么链接?
2018-09-05 09:23



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-489602-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021949 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved