《保安值班安排系统c语言课设.docx》由会员分享,可在线阅读,更多相关《保安值班安排系统c语言课设.docx(18页珍藏版)》请在优知文库上搜索。
1、成绩评定表学生姓名王金强班级学号14专业电子信息工程课程设计题目保安值班支配系统评语组长签字:成果日期2013年1月5日课程设计任务竹学院信息科学及工程学院专业电子信息工程学生姓名王金强班级学号1203030224课程设计题0保安值班支配系统实践教学要求及任务:某公司有7名保安人员:赵、钱、孙、李、周、吴、陈。由于工作须要进行轮休制度,星期中每人休息天。预先让每个人选择自己认为合适的休息日。请编制程序,打印轮休的全部可能方案。当然使每个人都满足,例如每人选择的休息日如下:赵:星期二、星期四钱:星期一、星期六孙:星期三、星期日李:星期五周:星期一、星期四、星期六吴:星期二、星期五陈:星期三、星期
2、六、星期日工作支配及进度支配:本课程设计时间为19教学周。其中包含设计、代码调试、课程设计论文撰写几个阶段。第19周星期一:设计任务分析和总体设计星期五:软件算法和流程设计、软件编码实现星期六:软件总体调试、软件运行分析、答辩、验收程序、书写课程设计报告,提交指导老师:201年月日专业负责人:201年月曰学院教学副院长:201年月日目录1需求分析概要设计2.1题目概述52.2算法流程图3具体设计.83.1算法分.83.2核心代4调试分析5课设总6参考文.18该程序有多种功能,是一套保安值班支配系统。设计这个程序希望可以把保安轮休的全部可能方案打印出来,可以通过输入保安姓名将对应保安的信息打印到
3、琼幕上;整个过程在一个可操作的界面内实现,操作便利,菜单简洁易懂,能精确无谩的显示须要的信息.该程序具有程序运行效率高的优点,数据类型丰富,结构化限制语句功能强等优点.2概要设计2.1 题目概述程序实现的功能是对7个员工实现排班,7个员工每个员工有天的休假日,但是这天的休假日可由员工自行选择,选择他们想要休假的时间,可由多个选择,也可只有个选择,7个员工依次输入完毕后,程序会输出满足7个员工的多种排班方式。对于7个人选择有冲突的,输出相应的提示。具体题目:学校试验楼有7名保安人员:赵,钱,孙,李,周,吴,陈。由于工作需求要进行轮休制度,一星期中每人休息一天。预先让每一个人选择自己认为合适的休息
4、日。输出轮休的全部可能方案。当然使每个人都满足。例如每人选择的休息日如下:赵:星期二,星期四钱:星期一,星期六孙:星期三,星期日李:星期五周:星期一,星期四,星期六吴:星期二,星期五陈:星期三,星期六,星期日2.2 算法流程图如图2-2:图22总流程图2.3 for循环的流程图如图2-3:图2-37个戢套for循环的流程图3.1 算法分析该程序实现对7个员工进行排班的功能,输出7个员工的休息日。该程序首先给出提示对员工们实现数据录入,录入7个人对于休假F1.的不同选择,这个需求本程序通过7个独立的for循环来实现,然后针对大家不同的选择经过编译后通过7个嵌套的for循环实行遍历查找的方法输出满
5、足要求的组合,对于7个人选择有冲突,而未能输出满足要求组合的赐予提示,让他们重新选择。该程序未通过定义和调用其他函数来实现,仅个mainO函数就可以了,在mainO函数里实现数据录入和比较得出结果的功能1 .定义变量2 .输出欢迎界面;3 .通过7个独立的for循环,依次输入7个人的选择状况;4 .通过7个嵌套的循环依次进行遍历按要求组合。5 .通过两个for循环依次推断组合里的隙意两个数不相等6 .若随意两个数不相等,输出对应组合。此处函数通过7个嵌套的for()循环依次进行遍历按要求排列出组合。每一次遍历下来,就把岂悦勒(1,。,。8输入的选择状况分别赋给A0,A1.,A2,A3,A4,A
6、5,A6.说明:因为每个人有多个选择,本程序利用的思想是通过7个嵌套的for遍历循环,找出符合条件的组合。从a的第个选择,b的第一个选择,c的第一个选择,d的第一个选择,e的第一个选择,f的第个选择,g的第一个选择排出一个组合,再a的第个选择,b的第一个选择,c的第一个选择,d的第一个选择,e的第一个选择,f的第个选择,g的其次个选择。直到结束g的选择为止,前面不变,起先从f的其次个选择起先。这样依次遍历下去,得到N个组合,但是,这样遍历下来得到的N个组合必有两个人选择相同的状况。这时候就得定义两个变量。一个是一维数组A7和推断变量f1.ag03.2 核心代码#inc1.udeintmain(
7、void)intj,k,Jn=O,f1.ag=1.;/用于推断的变量inta,b,c,d1.e,f,g;intachoice,bchoice,cchoice,dchoice,echoice,fchoice,gchoice;/用于确定员工选择个数的变量intq77;/用于员工存储所选择的休假日的变量intA7;printf(,*欢迎进入排班系统*n);printf(,tttt特殊留意!ttt#n);Printf(#t请各位工作人员输入自己想要轮休的F1.期Utn);Printf(#t请先选择你要选择的次数ttt#n);printfitt再选择你要轮休的F1.期ttt#n);printf(z,#t
8、ttttt#n,z);printf(*ftttttttftn*);printf(w#tttttt#n*);printf(*欢迎进入排班系统*n);/欢迎界面Printf(请赵输入你想选择的次数n);scanf(,&achoice);Printf(请赵输入轮休日期n:);for(j=0;jachoice;j+)SCanf(飞d,&qj0);/a录入休假日Printf(请钱输入你想选择的次数n);scanf(飞d”,&bchoice);Printf(“请钱输入轮休日期n:);for(j=0;jbchoice;j+)SCanf(,&qj1);b录入休假日Printf(请孙输入你想选择的次数n);sc
9、anf(“,cchoice);Printf(请孙输入轮休日期n:);for(j=0;jcchoice;j+)SCanf2);/c录入休假日Printf(请李输入你想选择的次数n);scanf(*%d*,&dchoice);Printf(请李输入轮休日期n:”);for(j=0;jdchoice;j+)SCanf(%d”,&qj3);/d录入休假日Printf(请周输入你想选择的次数n);scanf(“1”,echoice);Printf(请周输入轮休日期n:for(j=0;jechoice;j+);SCanf(飞4);)/e录入休假日Printf(请吴输入你想选择的次数n);scanf(%d”
10、,&fchoice);Printf(请昊输入轮休F1.期n:for(j=0;jfchoice;j+);scanf(*%d*,&qj5);f录入休假日Printf(请陈输入你想选择的次数n);scanf(,gchoice);Printf(请陈输入轮休日期n:for(j=0;jgchoice;j+)SCanf(,&qj6););for(a=0;aachoicc&qa0!=0;a+)for(b=0;bbchoice&qb1!=0;b+)for(c=0;ccchoice&qc2!=0;c+)for(d=0;ddchoice&qd3!=0;d+)for(e=0;eechoice&qe4!=0;e+)fo
11、r(f=0;ffchoice&qf5!=0;f+)for(g=0;ggchoice&qg6!=0;g+)/1个循环实现遍历0=qa0;A1.=qb1.;A2=qc2;A3=qd;4=qe4;A5=qf5;6=qg;fIag=I;for(k=0;k6;k+)for(h=k+1.:h7;h+)if(Ak=Ah)fIag=O;等比较随意两个数是否相if(f1.ag=1.)如不等则输出结果期%dn”,AO);期(dn,A1.);期%dn*,A2);期%dn”,A);期in,A4);期in,A);期%dn”,A);if(n=0)printf(对不起,假Printf(得到以下组合:n);Printf(赵:
12、);Printf(星Printf(钱:);Printf(星Printf(孙:);Printf(星Printf(李:);Printf(星Printf(周:);Printf(星Printf(吴:);Printf(星Printf(陈:);Printf(星Printf(n);n+;你们的选择不能实现排班,请重新选择!n);return0;4调试分析进入程序后,如图4入所示:图4-1欢迎界面1 .只输出组如图4-2:图4-2输出一种结果的排序输入输出结果如图4-3:图4-3输出一种结果2 .不能输出结果的输入如图4-4:图4-4无法输出结果的排序输入输出结果如图4-5:图4-5输出无法实现排班的结果3
13、.输出多组结果的输入如图4-6:图4-6输出多种结果的排序输入输出结果如图4-7:图4-7输出多种组合5课程总结程序设计是一次让我们综合自己所学习的学问,把他应用到实际的一次机会,平常我们学的编程语言总显得那么的不敏捷,许多时候我们一本书学下来了,仍编不出一个简洁的程序,通过对一个小项目功能的实现,我们不仅重温了平常所学的学问点,还增加了自己的动手实力。时于一个程序,在我行来,最重要的莫过于思路,同一个程序可以由多个思路来实现,然而我们所要做的就是通过多次的编码调试找出最简,最优思路。好的思路能无疑能使个程序员实现事半功倍的效果。接着就要依据自己的思路为该程序设计算.法,只有轮廓形成后才能起先编码,编写的过程中还应搜寻记忆中的语言基础,找到最简便的表达方式,增加程序的可读性,代码编写完成后,经过多次编译后无错误了也不代表程序就完成了,运行程序时还应通过多组不同状况,看能否实现。通过这次课程设计使我懂得了理论及实际相结合是很重要的,只有理论学问是远远不够的,只有把