C语言实现学生成绩管理系统思考

学生成绩管理系统思考

作业要求:

a0d6ab2e6c4746b19d25c234a3e24244.png

 

目录

思路

基本函数

学习理解大佬的代码:

完成作业:

 

 

思路

学生成绩管理系统,首先要初始化系统,

用C语言做学生实验管理系统要求实现对某班学生3门课程(包括语文、数学、英语)成绩的管理功能,学生成绩的统计,如每个人的平均成绩、每门课的平均成绩等;,

按个人平均成绩从高到低的顺序进行排序。输出不及格学生名单。

 

基本函数

1.结构体 struct Student

定义一个结构体struct ,结构体的关键字,students 定义的结构体对象。学号char ID[20];姓名char Name[10]; 各项成绩float Mark,每个人的平均成绩float average1;

每个科目的平均成绩float average2;

2.录入(void inputt())

利用循环将数据从students[0]开始录入各项信息,计数器num+1,直至到3(内部数据中会有 0 1 2 )

 

3.修改(void modfiy())

利用循环将数组里面的信息与待修改的信息比对,若相同,对其进行重新复制即修改;若无此项,提示重新输入。

5.排序 (void sort()){按照题目要求此时应该有两次排序:每个人的平均成绩float average1; 每个科目的平均成绩float average2;}

排序的平均分,依次比较两个相邻的成绩,如果他们的顺序如果前小于后就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。

利用什么方法:冒泡排序法

6.显示 (void display())

利用循环将已录入的信息打印出来。

 

7.查询 (void Student_SearchByIndex(){此时按照题目要求应该输出个人平均成绩从高到低的顺序以及不及格学生名单}

8.主函数 main()

利用无限次循环while和swithch()实现各函数的调用,系统根据输入的数字来操控相应的函数,同时显示可供选择的选项

 

 

学习理解大佬的代码:

学生成绩管理系统(C语言)_张十五的博客-CSDN博客_学生成绩管理系统

#include<stdio.h>

#include<stdlib.h>

#include<stdlib.h>

#include<string.h>

struct Student{   //每个学生对应一个结构体

char ID[20];//学号

char Name[10];//姓名

float Mark1;//语文成绩

float Mark2;//数学成绩 //四个变量

float Mark3;//英语成绩

float Mark4;//计算机成绩

float All; //总分

float Average;//平均成绩

}students[1000];



int num=0; //计数器

void Copy(struct Student *arr,int i,int j)

{

strcpy(arr[i].ID,arr[j].ID); //strcpy()函数的简介:

是将一个字符串复制到另一块空间地址中 的函数,‘\0’是停止拷贝的终止条件,

 也复制到目标空间。下面是库中的strcpy()函数声明:

strcpy(arr[i].Name,arr[j].Name);

arr[i].Mark1 = arr[j].Mark1;

arr[i].Mark2 = arr[j].Mark2;

arr[i].Mark3 = arr[j].Mark3;

arr[i].Mark4 = arr[j].Mark4;

arr[i].All = arr[j].All;

arr[i].Average = arr[j].Average;

}

int Student_SearchByName(char name[])//通过姓名来检索学生

{

     int i;

     for (i=0;i<num;i++)

     {

         if (strcmp(students[i].Name,name)==0)  //通过strcmp函数来对比学生姓名,找到返回在数组的位置

         {

              return i;

       }

     }

     return -1;    //未找到返回 -1

}

int Student_SearchByIndex(char id[])//通过学号来检索学生信息

{

     int i;

     for (i=0;i<num;i++)

     {

         if (strcmp(students[i].ID,id)==0)  //通过strcmp函数来对比学生id,找到返回位置

         {

              return i;

         }  

     }

     return -1;   //未找到返回 -1

}

void Student_DisplaySingle(int index)//输出表头

{

     printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","语文","数学","英语","计算机","总成绩","平均成绩");

     printf("-------------------------------------------------------------\n");

     printf("%10s%10s%8.2f%8.2f%8.2f%8.2f%10.2f%10.2f\n",students[index].ID,students[index].Name,

              students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Mark4,students[index].All,students[index].Average);

}

void inputt()//利用循环录入学生信息

{

     while(1)

     {

         printf("请输入学号:");

         scanf("%s",&students[num].ID);

         getchar();

         printf("请输入姓名:");

         scanf("%s",&students[num].Name);

         getchar();

         printf("请输入成绩:");

         scanf("%f",&students[num].Mark1);

         getchar();

         printf("请输入成绩:");

         scanf("%f",&students[num].Mark2);

         getchar();

         printf("请输入成绩:");

         scanf("%f",&students[num].Mark3);

         getchar();

         printf("请输入成绩:");

         scanf("%f",&students[num].Mark4);   //依次输入各项数据

         getchar();

         students[num].All=students[num].Mark1+students[num].Mark2+students[num].Mark3+students[num].Mark4;    //输完数据后自动计算总成绩与平均成绩

         students[num].Average=(students[num].Mark1+students[num].Mark2+students[num].Mark3+students[num].Mark4)/4;

         if(Student_SearchByIndex(students[num].ID) == -1)

         {

          num++;  //移向下一个位置

 }

 else

 {

  printf("学号重复,输入数据无效 !!!\n");

 }



   printf("是否继续?(y/n)");

         if (getchar()=='n')

         {

              break;

         }

     }

}

void modify()//修改成绩

{

  while(1)

     {

         char id[20];

         int index;

         printf("请输入要修改的学生的学号:");

         scanf("%s",&id);

         getchar();

         index=Student_SearchByIndex(id);  //调用搜查id函数,根据其返回值确定位置

         if (index==-1)

         {

              printf("学生不存在!\n");

         }

         else

         {

              printf("你要修改的学生信息为:\n");

              Student_DisplaySingle(index);

              printf("-- 请输入新值--\n");

              printf("请输入学号:");

              scanf("%s",&students[index].ID);

              getchar();

              printf("请输入姓名:");

              scanf("%s",&students[index].Name);

              getchar();

              printf("请输入语文成绩:");

              scanf("%f",&students[index].Mark1);

    getchar();

              printf("请输入数学成绩:");

              scanf("%f",&students[index].Mark2);

              getchar();

              printf("请输入英语成绩:");

              scanf("%f",&students[index].Mark3);

              getchar();

              printf("请输入计算机成绩:");

              scanf("%f",&students[index].Mark4);  //重新录入一套新的数据替代

              getchar();

              students[index].All=students[index].Mark1+students[index].Mark2+students[index].Mark3+students[index].Mark4;

           students[index].Average=(students[index].Mark1+students[index].Mark2+students[index].Mark3+students[index].Mark4)/4;   

         }

         printf("是否继续?(y/n)");

         if (getchar()=='n')

         {

              break;

         }

     }

}

void deletee()//删除学生信息

{

  int i;

     while(1)

     {

         char id[20];

         int index;

         printf("请输入要删除的学生的学号:");

         scanf("%s",&id);

         getchar();

         index=Student_SearchByIndex(id);   //调用搜查id函数,根据其返回值确定位置

         if (index==-1)

         {

              printf("学生不存在!\n");

         }

         else

         {

              printf("你要删除的学生信息为:\n");

              Student_DisplaySingle(index);

              printf("是否真的要删除?(y/n)");

              if (getchar()=='y')

              {

                   for (i=index;i<num-1;i++)

                   {

                       Copy(students,i,i+1);

                       //students[i]=students[i+1];    //把后边的对象都向前移动

                   }

                   num--;

              }

             getchar();

         }

         printf("是否继续?(y/n)");

         if (getchar()=='n')

         {

              break;

         }

     }

}

void display()//打印已录入的学生信息

{

 int a;

     printf("%10s%10s%8s%8s%8s%8s%10s%10s\n","学号","姓名","语文","数学","英语","计算机","总成绩","平均成绩");

     printf("-------------------------------------------------------------\n");

     for (a=0;a<num;a++)

     {

         printf("%10s%10s%8.2f%8.2f%8.2f%8.2f%10.2f%10.2f\n",students[a].ID,students[a].Name,

              students[a].Mark1,students[a].Mark2,students[a].Mark3,students[a].Mark4,students[a].All,students[a].Average);

     }

}

void insert()//指定位置插入学生信息

{

int a,b,c;

printf("请输入你要插入的位置");

scanf("%d",&a);

if(a>num) {

printf("输入的位置有误,请重新输入,当前共%d条数据\n",num);

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



      b=num-1;

      for(;b>=a-1;b--)

      {

      //strcpy(students[b+1].ID,students[b].ID);

      //strcpy(students[b+1].Name,students[b].Name);

      //students[b+1].Mark1=students[b].Mark1;

      //students[b+1].Mark2=students[b].Mark2;

      //students[b+1].Mark3=students[b].Mark3;

      //students[b+1].Mark4=students[b].Mark4;

      //students[b+1].All=students[b].All;

      //students[b+1].Average=students[b].Average;  

Copy(students,b+1,b); //根据其输入的位置,将其及以后的数据向后移动一个位置

     

 }

 num++;

         printf("请输入学号:");

         scanf("%s",&students[a-1].ID);

         getchar();

         printf("请输入姓名:");

         scanf("%s",&students[a-1].Name);

         getchar();

         printf("请输入语文成绩:");

         scanf("%f",&students[a-1].Mark1);

         getchar();

         printf("请输入数学成绩:");

         scanf("%f",&students[a-1].Mark2);

         getchar();

         printf("请输入英语成绩:");

         scanf("%f",&students[a-1].Mark3);

         getchar();

         printf("请输入计算机成绩:");

         scanf("%f",&students[a-1].Mark4);  //输入新数据

         getchar();  

         students[a-1].All=students[a-1].Mark1+students[a-1].Mark2+students[a-1].Mark3+students[a-1].Mark4;

         students[a-1].Average=(students[a-1].Mark1+students[a-1].Mark2+students[a-1].Mark3+students[a-1].Mark4)/4;



}

void search()//查询学生信息

{

 while(1)

     {

         char name[20];

         int index;

         printf("请输入要查询的学生的姓名:");

         scanf("%s",&name);

         getchar();

         index=Student_SearchByName(name);   //调用搜查name函数,根据其返回值确定位置

         if (index==-1)

         {

              printf("学生不存在!\n");

         }

         else

         {

              printf("你要查询的学生信息为:\n");

              Student_DisplaySingle(index);

         }

         printf("是否继续?(y/n)");

         if (getchar()=='n')

         {

              break;

         }

     }

}

voidsort()//根据平均分排序 

(此时注意按照题目要求应该排序两个)

{

 int i,j;

 //struct students tmp;

     for (i=0;i<num;i++)

     {

      students[i].Average=(students[i].Mark1+students[i].Mark2+students[i].Mark3+students[i].Mark4)/4;

     }

     for (i=0;i<num;i++)

     {

         for (j=1;j<num-i;j++)

         {

              if (students[j-1].Average<students[j].Average)

              {

                  

   Copy(students,num,j-1);

   Copy(students,j-1,j);

   Copy(students,j,num);

   //tmp=students[j-1];

                   //students[j-1]=students[j];

                   //students[j]=tmp;      //冒泡排序

            }  

         }

     }

     int a;

     printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","语文","数学","英语","计算机","总成绩","平均成绩");

     printf("-------------------------------------------------------------\n");

     for (a=0;a<num;a++)

     {

         printf("%10s%10s%8.2f%8.2f%8.2f%8.2f%10.2f%10.2f\n",students[a].ID,students[a].Name,

              students[a].Mark1,students[a].Mark2,students[a].Mark3,students[a].Mark4,students[a].All,students[a].Average);

     }

}





void SearchLow()//搜索不及格的并输出

{

int a;

printf("           语文不及格的有%10s%10s%8s\n","学号","姓名","语文");

for(a=0;a<num;a++)

{

if(students[a].Mark1<60)

printf("%10s%10s%8.2f\n",students[a].Name,students[a].ID,students[a].Mark1);    //从头搜索到尾,若小于60就输出

 }



printf("           数学不及格的有%10s%10s%8s\n","学号","姓名","数学");

for(a=0;a<num;a++)

{

if(students[a].Mark2<60)

printf("%10s%10s%8.2f\n",students[a].Name,students[a].ID,students[a].Mark2);

 }



 printf("           英语不及格的有%10s%10s%8s\n","学号","姓名","英语");

for(a=0;a<num;a++)

{

if(students[a].Mark3<60)

printf("%10s%10s%8.2f\n",students[a].Name,students[a].ID,students[a].Mark3);

 }



 printf("           计算机不及格的有%10s%10s%8s\n","学号","姓名","计算机");

for(a=0;a<num;a++)

{

if(students[a].Mark4<60)

printf("%10s%10s%8.2f\n",students[a].Name,students[a].ID,students[a].Mark4);

 }

 system("pause"); //这个好像没作用

}



void SearchHigh()//搜索成绩最高者输出

{

int a;

int max ;

printf("           语文最高分为%10s%10s%8s\n","学号","姓名","语文");

max=students[0].Mark1;

for(a=1;a<num;a++)

{

if(students[a].Mark1>max)

max=students[a].Mark1;

}

for(a=0;a<num;a++)

{

if(max==students[a].Mark1)

printf("%10s%10s%8.2f\n",students[a].Name,students[a].ID,students[a].Mark1);

}



printf("           数学最高分为%10s%10s%8s\n","学号","姓名","数学");

max=students[0].Mark2;

for(a=1;a<num;a++)

{

if(students[a].Mark2>max)

max=students[a].Mark2;

}

for(a=0;a<num;a++)

{

if(max==students[a].Mark2)

printf("%10s%10s%8.2f\n",students[a].Name,students[a].ID,students[a].Mark2);

}



printf("           英语最高分为%10s%10s%8s\n","学号","姓名","英语");

max=students[0].Mark3;

for(a=1;a<num;a++)

{

if(students[a].Mark3>max)

max=students[a].Mark3;

}

for(a=0;a<num;a++)

{

if(max==students[a].Mark3)

printf("           %10s%10s%8.2f\n",students[a].Name,students[a].ID,students[a].Mark3);

}



printf("           计算机最高分为%10s%10s%8s\n","学号","姓名","计算机");

max=students[0].Mark4;

for(a=1;a<num;a++)

{

if(students[a].Mark4>max)

max=students[a].Mark4;

}

for(a=0;a<num;a++)

{

if(max==students[a].Mark4)

printf("           %10s%10s%8.2f\n",students[a].Name,students[a].ID,students[a].Mark4);

}

 system("pause");

}

void Save()

{

FILE*fp = fopen("temp.txt","w+");

fprintf(fp,"%d\n",num);

for(int i = 0 ; i< num ;i++)

{

fprintf(fp,"%s %s %f %f %f %f %f %f\n",students[i].ID,students[i].Name,students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Mark4,students[i].All,students[i].Average);

}

fclose(fp);

}

void Load()

{

FILE*fp = fopen("temp.txt","r");

fscanf(fp,"%d",&num);

for(int i = 0 ; i< num ;i++)

{

fscanf(fp,"%s %s %f %f %f %f %f %f\n",students[i].ID,students[i].Name,&students[i].Mark1,&students[i].Mark2,&students[i].Mark3,&students[i].Mark4,&students[i].All,&students[i].Average);

}

fclose(fp);

}

/*主程序*/
int main(){

int i;

while(1){

 Load();

 printf("\t\t\t\t\t-------- 学生成绩管理系统-------\n\n\n\n");     //菜单

         printf("\t\t\t\t\t1. 增加学生记录\n\n");

         printf("\t\t\t\t\t2. 修改学生记录\n\n");

         printf("\t\t\t\t\t3. 删除学生记录\n\n");

         printf("\t\t\t\t\t4. 插入学生记录\n\n");

         printf("\t\t\t\t\t5. 显示所有记录\n\n");

         printf("\t\t\t\t\t6. 查询学生记录\n\n");

         printf("\t\t\t\t\t7. 按平均成绩排序\n\n");

         printf("\t\t\t\t\t8. 输出各科目不及格学生\n\n");

         printf("\t\t\t\t\t9. 输出各科目最高分\n\n");

         printf("\t\t\t\t\t0. 退出\n\n\n");

         printf("请选择(0-9):");

   scanf("%d",&i);

switch(i){

 case 1:inputt();break;

 case 2:modify();break;

   case 3:deletee();break;

   case 4:insert();break;

   case 5:display();break;

 case 6:search();break;

 case 7:sort();break;

 case 8:SearchLow();break;

 case 9:SearchHigh();break;

 case 0:exit(0);

 default:  ;

}

Save();

}

 return 0;

}

void Save() {

FILE *fp = fopen("temp.txt", "w+");

fprintf(fp, "%d\n", num);

for (int i = 0 ; i < num ; i++) {

fprintf(fp, "%s %s %f %f %f %f %f %f\n", students[i].ID, students[i].Name, students[i].Mark1, students[i].Mark2,

        students[i].Mark3, students[i].Average1);

}

fclose(fp);

}



void Load() {

FILE *fp = fopen("temp.txt", "r");

fscanf(fp, "%d", &num);

for (int i = 0 ; i < num ; i++) {

fscanf(fp, "%s %s %f %f %f %f %f %f\n", students[i].ID, students[i].Name, &students[i].Mark1, &students[i].Mark2,

       &students[i].Mark3, &students[i].Average1);

}

fclose(fp);

}

完成作业:

#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#include <string.h>

struct Student {  //每个学生对应一个结构体
	char ID[20];//学号
	char Name[10];//姓名
	float Mark1;//语文成绩
	float Mark2;//数学成绩 			//四个变量
	float Mark3;//英语成绩
	float Average1;//平均成绩
} students[1000];
int num = 0; //计数器

void Copy(struct Student *arr, int i, int j) {
	strcpy(arr[i].ID, arr[j].ID);		//strcpy()函数的简介:
	strcpy(arr[i].Name, arr[j].Name);
	arr[i].Mark1 = arr[j].Mark1;
	arr[i].Mark2 = arr[j].Mark2;
	arr[i].Mark3 = arr[j].Mark3;
	arr[i].Average1 = arr[j].Average1;
}

int Student_SearchByName(char name[]) {
	//通过姓名来检索学生
	int i;
	for (i = 0; i < num; i++) {
		if (strcmp(students[i].Name, name) == 0) { //通过strcmp函数来对比学生姓名,找到返回在数组的位置
			return i;
		}
	}
	return -1;    //未找到返回 -1
}

int Student_SearchByIndex(char id[]) { //通过学号来检索学生信息
	int i;
	for (i = 0; i < num; i++) {
		if (strcmp(students[i].ID, id) == 0) { //通过strcmp函数来对比学生id,找到返回位置
			return i;
		}
	}
	return -1;   //未找到返回 -1
}

void Student_DisplaySingle(int index) { //输出表头
	printf("%10s%10s%8s%8s%10s%10s\n", "学号", "姓名", "语文", "数学", "英语",
	       "平均成绩");
	printf("-------------------------------------------------------------\n");
	printf("%10s%10s%8.2f%8.2f%8.2f%8.2f\n", students[index].ID, students[index].Name,
	       students[index].Mark1, students[index].Mark2, students[index].Mark3, students[index].Average1);
}

void inputt() { //利用循环录入学生信息
	while (1) {
		printf("请输入学号:");
		scanf("%s", &students[num].ID);
		getchar();
		printf("请输入姓名:");
		scanf("%s", &students[num].Name);
		getchar();
		printf("请输入语文成绩:");
		scanf("%f", &students[num].Mark1);
		getchar();
		printf("请输入数学成绩:");
		scanf("%f", &students[num].Mark2);
		getchar();
		printf("请输入英语成绩:");
		scanf("%f", &students[num].Mark3);
		getchar();
		students[num].Average1 = (students[num].Mark1 + students[num].Mark2 + students[num].Mark3) / 3;
		if (Student_SearchByIndex(students[num].ID) == -1) {
			num++;  //移向下一个位置
		} else {
			printf("学号重复,输入数据无效 !!!\n");
		}

		printf("是否继续?(y/n)");
		if (getchar() == 'n') {
			break;
		}
	}
}

void display() { //打印已录入的学生信息
	int a;
	printf("%10s%10s%8s%8s%8s%8s%10s%10s\n", "学号", "姓名", "语文", "数学", "英语", "平均成绩");
	printf("-------------------------------------------------------------\n");
	for (a = 0; a < num; a++) {
		printf("%10s%10s%8.2f%8.2f%8.2f%8.2f%10.2f%10.2f\n", students[a].ID, students[a].Name,
		       students[a].Mark1, students[a].Mark2, students[a].Mark3, students[a].Average1);
	}
}

void search() { //查询学生信息
	while (1) {
		char name[20];
		int index;
		printf("请输入要查询的学生的姓名:");
		scanf("%s", &name);
		getchar();
		index = Student_SearchByName(name); //调用搜查name函数,根据其返回值确定位置
		if (index == -1) {
			printf("学生不存在!\n");
		} else {
			printf("你要查询的学生信息为:\n");
			Student_DisplaySingle(index);
		}
		printf("是否继续?(y/n)");
		if (getchar() == 'n') {
			break;
		}
	}
}

void sort() { //根据平均分排序
	int i, j; //struct students tmp;
	for (i = 0; i < num; i++) {
		students[i].Average1 = (students[i].Mark1 + students[i].Mark2 + students[i].Mark3) / 3;
	}
	for (i = 0; i < num; i++) {
		for (j = 1; j < num - i; j++) {
			if (students[j - 1].Average1 < students[j].Average1) {

				Copy(students, num, j - 1);
				Copy(students, j - 1, j);
				Copy(students, j, num);
				//tmp=students[j-1];
				//students[j-1]=students[j];
				//students[j]=tmp;      //冒泡排序
			}
		}
	}
	int a;
	printf("%10s%10s%8s%8s%8s%10s\n", "学号", "姓名", "语文", "数学", "英语", "平均成绩");
	printf("-------------------------------------------------------------\n");
	for (a = 0; a < num; a++) {
		printf("%10s%10s%8.2f%8.2f%8.2f%8.2f\n", students[a].ID, students[a].Name,
		       students[a].Mark1, students[a].Mark2, students[a].Mark3, students[a].Average1);
	}
}

void SearchLow() { //搜索不及格的并输出
	int a;
	printf("           语文不及格的有%10s%10s%8s\n", "学号", "姓名", "语文");
	for (a = 0; a < num; a++) {
		if (students[a].Mark1 < 60)
			printf("%10s%10s%8.2f\n", students[a].Name, students[a].ID, students[a].Mark1); //从头搜索到尾,若小于60就输出
	}

	printf("           数学不及格的有%10s%10s%8s\n", "学号", "姓名", "数学");
	for (a = 0; a < num; a++) {
		if (students[a].Mark2 < 60)
			printf("%10s%10s%8.2f\n", students[a].Name, students[a].ID, students[a].Mark2);
	}

	printf("           英语不及格的有%10s%10s%8s\n", "学号", "姓名", "英语");
	for (a = 0; a < num; a++) {
		if (students[a].Mark3 < 60)
			printf("%10s%10s%8.2f\n", students[a].Name, students[a].ID, students[a].Mark3);
	}

	printf("           计算机不及格的有%10s%10s%8s\n", "学号", "姓名", "计算机");
	system("pause");
}

void Save() {
	FILE *fp = fopen("temp2.txt", "w+");
	fprintf(fp, "%d\n", num);
	for (int i = 0 ; i < num ; i++) {
		fscanf(fp, "%s %s %f %f %f %f \n", students[i].ID, students[i].Name, &students[i].Mark1, &students[i].Mark2,
		       &students[i].Mark3, &students[i].Average1);

	}
	fclose(fp);
}

void Load() {
	FILE *fp = fopen("temp2.txt", "r");
	fscanf(fp, "%d", &num);
	for (int i = 0 ; i < num ; i++) {
		fprintf(fp, "%s %s %f %f %f %f \n", students[i].ID, students[i].Name, students[i].Mark1, students[i].Mark2,
		        students[i].Mark3, students[i].Average1);
	}
	fclose(fp);
}

int main() {
	int i;
	float Average2;//语文平均成绩
	float Average3;//数学平均成绩
	float Average4;//英语平均成绩
	while (1) {
		Load();
		printf("\t\t\t\t\t-------- 学生成绩管理系统-------\n\n\n\n");     //菜单
		printf("\t\t\t\t\t1. 增加学生成绩记录\n\n");
		printf("\t\t\t\t\t2. 显示所有成绩记录\n\n");
		printf("\t\t\t\t\t3. 查询学生成绩记录\n\n");
		printf("\t\t\t\t\t4. 按平均成绩排序\n\n");
		printf("\t\t\t\t\t5. 输出各科目不及格学生\n\n");
		printf("\t\t\t\t\t0. 退出\n\n\n");
		printf("请选择(0-5):");
		scanf("%d", &i);
		switch (i) {
			case 1:
				inputt();
				break;
			case 2:
				display();
				break;
			case 3:
				search();
				break;
			case 4:
				sort();
				break;
			case 5:
				SearchLow();
				break;
			case 0:
				exit(0);
			default:
				;
		}
		Save();
	}
	return 0;
}








 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/177.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python 基础教程【2】:条件语句和循环语句

本文已收录于专栏&#x1f33b;《Python 基础》文章目录1、流程控制语句1.1 顺序语句1.2 条件语句1.2.1 if语句注意事项1.2.2 三元运算符1.2.3 自动类型转换1.3 循环语句1.3.1 while 循环1.3.2 for-in 循环1.3.3 for...else 循环1.3.4 break 和 continue 的区别2、实践——猜数…

SpringBoot:手写一个 SpringBoot Starter

声明&#xff1a;原文作者&#xff1a;yuan_404 文章目录1. 说明2 . 编写启动器3 . 新建项目测试自己写的启动器1. 说明 启动器模块是一个 空 jar 文件&#xff0c;仅提供辅助性依赖管理&#xff0c;这些依赖可能用于自动装配或者其他类库 命名归约&#xff1a; 官方命名&…

面试必会-MySQL篇

1. Mysql查询语句的书写顺序Select [distinct ] <字段名称>from 表1 [ <join类型> join 表2 on <join条件> ]where <where条件>group by <字段>having <having条件>order by <排序字段>limit <起始偏移量,行数>2. Mysql查询语…

14个你需要知道的实用CSS技巧

让我们学习一些实用的 CSS 技巧&#xff0c;以提升我们的工作效率。这些 CSS 技巧将帮助我们开发人员快速高效地构建项目。 现在&#xff0c;让我们开始吧。 1.CSS :in-range 和 :out-of-range 伪类 这些伪类用于在指定范围限制之内和之外设置输入样式。 (a) : 在范围内 如…

SQL代码编码原则和规范

目录专栏导读1、先了解MySQL的执行过程2、数据库常见规范3、所有表必须使用Innodb存储引擎4、每个Innodb表必须有个主键5、数据库和表的字符集统一使用UTF86、查询SQL尽量不要使用select *&#xff0c;而是具体字段7、避免在where子句中使用 or 来连接条件8、尽量使用数值替代字…

植物大战 仿函数——C++

容器适配器 容器适配器不支持迭代器。栈这个东西&#xff0c;让你随便去遍历&#xff0c;是不好的。他是遵循后进先出的。所以他提供了一个街头top取得栈顶数据。 仿函数 仿函数&#xff08;functor&#xff09;是C中一种重载了函数调用运算符&#xff08;operator()&#x…

2023年网络安全最应该看的书籍,弯道超车,拒绝看烂书

学习的方法有很多种&#xff0c;看书就是一种不错的方法&#xff0c;但为什么总有人说&#xff1a;“看书是学不会技术的”。 其实就是书籍没选对&#xff0c;看的书不好&#xff0c;你学不下去是很正常的。 一本好书其实不亚于一套好的视频教程&#xff0c;尤其是经典的好书…

计算机网络概述

目录前言计算机网络的形成<font colorblue>计算机定义与分类计算机网络的定义计算机网络的分类1.按网络的覆盖范围分类2.按网络采用的传输技术分类按网络的拓扑分类计算机网络的组成计算机网络体系结构层次结构体系ISO/OSI 参考模型Tcp/ip体系结构这就是计算机网络的基础…

大数据框架之Hadoop:MapReduce(五)Yarn资源调度器

Apache YARN (Yet Another Resource Negotiator) 是 hadoop 2.0 引入的集群资源管理系统。用户可以将各种服务框架部署在 YARN 上&#xff0c;由 YARN 进行统一地管理和资源分配。 简言之&#xff0c;Yarn是一个资源调度平台&#xff0c;负责为运算程序提供服务器运算资源&…

Linux- 系统随你玩之--玩出花活的命令浏览器上

文章目录1、背景2、命令浏览器2.1、命令浏览器介绍2.2、特点2.3 常用功能选项3、实操3.1、使用 wget 下载文件3.2、 断点续传3.3、镜像整个站点4、 总结1、背景 一位友人说他有台服务器&#xff0c;需要下载一个文件&#xff0c;但是没有视窗界面与下载工具&#xff0c;怎么办…

自动写代码?别闹了!

大家好&#xff0c;我是良许。 这几天&#xff0c;GitHub 上有个很火的插件在抖音刷屏了——Copilot。 这个神器有啥用呢&#xff1f;简单来讲&#xff0c;它就是一款由人工智能打造的编程辅助工具。 我们来看看它有啥用。 首先就是代码补全功能&#xff0c;你只要给出函数…

GEC6818开发板JPG图像显示,科大讯飞离线语音识别包Linux_aitalk_exp1227_1398d7c6运行demo程序,开发板实现录音

GEC6818开发板JPG图像显示 | 开发板实现录音一.GEC6818开发板JPG图像显示1.jpg图片特性2.如何解压缩jpg图片1.对jpegsrc.v8c.tar.gz进行arm移植2.进入~/jpeg-8c对jpeg库进行配置3.编译4.安装&#xff0c;将动态库存放到 /home/gec/armJPegLib5.清空编译记录6.自己查看下 /home/…

外卖点餐系统小程序 PHP+UniAPP

一、介绍 本项目是给某大学餐厅开发的外面点餐系统&#xff0c;该项目针对校内的学生&#xff0c;配送由学校的学生负责配送。因此&#xff0c;该项目不同于互联网的外卖点餐系统。 该系统支持属于 Saas 系统&#xff0c;由平台端、商家端、用户端、以及配送端组成。 其中&a…

学会这12个Python装饰器,让你的代码更上一层楼

学会这12个Python装饰器&#xff0c;让你的代码更上一层楼 Python 装饰器是个强大的工具&#xff0c;可帮你生成整洁、可重用和可维护的代码。某种意义上说&#xff0c;会不会用装饰器是区分新手和老鸟的重要标志。如果你不熟悉装饰器&#xff0c;你可以将它们视为将函数作为输…

2022-2-23作业

一、通过操作Cortex-A7核&#xff0c;串口输入相应的命令&#xff0c;控制LED灯进行工作 1.例如在串口输入led1on,开饭led1灯点亮 2.例如在串口输入led1off,开饭led1灯熄灭 3.例如在串口输入led2on,开饭led2灯点亮 4.例如在串口输入led2off,开饭led2灯熄灭 5.例如在串口输…

100天精通Python(可视化篇)——第77天:数据可视化入门基础大全(万字总结+含常用图表动图展示)

文章目录1. 什么是数据可视化&#xff1f;2. 为什么会用数据可视化&#xff1f;3. 数据可视化的好处&#xff1f;4. 如何使用数据可视化&#xff1f;5. Python数据可视化常用工具1&#xff09;Matplotlib绘图2&#xff09;Seaborn绘图3&#xff09;Bokeh绘图6. 常用图表介绍及其…

为什么很多计算机专业大学生毕业后还会参加培训?

基于IT互联网行业越来越卷的现状&#xff0c;就算是科班出身&#xff0c;很多也是达不到用人单位的要求。面对这样的现实情况&#xff0c;有的同学会选择继续深造&#xff0c;比如考个研&#xff0c;去年考研人数457万人次&#xff0c;可见越来越的同学是倾向考研提升学历来达到…

GH3018超低功耗、超高精度的心率传感器

GH3018是一款超低功耗、超高精度的心率传感器&#xff0c;集成了3路LED驱动器、一个光学接收器&#xff08;PD&#xff09;及模拟前端&#xff08;AFE&#xff09;&#xff0c;支持心率&#xff08;HR&#xff09;、心率变异性&#xff08;HRV&#xff09;、血氧饱和度&#xf…

Springboot——自定义Filter使用测试总结

文章目录前言自定义过滤器并验证关于排除某些请求的方式创建测试接口请求测试验证异常过滤器的执行流程注意事项资料参考前言 在Java-web的开发领域&#xff0c;对于过滤器和拦截器用处还是很多&#xff0c;但两者的概念却极易混淆。 过滤器和拦截器都是采用AOP的核心思想&am…

HTML 扫盲

✏️作者&#xff1a;银河罐头 &#x1f4cb;系列专栏&#xff1a;JavaEE &#x1f332;“种一棵树最好的时间是十年前&#xff0c;其次是现在” 目录前言HTML 结构快速生成代码框架HTML 常见标签注释标签标题标签: h1-h6段落标签&#xff1a;p换行标签&#xff1a;br格式化标签…