保安值班安排.docx
- 文档编号:3978863
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:11
- 大小:21.35KB
保安值班安排.docx
《保安值班安排.docx》由会员分享,可在线阅读,更多相关《保安值班安排.docx(11页珍藏版)》请在冰豆网上搜索。
保安值班安排
课程设计报告
课程设计名称:
数据结构课程设计
课程设计题目:
保安值班安排
院(系):
专业:
班级:
学号:
姓名:
指导教师:
沈阳航空航天大学
课程设计任务书
课程设计名称
数据结构课程设计
专业
计算机科学与技术
学生姓名
闫鹏博
班级
94010105
学号
2009040101144
题目名称
保安值班安排系统
起止日期
2011
年
1
月
3
日起至
2011
年
1
月
14
日止
课设内容和要求:
内容:
某公司有7名保安人员:
赵、钱、孙、李、周、吴、陈。
由于工作需要进行轮休制度,一星期中每人休息一天。
预先让每一个人选择自己认为合适的休息日。
请编制一程序,打印轮休的所有可能方案。
每人选择的休息日如下:
赵:
星期二、星期四钱:
星期一、星期六
孙:
星期三、星期日李:
星期五
周:
星期一、星期四、星期六吴:
星期二、星期五
陈:
星期三、星期六、星期日
要求:
1.利用所学知识,设计相应的数据结构;
2.熟练运用开发环境;
3.完成软件的设计与编码;
4.熟练掌握基本的调试方法;
5.提交符合课程设计规范的报告。
参考资料:
[1]严蔚敏,吴伟民.数据结构(C语言版)[M].北京:
清华大学出版社,2006
[2]王晓东.算法设计与分析[M].北京:
清华大学出版社,2007
[3]徐宝文李志.C程序设计语言[M].北京:
机械工业出版社,2004
[4]ErichGamma,RichardHelm.设计模式(英文版)[M].北京:
机械工业出版社,2004
教研室审核意见:
教研室主任签字:
指导教师(签名)
年
月
日
学生(签名)
年
月
日
目录
1需求分析1
1.1问题描述1
1.2问题理解1
2系统设计2
2.1总体方案设计2
2.2数据结构设计2
2.3函数设计2
2.4关键流程3
2.4.1系统主流程3
2.4.2dfs函数流程5
3调试分析6
4测试及运行结果7
参考文献9
附录10
1需求分析
1.1问题描述
某公司有7名保安人员:
赵、钱、孙、李、周、吴、陈。
由于工作需要进行轮休制度,一星期中每人休息一天。
预先让每一个人选择自己认为合适的休息日。
请编制程序,打印轮休的所有可能方案。
每人选择的休息日如下:
赵:
星期二、星期四钱:
星期一、星期六
孙:
星期三、星期日李:
星期五
周:
星期一、星期四、星期六吴:
星期二、星期五
陈:
星期三、星期六、星期日
1.2问题理解
这是一道特别切合实际的问题,一共七个人换着值班,每个人都与自己的值班休息时间。
根据此问题编写程序输出所有的值班休息安排和统计共有几种可执行方案。
解决此题目可以用学过的数据结构知识构建解题算法,再将算法用学过的c语言编写,就可以解答此题。
2系统设计
2.1总体方案设计
一共七的人从周一到周末值班安排,每个人有自己的规定休息日期,解决此题目首先建立一个七行八列的矩正,在对矩阵表进行顺序读取,将得到得数存入另一个数组中。
这个过程可以通过递归算法实现。
可以用数据结构知识先写出算法最后用C语言编出程序。
2.2数据结构设计
求解该题需要用运数据结构中的数组这个知识,将人名放入一个数组中表示如:
constcharname[7][10]={"zhao","qian","sun","li","zhou","wu","chen"};再将七个人得休息安排放入一个二位数组中表示如intpeace[7][8]。
2.3函数设计
﹙1﹚本系统所设计的函数见表2.1。
表2.1函数列表
函数名
函数原型
函数功能
mian
intmian()
主函数,可实现对子函数dfs的调,建立数组peace[7][8],name[7],输入输出结果
dfs
voiddfs(intc)
此函数的作用是深度遍历查找数据,把找到的新数据放入数组week[7]中。
﹙2﹚本系统函数的调用关系见图2.1。
调用dfs
图2.1函数调用关系
2.4关键流程
2.4.1系统主流程
(1)主函数的简单描述:
输入每一个人的名字和休息工作情况,建立一个数组包含每个人的工作休息情况,调用深度查找函数,将查到的数据存入另一个数组中,最后输出合理的休息安排。
(2)主函数的流程图,本函数的具体流程见图2.2。
人名数组name[7],二维数组peace[7][8]存放一个人的休息,i,j,n用来标记循环。
开始
i=0,j=0
输入一个人的名字name[i]
输入name[i]的工作情况n
0为工作,1为请假
Y
n=0
peace[i][++peace[i][0]]=j
Y
N
j<7,j++
N
Y
i<7,i++
N
C=0
调用dfs()
c>=7
N
Y
结束
图2.2主函数的流程图
2.4.2dfs函数流程
(1)dfs函数的简单描述:
在数组peace[7][8]中深度查找元素。
(2)星期数组WEEK[7],人名数组name[7],二维数组peace[7][8]存放一个人的休息,i,c用来标记循环.
开始
C=0
Y
c>=7
N
i=0
week[peace[c][i]]=0
N
Y
输出星期i+1名字name[week[i]-1]
C++
week[peace[c][i]]=c+1;
i<=peace[c][0],i++
Y
Y
i<7,i++
N
N
结束
图2.3dfs函数的流程图
3调试分析
(1)问题1
●问题描述:
程序编译通过,调试结果不正确,出现多种错误可行方案。
●问题分析:
出现多种错误结果原因应可能是什么地方有判断错误。
●解决方法:
根据给定的条件,联系实际情况认真分析每一个细节。
(2)问题2
●问题描述:
只出现一种可行方案,没有别的结果。
●问题分析:
只出现一种结果错误可能是输出一中后存储结构没有清零。
●解决方法:
检查是否对存储结构进行清零或判断清零语句是否正确。
(3)问题3
●问题描述:
实验结果已经正确的的输出,但是结果输出在时不公正美观,无法清晰的看出。
●问题分析:
实验结果已经出来,说明算法语句没错误,问题可能出在输出结果语句没有控制好结果之间的结构。
●解决方法:
用学过的行控制语句和字符控制语句调节输出结果之间的结构。
4测试及运行结果
(1)peace[7][8]的具体的测试结果如图4.1所示。
功能:
检测数组中数据是否正确。
显示出数组中存储的数据:
21300000
20500000
22600000
14000000
30350000
21400000
32560000
图4.1peace[7][8]测试结果
(2)输入函数的具体的测试结果如图4.2所示。
功能:
检测输入函数输入方式。
输入保安赵数据为:
0101000
图4.2输入函数测试结果
(3)week[7]中元素的具体的测试结果如图4.3所示。
功能:
判断week[7]中是否存满元素。
一项正确结果:
qianwusunzhaolizhouchen
图4.3week[7]中元素测试结果
(4)试验最终结果
星期1qian
星期2wu
星期3sun
星期4zhao
星期5li
星期6zhou
星期7chen
星期1qian
星期2wu
星期3chen
星期4zhao
星期5li
星期6zhou
星期7sun
星期1zhou
星期2wu
星期3sun
星期4zhao
星期5li
星期6qian
星期7chen
星期1zhou
星期2wu
星期3chen
星期4zhao
星期5li
星期6qian
星期7sun
图4.4最终测试结果
参考文献
[1]严蔚敏,吴伟民.数据结构(C语言版)[M].北京:
清华大学出版社,2006。
[2]王晓东.算法设计与分析[M].北京:
清华大学出版社,2007。
[3]徐宝文李志.C程序设计语言[M].北京:
机械工业出版社,2004。
[4]ErichGamma,RichardHelm.设计模式(英文版)[M].北京:
机械工业出版社,2004。
附录
源程序清单#include"stdafx.h"
#include
#include
constcharname[7][10]={"zhao","qian","sun","li","zhou","wu","chen"};
intpeace[7][8]={0};
intweek[7]={0};
voiddfs(intc)
{inti;
if(c>=7)
{printf("\n");
for(i=0;i<7;i++)
printf("星期%d%s\n",i+1,name[week[i]-1]);
}
else
{for(i=1;i<=peace[c][0];i++)
{if(!
week[peace[c][i]])
{week[peace[c][i]]=c+1;
dfs(c+1);
week[peace[c][i]]=0;
}
}
}
}
intmain(intargc,char*argv[])
{
inti,j,n;
printf("请输入保安请假情况(0为工作,1为请假)");
for(i=0;i<7;i++)
{printf("%s",name[i]);
for(j=0;j<7;j++)
{scanf("%d",&n);
if(n)
peace[i][++peace[i][0]]=j;
}
}
dfs(0);
return0;
}
课程设计总结:
1.这是一道特别切合实际的问题,一共七个人换着值班,每个人都与自己的值班休息时间。
根据此问题编写程序输出所有的值班休息安排和统计共有几种可执行方案。
解决此题目可以用学过的数据结构知识构建解题算法,再将算法用学过的c语言编写,就可以解答此题。
2.此题目中用到的数据结构知识不多,只用到了所学过的数组知识,并且用到了循环得嵌套使用,这个知识点是借此体的关键,而且有一定的难度。
3.在调试程序的过程中会遇到各种各样的错误,遇到错误要认真分析出现错误的可能原因,一步一步慢慢细心的找错改正。
4.此题目是一道比较接近实际得问题,用云所学知识解决实际问题考察对实际问题的分析能力。
通过课程设计可以锻炼学生的解决实际问题和操作能力,同时将课本上的只是活化。
在做课程设计的过程中当学生遇到不会,不懂,没学过的知识时可以自己上网找资料,去图书馆找资料,或者是向明白的人请教,这也是一个学习的过程。
指导教师评语:
指导教师(签字):
年月日
课程设计成绩
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 保安 值班 安排
![提示](https://static.bdocx.com/images/bang_tan.gif)