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

📄 stu.c

📁 实现了学生信息查询系统
💻 C
字号:
#include <stdio.h>
#include <math.h>
#include <string.h>




/*******************************************************/

        struct student
              {
		char    StuCode[10]; 
                char    StuName[20]; 
                char    subject[20]; 
		int     StuScore;    
		
	      }stu[100];/*定义全局数组*/
/************************************************************/
void ShowMenu();    /*显示主菜单*/
void save(int i);   /*保存所做的更改*/

int  read()/*读取文件*/
{ FILE *fp;
  int i=-1;
  fp=fopen("d:\\score.txt","r");
  if(fp==NULL){printf("Can't open file\n");exit();}
  while(feof(fp)==0)
       { 
         i++;
	 fscanf(fp,"\n%10s%10s%10s%10d\n",stu[i].StuCode,stu[i].StuName,stu[i].subject,&stu[i].StuScore);
       }
  fclose(fp);
  return i;
}
int find(char md[],int i)/*按学生学号查找学生*/
{
   
   
   
   printf("finding now,please wait for a while.....\n");
   while(abs(strcmp(stu[i].StuCode,md)&&(i>=0))) i--;
   if(i<0) {printf("Can't find it\n");return i=-1;}
   else {printf("Have finded it %d\n",i); 
         printf("%10s%10s%10s%10d\n",stu[i].StuCode,stu[i].StuName,stu[i].subject,stu[i].StuScore);return i;}
}

void output(int x);
void swap(int i,int j);

void ShowMT();     
void ShowCMT();    
void SelectCM();    
void Add();         
void Modify();      
void Delete();       

/*******************************************************/
void ShowST();      /*显示系统统计菜单*/


/*******************************************************/
void ShowSort();    /*显示系统排序菜单*/
void ShowSoC();     /*显示系统排序子菜单*/
void ShowSoRe();    /*显示排序结果*/
void Sort(char *p); /*排序*/
/*******************************************************/
void main()         /*程序主函数*/
{
        char a;
	ShowMenu();
        scanf("%c",&a);
	while(1)/*程序循环*/
	{

          switch(a)
	  {
            case '1':
		    ShowMT();ShowMenu(); break;         /*显示系统维护菜单*/
	    case '2':
                    ShowST();  ShowMenu(); break;       /*显示系统统计菜单*/
	    case '3':
                    ShowSort();ShowMenu(); break;       /*显示系统排序菜单*/
	    case '4':
                    exit();     break;                  /*退出程序,中止运行*/

	    /*default:
		    ShowError();break;*/
	  }

          scanf("%c",&a);
          }
}

void ShowMenu()/*主菜单*/
{
	clrscr();
	printf("Welcome to use Score of Student  Management system\n\n");
	printf("This Is Main Menu.Please Select:\n");
	printf("****************************************************************\n\n");
	printf("*   1  To Maintain  Score  of  Student      Please To Input: 1 *\n\n");
	printf("*   2  To Statistic Score  of  Student      Please To Input: 2 *\n\n");
	printf("*   3  To   Sort    Score  of  Student      Please To Input: 3 *\n\n");
	printf("*   4  To   Exit    System of Management    Please To Input: 4 *\n\n");
	printf("****************************************************************\n\n");
        printf("To Press \'Enter\' Key After Please To Input Num.:\n");
}

void ShowError()
{
      printf("   ERROR!!!!  ERROR!!!! Please Select Again.\n");
      printf("To Press \'Enter\' Key After Please To Input Num.:\n");
}
void ShowMT()/*维护菜单*/
{
    ShowCMT();
    SelectCM();
}

void ShowCMT()/*维护菜单设计*/
{
        clrscr();
        printf("Welcome to use Score of Student  Management system\n\n");
	printf("This Is Maintain Page. Please Input Number and Select :\n");
	printf("***************************************************************\n\n");
	printf("*   1  To  ADD         Item         Please To Input: 1        *\n\n");
	printf("*   2  To  MODIFY      Item         Please To Input: 2        *\n\n");
	printf("*   3  To  DELETE      Item         Please To Input: 3        *\n\n");
	printf("*   4  To  RETURN  Menu of System   Please To Input: 4        *\n\n");
        printf("*   5  To  EXIT        System       Please To Input: 5        *\n\n");
	printf("***************************************************************\n\n");
        printf("To Press \'Enter\' Key After Please To Input Num.:\n");
}
void SelectCM()/*维护子菜单的循环*/
{
  char b;
  b=getchar();

 while(b!='4')
  {

        switch(b)
        {
           case 49:
		  Add();     ShowCMT(); printf("Add Student Successed!!!!\n");   break;
           case 50:
		  Modify(); ; ShowCMT(); printf("Modify Successed!!!!\n");       break;
           case 51:
		  Delete();  ShowCMT()  ; printf("Delete Successed!!!!\n");      break;

           case 53:
                 exit();        break;


        }
    b=getchar();
   }
}
void Add()/*添加学生记录*/
{
  int *m;
  int i=0;
 
  clrscr();
  printf("If you want to exit this process,Please Input '$'\n");
  printf("Please Input Student code name subject score:\n");
  scanf("%s",stu[i].StuCode);

  if(abs(strcmp(stu[i].StuCode,"$")))
    {

     scanf("%s%s%d",stu[i].StuName,stu[i].subject,&stu[i].StuScore);
     
     
    }
    else ShowCMT();

  while(abs(strcmp(stu[i].StuCode,"$")))
   {
    i++;
    scanf("%s",stu[i].StuCode);
    if(abs(strcmp(stu[i].StuCode,"$")))
    {

      scanf("%s%s%d",stu[i].StuName,stu[i].subject,&stu[i].StuScore);
      
      
    }
   }

   
   save(i);

  }





void Modify()         /*修改学生记录*/
{
     int m,i,n;
     char ch[10];
     FILE *fp;
     m=read();
     n=m;
     printf("if you want to exit this modify process,please input \'$\'\n");
     printf("Please Input Student\' Code who want to modify\n");
     scanf("%s",ch);
     while(abs(strcmp(ch,"$")))
     {
     i=find(ch,m);
     printf("Please Input This Student \'code name subject score\' again\n");
     scanf("%s%s%s%d",stu[i].StuCode,stu[i].StuName,stu[i].subject,&stu[i].StuScore);
     printf("\n%10s%10s%10s%10d\n",stu[i].StuCode,stu[i].StuName,stu[i].subject,stu[i].StuScore);
     printf("Please Input Student\' Code who want to modify\n");
     scanf("%s",ch);
     }
    fp=fopen("d:\\score.txt","w");
    if(fp==NULL) {printf("Open file Error");exit();}
    while(n>=0)
    {
     
    
     printf("\n%10s%10s%10s%10d\n",stu[n].StuCode,stu[n].StuName,stu[n].subject,stu[n].StuScore);
  				
     fprintf(fp,"\n%10s%10s%10s%10d\n",stu[n].StuCode,stu[n].StuName,stu[n].subject,stu[n].StuScore);
     n--;
     }
    fclose(fp);
     
     
}
void Delete()
{
     int m,i,n;
     char ch[10];
     FILE *fp;
     m=read();
     n=m;
     printf("if you want to exit this Delete process,please input \'$\'\n");
     printf("Please Input Student\' Code who want to Delete\n");
     scanf("%s",ch);
     while(abs(strcmp(ch,"$")))
     {
     i=find(ch,m);
         while(i<=n)/*删除找到的学生内容*/
         {
	   strcpy(stu[i].StuCode,stu[i+1].StuCode);
	   strcpy(stu[i].StuName,stu[i+1].StuName);
	   strcpy(stu[i].subject,stu[i+1].subject);
	     stu[i].StuScore=stu[i+1].StuScore;
             i++;n--;
         }
     printf("Please Input Student\' Code who want to Delete\n");
     scanf("%s",ch);
     }
    fp=fopen("d:\\score.txt","w");
    if(fp==NULL) {printf("Open file Error");exit();}
    while(n>=0)
    {
     
    
     printf("\n%10s%10s%10s%10d\n",stu[n].StuCode,stu[n].StuName,stu[n].subject,stu[n].StuScore);
  				
     fprintf(fp,"\n%10s%10s%10s%10d\n",stu[n].StuCode,stu[n].StuName,stu[n].subject,stu[n].StuScore);
     n--;
     }
    fclose(fp);
     
}


/*******************************************************/
void ShowST()
{
   int n,sum=0,m,top=0,low=0;int lowN=0,topN=0;char ch;
   n=read();m=n;/*读出数据,并统计纪录数量*/
   if(n<0) return;
   /*求平均成绩,最高、低成绩,不及格、及格人数,不及格、及格学生的名单*/
   low=stu[n].StuScore;
   top=stu[n].StuScore;
   for(;n>=0;n--)
   {
      sum=sum+stu[n].StuScore;/*统计整体总分分数*/
      if(stu[n].StuScore>top) top=stu[n].StuScore;/*记录最高分*/
      if(stu[n].StuScore<low) low=stu[n].StuScore;/*记录最低分*/
      
   }
   printf("****************************************************************\n");
   printf("Aveage Score is :%f\n\n",(float)(sum/m));/*输出平均分*/
   printf("The most top score is :%5d\n\n",top);/*输出最高分*/
   printf("The most low score is :%5d\n\n",low);/*输出最低分*/
   
   
   n=m;
   printf("Student of Top 60 score is:\n\n");
   for(;n>=0;n--)
   {
      if(stu[n].StuScore>=60) {printf("%30s\n\n",stu[n].StuName);topN++;} /*统计及格人数及输出及格人数名单*/
   } 
   printf("Student Number of above 60 score is : %6d\n\n",topN);/*输出及格人数*/
   n=m;
   printf("Student of below 60 score is:");
   for(;n>=0;n--)
   {
      if(stu[n].StuScore<60){printf("%10s\n\n",stu[n].StuName);lowN++;}/*统计不及格人数及名单*/
   }  
   printf("Student Number of below 60 score is : %6d\n",lowN);/*输出不及格人数*/ 
   printf("Please input \'$\' to show Main Menu\n\n");
   ch=getchar();
   while(ch!='$')  ch=getchar();
}
/********************************************************/
void ShowSort()
{
 ShowSoC();
 ShowSoRe();
}

void ShowSoC()
{
        clrscr();
	printf("Welcome to use Score of Student  Management system\n\n");
	printf("This Is Sorting Page. Please Input Number and Select :\n");
	printf("****************************************************************\n\n");
	printf("*   1 According to Code    of  Student      Please To Input: 1 *\n\n");
	printf("*   2 According to Score   of  Student      Please To Input: 2 *\n\n");
	printf("*   3 According to Subject of  Student      Please To Input: 3 *\n\n");
	
        printf("    4 Show  Sort   Menu  again,             Please To Input: 4 *\n\n");
       	printf("****************************************************************\n\n");
        printf("Want to Exit this Sort Process,please input \'$\'\n");
	printf("To Press \'Enter\' Key After Please To Input Num.:\n");
	
}
void ShowSoRe()
{
  
  char c;char *p;
  c=getchar();
  while(c!='$')
  {

    switch(c)
    {
      case '1':
	       p="code";    Sort(p);break;
      case '2':
	       p="score";   Sort(p);break;
      case '3':
	       p="subject"; Sort(p);break;
      case '4':
	       
               ShowSoC(); break;
    }

    c=getchar();
  }

}
void Sort(char *p)
{
  int n,m,j,i;
  
  n=read(); m=n;
  
  if(!abs(strcmp(p,"code")))
       {
	 for(;n>=0;n--)
	   { 
                i=n;
		for(j=1;j<=n;j++)
                   {
                     if(strcmp(stu[i].StuCode,stu[i-j].StuCode)<0)
                              
			    {
                             
                             swap(i,j);
                              
			    }
                       
                   }
           }
          printf("Student Code Sorted:\n");
          output(m); 
       }
  if(!abs(strcmp(p,"score")))
          {
	 for(;n>=0;n--)
	   { 
                i=n;
		for(j=1;j<=n;j++)
                   {
		     if(stu[i].StuScore<stu[i-j].StuScore)

			    {
                             
                             swap(i,j);
                              
			    }
                       
                   }
           }
          printf(" Score Sorted:\n");
          output(m); 
       }
  if(!abs(strcmp(p,"subject")))
       {
	 for(;n>=0;n--)
	   { 
                i=n;
		for(j=1;j<=n;j++)
                   {
                     if(strcmp(stu[i].subject,stu[i-j].subject)<0)
                              
			    {
                             
                             swap(i,j);
                              
			    }
                       
                   }
           }
          printf(" Subject Sorted:\n");
          output(m); 
       }
 
}
void save(int i)
{
    FILE *fp;
    fp=fopen("d:\\score.txt","a+");
    if(fp==NULL) {printf("Open file Error");exit();}
    while(i>0)
    {
     i--;
    
     printf("\n%10s%10s%10s%10d\n",stu[i].StuCode,stu[i].StuName,stu[i].subject,stu[i].StuScore);
  				
     fprintf(fp,"\n%10s%10s%10s%10d\n",stu[i].StuCode,stu[i].StuName,stu[i].subject,stu[i].StuScore);
     
     }
    fclose(fp);
    printf("Save Successed!!!");
}
void output(int m)
{
  int i=0;
 while(i<=m)
    {
     
    
     printf("\n%10s%10s%10s%10d\n",stu[i].StuCode,stu[i].StuName,stu[i].subject,stu[i].StuScore);
  				
     i++;
     
     }
}
void swap(int i,int j)
{
  struct student student;
   strcpy(student.StuCode,stu[i-j].StuCode);   strcpy(student.StuName,stu[i-j].StuName);
   strcpy(student.subject,stu[i-j].subject);   student.StuScore=stu[i-j].StuScore;
        strcpy(stu[i-j].StuCode,stu[i].StuCode);   strcpy(stu[i-j].StuName,stu[i].StuName);
	strcpy(stu[i-j].subject,stu[i].subject);   stu[i-j].StuScore=stu[i].StuScore;
	      strcpy(stu[i].StuCode,student.StuCode);   strcpy(stu[i].StuName,student.StuName);
	      strcpy(stu[i].subject,student.subject);   stu[i].StuScore=student.StuScore;
}

⌨️ 快捷键说明

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