学生管理系统c语言


源码下载 下载


/**************************************MAIN*************************************************************/

#include<iostream>
#include<stdio.h>
#include"func.h"
int main()
{
 int s=menu();    //学生成绩查询系统
  while(s)
  {
  switch(s)
 {
    case 1:       //增加学生信息
   {
    system("cls");   //清屏
    int t=menu1();
    while(t)
    {
     switch(t)
     {
      case 1:add1(); break;  //手动增加学生信息
      case 2:add2();break;  //从磁盘读取学生信息
      case 0:break;
      default:system("cls");printf("输入有误,按回车返回\n");getchar();getchar();break;
      }
     system("cls");
     t=menu1();
    }
    break;
   }
       case 2:     //修改学生信息
     {
      system("cls");
      int t=menu2();
      while(t)
      {
    switch(t)
    {
      case 1:  //修改已录入学生信息
       {
        system("cls");
        int t=menu11();
        repair1(t);
        break;
       }
      case 2:repair2();break;  //修改未录入学生信息
     case 0:break;
      default:system("cls");printf("输入有误,按回车返回\n");getchar();getchar();break;
     }
    system("cls");
    t=menu2();
      }
    break;
     }
       case 3:     //删除学生信息
     {
      system("cls");
    int t=menu3();
    while(t)
    {
    switch(t)
    {
     case 1:delect(1);break;  //按学号删除学生信息
     case 2:delect(2);break;  //按姓名删除学生信息
     case 0:break;
     default:system("cls");printf("输入有误,按回车返回\n");getchar();getchar();break;
    }
    system("cls");
    t=menu3();
    }
    break;
     }
       case 4:     //打印学生信息
     {
      system("cls");
    int t=menu4();
    while(t)
     {
       switch(t)
       {
      case 1:     //打印某位同学成绩单
       {
        system("cls");
        int t=menu6();
        while(t)
        {
        switch(t)
          {
         case 1:print1(1);break;  //按照学号搜索打印平均成绩单
         case 2:print1(2);break;  //按照学号搜索打印加权平均成绩单
         case 3:print1(3);break;  //按姓名搜索打印平均成绩单
         case 4:print1(4);break;  //按姓名搜索打印加权平均成绩单
         case 0:break;
          default:system("cls");printf("输入有误,按回车返回\n");getchar();getchar();break;
          }
        system("cls");
        t=menu6();
        }
        break;
       }
      case 2:     //打印某班级成绩单
       {
        system("cls");
        int t=menu7();
        print2(t);  //按学号打印某班成绩单
         break;
       }
      case 3:     //打印某科目成绩单
       {
        system("cls");
        int t=menu8();
        print3(t);  //利用链表打印单科成绩单
         break;
        }
      case 4:    //打印总成绩单
       {
        system("cls");
        int t=menu9();
        print4(t);
         break;
       }
      case 5:    //打印某个科目优秀成绩单
       {
        system("cls");
        int t=menu10();
        while(t)
        {
        switch(t)
        {
         case 1:print5();break;  //打印单科成绩为优秀的有行政职务的同学成绩单
         case 0:break;
         default:system("cls");printf("输入有误,按回车返回\n");getchar();getchar();break;
         }
        system("cls");
        t=menu10();
        }
        break;
       }
      case 0:break;
       default:system("cls");printf("输入有误,按回车返回\n");getchar();getchar();break;
       }
       system("cls");
       t=menu4();
     }; break;
     }
       case 5:     //存储学生信息
     {
      system("cls");
    int t=menu5();
    while(t)
    {
    switch(t)
    {
     case 1:save();break;   //将当前信息保存到文件中
     case 0:break;
     default:system("cls");printf("输入有误,按回车返回\n");getchar();getchar();break;
    }
    system("cls");
    t=menu5();
    }
     break;
     }
  case 0:break;
       default:system("cls");printf("输入有误,按回车返回\n");getchar();getchar();break;
    }
 system("cls");
  s=menu();
  }
  return 0;
}

/*****************************************FUNC**********************************************************************/

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
//计算目前的学生数
int number=0;
extern int menu11();
//读入字符串返回数字
int judge(char* num)
{
 if(strlen(num)==1&&atoi(num)!=0)
  return atoi(num);
 else if(strlen(num)==3&&atoi(num)==-10)
  return -10;
 else if(strlen(num)==2&&atoi(num)>9&&atoi(num)<100)
  return atoi(num);
 else if(strlen(num)==3&&atoi(num)>99&&atoi(num)<1000)
  return atoi(num);
 else if(strlen(num)==4&&atoi(num)>999&&atoi(num)<10000)
  return atoi(num);
 else if(strlen(num)==8&&atoi(num)>=53000000&&atoi(num)<=53999999)
  return -2;
 else if(strcmp(num,"0")==0&&strlen(num)==1)
  return 0;
 return -1;
}
struct Kecheng
{
 char name[25];   //高级语言程序设计、高级语言课程设计、面向对象程序设计
 int time;    //高级语言程序设计实验、面向对象程序设计实验
 int xuefen;
 int fenshu;
};
struct Dath
{
 int year;
  int month;
  int day;
};
struct Student
{
 char xuehao[9];
 char name[8];
  int sex;
  int clas;
  char minzu[8];
  struct Dath birthday ;
  char zhiwu[8];
  struct Kecheng kecheng[5];
  float pingjunfen;
  float jiaquanfen;
  Student *next;
}stu[100];
//按平均分比较
int cmp1(const void *s1,const void *s2)
{
 return(int )((Student *)s2)->pingjunfen-((Student *)s1)->pingjunfen;
}
//按加权平均分比较
int cmp2(const void *s1,const void *s2)
{
 return((Student *)s2)->jiaquanfen-((Student *)s1)->jiaquanfen;
}
//按学号比较
int cmp3(const void *s1,const void *s2)
{
 return strcmp(((Student *)s1)->xuehao,((Student *)s2)->xuehao);
}
//按学号搜索
int search1(char * xuehao )
{
 for (int i = 0; i < number; i++)
 {
  if(strcmp(xuehao,stu[i].xuehao)==0)
   return i;
 }
 return -1;
}
//按姓名搜索
int search2(char * name )
{
 for (int i = 0; i < number; i++)
 {
  if(strcmp(name,stu[i].name)==0)
   return i;
 }
 return -1;
}

int in_name(int i)
{
 printf("输入姓名:(必填 )\n");
 scanf("%s",stu[i].name);
 return 1;
}
int in_xuehao(int i)
{
 char xue[20];
 char n1[20];
 printf("输入学号:(必填)\n"); 
  scanf("%s",xue);
  
  while(judge(xue)!=-2)
  {
   printf("输入错误!\n");
   printf("继续输入学号请输入1,返回 输入其他\n");
   scanf("%s",n1);
   if(judge(n1)==1)
   {
    printf("输入学号:\n");
    scanf("%s",xue);
   }
   else
   {
    return 0;
   }
    
  }  
  int x=search1(xue);
  if(x!=-1)
  {
   printf("该学号已存在!\n");
   return 0;
  }
  strcpy(stu[i].xuehao,xue);
  return 1;
}
int in_sex(int i)
{
 char n1[20];
 char n2[20];
 printf("输入性别:(男输入1,女输入0,不知道输入-10)\n");
  scanf("%s",n1); 
  while(judge(n1)!=0&&judge(n1)!=1&&judge(n1)!=-10)
  {
   printf("输入错误!\n");
   printf("重新输入 请输入1,返回 输入其他.\n");  
   scanf("%s",n2);
   if(judge(n2)==1)
   { 
    printf("输入性别:(男输入1,女输入0)\n");
    scanf("%s",n1);
   }
   else
   {
    return 0;
   }
  }

  stu[i].sex=judge(n1);
  return 1;
}
int in_clas(int i)
{
 char n1[20];
 char n2[20];
 printf("输入班级(不知道输入-10)\n");
  scanf("%s",n1);
  while((judge(n1)<0||judge(n1)>20)&&judge(n1)!=-10)
  {
   printf("输入错误!\n");
   printf("继续输入班级请输入1,返回 输入其他.\n");
   scanf("%s",n2);
   if(judge(n2)==1)
   { 
    printf("输入班级\n");
    scanf("%s",n1);
   }
   else
   {
    return 0;
   }
  }
  stu[i].clas=judge(n1);
  return 1;
}
int in_minzu(int i)
{
 printf("输入民族:(不知道输入-10)\n");
 scanf("%s",stu[i].minzu);
 return 1;
}
int in_birth(int i)
{
 char n1[20];
 char n2[20];
 char n3[20];
 int p=1;
 printf("输入出生日期:\n");
  while (p)
  { 
   for(int j=0;j<3;j++)
   {
    switch(j)
    {
    case 0:printf("输入年:(不知道输入-10)\n"); break;
    case 1:printf("输入月:(不知道输入-10)\n"); break;
    case 2:printf("输入日:(不知道输入-10)\n"); break;
    default:break;
    }
    scanf("%s",n1);
    switch(judge(n1))
    {
    case -2:
    case -1:
     {
      printf("输入错误!\n");
      switch(j)
      {
      case 0:printf("继续输入年 请输入1,返回 输入其他.\n");break;
      case 1:printf("继续输入月 请输入1,返回 输入其他.\n");break;
      case 2:printf("继续输入日 请输入1,返回 输入其他.\n");break;
      default:break;
      }
     scanf("%s",n2);
     if(judge(n2)==1)
     {
      switch(j)
      {
      case 0:printf("输入年:(不知道输入-10)\n"); break;
      case 1:printf("输入月:(不知道输入-10)\n"); break;
      case 2:printf("输入日:(不知道输入-10)\n"); break;
      default:break;
      }
      scanf("%s&#

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值