C语言编写保安值班安排系统.docx

上传人:b****7 文档编号:9402403 上传时间:2023-02-04 格式:DOCX 页数:15 大小:58.84KB
下载 相关 举报
C语言编写保安值班安排系统.docx_第1页
第1页 / 共15页
C语言编写保安值班安排系统.docx_第2页
第2页 / 共15页
C语言编写保安值班安排系统.docx_第3页
第3页 / 共15页
C语言编写保安值班安排系统.docx_第4页
第4页 / 共15页
C语言编写保安值班安排系统.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

C语言编写保安值班安排系统.docx

《C语言编写保安值班安排系统.docx》由会员分享,可在线阅读,更多相关《C语言编写保安值班安排系统.docx(15页珍藏版)》请在冰豆网上搜索。

C语言编写保安值班安排系统.docx

C语言编写保安值班安排系统

保安值班安排系统

题目:

某公司有7名保安人员:

赵、钱、孙、李、周、吴、陈。

由于工作需要需要进行轮休制度,一星期中每人休息一天。

预先让每个人选择自己认为合适的休息日。

请编制一程序,打印轮休的所有可能的方案。

当然是每个人都满意,例如每个人选择的休息日如下:

赵:

星期二、星期四

钱:

星期一、星期六

孙:

星期三、星期日

李:

星期五

周:

星期一、星期四、星期六

吴:

星期二、星期五

陈:

星期三、星期六、星期日

要求:

(1)信息录入功能(值班信息用文件保存)——输入

(2)值班信息浏览功能——输出

(3)调换班功能

(4)根据值班时间及次数计算薪酬

运行结果

执行voidmain()/*主函数*/

voidwage();/*工资登录函数*/

代码:

#include

#include

#include

usingnamespacestd;

voidmanager();/*管理员登录函数声明*/

voidsecurity();/*保安登录函数声明*/

voidwage();/*工资登录函数声明*/

voidfile_edit(ofstream&fout,charfile_name[]);//文件生成函数声明

intcompare_values(inta,intb,intc,intd,inte,intf,intg);//判断七个变量是否两两相等的函数声明

intexchange(charcha);//字符转换为整型的函数声明

voidload();

voidmain()/*主函数*/

{

chark;

cout<<"***************************************"<

cout<<"欢迎使用保安值班安排系统!

"<

cout<<"制作人:

xx时间:

2011-12-15"<

cout<<"***************************************"<

cout<<"请选择您所需要的服务"<

cout<<"p:

管理员\ns:

保安\ng:

工资\ne:

退出\n"<

cin>>k;

switch(k)

{

case'p':

cout<<"这是一个员工休息时间安排的程序。

\n"<

manager();

break;

case's':

cout<<"请查看所有排班情况:

\n"<

security();

break;

case'g':

cout<<"以工作天数计算工资:

\n"<

wage();

break;

case'e':

exit(0);

default:

cout<<"输入信息错误!

\n请输入字母p或s或e或g.\n"<

}

}

voidmanager()/*管理员登录函数*/

{

charfile_name[30];

ofstreamfout;

//intchoose;

file_edit(fout,file_name);//调用文件生成函数

/*cout<<"1:

选择自己的休息日"<

cout<<"2:

显示排班的结果"<

cout<<"请选择:

";

cin>>choose;

switch(choose)

{

case1:

*/

load();

system("cls");

system("date/t");

system("time/t");

system("colorfc");

loop:

inta[7][7]={0},i,j;

stringselect[7];

stringname[]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};

for(j=0;j<7;j++)//进行数据输入

{

switch(j)

{

case0:

cout<<"赵";break;

case1:

cout<<"钱";break;

case2:

cout<<"孙";break;

case3:

cout<<"李";break;

case4:

cout<<"周";break;

case5:

cout<<"吴";break;

case6:

cout<<"陈";break;

}

cout<<"选择的休息日(0为周日,1~6为周一到周六):

";

cin>>select[j];

}

for(i=0;i<7;i++)//对特定元素赋值为1

for(j=0;j

{a[i][exchange(select[i][j])]=1;}//调用转换函数,将字符型数据转化为整型

intb[7][7];

intm[7]={0,0,0,0,0,0,0};

for(i=0;i<7;i++)//将输入数据传给二维数组b[7][7]

for(j=0;j<7;j++)

{if(a[i][j]==1)

{b[i][m[i]]=j;m[i]=m[i]+1;}//用m[i]记录b[i]中有用数据个数

}

cout<<"\n\t\t"<<"经分析结果为:

\n";

intx1,x2,x3,x4,x5,x6,x7;

intcount=0;//定义计数变量

for(x1=0;x1

for(x2=0;x2

for(x3=0;x3

for(x4=0;x4

for(x5=0;x5

for(x6=0;x6

for(x7=0;x7

{

if(!

(compare_values(b[0][x1],b[1][x2],b[2][x3],b[3][x4],b[4][x5],b[5][x6],b[6][x7])))//调用判断七个变量是否两两相等的函数

{

count++;

cout<<"Solution:

"<

\n"//输出结果到屏幕

<<"赵"<<"\t"<<"钱"<<"\t"<<"孙"<<"\t"<<"李"

<<"\t"<<"周"<<"\t"<<"吴"<<"\t"<<"陈"<

cout<<"=============================================================="<

cout<

<<"\t"<

fout<<"Solution:

"<

\n"//输出结果到文件中保存

<<"赵"<<"\t"<<"钱"<<"\t"<<"孙"<<"\t"<<"李"

<<"\t"<<"周"<<"\t"<<"吴"<<"\t"<<"陈"<

fout<

<<"\t"<

}

}

if(count==0)//判断是否重新开始

{

cout<<"此方案行不通,请重新输入。

"<

gotoloop;

}

else

cout<<"经分析总共有"<

}

intexchange(charcha)//字符转换为整型的函数定义

{

charq[2];

q[0]=cha;

returnatoi(q);//字符转换为整型

}

intcompare_values(inta,intb,intc,intd,inte,intf,intg)//判断七个变量是否两两相等的函数定义

{

if(a==b||a==c||a==d||a==e||a==f||a==g||b==c||b==d||b==e||b==f||b==g||c==d

||c==e||c==f||c==g||d==e||d==f||d==g||e==f||e==g||f==g)//判断变量是否两两相等

return1;

else

return0;

}

voidfile_edit(ofstream&fout,charfile_name[])//文件生成函数定义

{

cout<<"请输入数据存储的文件名:

";

cin>>file_name;

fout.open(file_name,ios:

:

app);

if(fout.fail())//判断是否能打开文件

{

cout<<"打开文件失败。

"<

exit

(1);

}

fout<

<

}

voidload()

{

system("cls");

system("date/t");

system("time/t");

system("color1f");

cout<<"\n\n\n";

cout<<"\n\n\n\n\t\t\t\t系统加载中...";

cout<<"\n\n\n\n\t";

for(inti0=0;i0<10000000;i0++)

if(i0%1000000==0)

{

for(intj0=0;j0<10000000;j0++)

{

if(j0%10000000==0)

cout<<"";

}

}

system("color1f");

cout<<"系统";

for(inti1=0;i1<10000000;i1++)

if(i1%1000000==0)

{

for(intj1=0;j1<10000000;j1++)

{

if(j1%10000000==0)

cout<<">";

}

}

system("color2f");

cout<<"加载";

for(inti2=0;i2<10000000;i2++)

if(i2%1000000==0)

{

for(intj2=0;j2<10000000;j2++)

{

if(j2%10000000==0)

cout<<">";

}

}

system("color3f");

cout<<"成功...";

for(inti3=0;i3<10000000;i3++)

if(i3%1000000==0)

{

for(intj3=0;j3<10000000;j3++)

{

if(j3%8000000==0)

cout<<"";

}

}

}

boolIsChecked(intp[])

{

inti,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)returnfalse;

}

returntrue;//*这个函数的作用是确保0-6这7个数字均包含在该书组中*//

}

voidwage()/*工资登录函数*/

{

floatt,wage,zw,day;

inti,j;

for(j=0;j<7;j++)//进行数据输入

{

switch(j)

{

case0:

cout<<"赵";break;

case1:

cout<<"钱";break;

case2:

cout<<"孙";break;

case3:

cout<<"李";break;

case4:

cout<<"周";break;

case5:

cout<<"吴";break;

case6:

cout<<"陈";break;

}

cout<<"请输入值班时间,天数和每小时工资数:

"<

cin>>t>>day>>wage;

zw=t*wage*day;

cout<<"应发工资"<

}

}

voidsecurity()/*保安登录函数*/

{

char*WEEK[7]={"日","一","二","三","四","五","六"};

intj,s=0;

int*ren=newint[7];

int*rest=newint[7];

longi;

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;//*如果赵保安不是休周二或周四,就不用循环了。

*//

elseif(!

(ren[1]==1||ren[1]==6))continue;//*如果钱保安不是休周一或周六,就不用循环了。

*//

elseif(!

(ren[2]==3||ren[2]==0))continue;//*如果孙保安不是休周三或周日,就不用循环了。

*//

elseif(!

(ren[3]==5))continue;//*如果李保安不是休周五,就不用循环了。

*//

elseif(!

(ren[4]==1||ren[4]==4||ren[4]==6))continue;//*如果周保安不是休周一或周四或周六,就不用循环了。

*//

elseif(!

(ren[5]==2||ren[5]==5))continue;//*如果吴保安不是休周二或周五,就不用循环了。

*//

elseif(!

(ren[6]==3||ren[6]==6||ren[6]==0))continue;//*如果陈保安不是休周三或周六或周日,就不用循环了。

*//

elseif(!

IsChecked(ren))continue;//*至此,所有的保安可按他们的愿望休假,但是此时的方案可能有两个人同休一天的*//

//*情况发生,因此用这个函数排除,如果0-6这七个数字(一周七天)任何一个包含在数组中则此次匹配失败。

*//

++s;

cout<<"solution:

"<

cout<<"赵\t钱\t孙\t李\t周\t吴\t陈\n";

cout<<"==================================================================\n";

for(j=0;j<7;++j){

cout<<"星期"<

}

cout<

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1