排班系统C语言课程设计.docx

上传人:scccc 文档编号:13123541 上传时间:2021-12-15 格式:DOCX 页数:13 大小:41.64KB
返回 下载 相关 举报
排班系统C语言课程设计.docx_第1页
第1页 / 共13页
排班系统C语言课程设计.docx_第2页
第2页 / 共13页
排班系统C语言课程设计.docx_第3页
第3页 / 共13页
排班系统C语言课程设计.docx_第4页
第4页 / 共13页
排班系统C语言课程设计.docx_第5页
第5页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《排班系统C语言课程设计.docx》由会员分享,可在线阅读,更多相关《排班系统C语言课程设计.docx(13页珍藏版)》请在三一文库上搜索。

1、C程序排班系统C语言课程设计WTD StandardiZatiOn OffiCe WTD 5AB- WTDK 08- WTD 2C课程设计报告201 201学年第_学期课程名称C语言课程设计设计题目 排班系统学生姓名学号专业班级指导教师201年 月曰目录、设计任务书 31、题目与要求32、本程序涉及的知识点3二、程序流程图4三、程序代码设计5四、程序调试过程6五、程序运行过程6六、程序有待改进的地方9七、程序设计总结9八、致谢9参考文献9附录10-X设计任务书IX题目与要求赵:星期二、星期四本程序实现的功能是对7名保安人员进行排班,要求每个人在 一星期中可以休息一天。每名保安可以自行选择自己想

2、要的休息日,而对于休息日的 选择既可以是某一天,也可以是某儿天中的其中一天。当7名保安依次输入自己想要 的休息日后,系统将会给出可能的值班安排。若系统给出的值班安排是0种证明系 统对7名保安的选择无法作出排班,需要重新输入。具体题目:学校实验楼有7名保安人员:钱.赵.孙.李.周、吴、陈。由于工 作需要进行轮休制度,一星期中每人休息一天。预先让每一个人选择自己认为合适的 休息日。请编制程序,打印轮休的所有可能方案。当然使每个人都满意,例如每人选 择的休息日如下:钱:星期一、星期六孙:星期三、星期日李:星期五周:星期一、星期四、星期六吴:星期二、星期五陈:星期三、星期六、星期日2. 本程序涉及的知

3、识点输入函数和输出函数、变長的定义、for语句和SWitCh-CaSe语句的使用等二、程序流程图三、程序代码设计输入函数和输出函数、变量的定义、for语句和SWitCh-CaSe语句、SS字符串的使用等。 输入函数:1) 函数原形:自定义swap(int *a, int *b)函数2) 功 能:swap()函数利用取地址符号&完成对程序中某个变量的赋值,进而程序中判断交换的功能。3) 函数原形:get Char ()4) 功能:向计算机输入一个字符。5) 变量及类型:int a,bt mt k:整型形参变量,接收main()传过来的随机数字。inti:循环控制变量,其中i具有自加功能。

4、intj:整型形参变量,其中j具有自加功能。6) 说明:输入字符后需要输入-1,待系统做出判断后往下执行。选择判断结构SWitCh-CaSe语句:从表达式值等于某个CaSe语句后的值开始,它下方的所有 语句都会一直运行,直到遇到一个break为止。随后,SWitCh语句将结束,程序从 SWitCh结束之后的第一个语句继续执行,并忽略其他CaSe ;假如任何一个CaSe语 句的值都不等于表达式的值,就运行可选标签default之下的语句。假如表达式的值和任何一个CaSe标签都不匹配,同时没有发现一个 CiefaUlt标签,程序会跳过整个SWitCh语句,从它的结束大括号之后的第一个语句 继续执行

5、。for语句:for(语句1 ;语句2 ;语句3 ) 循环体执行时,先执行一次语句1(注意只执行一次)之后判断语句2是否成立1).如果成立执行循环体,之后执行语句3。再返回语句2判断条件是否成立?成立 执行循环体后再执行语句3.如此直到循环体不成立则跳出循环2)如果语句2不 成立,则不执行循环体也不执行语句3直接跳出循环。输出函数:1)函数原形:Printf(tt=*)2)功 能:输出相关提示信息及最后结果。3)相关变量:intn:输出正确结果inti, j:输出计算正确计算排班情况。4)说 明:输出时要把要输出的信息用双引号括起来,输出数字时要在其代表变量前加逗号。四、程序调试过程由于对C语

6、言知识储备有限,且时间精力有限,我们在设计程序程序的过程中遇 到了不少问题。首先遇到的问题是:使用何种数组以及如何使输出变得简洁易懂,易操作。在思 考讨论之后,我们决定尽量“使输入数字化,输出结果文字化”的做法,也就是再输入 星期几的时候直接用数字代替,在输出的时候,为了更加直观,就需要把原先的数字 输出为星期几这种文字的形式;在单个对象输出结束之后,我们选择了 -1这个不会与 其他曰期混淆的数字,以此表示可以对下一个对象进行输出。这就需要重新定义一个 二维数组,数组中存放“星期一,星期二"等文字形式的定义,这样我们可以通过前面 输入的数字来引用对应的文字。解决了最基本的问题之后,我

7、们遇到的问题是:程序使用过程还是不够直观,不 能让使用者直接观察到每个保安可能选择的休息曰,在无法自行解决的情况下我们向 老师求助。在解释程序、说明目的之后,我们重新进行了一次讨论,最后老师建议我 们重新定义一个新的数组。为此我们找了很多相关资料,不断地进行调试,修改,却 始终无法完全达到我们的预想;在老师的指导下,再次经历了数组选择以及一系列的 调试与修改之后,我们重新定义了 SS字符串,采用了 Chdr SS数组。在选择了 Char SS数组之后遇到的问题就是输出语句繁琐,每次都会显示“请输入 下列人选择休息的可能时间”,后来我们对MPrintf(,z请输入下列人选选择休息的可能 时间:)

8、;”这个语句进行修改与位置的调整,使得其变得简洁。调试的过程比较繁琐,除了跟版本有一定的关系外,有时候就因为一个小错误, 程序调试了好久也出不来想要的结果,最后通过我们组员的一起讨论、利用课本、网 上的资源和老师的帮肋,这些问题都被我们逐一解决了。五、程序运行过程1、输出多种结果2、输出O种结果(说明输入有误,需要重新输入)3、只输出一种结果(如题目要求)六、程序有待改进的地方本程序是根据保安可能选择的休息曰,给出满足条件的值班安排这一功能,系统 功能相对单一,不够人性化。在对C语言有更深的了解后,可以考虑对程序进行修 改,增加系统功能,例如:1、增设特殊情况显示以及分析,根据况进行人性化排班

9、,例如:看病办证旅游2、在系统无法排班时,判断周几没有值班人员;3、当有某个保安请假一周,也就是剩下的6名保安有一个人一周要值两天时如何 排班;4、增设投票功能:当有多种值班安排时,通过投票随机决定使用哪一种值班安 排;5、可增设当天值班保安的工号、电话、地址等信息的显示;七、程序设计总结在完成本次课程设计的过程中,一方面让我们在实际运用中更加深刻地理解了课 堂学到的知识;另一方面,通过查询资料、咨询老师,培养了我们在有限时间内搜集 资料以及写论文的能力;与此同时,在编写程序时,也让我们体会到想要学好一个程 序,不仅要上课认真听老师讲,还要在课外多阅读一些相关的资料和书籍。同时.相关的资料和老

10、师的指导对我们完成程序的编写提供很大的帮肋。除此之 外,我们还认识到编写程序时必须要耐心仔细,真可谓,细节决定成败;一个标点和 字符或是中英文等输入细节都要注意,否则就可能导致整个程序运行错误,这极大地 培养了我们务实求真,发现问题的科学素养。此外,思考、讨论、查找资料以及调试、修改的过程是非常繁琐的,但是我们要 尽量做到尽善尽美,只有这样,才能设计出简洁的、比较人性化的程序。八、致谢本次课程设计的完成,除了感谢百度文库提供的资料以及网友的不吝赐教之外,还 要特别感谢C语言课程李老师的耐心指导,让我们在繁琐的调试中寻找到乐趣以及不 断改进的动力。参考文献1 谭浩强,C程序设计(第四版),北京:

11、清华大学出版社,2 豆丁网-34-3亿文库-5附录源程序:#include Oint n = 0;int rest77;VOid swap(int *a, int *b)int m;m = *a;*a = *b;*b = m;VOid Pern(int IiSt , int k, int m)int i;int j;if(k > m)for (i二0; i<7; i+)for (j二O; j<7; j+)if (rest i j = -1)return;if (resti j != list i) continue;if (resti j = list i) break;n+

12、÷Printf (ZZSOIUtiOr: %dr, n);PrintfC赵钱孙李周吴陈n");Printf (二二二二=二二二二二二=二二二二二二=二二二二二二=二二二二二二=二二二二二二=二二二二二二=二二二二二=); for(i = O; i Um; i+)SWitCh (IiSti)CaSe 1Printfr星期一“);breakCaSe 2Printf(ZZ星期二");breakCaSe 3Printfr星期三");breakCaSe 4Printf(,z星期四");breakCaSe 5Printf (,z星期五");bre

13、akCaSe 6Printfe星期六");breakCaSe 7Printfr星期日9;breakdefault: break;Printfr nnnzz);elsefor(i 二 k; i <= m; i÷+)SWaP(listk, &IiSt i):Perm(IiSt, k + 1, m);SWaP(ftlistk, &IiSt i)Jint Iiidin ()int list二1, 2, 3, 4, 5, 6, 7;int i, j;Char ss 7 20二"赵","钱","孙",&q

14、uot;李","周","吴","陈";Printf ("二二二二二二二二二二二二二二二二二二二二二二二二二二二欢迎使用排班系统 _=_=n );Printf (,请输入下列人选选择休息的可能时间:);for(i = 0; i < 7; i÷+)Printf("%s : ", SSi);for(j = 0; j < 7; j+)SCanf("%d", &restij);if(restij = 1)break;Printf("nnn");Perm(IiSt, 0, 6);Printf("totai :%dn/z, n);getChar ();getchar ();return 0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1