设计题目: 保安值班安排系统。
专业班级: 应用数学1001班。
姓名: 朱旭学号:100705124
设计室号: 综合楼机房设计组号: 19
设计时间: 2010-6-28 批阅时间。
指导教师: 杜洪波成绩。
目录。目录 2
设计题目 3
概述 4需求分析 4
详细设计 5
小结 10题目要求:
对于该c语言程序的概述:
该程序设计思想是:
在满足每个人的休息需要前提条件下,使每天都有人值班。在主函数中穷举每一种情况,根据每个人不同的要求,再从中选出满足条件的情况,最后输出可行的方案并输出可行的方案个数。
程序设计过程概述:
先定义一个字符数组,用来存放一周的七天。再利用ischecked函数排除一天内有两个人同时工作的情况。然后针对每个人的要求依次给予选择。
使每个人都能满意。最后,利用for循环语句输出符合条件的结果。同时,在每一次输出符合条件的结果时都令t自加,从而可以累积求出符合条件的方案个数t。
需求分析:这是一道特别切合实际的问题,该程序可保安安排问题,使得七个人每人每天都有工作。并且考虑到每个人休息日不同进行合理的安排,从而使每个人都能在自己喜欢的休息日休息。
根据此问题编写程序输出所有的值班休息安排和统计共有集中可执行的方案。解决此题目可以用学过的数据结构知识构建解题算法,再将算法用学过的c语言编写,就可以解答此题。
保安值班安排系统)c程序详细设计如下:
1.流程图如下:否。否是。
否是。否是。
否是。否是。
否是。否是。
语言程序如下:
#include<>
char *week[7] =
int ischecked(const int person)
int i, j;
for (i=0; i<7; +i)
for (j=0; j<7&&person[j]!=i; +j);
if (j ==7) return 0;
return 1;
void main()
int t=0, j, person[7];
long i;
printf("zhao, qian, sun, li, zhou, wu, chen");输出值班保安七个人*//
for (i=0; i<879117; +i)//控制寻找方案的循环次数*//
for (j=0; j<7; +j)
person[j] =i>>(3*j)) 7; /通过这个循环,穷尽0-7在数组中所有的排列组合方式*//
if (!person[0]==2 ||person[0]==4))continue; /如果赵保安不是休周二或周四,就不用循环了。*/
else if (!person[1]==1 ||person[1]==6))continue; /如果钱保安不是休周一或周六,就不用循环了。*/
else if (!person[2]==3 ||person[2]==0))continue; /如果孙保安不是休周三或周日,就不用循环了。*/
else if (!person[3]==5))continue; /如果李保安不是休周五,就不用循环了。*/
else if (!person[4]==1 ||person[4]==4 ||person[4]==6))continue; /如果周保安不是休周一或周四或周六,就不用循环了。*/
else if (!person[5]==2 ||person[5]==5))continue; /如果吴保安不是休周二或周五,就不用循环了。*/
else if (!person[6]==3 ||person[6]==6 ||person[6]==0))continue; /如果陈保安不是休周三或周六或周日,就不用循环了。*/
else if (!ischecked(person)) continue; /至此,所有的保安可按他们的愿望休假,但此时的方案可能有两个人同休一天的情况发生,因此用这个函数排除,如果0-6这七个数字(一周七天)任何一个包含在数组中则此次匹配失败。*/
for (j=0; j<7; +j)
printf("%s ",week[person[j]])输出成功匹配方案*//
printf("");
+t; /记录成功匹配个数*//
printf("%d methods!", t); 输出成功匹配方案个数*//
3.运行结果如下:
zhao, qian, sun, li, zhou, wu, chen
thu. sat. wed. fri. mon. tue. sun.
thu. mon. wed. fri. sat. tue. sun.
thu. sat. sun. fri. mon. tue. wed.
thu. mon. sun. fri. sat. tue. wed.
4 methods!
小结:首先要谢谢老师在编写该程序中给予我的指导!
在编写该程序过程中,自己经常犯漏掉一些符号的问题,还发现自己一些基本知识还掌握的不牢固,而且对算法的掌握也不足够熟练。但是,在一次又一次的反复摸索修改中,终于完成了该程序的编写任务,结果显示该程序可以运行并能得到相应可行的结果。
我知道在程序设计和实际操作过程中难免会出现各种错误与困难,这就要求我们在编写程序的过程中要有足够的耐心,还要有寻找错误与纠正错误的能力。同时也让我知道了在编写程序中是要有缜密的思维和严谨的态度。
在本次编写程序过程中让我了解了自己在许多方面还存在欠缺,在个人知识储备和动脑思维方面需要多加努力!通过反复的逐句演示,让我了解了每个句子的重要性,以及它在该程序中的作用。在这样看起来很艰难的过程中我也体会到了c语言编程的乐趣和魅力!
使我受益匪浅!在接下来的时间里我会继续努力地学习c语言程序设计和相应的算法,力争让自己的编程能力有进一步的提高!
c语言课程设计报告 课程设计报告
周口师范学院。课程设计报告。院 系 计算机科学与技术学院 班级。学生姓名学号。设计题目 职工工资管理系统。完成日期 年月日 课程设计任务书。设计题目 工资管理系统 教研室主任指导教师 年月日。摘要11设计内容 任务及具体要求2 1.1设计内容2 1.2设计任务及具体要求2 2概要设计3 2.1该系统...
C语言课程设计报告
华中科技大学计算机科学与技术学院。题目 专业 班级 学号 姓名 成绩 指导教师 完成日期 2016年月日。目录。一 系统需求分析 1 二 总体设计 2 三 数据结构设计 3 四 详细设计 4 五 系统实现 5 六 运行测试与结果分析 6 七 总结 7 八 参考文献 8 九 指导教师评语 9 对所要解...
C语言课程设计报告
c语言。课程设计。商业销售管理系统。学号 121407210 姓名 宋军。班级 软件1202 指导老师 邹姝稚。成绩 2013年6月。一 任务描述。编写一个商品销售管理系统,是其能够拥有商品买卖和库存管理功能。在顾客选购时,需给出输入商品名称,或商品型号,或选择列表进而输入商品编号三种选择,在顾客选...