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

📄 高校学生学籍管理系统.cpp

📁 高校学生学籍管理系统 支持输入/删除学生情况 查询学生情况
💻 CPP
字号:
#include<stdio.h>
#include<string.h>
#define N 10
struct date_type
{
  int year;
  int month;
}date;
struct student_type
{
  char academy[10];
  char class1[10];
  int num;
  char name[10];
  char sex[4];
  struct date_type date;
  char address[10];
  int score[3];
  float average;
  int sum;
  int record;
};
struct student_type stu[N],*p,*q[N];
void Read(struct student_type stu[]);              /*数据读入*/
void Add(struct student_type stu[]);               /*增加学生*/
void Delete(struct student_type stu[]);            /*删除学生*/
void Modify(struct student_type stu[]);            /*修改学生*/
void Search(struct student_type stu[]);            /*查询学生*/
void Print(struct student_type stu[]);            /*输出所有学生信息*/
void Stat(struct student_type stu[]);              /*统计*/
void Save(struct student_type stu[]);             /*数据存盘*/
int r=0;                                         
void main()
{
 int x;                 /*/加入有记录才能读如数据/*/
 Read(stu);

 do
 {                      /*/改成需要y启动,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("\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|★             0.保存并退出系统      ★|\n");
      printf("\t\t|★★★★★★★★★★★★★★★★★★★★★★★|\n");
      printf("\t\t ----------------------------------------------- \n");
   printf("请在0-6中选择: ");
   scanf("%d",&x);
   switch(x)
   {
     case 1:Add(stu);               /*录入模块*/
       break;
        case 2:Modify(stu);            /*修改模块*/
       break;
     case 3:Search(stu);            /*查询模块*/
       break;
     case 4:Print(stu);             /*输出模块*/
       break;
     case 5:Delete(stu);            /*删除模块*/
         break;
     case 6:Stat(stu);              /*统计模块*/
       break;
  case 0:Save(stu);
    break;
   }
 }
 while(x!=0);
}

void Add (struct student_type stu[])                /*录入模块*/
{ 
 int i;
 char k;
 for(i=r;i<N;i++)
 {
  printf("\n 请输入学院:");
  scanf("%s",stu[i].academy);
  printf("\n 请输入班级:");
  scanf("%s",stu[i].class1);
  printf("\n 请输入学号:");
  scanf("%d",&stu[i].num);
  printf("\n 请输入姓名:");
  scanf("%s",stu[i].name);
  printf("\n 请输入性别:");
  scanf("%s",stu[i].sex);
  printf("\n请输入出生年月:");
  scanf("%d%d",&stu[i].date.year,&stu[i].date.month);
  printf("\n 请输入住址:");
        scanf("%s",stu[i].address);
        printf("\n 请输入成绩:");
        scanf("%d%d%d",&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
  r=r+1;
  stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];
  stu[i].average=stu[i].sum/3;
        printf("----------是否继续??(y/n):");               
        scanf("%s",&k);
  if(k=='y'||k=='Y') continue;          
  else
   printf("----------录入结束!----------\n\n");
  return;
 }
}
void Save(struct student_type stu[])                      /*保存模块*/                   
{
 int i;
 stu[0].record=r;
 FILE *fp1;                       /*指向文件的指针*/
 if((fp1=fopen("E:\\xj.txt","wb"))==NULL)                /*打开文件,并判断打开是否正常*/
 {
  printf("----------打开文件失败!----------\n\n");
  return;
 }
 printf("开始存盘!\n");
 for(i=0;i<r;i++)
  if(fwrite(&stu[i],sizeof(struct student_type),1,fp1)==0)
   printf("----------数据存盘失败!----------\n\n");
  fclose(fp1);
  printf("----------存盘成功!----------\n");          /*显示保存成功*/
}
void Search(struct student_type stu[])                /*查询模块*/            
{ 
 int y=0,i,k;
 printf("请输入学号:");
    scanf("%d",&k);
    for(i=0;i<r;i++)
 {
  if(k==stu[i].num)
  { 
   printf("学院:%s\n班级:%s\n学号:%d\n姓名:%s\n性别:%s\n出生年月:%d%d\n地址:%s\n成绩:\nC语言:%d高数:%d英语:%d\n",stu[i].academy,stu[i].class1,stu[i].num,stu[i].name,stu[i].sex,stu[i].date.year,stu[i].date.month,stu[i].address,stu[i].score[0],stu[i].score[1],stu[i].score[2]);
   y=1;
  }
 }
 if(y==0)
  printf("----------该学生不存在,请咨询再查!----------\n\n");
 return;
}
void Delete(struct student_type stu[])         /*删除模块*/             
{
 int i,j,k,y=0;
 int m=110,n;
    printf("请输入密码:");
    scanf("%d",&n);
    if(n==m);  
    else
 {printf("----------密码错误!----------\n\n");
    return;
 }
    printf("请输入学号:");
    scanf("%d",&k);
 for(i=0;i<r;i++)
 {
  if(k==stu[i].num)
  {
   for(j=i;j<r;j++)
    stu[j]=stu[j+1];
   r=r-1;
  printf("----------删除成功!----------\n\n");
  y=1;
  }
 }
 if(y==0)
  printf("----------该学生不存在,请咨询再查!----------\n\n");
}void Print(struct student_type stu[])               /*输出模块*/                                     
{
  int i,j,k,n;
  struct student_type t;
  printf(" 1.按学号排序,2.按总分排序(由高到低)\n");
  printf("\n请在1和2中选择:");
  scanf("%d",&n);
  if(n==1)                                   /*选择排序*/
   for(i=0;i<r-1;i++)
   {
    k=i;
    for(j=i+1;j<r;j++)
     if(stu[k].num>stu[j].num)
      k=j;
     if(k!=i)
     {
      t=stu[i];
      stu[i]=stu[k];
      stu[k]=t;
     }
   }
   if(n==2)
    for(i=0;i<r-1;i++)
    {
     k=i;
     for(j=i+1;j<r;j++)
      if(stu[k].sum<stu[j].sum)
       k=j;
      if(k!=i)
      {
       t=stu[i];
          stu[i]=stu[k];
          stu[k]=t;
      }
    }
    for(i=0;i<r;i++)
    {
        printf("\n学院\t班级\t学号\t姓名\t性别\t出生年月\t地址\n");
        printf("%s\t%s\t%d\t%s\t%s\t%d %d\t\t%s\n",stu[i].academy,stu[i].class1,stu[i].num,stu[i].name,stu[i].sex,stu[i].date.year,stu[i].date.month,stu[i].address);
        printf("C语言\t高数\t英语\t平均分\t总分\n");
        printf("%d\t%d\t%d\t%0.1f\t%d\n",stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].average,stu[i].sum);
    }
}
void Stat(struct student_type stu[])            /*统计模块*/     
{
 int i,j,k;
 printf("0.C语言 1.高数 2.英语");
 printf("请在0-2中选择:");
 scanf("%d",&j);
    k=j;
 printf("90-100:\n");
 printf("      学号\t姓名\t成绩\n");
 for(i=0;i<r;i++)
 {
  if(stu[i].score[k]>=90)
   printf("      %d\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score[k]);
 }
    printf("80-90:\n"); 
 printf("      学号\t姓名\t成绩\n");
 for(i=0;i<r;i++)
 {
  if(stu[i].score[k]<90&&stu[i].score[k]>=80)
   printf("      %d\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score[k]);
 }
     printf("70-80:\n"); 
  printf("      学号\t姓名\t成绩\n");
  for(i=0;i<r;i++)
  {
   if(stu[i].score[k]<80&&stu[i].score[k]>=70)
    printf("      %d\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score[k]);
  }

      printf("60-70:\n"); 
   printf("      学号\t姓名\t成绩\n");
   for(i=0;i<r;i++)
   {
    if(stu[i].score[k]<70&&stu[i].score[k]>=60)
     printf("      %d\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score[k]);
   }
       printf("60分以下:\n"); 
    printf("      学号\t姓名\t成绩\n");
    for(i=0;i<r;i++)
    {
     if(stu[i].score[k]<60)
      printf("      %d\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score[k]);
    }
} 
         

void Modify(struct student_type stu[])           /*修改模块*/           
{  
    int k,i,y=0;
    int m=110,n;
    printf("请输入密码:");
    scanf("%d",&n);
    if(n==m);  
    else
	{
		printf("----------密码错误!----------\n\n");
        return;
	}
    printf("------------------修改学生信息----------------\n");
  printf("\n请输入要修改学生的学号: ");
        scanf("%d",&k);
  for(i=0;i<r;i++)
  {
   if(k==stu[i].num)
   {
      printf("\n请输入新内容:\n");
      printf("\n 请输入学院:");
      scanf("%s",stu[i].academy);
      printf("\n 请输入班级:");
      scanf("%s",stu[i].class1);
      printf("\n 请输入学号:");
      scanf("%d",&stu[i].num);
      printf("\n 请输入姓名:");
      scanf("%s",stu[i].name);
      printf("\n 请输入性别:");
      scanf("%s",stu[i].sex);
      printf("\n请输入出生年月:");
      scanf("%d%d",&stu[i].date.year,&stu[i].date.month);
      printf("\n 请输入地址:");
      scanf("%s",stu[i].address);
      printf("\n 请输入成绩:");
      scanf("%d%d%d",&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
      printf("\n----------修改成功!----------\n\n");
      y=1;
   }
  }
  if(y==0)
   printf("----------该学生不存在,请咨询再查!----------\n\n");
   return;
}
void duru(struct student_type stu[])                             /*数据读入模块*/                          
{
 int i;
 FILE *fp;                /*指向文件的指针*/
 if((fp=fopen("E:\\xj.txt","rb"))==NULL)               /*打开文件,并判断打开是否正常*/
 {
    printf("打开文件失败!\n");
    return;
 }
 printf("文件开始读取!\n");
 rewind(fp);
 for(i=0;i<=r;i++)
 {
  fread(&stu[i],sizeof(struct student_type),1,fp);
  r=stu[0].record;
 }
 printf("\n文件成功读取!\n");
 fclose(fp);
 r=stu[0].record;
}

⌨️ 快捷键说明

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