学生管理系统01

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 100
struct student
{
   char num[20];//学号 
   char name[20];//姓名 
   float elec;//选修课 
   float expe;//实验课 
   float requ;//必修课 
   float sum;//总成绩 '
   float ave;//平均成绩 
}student[N];
  
void Menu(); // 菜单 
void in();//录入 
void show() ;//查找 
void order();//排序 
void del(); //删除 
void modify();//修改 
void total ();//统计 
void insert ();//插入 
int count=0;//人数 
void save();//保存 
int main() 
{
    Menu();
     
    return 0; 
}
  
void Menu()//菜单
  
{   while(1)
    {
      printf("\t\t\t---------------STUDENT---------------\t\t\t\n");
      printf("\t\t\t0.退出\t\t\t\n");
      printf("\t\t\t1.录入成绩\t\t\t\n");
      printf("\t\t\t2.查询成绩\t\t\t\n"); 
      printf("\t\t\t3.删除成绩\t\t\t\n");
      printf("\t\t\t4.修改成绩\t\t\t\n");
      printf("\t\t\t5.插入成绩\t\t\t\n");
      printf("\t\t\t6.排序\t\t\t\n");
      printf("\t\t\t7.统计学生人数\t\t\t\n");
      printf("\t\t\t-------------------------------------\t\t\t\n"); 
      printf("\t\t\t选择(0---7)\t\t\t"); 
       int  chioce;
       scanf("%d",&chioce);
     switch(chioce)
     {
         case 0:exit(0); break;
         case 1: in();system("pause");system("cls");break;//录入 
         case 2: show();system("pause");system("cls");break;//查询 
         case 3: del();system("pause");system("cls");break;//删除 
         case 4: modify();system("pause");system("cls");break;//修改 
         case 5: insert();system("pause");system("cls");break;//插入 
         case 6: order();system("pause");system("cls");break;//排序 
         case 7: total();system("pause");system("cls");break;//统计 
         default:printf("\n输入错误,请输入0---7\n\n");system("pause");system("cls");break;
     
     }
  }
}
  
void save()  //保存 
{
    FILE* fp;
    char filename[100];
    int i;
    printf("请输入要保存的文件名(请注意不要与之前文件名同名,以免造成错误):\n");
    scanf("%s", filename);
    if ((fp = fopen(filename, "w")) == NULL)
    {
        printf("打开文件失败!\n");
        exit(0);
    }
    for (i = 1; i<=count; i++)
    {
        if (fwrite(&student[i], sizeof(struct student), 1, fp) != 1)
            printf("保存失败!\n");
    }
    printf("保存成功!\n");
    fclose(fp);
}
  
void in()//录入信息 
{
   int i,n;
        printf("输入录取学生的数量\n");
        scanf("%d", &n);
        for (i=1 ; i<=n; i++)
        {   printf("请输入第%d位学生学号:\n",i);
            scanf("%s",student[i].num);
            printf("请输入第%d位学生姓名:\n", i );
            scanf("%s",student[i].name);
            printf("请输入第%d位学生选修课成绩:\n", i );
            scanf("%f",&student[i].elec);
            printf("请输入第%d位学生实验成绩:\n", i );
            scanf("%f", &student[i].expe);
            printf("请输入第%d位学生必修课成绩:\n", i );
            scanf("%f", &student[i].requ);
            student[i].sum=student[i].elec+student[i].expe+student[i].requ;
             student[i].ave=student[i].sum /3;
          count++;
        } 
    printf("录入成功\n");
    save();        
}    
 
void modify()//修改 
{  
    if(count==0)
    {
         printf("还未录入任何学生信息,请先录入学生信息\n");
         return;
    }        
        int i,j=0,h;
        float score;
        char xh[20];     
        printf ("01.输入修改的学生的学号:\n") ;
       scanf("%s",xh);
        for(i=1;i<=count;i++)
        if (strcmp(student[i].num,xh)==0)
           j=i;
        if(j==0)
        {
            printf("该学生不存在\n");
            return;
        }
        printf("请选择修改内容\n");
        printf("1.修改该学生的选修课成绩\n");
        printf("2.修改该学生的实验课成绩\n");
        printf("3.修改该学生的必修课成绩\n");
        scanf("%d",&h);
        switch (h) 
        {
            case 1:printf("请输入该学生的选修课成绩\n");scanf("%f",&score);student[j].elec=score; break;
            case 2:printf("请输入该学生的实验课成绩\n");scanf("%f",&score);student[j].expe=score;break;
            case 3:printf("请输入该学生的必修课成绩\n");scanf("%f",&score);student[j].requ=score;break;
            default :printf("\n输入错误"); return;
        } 
        student[j].sum = student[j].elec+student[j].expe + student[j].requ;
        student[j].ave=student[j].sum/3;
        printf("修改后为:\n");
        printf("\n学号:%-5s  姓名:%-5s  选修课成绩:%-5.1f  实验课成绩:%-5.1f  必修课成绩:%-5.1f  总分:%-5.1f  平均分:%-5.1f\n",
            student[j].num,student[j].name,student[j].elec,student[j].expe,student[j].requ,student[j].sum,student[j].ave);
        printf("\n");
        printf("修改成功\n");
        save(); 
}
  
void show() //查询 
{
    if(count==0)
    {
         printf("还未录入任何学生信息,请先录入学生信息\n");
         return;
    }     
              
        int i,flag=0;
        char xh[20]; 
        
        printf("请输入要查询的学生学号:\n");
        
        getchar();
        
        gets(xh);
        
        for (i=1;i<=count;i++) 
        {
            
            if(strcmp(student[i].num,xh)==0)
            {
                flag=1;
                printf("\n学号:%-5s  姓名:%-5s  选修课成绩:%-5.1f  实验课成绩:%-5.1f  必修课成绩:%-5.1f  总分:%-5.1f  平均分:%-5.1f\n",
            student[i].num,student[i].name,student[i].elec,student[i].expe,student[i].requ,student[i].sum,student[i].ave);
            }
            
        }
        
        if(flag==0) printf("该学生不存在\n");     
}
      
 void order()//排序 
     {  
     if(count==0)
     {
         printf("还未录入任何学生信息,请先录入学生信息\n");
         return;
     }     
        int i,j,m;
        for(j=1;j<=count-1;j++)
    {    m=j;
        for(i=j+1;i<=count;i++)
        {
        if(student[i].sum < student[m].sum)
        {
         student[0]=student[i];
          student[i]=student[m];
         student[m]=student[0];
       }
       }
    }
    for(j=1;j<=count;j++)
    {
          printf("\n学号:%-5s  姓名:%-5s  选修课成绩:%-5.1f  实验课成绩:%-5.1f  必修课成绩:%-5.1f  总分:%-5.1f  平均分:%-5.1f\n",
            student[j].num,student[j].name,student[j].elec,student[j].expe,student[j].requ,student[j].sum,student[j].ave);
  }                 
 } 
  
void del()//删除 
{   
    int j,a=0;
    char xh[25];
    printf("所要删除的学生学号为:\n");
    scanf("%s",xh);
    fflush(stdin);
    for (j=1;j<=count;j++)
    {
        if (strcmp(student[j].num,xh)==0)
        {
            for (j=a;j<count;j++)
            student[j]=student[j+1];
            count--;
            printf("删除成功\n");
            save(); 
            return;         
        }
        a++;
    }
        printf("没有你所要删除的学生的信息\n");
}
  
void insert ()//插入 
{
    if(count==100) 
    {
        printf("容量已满\n");
        return;
    }
    int m, flag, i = count, j,k;
    
    printf("请输入待添加的学生人数:\n");
    
    scanf("%d", &m);
    
    if (m > 0)
    {
        k=count+1;
        for(i=k;i<=count+m;i++)    
        {
            flag = 1;
            while (flag!= 0)
            {
                flag = 0;
                printf("请输入第%d位学生的学号:\n", i);
                getchar();
                gets(student[i].num);
                for (j = 1; j < i; j++)
                {
                    if (strcmp(student[i].num, student[j].num) == 0)
                    {
                        printf("该学号已存在,请重新输入!\n");
                        flag = 1;
                        break;
                    }
                }
            }
            printf("请输入第%d位学生姓名:\n", i );
            gets(student[i].name);
            printf("请输入第%d位学生选修课成绩:\n", i );
            scanf("%f",&student[i].elec);
            printf("请输入第%d位学生实验成绩:\n", i );
            scanf("%f", &student[i].expe);
            printf("请输入第%d位学生必修课成绩:\n", i );
            scanf("%f", &student[i].requ);
            student[i].sum=student[i].elec+student[i].expe+student[i].requ;
            student[i].ave=student[i].sum /3;
        }
        count+= m;
        printf("添加完成!\n");
        save();
    }
}
void total ()//统计 
{
    printf("学生人数%d\n",count);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值