学生信息管理系统(静态版)

系统的主界面     系统的操作指令  结构体的创建

目录

1、学生信息的输入

2、学生信息的添加

3、学生信息的删除

4、学生信息的查找,找到并显示

*判断查找函数3和4和5共用

5、学生信息的修改

6、显示学生的信息

7、学生成绩的排序,并打印(代码中有快排和冒泡都行)

综合代码


1、学生信息的输入2、学生信息的添加3、学生信息的删除 4、学生信息的查找

5、学生信息的修改6、显示学生的信息7、学生成绩的排序 0、退出系统

结构体学生的信息和信息系统结构体(1000个空间),静态内存

//结构体:学生的信息
typedef struct Student
{char name[20];//名字int num;           //学号int score[3];         //成绩//语数英
}Stu;//信息系统结构体(1000个空间),静态
typedef struct System
{Stu data[100];//一共的空间int ren;           //人数
}Sy

系统的主界面     系统的操作指令 菜单

//菜单,系统主界面
void menu()
{printf("                            \n"); printf("*********学生管理系统********\n");printf("****************************\n");printf("***1:信息输入   2:信息删除***\n");printf("***3:信息查找   4:信息修改***\n");printf("***5:显示信息   6:信息排序***\n");printf("***7:添加信息   0:退出系统***\n");printf("****************************\n");
}

main函数

int main()
{//定义管理系统Sy con;//初始化InitSy(&con);//初始化管理系统int input = 0;//do{menu();//菜单,系统主界面scanf("%d", &input);//输入switch (input){case 1://1、学生信息的输入Stuxinxi(&con);break;case 2://2、学生信息的添加AddSy(&con);break;case 3://3、学生信息的删除 DelSy(&con);break;case 4://4、学生信息的查找SeekSy(&con);break;case 5://5、学生信息的修改ModifySy(&con);break;case 6://6、显示学生的信息ShowSy(&con);break;case 7://7、学生成绩的排序SortSy(&con);break;case 0:printf("退出学生信息管理系统\n");break;default:printf("选择错误,重新选择\n");break;}} while (input);return 0;
}

初始化管理系统函数

/初始化管理系统函数
void InitSy(Sy* pc)
{pc->ren = 0;memset(pc->data, 0, sizeof(pc->data));//单位字节,因为传的地址是整个数组的地址所以可以直接用sizeof。
}

1、学生信息的输入

//1、学生信息的输入
void Stuxinxi(Sy* pc)
{int n = 0;printf("输入相输入成绩的人数->");scanf("%d", &n);for (int i = 0; i < n; i++){printf("请输入第%d名学生姓名>>", i + 1);scanf("%s", pc->data[i].name);printf("请输入第%d名学生学号>>", i + 1);scanf("%d", &pc->data[i].num);printf("请输入第%d名学生语文成绩>>", i + 1);scanf("%d", &pc->data[i].score[0]);printf("请输入第%d名学生数学成绩>>", i + 1);scanf("%d", &pc->data[i].score[1]);printf("请输入第%d名学生英语成绩>>", i + 1);scanf("%d", &pc->data[i].score[2]);printf("\n");}pc->ren = n;
}

2、学生信息的添加

//2、学生信息的添加
void AddSy(Sy*pc)
{if (pc->ren == 1000){printf("成员已满,无法录入新的信息\n");return;}printf("请输入学生姓名>>");scanf("%s", pc->data[pc->ren].name);printf("请输入学生学号>>");scanf("%d", &pc->data[pc->ren].num);printf("请输入学生语文成绩>>");scanf("%d", &pc->data[pc->ren].score[0]);printf("请输入学生数学成绩>>");scanf("%d", &pc->data[pc->ren].score[1]);printf("请输入学生英语成绩>>");scanf("%d", &pc->data[pc->ren].score[2]);printf("添加成功\n");pc->ren++;//人数加一
}

3、学生信息的删除

//查找函数通过名字,要用在删除,和修改上面
int  FindByname(Sy*pc,char*name)
{for (int i = 0; i < pc->ren; i++){if (strcmp(name, pc->data[i].name) == 0)//字符比较函数{return i;//直接返回下标为了让其后面的信息更好覆盖}}//没找到return -1;
}//3、学生信息的删除(用名字删除)
void DelSy(Sy* pc)
{//要想删除信息,必须要找到那个人的信息//找char name[20];printf("输入你想删除学生信息的姓名>>");scanf("%s", name);int n = FindByname(pc, name);//要删除人的下标if (n == -1){printf("查无此人\n");return;}//不等于-1,也就是找到了//找到后直接覆盖memmove(pc->data + n, pc->data + n + 1, sizeof(int) * (pc->ren - n));//要传指针!!!!!!!data[n]不是指针//for (int j = n; j < pc->ren - 1; j++)//人-1,为了防止空间溢出//{//	pc->data[j] = pc->data[j + 1];//}pc->ren--;//删除后人数减一printf("删除成功\n");
}

4、学生信息的查找,找到并显示

//查找函数通过名字,要用在删除,和修改上面
int  FindByname(Sy*pc,char*name)
{for (int i = 0; i < pc->ren; i++){if (strcmp(name, pc->data[i].name) == 0)//字符比较函数{return i;//直接返回下标为了让其后面的信息更好覆盖}}//没找到return -1;
}//4、学生信息的查找,找到并显示
void SeekSy(Sy* pc)
{char name[20];printf("请输入你想查找学生的姓名>>");scanf("%s", name);int i = FindByname(pc, name);//不等于-1,就是找到了if (i == -1){printf("没找到\n");return;}//找到了,打印printf("%-10s%-15s%-10s%-10s%-10s%-10s\n", "姓名", "学号", "语文成绩", "数学成绩", "英语成绩", "总成绩");int k = pc->data[i].score[0] + pc->data[i].score[1] + pc->data[i].score[2];//总成绩printf("%-10s%-15d%-10d%-10d%-10d%-10d\n", pc->data[i].name, pc->data[i].num, pc->data[i].score[0], pc->data[i].score[1], pc->data[i].score[2], k);
}

简便::4学生信息的查找和3学生信息的删除(用名字删除)共用的查找函数(判断字符串相不相等函数)

//查找函数通过名字,要用在删除,和修改上面,因为查找和修改和删除都需要先找到这个人

*判断查找函数3和4和5共用

//3和4和5共用//查找函数通过名字,要用在删除,和修改上面(判断字符串相不相等函数)
int  FindByname(Sy*pc,char*name)
{for (int i = 0; i < pc->ren; i++){if (strcmp(name, pc->data[i].name) == 0)//字符比较函数{return i;//直接返回下标为了让其后面的信息更好覆盖}}//没找到return -1;
}

5、学生信息的修改

//查找函数通过名字,要用在删除,和修改上面,因为修改和删除都需要先找到这个人(判断字符串相不相等函数)
int  FindByname(Sy*pc,char*name)
{for (int i = 0; i < pc->ren; i++){if (strcmp(name, pc->data[i].name) == 0)//字符比较函数{return i;//直接返回下标为了让其后面的信息更好覆盖}}//没找到return -1;
}void ModifySy(Sy*pc)
{char name[20];printf("输入你想修改学生信息的名字>>");scanf("%s", name);int n = FindByname(pc, name);//n为-1,就是没是找到if (n == -1){printf("没找到\n");return;}//找到了printf("请重新输入学生姓名>>");scanf("%s", pc->data[n].name);printf("请重新输入学生学号>>");scanf("%d", &pc->data[n].num);printf("请重新输入学生语文成绩>>");scanf("%d", &pc->data[n].score[0]);printf("请重新输入学生数学成绩>>");scanf("%d", &pc->data[n].score[1]);printf("请重新输入学生英语成绩>>");scanf("%d", &pc->data[n].score[2]);printf("修改成功\n");
}

6、显示学生的信息

//6、显示学生的信息
void ShowSy(Sy* pc)
{printf("%-10s%-15s%-10s%-10s%-10s%-10s\n", "姓名","学号","语文成绩","数学成绩","英语成绩","总成绩");for (int i = 0; i < pc->ren; i++){int k = pc->data[i].score[0] + pc->data[i].score[1] + pc->data[i].score[2];//总成绩printf("%-10s%-15d%-10d%-10d%-10d%-10d\n", pc->data[i].name, pc->data[i].num, pc->data[i].score[0], pc->data[i].score[1],pc->data[i].score[2], k);}
}

7、学生成绩的排序,并打印(代码中有快排和冒泡都行)

//7、学生成绩的排序,并打印
void SortSy(Sy* pc)
{printf("                               \n");printf("*********1:语文成绩排序********\n");printf("*********2:数学成绩排序********\n");printf("*********3:英语成绩排序********\n");printf("*********4:总成绩排序 ********\n");int w = 0;scanf("%d", &w);if (w == 1){qsort(pc->data, pc->ren, sizeof(pc->data[0]), paixu1);printf("语文成绩排序\n");printf("%-10s%-15s%-10s%-10s%-10s%-10s\n", "姓名", "学号", "语文成绩", "数学成绩", "英语成绩", "总成绩");for (int i = 0; i < pc->ren; i++){int k = pc->data[i].score[0] + pc->data[i].score[1] + pc->data[i].score[2];//总成绩printf("%-10s%-15d%-10d%-10d%-10d%-10d\n", pc->data[i].name, pc->data[i].num, pc->data[i].score[0], pc->data[i].score[1], pc->data[i].score[2], k);}}if (w == 2){qsort(pc->data, pc->ren, sizeof(pc->data[0]), paixu2);printf("数学成绩排序\n");printf("%-10s%-15s%-10s%-10s%-10s%-10s\n", "姓名", "学号", "语文成绩", "数学成绩", "英语成绩", "总成绩");for (int i = 0; i < pc->ren; i++){int k = pc->data[i].score[0] + pc->data[i].score[1] + pc->data[i].score[2];//总成绩printf("%-10s%-15d%-10d%-10d%-10d%-10d\n", pc->data[i].name, pc->data[i].num, pc->data[i].score[0], pc->data[i].score[1], pc->data[i].score[2], k);}}if (w == 3){qsort(pc->data, pc->ren, sizeof(pc->data[0]), paixu3);printf("英语成绩排序\n");printf("%-10s%-15s%-10s%-10s%-10s%-10s\n", "姓名", "学号", "语文成绩", "数学成绩", "英语成绩", "总成绩");for (int i = 0; i < pc->ren; i++){int k = pc->data[i].score[0] + pc->data[i].score[1] + pc->data[i].score[2];//总成绩printf("%-10s%-15d%-10d%-10d%-10d%-10d\n", pc->data[i].name, pc->data[i].num, pc->data[i].score[0], pc->data[i].score[1], pc->data[i].score[2], k);}}//冒泡if (w == 4){printf("总成绩成绩排序\n");printf("%-10s%-15s%-10s%-10s%-10s%-10s\n", "姓名", "学号", "语文成绩", "数学成绩", "英语成绩", "总成绩");for (int p = 0; p < pc->ren - 1; p++){for (int j = 0; j < pc->ren - 1 - p; j++){int t1 = pc->data[j].score[0] + pc->data[j].score[1] + pc->data[j].score[2];int t2 = pc->data[j+1].score[0] + pc->data[j+1].score[1] + pc->data[j+1].score[2];if (t1 < t2){Stu tmp = pc->data[j];pc->data[j] = pc->data[j + 1];pc->data[j + 1] = tmp;}}}//打印for (int i = 0; i < pc->ren; i++){int k = pc->data[i].score[0] + pc->data[i].score[1] + pc->data[i].score[2];//总成绩printf("%-10s%-15d%-10d%-10d%-10d%-10d\n", pc->data[i].name, pc->data[i].num, pc->data[i].score[0], pc->data[i].score[1], pc->data[i].score[2], k);}}
}

综合代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>//qsort的头文件 
/*
系统的主界面     系统的操作指令1、学生信息的录入2、学生信息的添加3、学生信息的删除 4、学生信息的查找5、学生信息的修改6、显示学生的信息7、学生成绩的排序学生成绩的排序
*///结构体:学生的信息
typedef struct Student
{char name[20];//名字int num;           //学号int score[3];         //成绩//语数英
}Stu;//信息系统结构体(1000个空间),静态
typedef struct System
{Stu data[1000];//一共的空间int ren;           //人数
}Sy;//初始化管理系统函数
void InitSy(Sy* pc)
{pc->ren = 0;memset(pc->data, 0, sizeof(pc->data));//单位字节,因为传的地址是整个数组的地址所以可以直接用sizeof。
}//菜单,系统主界面
void menu()
{printf("                                                   \n"); printf("*************学生管理系统****************\n");printf("*****************************************\n");printf("***1:学生信息的输入   2:学生信息的添加***\n");printf("***3:学生信息的删除   4:学生信息的查找***\n");printf("***5:学生信息的修改   6:显示学生的信息***\n");printf("***7:学生成绩的排序   0:退出系统      ***\n");printf("*****************************************\n");
}//2、学生信息的添加
void AddSy(Sy*pc)
{if (pc->ren == 1000){printf("成员已满,无法录入新的信息\n");return;}printf("请输入学生姓名>>");scanf("%s", pc->data[pc->ren].name);printf("请输入学生学号>>");scanf("%d", &pc->data[pc->ren].num);printf("请输入学生语文成绩>>");scanf("%d", &pc->data[pc->ren].score[0]);printf("请输入学生数学成绩>>");scanf("%d", &pc->data[pc->ren].score[1]);printf("请输入学生英语成绩>>");scanf("%d", &pc->data[pc->ren].score[2]);printf("添加成功\n");pc->ren++;//人数+1
}//6、显示学生的信息
void ShowSy(Sy* pc)
{printf("%-10s%-15s%-10s%-10s%-10s%-10s\n", "姓名","学号","语文成绩","数学成绩","英语成绩","总成绩");for (int i = 0; i < pc->ren; i++){int k = pc->data[i].score[0] + pc->data[i].score[1] + pc->data[i].score[2];//总成绩printf("%-10s%-15d%-10d%-10d%-10d%-10d\n", pc->data[i].name, pc->data[i].num, pc->data[i].score[0], pc->data[i].score[1],pc->data[i].score[2], k);}
}//查找函数通过名字,要用在删除,和修改上面,因为修改和删除都需要先找到这个人(判断字符串相不相等函数)
//3和4和5共用
int  FindByname(Sy*pc,char*name)
{for (int i = 0; i < pc->ren; i++){if (strcmp(name, pc->data[i].name) == 0)//字符比较函数{return i;//直接返回下标为了让其后面的信息更好覆盖}}//没找到return -1;
}//3、学生信息的删除(用名字删除)
void DelSy(Sy* pc)
{//要想删除信息,必须要找到那个人的信息//找char name[20];printf("输入你想删除学生信息的姓名>>");scanf("%s", name);int n = FindByname(pc, name);//要删除人的下标if (n == -1){printf("查无此人\n");return;}//不等于-1,也就是找到了//找到后直接覆盖memmove(pc->data + n, pc->data + n + 1, sizeof(int) * (pc->ren - n));//要传指针!!!!!!!data[n]不是指针//for (int j = n; j < pc->ren - 1; j++)//人-1,为了防止空间溢出//{//	pc->data[j] = pc->data[j + 1];//}pc->ren--;//删除后人数减一printf("删除成功\n");
}//4、学生信息的查找,找到并显示
void SeekSy(Sy* pc)
{char name[20];printf("请输入你想查找学生的姓名>>");scanf("%s", name);int i = FindByname(pc, name);//不等于-1,就是找到了if (i == -1){printf("没找到\n");return;}//找到了,打印printf("%-10s%-15s%-10s%-10s%-10s%-10s\n", "姓名", "学号", "语文成绩", "数学成绩", "英语成绩", "总成绩");int k = pc->data[i].score[0] + pc->data[i].score[1] + pc->data[i].score[2];//总成绩printf("%-10s%-15d%-10d%-10d%-10d%-10d\n", pc->data[i].name, pc->data[i].num, pc->data[i].score[0], pc->data[i].score[1], pc->data[i].score[2], k);
}//5、学生信息的修改
void ModifySy(Sy*pc)
{char name[20];printf("输入你想修改学生信息的名字>>");scanf("%s", name);int n = FindByname(pc, name);//n为-1,就是没是找到if (n == -1){printf("没找到\n");return;}//找到了printf("请重新输入学生姓名>>");scanf("%s", pc->data[n].name);printf("请重新输入学生学号>>");scanf("%d", &pc->data[n].num);printf("请重新输入学生语文成绩>>");scanf("%d", &pc->data[n].score[0]);printf("请重新输入学生数学成绩>>");scanf("%d", &pc->data[n].score[1]);printf("请重新输入学生英语成绩>>");scanf("%d", &pc->data[n].score[2]);printf("修改成功\n");
}//放在快排的排序函数
//语文成绩排序
int paixu1(const void* p1, const void* p2)
{return ((Sy*)p2)->data->score[0] - ((Sy*)p1)->data->score[0];//->的优先级大于*,所以要加个括号
}
//数学成绩排序
int paixu2(const void* p1, const void* p2)
{return ((Sy*)p2)->data->score[1] - ((Sy*)p1)->data->score[1];//->的优先级大于*,所以要加个括号
}
//英语成绩排序
int paixu3(const void* p1, const void* p2)
{return ((Sy*)p2)->data->score[2] - ((Sy*)p1)->data->score[2];//->的优先级大于*,所以要加个括号
}//7、学生成绩的排序,并打印
void SortSy(Sy* pc)
{printf("                                                   \n");printf("*********1:语文成绩排序********\n");printf("*********2:数学成绩排序********\n");printf("*********3:英语成绩排序********\n");printf("*********4:总成绩排序 ********\n");int w = 0;scanf("%d", &w);if (w == 1){qsort(pc->data, pc->ren, sizeof(pc->data[0]), paixu1);printf("语文成绩排序\n");printf("%-10s%-15s%-10s%-10s%-10s%-10s\n", "姓名", "学号", "语文成绩", "数学成绩", "英语成绩", "总成绩");for (int i = 0; i < pc->ren; i++){int k = pc->data[i].score[0] + pc->data[i].score[1] + pc->data[i].score[2];//总成绩printf("%-10s%-15d%-10d%-10d%-10d%-10d\n", pc->data[i].name, pc->data[i].num, pc->data[i].score[0], pc->data[i].score[1], pc->data[i].score[2], k);}}if (w == 2){qsort(pc->data, pc->ren, sizeof(pc->data[0]), paixu2);printf("数学成绩排序\n");printf("%-10s%-15s%-10s%-10s%-10s%-10s\n", "姓名", "学号", "语文成绩", "数学成绩", "英语成绩", "总成绩");for (int i = 0; i < pc->ren; i++){int k = pc->data[i].score[0] + pc->data[i].score[1] + pc->data[i].score[2];//总成绩printf("%-10s%-15d%-10d%-10d%-10d%-10d\n", pc->data[i].name, pc->data[i].num, pc->data[i].score[0], pc->data[i].score[1], pc->data[i].score[2], k);}}if (w == 3){qsort(pc->data, pc->ren, sizeof(pc->data[0]), paixu3);printf("英语成绩排序\n");printf("%-10s%-15s%-10s%-10s%-10s%-10s\n", "姓名", "学号", "语文成绩", "数学成绩", "英语成绩", "总成绩");for (int i = 0; i < pc->ren; i++){int k = pc->data[i].score[0] + pc->data[i].score[1] + pc->data[i].score[2];//总成绩printf("%-10s%-15d%-10d%-10d%-10d%-10d\n", pc->data[i].name, pc->data[i].num, pc->data[i].score[0], pc->data[i].score[1], pc->data[i].score[2], k);}}//冒泡if (w == 4){printf("总成绩成绩排序\n");printf("%-10s%-15s%-10s%-10s%-10s%-10s\n", "姓名", "学号", "语文成绩", "数学成绩", "英语成绩", "总成绩");for (int p = 0; p < pc->ren - 1; p++){for (int j = 0; j < pc->ren - 1 - p; j++){int t1 = pc->data[j].score[0] + pc->data[j].score[1] + pc->data[j].score[2];int t2 = pc->data[j+1].score[0] + pc->data[j+1].score[1] + pc->data[j+1].score[2];if (t1 < t2){Stu tmp = pc->data[j];pc->data[j] = pc->data[j + 1];pc->data[j + 1] = tmp;}}}//打印for (int i = 0; i < pc->ren; i++){int k = pc->data[i].score[0] + pc->data[i].score[1] + pc->data[i].score[2];//总成绩printf("%-10s%-15d%-10d%-10d%-10d%-10d\n", pc->data[i].name, pc->data[i].num, pc->data[i].score[0], pc->data[i].score[1], pc->data[i].score[2], k);}}
}//1、学生信息的输入
void Stuxinxi(Sy* pc)
{int n = 0;printf("输入相输入成绩的人数->");scanf("%d", &n);for (int i = 0; i < n; i++){printf("请输入第%d名学生姓名>>", i + 1);scanf("%s", pc->data[i].name);printf("请输入第%d名学生学号>>", i + 1);scanf("%d", &pc->data[i].num);printf("请输入第%d名学生语文成绩>>", i + 1);scanf("%d", &pc->data[i].score[0]);printf("请输入第%d名学生数学成绩>>", i + 1);scanf("%d", &pc->data[i].score[1]);printf("请输入第%d名学生英语成绩>>", i + 1);scanf("%d", &pc->data[i].score[2]);printf("\n");}pc->ren = n;
}int main()
{//定义管理系统Sy con;//初始化InitSy(&con);//初始化管理系统int input = 0;//do{menu();//菜单,系统主界面scanf("%d", &input);//输入switch (input){case 1://1、学生信息的输入Stuxinxi(&con);break;case 2://2、学生信息的添加AddSy(&con);break;case 3://3、学生信息的删除 DelSy(&con);break;case 4://4、学生信息的查找SeekSy(&con);break;case 5://5、学生信息的修改ModifySy(&con);break;case 6://6、显示学生的信息ShowSy(&con);break;case 7://7、学生成绩的排序SortSy(&con);break;case 0:printf("退出学生信息管理系统\n");break;default:printf("选择错误,重新选择\n");break;}} while (input);return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智慧冶金:TSINGSEE青犀AI+视频技术助力打造高效、安全的生产环境

一、建设背景 冶金行业因其特殊的生产环境和工艺要求&#xff0c;对安全生产、环境保护以及质量监控等方面有着极高的要求。因此&#xff0c;将视频智能监控技术引入冶金行业&#xff0c;不仅有助于提升生产效率&#xff0c;更能有效保障生产安全&#xff0c;降低事故风险。 …

Python + adb 实现打电话功能

前言 其实很多年前写过一篇python打电话的功能&#xff0c;链接如下&#xff1a; Python twilio 实现打电话和发短信功能_自动发短信代码-CSDN博客 今天由于工作需要&#xff0c;又用python写了个关于打电话的小工具&#xff0c;主要是通过ADB方式实现的 实现过程 1.先利用…

计算机图形学入门02:线性代数基础

1.向量&#xff08;Vetors&#xff09; 向量表示一个方向&#xff0c;还能表示长度&#xff08;向量的摸&#xff09;。一般使用单位向量表示方向。 向量加减&#xff1a;平行四边形法则、三角形法则。比卡尔坐标系描述向量&#xff0c;坐标直接相加。 1.1向量点乘&#xff08;…

图片怎么批量重命名从1到50?这3个方法一键改名

图片怎么批量重命名从1到50&#xff1f;图片批量重命名从1到50的过程不仅提高了我们处理大量图片文件的效率&#xff0c;还大大简化了命名过程&#xff0c;让我们能更加有条理地管理和存储图片。通过使用各种专业的工具和方法&#xff0c;我们可以轻松实现图片文件的自动化命名…

光纤网络发展(光缆主动监测系统解决方案)

随着光缆网络规模的迅速扩大&#xff0c;如何提高网络运营效益就显得尤为重要。一方面需要及时掌握网络的运行状况&#xff0c;在发生劣化或故障时&#xff0c;能够准确定位&#xff0c;缩短排障历时&#xff1b;同时&#xff0c;一条光缆从设计、施工到维护&#xff0c;积累了…

聊聊异常处理及try-catch-finally块的作用

异常处理&#xff08;Exceptional Handling&#xff09;&#xff0c;又称为错误处理&#xff0c;是编程语言或计算机硬件中用于处理软件或信息系统中出现的异常状况的一种机制。这些异常状况通常指的是超出程序正常执行流程的某些特殊条件。异常处理提供了处理程序运行时出现的…

服务器上创建搭建gitlab

一、下载与安装 在主目录操作~ 1.使用wget下载 wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-14.0.1-ce.0.el7.x86_64.rpm 可以在开源软件镜像站选择合适的版本&#xff0c;版本不同页面菜单会稍有差异&#xff0c;此次选…

新人学习笔记之(函数1)

一、函数的概念 1.在JS里面&#xff0c;可能会定义非常多的相同代码或者功能相似的代码&#xff0c;这些代码可能需要大量重复使用 2.虽然for循环语句也能实现一些简单的重复操作&#xff0c;但是比较有局限性&#xff0c;此时我们就可以使用JS中的函数 3.函数&#xff1a;就是…

MongoDB CRUD操作:投影Project详解

MongoDB CRUD操作&#xff1a;投影Project详解 文章目录 MongoDB CRUD操作&#xff1a;投影Project详解返回文档的全部字段返回指定的字段和_id字段不输出_id字段指定排除的字段返回内嵌文档中的指定字段禁止内嵌文档中的特定字段数组中内嵌文档的投影聚合表达式的投影字段 默认…

拉取代码报错: SSL certificate problem: self signed certificate

问题描述&#xff1a; 使用SmartGit工具clone项目时&#xff0c;弹出框提示信息为“XXXX&#xff0c;SSL certificate problem: self signed certificate” 问题分析&#xff1a; 提示信息为SSL认证失败&#xff0c;可以关闭SSL的认证 解决方案&#xff1a; 在windows的命…

【Git】Git命令

原文链接&#xff1a;https://github.com/Wscats/CV/issues/31 新建 创建一个新的 git 版本库。这个版本库的配置、存储等信息会被保存到.git 文件夹中 # 初始化当前项目 $ git init# 新建一个目录&#xff0c;将其初始化为Git代码库 $ git init [project-name]# 在指定目录创…

go mod包管理与应用,常见错误排查方法

go mod包管理 go 中 包管理使用go mod 进行包管理 go mod init 项目名称 go mod init myproject_go生成的go.mod中有 module myproject_go 创建目录go_service 其下有两个go文件&#xff0c;go_request.go go_write.go . 根目录下有main.go入口文件。于是项目结构类似于&…

10.时间片调度

一、简介 时间片调度主要针对优先级相同的任务&#xff0c;当多个任务的优先级相同时&#xff0c;任务调度器会在每 一次系统时钟节拍到的时候切换任务&#xff0c;也就是说 CPU 轮流运行优先级相同的任务&#xff0c;每个任务运 行的时间就是一个系统时钟节拍。 二、相关实…

Percona Toolkit 神器全攻略(实用类)

Percona Toolkit 神器全攻略&#xff08;实用类&#xff09; Percona Toolkit 神器全攻略系列共八篇&#xff0c;前文回顾&#xff1a; 前文回顾Percona Toolkit 神器全攻略 全文约定&#xff1a;$为命令提示符、greatsql>为GreatSQL数据库提示符。在后续阅读中&#xff0c;…

Linux完整版命令大全(十四)

od(octal dump) 功能说明&#xff1a;输出文件内容。语  法&#xff1a;od [-abcdfhilovx][-A <字码基数>][-j <字符数目>][-N <字符数目>][-s <字符串字符数>][-t <输出格式>][-w <每列字符数>][--help][--version][文件...]补充说明&…

【吊打面试官系列】Java高并发篇 - 怎么唤醒一个阻塞的线程?

大家好&#xff0c;我是锋哥。今天分享关于 【怎么唤醒一个阻塞的线程&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 怎么唤醒一个阻塞的线程&#xff1f; 如果线程是因为调用了 wait()、sleep()或者 join()方法而导致的阻塞&#xff0c;可以中断线程&#xf…

2024年618网购节各大电商超级红包二维码集合

一年一度的电商618网购节又要来了&#xff0c;下面收集了淘宝/京东/拼多多的618红包二维码&#xff0c;手机扫描或识别即可每天领红包&#xff0c;可参考好物分享中的商品下单&#xff1a; 淘宝618超级红包&#xff1a;即日起至2024.6.10&#xff0c;每天可领一次 京东618无门…

【强化学习05】从Q学习到深度Q学习

深度Q学习&#xff08;Deep Q-Learning, DQN&#xff09;是将深度学习与Q学习结合起来的一种强化学习方法&#xff0c;利用神经网络来近似Q值函数&#xff0c;解决传统Q学习在大规模或连续状态空间中的局限性。下面详细解释DQN的机理。 背景知识 Q学习 Q学习是一种值函数法&…

数据分析 - 合并查询

在数据分析中&#xff0c;合并查询&#xff08;Merge Query&#xff09;是一个重要的操作&#xff0c;它允许用户将两个或多个数据集&#xff08;通常是表格&#xff09;基于某些共同属性&#xff08;如ID&#xff09;进行合并&#xff0c;从而获取更丰富的数据视图。以下是关于…

vue+springboot实现echarts数据图统计

①vue项目修改配置 安装依赖&#xff1a; npm i echarts -S 修改路由index.js&#xff1a; import Vue from vue import VueRouter from vue-router import Manager from ../views/Manager.vue // 解决导航栏或者底部导航tabBar中的vue-router在3.0版本以上频繁点击菜单报错…