Student Management System

/***************************************************
*    student manage system      *
***************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<time.h>
#include<windows.h>

#define  NAME   20
#define  SEX    10
#define  BIRTH   20
#define  ADDR   20
#define  POTO   16
#define  DAK    7
#define  SCHOOL   20
#define  STUDENTMAX  100


typedef struct studentinfo
{
 char name[NAME];
 char sex[SEX];
 char birth[BIRTH];
 char addr[ADDR];
 char poto[POTO];
 char dak[DAK];
 char school[SCHOOL];
};
typedef struct studentscore
{
 char name[NAME];
 int ID;
 int score[6];
 int aver;
 int sum;
};

typedef struct allstudentinfo
{
 struct studentinfo student1;
 struct studentscore student2;
};

/***************************************************
*    student info file       *
*    student score file       *
*    log student information      *
*    log student score       *
***************************************************/

FILE *infofile=NULL;
FILE *scorefile=NULL;
//char filename1[]="E://Studentinfo.dat";
//char filename2[]="E://Studentscore.dat";
char filename1[]="Studentinfo.dat";
char filename2[]="Studentscore.dat";


/***************************************************
*     checkcode()        *
***************************************************/

int checkcode()
{
    FILE *fp;
    char co[20]={0};
    char co1[20]={0};
    int i;
   
 if((fp=fopen("stu_code.dat","rb"))==NULL)                     /*身份验证*/
 {
  printf("please set your identify/n");
  printf("passcode:"); 
  scanf("%s",co); 
  /*
  i=0;
  while((co1[i]=getch())!='/r')
  {
  putchar('*');
  i++;
  }
  co1[i]='/0';
  */ 
  fp=fopen("stu_code.dat","wb+");
  for(i=0;i<20;i++)
            fwrite(&co[i],sizeof(char),1,fp);
  fclose(fp);
  return 0;
 }
 else
 {
  system("cls");
  for(i=0;i<20;i++)
            fread(&co[i],sizeof(char),1,fp);
  fclose(fp);
  printf("/n/n/n/t/t/t请输入你的密码:");
  
  //scanf("%s",co1);
  
  i=0;
  while((co1[i]=getch())!='/r')
  {
   putchar('*');
   i++;
  }
  co1[i]='/0';
  
  if(strcmp(co,co1)!=0)          /*密码校验*/
  {
   return 1;
  }
  system("cls");
 }
 return -1;
}


/***************************************************
*     修改密码        *
****************************************************/
void modifycode()
{
 FILE *fp;
 char co[20]={0};
 char co1[20]={0};
 char co2[20]={0};
 int i;
 
 if((fp=fopen("stu_code.dat","wb+"))==NULL)
 {
  printf("/a/n/n/n/n/n/n");
  printf("/t--------------------------------------------------------------/n");
  printf("/t|       请确认磁盘已满或stu_code件没有损坏、且不为空     |/n");
  printf("/t--------------------------------------------------------------/n");
  getch();
 }
 else
 {
  system("cls");
  for(i=0;i<20;i++)
            fread(&co[i],sizeof(char),1,fp);
  printf("/n/n/n/t/t/t请输入你的新密码:");
  scanf("%s",co1);
  printf("/n/n/n/t/t/t请确认你的密码:");
  scanf("%s",co2);
  if(strcmp(co1,co2))
  {
   system("cls");
   printf("/a/n/n/n/n/n/n");
   printf("/t--------------------------------------------------------------/n");
   printf("/t|                  两次输入的密码不一样 修改失败             |/n");
   printf("/t--------------------------------------------------------------/n"); 
   getch();
   fclose(fp);
   return ;
  }
  else
  {
   for(i=0;i<20;i++)
    fwrite(&co1[i],sizeof(char),1,fp);
   fclose(fp);
   
   system("cls");
   printf("/a/n/n/n/n/n/n");
   printf("/t--------------------------------------------------------------/n");
   printf("/t|                      密 码 修 改 成 功                     |/n");
   printf("/t--------------------------------------------------------------/n"); 
   getch();
  }
 }
}


/***************************************************
*     password()        *
***************************************************/

void password()
{
 int sign=0;
 time_t start,end;
 sign=checkcode();            /*************验证用户名 密码*****************/
 
 if(sign==1)
 {
  system("cls");
  printf("/n/n/n/n/n/n");
  printf("/t/t%c-----------------------------------------------%c/n",017,017);
  printf("/t/t|-----------------------------------------------|/n");
  printf("/t/t|-----------  密码不正确 请重新登陆  -----------|/n");
        printf("/t/t|-----------------------------------------------|/n");
  printf("/t/t%c-----------------------------------------------%c/n/n/n",016,016);
  start=time(NULL);
  end=time(NULL);
  while(end-start<2)
  {
   end=time(NULL);
  }
  exit(0);
 }
 else
 {
  system("cls");
  printf("/n/n/n/n/n");
  printf("/t/t-------------------------------------------------/n");
  printf("/t/t|-----------------------------------------------|/n");
  printf("/t/t|                                               |/n");
  printf("/t/t|              欢迎来到管理系统                 |/n");
  printf("/t/t|                                               |/n");
  printf("/t/t|-----------------------------------------------|/n");
  printf("/t/t-------------------------------------------------/n");
  printf("/n/n/n/n/n/n/n/n");
  printf("/t/t/t/t/t/t请稍等3秒后登陆管理系统主界面");
  start=time(NULL);
  end=time(NULL);
  while(end-start<3)
  {
   end=time(NULL);
  }
 }
 return ;
}


/***************************************************
*     showmenu()        *
****************************************************/

int showmenu()
{
 int in;
 char ch;
 printf("/n/n");
 system("cls");
 printf("/t/t-------------------------------------------------/n");
 printf("/t/t|              学生个人管理系统                 |/n");
 printf("/t/t|-----------------------------------------------|/n");
 printf("/t/t|             1、学生个人信息管理               |/n");
 printf("/t/t|                                               |/n");
 printf("/t/t|             2、学生个人成绩管理               |/n");
 printf("/t/t|                                               |/n");
 printf("/t/t|             3、关于本系统                     |/n");
 printf("/t/t|                                               |/n");
 printf("/t/t|             4、修改密码                       |/n");
 printf("/t/t|                                               |/n");
 printf("/t/t|             5、退出系统                       |/n");
 printf("/t/t-------------------------------------------------/n");
 
 printf("请您正确选择:");
 while(scanf("%d",&in)!=1)                            /*非数字的判断*/
 {
  while((ch=getchar())!='/n')
   putchar(ch);
  return in;
 }
 fflush(stdin);
 return in;
}

 

/***************************************************
*     submeun()        *
****************************************************/
int submeun()
{
 int in;
 system("cls");
 printf("/n/n");
 printf("/t/t------------------------------------------------/n");
 printf("/t/t|            学生个人信息管理                  |/n");
 printf("/t/t|----------------------------------------------|/n");
 printf("/t/t|              1、录入个人信息                 |/n");
 printf("/t/t|                                              |/n");
 printf("/t/t|              2、修改个人信息                 |/n");
 printf("/t/t|                                              |/n");
 printf("/t/t|              3、查询个人信息                 |/n");
 printf("/t/t|                                              |/n");
 printf("/t/t|              4、浏览所有信息                 |/n");
 printf("/t/t|                                              |/n");
 printf("/t/t|              5、删除个人信息                 |/n");
 printf("/t/t|                                              |/n");
 printf("/t/t|              6、退出系统                     |/n");
 printf("/t/t------------------------------------------------/n");
 printf("请选择:");
 scanf("%d",&in);
 return in;
}

/***************************************************
*        录入个人信息       *
****************************************************/
void inputinfo(struct allstudentinfo *p_student)
{
 int count;
 char ch;
 if((infofile=fopen(filename1,"ab+"))==NULL)
 {
  printf("/a/n/n/n/n/n/n");
  printf("/t--------------------------------------------------------------/n");
  printf("/t| 不能打开文件,请确认磁盘已满或E://Studentinfo.c文件没有损坏 |/n");
  printf("/t--------------------------------------------------------------/n");
  getch();
  exit(1);
 }
 else
 {
  rewind(infofile);
  
  for(count=0 ; fread(&p_student[count].student1 , sizeof(struct studentinfo) , 1 , infofile)==1 ; count++)
   continue;
  
  
  fflush(stdin);
  printf("/n/n 个人信息登记表/n");
  printf("/n请正确填写以下信息(系统目前不能支持中文,请用英文或拼音/n");
  printf("---------------------------------------------------------/n/n");
  
  /***************************************************
  *   将结构体中数组置0   避免写入文件是乱码     *
  ***************************************************/
  memset(&p_student[count].student1,0,sizeof(struct studentinfo)*STUDENTMAX);             
  
  while(count<STUDENTMAX)
  {
   printf("/n姓    名:");
   gets(p_student[count].student1.name);
   //fgets(p_student[count].student1.name,1024,stdin);
   printf("/n性    别:");
   gets(p_student[count].student1.sex );
   printf("/n出生日期:");
   gets(p_student[count].student1.birth );
   printf("/n学生地址:");
   gets(p_student[count].student1.addr );
   printf("/n联系电话:");
   gets(p_student[count].student1.poto);
   printf("/n邮政编码:");
   gets(p_student[count].student1.dak);
   printf("/n所在学校:");
   gets(p_student[count].student1.school);
   /************
   *想写入换行符
   *************/
   
   // fprintf(infofile,"/n");
   
   /*   sprintf(&p_student[count++].student1,"%s,%s,%s,%s,%s,%s,%s/n",
   p_student[count].student1.name,
   p_student[count].student1.sex,
   p_student[count].student1.birth,
   p_student[count].student1.addr,
   p_student[count].student1.poto,
   p_student[count].student1.dak,
   p_student[count].student1.school
   );
   fwrite(&p_student[count++].student1 , sizeof(struct studentinfo) , 1, infofile);
   
   */
   fwrite(&p_student[count++].student1 , sizeof(struct studentinfo) , 1, infofile);
   
   printf("是否录入下一个学生的信息(y/n)/n");
   scanf("%c",&ch);
   fflush(stdin);
   if(ch=='Y'||ch=='y')
   {
    printf("/n请输入下一个学生的信息/n");
    continue ;
   }
   else if(ch=='N'||ch=='n')
   {
    printf("个人信息录入结束/n");
    getch();
    system("cls");
    fclose(infofile);
    getch();
    return;
   }
  }
  
 }
}

/***************************************************
*               *
*              文件定位                    *
*       确定文件总共有多少个学生信息 count         *
*               *
****************************************************/
int datfile(struct allstudentinfo *p_student)
{
 int count;
 system("cls");
 
 if((infofile=fopen(filename1,"rb"))==NULL)
 {
  printf("/a/n/n/n/n/n/n");
  printf("/t--------------------------------------------------------------/n");
  printf("/t| 不能打开文件,请确认磁盘已满或E://Studentinfo.c文件没有损坏 |/n");
  printf("/t--------------------------------------------------------------/n");
  getch();
  exit(1);
 }
 else
 {
  rewind(infofile);                   /*定位文件开头*/
  for(count=0; fread(&p_student[count].student1 , sizeof(struct studentinfo) , 1 ,infofile)==1 ; count++)
   continue;
 }
 fclose(infofile);
 return count;
}

/***************************************************
***      个人信息修改管理     ***
***                 修改用户姓名                 ***
***************************************************/
void mofname(struct allstudentinfo *p_student)
{
 char ch;
 char *temp;
 char *newtemp;
 int count;
 int i;
 
 system("cls");
 count=datfile(p_student);          /*** 处理文件 文件信息的大小        ****/
 if(!count)
 {
  printf("/a/n/n/n/n/n/n");
  printf("/t--------------------------------------------------------------/n");
  printf("/t|     读取数据失败,请确认已成功录入或文件数据是否损害       |/n");
  printf("/t--------------------------------------------------------------/n");
  getch();
  return ;
 }
 
 newtemp=(char *)malloc(20*sizeof(char));   /***     分配内存     ***/
 temp= (char *)malloc(20*sizeof(char));
 printf("请输入您要修改的学生姓名:");
 while(gets(temp)!=NULL&&temp[0]!='/0')
 {
  for(i=0;i<count;i++)
  {
   if(strcmp(temp,p_student[i].student1.name))
   {
    continue;
   }
   else
   {
    printf("请您输入该学生的新姓名:");
    gets(newtemp);
    system("cls");
    printf("/a/n/n/n/n/t/t/t确定要把姓名为%s的学生修改为%s码?(y/n)",temp,newtemp);
    ch=getch();
    if(ch=='y'||ch=='Y')
    {
     strcpy(p_student[i].student1.name,newtemp);                /*修改姓名*/
     infofile=fopen(filename1,"w+b");                /*重新写入文件*/
     for(i=0;i<count;i++)
     {
      if(fwrite(&p_student[i].student1,sizeof(struct studentinfo),1,infofile)==1)
       continue;
      else
      {
       fclose(infofile);
       printf("修改失败,返回重新操作.....");
       getch();
       free(temp);
       free(newtemp);
       system("cls");
       return ;
      }
      
     }
     fclose(infofile);
     system("cls");
     printf("/n/n/n/n/t/t/t已成功把%s修改为%s返回!",temp,newtemp);
     getch();
     free(temp);
     free(newtemp);
     system("cls");
     return ;
    }
   }
  }
  printf("找不到%s的个人信息,返回重新操作!",temp);
  free(temp);
  getch();
  system("cls");
  return ;
 }
 printf("/n/n/n/n/t/t/t输入有误,请返回重新操作!");
 getch();
 free(temp);
 free(newtemp);
 system("cls");
 return ;
}


/***************************************************
*         个人信息修改管理       *
*                   修改用户性别                   *
****************************************************/
void mofsex(struct allstudentinfo *p_student)
{
 int   i,count;
 char  *tempname;
 char  *tempsex;
 char ch;
 
 count=datfile(p_student);             /*确定文件中内容 多少*/
 if(!count)
 {
  printf("/a/n/n/n/n/n/n");
  printf("/t--------------------------------------------------------------/n");
  printf("/t|     读取数据失败,请确认已成功录入或文件数据是否损害       |/n");
  printf("/t--------------------------------------------------------------/n");
  getch();
  return ;
 }
 
 tempname=(char *)malloc(20*sizeof(char));
 tempsex=(char *)malloc(10*sizeof(char));
 
 printf("/n/n/n/n/t请输入要修改学生的姓名:");
 while(gets(tempname)!=NULL && tempname[0]!='/0')
 {
  for(i=0;i<count;i++)
  {   
   if(strcmp(tempname,p_student[i].student1.name))
   {
    continue;
   }
   else
   {
    printf("/n/n/n/n/t请输入性别要修改为:");
    gets(tempsex);
    system("cls");
    printf("/a/n/n/n/n/t请确认修改性别(Y/N)");
    ch=getchar();
    // scanf("")
    getch();
    if(ch=='Y' ||ch=='y')
    {
     strcpy(p_student[i].student1.sex,tempsex);
     infofile=fopen(filename1,"w+b");
     for(i=0;i<count;i++)                  /***/
     {
      if(fwrite(&p_student[i].student1,sizeof(struct studentinfo),1,infofile)==1)
      {
       continue;
      }
      else
      {
       fclose(infofile);
       printf("/n/n/n/n/t修改性别%s失败",tempsex);
       getch();
       free(tempname);
       free(tempsex);
       system("cls");
      }
     }
     fclose(infofile);
     printf("/n/n/n/n/t成功修改性别%s",tempsex);
     free(tempsex);
     free(tempname);
     getch();
     system("cls");
     return ;
    }
    else if(ch=='N'|| ch=='n')
    {
     printf("/n/n/n/n/t修改操作已取消/n");
     free(tempname);
     free(tempsex);
     getch();
     system("cls");
    }
   }
  }
  printf("/a/n/n/n/n/t输入的姓名不存在");
  free(tempname);
  free(tempsex);
  getch();
  system("cls");
  return ;
 }
 printf("/a/n/n/n/n/t输入有误、重新选择:/n");
 free(tempname);
 free(tempsex);
 getch();
 system("cls");
}


/***************************************************
*         个人信息修改管理       *
*                   修改出生日期                   *
****************************************************/
void mofbith(struct allstudentinfo *p_student)
{
 int   i,count;
 char  *tempname;
 char  *temp;
 char ch;
 
 count=datfile(p_student);             /*确定文件中内容 多少*/
 if(!count)
 {
  printf("/a/n/n/n/n/n/n");
  printf("/t--------------------------------------------------------------/n");
  printf("/t|     读取数据失败,请确认已成功录入或文件数据是否损害       |/n");
  printf("/t--------------------------------------------------------------/n");
  getch();
  return ;
 }
 
 tempname=(char *)malloc(20*sizeof(char));
 temp=(char *)malloc(10*sizeof(char));
 
 printf("/n/n/n/n/t请输入要修改学生的姓名:");
 while(gets(tempname)!=NULL && tempname[0]!='/0')
 {
  for(i=0;i<count;i++)
  {   
   if(strcmp(tempname,p_student[i].student1.name))
   {
    continue;
   }
   else
   {
    printf("/n/n/n/n/t请输入出生日期要修改为:");
    gets(temp);
    system("cls");
    printf("/a/n/n/n/n/t请确认修改出生日期(Y/N)");
    ch=getchar();
    // scanf("")
    getch();
    if(ch=='Y' ||ch=='y')
    {
     strcpy(p_student[i].student1.birth,temp);
     infofile=fopen(filename1,"w+b");
     for(i=0;i<count;i++)                  /***/
     {
      if(fwrite(&p_student[i].student1,sizeof(struct studentinfo),1,infofile)==1)
      {
       continue;
      }
      else
      {
       fclose(infofile);
       printf("/n/n/n/n/t修改出生日期%s失败",temp);
       getch();
       free(tempname);
       free(temp);
       system("cls");
      }
     }
     fclose(infofile);
     printf("/n/n/n/n/t成功修改出生日期%s",temp);
     free(temp);
     free(tempname);
     getch();
     system("cls");
     return ;
    }
    else if(ch=='N'|| ch=='n')
    {
     printf("/n/n/n/n/t修改操作已取消/n");
     free(tempname);
     free(temp);
     getch();
     system("cls");
    }
   }
  }
  printf("/a/n/n/n/n/t输入的姓名不存在");
  free(tempname);
  free(temp);
  getch();
  system("cls");
  return ;
 }
 printf("/a/n/n/n/n/t输入有误、重新选择:/n");
 free(tempname);
 free(temp);
 getch();
 system("cls");
}


/***************************************************
*         个人信息修改管理       *
*                   修改家庭住址                   *
****************************************************/

void mofaddr(struct allstudentinfo *p_student)
{
 int   i,count;
 char  *tempname;
 char  *temp;
 char ch;
 
 count=datfile(p_student);             /*确定文件中内容 多少*/
 if(!count)
 {
  printf("/a/n/n/n/n/n/n");
  printf("/t--------------------------------------------------------------/n");
  printf("/t|     读取数据失败,请确认已成功录入或文件数据是否损害       |/n");
  printf("/t--------------------------------------------------------------/n");
  getch();
  return ;
 }
 
 tempname=(char *)malloc(20*sizeof(char));
 temp=(char *)malloc(10*sizeof(char));
 
 printf("/n/n/n/n/t请输入要修改学生的姓名:");
 while(gets(tempname)!=NULL && tempname[0]!='/0')
 {
  for(i=0;i<count;i++)
  {   
   if(strcmp(tempname,p_student[i].student1.name))
   {
    continue;
   }
   else
   {
    printf("/n/n/n/n/t请输入家庭住址要修改为:");
    gets(temp);
    system("cls");
    printf("/a/n/n/n/n/t请确认修改家庭住址(Y/N)");
    ch=getchar();
    // scanf("")
    getch();
    if(ch=='Y' ||ch=='y')
    {
     strcpy(p_student[i].student1.addr,temp);
     infofile=fopen(filename1,"w+b");
     for(i=0;i<count;i++)                  /***/
     {
      if(fwrite(&p_student[i].student1,sizeof(struct studentinfo),1,infofile)==1)
      {
       continue;
      }
      else
      {
       fclose(infofile);
       printf("/n/n/n/n/t修改家庭住址%s失败",temp);
       getch();
       free(tempname);
       free(temp);
       system("cls");
      }
     }
     fclose(infofile);
     printf("/n/n/n/n/t成功修改家庭住址%s",temp);
     free(temp);
     free(tempname);
     getch();
     system("cls");
     return ;
    }
    else if(ch=='N'|| ch=='n')
    {
     printf("/n/n/n/n/t修改操作已取消/n");
     free(tempname);
     free(temp);
     getch();
     system("cls");
    }
   }
  }
  printf("/a/n/n/n/n/t输入的姓名不存在");
  free(tempname);
  free(temp);
  getch();
  system("cls");
  return ;
 }
 printf("/a/n/n/n/n/t输入有误、重新选择:/n");
 free(tempname);
 free(temp);
 getch();
 system("cls");
}


/***************************************************
*         个人信息修改管理       *
*                   修改联系电话                   *
****************************************************/
void mofpoto(struct allstudentinfo *p_student)
{
 int   i,count;
 char  *tempname;
 char  *temp;
 char ch;
 
 count=datfile(p_student);             /*确定文件中内容 多少*/
 if(!count)
 {
  printf("/a/n/n/n/n/n/n");
  printf("/t--------------------------------------------------------------/n");
  printf("/t|     读取数据失败,请确认已成功录入或文件数据是否损害       |/n");
  printf("/t--------------------------------------------------------------/n");
  getch();
  return ;
 }
 
 tempname=(char *)malloc(20*sizeof(char));
 temp=(char *)malloc(10*sizeof(char));
 
 printf("/n/n/n/n/t请输入要修改学生的姓名:");
 while(gets(tempname)!=NULL && tempname[0]!='/0')
 {
  for(i=0;i<count;i++)
  {   
   if(strcmp(tempname,p_student[i].student1.name))
   {
    continue;
   }
   else
   {
    printf("/n/n/n/n/t请输入联系电话要修改为:");
    gets(temp);
    system("cls");
    printf("/a/n/n/n/n/t请确认修改联系电话(Y/N)");
    ch=getchar();
    // scanf("")
    getch();
    if(ch=='Y' ||ch=='y')
    {
     strcpy(p_student[i].student1.poto,temp);
     infofile=fopen(filename1,"w+b");
     for(i=0;i<count;i++)                  /***/
     {
      if(fwrite(&p_student[i].student1,sizeof(struct studentinfo),1,infofile)==1)
      {
       continue;
      }
      else
      {
       fclose(infofile);
       printf("/n/n/n/n/t修改联系电话%s失败",temp);
       getch();
       free(tempname);
       free(temp);
       system("cls");
      }
     }
     fclose(infofile);
     printf("/n/n/n/n/t成功修改联系电话%s",temp);
     free(temp);
     free(tempname);
     getch();
     system("cls");
     return ;
    }
    else if(ch=='N'|| ch=='n')
    {
     printf("/n/n/n/n/t修改操作已取消/n");
     free(tempname);
     free(temp);
     getch();
     system("cls");
     return ;
    }
   }
  }
  printf("/a/n/n/n/n/t输入的姓名不存在");
  free(tempname);
  free(temp);
  getch();
  system("cls");
  return ;
 }
 printf("/a/n/n/n/n/t输入有误、重新选择:/n");
 free(tempname);
 free(temp);
 getch();
 system("cls");
}

/***************************************************
*         个人信息修改管理       *
*                   修改邮政编码                   *
****************************************************/
void mofdak(struct allstudentinfo *p_student)
{
 int   i,count;
 char  *tempname;
 char  *temp;
 char ch;
 
 count=datfile(p_student);             /*确定文件中内容 多少*/
 if(!count)
 {
  printf("/a/n/n/n/n/n/n");
  printf("/t--------------------------------------------------------------/n");
  printf("/t|     读取数据失败,请确认已成功录入或文件数据是否损害       |/n");
  printf("/t--------------------------------------------------------------/n");
  getch();
  return ;
 }
 
 tempname=(char *)malloc(20*sizeof(char));
 temp=(char *)malloc(10*sizeof(char));
 
 printf("/n/n/n/n/t请输入要修改学生的姓名:");
 while(gets(tempname)!=NULL && tempname[0]!='/0')
 {
  for(i=0;i<count;i++)
  {   
   if(strcmp(tempname,p_student[i].student1.name))
   {
    continue;
   }
   else
   {
    printf("/n/n/n/n/t请输入邮政编码要修改为:");
    gets(temp);
    system("cls");
    printf("/a/n/n/n/n/t请确认修改邮政编码(Y/N)");
    ch=getchar();
    // scanf("")
    getch();
    if(ch=='Y' ||ch=='y')
    {
     strcpy(p_student[i].student1.dak,temp);
     infofile=fopen(filename1,"w+b");
     for(i=0;i<count;i++)                  /***/
     {
      if(fwrite(&p_student[i].student1,sizeof(struct studentinfo),1,infofile)==1)
      {
       continue;
      }
      else
      {
       fclose(infofile);
       printf("/n/n/n/n/t修改邮政编码%s失败",temp);
       getch();
       free(tempname);
       free(temp);
       system("cls");
      }
     }
     fclose(infofile);
     printf("/n/n/n/n/t成功修改邮政编码%s",temp);
     free(temp);
     free(tempname);
     getch();
     system("cls");
     return ;
    }
    else if(ch=='N'|| ch=='n')
    {
     printf("/n/n/n/n/t修改操作已取消/n");
     free(tempname);
     free(temp);
     getch();
     system("cls");
     return ;
    }
   }
  }
  printf("/a/n/n/n/n/t输入的姓名不存在");
  free(tempname);
  free(temp);
  getch();
  system("cls");
  return ;
 }
 printf("/a/n/n/n/n/t输入有误、重新选择:/n");
 free(tempname);
 free(temp);
 getch();
 system("cls");
}

 

/***************************************************
*         个人信息修改管理       *
*                   修改所在学校                   *
****************************************************/
void mofschool(struct allstudentinfo *p_student)
{
 int   i,count;
 char  *tempname;
 char  *temp;
 char ch;
 
 count=datfile(p_student);             /*确定文件中内容 多少*/
 if(!count)
 {
  printf("/a/n/n/n/n/n/n");
  printf("/t--------------------------------------------------------------/n");
  printf("/t|     读取数据失败,请确认已成功录入或文件数据是否损害       |/n");
  printf("/t--------------------------------------------------------------/n");
  getch();
  return ;
 }
 
 tempname=(char *)malloc(20*sizeof(char));
 temp=(char *)malloc(10*sizeof(char));
 
 printf("/n/n/n/n/t请输入要修改学生的姓名:");
 while(gets(tempname)!=NULL && tempname[0]!='/0')
 {
  for(i=0;i<count;i++)
  {   
   if(strcmp(tempname,p_student[i].student1.name))
   {
    continue;
   }
   else
   {
    printf("/n/n/n/n/t请输入所在学校要修改为:");
    gets(temp);
    system("cls");
    printf("/a/n/n/n/n/t请确认修改所在学校(Y/N)");
    ch=getchar();
    // scanf("")
    getch();
    if(ch=='Y' ||ch=='y')
    {
     strcpy(p_student[i].student1.school,temp);
     infofile=fopen(filename1,"w+b");
     for(i=0;i<count;i++)                  /***/
     {
      if(fwrite(&p_student[i].student1,sizeof(struct studentinfo),1,infofile)==1)
      {
       continue;
      }
      else
      {
       fclose(infofile);
       printf("/n/n/n/n/t修改所在学校%s失败",temp);
       getch();
       free(tempname);
       free(temp);
       system("cls");
      }
     }
     fclose(infofile);
     printf("/n/n/n/n/t成功修改所在学校%s",temp);
     free(temp);
     free(tempname);
     getch();
     system("cls");
     return ;
    }
    else if(ch=='N'|| ch=='n')
    {
     printf("/n/n/n/n/t修改操作已取消/n");
     free(tempname);
     free(temp);
     getch();
     system("cls");
     return ;
    }
   }
  }
  printf("/a/n/n/n/n/t输入的姓名不存在");
  free(tempname);
  free(temp);
  getch();
  system("cls");
  return ;
 }
 printf("/a/n/n/n/n/t输入有误、重新选择:/n");
 free(tempname);
 free(temp);
 getch();
 system("cls");
}

void over()
{
 char ch;
 fflush(stdin);
 printf("/n/t/t请确认退出系统(Y/N):");
 ch=getchar();
 //getch();
 if(ch=='Y' || ch=='y')
 {
  exit(-1);
 }
 else
 {
  return ;
 } 
}


/***************************************************
*        修改个人信息       *
****************************************************/
void modinfo(struct allstudentinfo *p_student)
{
 int in;
 do
 {
  system("cls");
  printf("/t/t--------------------------------------------------------/n");
  printf("/t/t|                个人信息修改管理                      |/n");
  printf("/t/t|------------------------------------------------------|/n");
  printf("/t/t|                  1.修改用户姓名                      |/n");
  printf("/t/t|                                                      |/n");
  printf("/t/t|                  2.修改用户性别                      |/n");
  printf("/t/t|                                                      |/n");
  printf("/t/t|                  3.修改出生日期                      |/n");
  printf("/t/t|                                                      |/n");
  printf("/t/t|                  4.修改家庭住址                      |/n");
  printf("/t/t|                                                      |/n");
  printf("/t/t|                  5.修改联系电话                      |/n");
  printf("/t/t|                                                      |/n");
  printf("/t/t|                  6.修改邮政编码                      |/n");
  printf("/t/t|                                                      |/n");
  printf("/t/t|                  7.修改所在学校                      |/n");
  printf("/t/t|                                                      |/n");
  printf("/t/t|                  8.退出系统                          |/n");
  printf("/t/t--------------------------------------------------------/n");
  printf("请选择:");
  scanf("%d",&in);
  fflush(stdin);
  switch(in)
  {
  case 1:
   mofname(p_student);
   //  printf("this 1");
   break;
  case 2:
   mofsex(p_student);
   break;
  case 3:
   mofbith(p_student);
   break;   
  case 4:
   mofaddr(p_student);
   break;
  case 5:
   mofpoto(p_student);
   break;
  case 6:
   mofdak(p_student);
   break ;
  case 7:
   mofschool(p_student);
   break;
  case 8:
   over();
   break;
  }
 }
 while(1);
}

 


/***************************************************
*        查询个人信息       *
****************************************************/
void aboutinfo(struct allstudentinfo *p_student)
{
 int i,count;
 char *tempname;
 
 count=datfile(p_student);             /*确定文件中内容 多少*/
 if(!count)
 {
  printf("/a/n/n/n/n/n/n");
  printf("/t--------------------------------------------------------------/n");
  printf("/t|     读取数据失败,请确认已成功录入或文件数据是否损害       |/n");
  printf("/t--------------------------------------------------------------/n");
  getch();
  return ;
 } 
 if((infofile=fopen(filename1,"r"))==NULL)
 {
  printf("打开文件失败/n");
  getch();
  exit(0);
 }
 rewind(infofile);
 for(count=0;fread(&p_student[count].student1,sizeof(struct studentinfo),1,infofile)==1; count++)
 {
  count++;
 }
 fclose(infofile);                 /*将文件内容输入到缓存中 关闭*/
 
 
 //printf("%s/n",p_student[0].student1.name);
 
 tempname = (char *)malloc(20*sizeof(char));
 fflush(stdin);
 printf("/n/n/t请输入要查询学生的姓名:");
 //gets(tempname);
 while(gets(tempname)!=NULL && tempname[0]!='/0')
 {
  for(i=0;i<count;i++)
  {
   if(strcmp(tempname,p_student[i].student1.name))
   {
    continue;
   }
   else
   {
    system("cls");
    printf("/n/n");
    printf("/t/t-----------------------------------------/n");
    printf("/t/t|          你要查找(%s)的信息如下        |/n",tempname);
    printf("/t/t-----------------------------------------/n");
    printf("/t/t|          性    别:%s                   |/n",p_student[i].student1.sex);
    printf("/t/t|                                       |/n");
    printf("/t/t|          出生日期:%s                   |/n",p_student[i].student1.birth);
    printf("/t/t|                                       |/n");
    printf("/t/t|          学生地址:%s                   |/n",p_student[i].student1.addr);
    printf("/t/t|                                       |/n");
    printf("/t/t|          联系电话:%s                   |/n",p_student[i].student1.poto);
    printf("/t/t|                                       |/n");
    printf("/t/t|          邮政编码:%s                   |/n",p_student[i].student1.dak);
    printf("/t/t|                                       |/n");
    printf("/t/t|          所在学校:%s                   |/n",p_student[i].student1.school);
    printf("/t/t-----------------------------------------");
   } 
  }
 }
 //fclose(infofile);
}

 

/***************************************************
*        浏览所有信息       *
****************************************************/
void allinfo(struct allstudentinfo *p_student)
{
 int i,count;
 //char *tempname;
 time_t start,end;
 
 count=datfile(p_student);             /*确定文件中内容 多少*/
 if(!count)
 {
  printf("/a/n/n/n/n/n/n");
  printf("/t--------------------------------------------------------------/n");
  printf("/t|     读取数据失败,请确认已成功录入或文件数据是否损害       |/n");
  printf("/t--------------------------------------------------------------/n");
  getch();
  return ;
 } 
 if((infofile=fopen(filename1,"r"))==NULL)
 {
  printf("打开文件失败/n");
  getch();
  exit(0);
 }
 rewind(infofile);
 for(count=0;fread(&p_student[count].student1,sizeof(struct studentinfo),1,infofile)==1; count++)
 {
  count++;
 }
 fclose(infofile);                 /*将文件内容输入到缓存中 关闭*/
 
           /*
           printf("%s/n",p_student[0].student1.name);
          
          tempname = (char *)malloc(20*sizeof(char));
          fflush(stdin);
          printf("/n/n/t请输入要查询学生的姓名:");
          //gets(tempname);
          while(gets(tempname)!=NULL && tempname[0]!='/0')
          {
          for(i=0;i<count;i++)
          {
          if(strcmp(tempname,p_student[i].student1.name))
          {
          continue;
          }
          else
          {
          system("cls");
          printf("/n/n");
          printf("/t/t-----------------------------------------/n");
          printf("/t/t|          你要查找(%s)的信息如下        |/n",tempname);
          printf("/t/t-----------------------------------------/n");
          printf("/t/t|          性    别:%s                   |/n",p_student[i].student1.sex);
          printf("/t/t|                                       |/n");
          printf("/t/t|          出生日期:%s                   |/n",p_student[i].student1.birth);
          printf("/t/t|                                       |/n");
          printf("/t/t|          学生地址:%s                   |/n",p_student[i].student1.addr);
          printf("/t/t|                                       |/n");
          printf("/t/t|          联系电话:%s                   |/n",p_student[i].student1.poto);
          printf("/t/t|                                       |/n");
          printf("/t/t|          邮政编码:%s                   |/n",p_student[i].student1.dak);
          printf("/t/t|                                       |/n");
          printf("/t/t|          所在学校:%s                   |/n",p_student[i].student1.school);
          printf("/t/t-----------------------------------------");
          } 
          }
          }
          //fclose(infofile);
          
 */
 for(i=0;i<count-1;i++)
 {
  
  system("cls");
  printf("/t**********************************************************/n");
  printf("/t每个学生信息停留时间是4秒,4秒以后将显示下一个学生的信息/n");
  printf("/t**********************************************************/n");
  printf("/n姓    名:%s/n",p_student[i].student1.name);
  printf("/n性    别:%s/n",p_student[i].student1.sex);
  printf("/n出生日期:%s/n",p_student[i].student1.birth);
  printf("/n学生地址:%s/n",p_student[i].student1.addr);
  printf("/n联系电话:%s/n",p_student[i].student1.poto);
  printf("/n邮政编码:%s/n",p_student[i].student1.dak);
  printf("/n所在学校:%s/n",p_student[i].student1.school);
  printf("---------------------------------------------------------------");
  start=time(NULL);
  end=time(NULL);
  while((end-start)<4)
  {
   end=time(NULL);
  }  
 }
 printf("/n/n/t/t浏览信息结束、按任意键进入下一个功能/n");
 getch();
}


/***************************************************
*        删除个人信息       *
****************************************************/
void delinfo(struct allstudentinfo *p_student)
{
 int i,count;
 char *tempname;      //输入删除姓名:
 char ch;
 
 count=datfile(p_student);
 if(!count)
 {
  printf("/a/n/n/n/n/n/n");
  printf("/t--------------------------------------------------------------/n");
  printf("/t|     读取数据失败,请确认已成功录入或文件数据是否损害       |/n");
  printf("/t--------------------------------------------------------------/n");
  getch();
  return ;
 }
 
 infofile=fopen(filename1,"rb+");
 rewind(infofile);
 for(count=0 ; fread(&p_student[count].student1 , sizeof(struct studentinfo) , 1,infofile)==1 ; count++)
 {
  continue;
 }
 fclose(infofile);
 
 fflush(stdin);
 tempname = (char *)malloc(20*sizeof(char));
 printf("/n/n/t输入要删除学生的姓名:");
 while(gets(tempname)!=NULL && tempname[0]!='/0')
 {
  for(i=0;i<count;i++)
  {
   if(strcmp(tempname,p_student[i].student1.name))
   {
    continue;
   }
   else
   {
    
    printf("/n/n/t确认删除(Y/N): %s ",p_student[i].student1.name);
    ch=getchar();
    if(ch=='N' || ch=='n')
    {
     system("cls");
     printf("/a/n/n/n/n/n/n");
     printf("/t--------------------------------------------------------------/n");
     printf("/t|                           操作以取消                       |/n");
     printf("/t--------------------------------------------------------------/n");
     getch();
     return ;
    }
    for(;i<count;i++)
    {
     p_student[i].student1=p_student[i+1].student1;
    }
    count--;
    
    if((infofile=fopen(filename1,"wb+"))==NULL)
    {
     free(tempname);
     printf("/a/n/n/n/n/n/n");
     printf("/t--------------------------------------------------------------/n");
     printf("/t|     读取数据失败,请确认已成功录入或文件数据是否损害       |/n");
     printf("/t--------------------------------------------------------------/n");
     getch();
     return ;
    }
    for(i=0;i<count;i++)
    {
     if(fwrite(&p_student[i].student1, sizeof(struct studentinfo) ,1, infofile)!=1)
     {
      break ;
     }
    }
    fclose(infofile);
    free(tempname);
    system("cls");
    
    printf("/a/n/n/n/n/n/n");
    printf("/t--------------------------------------------------------------/n");
    printf("/t|                    成功删除学生信息                        |/n");
    printf("/t--------------------------------------------------------------/n");
    getchar();
    
    printf("/n/n/n/t是否还执行此操作(Y/N):");
    // fflush(stdin);
    ch=getch();
    if(ch=='N' || ch=='n')
    { 
     system("cls");
     printf("/a/n/n/n/n/n/n");
     printf("/t--------------------------------------------------------------/n");
     printf("/t|                           操作以取消                       |/n");
     printf("/t--------------------------------------------------------------/n");
     getchar();
     return ;
    }
    else
    {
     system("cls");
     tempname=(char *)malloc(20*sizeof(char)); //重新分配内存以删除下一个信息
     getch();
     printf("/n/n/n/t请输入你想要删除的学生姓名:");
     break;  
    }
   }
   printf("/n/n/n/t输入的姓名不存在/n");
   free(tempname);
   getch();
   system("cls");
   return ;
  }
 }
 printf("/n/n/n/t输入有误/n");
 free(tempname);
 getch();
 system("cls");
 return ;
}

 


/***************************************************
*     submain()        *
*             学生个人信息管理模块                 *
****************************************************/
void submain(struct allstudentinfo *p_student)
{
 int in;
 in=submeun();
 switch(in)
 {
 case 1:
  inputinfo(p_student);                                        /*    1、录入个人信息   */
  break;
 case 2:
  modinfo(p_student);                                          /*    2、修改个人信息   */
  //exit(0);
  break;
 case 3:
  aboutinfo(p_student);                                         /*    3、查询个人信息   */        
  break;
 case 4:
  allinfo(p_student);                                           /*    4、浏览所有信息   */
  break;
 case 5:
  delinfo(p_student);                                           /*    5、删除个人信息   */
  break;
 case 6:
  over();
  break;
 }
}

/********************************************************学生成绩管理部分***************************************************/

 

/***************************************************
*          输入个人成绩            *
****************************************************/
void inputinfoscore(struct allstudentinfo *p_student)
{
 char ch;
 int count;
 if((scorefile=fopen(filename2,"a+"))==NULL)
 {
  printf("----------------------------------------------/n");
  printf("|          打开失败,请检查文件是否损坏      |/n");
  printf("----------------------------------------------/n");
  getch();
 }
 else
 {
  rewind(scorefile);
  for(count=0 ; fread(&p_student[count].student2 , sizeof(struct studentscore),1,scorefile)==1 ; count++)
  {
   continue;
  }
  //printf("count=%d",count);
  memset(&p_student[count].student2,0,sizeof(struct studentscore)*STUDENTMAX);
  while(count<STUDENTMAX)
  {
   system("cls");
   fflush(stdin);
   printf("/n姓 名:");
   gets(p_student[count].student2.name);
   fflush(stdin);
   printf("/n学 号:");
   scanf("%d",&p_student[count].student2.ID); 
   fflush(stdin);
   printf("*******************各科成绩*******************/n");
   printf("/n语   文:");
   scanf("%d",&p_student[count].student2.score[0]); 
   fflush(stdin);
   printf("/n数  学:");
   scanf("%d",&p_student[count].student2.score[1]);
   fflush(stdin);
   printf("/n大学英语:");
   scanf("%d",&p_student[count].student2.score[2]);
   fflush(stdin);
   printf("/nC 语 言:");
   scanf("%d",&p_student[count].student2.score[3]);
   fflush(stdin);
   printf("/n软件工程:");
   scanf("%d",&p_student[count].student2.score[4]);
   fflush(stdin);
   printf("/n数据结构:");
   scanf("%d",&p_student[count].student2.score[5]);  
   fwrite(&p_student[count++].student2 , sizeof(struct studentscore) , 1, scorefile);
   fflush(stdin);
   printf("是否继续(Y/N)");
   ch=getchar();
   if(ch=='Y' || ch=='y')
   {
    printf("请输入下一个学生的成绩信息/n");
    continue;
   }
   else
   {
    fclose(scorefile); 
    printf("学生成绩录入结束/n");
    getch();
    return ;
   }
  }
 }
}


/***************************************************
*          修改个人成绩            *
****************************************************/
void modinfoscore(struct allstudentinfo *p_student)
{
 char ch;
 char *tempname;
 int i,in,count;
 if((scorefile=fopen(filename2,"a+"))==NULL)
 {
  printf("----------------------------------------------/n");
  printf("|          打开失败,请检查文件是否损坏      |/n");
  printf("----------------------------------------------/n");
  getch();
 }
 else
 {
  rewind(scorefile);
  for(count=0 ; fread(&p_student[count].student2 , sizeof(struct studentscore),1,scorefile)==1 ; count++)
  {
   continue;
  }
  /**count==0 时  进行判断**/
  for(i=0;i<count;i++)
  {
   fflush(stdin);
   tempname=(char *)malloc(20*sizeof(char));
   system("cls");
   printf("/n/n/t输入要修改成绩的学生姓名:");
   gets(tempname);
   if(strcmp(tempname,p_student[i].student2.name))
   {
    printf("/n/n/t输入学生的姓名不存在、请确认/n");
    getch();
    continue;
   }
   else
   {
    printf("----------------------------------------------------------------/n");
    printf("|                       修改学生的成绩列表                     |/n");
    printf("----------------------------------------------------------------/n");
    printf("|1、语文 2、数学 3、大学英语 4、C语言 5、软件工程  6、数据结构 |/n");
    printf("----------------------------------------------------------------/n");
    fflush(stdin);
    printf("/n请选择:");
    scanf("%d",&in);
    switch(in)
    {
    case 1:
     fflush(stdin);
     printf("/n输入语文成绩:");
     scanf("%d",&p_student[i].student2.score[0]);
     break;
    case 2:
     fflush(stdin);
     printf("/n输入数学成绩:");
     scanf("%d",&p_student[i].student2.score[1]);
     break;
    case 3:
     fflush(stdin);
     printf("/n输入大学英语成绩:");
     scanf("%d",&p_student[i].student2.score[2]);
     break;
    case 4:
     fflush(stdin);
     printf("/n输入C语言成绩:");
     scanf("%d",&p_student[i].student2.score[3]);
     break;
    case 5:
     fflush(stdin);
     printf("/n输入软件工程成绩:");
     scanf("%d",&p_student[i].student2.score[4]);
     break;
    case 6:
     fflush(stdin);
     printf("/n输入数据结构成绩:");
     scanf("%d",&p_student[i].student2.score[5]);
     break;
    }
    fwrite(&p_student[i++].student2 , sizeof(struct studentscore) , 1, scorefile);
    printf("修改成功/n");
    fflush(stdin);
    printf("是否继续(Y/N)");
    ch=getchar();
    if(ch=='Y' || ch=='y')
    {
     printf("请输入下一个学生的成绩信息/n");
     continue;
    }
    else
    {
     fclose(scorefile); 
     printf("学生成绩录入结束/n");
     getch();
     return ;
    }
   }
  }
 }
}
/***************************************************
*     scoremain()        *
*             学生个人成绩管理模块                 *
****************************************************/
void scormeun(struct allstudentinfo *p_student)
{
 int in;
 system("cls");
 printf("/n/n");
 printf("/t/t------------------------------------------------/n");
 printf("/t/t|              学生个人成绩管理                |/n");
 printf("/t/t|----------------------------------------------|/n");
 printf("/t/t|             1、录入学生个人成绩              |/n");
 printf("/t/t|                                              |/n");
 printf("/t/t|             2、修改学生个人成绩              |/n");
 printf("/t/t|                                              |/n");
 printf("/t/t|             3、查询学生个人成绩              |/n");
 printf("/t/t|                                              |/n");
 printf("/t/t|             4、浏览学生所有成绩              |/n");
 printf("/t/t|                                              |/n");
 printf("/t/t|             5、删除学生个人成绩              |/n");
 printf("/t/t|                                              |/n");
 printf("/t/t|             6、退出成绩管理系统              |/n");
 printf("/t/t------------------------------------------------/n");
 printf("/n/t/t请选择:");
 scanf("%d",&in);
 switch(in)
 {
 case 1:
  inputinfoscore(p_student);                            /*****************录入学生个人成绩*****************/
  break;
 case 2:
  modinfoscore(p_student);                              /*****************修改学生个人成绩*****************/
  break;
  
 }
 
 getch();
}

/***************************************************
*     aboutsystem()       *
*       关于本系统                   *
****************************************************/
void aboutsystem()
{
 system("cls");
 /* time_t start,end;
 start=time(NULL);
 end=time(NULL);
 
  
  system("cls");
  printf("/n/n/n/n");
  printf("/t/t                       关于本系统                       /n");
  printf("/t/t********************************************************/n");
  printf("/t/t*本系统目前不支持中文、输入中文读出时有可能会出现乱码、*/n");
  printf("/t/t*请使用英文、为了本系统能正常运行、请先录入学生个人信息*/n");
  printf("/t/t*删除、修改请谨慎使用 本系统仅供213内部人员参考、不得随*/n");
  printf("/t/t*便带出本组...                                         */n");
  printf("/t/t********************************************************/n");
  printf("/t/t                                         版权所有者 213*/n");
  
   
   if((end-start)<10)
   {
   end=time(NULL);
   }
   
     getch();
    
    Sleep(10);
 */
 printf("/n/n/n/n");
 printf("/t                      About this system                   /n");
 printf("/t***********************************************************/n");
 printf("/t*The system currently  does not support the Chinese input */n");
 printf("/t*Chinese characters read out  from time to  time  may  be */n");
 printf("/t*garbled Please use English, the purpose of  this  system */n");
 printf("/t*can function properly, please input personal information */n");
 printf("/t*of studentsDelete, modify careful when using this system */n");
 printf("/t*only 213 internal staff reference, are not permitted to  */n");
 printf("/t*bring out this group ...                                 */n");
 printf("/t***********************************************************/n");
 printf("/t                                 All rights reserved by 213/n");
 getch();
}  

/***************************************************
**********       main     **********
***************************************************
*1.studentmax is most student         *
*2.point struct  pointer           *
*3.point struct              *
***************************************************/
int  main()
{
 int in;
 struct allstudentinfo studentmax[STUDENTMAX];
 struct allstudentinfo *p_student;
 p_student = studentmax;
 
 password();                      /**********获取用户密码验证*********/
 
 system("cls");                     /**********前一个模块推出*********/
 do
 {
  in=showmenu();                                             /**********调用主菜单*********/
  
  switch(in)
  {
  case 1:
   submain(p_student);                                    /********** 学生个人信息管理*********/       
   break;
  case 2:
   scormeun(p_student);         /**********学生个人成绩管理*********/
   break;
  case 3:
   aboutsystem();                                         /**********关于本系统*********/
   break;
  case 4:
   modifycode();           /**********修改登录密码*********/
   break;
  case 5:
   over();                                                /**********退出学生个人成绩管理*********/
   break;
   
  }
  
  
  
 }
 while(in!=5);
 
 return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wbandzlhgod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值