C语言----排班系统

学校实验楼有7名保安人员:钱、赵、孙、李、周、吴、陈。由于工作需要进行轮休制度,一星期中每人休息一天。预先让每一个人选择自己认为合适的休息日。请编制程序,打印轮休的所有可能方案。当然使每个人都满意,例如每人选择的休息日如下:

钱:星期一、星期六

赵:星期二、星期四

孙:星期三、星期日

李:星期五

周:星期一、星期四、星期六

吴:星期二、星期五

陈:星期三、星期六、星期日

运行结果:

Solution: 1

赵 钱 孙 李 周 吴 陈

=============================================================

星期四 星期一 星期三 星期五 星期六 星期二 星期日

Solution: 2

赵 钱 孙 李 周 吴 陈

=============================================================

星期四 星期一 星期日 星期五 星期六 星期二 星期三

Solution: 3

赵 钱 孙 李 周 吴 陈

=============================================================

星期四 星期六 星期三 星期五 星期一 星期二 星期日

Solution: 4

赵 钱 孙 李 周 吴 陈

=============================================================

星期四 星期六 星期日 星期五 星期一 星期二 星期三

代码:

#include <bits/stdc++.h>
using namespace std;
void del_element(int arr[],int delect);
int judge(int arr[],int n,int i);
void del_element(int arr[],int delect);

void del_element(int arr[],int n,int delect) { //n为数组的元素个数
	for(int i=0; i<=n-1; i++) {
		if(delect==arr[i]) {
			for(int j=i; j<=n-1; j++) {
				arr[j]=arr[j+1];
			}
		}
	}
}

int judge(int arr[],int n,int a) {
	for(int i=0; i<n; i++) {
		if(arr[i]==a)
			return 1;
	}
	return 0;
}

int main() {
	printf("\n\t\t\t\t\t\t\t排班系统\n\n");
	printf("请选择自己认为合适的休息日:\n");
	printf("(输入提示:输入数字,1代表星期一,依次类推,7代表星期天)\n");
	int A1[7],a2[7],a3[7],a4[7],a5[7],a6[7],a7[7];
	cout<<"赵:";
	int i=0,x;
	while(cin>>x) {
		A1[i]=x;
		i++;
		if(cin.get()=='\n')
			break;
	}
	cout<<endl;
	cout<<"钱:";
	i=0,x=0;
	while(cin>>x) {
		a2[i]=x;
		i++;
		if(cin.get()=='\n')
			break;
	}
	cout<<endl;
	cout<<"孙:";
	i=0,x=0;
	while(cin>>x) {
		a3[i]=x;
		i++;
		if(cin.get()=='\n')
			break;
	}
	cout<<endl;
	cout<<"李:";
	i=0;
	while(cin>>x) {
		a4[i]=x;
		i++;
		if(cin.get()=='\n')
			break;
	}
	cout<<endl;
	cout<<"周:";
	i=0,x=0;
	while(cin>>x) {
		a5[i]=x;
		i++;
		if(cin.get()=='\n')
			break;
	}
	cout<<endl;
	cout<<"吴:";
	i=0,x=0;
	while(cin>>x) {
		a6[i]=x;
		i++;
		if(cin.get()=='\n')
			break;
	}
	cout<<endl;
	cout<<"郑:";
	i=0;
	while(cin>>x) {
		a7[i]=x;
		i++;
		if(cin.get()=='\n')
			break;
	}
	int m=1;
	for(int a=1; a<=7; a++) {
		for(int b=1; b<=7; b++) if(b!=a) {
				for(int c=1; c<=7; c++ ) if(c!=a&&c!=b) {
						for(int d=1; d<=7; d++) if(d!=a&&d!=b&&d!=c) {
								for(int e=1; e<=7; e++) if(e!=a&&e!=b&&e!=c&&e!=d) {
										for(int f=1; f<=7; f++) if(f!=a&&f!=b&&f!=c&&f!=d&&f!=e) {
												for(int g=1; g<=7; g++) if(g!=a&&g!=b&&g!=c&&g!=d&&g!=e&&g!=f) {
														if(judge(A1,sizeof(A1)/4,a)&&judge(a2,sizeof(a2)/4,b)&&judge(a3,sizeof(a3)/4,c)&&judge(a4,sizeof(a4)/4,d)&&judge(a5,sizeof(a5)/4,e)&&judge(a6,sizeof(a6)/4,f)&&judge(a7,sizeof(a7)/4,g)) {
															cout<<"Soulution "<<m<<":"<<endl;
															cout<<"赵 钱 孙 李 周 吴 陈 "<<endl;
															cout<<"============================================================= "<<endl;
															cout<<"============================================================= "<<endl;
															cout<<a<<"  "<<b<<"  "<<c<<"  "<<d<<"  "<<e<<"  "<<f<<"  "<<g<<endl;
															m++;
														}
													}
											}
									}
							}
					}
			}
	}
}

  • 7
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
排班系统是一个方便管理和安排员工工作时间的工具。它能够自动分配工作时间和休息时间,并确保所有员工都有合理且公平的工作机会。以下是一个用C语言编写的排班系统的设计示例: 1. 首先,我们需要定义一个员工结构体。该结构体可以包含员工的姓名、工作时间表和休息时间表等信息。 ```c typedef struct { char name[50]; int work_schedule[7]; // 存储每天的工作时间 int rest_schedule[7]; // 存储每天的休息时间 } Employee; ``` 2. 接下来,我们需要编写函数来添加新员工和编辑现有员工的工作和休息时间。我们可以使用数组来存储所有员工的信息。 ```c Employee employees[100]; // 存储所有员工信息的数组 int employee_count = 0; // 记录员工数量 void addEmployee(Employee emp) { employees[employee_count++] = emp; } void editEmployeeSchedule(int empIndex, int dayOfWeek, int workTime, int restTime) { employees[empIndex].work_schedule[dayOfWeek] = workTime; employees[empIndex].rest_schedule[dayOfWeek] = restTime; } ``` 3. 然后,我们可以编写函数来计算每位员工的总工作时间和休息时间。 ```c int getTotalWorkTime(Employee emp) { int total = 0; for (int i = 0; i < 7; i++) { total += emp.work_schedule[i]; } return total; } int getTotalRestTime(Employee emp) { int total = 0; for (int i = 0; i < 7; i++) { total += emp.rest_schedule[i]; } return total; } ``` 4. 最后,我们可以实现一个函数来输出所有员工的工作时间和休息时间。 ```c void printEmployeeSchedules() { for (int i = 0; i < employee_count; i++) { printf("员工姓名:%s\n", employees[i].name); printf("工作时间:"); for (int j = 0; j < 7; j++) { printf("%d ", employees[i].work_schedule[j]); } printf("\n休息时间:"); for (int j = 0; j < 7; j++) { printf("%d ", employees[i].rest_schedule[j]); } printf("\n\n"); } } ``` 以上是一个简单的排班系统的设计示例。通过这个系统,我们可以方便地管理和安排员工的工作时间,确保每位员工都有合理的工作和休息安排。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值