排班系统课程设计
⑴ C语言课程设计-保安值班系统
这个像排列组合多点:
c:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
char*week[7]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
char*names[7]={"赵","钱","孙","李","周","吴","陈"};
intplan[7]={-1};
intplanNum=0;
voiddoPlan(intn,int*len,intaccept[7][3]){
if(n>6){
planNum++;
for(inti=0;i<n;++i){
printf("%s ",names[plan[i]]);
}
printf(" ");
}else{
for(inti=0;i<len[n];++i){
if(plan[accept[n][i]]>=0){
continue;
}
plan[accept[n][i]]=n;
doPlan(n+1,len,accept);
plan[accept[n][i]]=-1;
}
}
}
intmain(){
intlen[7]={2,2,2,1,3,2,3};//这里的数字对应accept[i]的长度
intaccept[7][3]={{2,4},{1,6},{0,3},{5},{1,4,6},{2,
5},{0,3,6}};
for(inti=0;i<7;i++){
printf("%s ",week[i]);
plan[i]=-1;
}
printf(" ");
doPlan(0,len,accept);
printf("总共%d个方案 ",planNum);
return0;
}
⑵ 用c语言编写排班系统
打开这个网络文库链接,里面有您需版要的答案。权
https://wenku..com/view/5b97eafb52d380eb63946de2.html?from=search
⑶ C语言编程排班系统
#include <stdio.h>
int n = 0;
int rest[7][7];
void swap(int *a, int *b)
{
int m;
m = *a;
*a = *b;
*b = m;
}
void perm(int list[], int k, int m)
{
int i;
int j;
if(k > m)
{
for (i=0; i<7; i++)
{
for (j=0; j<7; j++)
{
if (rest[i][j] == 0)
return;
if (rest[i][j] != list[i])
continue;
if (rest[i][j] == list[i])
break;
}
}
n++;
printf("Solution: %d\n", n);
printf("赵 钱 孙 李 周 吴 陈\n");
printf("=============================================================\n");
for(i = 0; i <= m; i++)
{
switch (list[i])
{
case 1: printf("星期一 ");
break;
case 2: printf("星期二 ");
break;
case 3: printf("星期三 ");
break;
case 4: printf("星期四 ");
break;
case 5: printf("星期五 ");
break;
case 6: printf("星期六 ");
break;
case 7: printf("星期日 ");
break;
default:
break;
}
}
printf("\n\n\n");
}
else
{
for(i = k; i <= m; i++)
{
swap(&list[k], &list[i]);
perm(list, k + 1, m);
swap(&list[k], &list[i]);
}
}
}
int main()
{
printf("\n");
printf("注意:\n");
printf(" 1.请按钱、赵、孙、李、周、吴、陈的顺序输入休息每个人的时间。\n");
printf(" 2.输入星期时,请直接输入数字,如要输入'星期一',就用'1'代替,以此类推。\n");
printf(" 3.星期与星期之间用空格隔开,每输入完一个人的休息日,在其后输入0,再按回车继续下一人。\n");
printf("\n");
int list[] = {1, 2, 3, 4, 5, 6, 7};
int i, j;
for(i = 0; i < 7; i++)
{
printf("请输入第 %d 个人的休息时间:\n", i+1);
for(j = 0; j < 7; j++)
{
scanf("%d", &rest[i][j]);
if(rest[i][j] == 0)
break;
}
}
printf("\n\n\n");
perm(list, 0, 6);
getchar();
getchar();
printf("输出完毕,按回车键结束!\n");
return 0;
}
⑷ 学校学生排班系统
分换源码???你真行,这个程序做做也得小钱的
⑸ 用EXCEL制作一个自动排班系统(可以利用公式的方法)
具体操作步骤如下:
1、以Excel2007为例,打开Excel表格,如图所示。
⑹ c++ 课程设计 保安值班安排系统
想吧编程量些多确实比较麻烦,我写了一下尽量多,但是也才100多行,我想你可以加一些函数,比如加些修改的函数什么的,我写的,好久没有用C++了都忘了,然而,今天看到是以为小妹有需要,嘿嘿,就写了一个,有需要的你可以看看
#include<iostream>
#include<string>
#include<stdlib.h>
using namespace std;
struct peopleclass
{
string name;
int day[7];
int max;
int a;
};
struct abcde
{
int b[7];
struct abcde *next;
}*p1 , *p2;
////////////////////////////////////////////////////////////////////////////////
int CinName(peopleclass *people) //输入保安名字
{
int i,j;
for(i=0;i<7;i++)
{
cout<<endl<<"输入保安名字:";
cin>>people[i].name;
people[i].max=0;
people[i].a=0;
for(j=0;j<7;j++)
people[i].day[j]=0;
}
}
////////////////////////////////////////////////////////////////////////////////
//输入保安选择的休息时间
int CinDay(peopleclass *people)
{
int i,x,z=0;
for(i=0;i<7;i++,z=0)
{
cout<<endl
<<people[i].name
<<"合适的休息日是(输入数字1-7表示周一到周日):";
do
{
cin1:
cin>>x;
if(x>=0&&x<=7)
{
if(x==0&&z!=1)
{
cout<<endl<<"输入错误!必须要选择合适的休息时间,请重新输入:";
goto cin1;
}
if(x==0)
break;
people[i].day[x-1]=1;
z=1;
}
else
{
cout<<endl<<"输入错误!请重新输入:";
goto cin1;
}
people[i].max++;
cout<<"添加合适的休息时间(选择“0”退出):";
}while(1);
}
}
////////////////////////////////////////////////////////////////////////////////////
int CoutPeople(peopleclass *people,int d,abcde *No) //安排时间
{
for(int k=0;k<7;k++)
if((people[k].day[7-d]==1)&&(people[k].a==0))
{
people[k].a=1;
p1->b[7-d]=k;
if(d==1)
{
p2=p1;
p1=new abcde ;
p2->next=p1;
p1->next=NULL;
for(int j=0;j<7;j++)
{
p1->b[j]=p2->b[j];
}
}
int e=d-1;
CoutPeople(people,e,No);
people[k].a=0;
}
}
///////////////////////////////////////////////////////////////////////////////////////
int coutf(peopleclass *people,abcde *No) //输出函数
{
abcde *p1;
int i,j;
p1=No;
for(;p1->next!=NULL;p1=p1->next)
{
for(i=0;i<7;i++)
{
j=p1->b[i];
cout<<"星期"<<i+1<<"“ "<<people[j].name<<" ”"<<"休息";
}cout<<endl;
}
}
//////////////////////////////////////////////////////////////////////////////////////
//主函数
int main()
{
class peopleclass people[7];
int namber=7;
abcde *No=new abcde;
No->next=NULL;
p1=No;
CinName(people);
CinDay(people);
CoutPeople(people , namber , No);
coutf(people,No);
}
⑺ 排班考勤系统怎么设计
虽然从事考勤系统20年,早10年前就不做排班考勤了,自动抓班.
⑻ c语言程序课程设计保安值班安排系统怎么做
某公司有7名保安人员:赵、钱、孙、李、周、吴、陈。由于工作需要进行轮休制度,一星期中每人休息一天。预先让每一个人选择自己认为合适的休息日。请编制一程序,打印轮休的所有可能方案。当然使每个人都满意,例如每人选择的休息日如下:
赵:星期二、星期四
钱:星期一、星期六
孙:星期三、星期日
李:星期五
周:星期一、星期四、星期六
吴:星期二、星期五
陈:星期三、星期六、星期日
解法一:#include "stdafx.h"
#include <iostream>
using namespace std;
static char * day[] =
{
"星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"
};
int _tmain(int argc, _TCHAR* argv[])
{
int a, b, c, d, e, f, g, s;
d = 4;
f = 1;
s = 0;
for( a = 0; a < 7; a++ )
{
if( (a !=1 && a != 3) || a == d || a == f )
continue;
for( b = 0; b < 7; b++ )
{
if( (b != 0 && b != 5) || b == a || b == d || b == f )
continue;
for( c = 0; c < 7; c++ )
{
if( (c != 2 && c != 6) || c == b || c == a || c == d || c == f )
continue;
for( e = 0; e < 7; e++ )
{
if( (e != 0 && e != 3 && e != 5) || e == d || e == c || e == b || e == a || e == f)
continue;
for( g = 0; g < 7; g++ )
{
if( (g != 2 && g != 5 && g != 6) || g == f || g == e || g == d || g == c || g == b || g == a )
continue;
++s;
cout << "Solution: " << s << endl;
cout << "赵\t钱\t孙\t李\t周\t吴\t陈" << endl;
cout << "==============================================================" << endl;
cout << day[a] << "\t" << day[b] << "\t" << day[c] << "\t" << day[d] << "\t"
<< day[e] << "\t" << day[f] << "\t" << day[g] << endl << endl;
}
}
}
}
}
}
运行结果:
Solution: 1
赵 钱 孙 李 周 吴 陈
==============================================================
星期四 星期一 星期三 星期五 星期六 星期二 星期日
Solution: 2
赵 钱 孙 李 周 吴 陈
==============================================================
星期四 星期一 星期日 星期五 星期六 星期二 星期三
Solution: 3
赵 钱 孙 李 周 吴 陈
==============================================================
星期四 星期六 星期三 星期五 星期一 星期二 星期日
Solution: 4
赵 钱 孙 李 周 吴 陈
==============================================================
星期四 星期六 星期日 星期五 星期一 星期二 星期三
解法二:#include<stdio.h>
char *WEEK[7] = {" 7.", " 1.", " 2.", " 3.", " 4.", " 5.", " 6."};
int IsChecked(int p[])
{
int i, j;
for (i=0; i<7; ++i)
{
for (j=0; j<7&&p[j]!=i; ++j); //*从0到6循环,如果数组中缺少0-6的任何一位数字,则返回0,如果0-6亿权,则返回。*//
if (j == 7) return 0;
}
return 1; //*这个函数的作用是确保0-6这7个数字均包含在该书组中*//
}
main()
{
int t=0, j, ren[7];
long i;
system("cls");
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("**********************************************");
printf("\n*zhao, qian, sun, li, zhou, wu, chen *\n");
printf("*--------------------------------------------*\n");
printf("");
for (i=0; i<2097152; ++i)
{
for (j=0; j<7; ++j)
{
ren[j]= (i>>(3*j))&7; //*通过这个循环,穷尽0-7在数组中所有的排列组合方式*//
}
if (!(ren[0]==2 || ren[0]==4))continue; //*如果赵保安不是休周二或周四,就不用循环了。*//
else if (!(ren[1]==1 || ren[1]==6))continue;//*如果钱保安不是休周一或周六,就不用循环了。*//
else if (!(ren[2]==3 || ren[2]==0))continue;//*如果孙保安不是休周三或周日,就不用循环了。*//
else if (!(ren[3]==5))continue; //*如果李保安不是休周五,就不用循环了。*//
else if (!(ren[4]==1 || ren[4]==4 || ren[4]==6))continue; //*如果周保安不是休周一或周四或周六,就不用循环了。*//
else if (!(ren[5]==2 || ren[5]==5))continue; //*如果吴保安不是休周二或周五,就不用循环了。*//
else if (!(ren[6]==3 || ren[6]==6 || ren[6]==0))continue;//*如果陈保安不是休周三或周六或周日,就不用循环了。*//
else if (!IsChecked(ren)) continue; //*至此,所有的保安可按他们的愿望休假,但是此时的方案可能有两个人同休一天的*//
//*情况发生,因此用这个函数排除,如果0-6这七个数字(一周七天)任何一个包含在数组中则此次匹配失败。*//
for (j=0; j<7; ++j){
printf(" %s ", WEEK[ren[j]]);
}printf(" *");
printf("\n"); //*输出成功匹配方案*//
++t; //*记录成功匹配个数*//
}
printf("*--------------------------------------------*");
printf("\n* %d zhong qing kuang! *", t); //*输出成功匹配方案个数*//
printf("\n**********************************************");
getch();
}
结果是
**********************************************
*zhao, qian, sun, li, zhou, wu, chen *
*--------------------------------------------*
4. 6. 3. 5. 1. 2. 7. *
4. 1. 3. 5. 6. 2. 7. *
4. 6. 7. 5. 1. 2. 3. *
4. 1. 7. 5. 6. 2. 3. *
*--------------------------------------------*
* 4 zhong qing kuang! *
⑼ 智能排班系统都有什么方案有哪些功能
功能有很多,如自动针对人员需求,日常工作时间进行排班,对偶尔出外勤也可编入排班,有效灵活的减少了人事人员的工作量,也避免了排班出现错误。在选择上我建议喔趣,功能齐全,手机电脑均可操作 灵活性也很强。
⑽ C语言实现排班系统。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
structPerson
{
intcnDay;
intday[7];//开的足够大,假设某个人可能7天都忙--.
charpName[10];
};
charname[7][10];//7个人,每人名字不超过10
Personp[7];//7个人的信息
boolisEmpty[7]={false};//标记7天已占用情况
voidsetTable(inti)
{
if(i==7)
{
printf("星期一星期二星期三星期四星期五星期六星期日 ");
for(intk=0;k<7;++k)
{
printf("%s",name[k]);
}
printf(" ");
return;
}
intk=0;
for(;k<p[i].cnDay;++k)
{
if(isEmpty[p[i].day[k]]==false)
{
isEmpty[p[i].day[k]]=true;
strcpy(name[p[i].day[k]],p[i].pName);
setTable(i+1);
isEmpty[p[i].day[k]]=false;
}
}
}
intmain()
{
intday;
intcount;
for(inti=0;i<7;++i)
{
printf("输入第%d个人的名字,然后依次输入每个人的繁忙日,输入0结束此人信息录入! ",i+1);
count=0;
scanf("%s",p[i].pName);
scanf("%d",&day);
while(day!=0)
{
p[i].day[count]=day-1;
++count;
scanf("%d",&day);
}
p[i].cnDay=count;
}
setTable(0);
return0;
}