⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chenhan.c

📁 学生管理系统
💻 C
📖 第 1 页 / 共 3 页
字号:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 3
#define PRINT1 printf("--------------------------------------------------------------------------------\n")
#define PRINT2 printf("学 号---------------姓名-----------性别-------出生年月日---------家庭地址-------\n")
#define PRINT3 printf("0%ld            %s            %s          %d/%d/%d          %s\n\n",pm[i].number,pm[i].name,pm[i].sex,pm[i].birthyear,pm[i].birthmonth,pm[i].birthday,pm[i].address)
#define PRINT4 printf("学 号---------------姓名----------语言成绩-----数学成绩----物理成绩----\n")
#define PRINT5 printf("0%ld           %s                %d           %d         %d\n\n",pm[i].number,pm[i].name,pm[i].language,pm[i].math,pm[i].wuli)
#define PRINT6 printf("学 号---------------姓名--------奖励信息--------------------------处分信息--------------------\n")
#define PRINT7 printf("0%ld           %s             %s                                  %s\n\n")



/*学生户籍信息结构体定义*/
typedef struct
{  long int number;   /*学号*/
   char name[20];    /*姓名*/
   char sex[2];     /*性别*/
   int birthyear;   /*出生年,月,日*/
   int birthmonth;
   int birthday;
   char address[100];  /*地址*/
}PM;
/*成绩*/
typedef struct
{  int number;     /*学号*/
   int language;
   int math;
   int wuli;
   int zong;
   float jun;
}SM;
 /*学生奖惩信息*/
typedef struct
{  int number;           /*学号*/
   char jiang[100];     /*奖励信息*/
   char cheng[100];     /*处分信息*/
   char pass[8];            /*密码*/
}JC;

PM pm[N];
SM sm[N];
JC jc[N];




/*储存模块*/
save_message(int sum1)
{  FILE *fp1;FILE *fp2;FILE *fp3;
   int i;
   if((fp1=fopen("students.txt","wb"))==NULL||(fp2=fopen("student2.txt","wb"))==NULL||(fp3=fopen("student3.txt","wb"))==NULL)
  {   printf("读文件错误!\n");
      return;
  }
  for(i=0;i<=sum1;i++)
  if(fwrite(&pm[i],sizeof(PM),1,fp1)!=1||fwrite(&sm[i],sizeof(SM),1,fp2)!=1||fwrite(&jc[i],sizeof(JC),1,fp3)!=1)
      printf("写文件错误!\n");
  fclose(fp1);
  fclose(fp2);
  fclose(fp3);
}



/*读取信息*/
int read_message()
{  FILE *fp1;FILE *fp2;FILE *fp3;
   int i=0;
   if((fp1=fopen("students.txt","rb"))==NULL||(fp2=fopen("student2.txt","rb"))==NULL||(fp3=fopen("student3.txt","rb"))==NULL)
     {printf("\n\n******系统内暂时还没有信息。按任意键返回主菜单选择信息录入!*******\n");
   return;
   }
   while(feof(fp1)!=1)
  {  fread(&pm[i],sizeof(PM),1,fp1);
     if(pm[i].number==0)  break;
     else i++;
  }
   fclose(fp1);
   i=0;
   while(feof(fp2)!=1)
  {  fread(&sm[i],sizeof(SM),1,fp2);
     if(sm[i].number==0)  break;
     else  i++;
  }
   fclose(fp2);
   i=0;
   while(feof(fp3)!=1)
  {  fread(&jc[i],sizeof(JC),1,fp3);
     if(jc[i].number==0)  break;
     else  i++;
  }
   fclose(fp3);
  return(i);
}


/*权限模块*/
password1(int sum1)       /*设置管理员权限*/
{ int flag,i;long num1;char p2[8];

   do
 { printf("\n  -----------------------------学生管理系统------------------------\n\n\n");
   printf("\n\n            请输入 用户名:");
   scanf("%ld",&num1);
   flushall();
   printf("\n              密码(6位):");
   gets(p2);
   flushall();
   for(i=0;i<sum1;i++)
  if(num1==04073003&&strcmp(p2,jc[i].pass)==0)
       flag=1;
  else  {flag=0;
          system("cls");
          printf("\n              您输入的用户名或密码错误! 请重新输入!\n");
         }
  }while(flag==0);
   system("cls");
   printf("\n\n                   欢迎进入学生管理系统管理员界面!\n\n");
   return(i);
}

password(int sum1)
{  int i,flag;long num;char p1[8];
   do
 { printf("\n  -----------------------------学生管理系统------------------------\n\n\n");
   printf("\n\n            请输入 用户名:");
   scanf("%ld",&num);
   flushall();
   printf("\n              密码(6位):");
   gets(p1);
   flushall();
   for(i=0;i<sum1;i++)
   if(jc[i].number==num&&strcmp(jc[i].pass,p1)==0)
          flag=1;
   else  {flag=0;
          system("cls");
          printf("\n              您输入的用户名或密码错误! 请重新输入!\n");
         }
  }while(flag==0);
return(i);
}



/*录入模块*/
input_message(int sum1)
{   int i,j,s=N,choice,flag;
    i=sum1,j=sum1;
    password(sum1);
    system("cls");
    printf("\n\n             录入学生信息(最多%d名)\n",s);
    printf("             ----------------------------------\n");
    do
  { /*录入户籍信息*/
    printf("             --------------第%d名---------------",j);
    printf("\n             学号(8位):");
    scanf("%ld",&pm[i].number);
    flushall();
    printf("\n             姓名:");
    gets(pm[i].name);
    flushall();
    printf("\n             性别:");
    scanf("%s",&pm[i].sex);
    flushall();
    printf("\n             出生年月日(例如1985/3/26):");
    scanf("%d/%d/%d",&pm[i].birthyear,&pm[i].birthmonth,&pm[i].birthday);
    flushall();
    printf("\n             地址:");
    gets(pm[i].address);
    flushall();
    /*录入成绩信息*/
    printf("\n             语言成绩:");
    scanf("%d",&sm[i].language);
    flushall();
    printf("\n             数学成绩:");
    scanf("%d",&sm[i].math);
    flushall();
    printf("\n             物理成绩:");
    scanf("%d",&sm[i].wuli);
    flushall();
    /*录入奖惩信息*/
    printf("\n             所受奖励:");
    gets(jc[i].jiang);
    flushall();
    printf("\n             所受处分:");
    gets(jc[i].cheng);
    flushall();
    printf("\n             密码:");
    gets(jc[i].pass);
    flushall();
    i++;
    j++;
    printf("\n                是否继续录入第%d名(Y/N)\n",j);
    choice=getch();
    if(choice=='Y'||choice=='y')
          flag=1;
    else  flag=0;
  }while(i<s&&flag==1);
    printf("\n               ----%d名学生信息录入完成----\n",j);
    sum1=i;
    printf("\n              按任意键返回!\n");
    bioskey(0);
}



/*输出模块*/
pm_output(int sum2)
{   int i=0,j=0,count,page=1;
    system("cls");
    printf("\n\n        -------------学生户籍信息表----------第%d页\n",page);
    PRINT2;
    PRINT1;
    do
  { j++;
    if(pm[i].number!=0)
    {if(j%2!=0)
     { PRINT3;
       PRINT1;
     }
     else
      {PRINT3;
       PRINT1;
       if(pm[i+1].number!=0)
       {++page;
       printf("\n\n        -------------学生户籍信息表----------第%d页\n",page);
       PRINT2;
       PRINT1;
       }
      }
    }
     i++;
  }while(pm[i].number!=0&&i<=sum2);
}


sm_output(int sum2)
{   int i=0,j=0,count,page=1;
    system("cls");
    printf("\n\n        -------------学生成绩信息表----------第%d页\n",page);
    PRINT4;
    PRINT1;
    do
  { j++;
    if(pm[i].number!=0)
    {if(j%2!=0)
     { PRINT5;
       PRINT1;
     }
     else
      {PRINT5;
       PRINT1;
       if(pm[i+1].number!=0)
       {++page;
       printf("\n\n        -------------学生成绩信息表----------第%d页\n",page);
       PRINT4;
       PRINT1;
       }
      }
    }
     i++;
  }while(pm[i].number!=0&&i<=sum2);
}



jc_output(int sum2)
{   int i=0,j=0,count,page=1;
    system("cls");
    printf("\n\n        -------------学生奖惩信息表----------第%d页\n",page);
    PRINT6;
    PRINT1;
    do
  { j++;
    if(pm[i].number!=0)
    {if(j%2!=0)
     { PRINT7;
       PRINT1;
     }
     else
      {PRINT7;
       PRINT1;
       if(pm[i+1].number!=0)
       {++page;
       printf("\n\n        -------------学生奖惩信息表----------第%d页\n",page);
       PRINT6;
       PRINT1;
       }
      }
    }
     i++;
  }while(pm[i].number!=0&&i<=sum2);
}



output_message(int sum1)
{   int choice;
    system("cls");
    printf("\n\n                请选择要显示的信息:\n\n");
    printf("\n                1.户籍信息\n");
    printf("\n                2.成绩信息\n");
    printf("\n                3.奖惩信息\n");
    printf("\n                0.退出\n");
    scanf("%d",&choice);
    flushall();
    system("cls");
    switch(choice)
  { case 1: pm_output(sum1);break;
    case 2: sm_output(sum1);break;
    case 3: jc_output(sum1);break;
    case 0: break;
  }
    printf("按任意键返回主菜单");
    bioskey(0);
}



/*修改模块*/
change_message(int sum1)
{  int i=0,j,choice1,choice2,flag1,flag2;long  num;char pass1[8],pass2[8],pass0[8];
   i=password(sum1);
   do
 { system("cls");
   printf("\n                  请选择您要修改的信息种类:\n");
   printf("\n                     1.学生户籍信息\n");
   printf("\n                     2.学生成绩信息\n");
   printf("\n                     3.学生奖惩信息和密码\n");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -