




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精品文档 XX大学 课程设计报告 课程设计名称: C 语言课程设计 课程设计题目:排班系统 院( 系): XX 学院 专 业: XX 班 级: XX 学 号: XXXXXXXXXXXXX 姓 名: XX 指导教师: XXX 完成日期: XX 年 X 月 X 日 I欢迎下载 第 1 章 需求分析与概要设计 1.1 需求分析 . 1 1.2 概要设计 . 1 第 2 章 详细设计 . 2.1 排班系统基本结构 . 2 2.1.1 排班系统细节剖析 . 2 2.2 程序详细介绍(算法实现) . 3 第 3 章 调试分析 . 我的调试: . 5 运行结果 . 5 第 4 章 用户手册及结束语 . 8
2、1. 用户手册 . 8 2. 结束语 . 8 参考文献 . 附 录(程序清单) I欢迎下载 精品文档 精品文档 目录 10 第 1 章 需求分析与概要设计 1.1 需求分析 1. 题目要求: 为多名保安设计一个排班系统, 每人可以自行预先选出一天为 休息日,系统打印可能的轮班方案并存储结果。 尽可能做到令所有人满意, 保排 班方案的公平性。 2. 题目分析: 本题的重点和难点在于保安的人数是不确定的, 且他们可能选 择的休息日也无法确定,所以方案的结果也就不仅仅有一种。由此可以看出只有 解决好这两个问题,才能够符合该题目的要求,完成保安的排班工作。 1.2 概要设计 3. 总体思路:对于这道题
3、目,我的思路是采用二维数组的方式来解决。大概 过程是先假设所有人都上班,即没有休息日。然后再让每个人进行选择自己希望 的休息日。先每个人选择出一天,然后系统进行排班,输出其所输入数据的对应 方案。然后在第一次所输数据的基础上,若还有其他选择,则进行二次输入,以 此更改初始数据,重新设计可能的排班方案。 4. 细节实现: 因为题目的要求是打印可能的方案, 那么如何来实现打印呢? 我采用了通过对二位数组中的每一个值用阿拉伯数字 0和 1来标记,以 1来表示 工作,0 来表示休息。 5. 功能作用:本系统系保安的排班系统,可以完成基本的排班功能,在此基 础上,还为用户设计了二次输入的选项,以此来解决
4、当所输数据不满足要求,无 法完成排班的问题,同时也可以为用户提供更多的可行方案,而不是仅仅局限于 一种。 1欢迎。下载 精品文档 第 2 章详细设计 4.1 排班系统基本结构 图2.1排班系统基本结构 此排班系统主要分为:显示欢迎界面、排班界面及选择界面。该系统各部分间 有序衔接,各尽其责,如图2.1所示,充分展现了该系统的协调性与整体性。 2.1.1排班系统细节剖析 此排班系统的重点在于每次对二维数组的赋值操作,最开始时是将所有的初 值都赋为1,然后以0来赋给选择对应日期、对应人的对应数值。这样一来,便 可以将每个人的每天上班与否进行标记(1是工作,0是休息),这道题目的另一 个难点在于对每
5、个人有比较公平的方案,所以该问题在设计时,我就将含有小于 规定数量工作人数的方案标记为不可行方案,同时在屏幕输出该方案排出的结果, 2欢迎下载 精品文档 以供操作人员查阅该方案到底哪里不可行,利于下次输入数据地改动。 4.2 程序详细介绍(算法实现) 我的这套程序大致可以分为三个部分: 数据输入部分 即第一次输入数据(每个人的选择),该部分是通过二位数组来实现的, 以第几个人来控制数组的第一个下标,以周几来控制该数组的第二个下 标,这样就可以将所有的人所有的天数看做一个二维表来实现选择信息的 数字化,如表2.1、2.2所示。 表2.1 每个人的工作选择 周一 周二 周三 周四 周五 周六 周日
6、 l.zhao 工作 工作 工作 休息 工作 工作 工作 2.qia n 工作 工作 工作 工作 工作 休息 工作 3.sun 工作 工作 工作 工作 工作 工作 休息 4.li 工作 工作 休息 工作 工作 工作 工作 5.zhou 工作 工作 休息 工作 工作 工作 工作 6.wu 工作 工作 工作 工作 工作 工作 休息 表2.2对应的数组 a 0(下标) 1 2 3 4 5 6 0(下标) 0 1 1 0 1 1 1 ( (下标) 1 1 1 1 1 0 1 0(下标) 2 1 1 1 1 1 0 3(下标) 3 1 0 1 1 1 1 4(下标) 4 1 0 1 1 1 1 5(下标
7、) 5 1 0 1 1 1 1 6(下标) 6 1 1 1 1 1 0 3欢迎下载 精品文档 数据转化为方案: 该部分是以 for 循环为工具手段, 对每一个数据进行扫描判断, 然后将工 作的人打印出来,即保安工作排班表。这样一个方案就完成了。 方案的更改: 此部分则是以更改个别数据为主, 其他数据依然参照之前的数据, 其实现 的方法就是用第二次输入的数据, 对第一次的数据进行覆盖, 在这个覆盖 的过程中,我们不仅要将二次选择的人及选择的天对应的数据更改为 0, 同时还要对原数组中此人的选择对应的数值恢复为零,我最开始设计时, 就忽略了这一点, 造成输出的方案有的人一周休息一天, 有的人休息了
8、两 天,失去了设计方案的公平性。以此造成很多困扰,后来经过详细分析、 查找,我采用了每次只覆盖数组中的数值, 而将二次选择的人的首选数字 进行保留,这样就实现了公平排班的理念。 4欢迎。下载 精品文档 第 3 章调试分析 我的调试: 在刚刚完成编译时,程序中有很多语法错误,如将“;”打成了中文输入 法,甚至是干脆忘记打的情况,还有比如将 for循环下面的括号只打 了一半等,这些语法错误给我造成了许多困扰,后经逐条更改,最后 终于得以运行。 除了一些语法错误,在运行的过程中还出现了许多其他的错误。如上文 提到的由于没有将初次选择更改回为工作,造成方案的不公平等,这 个问题我在初期一直没有弄懂,后
9、经单步调试,对数组中的逐个数字 进行跟踪,终于发现了这个问题,并想出方案解决 运行结果 该软件运行时会出现以下几种情况: 正常进行排班,显示出对应的排班方案,如图 3.1所示: 5欢迎下载;zl有2- :还F 不图3.1 正常排班 精品文档 更改其中一个人的选择,输出第二万案,如图3.2 : 鬥 : 7l i zhao zhao qlan qian qian sun qiiim sun qian uu sliuu 1 i zhou zliou ahou zhou zheng Mil ghou uu zheng Wil MIL HU zhen zheng shen? 请可是第几个仏?也加选扌睪是
10、? 1 :zliao ;qian i :zhao :zhao :zhao ;2hac qian siiim qiam (Iian qian sun qian sun sun sun sun 11 li ZllUU wu li li zhou zhou 翳还芻严 zhou Mil heng z hum zhoii 対n zhena 训u zhcintj HU wu zheny zheng zheng 图3.2 其他选择 无其他选择,保存方案至文件“保安排班方案”,如下图: 唄的胡方巽.5 -记事本 文件旧 寺逅 惜貳 亘看世)耦助凹 一二三四五六日 zha 口 qi an su zhao qia
11、n su zhao qian su qian sun li zhao qian su u u u LLOO O -1 i u h .1 h h 1 1 w z 1 z z zhzhzh工wuzh s n l=- wuwuzhwllzh S n e zh g en zh 苴也选择: zhao zhaa 21iao cjian Saill21.eKe sun sun sun sun 图3.3 存储的方案 6欢迎下载 zhao qian su qian sun li : zhao qia su zhao qlan su zhao qian su zhao sun li zhao qian li u
12、u u lizho盹lili Ou zh吨zhzhzhwu g g FUJU呃 e 0 e h z WLlzhwuwuzh g呂 n n e e h h z z 二三四五A日 周周周周周周周 s 精品文档 当用户输入的选择对应的方案不可行时, 软件会给出提示,如图3.4所示: 鯉理 川即凹黒逓耐颐關瞬 豳sag廳汀EHH閤陋 暑 禰钿鬧娜川即凹卿叫! F面就让我们一起开启排班的旅程! 图3.4 方案不可行 这时我们对选择进行二次调整,如图 3.5所示: 图3.5 调整方案 谙输入保安总人數: 备输入保安的姓名: zhao 秘的选择是:周一;2周二 侑输入保安的姓名: oiam 甌的选择是:周一
13、* 2周二 穆输入保安的姓各 sun 他的选择是:1*周一;2周二; 穆输入探安的姓名, 也的选择是;1 周一;2周二; 1 方案不可行辛如下: 九周三; 3 -周三 3 .周三; 3 ”周三; 4.周四;5.周五* 4.周四:周五壬 4.周四:乩周五; 周夭;化周日 G 周六;化周日 周六匸化周日 G 周六;丁”周日 周一:qian I Ha: i z ha. EI :zliao I gJlkD :zliao E zho zllMSID sun qian qian qian qian qian sun sun Sufi sun sun 他有 t 1-* E 四 li 11 11 11 sun
14、 sun 三 qMzN 三耳五六日冋有 周请 7欢迎下载 精品文档 第 4 章 用户手册及结束语 用户手册 本软件用户请注意以下几点: 1. 当打开本软件时,会出现欢迎使用界面,同时出现输入提示,请您按照 提示依次进行操作; 2. 值得注意的是,本软件采用的是输入数字进行选择,每次输入数字后, 请输入回车键; 当电脑屏幕提示更改选择时,在输入两个数字时,请以空格隔开。 结束语 本系统是我经过两周时间冥思苦想得来的结果。在设计该系统时我也遇到了 许多困难。 如最开始时我想采用的是想将所有数组同时赋值, 然后同时进行扫描, 可是后来发现这样的方法是行不通的(或许以后学的多了能够解决,但目前来说 知
15、识量还很有限),因为在进行两个 for 循环时, 会出现交叉限制的情况, 无法完 成扫描,所以我最终想出了一次只对一个二维表赋值、扫描。对于其他方案则是 以二次输入数据的方式进行更改初值,以达到排班的目的。当然,可能该系统在 功能上还存在一些弊端,但至少这也是我两周来的辛苦成果。我以后一定会继续 努力,对该系统进行进一步的完善。 8欢迎。下载 精品文档 参考文献 1 谭浩强著 . C 程序设计(第三版) . 清华大学出版社, 2009 2 Harvey M.Deitel,Paul J.Deitel 编著 聂雪军、贺军译 . C 程序设计经典教 程. 清华大学出版社, 2006 3 王敬华、林萍
16、、张清国编著 . C 语言程序设计教程(第二版) . 清华大学出版社, 2013 4 谭浩强著 . C 程序设计题解与上机指导(第三版) . 清华大学出版社, 2008 5 温海、张友、童伟等编著 . C 语言精彩编程百例 . 中国水利水电出版社, 2004 9欢迎。下载 void main() int i,j,k,m,total,x,y; int aN7,b7=0,0,0,0,0,0,0; FILE *fp; 保安排班方案 .txt,w); printf(nn* 欢迎使用微微排班软件,本软件代表制作人祝您工作顺利,阖 printf( 请输入保安总人数: n); scanf(%d,&total
17、); for(i=0;itotal;i+) / for(j=0;j7;j+) aij=1; for(i=0;itotal;i+) / printf( 请输入保安的姓名: n); 10欢。迎下载精品文档 附 程序源代码: #define N 10 #include struct guard char name20; int choice; guN; 录(程序清单) 家欢乐 * *nn * 面就让我们一起开启排班的旅程吧! *nn); 将所有值初始化为 以每个人为线索进行循环 精品文档 scanf(%s,); printf( 他的选择是: 1.周一; 2 周二; 3.周三; 4.周
18、四; 5.周五; 6.周六; 7.周 scanf(%d,&gui.choice); if(gui.choice=1) ai0=0; b0+; if(gui.choice=2) ai1=0; b1+; if(gui.choice=3) ai2=0; b2+; if(gui.choice=4) ai3=0; b3+; if(gui.choice=5) ai4=0; b4+; 11欢。迎下载日 n); 精品文档 if(gui.choice=6) ai5=0; b5+; if(gui.choice=7) ai6=0; b6+; / for(k=0;k+) for(j=0;j=total-1) / pr
19、intf( 方案不可行 ! 如下: n); fprintf(fp,n 您所输入的数据派出的方案不可行 fprintf(fp,n 周一: ); printf(n 周一: ); for(i=0;itotal;i+) if(ai0=1) printf(%st,); fprintf(fp,%st,); 12欢。迎下载赋值 0 判断方案是否可行 ! 如下: n); Eeu.曰 n6c一 s%=lu_d (ITusmeM (+ _eov_o.!l)04 -111WurfuK =-111Wur-dmluuE 宀 Eeu.曰 nq-土s%=-etu_d4 Eeu.曰 n6c一
20、s%=lu_d (LUL=_S七 sfiM L (u寸=e)七 (+roolvo.!l)o -wwurfuK =-wwur-dmluuE 宀 lueu.曰 nq-土s%=-etu_d4 lueu.曰 n6c一 s%=lu_d (Lue=_s七 (+ _eov_o.!l)04 精品文档 printf(%st,); fprintf(fp,%st,); fprintf(fp,n 周六: ); printf(n 周六: ); for(i=0;itotal;i+) if(ai5=1) printf(%st,); fprintf(fp,%st,); fprintf(fp,n 周日: ); printf(n 周日: ); for(i=0;itotal;i+) if(ai6=1) printf(%st,); fprintf(fp,%st,); / printf(n 请问还有其他选择吗? n1. 有; 2, 没有 n); fprintf(fp,nnn 其他选择: n); scanf(%d,&m); if(m=1) printf(n 请问是第几个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年食堂档口租赁合同范本(含食品安全追溯)3篇
- 二零二五年度MCN机构与短视频平台合作推广合同3篇
- 2025合作社租地合同
- 2025年度松木木材深加工项目合作协议3篇
- 二零二五年度合作协议保密条款、竞业限制及违约金执行3篇
- 二零二五年度商业秘密保护担保合同范本3篇
- 2025年度数据安全防护与应急预案制定合同2篇
- 2025版个人创业项目融资借款合同
- 2025版重型压路机销售及售后服务合同3篇
- 2024版农副业承包合同书范本
- 建筑设计行业项目商业计划书
- 慢性病防治健康教育知识讲座
- 骶尾部藏毛疾病诊治中国专家共识(2023版)
- 【高新技术企业所得税税务筹划探析案例:以科大讯飞为例13000字(论文)】
- 幽门螺旋杆菌
- 智慧农业利用技术提高农业可持续发展的方案
- 制冷压缩机安全操作规程范文
- 初中历史考试试题答题卡模版
- 《草图大师建模》授课计划+教案
- 小学音乐-铃儿响叮当教学设计学情分析教材分析课后反思
- 《3-6岁儿童学习与发展指南》考试试题
评论
0/150
提交评论