学生信息管理系统(C语言)

2023-11-09

高级程序设计:学生管理系统(C语言)

本项目可以简单的实现学生信息的增、删、改、查、统计、存储等基本功能:(环境是Dev C++)

  1. 创建学生信息文件,根据提示输入学生的各项信息,然后按学号对学生信息进行排序,并将排序后的学生信息存储到文件中。
  2. 增加学生信息,在原有学生信息文件的基础上增加新的学生成绩信息。要求:增加后的学生信息仍按学号排序,并继续保存至原文件。
  3. 删除学生信息,提示用户输入要进行删除操作的学号,如果在文件中有该信息存在,则将该学号所对应的学生信息删除,否则输出提示信息,并提示用户选择是否继续进行删除操作。
  4. 修改学生信息,提示用户输入要进行修改操作的学号,如果在文件中有该息存在,则将提示用户输入该学号对应的要修改的选项,结果保存至原文件,并提示用户选择是否继续进行修改操作。
  5. 查询学生信息,按不同条件对学生信息进行查询操作,输出满足条件的学生信息。
  6. 基本统计信息,可对学生信息进行基本的统计分析。

功能模块

输入模块
增加信息模块
删除信息模块
修改信息模块
查询统计信息模块

项目源码

/********************************************************************************
* @File name: main.c
* @Description: 该程序主要实现的是学生信息管理,保存了学生的基本信息,包括学号、姓名、班级、
                语文成绩、数学成绩、英语成绩、物理成绩以及总成绩这些数据,具体可实现的操作有
				1.	创建学生信息文件,根据提示输入学生的各项信息,然后按学号对学生信息进行排序,
				并将排序后的学生信息存储到文件中。
                2.	增加学生信息,在原有学生信息文件的基础上增加新的学生成绩信息。
				并且增加后的学生信息仍按学号排序,并继续保存至原文件。
                3.	删除学生信息,提示用户输入要进行删除操作的学号,如果在文件中有该信息存在,
				则将该学号所对应的学生信息删除,否则输出提示信息,并提示用户选择是否继续进行删除操作。
                4.	修改学生信息,提示用户输入要进行修改操作的学号,如果在文件中有该息存在,
				则将提示用户输入该学号对应的要修改的选项,结果保存至原文件,并提示用户选择是否继续进行修改操作。
                5.	查询学生信息,按不同条件对学生信息进行查询操作,输出满足条件的学生信息。
                6.	基本统计信息,可对学生信息进行基本的统计分析。
 
* @ Function List: 
				void show();//显示信息 
				void input();//输入信息 
				void search();//查询信息
				void del();//删除信息
				void modify();//修改信息
				void order();//排序
				void number();//学生人数的统计 
				void surface();//管理系统的界面显示 

* @Author: 千阴 
* @Date: 2019-12-22
* @History: 无 
********************************************************************************/

#include<stdio.h> 
#include<stdlib.h>
#include<string.h>//C语言里面关于字符数组的函数定义的头文件,常用函数有strlen、strcmp、strcpy等等
#include<conio.h>//用getchar()、getch()就要包含<conio.h>的头文件 
#include<dos.h> 

#define LEN  sizeof(struct student)//学生结构体数组的长度 
#define FORM "%d%10s%16s%13d%15d%15d%15d%19.2f\n"//为了使得每次的输出信息时更加简单方便,把这个设为一个常量 
#define DATE  stu[i].num,stu[i].name,stu[i].clas,stu[i].chiness_score,stu[i].math_score,stu[i].english_score,stu[i].wuli_score,stu[i].sum//输出数据的信息

/*定义一个学生类型的结构体,用于存放学生的信息*/ 
struct student 
{
	int num;/*学号 */ 
	char name[20];/*姓名 */
	char clas[20];/*班级 */
	int chiness_score;/*语文成绩 */       
	int math_score;/*数学成绩 */
	int english_score;/*英语成绩*/
	int wuli_score; /*物理成绩*/ 
	float sum;/*总成绩 */
}stu[100];//由于不知道输入多少名学生信息,所以先开始将数组的长度设计得长一些 

int main()
{
	  //对各函数模板进行声明
	void show();//显示信息 
	void input();//输入信息 
	void search();//查询信息
	void delet();//删除信息
	void revise();//修改信息
	void order();//排序
	void number();//统计学生人数 
	void surface();//界面 
	//void bben();//界面信息 
	int n;
	//bben();
	surface();
  scanf("%d",&n);//输入选择功能的编号
  while(n)
  { switch(n)
     { case 1: input();break;
       case 2: search();break;
       case 3: delet();break;
       case 4: revise();break;
       case 5: order();break;
       case 6: number();break;
       case 7: show();printf("请按任意键返回菜单!\n");break;
       default:break;
     }
    getch();
    surface();//执行完功能再次显示菜单界面
    scanf("%d",&n);//输入选择功能的编号
  }
  return 0;
}

void surface()
{
	system("cls");//利用系统的API函数进行清屏处理 
	printf(" -------------学生信息管理系统-------------\n");
	printf(" |                                         |\n");
	printf(" |   该系统中你可以实现的具体操作如下:    |\n");
	printf(" |             1.输入信息                  |\n");
	printf(" |             2.查询信息                  |\n");
	printf(" |             3.删除信息                  |\n");
	printf(" |             4.修改信息                  |\n");
	printf(" |             5.排序输出                  |\n");
	printf(" |             6.学生人数                  |\n");
	printf(" |             7.显示信息                  |\n");
	printf(" |             0.退出                      |\n");
	printf(" ------------------------------------------\n");
	printf(" 请输入您要执行的序号(0--7):               ");
	
}

void show()
 { FILE *fp;
   int i,a=0;//控制变量 
   fp=fopen("data.txt","rb");//打开文件 
   while(!feof(fp))//判断文件指针*fp是否指向文件的末尾 
   {
   if(fread(&stu[a] ,LEN,1,fp)==1) 
   a++;
   }  
   fclose(fp);//关闭文件 
   printf("学号     姓名     班级       语文        数学       英语    物理     成绩总分\t\n");
   for(i=0;i<a;i++)
       { 
	   printf(FORM,DATE);//将信息在界面上显示出来,FORM表示的是数据的格式,DATE表示需要显示的数据 
       }
}

void input()//添加录入学生信息的小模块 
{
	
	int i,a=0,n;//a变量是记录学生信息的条数,i和n都充当循环变量 
	char ch[2];//保存判断的字符,分别是 Y和 N 
	FILE *fp;//定义文件指针
	if((fp=fopen("data.txt","a+"))==NULL)//打开指定文件  a+:为读/写打开一个指定文件  
	                                    //第一次打开文件,寻找原本存在的学生信息并且显示出来 
	{
		printf("不能打开文件\n");
		return;
	} 
	while(!feof(fp))//feof是END Of File的缩写形式,用于测试流文件的结束 
	{
		if(fread(&stu[a],LEN,1,fp)==1)// 用于文件流中读取数据 
		a++;                             //记录当前条数 
	
	}
	fclose(fp);//关闭文件 
	if(a==0)
	printf("不能记录!\n");
	else
	{
		system("cls");//清屏操作,刷新结果 
		show();//显示主界面的信息和需要输出的结果 
    }
    if((fp=fopen("data.txt","wb"))==NULL)//wb表示只写,为输出打开一个二进制文件   
	                                    //第二次打开文件,往文件里写入学生信息 
    {
    	printf("不能打开文件\n");//如果打开文件为NULL,则会输出不能打开文件的信息 
    	return ;
    }
    for(i=0;i<a;i++)
    fwrite(&stu[i],LEN,1,fp);//LEN代表学生数组的长度 
    printf("请输入y/n(提示,输入y继续输入,输入n结束输入):");//为了防止错误删除信息,所以设置了提醒信息 
    scanf("%s",ch);
    while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
    {
    	printf("学号:");
		scanf("%d",&stu[a].num);//输入学号 
		for(i=0;i<a;i++)
		if(stu[i].num==stu[a].num)//判断信息是否已经存在了 ,如果已经存在,就不写入信息 
		{
			printf("该学号已存在,请按任何键继续!");
			getch();
			fclose(fp);
			return;
		}
		printf("姓名:");
		scanf("%s",stu[a].name);
		printf("班级:");
		scanf("%s",stu[a].clas);
		printf("语文:");
		scanf("%d",&stu[a].chiness_score);
		printf("数学:");
		scanf("%d",&stu[a].math_score);
		printf("英语:");
		scanf("%d",&stu[a].english_score);
		printf("物理:");
		scanf("%d",&stu[a].wuli_score);
		stu[a].sum=stu[a].chiness_score+stu[a].math_score+stu[a].english_score+stu[a].wuli_score;
		if(fwrite(&stu[a],LEN,1,fp)!=1)//将信息写入文件中 
		{
			printf("不能保存!");
			getch();
		}
		else
		{
			printf("%s 已被保存!\n",stu[a].name);
			a++;
		}
		printf("是否继续y/n(提示,输入y继续输入,输入n结束输入):");//判断是否继续向里面输入数据 
		scanf("%s",ch);
    }
    fclose(fp);
    printf("OK!请按任意键返回主菜单!\n");
}

void search()//查询学生信息 
{
FILE *fp;
int snum,i,a=0;//snum是一个用于记录学号的中间变量 
char ch[2];
if((fp=fopen("data.txt","rb"))==NULL)//rb是以二进制的方式对文件进行只读操作
{
 printf("不能打开文件\n");
 return;	
}
while(!feof(fp)) //测试流文件是否结束 
{
if(fread(&stu[a],LEN,1,fp)==1)//向文件里面读数据 
  a++;
  }
  
  fclose(fp);
if(a==0)
{
	printf("没有记录!\n");
	return;
}	
printf("请输入要查询学生的学号:");//以下操作是按照学号来查找学生的信息 
scanf("%d",&snum);
for(i=0;i<a;i++)
if(snum==stu[i].num)
{
	printf("已经找出该学生,是否要显示(y/n):");
	scanf("%s",ch);
	if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
	{
		printf("学号     姓名     班级       语文        数学       英语    物理     成绩总分\t\n");
		printf(FORM,DATE); 
		break;
	}
	}
if(i==a) printf("未能找到要查询的信息!\n");
printf("请按任意键返回主菜单!\n");
}

void delet()//删除学生信息 
{
FILE *fp;
int snum,i,j,a=0;
char ch[2];
if((fp=fopen("data.txt","r+"))==NULL)//只读取文件的操作 
{
 printf("不能打开文件\n");
 return;	
}
while(!feof(fp)) 
 if(fread(&stu[a],LEN,1,fp)==1)
  a++;
  fclose(fp);
if(a==0)
{
	printf("没有记录!\n");
	return;
}
printf("请输入要删除学生的学号:");
scanf("%d",&snum);
for(i=0;i<a;i++)
if(snum==stu[i].num)//判断要删除的学生的学号是否存在文件中 
break;
printf("已经找到该学生,是否删除(y/n):");
scanf("%s",ch);
if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)//判断是否要进行删除
      for(j=i;j<a;j++)
	      stu[j]=stu[j+1];//将后一个记录移到前一个记录的位置
      a--;//记录的总的学生个数将会减少1
      if((fp=fopen("data.txt","wb"))==NULL)//wb为只写,为输出的数据打开一个二进制文件 
     { 
	 printf("不能打开文件\n");
	 return;
	 }
  for(j=0;j<a;j++)//将更改后的记录重新写入指定的文件中,此时的顺序不变,和原来排序相同 
      if(fwrite(&stu[j] ,LEN,1,fp)!=1)
       { 
	   printf("不能保存!\n");
      getch();
	  }
  fclose(fp);
  printf("修改成功!\n");
  printf("请按任意键返回主菜单!\n");		
}

void revise()//根据学号来修改学生信息
{
	FILE  *fp;
	int snum,i,j,a=0;
	if((fp=fopen("data.txt","r+"))==NULL)//读取文件中的数据 
	{
		printf("不能打开文件!\n");
		return;
	}
	while(!feof(fp))  //判断文件指针是否指到文件的末尾
	if(fread(&stu[a],LEN,1,fp)==1)
	a++;
	if(a==0)
	{
		printf("没有记录!\n");
		fclose(fp);
		return;
	} 
   printf("请输入你想修改的信息的学生学号!\n");
   scanf("%d",&snum);
   for(i=0;i<a;i++)
   if(snum==stu[i].num)//匹配学号是否相同,如果学号是相同的,就进行相关信息的修改 
   break;
   printf("已经找到该学生,请进行修改!\n");
   printf("姓名:");
		scanf("%s",stu[i].name);
		printf("语文:");
		scanf("%d",&stu[i].chiness_score);
		printf("数学:");
		scanf("%d",&stu[i].math_score);
		printf("英语:");
		scanf("%d",&stu[i].english_score);
		printf("物理:");
		scanf("%d",&stu[i].wuli_score);
		stu[a].sum=stu[a].chiness_score+stu[a].math_score+stu[a].english_score+stu[a].wuli_score;
		if((fp=fopen("data.txt","wb"))==NULL)//wb为只写,为输出的数据打开一个二进制文件 
		{
			printf("不能够打开文件!\n");
			return;
		}
		for(j=0;j<a;j++)
		if(fwrite(&stu[j],LEN,1,fp)!=1)
		{
			printf("不能保存!\n");
			getch();
		}
		fclose(fp);
		printf("请按任意键返回主菜单!\n");
}

void order()//将成绩进行排序并输出 
{
	FILE *fp;
	struct student t;
	int i,j,m=0;
	if((fp=fopen("data.txt","r+"))==NULL)//读取学生文件 
	{
		printf("不能够打开文件!\n");
		return;
	}	
	while(!feof(fp))
	if(fread(&stu[m],LEN,1,fp)==1)
	m++;
	fclose(fp);
	if(m==0)
	{
		printf("没有记录!\n");
		return;
	}
	if((fp=fopen("data.txt","wb"))==NULL)//wb为只写,为输出的数据打开一个二进制文件 
	{
	printf("不能打开文件!\n");
	return;
	}
	for(i=0;i<m-1;i++)
	for(j=i+1;j<m;j++)
	if(stu[i].sum<stu[j].sum)
	{
		t=stu[i];
		stu[i]=stu[j];
		stu[j]=t;
	}
	if((fp=fopen("data.txt","wb"))==NULL)//wb为只写,为输出的数据打开一个二进制文件 
	{
		printf("不能打开!\n");
		return; 
	}
	for(j=0;j<m;j++)
	if(fwrite(&stu[j],LEN,1,fp)!=1)
       { 
        printf("%s不能保存!\n"); 
        getch();
      }
  fclose(fp);
  show();
  printf("请按任意键返回主菜单!\n");
}
void number()//统计学生数量 
{
  FILE *fp;
  int m=0;
  if((fp=fopen("data.txt","r+"))==NULL)//读取文件中的数据 
  {
  	printf("不能够打开文件!\n");
  	return;
  }	
  while(!feof(fp))
  if(fread(&stu[m],LEN,1,fp)==1)
  m++;
  if(m==0)
  {
  	printf("不能够记录!\n");
  	fclose(fp);
  	return;
  }
  printf("这个班共有%d个学生!\n",m);
  fclose(fp);
  printf("请按任意键返回主菜单!\n");
}

项目总结

(1)总体功能:
该系统的总体功能是实现的是学生信息的管理,保存学生的基本信息,包括学号、姓名、班级、语文成绩、数学成绩、英语成绩、物理成绩以及总成绩这些数据,在这个学生信息管理系统中具体可实现的操作有:1、创建学生信息文件,根据提示输入学生的各项信息;2、增加学生信息,在原有学生信息文件的基础上增加新的学生成绩信息;3、删除学生信息;4、修改学生信息;5、查询学生信息,并且按照总分排序和输出,并且进行系统中学生人数的基本统计分析。
(2)不足之处:
1、没有使用动态的数组或者是链表来实现,而是用了一个数组来盛放所有的数据,占用系统内存过大,没有合理释放数组空间。
2、四门学科的成绩单独用变量来表示,没有将其放在数组中,操作起来过程有些繁琐,没有像放在数组中的简洁明了。
3、具体实现的统计模块的功能简单,只能统计系统中学生的人数,以及按照学生的各科总分进行排序输出。
(3)进一步改进方向:
1、使用链表,动态分配内存空间,不过多占用系统的内存资源,保证资源的随时释放。
2、在统计信息模块,增加平均分、各科单独成绩综合的排序输出模块,从而使最终的系统功能更加丰富,统计的功能更加多。
(4)开发心得:
1、通过此次的项目,了解了基本的文件操作,知道怎样向文件中写入数据,并且将文件中的数据进行储存,知道怎样通过二进制的方法进行文件读写。
2、加深了解链表的基本知识,以及动态数组的实现,在此过程中,知道一个程序要尽可能少的占用系统内存资源。

补充:动态数组类

#include <stdio.h>
#include <stdlib.h>
#define SIZE_BLOCK 5
//动态数组类 
class  rArray
{

	int *data;
	int size;//0
	int max_size;//10
public:
	//创建动态数组
	rArray(int array_size);
	//释放动态数组 
	~rArray( );
	//获取动态数组中元素个数
	int get_size( );
	//获取动态数组大小 
	int get_maxsize( );
	//增大数组 
	void growth(int growth_size);
	//获取、设置动态数组元素 
	int* at_value(int index);
	//输出数组元素
	void output();

};

//构造函数:创建动态数组
rArray::rArray(int array_size)
{
	//rArray arr;
	size = 0;
	max_size = array_size;
	data = (int *)malloc(sizeof(int)*array_size);
	for(int i=0;i<max_size;i++)
		data[i]=0; 
}
//析构函数
rArray::~rArray( )
{
	free(data);
	data = NULL;
	size = 0;
	max_size = 0;
}

//获取动态数组中元素个数
int rArray::get_size()
{
	return size;
}

//获取动态数组大小 
int rArray::get_maxsize()
{
	return max_size;
}

//增大数组 
void rArray::growth(int growth_size)//5 
{
	printf("数组长度不够,增加长度:%d",growth_size);
	int *p;
	max_size += growth_size;
	p=(int *)malloc(sizeof(int)*(max_size));
	int i;
	for(i=0;i<size;i++)
	{
		p[i] = data[i];
	} 
	free(data);
	data = p;		 
}

//获取、设置动态数组元素 
int* rArray::at_value(int index)//index=10
{
	size++;
	if(index >= max_size)
	{
		growth(SIZE_BLOCK);
	}
	return &(data[size-1]);
}

void rArray::output()
{
	int i;
	for(i=0;i<size;i++)
		printf("%5d",data[i]);
	printf("\n");
}

int main()
{
	rArray arr(10);
	printf("数组原始大小:%d,数组中元素个数:%d\n",arr.get_maxsize(),arr.get_size());
	int number,count=0;
	printf("向数组里输入数据(-1结束)\n");
	do
	{
		scanf("%d",&number);//110
		if(number!=-1)
			*(arr.at_value(count++))=number;//count=10
	}while(number!=-1);
	printf("当前数组大小:%d,数组中元素的个数%d\n",arr.get_maxsize(),arr.get_size());
	printf("数组数据:");
	arr.output();
	return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

学生信息管理系统(C语言) 的相关文章

  • STM32F103使用内部Flash保存参数

    在我们应用开发时 经常会有一些程序运行参数需要保存 如一些修正系数 这些数据的特点是 数量少而且不需要经常修改 但又不能定义为常量 因为每台设备可能不一样而且在以后还有修改的可能 将这类数据存在指定的位置 需要修改时直接修改存储位置的数值
  • L3-005 垃圾箱分布 (30 分)

    题目 题目链接 题解 对每个垃圾箱进行一次队列优化的Dijskra 每算出一个垃圾箱到其余各个居民点的最短距离后 计算这些距离中的最大距离 最短距离 如果最大距离大于要求的距离则直接忽略这个位置放垃圾桶的情况 否则 如果最短距离小于已经记录
  • opencv——颜色识别

    颜色识别 文章目录 颜色识别 前言 一 颜色识别是什么 二 图像处理中对颜色的转换 三 HSV的相关函数和应用流程 步骤展示 实例操作 总结 前言 这段时间一直在弄有关机器视觉识别的问题 在比赛中用到了很多关于颜色识别的视觉算法 感觉在开始
  • java通过poi模板导出excel

    java通过poi来读写excel目前很方便 支持xls和xlsx格式 目前代码支持按照sheet模板导出 并且支持sheet页级的模板复制功能 附上poi的maven配置 Java代码
  • mysql group by失效

    在MySQL5 7之后 sql mode中默认存在ONLY FULL GROUP BY SQL语句未通过ONLY FULL GROUP BY语义检查所以报错 检查代码也都是正确无误那么可以用any value函数解决 例子 select a
  • 图神经网络(1):图卷积神经网络GCN ICLR 2017

    图卷积神经网络GCN ICLR 2017 是曾经在美国加州大学UCI教授 现在荷兰阿姆斯特丹大学教授 Max Welling团队的大作 Max是图灵奖获得者Hinton的弟子 第一作者T N Kipf已经成为这个领域有名的学者和工程师 如果
  • DHCP协议详细解析

    一 DHCP定义 DHCP 动态主机配置协议 是一个应用层的网络协议 指的是由服务器控制一段IP地址范围 客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码 当我们将客户主机ip地址设置为动态获取方式时 DHCP服务器就会根据D
  • Java学习--- MySQL多表查询与自连接

    目录 一 多表查询 二 笛卡尔集 三 非等值连接 四 自连接 五 练习 一 多表查询 基于两个和两个以上的表查询 在实际应用中 单表查询不能满足需求 当在多表查询的条件不能少于表的个数 1 不然会出现笛卡尔集 二 笛卡尔集 多表查询 查询员
  • 在多个浏览器中添加IDM插件

    许多朋友下载了IDM Internet Download Manager 不知如何使用 把包含视频的链接放到软件新建任务 下载下来的的却是网页而不是视频 该软件下载视频的其中一个方法 需安装浏览器插件 通过插件抓取视频下载源 正常来说 我们
  • multicycle path的概念和用法

    通常情况下 两个同步的reg进行timing check时 组合逻辑的delay必须在一个时钟周期内到达 才能满足setup的时序 但是在某些情况下 从一个寄存器输出到另外一个寄存器的data端需要不止一个cycle的时间 而且又不影响逻辑
  • c++之Vector(动态 )

    原文 Vector 向量 C 中的一种数据结构 确切的说是一个类 它相当于一个动态的数组 当无法知道数组的规模有多大时 用来解决问题可以达到最大节约空间的目的 1 用法 include
  • 《结构化思维》读书笔记

    读书使人进步 每天进步一点点 本周小萌精心读的一本书是 结构化思维 主要是讲结构化思考 很棒的一本书 推荐读 麦肯锡金字塔原理 以及其他的麦肯锡结构化思考方法 第一章 初识思维 思维是我们解读事实的起点 是产生行为的源头 是决定结果的根本
  • honeyd路由拓扑

    create router 创建路由器模版 set router personality Cisco 7206 running IOS 11 1 24 指纹 add router tcp port 23 usr share honeyd s
  • python+unittest+ddt,从0到1搭建接口自动化框架

    最近在学习纯代码的接口自动化框架 在网上查阅大量资料后 结合了多个文章 最后使用python unittest ddt实现了一个简单的接口自动化工具 可以实现读取excel中的测试用例 生成测试报告 并发送邮件的功能 下图是项目的框架结构
  • Activiti7正式版- Activiti Cloud SR1

    2019年3月18版本 Activiti7正式版 Activiti Cloud SR1正式发布 我很高兴地宣布第一个服务版本的Activiti Cloud 和Activiti Core artefacts 在从我们的第一次GA迭代中获得大量
  • Andorid平台GB28181设备接入端如何生成黑帧并推送至国标平台

    我们在做Android平台GB28181设备接入模块的时候 遇到这样的需求 做移动对讲的时候 是不需要视频数据的 但是国标平台侧 没有视频的话 大多平台又无法播纯音频打包的数据 网页端大多基于http flv或webrtc实现 基于此 我们
  • python3 nonetype_“ NoneType”对象在python3中不可迭代

    TypeError Traceback most recent call last in 15 execute Align rsUnitedSpecPolicyDataFeed 16 gt 17 df pd read sql sql con
  • mpaas小程序如何实现摇一摇功能

    因为公司需要特意研究一下mpaas小程序框架 公司要实现摇一摇功能 如下 手机晃动调用其代码api 实现其功能 代码如下 axml片段
  • python-sklearn数据拆分与决策树的实现

    python sklearn数据拆分与决策树的实现 前言 一 数据拆分的sklearn实现 1 拆分为训练集与测试集 2 交叉验证法 1 留一交叉验证 2 验证集验证 3 k折交叉验证 4 s折交叉验证 s fold 3 sklearn交叉

随机推荐

  • .md即markdown文件的基本常用编写语法(图文并茂)

    序言 很久没有写博客了 感觉只要是不写博客 人就很变得很懒 学的知识点感觉还是记不住 渐渐地让我明白 看的越多 懂的越少 你这话不是有毛病吗 应该是看的越多 懂的越多才对 此话怎讲 当你在茫茫的前端知识库里面东看看 西看看的时候 很快就被海
  • 知乎热议:国家何时整治程序员的高薪现象?

    国家何时整治程序员的高薪现象 看到这个标题 可能大多数人的第一反应都是 提出这种问题的人 非蠢即坏 我当时看到突然吓了一跳 难道这是要拿程序员开刀 本身知乎平台上就有不少程序员群体活跃 马上就吸引来了很多人参与回答 其中 下面这位知友的回答
  • 最强自动化测试框架Playwright(35)-API测试

    playwright可以进行API测试 APIRequestContext可以通过网络发送各种HTTP S 请求 以下示例演示如何使用 Playwright 通过 GitHub API 测试问题创建 测试套件将执行以下操作 在运行测试之前创
  • Django图书商城系统实战开发 - 实现个人订单管理

    Django图书商城系统实战开发 实现个人订单管理 在实战开发Django图书商城系统中 实现个人订单管理是提供给用户的重要功能之一 以下是总结的要点 订单列表 创建一个订单列表页面 展示个人的订单历史 使用Django的模型和视图来获取和
  • Shopify商品列表页实现自动加载下一页产品功能Loading More

    找到你要编辑的主题 然后单击 Action gt Edit code 打开文件 theme liquid 或者在商品列表文件中 引用一个JS文件 在Assets中新增一个名为loadingmore的JS文件 添加如下代码 保存 loadin
  • Python 动态生成系统数据库设计到word文档

    背景 经常需要交付一些系统文档而且基本都是word的 其中又有系统数据库介绍模块 看着数据库里的几百张表于是我开始怀疑人生 所以咱手写一个 涉及知识 pymysql 操作数据库 tkinter GUI图形库 threading 线程 que
  • 飞控学习笔记-姿态角解算(MPU6050 加速度计加陀螺仪)

    本文持续更新 I2C通信 AHRS是自动航向基准系统 Automatic Heading Reference System 的简称 目前 使用四元数来进行AHRS姿态解算的算法被广泛采用于四轴飞行器上 IMU部分 IMU是惯性测量装置 In
  • 更便捷化的支付是时代发展的大趋势

    人脸识别是一种基于人的相貌特征信息进行身份认证的生物特征识别技术 技术的最大特征是能避免个人信息泄露 并采用非接触的方式进行识别 人脸识别与指纹识别 掌纹识别 视网膜识别 骨骼识别 心跳识别等都属于人体生物特征识别技术 都是随着光电技术 微
  • Vscode 绿色系清新主题

    炎炎夏日 上班上的心浮气躁 敲代码的时候 只觉昏昏沉沉 浑浑噩噩 给vscode换一个一个清新美好的绿色主题 充满活力和希望吧 朋友们 收藏起来 每个季节换一个主题 打工快乐 1 green theme 主打一个绿色温温柔柔的绿色画风 真的
  • Unity3D AssetBundles 动态加载游戏资源

    AssetBundles are files which you can export from Unity to contain assets of your choice These files use a proprietary co
  • ERP的权限管理的操作与设计--开源软件诞生24

    赤龙ERP用户与权限管理讲解 第24篇 用日志记录 开源软件 的诞生 进入地址 点亮星星 祈盼着一个鼓励 博主开源地址 码云 https gitee com redragon redragon erp GitHub https github
  • 设计模式之享元模式

    享元模式是对象池的一种实现 用来尽可能减少内存使用量 它适合用于可能存在大量重复对象的场景 来缓存可共享的对象 达到对象共享 避免创建过多对象的效果 这样依赖就可以提升性能 避免内存移除等 享元对象中的部分状态是可以共享 可以共享的状态称为
  • 使用Microsoft Word2016无法正常对Latex文本转换的踩坑和解决方法

    相信很多人都遇到像我一样的问题 word2016中 有latex的按钮 按ALT 就可以开始写公式 复制粘贴latex公式之后 怎么就转换不了呢 就是如图这样的 左上角转换按钮为灰色 上网找呀找 找了很多资料 大多数都是介绍用法的 但是转换
  • 图像语义分割的前世今生

    1998年以来 人工神经网络识别技术已经引起了广泛的关注 并且应用于图像分割 基于神经网络的分割方法的基本思想是通过训练多层感知机来得到线性决策函数 然后用决策函数对像素进行分类来达到分割的目的 这种方法需要大量的训练数据 神经网络存在巨量
  • GIT基本使用记录

    1 git配置与查看用户名与邮箱命令 git config global user name your name git config global user email your email 163 com git config glob
  • 根据这些超参数构建Transformer模型。

    对不起 您需要提供更多信息 以便构建Transformer模型 您需要提供超参数的详细列表 以便构建模型 您可以提供以下超参数以构建Transformer模型 模型大小 例如 隐藏层的大小 头的数量 编码器和解码器层的数量 门控循环单元 G
  • 左值和右值

    左值引用 也就是 常规引用 不能绑定到要转换的表达式 字面常量 或返回右值的表达式 而右值引用恰好相反 可以绑定到这类表达式 但不能绑定到一个左值上 右值引用就是必须绑定到右值的引用 通过 获得 右值引用只能绑定到一个将要销毁的对象上 因此
  • mybatis-plus复杂条件查询

    针对 mybatisplus 的复杂条件 需要将条件封装到 QueryWrapper 和 UpdateWrapper 对象中 1 QueryWrapper 查询 删除条件封装 QueryWrapper 对象用于封装查询 删除条件 2 Upd
  • oracle数据库时分秒格式_Oracle如何输出指定格式的日期时间数据呢?

    摘要 下文讲述Oracle数据库输出指定的日期时间格式的方法分享 如下所示 实现思路 使用TO CHAR系统函数 指定输出格式为 即可将日期时间转换为指定格式的字符串 如 SELECT TO CHAR SYSDATE YYYY MM DD
  • 学生信息管理系统(C语言)

    高级程序设计 学生管理系统 C语言 本项目可以简单的实现学生信息的增 删 改 查 统计 存储等基本功能 环境是Dev C 创建学生信息文件 根据提示输入学生的各项信息 然后按学号对学生信息进行排序 并将排序后的学生信息存储到文件中 增加学生