當前位置:首頁 » 編程語言 » 輪休安排c語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

輪休安排c語言

發布時間: 2023-03-17 11:50:59

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]='';
//定義每個人的名
s[0].a[0]="趙";
s[1].a[1]="錢";
s[2].a[2]="孫";
s[3].a[3]="李";
s[4].a[4]="周";
s[5].a[5]="吳";
s[6].a[6]="陳";

printf("請輸入每個人的輪休選擇: ");
for(i=0;i<7;i++)//寫一個循環,依次輸入理想的休息時間
{
printf("%s: ",s[i].a[i]);
for(j=0;j<7;j++)
{
s[i].c=j;
printf("請輸入:");
scanf("%s",s[i].b[j]);
printf("%s還有其他的理想的休息日期嗎?輸入N來完成此輸入 >",s[i].a[i]);
fflush(stdin);
k=getchar();//獲取鍵入的值
if(k=='N'||k=='n')
break;//跳出
fflush(stdin);//清空緩沖區(清屏)
}//...跳到了這
system("cls");//清屏
}
system("cls");//清屏
printf("開始判斷! ");
panan(s);//判斷!
return0;
}
voidpanan(structst*s)
{
inti,j,k,l,m,n,z;//循環用數!
//嵌套循環,尋找可能的解決方案
for(i=0;i<=s[0].c;i++)
{
for(j=0;j<=s[1].c;j++)
{

if(strcmp(s[1].b[j],s[0].b[i])==0)
//strcmp比較兩個字元串
//設這兩個字元串為str1,str2,
//若str1==str2,則返回零;
//若str1>str2,則返回正數;
//若str1<str2,則返回負數。
{
continue;
}
//如果無相同的,就繼續執行
for(k=0;k<=s[2].c;k++)
{
if(strcmp(s[2].b[k],s[1].b[j])==0)
continue;
if(strcmp(s[2].b[k],s[0].b[i])==0)
continue;
//同理,繼續執行
for(l=0;l<=s[3].c;l++)
{
if(strcmp(s[3].b[l],s[0].b[i])==0)
continue;
if(strcmp(s[3].b[l],s[1].b[j])==0)
continue;
if(strcmp(s[3].b[l],s[2].b[k])==0)
continue;
//循環套起來真的是很燒腦
for(m=0;m<=s[4].c;m++)
{
if(strcmp(s[4].b[m],s[0].b[i])==0)
continue;
if(strcmp(s[4].b[m],s[1].b[j])==0)
continue;
if(strcmp(s[4].b[m],s[2].b[k])==0)
continue;
if(strcmp(s[4].b[m],s[3].b[l])==0)
continue;
//同理,繼續執行
for(n=0;n<=s[5].c;n++)
{
if(strcmp(s[5].b[n],s[0].b[i])==0)
continue;
if(strcmp(s[5].b[n],s[1].b[j])==0)
continue;
if(strcmp(s[5].b[n],s[2].b[k])==0)
continue;
if(strcmp(s[5].b[n],s[3].b[l])==0)
continue;
if(strcmp(s[5].b[n],s[4].b[m])==0)
continue;
//我猜你也想到了!寫完上面的一部分可以粘到下面來嘛!
for(z=0;z<=s[6].c;z++)//最後一層判斷。
{
if(strcmp(s[6].b[z],s[0].b[i])==0)
continue;
if(strcmp(s[6].b[z],s[1].b[j])==0)
continue;
if(strcmp(s[6].b[z],s[2].b[k])==0)
continue;
if(strcmp(s[6].b[z],s[3].b[l])==0)
continue;
if(strcmp(s[6].b[z],s[4].b[m])==0)
continue;
if(strcmp(s[6].b[z],s[5].b[n])==0)
continue;
//輸出結果!!
printf("%-4s,%-4s,%-4s,%-4s,%-4s,%-4s,%-4s ",s[0].a[0],s[1].a[1],s[2].a[2],s[3].a[3],s[4].a[4],s[5].a[5],s[6].a[6]);
printf("============================================================= ");
printf("%s,%s,%s,%s,%s,%s,%s ",s[0].b[i],s[1].b[j],s[2].b[k],s[3].b[l],s[4].b[m],s[5].b[n],s[6].b[z]);
//千萬千萬千萬不要漏了括弧!!
//不然死不瞑目!╭( ̄m ̄*)╮
}//for(z=0;z<=s[6].c;z++)
}//for(n=0;n<=s[5].c;n++)
}//for(m=0;m<=s[4].c;m++)
}//for(l=0;l<=s[3].c;l++)
}//for(k=0;k<=s[2].c;k++)
}//for(j=0;j<=s[1].c;j++)
}//for(i=0;i<=s[0].c;i++)

}//voidpanan(structst*s)

㈣ 請問c語言vc6.0保安輪休問題應該怎麼編程

方法/步驟
首先我們先去網上找到這個軟體的安裝包,然後安裝到自己電腦上,在安裝的過程中,W7系統可能會說軟體與系統不兼容,這個沒事的,繼續安裝就是

安裝好後雙擊這個軟體在桌面上的圖標,打開軟體後,我們需要建立c語言編寫文件,點擊文件新建一個C++source file,然後開始編寫程序!

編寫程序的過程中,要理清思路,先把頭文件寫上,該注釋的地方還是要注釋,這樣以後看程序的時候不至於不懂!

把程序寫好後,一定要保存,其實我們在寫程序的時候就應該寫一句保存一次,這是因為這個軟體有時候運行不穩定!萬一出現程序閃退,我們寫的程序就沒有了,這讓人很抓狂的!

保存好程序後,我們可以開始編譯執行鏈接程序了,如果一切無誤的話,會生成一個exe文件,我們就可以實現編寫的功能了,如果程序報錯,那麼我們需要找到錯誤的地方進行改正!

說了這么多,是時候自己動手驗證了,這個軟體使用起來很方便,功能也很強大,多練習幾次就一定會使用的!