排班系统C语言课程设计资料Word格式.docx

上传人:b****3 文档编号:6834611 上传时间:2023-05-07 格式:DOCX 页数:12 大小:29.79KB
下载 相关 举报
排班系统C语言课程设计资料Word格式.docx_第1页
第1页 / 共12页
排班系统C语言课程设计资料Word格式.docx_第2页
第2页 / 共12页
排班系统C语言课程设计资料Word格式.docx_第3页
第3页 / 共12页
排班系统C语言课程设计资料Word格式.docx_第4页
第4页 / 共12页
排班系统C语言课程设计资料Word格式.docx_第5页
第5页 / 共12页
排班系统C语言课程设计资料Word格式.docx_第6页
第6页 / 共12页
排班系统C语言课程设计资料Word格式.docx_第7页
第7页 / 共12页
排班系统C语言课程设计资料Word格式.docx_第8页
第8页 / 共12页
排班系统C语言课程设计资料Word格式.docx_第9页
第9页 / 共12页
排班系统C语言课程设计资料Word格式.docx_第10页
第10页 / 共12页
排班系统C语言课程设计资料Word格式.docx_第11页
第11页 / 共12页
排班系统C语言课程设计资料Word格式.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

排班系统C语言课程设计资料Word格式.docx

《排班系统C语言课程设计资料Word格式.docx》由会员分享,可在线阅读,更多相关《排班系统C语言课程设计资料Word格式.docx(12页珍藏版)》请在冰点文库上搜索。

排班系统C语言课程设计资料Word格式.docx

赵:

星期二、星期四本程序实现的功能是对7名保安人员进行排班,要求每个人在一星期中可以休息一天。

每名保安可以自行选择自己想要的休息日,而对于休息日的选择既可以是某一天,也可以是某几天中的其中一天。

当7名保安依次输入自己想要的休息日后,系统将会给出可能的值班安排。

若系统给出的值班安排是0种,证明系统对7名保安的选择无法作出排班,需要重新输入。

具体题目:

学校实验楼有7名保安人员:

钱、赵、孙、李、周、吴、陈。

由于工作需要进行轮休制度,一星期中每人休息一天。

预先让每一个人选择自己认为合适的休息日。

请编制程序,打印轮休的所有可能方案。

当然使每个人都满意,例如每人选择的休息日如下:

钱:

星期一、星期六

孙:

星期三、星期日

李:

星期五

周:

星期一、星期四、星期六

吴:

星期二、星期五

陈:

星期三、星期六、星期日

2、本程序涉及的知识点

输入函数和输出函数、变量的定义、for语句和switch-case语句的使用等

二、程序流程图

三、程序代码设计

输入函数和输出函数、变量的定义、for语句和switch-case语句、ss字符串的使用等。

输入函数:

1)函数原形:

自定义swap(int*a,int*b)函数

2)功能:

swap()函数利用取地址符号&

完成对程序中某个变量的赋值,进而程

序中判断交换的功能。

3)函数原形:

getchar()

4)功能:

向计算机输入一个字符。

5)变量及类型:

inta,b,m,k:

整型形参变量,接收main()传过来的随机数字。

inti:

循环控制变量,其中i具有自加功能。

intj:

整型形参变量,其中j具有自加功能。

6)说明:

输入字符后需要输入-1,待系统做出判断后往下执行。

选择判断结构

switch-case语句:

从表达式值等于某个case语句后的值开始,它下方的所有语句都会一直运行,直到遇到一个break为止。

随后,switch语句将结束,程序从switch结束大括号之后的第一个语句继续执行,并忽略其他case;

假如任何一个case语句的值

都不等于表达式的值,就运行可选标签default之下的语句。

假如表达式的值和任何一个case标签都不匹配,同时没有发现一

个default标签,程序会跳过整个switch语句,从它的结束大括号之后的第一个语句继续执行。

for语句:

for(语句1;

语句2;

语句3){循环体}

执行时,先执行一次语句1(注意只执行一次)之后判断语句2是否成立1).如果成立执行循环体,之后执行语句3。

再返回语句2判断条件是否成立?

成立执行

循环体后再执行语句3,如此直到循环体不成立则跳出循环2)如果语句2不成立,则不执行循环体也不执行语句3直接跳出循环。

输出函数:

1)函数原形:

printf(“======”,*)

3)相关变量:

intn:

输出正确结果。

inti,j:

输出计算正确,计算排班情况。

4)说明:

输出时要把要输出的信息用双引号括起来,输出数字时要在其代表变量

前加逗号。

四、程序调试过程

由于对C语言知识储备有限,且时间精力有限,我们在设计程序程序的过程中遇到了不少问题。

首先遇到的问题是:

使用何种数组以及如何使输出变得简洁易懂,易操作。

在思考讨论之后,我们决定尽量“使输入数字化,输出结果文字化”的做法,也就是再输入星期几的时候直接用数字代替,在输出的时候,为了更加直观,就需要把原先的数字输出为星期几这种文字的形式;

在单个对象输出结束之后,我们选择了-1这个不会与其他日期混淆的数字,以此表示可以对下一个对象进行输出。

这就需要重新定义一个二维数组,数组中存放“星期一,星期二”等文字形式的定义,这样我们可以通过前面输入的数字来引用对应的文字。

解决了最基本的问题之后,我们遇到的问题是:

程序使用过程还是不够直观,不能让使用者直接观察到每个保安可能选择的休息日,在无法自行解决的情况下我们向老师求助。

在解释程序、说明目的之后,我们重新进行了一次讨论,最后老师建议我们重新定义一个新的数组。

为此我们找了很多相关资料,不断地进行调试,修改,却始终无法完全达到我们的预想;

在老师的指导下,再次经历了数组选择以及一系列的调试与修改之后,我们重新定义了ss字符串,采用了charss数组。

在选择了charss数组之后遇到的问题就是输出语句繁琐,每次都会显示“请输入下列人选择休息的可能时间”,后来我们对“printf("

请输入下列人选选择休息的可能时间:

\n"

);

”这个语句进行修改与位置的调整,使得其变得简洁。

调试的过程比较繁琐,除了跟版本有一定的关系外,有时候就因为一个小错误,程序调试了好久也出不来想要的结果,最后通过我们组员的一起讨论、利用课本、网上的资源和老师的帮助,这些问题都被我们逐一解决了。

五、程序运行过程

1、输出多种结果

 

■F4C:

\Users\Administratcr\OesktQp\CiS*l.exe'

酎甲VMS

4

1

72

5-1

4-1

6-1

-1

45-1

7-1

5G-1

■1i

olution:

1

些钱孙李周吴陈

2、输出0种结果(说明输入有误,需要重新输入)

'

D:

\Document&

\C-Firee\Tem1.exe

欢迎使用排班系统

请输入下列人选选择休息的可能时间:

P:

1钱;

1祗2蚩.3

5

total:

0

3、只输出一种结果(如题目要求)

六、程序有待改进的地方

本程序是根据保安可能选择的休息日,给出满足条件的值班安排这一功能,系统功能相对单一,不够人性化。

在对C语言有更深的了解后,可以考虑对程序进行修改,增加系统功能,例如:

1、增设特殊情况显示以及分析,根据况进行人性化排班,例如:

看病>办证>旅游

2、在系统无法排班时,判断周几没有值班人员;

3、当有某个保安请假一周,也就是剩下的6名保安有一个人一周要值两天时如何排班;

4、增设投票功能:

当有多种值班安排时,通过投票随机决定使用哪一种值班安排;

5、可增设当天值班保安的工号、电话、地址等信息的显示;

七、程序设计总结

在完成本次课程设计的过程中,一方面让我们在实际运用中更加深刻地理解了课堂学到的知识;

另一方面,通过查询资料、咨询老师,培养了我们在有限时间内搜集资料以及写论文的能力;

与此同时,在编写程序时,也让我们体会到想要学好一个程序,不仅要上课认真听老师讲,还要在课外多阅读一些相关的资料和书籍。

同时,相关的资料和老师的指导对我们完成程序的编写提供很大的帮助。

除此之外,我们还认识到编写程序时必须要耐心仔细,真可谓,细节决定成败;

一个标点和字符或是中英文等输入细节都要注意,否则就可能导致整个程序运行错误,这极大地培养了我们务实求真,发现问题的科学素养。

此外,思考、讨论、查找资料以及调试、修改的过程是非常繁琐的,但是我们要尽量做到尽善尽美,只有这样,才能设计出简洁的、比较人性化的程序。

八、致谢

本次课程设计的完成,除了感谢XX文库提供的资料以及网友的不吝赐教之外,还要特

别感谢C语言课程李老师的耐心指导,让我们在繁琐的调试中寻找到乐趣以及不断改进的动力。

参考文献

[1]谭浩强,C程序设计(第四版),北京:

清华大学出版社,2010.6

[2]豆丁网-

[3]-C语言论坛-编程论坛

[4]-3亿文库-

[5]

l12wE78M88yCTPnoH5aeBqyQEGKAjuKGf81vAU4Llu3Yxhwg-WKpKmfo5dZbdrG

附录

源程序:

#include<

stdio.h>

intn=0;

intrest[7][7];

voidswap(int*a,int*b)

{

intm;

m=*a;

*a=*b;

*b=m;

}

voidperm(intlist[],intk,intm)

inti;

intj;

if(k>

m)

for(i=0;

i<

7;

i++)

for(j=0;

j<

j++)

if(rest[i][j]==-1)

return;

if(rest[i][j]!

=list[i])

continue;

if(rest[i][j]==list[i])

break;

n++;

printf("

Solution:

%d\n"

n);

赵钱孙李周吴陈\n"

printf("

=============================================================\n"

for(i=0;

i<

=m;

switch(list[i])

星期一"

星期二"

星期三"

星期四"

星期五"

星期六"

星期日"

case1:

break;

case2:

case3:

case4:

case5:

case6:

case7:

default:

\n\n\n"

else

for(i=k;

swap(&

list[k],&

list[i]);

perm(list,k+1,m);

swap(&

intmain()

intlist[]={1,2,3,4,5,6,7};

inti,j;

charss[7][20]={"

赵"

"

钱"

孙"

李"

周"

吴"

陈"

};

===========================欢迎使用排班系统===================================\n"

for(i=0;

7;

%s:

"

ss[i]);

for(j=0;

j<

scanf("

%d"

&

rest[i][j]);

if(rest[i][j]==-1)break;

perm(list,0,6);

total:

%d\n"

getchar();

return0;

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

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2