C语言实现学生成绩管理系统思考
学生成绩管理系统思考
作业要求:
目录
思路
基本函数
学习理解大佬的代码:
完成作业:
思路
学生成绩管理系统,首先要初始化系统,
用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语言实现学生成绩管理系统思考
学生成绩管理系统思考 作业要求: 目录 思路 基本函数 学习理解大佬的代码: 完成作业: 思路 学生成绩管理系统,首先要初始化系统, 用C语言做学生实验管理系统要求实现对某班学生3门课程(包括语文、数…...

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

【jvm系列-01】初识虚拟机与java虚拟机
初识虚拟机与java虚拟机一,虚拟机与java虚拟机1,虚拟机2,java虚拟机3,jvm整体结构图4,jvm的架构模型5,jvm的生命周期6,jvm的种类划分6.1,Sun Classic Vm6.2,Exact VM6.3&…...
「Python 基础」数据库应用编程
Python 定义了一套 DB-API,任何数据库要连接到 Python,只需要提供符合 Python 标准的数据库驱动即可; 文章目录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项目,或者自己随便写一个 我是直接下载的,然后使用的是第一个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
依赖条件:需要有Hadoop,hive,zookeeper,hbase环境映射:每一个在 Hive 表中的域都存在于 HBase 中,而在 Hive 表中不需要包含所有HBase 中的列。HBase 中的 RowKey 对应到 Hive 中为选择一个域使用 :key 来对…...

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

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

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

【SpringBoot项目实战+思维导图】瑞吉外卖⑤(新增套餐、套餐分页查询、删除套餐、短信发送、手机验证码登录)
文章目录新增套餐需求分析数据模型准备工作前端页面分析代码开发根据分类查询菜品功能实现功能测试保存套餐功能实现功能测试思维导图总结套餐分页查询需求分析前端页面分析代码开发基本信息查询问题分析功能完善功能测试思维导图总结删除套餐需求分析前端页面分析代码开发功能…...

OpenAI 发布GPT-4——全网抢先体验
OpenAI 发布GPT-4 最近 OpenAI 犹如开挂一般,上周才刚刚推出GPT-3.5-Turbo API,今天凌晨再次祭出GPT-4这个目前最先进的多模态预训练大模型。与上一代GPT3.5相比,GPT-4最大的飞跃是增加了识图能力,并且回答准确性也得到显著提高。…...
C++——多态
多态分为两类静态多态:函数重载和运算符重载属于静态多态,复用函数名动态多态:派生类和虚函数实现运行时多态静态多态和动态多态的区别:静态多态的函数地址早绑定——编译阶段确定函数地址动态多态的函数地址晚绑定——运行阶段确…...

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

远程构建(命令、脚本构建)jenkins
在对应项目,开启远程构建开关添加API token系统设置调整用户权限获取crumbcurl调用构建 1、进入对应项目的设置页面:开启远程构建开关 2、 添加 API token:进入对应用户的设置页面 3、系统设置调整权限,如图 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…...

指针和数组笔试题解析【下篇】
文章目录👁️6.指针笔试题👀6.1.试题(1)👀6.2.试题(2)👀6.3.试题(3)👀6.4.试题(4)👀6.5.试题(5&am…...

DHCP原理简析及交互实践
环境: os:centos7 dnsmasq:version 2.76 一. dhcp工作原理 首先补充几个dhcp相关的基本概念: 1、动态主机配置协议DHCP(Dynamic Host Configuration Protocol)是一种网络管理协议,用于集中对用…...

用二极管、三极管和MOS管搭建逻辑门电路
文章目录1. 二极管(1)二极管与门(2)二极管或门2. 三极管(1)三极管非门(2)三极管与门(3)三极管或门(4)三极管与非门(5&…...

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

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
Bean 作用域有哪些?如何答出技术深度?
导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答,…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving
地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

解析两阶段提交与三阶段提交的核心差异及MySQL实现方案
引言 在分布式系统的事务处理中,如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议(2PC)通过准备阶段与提交阶段的协调机制,以同步决策模式确保事务原子性。其改进版本三阶段提交协议(3PC…...

02.运算符
目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...