㈠ 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;
}
㈡ 幫我設計一個關於員工排班的C語言程序
給你個c++版本做參考:
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
int main(int argc,char *argv[])
{
std::vector<int> arr[7];
std::vector<std::vector<int>> resolution;
for(int i=0;i!=7;++i)
{
int temp;
std::cout<<"please input number "<<i+1
<<" person's all rest days he wanted(1-7):\n";
while(std::cin.peek()!='\n')
{
std::cin>>temp;
arr[i].push_back(temp);
}
::getchar();
}
int arr1[]={1,2,3,4,5,6,7};
do
{
for(int i=0;i!=7;++i)
{
std::vector<int>::iterator iter=
std::find(arr[i].begin(),arr[i].end(),arr1[i]);
if(iter==arr[i].end())
{
break;
}
if(i==6)
{
std::vector<int> temp(arr1,arr1+7);
resolution.push_back(temp);
}
}
}while(std::next_permutation(arr1,arr1+7));
size_t cnt=resolution.size();
std::cout<<"可用的方案如下,按職員A-G的休息日排列:\n";
for(int i=0;i!=cnt;++i)
{
size_t temp=resolution[i].size();
std::cout<<"方案 "<<i+1<<":\n";
for(int j=0;j!=temp;++j)
std::cout<<resolution[i][j]<<" ";
std::cout<<"\n";
}
::system("pause");
return 0;
}
㈢ c語言編程,實驗樓值班排班系統。
代碼來自編程論壇http://bbs.bccn.net/thread-329752-1-1.html
structst
{
char*a[7];
charb[7][8];
intc;
};
voidpanan(structst*s);//函數聲明
intmain(void)
{
structsts[7];
inti=0;
intj=0;
chark;
for(i=0;i<7;i++)
for(j;j<7;j++)
s[i].b[j][0]='