当前位置: 首页 > news >正文

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;
}

 

 

相关文章:

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

学生成绩管理系统思考 作业要求&#xff1a; 目录 思路 基本函数 学习理解大佬的代码&#xff1a; 完成作业&#xff1a; 思路 学生成绩管理系统&#xff0c;首先要初始化系统&#xff0c; 用C语言做学生实验管理系统要求实现对某班学生3门课程&#xff08;包括语文、数…...

C++11中Lambda新特性

1.定义 lambda匿名函数的语法格式&#xff1a; [外部变量访问方式说明符](参数)mutablenoexcept/throw()->返回值类型 {函数体; };其中各部分的含义分别为&#xff1a; a.[外部变量方位方式说明符] []方括号用于向编译器表明当前是一个lambda表达式&#xff0c;其不能被省略…...

【jvm系列-01】初识虚拟机与java虚拟机

初识虚拟机与java虚拟机一&#xff0c;虚拟机与java虚拟机1&#xff0c;虚拟机2&#xff0c;java虚拟机3&#xff0c;jvm整体结构图4&#xff0c;jvm的架构模型5&#xff0c;jvm的生命周期6&#xff0c;jvm的种类划分6.1&#xff0c;Sun Classic Vm6.2&#xff0c;Exact VM6.3&…...

「Python 基础」数据库应用编程

Python 定义了一套 DB-API&#xff0c;任何数据库要连接到 Python&#xff0c;只需要提供符合 Python 标准的数据库驱动即可&#xff1b; 文章目录1. 连接 SQLite1. 建表、插入数据2. 查询数据2. 连接 MySQL1. 安装驱动2. 演示连接3. SQLAlchemy1. 安装2. DBSession3. add4. qu…...

一个nginx的小项目,不写代码,实现在局域网内访问其他电脑的网页

准备工作 下载nginx //官网 https://nginx.org/en/download.html //直接下载 https://nginx.org/download/nginx-1.23.3.zip解压 下载一个html项目&#xff0c;或者自己随便写一个 我是直接下载的&#xff0c;然后使用的是第一个01 https://gitee.com/StarPort/HTML_CSSTe…...

23.3.14打卡 2022年江西省大学生程序设计竞赛(正式赛)ABL

就写了签到, 其他题没写, 这场好像3题就银了 纪念一下3.14原粥率日 比赛链接:https://ac.nowcoder.com/acm/contest/43898 A题 Special Adjustment Method 题意 给出非负整数x, y, z 你可以让其中两个数字-1, 另外一个2, 使得x2y2z2x^2y^{2}z^{2}x2y2z2最大 题解 这题很容…...

用idea操作hbase数据库,并映射到hive

依赖条件&#xff1a;需要有Hadoop&#xff0c;hive&#xff0c;zookeeper&#xff0c;hbase环境映射&#xff1a;每一个在 Hive 表中的域都存在于 HBase 中&#xff0c;而在 Hive 表中不需要包含所有HBase 中的列。HBase 中的 RowKey 对应到 Hive 中为选择一个域使用 :key 来对…...

手机解锁方法:8个顶级的 Android 手机解锁软件

一般来说&#xff0c;太简单的密码是不安全的&#xff0c;所以我们设置一个安全的密码&#xff0c;可能会稍微复杂一点。然而&#xff0c;我们可能经常会忘记复杂的密码并锁定我们的 Android 智能手机。 8个顶级的 Android 手机解锁软件 如果您遇到过这种情况并且正在寻找一种…...

JVS快速开发平台2.1.7版本,列表页配置新增特性介绍

JVS 在3月份更新了2.1.7版本&#xff0c;本次更新涉及到很多方面&#xff0c;其中包括逻辑引擎、流程引擎、列表引擎、数据处理引擎、图表配置加工等。这里我们先介绍下列表页配置引擎扩展的相关内容&#xff0c;我们先来看看最后配置的列表页配置的效果1、列表页展示方面&…...

【华为机试真题详解 Python实现】去除多余空格【2023 Q1 | 100分】

文章目录 前言题目描述输入描述输出描述示例 1解题思路参考代码前言 《华为机试真题详解》专栏含牛客网华为专栏、华为面经试题、华为OD机试真题。 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议! 本文解法非最优解(即非性能…...

【SpringBoot项目实战+思维导图】瑞吉外卖⑤(新增套餐、套餐分页查询、删除套餐、短信发送、手机验证码登录)

文章目录新增套餐需求分析数据模型准备工作前端页面分析代码开发根据分类查询菜品功能实现功能测试保存套餐功能实现功能测试思维导图总结套餐分页查询需求分析前端页面分析代码开发基本信息查询问题分析功能完善功能测试思维导图总结删除套餐需求分析前端页面分析代码开发功能…...

OpenAI 发布GPT-4——全网抢先体验

OpenAI 发布GPT-4 最近 OpenAI 犹如开挂一般&#xff0c;上周才刚刚推出GPT-3.5-Turbo API&#xff0c;今天凌晨再次祭出GPT-4这个目前最先进的多模态预训练大模型。与上一代GPT3.5相比&#xff0c;GPT-4最大的飞跃是增加了识图能力&#xff0c;并且回答准确性也得到显著提高。…...

C++——多态

多态分为两类静态多态&#xff1a;函数重载和运算符重载属于静态多态&#xff0c;复用函数名动态多态&#xff1a;派生类和虚函数实现运行时多态静态多态和动态多态的区别&#xff1a;静态多态的函数地址早绑定——编译阶段确定函数地址动态多态的函数地址晚绑定——运行阶段确…...

javaSE系列之类与对象

javaSE系列之类与方法什么是类类的定义书写事项什么是实例化this引用this的注意事项对象的初始化构造方法封装的概念访问限定符封装扩展之包static成员static的特性static的初始化代码块注意事项内部类1.实例内部类&#x1f497; &#x1f497; 博客:小怡同学&#x1f497; &am…...

远程构建(命令、脚本构建)jenkins

在对应项目&#xff0c;开启远程构建开关添加API token系统设置调整用户权限获取crumbcurl调用构建 1、进入对应项目的设置页面&#xff1a;开启远程构建开关 2、 添加 API token&#xff1a;进入对应用户的设置页面 3、系统设置调整权限&#xff0c;如图 4、由于jenkins的安全…...

2023-03-15 ElasticSearch

ElasticSearch 1.Docker安装ElasticSearch 1.1. es及kibana下载 docker pull elasticsearch:7.4.2 docker pull kibana:7.4.2创建映射文件: mkdir -p /elasticsearch/configmkdir -p /elasticsearch/datamkdir -p /elasticsearch/plugins在config下执行 vim elasticsearch…...

指针和数组笔试题解析【下篇】

文章目录&#x1f441;️6.指针笔试题&#x1f440;6.1.试题&#xff08;1&#xff09;&#x1f440;6.2.试题&#xff08;2&#xff09;&#x1f440;6.3.试题&#xff08;3&#xff09;&#x1f440;6.4.试题&#xff08;4&#xff09;&#x1f440;6.5.试题&#xff08;5&am…...

DHCP原理简析及交互实践

环境&#xff1a; os&#xff1a;centos7 dnsmasq&#xff1a;version 2.76 一. dhcp工作原理 首先补充几个dhcp相关的基本概念&#xff1a; 1、动态主机配置协议DHCP&#xff08;Dynamic Host Configuration Protocol&#xff09;是一种网络管理协议&#xff0c;用于集中对用…...

用二极管、三极管和MOS管搭建逻辑门电路

文章目录1. 二极管&#xff08;1&#xff09;二极管与门&#xff08;2&#xff09;二极管或门2. 三极管&#xff08;1&#xff09;三极管非门&#xff08;2&#xff09;三极管与门&#xff08;3&#xff09;三极管或门&#xff08;4&#xff09;三极管与非门&#xff08;5&…...

SpringBoot:手写一个 SpringBoot Starter

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

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...

Vue3 PC端 UI组件库我更推荐Naive UI

一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用&#xff0c;前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率&#xff0c;还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库&#xff08;Naive UI、Element …...