1、保安值班安排系统保安值班安排系统程序设计基础课程设计报告二OO八年7月1日目录1.课程设计目的 12.课程设计题目描述和要求 13.课程设计报告内容 14.课程设计总结 9参考书目 9附页 101.课程设计目的 1.进一步掌握C+编程能力.2.学会调试一个较长程序的基本方法;3.学会调试一个较长程序的基本方法;4.掌握书写程序设计开发文档的能力.2.课程设计题目描述和要求2.1课程设计题目和要求某公司有7名保安人员:赵、钱、孙、李、周、吴、陈.由于工作需要要进行轮休制度,一星期中每人休息一天,预先让每一个人选择自己认为合适的休息日. 请编制一程序,打印轮休的所有可能方案, 当然使每一个人都满意
2、.2.2课程设计题目描述预先让每人选择一周中自己认为合适的休息日,可以是一天也可以是几天,选择完毕后根据每人选择的休息日进行排列,最终的排列结果为每人休息一天要使每人都满意.其中只有当选择冲突时(例如有两名或多名保安只选择了一天且为同一天),没有可行的方案,其余均有可行方案.3.课程设计报告内容3.1功能结构图3.2功能描述本程序功能:预先让每一个人选择自己认为合适的休息日,首先先由数组choise记录每人选择的休息日,随后由Judge判断是否有两人或多人选择了同一天,是返回0,否返回1。程序将输出所有的方案及方案总数,若方案总数为零,使用者可输入A重新录入新的数据进行新一轮的方案打印或按任意
3、键退出系统;若方案总数不为零,使用者可以输入B进行新一轮的方案打印也可以按任意键退出系统。3.3源程序代码(见附页)3.4程序执行结果分析:执行结果 欢迎进入保安值班安排系统 请按照提示进行操作Sunday-0 Monday-1 Tuesday-2Wensday-3 Thursday-4 Friday-5Saturday-6录入第1名保安的选择 将选择几天认为合适的休息日:1 第1名保安选择的第1天为:1Sunday-0 Monday-1 Tuesday-2Wensday-3 Thursday-4 Friday-5Saturday-6录入第2名保安的选择 将选择几天认为合适的休息日:1 第2名
4、保安选择的第1天为:1Sunday-0 Monday-1 Tuesday-2Wensday-3 Thursday-4 Friday-5Saturday-6录入第3名保安的选择 将选择几天认为合适的休息日:1 第3名保安选择的第1天为:3Sunday-0 Monday-1 Tuesday-2Wensday-3 Thursday-4 Friday-5Saturday-6录入第4名保安的选择 将选择几天认为合适的休息日:1 第4名保安选择的第1天为:4Sunday-0 Monday-1 Tuesday-2Wensday-3 Thursday-4 Friday-5Saturday-6录入第5名保安的选
5、择 将选择几天认为合适的休息日:1 第5名保安选择的第1天为:5Sunday-0 Monday-1 Tuesday-2Wensday-3 Thursday-4 Friday-5Saturday-6录入第6名保安的选择 将选择几天认为合适的休息日:1 第6名保安选择的第1天为:6Sunday-0 Monday-1 Tuesday-2Wensday-3 Thursday-4 Friday-5Saturday-6录入第7名保安的选择 将选择几天认为合适的休息日:1 第7名保安选择的第1天为:0 赵 钱 孙 李 周 吴 陈 共有0种轮休方案没有合适的方案,重新录入数据请输A,结束请按任意键A请输入数据
6、 欢迎进入保安值班安排系统 请按照提示进行操作Sunday-0 Monday-1 Tuesday-2Wensday-3 Thursday-4 Friday-5Saturday-6录入第1名保安的选择 将选择几天认为合适的休息日:2 第1名保安选择的第1天为:1 第1名保安选择的第2天为:2Sunday-0 Monday-1 Tuesday-2Wensday-3 Thursday-4 Friday-5Saturday-6录入第2名保安的选择 将选择几天认为合适的休息日:3 第2名保安选择的第1天为:3 第2名保安选择的第2天为:4 第2名保安选择的第3天为:5Sunday-0 Monday-1
7、Tuesday-2Wensday-3 Thursday-4 Friday-5Saturday-6录入第3名保安的选择 将选择几天认为合适的休息日:3 第3名保安选择的第1天为:2 第3名保安选择的第2天为:5 第3名保安选择的第3天为:0Sunday-0 Monday-1 Tuesday-2Wensday-3 Thursday-4 Friday-5Saturday-6录入第4名保安的选择 将选择几天认为合适的休息日:3 第4名保安选择的第1天为:4 第4名保安选择的第2天为:5 第4名保安选择的第3天为:6Sunday-0 Monday-1 Tuesday-2Wensday-3 Thursda
8、y-4 Friday-5Saturday-6录入第5名保安的选择 将选择几天认为合适的休息日:3 第5名保安选择的第1天为:1 第5名保安选择的第2天为:2 第5名保安选择的第3天为:4Sunday-0 Monday-1 Tuesday-2Wensday-3 Thursday-4 Friday-5Saturday-6录入第6名保安的选择 将选择几天认为合适的休息日:2 第6名保安选择的第1天为:1 第6名保安选择的第2天为:3Sunday-0 Monday-1 Tuesday-2Wensday-3 Thursday-4 Friday-5Saturday-6录入第7名保安的选择 将选择几天认为合
9、适的休息日: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
10、种轮休方案继续请输B,结束请按任意键f 结束您已完成了方案制定,谢谢使用本系统执行结果分析:首次录入数据时,7名保安人员选择冲突,有0种方案,输入A重新录入数据有7种方案,选择按任意键退出系统.4. 课程设计总结经过本次课程设计我深深的感受到一个大的程序与平时作业题的不同.一个系统最讲究的就是它的功能齐全且使用简单方便有效率.以前我们单纯的追求执行结果,并未注意到这些,而这些才是在实践中最重要的.在此次课程设计过程中学会了分块调试程序.一个大的程序不可能在全部编译完成后全部一起调试,这样会引出许多不必要的错误,应将程序分块调试无错误后再整体进行调试.通过这次课程设计使我巩固和复习了数组、循环、
11、语句、地址传递、逻辑联结词等方面的知识,使我对这些知识有了一种新的认识,使我的思维能力有了一个升华.参考书目:1 谭浩强,C+程序设计,北京,清华大学出版社,2006年.2 谭浩强,C程序设计,北京,清华大学出版社,2006年.3 附页源程序代码 #includeusing namespace std;#includeint Judge(int w) /判断是否有两人或多人选择了同一天,是返回0,否返回1 int i, j; for (i=0; i7; +i) for (j=0; j7&wj!=i; +j); if (j = 7) return 0; return 1; void main()
12、 int l;char m,n;for(l=0;l+) char*week7=Sun. ,Mon. ,Tue. ,Wed. ,Thu. ,Fri. ,Sat. ; int t=0, j, person7,x; long i;int choise77=-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 endl;cout
13、 欢迎进入保安值班安排系统endl;cout 请按照提示进行操作endl;coutendl;coutendl;for(i=1;i8;i+) coutSunday-0 Monday-1 Tuesday-2endl; coutWensday-3 Thursday-4 Friday-5endl; coutSaturday-6endl;coutendl; cout录入第i名保安的选择endl; coutx; /录入要选择几天认为合适的休息日 for(j=0;jx;j+) cout 第i名保安选择的第j+1choisei-1j; /录入选择的休息日 coutendl;coutendl;coutsetw(
14、6)赵setw(8)钱setw(8)孙setw(8)李setw(8)周setw(8)吴setw(8)陈endl; for (i=0; i2097152; +i) /8的7次方,8条语句每条至少执行7次 for (j=0; j(3*j) & 7; /使每一人选择的时间从0到6预制 if(!(person0=choise00|person0=choise01|person0=choise02| person0=choise03|person0=choise04|person0=choise05| person0=choise06) continue; elseif(!(person1=choise
15、10|person1=choise11|person1=choise12| person1=choise13|person1=choise14|person1=choise15| person1=choise16) continue; elseif(!(person2=choise20|person2=choise21|person2=choise22| person2=choise23|person2=choise24|person2=choise25| person2=choise26) continue; elseif(!(person3=choise30|person3=choise3
16、1|person3=choise32| person3=choise33|person3=choise34|person3=choise35| person3=choise36) continue; elseif(!(person4=choise40|person4=choise41|person4=choise42| person4=choise43|person4=choise44|person4=choise45| person4=choise46) continue; elseif(!(person5=choise50|person5=choise51|person5=choise52
17、| person5=choise53|person5=choise54|person5=choise55| person5=choise56) continue; elseif(!(person6=choise60|person6=choise61|person6=choise62| person6=choise63|person6=choise64|person6=choise65| person6=choise66) continue; else if (!Judge(person) continue;for (j=0; j7; +j) coutsetw(8)weekpersonj; coutendl; coutendl;coutendl; +t; cout 共有t种轮休方案endl; if(t=0)cout没有合适的方案,重新录入数据请输A,结束请按任意键m;if(m=A)cout请输入数据endl;if(m!=A)cout 结束endl;break;else cout继续请输B,结束请按任意键n;if(n=B)cout 继续endl;if(n!=B)cout 结束endl;break;cout您已完成了方案制定,谢谢使用本系统;coutendl;coutendl;coutendl;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1