保安排班系统.docx
- 文档编号:7822855
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:15
- 大小:294.32KB
保安排班系统.docx
《保安排班系统.docx》由会员分享,可在线阅读,更多相关《保安排班系统.docx(15页珍藏版)》请在冰豆网上搜索。
保安排班系统
保安值班安排系统
第一章课程设计的目的和要求
1.1课程设计的目的
C语言课程设计的主要目的是培养我们综合运用C语言程序设计课程所学到的知识,做相应的自主练习,消化课堂所讲解的内容,通过编写C程序,积累调试C程序的经验,完成所要求的题目,逐渐培养编程能力,解决实际问题的能力,以及严谨的工作态度和良好的程序设计习惯。
1.进一步掌握和利用C语言进行程序设计的能力。
2.进一步培养我们结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。
3.针对C语言中的重点和难点内容进行训练,独立完成有一定工作量的课程设计任务,同时强调好课程设计风格。
4.掌握C语言的编程技巧和上机调试程序的方法。
5.掌握程序设计的常用算法。
6.掌握书写程序开发文档的能力。
通过课程设计的训练,我们应该能够了解程序设计的基本开发过程,掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计的基本方法。
另外,C语言本身的复杂性也是其比较难学的原因之一。
C不仅可以用来开发应用程序,更可用来设计系统程序。
比起其他语言,C增加的许多特点就是为了设计高质量的系统软件。
显然,这些特点也增加了学习C的难度。
因此,在程序设计的时候必须树立以下观念:
学习思考的方法比学习语言更重要,琢磨程序设计的思维模式比琢磨C语言的知识更重要,培养自己的思考能力比记忆语言知识更重要。
C语言程序设计的主要任务是要求我们遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,分析、设计、编写、调试和测试C语言程序及编写设计报告。
1.2课程设计的要求
课程设计的选题必须围绕本课程内容,确定一个或几个难度、份量适当的具体的工程实际项目,以便较系统地训练学生综合运用本课程所学知识解决工程实际问题的能力。
课程设计题目都应给出原始数据。
课程设计题目需要完成的工作量。
课程设计的工作量包括:
设计计算(包括程序控制),绘图设计说明书。
学生在课程设计中初次运用本课程内容进行综合计算及设计,课程设计指导书要比较详细地指导学生进行规范化计算与设计步骤及有关要求,并附有完成各部分工作量所需时间及评分标准,以及检查学生设计进度及每一步应达到的基本要求。
课程设计的参考资料除本课程所用教材外,还应准备相应的工程设计规范、设计手册,国家标准及其他资料。
一方面为学生提供必要的设计资料,另一方面培养学生查阅、使用资料的能力。
课程设计任务书及指导书每个学生一份,并于课程设计之前发给学生。
学生综合解决问题的能力将反映在设计的程序和编写的课程设计报告中,因此本课程设计的考核内容应该由以下两部分组成。
(1)编写的C语言程序
●针对编写的C程序,应该主要考查下列内容:
●是否符合题目要求,是否完成了主要功能;
●是否存在语法错误、逻辑错误及运行错误;
●程序设计是否合理;
●程序是否具有良好的可读性和可靠性;
●是否符合结构化程序设计所倡导的基本理念;
(2)课程设计报告
●针对提交的课程设计报告,应该主要考查下列内容:
●程序设计的报告内容是否全面,观点是否正确;
●设计过程是否符合结构化程序设计方法的基本原则;
●层次是否清楚,语言是否通顺;
●各种图表是否规范;是否具有良好的程序设计习惯。
第二章课程设计任务内容
程序实现的功能是对7个员工实现排班,7个员工每个员工有一天的休假日,但是这一天的休假日可由员工自行选择,选择他们想要休假的时间,可由多个选择,也可只有一个选择,7个员工依次输入完毕后,程序会输出满足7个员工的多种排班方式。
对于7个人选择有冲突的,输出相应的提示。
具体题目:
学校实验楼有7名保安人员:
赵,钱,孙,李,周,吴,陈。
由于工作需求要进行轮休制度,一星期中每人休息一天。
预先让每一个人选择自己认为合适的休息日。
输出轮休的所有可能方案。
当然使每个人都满意。
例如每人选择的休息日如下:
赵:
星期二,星期四
钱:
星期一,星期六
孙:
星期三,星期日
李:
星期五
周:
星期一,星期四,星期六
吴:
星期二,星期五
陈:
星期三,星期六,星期日
第三章详细设计说明
3.1程序设计思路
该程序实现对7个员工进行排班的功能,输出7个员工的休息日。
该程序首先给出提示对员工们实现数据录入,录入7个人对于休假日的不同选择,这个需求本程序通过7个独立的for循环来实现,然后针对大家不同的选择经过编译后通过7个嵌套的for循环采取遍历查找的方法输出满足要求的组合,对于7个人选择有冲突,而未能输出满足要求组合的给予提示,让他们重新选择。
该程序未通过定义和调用其他函数来实现,仅一个main()函数就可以了,在main()函数里实现数据录入和比较得出结果的功能
1.定义变量
2.输出欢迎界面;
3.通过7个独立的for循环,依次输入7个人的选择情况;
4.通过7个嵌套的循环依次进行遍历按要求组合。
5.通过两个for循环依次判断组合里的任意两个数不相等
6.若任意两个数不相等,输出对应组合。
图3-1总流程图
3.2函数说明
1.定义变量:
判断性变量:
intj,k,h,n=0,flag=1;
用于二维数组中的变量:
inta,b,c,d,e,f,g(用代表每个人a=赵,b=钱,c=孙,d=李,e=周,f=吴,g=陈);
存储7个人输入的选择情况:
intq[7][7];
存储每个人输入的选择情况:
intA[7];
用于确定员工选择个数的变量:
intachoice,bchoice,cchoice,dchoice,echoice,fchoice,gchoice;
2.输入函数:
此处函数的功能是用来输入7位员工的休息日信息的。
函数中通过7个scanf()函数配合上7个独立的for()循环,依次输入7个人的选择情况。
说明:
因为每个人都有可能输入大于1的休息日选项,所以通过for()循环,将每个休息日都输入到数组里,当输入回车之后,当前该员工的输入结束,系统提示下一员工的输入开始。
共有7名员工,所以需要7个scanf()函数配合上7个独立的for()循环。
3.主要函数:
此处函数通过7个嵌套的for()循环依次进行遍历按要求排列出组合。
每一次遍历下来,就把a,b,c,d,e,f,g输入的选择情况分别赋给A[0],A[1],A[2],A[3],A[4],A[5],A[6].
说明:
因为每个人有多个选择,本程序利用的思想是通过7个嵌套的for遍历循环,找出符合条件的组合。
从a的第一个选择,b的第一个选择,c的第一个选择,d的第一个选择,e的第一个选择,f的第一个选择,g的第一个选择排出一个组合,再a的第一个选择,b的第一个选择,c的第一个选择,d的第一个选择,e的第一个选择,f的第一个选择,g的第二个选择。
直到结束g的选择为止,前面不变,开始从f的第二个选择开始。
这样依次遍历下去,得到N个组合,但是,这样遍历下来得到的N个组合必有两个人选择相同的情况。
这时候就得定义两个变量。
一个是一维数组A[7]和判断变量flag。
图3-27个嵌套for循环的流程图
4.判断函数:
此处函数通过两个for循环依次判断排出的组合里的任意两个是否相等。
说明:
A[0],A[1],A[2],A[3],A[4],A[5],A[6]组成N组合,他们分别存放每个人输入的休假日,为了判断该组合里是否有重复的数字,通过两个for循环依次判断,任意两个数是否相等,若相等,则给flag赋值为0.若不等则赋值1.若flag为1则输出满足条件的组合。
5.输出函数:
此处函数的功能是用来输出输出相关提示信息及最后结果。
利用printf()函数和相关变量flag来输出。
说明:
当flag==1:
输出正确结果。
既7个人选择休息日的合理安排组合。
当n==0:
输出“对不起,你们的选择不能实现排班,请重新选择!
!
”。
此时的提示说明之前输入的休息日无法让所有人满意,需重新输入。
图3-3输出函数流程图
第四章软件使用说明
该软件为管理者提供了一种自动排班功能,可任意选定员工的休息日,软件可自动生成最为合理的排班方案。
进入程序后,如图所示:
图4-1欢迎界面
1.只输出一组结果:
图4-2输出一种结果的排序输入
结果:
图4-3输出一种结果
2.不能输出结果
图4-4无法输出结果的排序输入
结果:
图4-5输出无法实现排班的结果
3.输出多组结果(按题目中的休息日输入)
图4-6输出多种结果的排序输入
结果:
图4-7输出多种组合
第五章课程设计心得与体会
程序设计是一次让我们综合自己所学习的知识,把他应用到实际的一次机会,平常我们学的编程语言总显得那么的不灵活,很多时候我们一本书学下来了,仍编不出一个简单的程序,通过对一个小项目功能的实现,我们不仅重温了平时所学的知识点,还增强了自己的动手能力。
对于一个程序,在我看来,最重要的莫过于思路,同一个程序可以由多个思路来实现,然而我们所要做的就是通过多次的编码调试找出最简,最优思路。
好的思路能无疑能使一个程序员实现事半功倍的效果。
接着就要根据自己的思路为该程序设计算法,只有轮廓形成后才能开始编码,编写的过程中还应搜索记忆中的语言基础,找到最简便的表达方式,增加程序的可读性,代码编写完成后,经过多次编译后无错误了也不代表程序就完成了,运行程序时还应通过多组不同情况,看能否实现。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
通过这次课程设计之后,让我养成了编程的好习惯,就是先列清自己的思路,写清自己的算法,必要时还要画流程图,编写程序时也不是依次由上而下写,而是先把主要函数列出来再一一编写。
通过这次实践,我对很多函数有了新的认识,我也明白了写程序的基本过程和基本方法。
这次课程设计总的来说让我受益匪浅。
我相信,只要自己在每一次实践中都能仔细思考,课程设计其实都不会很难,关键在于自己能不能认真思考,能不能亲自动手做实验,而不是想着其他人的劳动果实,其次你还要多操作,只有多操作才能从中发现问题,才能及时请教,解决问题,从而更好的掌握书本中知识。
还有通过这次实践也让我懂得了:
学校安排课程设计目的不在于你做了多少,不在于你做得好不好,关键在于你能否认真去对待,在于你能否通过这次设计对课本上知识有了更深刻的认识,在于能否从中学到书本上学不到的知识。
因此,我会认真地对待我的每一次实验。
附录一参考文献
[1]谭浩强编著.C++程序设计.北京:
清华大学出版社,2005
[2]谭浩强编著.C++程序设计解题与上机指导.北京:
清华大学出版社,2005
[3]谭浩强编著.C程序设计(第二版).北京:
清华大学出版社,1999
[4]谭浩强编著.C程序设计设计解题与上机指导(第二版).北京:
清华大学出版社,1999
[5]孙淑霞等C/C++程序设计实验指导与测试(第2版),电子工业出版社,2007.1
附录二程序代码
#include
intmain(void)
{
intj,k,h,n=0,flag=1;//用于判断的变量
inta,b,c,d,e,f,g;
intachoice,bchoice,cchoice,dchoice,echoice,fchoice,gchoice;//用于确定员工选择个数的变量
intq[7][7];//用于员工存储所选择的休假日的变量
intA[7];
printf("****************欢迎进入排班系统*****************\n");
printf("#\t\t特别注意!
\t\t\t#\n");
printf("#\t请各位工作人员输入自己想要轮休的日期\t#\n");
printf("#\t请先选择你要选择的次数\t\t\t#\n");
printf("#\t再选择你要轮休的日期\t\t\t#\n");
printf("#\t\t\t\t\t\t#\n");
printf("#\t\t\t\t\t\t#\n");
printf("#\t\t\t\t\t\t#\n");
printf("****************欢迎进入排班系统*****************\n");//欢迎界面
printf("请赵输入你想选择的次数\n");
scanf("%d",&achoice);
printf("请赵输入轮休日期\n:
");
for(j=0;j scanf("%d",&q[j][0]);//a录入休假日 } printf("请钱输入你想选择的次数\n"); scanf("%d",&bchoice); printf("请钱输入轮休日期\n: "); for(j=0;j scanf("%d",&q[j][1]);//b录入休假日 } printf("请孙输入你想选择的次数\n"); scanf("%d",&cchoice); printf("请孙输入轮休日期\n: "); for(j=0;j scanf("%d",&q[j][2]);//c录入休假日 } printf("请李输入你想选择的次数\n"); scanf("%d",&dchoice); printf("请李输入轮休日期\n: "); for(j=0;j scanf("%d",&q[j][3]);//d录入休假日 } printf("请周输入你想选择的次数\n"); scanf("%d",&echoice); printf("请周输入轮休日期\n: "); for(j=0;j scanf("%d",&q[j][4]); }//e录入休假日 printf("请吴输入你想选择的次数\n"); scanf("%d",&fchoice); printf("请吴输入轮休日期\n: "); for(j=0;j scanf("%d",&q[j][5]); }//f录入休假日 printf("请陈输入你想选择的次数\n"); scanf("%d",&gchoice); printf("请陈输入轮休日期\n: "); for(j=0;j scanf("%d",&q[j][6]); }//g录入休假日 for(a=0;a =0;a++){ for(b=0;b =0;b++){ for(c=0;c =0;c++){ for(d=0;d =0;d++){ for(e=0;e =0;e++){ for(f=0;f =0;f++){ for(g=0;g =0;g++){//7个循环实现遍历 A[0]=q[a][0]; A[1]=q[b][1]; A[2]=q[c][2]; A[3]=q[d][3]; A[4]=q[e][4]; A[5]=q[f][5]; A[6]=q[g][6]; flag=1; for(k=0;k<6;k++){ for(h=k+1;h<7;h++){ if(A[k]==A[h])flag=0;//比较任意两个数是否相等 } } if(flag==1){//如果不等则输出结果 printf("得到以下组合: \n"); printf("赵: ");printf("星期%d\n",A[0]); printf("钱: ");printf("星期%d\n",A[1]); printf("孙: ");printf("星期%d\n",A[2]); printf("李: ");printf("星期%d\n",A[3]); printf("周: ");printf("星期%d\n",A[4]); printf("吴: ");printf("星期%d\n",A[5]); printf("陈: ");printf("星期%d\n",A[6]); printf("\n"); n++; } } } } } } } } if(n==0) { printf("对不起,你们的选择不能实现排班,请重新选择! ! \n"); } return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 保安 排班 系统