《保安值班安排系统》.docx
《《保安值班安排系统》.docx》由会员分享,可在线阅读,更多相关《《保安值班安排系统》.docx(14页珍藏版)》请在冰豆网上搜索。
《保安值班安排系统》
《保安值班安排系统》
程序设计基础课程设计报告
二OO八年7月1日
目录
1.课程设计目的1
2.课程设计题目描述和要求1
3.课程设计报告内容1
4.课程设计总结9
参考书目9
附页10
1.课程设计目的
1.进一步掌握C++编程能力.
2.学会调试一个较长程序的基本方法;
3.学会调试一个较长程序的基本方法;
4.掌握书写程序设计开发文档的能力.
2.课程设计题目描述和要求
2.1课程设计题目和要求
某公司有7名保安人员:
赵、钱、孙、李、周、
吴、陈.由于工作需要要进行轮休制度,一星期
中每人休息一天,预先让每一个人选择自己认
为合适的休息日.请编制一程序,打印轮休的所
有可能方案,当然使每一个人都满意.
2.2课程设计题目描述
预先让每人选择一周中自己认为合适的休息日,可以是一天也可以是几天,选择完毕后根据每人选择的休息日进行排列,最终的排列结果为每人休息一天要使每人都满意.其中只有当选择冲突时(例如有两名或多名保安只选择了一天且为同一天),没有可行的方案,其余均有可行方案.
3.课程设计报告内容
3.1功能结构图
3.2功能描述
本程序功能:
预先让每一个人选择自己认为合适的休息日,首先先由数组choise记录每人选择的休息日,随后由Judge判断是否有两人或多人选择了同一天,是返回0,否返回1。
程序将输出所有的方案及方案总数,若方案总数为零,使用者可输入A重新录入新的数据进行新一轮的方案打印或按任意键退出系统;若方案总数不为零,使用者可以输入B进行新一轮的方案打印也可以按任意键退出系统。
3.3源程序代码(见附页)
3.4程序执行结果分析:
执行结果
◆◆◆◆◆◆◆◆◆◆◆◆◆◆
欢迎进入保安值班安排系统
请按照提示进行操作
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
Sunday------0Monday------1Tuesday-----2
Wensday-----3Thursday----4Friday------5
Saturday----6
录入第1名保安的选择
将选择几天认为合适的休息日:
1
第1名保安选择的第1天为:
1
※※※※※※※※※※※※※※※※※※※※※※※※※※
Sunday------0Monday------1Tuesday-----2
Wensday-----3Thursday----4Friday------5
Saturday----6
录入第2名保安的选择
将选择几天认为合适的休息日:
1
第2名保安选择的第1天为:
1
※※※※※※※※※※※※※※※※※※※※※※※※※※
Sunday------0Monday------1Tuesday-----2
Wensday-----3Thursday----4Friday------5
Saturday----6
录入第3名保安的选择
将选择几天认为合适的休息日:
1
第3名保安选择的第1天为:
3
※※※※※※※※※※※※※※※※※※※※※※※※※※
Sunday------0Monday------1Tuesday-----2
Wensday-----3Thursday----4Friday------5
Saturday----6
录入第4名保安的选择
将选择几天认为合适的休息日:
1
第4名保安选择的第1天为:
4
※※※※※※※※※※※※※※※※※※※※※※※※※※
Sunday------0Monday------1Tuesday-----2
Wensday-----3Thursday----4Friday------5
Saturday----6
录入第5名保安的选择
将选择几天认为合适的休息日:
1
第5名保安选择的第1天为:
5
※※※※※※※※※※※※※※※※※※※※※※※※※※
Sunday------0Monday------1Tuesday-----2
Wensday-----3Thursday----4Friday------5
Saturday----6
录入第6名保安的选择
将选择几天认为合适的休息日:
1
第6名保安选择的第1天为:
6
※※※※※※※※※※※※※※※※※※※※※※※※※※
Sunday------0Monday------1Tuesday-----2
Wensday-----3Thursday----4Friday------5
Saturday----6
录入第7名保安的选择
将选择几天认为合适的休息日:
1
第7名保安选择的第1天为:
0
※※※※※※※※※※※※※※※※※※※※※※※※※※
赵钱孙李周吴陈
★★★★★★共有0种轮休方案★★★★★★
没有合适的方案,重新录入数据请输A,结束请按任意键
A
请输入数据
◆◆◆◆◆◆◆◆◆◆◆◆◆◆
欢迎进入保安值班安排系统
请按照提示进行操作
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
Sunday------0Monday------1Tuesday-----2
Wensday-----3Thursday----4Friday------5
Saturday----6
录入第1名保安的选择
将选择几天认为合适的休息日:
2
第1名保安选择的第1天为:
1
第1名保安选择的第2天为:
2
※※※※※※※※※※※※※※※※※※※※※※※※※※
Sunday------0Monday------1Tuesday-----2
Wensday-----3Thursday----4Friday------5
Saturday----6
录入第2名保安的选择
将选择几天认为合适的休息日:
3
第2名保安选择的第1天为:
3
第2名保安选择的第2天为:
4
第2名保安选择的第3天为:
5
※※※※※※※※※※※※※※※※※※※※※※※※※※
Sunday------0Monday------1Tuesday-----2
Wensday-----3Thursday----4Friday------5
Saturday----6
录入第3名保安的选择
将选择几天认为合适的休息日:
3
第3名保安选择的第1天为:
2
第3名保安选择的第2天为:
5
第3名保安选择的第3天为:
0
※※※※※※※※※※※※※※※※※※※※※※※※※※
Sunday------0Monday------1Tuesday-----2
Wensday-----3Thursday----4Friday------5
Saturday----6
录入第4名保安的选择
将选择几天认为合适的休息日:
3
第4名保安选择的第1天为:
4
第4名保安选择的第2天为:
5
第4名保安选择的第3天为:
6
※※※※※※※※※※※※※※※※※※※※※※※※※※
Sunday------0Monday------1Tuesday-----2
Wensday-----3Thursday----4Friday------5
Saturday----6
录入第5名保安的选择
将选择几天认为合适的休息日:
3
第5名保安选择的第1天为:
1
第5名保安选择的第2天为:
2
第5名保安选择的第3天为:
4
※※※※※※※※※※※※※※※※※※※※※※※※※※
Sunday------0Monday------1Tuesday-----2
Wensday-----3Thursday----4Friday------5
Saturday----6
录入第6名保安的选择
将选择几天认为合适的休息日:
2
第6名保安选择的第1天为:
1
第6名保安选择的第2天为:
3
※※※※※※※※※※※※※※※※※※※※※※※※※※
Sunday------0Monday------1Tuesday-----2
Wensday-----3Thursday----4Friday------5
Saturday----6
录入第7名保安的选择
将选择几天认为合适的休息日:
2
第7名保安选择的第1天为:
5
第7名保安选择的第2天为:
0
※※※※※※※※※※※※※※※※※※※※※※※※※※
赵钱孙李周吴陈
Tue.Wed.Fri.Sat.Thu.Mon.Sun.
————————————————————————————
Tue.Thu.Fri.Sat.Mon.Wed.Sun.
————————————————————————————
Mon.Thu.Fri.Sat.Tue.Wed.Sun.
————————————————————————————
Mon.Fri.Tue.Sat.Thu.Wed.Sun.
————————————————————————————
Tue.Wed.Sun.Sat.Thu.Mon.Fri.
————————————————————————————
Tue.Thu.Sun.Sat.Mon.Wed.Fri.
————————————————————————————
Mon.Thu.Sun.Sat.Tue.Wed.Fri.
————————————————————————————
★★★★★★共有7种轮休方案★★★★★★
继续请输B,结束请按任意键
f
结束
您已完成了方案制定,谢谢使用本系统
★★★★★★★★★★★★★★★★★
执行结果分析:
首次录入数据时,7名保安人员选择冲突,有0种方案,输入A重新录入数据有7种方案,选择按任意键退出系统.
4.课程设计总结
经过本次课程设计我深深的感受到一个大的程序与平时作业题的不同.一个系统最讲究的就是它的功能齐全且使用简单\方便\有效率.以前我们单纯的追求执行结果,并未注意到这些,而这些才是在实践中最重要的.
在此次课程设计过程中学会了分块调试程序.一个大的程序不可能在全部编译完成后全部一起调试,这样会引出许多不必要的错误,应将程序分块调试无错误后再整体进行调试.
通过这次课程设计使我巩固和复习了数组、循环、语句、地址传递、逻辑联结词等方面的知识,使我对这些知识有了一种新的认识,使我的思维能力有了一个升华.
参考书目:
[1]谭浩强,《C++程序设计》,北京,清华大学出版社,2006年.
[2]谭浩强,《C程序设计》,北京,清华大学出版社,2006年.
[3]
附页
源程序代码
#include
usingnamespacestd;
#include
intJudge(intw[])//判断是否有两人或多人选择了同一天,是返回0,否返回1
{inti,j;
for(i=0;i<7;++i){
for(j=0;j<7&&w[j]!
=i;++j);
if(j==7)return0;
}
return1;
}
voidmain()
{intl;charm,n;
for(l=0;;l++){
char*week[7]={"Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."};
intt=0,j,person[7],x;
longi;
int
choise[7][7]={{-1,-1,-1,-1,-1,-1,-1},{-1,-1,-1,-1,-1,-1,-1},{-1,-1,-1,-1,-1,-1,-1},
{-1,-1,-1,-1,-1,-1,-1},{-1,-1,-1,-1,-1,-1,-1},{-1,-1,-1,-1,-1,-1,-1},
{-1,-1,-1,-1,-1,-1,-1}};//记录每人选择的休息天日
cout<<"◆◆◆◆◆◆◆◆◆◆◆◆◆◆"<cout<<"欢迎进入保安值班安排系统"<cout<<"请按照提示进行操作"<cout<<"▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲"<cout<for(i=1;i<8;i++){
cout<<"Sunday------0"<<""<<"Monday------1"<<""<<"Tuesday-----2"<cout<<"Wensday-----3"<<""<<"Thursday----4"<<""<<"Friday------5"<cout<<"Saturday----6"<cout<<"录入第"<
cout<<"将选择几天认为合适的休息日:
";
cin>>x;//录入要选择几天认为合适的休息日
for(j=0;jcout<<"第"<
";
cin>>choise[i-1][j];//录入选择的休息日
}cout<<"※※※※※※※※※※※※※※※※※※※※※※※※※※"<}
cout<for(i=0;i<2097152;++i)//8的7次方,8条语句每条至少执行7次
{
for(j=0;j<7;++j)
{
person[j]=(i>>(3*j))&7;//使每一人选择的时间从0到6预制
}
if(!
(person[0]==choise[0][0]||person[0]==choise[0][1]||person[0]==choise[0][2]||
person[0]==choise[0][3]||person[0]==choise[0][4]||person[0]==choise[0][5]||
person[0]==choise[0][6]))continue;
else
if(!
(person[1]==choise[1][0]||person[1]==choise[1][1]||person[1]==choise[1][2]||
person[1]==choise[1][3]||person[1]==choise[1][4]||person[1]==choise[1][5]||
person[1]==choise[1][6]))continue;
else
if(!
(person[2]==choise[2][0]||person[2]==choise[2][1]||person[2]==choise[2][2]||
person[2]==choise[2][3]||person[2]==choise[2][4]||person[2]==choise[2][5]||
person[2]==choise[2][6]))continue;
else
if(!
(person[3]==choise[3][0]||person[3]==choise[3][1]||person[3]==choise[3][2]||
person[3]==choise[3][3]||person[3]==choise[3][4]||person[3]==choise[3][5]||
person[3]==choise[3][6]))continue;
else
if(!
(person[4]==choise[4][0]||person[4]==choise[4][1]||person[4]==choise[4][2]||
person[4]==choise[4][3]||person[4]==choise[4][4]||person[4]==choise[4][5]||
person[4]==choise[4][6]))continue;
else
if(!
(person[5]==choise[5][0]||person[5]==choise[5][1]||person[5]==choise[5][2]||
person[5]==choise[5][3]||person[5]==choise[5][4]||person[5]==choise[5][5]||
person[5]==choise[5][6]))continue;
else
if(!
(person[6]==choise[6][0]||person[6]==choise[6][1]||person[6]==choise[6][2]||
person[6]==choise[6][3]||person[6]==choise[6][4]||person[6]==choise[6][5]||
person[6]==choise[6][6]))continue;
elseif(!
Judge(person))continue;
for(j=0;j<7;++j){
cout<}cout<cout<++t;
}
cout<<"★★★★★★共有"<if(t==0)
{cout<<"没有合适的方案,重新录入数据请输A,结束请按任意键"<cin>>m;
if(m=='A')
{cout<<"请输入数据"<if(m!
='A')
{cout<<"结束"<else
{cout<<"继续请输B,结束请按任意键"<cin>>n;
if(n=='B')
cout<<"继续"<if(n!
='B')
{cout<<"结束"<break;}}
}cout<<"您已完成了方案制定,谢谢使用本系统";cout<cout<<"★★★★★★★★★★★★★★★★★"<cout<}