C语言源代码系列-管理系统之职工工资管理系统

news2025/1/16 18:42:05
往期文章分享
  • 点击跳转=>《导航贴》- Unity手册,系统实战学习
  • 点击跳转=>《导航贴》- Android手册,重温移动开发

👉关于作者

众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣 !!!
专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎私我,交流群让学习不再孤单

在这里插入图片描述

👉实践过程

😜问题

此工资管理系统可完成以下几方面的功能:能够将每一个职工的姓名、ID号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录;可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示;可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示;可删除数据文件中的任一记录;在进行统计的工作中按字符表格形式打印全部职工工资信息表及平均工资;且该程序具有保存数据文件的功能。

大致思路就是输入函数,输出函数,修改函数,删除函数,添加函数,查询函数,用于统计成绩的函数,还有保存文件的函数,以及菜单函数,最后全部在主函数里调用。

😜回答

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

/*职工工资管理系统*/
#include<stdio.h>
#include<windows.h>
#include<string.h>
#include<conio.h>
#define N 100


struct clerk
{
 	int num;         //ID号
 	char name[20];   //姓名
 	int jbgz;        //基本工资
 	int zwgz;        //职务工资
 	int jt;          // 津贴 
 	int yb;          //医疗保险
 	int gjj;         //公积金
 	int total;       //总工资
}em[100];       
void menu();
void input();
void save(int);
void display();
void del();
void add();
void search();
void search_num();
void search_name();
void modify();  
void sta();
void start(); /*定义各函数*/



void start() //开始界面
{
    system("cls");//清屏
    system("color 1E"); //设置背景色蓝色 文字颜色为黄色
	printf("\n\n\n\n\n\n");
	printf("********************************************************************************");
	printf("***********************<<<<<<欢迎使用工资管理系统>>>>>>***********************");
	printf("**********************************************************************************\n\n\n\n\n");
	printf("\t\t\t\t\t\t      制作:1514011215 田宏锐 \n\n");
	printf("\t\t\t\t\t\t          2016/2/29-3/11\n\n\n\n");

	printf("\t\t\t      ***按任意键进入***\n");

}



void menu() //菜单界面
{
	system("cls");
	system("color 1F"); //设置背景色蓝色 文字颜色为白色
	printf("***菜单***\n\n");
	printf(">>>>>>>>>>>>>>>>>>>>>>>>>  1  输入  \n\n");
	printf(">>>>>>>>>>>>>>>>>>>>>>>>>  2  显示  \n\n");
	printf(">>>>>>>>>>>>>>>>>>>>>>>>>  3  查找  \n\n");
	printf(">>>>>>>>>>>>>>>>>>>>>>>>>  4  删除  \n\n");
	printf(">>>>>>>>>>>>>>>>>>>>>>>>>  5  添加  \n\n");
	printf(">>>>>>>>>>>>>>>>>>>>>>>>>  6  修改  \n\n");
	printf(">>>>>>>>>>>>>>>>>>>>>>>>>  7  统计  \n\n");
	printf(">>>>>>>>>>>>>>>>>>>>>>>>>  8  退出  \n\n");
	printf("说明:*如首次使用 尚未输入数据 请先输入数据 \n      *输入的数据将自动保存 \n      *再次选择输入功能时原数据将被覆盖\n\n");
	int n,button=0;
 	char a; 
	do
 	{
    	printf("功能选择(1--8):\n");
    	scanf("%d",&n);
    	if(n>=1&&n<=8)
    		{
    		button=1;
    		break;
    		}
    	else
    		{
   			button=0;
   			printf("您输入有误,请重新选择!");
    		}
 	}while(button==0);
    while(button==1)
        {
  			switch(n)
  	        {	
       		    case 1:input();break;
       		    case 2:display();break;
       	     	case 3:search();break; 
       		    case 4:del();break;
       			case 5:add();break;
       			case 6:modify();break;
       			case 7:sta();break;
       			case 8:exit(0);break;
       			default :break;
  			}
  			getchar();
  			printf("\n");
  			printf("按任意键继续\n");
  			getch();
   			system("cls");  /*清屏*/
   			menu(); /*调用菜单函数*/
  	    	printf("功能选择(1--8):\n");
   			scanf("%d",&n);
   	    	printf("\n");
		}
}



void input()   /*录入函数*/
{
   	int i,m;
   	system("cls");
  	printf("职工人数(1--100):\n");
   	scanf("%d",&m);
	for (i=0;i<m;i++)
   	{
  		printf("请输入职工号: ");
  		scanf("%d",&em[i].num);

  		printf("请输入姓名:  ");
  		scanf("%s",&em[i].name);
 		getchar();

  		printf("请输入基本工资:  ");
  		scanf("%d",&em[i].jbgz);
  
		printf("请输入职务工资:  ");
  		scanf("%d",&em[i].zwgz);

  		printf("请输入津贴:  ");
  		scanf("%d",&em[i].jt);

  		printf("请输入医疗保险:  ");
  		scanf("%d",&em[i].yb);
  
		printf("请输入公积金:  ");
  		scanf("%d",&em[i].gjj);
  
		em[i].total=((em[i].jbgz)+(em[i].zwgz)+(em[i].jt)-(em[i].yb)-(em[i].gjj));//计算总工资
  		printf("\n");
   	}
   	printf("\n创建完毕!\n");
    save(m);//保存职工人数m
}



void save(int m)  /*保存文件函数*/
{
 	int i;
 	FILE*fp;   //声明fp是指针,用来指向FILE类型的对象
 	if ((fp=fopen("clerk_list","wb"))==NULL) //打开职工列表文件为空
 	{
  		printf ("打开失败\n");
     	exit(0);
 	}
 	for (i=0;i<m;i++) /*将内存中职工的信息输出到磁盘文件中去*/
   		if (fwrite(&em[i],sizeof(struct clerk),1,fp)!=1)//写入数据块   &em[i]:是要输出数据的地址  sizeof(struct clerk):获取一个单体的长度  1:数据项的个数  fp:目标文件指针
   	    printf("文件读写错误\n");
   	fclose(fp);// 缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区
}



int load()  /*导入函数  int型*/
{
    FILE*fp;
 	int i=0;
   	if((fp=fopen("clerk_list","rb"))==NULL)    /*“rb”打开一个二进制文件,只允许读 */
 	{
  		printf ("cannot open file\n");
     	exit(0);
 	}
 	else 
 	{
  		do 
  		{
        	fread(&em[i],sizeof(struct clerk),1,fp); //读取
    		i++;
  		}
  		while(feof(fp)==0);  //检测流上的文件结束符
 	}
 	fclose(fp);
 	return(i-1);//返回人数
}



void display()  /*浏览函数*/
{
 	int i,sum=0;
 	int m=load();
 	system("cls");
 	printf("职工号    姓名   基本工资  职务工资   津贴    医疗保险  公积金   总工资 \n");
 	for(i=0;i<m;i++) /*m为输入部分的职工人数*/
 	{
		printf("\n  %02d      %-6s   %-8d  %-8d  %-8d  %-8d %-8d%-6d  ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total);
  		sum+=em[i].total;//计算员工总工资之和
	}
  	printf("\n\n职工平均工资:%-8d \n",sum/m);
}



void del()   /*删除函数 */
{
 	int m=load();
 	int i,j,n,t,button;
 	char name[20];
 	printf("\n 原来的职工信息:\n");
    display(); //显示删除前的员工信息
    printf("\n");
 	printf("按姓名删除:\n");
 	scanf("%s",name);
 	for(button=1,i=0;button&&i<m;i++)//主函数中确定button==1时各函数才可以被调用
 	{
  		if(strcmp(em[i].name,name)==0)//按员工姓名查找到某员工 并调出其资料
  		{
   			printf("\n此人原始记录为:\n");//显示选定员工的信息
   			printf("职工号   姓名   基本工资  职务工资   津贴    医疗保险  公积金   总工资 \n");
   			printf("\n  %02d    %-6s  %-8d  %-8d  %-8d  %-8d  %-8d %-8d  ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total);  
   			printf("\n确定删除 请按1,不删除请按0\n");
   			scanf("%d",&n);
            if(n==1)
   			{
     			for(j=i;j<m-1;j++)//从第i项开始 将后一项的各成员的值赋给前一项各对应的成员 完成对第i项的删除
     			{
    				strcpy(em[j].name,em[j+1].name);
                	em[j].num=em[j+1].num;
                	em[j].jbgz=em[j+1].jbgz;
                	em[j].zwgz=em[j+1].zwgz;
                	em[j].jt=em[j+1].jt;
               		em[j].yb=em[j+1].yb;  
               		em[j].gjj=em[j+1].gjj;
               		em[j].total=em[j+1].total;
     			}
    			button=0;
   			}
  		}
 	}
 	if(!button)//button==0表明删除已完成
    	m=m-1;//总员工数减少一人
 	else
    	printf("\n查无此人!\n");
    getch();
    save(m);     //调用保存函数
    display();  //调用浏览函数
 	printf("\n继续删除请按1,不再删除请按0\n");
 	scanf("%d",&t);
 	switch(t)
 	{
    	case 1:del();break;
    	case 0:break;
    	default :break;
 	}
}



void add()/*添加函数*/
{
 	FILE*fp;
 	int n;
    int count=0;
    int i;
    int m=load();
    printf("\n 原来的职工信息:\n");
    display();  
   	printf("\n");
    fp=fopen("clerk_list","a");     /*已追加文件的形式打开clerk_list文件追加信息*/
    printf("请输入想增加的职工数:\n");//确定要加入的职工数n
 	scanf("%d",&n);
    for (i=m;i<(m+n);i++)//添加n名员工的信息
  	{
  		printf("\n 请输入新增加职工的信息:\n");
  		printf("请输入职工号:  ");
  		scanf("%d",&em[i].num);
        printf("请输入姓名:  ");
     	scanf("%s",em[i].name);
        printf("请输入基本工资:  ");
     	scanf("\t%d",&em[i].jbgz);
        printf("请输入职务工资:  ");
     	scanf("%d",&em[i].zwgz);
     	printf("请输入津贴:  ");
     	scanf("%d",&em[i].jt);
     	printf("请输入医疗保险:  ");
     	scanf("\t%d",&em[i].yb);
      	printf("请输入公积金:  ");
     	scanf("%d",&em[i].gjj);
      	em[i].total=( em[i].jbgz+ em[i].zwgz + em[i].jt- em[i].yb- em[i].gjj);//计算该员工总工资
        printf("\n");
     	count=count+1;
 	}
    printf("\n添加成功,请按任意键\n"); 
    getch();
    m=m+count;//将新添加员工的人数加到总员工人数中
 	save(m);
    display();//显示添加后的信息
   	fclose(fp);
}



void search()/*查询函数*/
{
    int t,button;
 	system("cls");//清屏
 	do
 	{
    	printf("\n按1 按工号查询\n\n按2 按姓名查询\n\n按3 回主菜单\n");
    	scanf("%d",&t);
    	if(t>=1&&t<=3)
    	{
    		button=1;
    		break;
    	}
    	else
    	{
   			button=0;
   			printf("输入错误,请重新输入\n");
    	}
 	}while(button==0);//回到查询选择项
    while(button==1)
 	{
    	switch(t)//选择查询方式
    	{ 
     		case 1:printf("按工号查询\n");search_num();break;
     		case 2:printf("按姓名查询\n");search_name();break;
    	 	case 3:menu();break;
     		default:break;
    	}
    
 	}

}

void search_num()//按职工号查询
{
  	int a;
  	int i,t;
 	int m=load();
  	printf("请输入要查找的职工号:\n");
  	scanf("%d",&a);
  	for(i=0;i<m;i++)
  	if(a==em[i].num)
  	{  
		printf("职工号   姓名   基本工资  职务工资   津贴    医疗保险  公积金   总工资 \n");
  		printf("\n  %02d    %-6s  %-8d  %-8d  %-8d  %-8d  %-8d %-8d  ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total);   
  		break;
 	}
   	if(i==m)  
   	printf("\n对不起,查无此人\n");
   	printf("\n");
   	printf("返回查询函数请按1,继续查询职工号请按2\n");
   	scanf("%d",&t);
   	switch(t)
   	{ 
   	case 1:search();break;
   	case 2: break;
   	default:break;
   	}
}

void search_name()
{
  	char name[30];
  	int i,t;
  	int m=load();
  	printf("请输入姓名:\n");
  	scanf("%s",name);
  	for(i=0;i<m;i++)
   	if(strcmp(em[i].name,name)==0)      //字符串比较 
 	{
    	printf("\n已找到,其记录为:\n");
     	printf("职工号   姓名   基本工资  职务工资   津贴    医疗保险  公积金   总工资 \n");
    	printf("\n  %02d    %-6s  %-8d  %-8d  %-8d  %-8d  %-8d %-8d  ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total);      
 	}
   	if(i==m) 
   	printf("\n对不起,查无此人\n");
   	printf("\n返回查询菜单请按1,继续查询姓名请按2\n");
   	scanf("%d",&t);
  	switch(t)
  	{ 
   		case 1:search();break;
   		case 2:break;
   		default :break;
  	}
}



void modify() /*修改函数*/
{
    int num;
    char name[20];
    int jbgz;  
    int zwgz;
    int jt;
    int yb;
    int gjj;
    int b,c,i,n,t,button; 
 	int m=load();
    system("cls");
	printf("\n 原来的职工信息:\n");
    display(); 
 	printf("\n");
    printf("请输入要修改的职工的姓名:\n");
 	scanf("%s",name);
 	for(button=1,i=0;button&&i<m;i++)
 	{
  		if(strcmp(em[i].name,name)==0)
  		{
    		printf("\n此人原始记录为:\n");
     		printf("职工号   姓名   基本工资  职务工资   津贴    医疗保险  公积金   总工资 \n");
     		printf("\n  %02d    %-6s  %-8d  %-8d  %-8d  %-8d  %-8d %-8d  ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total);    
     		printf("\n确定 按1 ; 不修改请按0\n");
     		scanf("%d",&n);
            if(n==1)
   			{
               	printf("\n需要进行修改的选项\n 1.职工号 2.姓名 3.基本工资 4.职务工资 5.津贴 6.医疗保险 7.公积金 8.返回上层\n");  
               	printf("请选择序号1-8:\n");  
               	scanf("%d",&c);  
               	if(c>8||c<1)  
         		printf("\n选择错误,请重新选择!\n");  
   			}
        	button=0;
  		}		
        
 	}
    if(button==1)
 	printf("\n查无此人\n");  
    do  
 	{
  		switch(c)      /*因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人*/
  		{  
           	case 1:	printf("职工号改为: ");
      		 	    scanf("%d",&num);
      			    em[i-1].num=num;
           		    break;  
           	case 2: printf("姓名改为: ");
                    scanf("%s",name);
                	strcpy(em[i-1].name,name); 
                    break;  
           	case 3: printf("基本工资改为: ");
                    getchar();
                    scanf("%d",&jbgz);
                    em[i-1].jbgz=jbgz;
      			    em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);
           			break;  
           	case 4: printf("职务工资改为: ");
      				scanf("%d",&zwgz);
      				em[i-1].zwgz=zwgz;
     		 		em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);
           			break;  
           	case 5: printf("津贴改为: ");
      				scanf("%d",&jt);
      				em[i-1].jt=jt; 
      				em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);
           			break;  
           	case 6: printf("医疗保险改为: ");
      				scanf("%d",&yb);
      				em[i-1].yb=yb;
      				em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);
           			break;  
           	case 7: printf("公积金改为: ");
      				scanf("%d",&gjj);
      				em[i-1].gjj=gjj;
      				em[i-1].total=( em[i-1].jbgz+ em[i-1].zwgz + em[i-1].jt- em[i-1].yb- em[i-1].gjj);
           			break;  
           	case 8: modify(); 
           			break;  
  		} 
  		printf("\n");
  		printf("\n\n 确定修改 请按1 ; 重新修改 请按2:  \n"); 
  		scanf("%d",&b);
 	}while(b==2);
   	printf("\n");
   	save(m);
   	display();
   	printf("\n按1 继续修改 ,不再修改请按0\n");
   	scanf("%d",&t);
   	switch(t)
 	{
    	case 1:modify();break;
    	case 0:break;
    	default :break;
 	}
}



void sta()//统计函数
{
 
 	int i,sum=0,suma=0,sumb=0,sumc=0,sumd=0,sume=0;
 	int m=load();
 	system("cls");
 	printf("职工号    姓名   基本工资  职务工资   津贴    医疗保险  公积金   总工资 \n");
 	for(i=0;i<m;i++) /*m为输入部分的职工人数*/
 	{
	 	printf("\n  %02d      %-6s   %-8d  %-8d  %-8d  %-8d %-8d%-8d  ",em[i].num,em[i].name,em[i].jbgz,em[i].zwgz,em[i].jt,em[i].yb,em[i].gjj,em[i].total);
  	  	sum+=em[i].total;//计算员工总工资之和
 	  	suma+=em[i].jbgz;
 	  	sumb+=em[i].zwgz;
 	  	sumc+=em[i].jt;
 	  	sumd+=em[i].yb;
 	  	sume+=em[i].gjj;
	}
  	printf("\n\n职工各项平均工资: %-8d  %-8d  %-8d  %-8d %-8d%-8d \n",suma/m,sumb/m,sumc/m,sumd/m,sume/m,sum/m);
}



int main()//主函数
{   
	start();
	getch();
 	menu();  
}

👉其他

📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。
空名先生

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

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

相关文章

数据存储策略——lsm-tree

文章目录一、背景二、lsm-tree简介三、lsm-tree设计思想四、lsm-tree原理1.写操作2.读操作3.有序表持久化4.后台压缩五、lsm-tree的应用六、lsm-tree优缺点分析总结一、背景 由于传统机械磁盘的原理&#xff0c;它在读写时有个寻道的操作&#xff0c;在读写时都需要消耗一个寻…

基于PHP+MySQL网上报名系统的设计与实现

一直以来如何更好的实现校园现代化和信息化是当前很多高校一直探索的问题&#xff0c;随着时代的发展&#xff0c;高校内各类考试和报名也越来越多&#xff0c;如何通过互联网直接进行在线报名是本系统研究的一个重点内容。 本系统是一个网上报名系统&#xff0c;为了能够更加灵…

[计算机毕业设计]机器学习的数据驱动股票价格预测

前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着准备考研,考公,考教资或者实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过…

财政政策与货币政策(下)

财政政策与货币政策(下) – 潘登同学的宏观经济学笔记 文章目录财政政策与货币政策(下) -- 潘登同学的宏观经济学笔记粘性价格下的货币经济总供给曲线总供给曲线斜率与价格粘性菲利普斯曲线的消失货币政策的“动态不一致”财政政策与货币政策的配合财政主导 vs. 货币主导恶性通…

【学习记录】实例分割的发展与区别

【学习记录】实例分割的发展与区别 参考于《The Evolution Of Instantce Segmentation》 文章目录【学习记录】实例分割的发展与区别发展历程RCNNFast RCNNMultipath NetworkFaster RCNNMask RCNN发展历程 RCNN 开发集成了RCNN技术产生了AlexNet&#xff0c;以及使用选择性搜索…

浅谈App的启动优化

1. 应用启动的方式 在Android中&#xff0c;应用启动一般可分为三种&#xff1a;冷启动、温启动、热启动。 那么什么是冷启动、温启动和热启动呢&#xff1f;下面我们来简单看一下它们的定义&#xff1a; 冷启动&#xff1a;当启动应用时&#xff0c;后台没有该应用的进程。这…

Allegro导入导出设计数据操作指导

Allegro导入导出设计数据操作指导 Allegro有个非常好用的功能,就是支持设计数据的导入和导出,让协同设计变得更加方便,具体操作如下 以下面的设计数据为例,需要把这些数据导入到另外一个版本中 点击file-export-subdrawing Options所有的项目都勾选起来 Find选择需要导…

linux笔记(7):东山哪吒D1H使用framebuffer控制HDMI直线

文章目录1.测试流程和结果1.1 使能HDMI1.2 framebuffer操作流程1.3 测试结果2.测试过程详述2.1 编译源码2.2上传可执行文件2.3修改文件的权限&#xff0c;执行文件3.源码解释3.1 HDMI使用的颜色格式是ARGB4.源码工程链接这部分linux笔记是记录我入门的过程&#xff0c;内容基本…

【Flutter】【widget】Table 表格widget

文章目录前言一、Table 是什么&#xff1f;二、使用步骤1.Table 基础使用2.宽度3.设置边框4.TableCell设置单元格式widget等其他设置总结前言 Table 表格widget&#xff0c;其实很少使用到的&#xff0c;等有需要的时候在查看该widget 一、Table 是什么&#xff1f; 表格widg…

Trino源码Gitlab CICD单测环境建设

在中大型公司&#xff0c;由于对Presto源码的定制魔改量越来越大&#xff0c;会随着时间推移而增大出现冷门bug的概率&#xff0c;所以建立一套自动测试机制&#xff0c;在魔改源码合入主分支时可以自动触发test case&#xff0c;通过特定单测的执行失败&#xff0c;来更清晰的…

多云管理产品组合VMware Aria,开启多云管理新篇章

今年8月份&#xff0c;VMware Explore美国大会上宣布了多云管理产品组合VMware Aria&#xff0c;宣布之后&#xff0c;市场上关注度非常高&#xff0c;而且受到了热捧。Aria这个名字动听且贴切&#xff0c;中文意思是 “咏叹调”&#xff0c;也就是说要用统一的、一致的曲调来歌…

big.LITTLEDynamIQ

最近看到了DynamIQ&#xff0c;于是来了解一下什么是DynamIQ&#xff1f; 前言 首先要知道DynamIQ&#xff0c;那么你肯定得知道big.LITTLE。因为DynamIQ可以说是big.LITTLE新一代或者是升级版。 那么在这之前你肯定得知道什么是big.LITTLE&#xff1f; 然后知道了后你就会…

旋转框目标检测mmrotate v0.3.1 训练DOTA数据集(三)——配置文件优化技巧

1、 目标检测比赛中的tricks DOTAv2遥感图像旋转目标检测竞赛经验分享&#xff08;Swin Transformer Anchor free/based方案&#xff09; 目标检测比赛中的tricks&#xff08;已更新更多代码解析&#xff09; 水下目标检测算法赛解决方案分享 | 2020年全国水下机器人&#xf…

基于布谷鸟搜索混合灰狼优化算法求解单目标优化问题(AGWOCS)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

【工具】typora的一些配置

文章目录1. 自动编号1.1 大纲编号1.2 目录编号3. 正文部分2. 自定义快捷键1. 自动编号 我们在查看文档时候&#xff0c;希望编译器能够自动根据标题样式按顺序编号&#xff0c;不需要用户自行添加相应标题。这样也方便用户随时更新文档时候不会因为修改了某个编号而要去修改其…

分享3个文字配音软件,帮助你们轻松制作短视频

有没有刚踏入自媒体行业的小伙伴呀&#xff1f;那你们是不是为视频的后期工作所困惑着呢&#xff1f; 大家平时刷到的视频虽然看起来简短又有趣&#xff0c;但其实后期制作并没那么简单&#xff0c;是由许多道工序环环相扣而成的&#xff0c;其中比较重要的&#xff0c;就是为视…

JavaEE进阶:Spring 更简单的读取和存储对象

文章目录前言一、存储 Bean 对象1、前置⼯作&#xff1a;配置扫描路径&#xff08;重要&#xff09;2、添加注解存储 Bean 对象① Controller&#xff08;控制器存储&#xff09;② Service&#xff08;服务存储&#xff09;③ Repository&#xff08;仓库存储&#xff09;④ C…

栈的实现.

文章目录1.栈的概念及结构2.栈的实现&#xff08;数组实现&#xff09;2.1栈头文件2.2函数实现3.栈的习题3.1有效的括号3.1.1思路分析3.1.2代码实现1.栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删…

Qt第二十一章:Qt Designer 之 布局

简单场景&#xff1a;页面上放一个QTextEdit控件 预览后发现&#xff0c;拖拽放大窗口&#xff0c;QTextEdit控件不会进行缩放&#xff0c;就像下边自适应缩放 我们看到了QTextEdit控件撑满了整个界面&#xff1a;在控件sizePolicy属性的允许范围中尽可能的撑满界面。 如果换成…

基于h5的风云网球网站的设计

目 录 1绪 论 1 1.1 选题背景及意义 1 1.2 国内外研究现状 2 1.3本章小结 2 2 前端开发及相关技术 4 2.1 HTML5前端开发环境 4 2.2 HTML5前端开发工具 4 2.3 HTML5前端开发相关技术 5 2.3.1 javascript简介 5 2.3.2 javascript基本特点 5 2.3.3 css简介 6 2.3.4 jQuery 7 2.4 本…