基于C语言的轮班查询器

本文介绍了作者为满足父亲查询轮班需求而编写的C语言轮班查询器。查询器遵循“三班倒”制度,包括晚班、早班、中班和休息四种状态,每八天轮换一次。通过用户输入日期,结合班组信息,计算出对应轮班状态和星期。文章包含了编写思路、实现效果和代码,同时也反思了使用goto语句的不足。
摘要由CSDN通过智能技术生成

创作背景

轮班,顾名思义,就是员工按照轮休制度参加工作的时间,一般分为“两班倒”和“三班倒”,而对于员工而言,轮班表就是他们上下班的工作时间表。现行很多大众化的日历或者app中都无法实现自动编排轮班,导致部分员工如果需要超前知晓轮班时间就需要一轮一轮递推,过程十分繁琐,而且容易出错。于是,一个能够查询员工轮班时间的执行文件就十分有必要了。2021年2月12日晚,笔者父亲来电,希望能够编出一种帮他查询轮休的代码或者可执行文件。挂断电话后,稍作思考,便有了思路,第二天上午经过几轮修改,一种基于C语言的轮班查询器得以完善。

具体要求

笔者父亲工作的地方是按照“三班倒”的轮休制度来操作的,总共分为“甲、乙、丙、丁”四种班组,分别按照不同的作息上班,但总体轮休办法基本一致,具体为“晚班、早班、中班、休息”四种工作时间,按照“晚班、早班、中班、休息”的顺序,每种工作时间执行两天,往复递推,例如,星期一二是晚班、星期三四是早班、星期五六是中班、星期日和下星期的星期一则为休息,往复轮休。该轮班查询器不仅要满足以上条件,并且希望能够查询轮休的同时,知晓星期。

编写思路

1、由于是四种班组,因此就可以定义一个一维数组,数组中储存分别表示“甲、乙、丙、丁”四种班组的代码,代码运行前,首先咨询使用者班组,再进行下一步操作。
2、首先设定“甲、乙、丙、丁”四种班组的某一日期的轮班代码,如2021年1月1日甲班是早班第二天,再让用户输入某个日期,拿用户输入的日期与所设定的固定日期进行比较,计算差值,得到该日期与前面设定的固定日期的差,再利用每八天轮班一次,用差值除以8取余,得到余数,余数“1、2、3、4、5、6、7、8”分别对应“晚班第一天、晚班第二天、早班第一天、早班第二天、中班第一天、中班第二天、休息第一天、休息第二天”。
3、计算星期。利用基姆拉尔森计算公式计算该日期的星期,w = ( day + 2month +3(month+1)/5 + year + year/4 - year/100 +year/400)%7,根据已知公元1年1月1日星期一来推算。其中,要把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。
4、如果输入日期与设定固定日期的差值超过一年,则利用循环来重复定义固定日期和轮休代码,即“自适应环境变化”。

实现效果演示

在这里插入图片描述

源码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/*
*运行软件:Visual C++
*作者:彭晟祺
*完成日期:2021年2月12日
*/

int main()
{
   

	int year0,month0,day0,year,month,day,lunban,runnian,a,b,c,d,e,n,m,i,x;
	char weekname[][10]={
   1,2,3,4,5,6,7};
	printf("轮班查询器 V1.3\n\n开发者:祺祺\n完善时间:2021年2月13日\n班次说明:1-甲班、2-乙班、3-丙班、4-丁班\n前言:由于作者水平有限,软件运行过程中难免会出现bug,数据仅供参考,希望使用者批评指正!\n\n\n");
	printf("按回车键确认\n");
repeat:
	printf("\n请按照班次说明输入班次代码(例如:1):");
	scanf("%d",&i);
	switch(i)
	{
   
	case 1:
		lunban=4;
		printf("\n您的班次为:甲班\n");
		break;
	case 2:
		lunban=6;
		printf("\n您的班次为:乙班\n");
		break;
	case 3:
		lunban=8;
		printf("\n您的班次为:丙班\n");
		break
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值