《保安值班安排系统》word版Word下载.docx
《《保安值班安排系统》word版Word下载.docx》由会员分享,可在线阅读,更多相关《《保安值班安排系统》word版Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
一方面为学生提供必要的设计资料,另一方面培养学生查阅、使用资料的能力。
课程设计任务书及指导书每个学生一份,并于课程设计之前发给学生。
学生综合解决问题的能力将反映在设计的程序和编写的课程设计报告中,因此本课程设计的考核内容应该由以下两部分组成。
(1)编写的C/C++语言程序
●针对编写的C/C++程序,应该主要考查下列内容:
●是否符合题目要求,是否完成了主要功能;
●是否存在语法错误、逻辑错误及运行错误;
●程序设计是否合理;
●程序是否具有良好的可读性和可靠性;
●是否符合结构化程序设计所倡导的基本理念;
(2)课程设计报告
●针对提交的课程设计报告,应该主要考查下列内容:
●程序设计的报告内容是否全面,观点是否正确;
●设计过程是否符合结构化程序设计方法的基本原则;
●层次是否清楚,语言是否通顺;
●各种图表是否规范;
是否具有良好的程序设计习惯。
第二章课程设计任务内容
程序实现的功能是对7个员工实现排班,7个员工每个员工有一天的休假日,但是这一天的休假日可由员工自行选择,选择他们想要休假的时间,可由多个选择,也可只有一个选择,7个员工依次输入完毕后,程序会输出满足7个员工的多种排班方式。
对于7个人选择有冲突的,输出相应的提示。
具体题目:
学校实验楼有7名保安人员:
赵,钱,孙,李,周,吴,陈。
由于工作需求要进行轮休制度,一星期中每人休息一天。
预先让每一个人选择自己认为合适的休息日。
输出轮休的所有可能方案。
当然使每个人都满意。
例如每人选择的休息日如下:
赵:
星期二,星期四
钱:
星期一,星期六
孙:
星期三,星期日
李:
星期五
周:
星期一,星期四,星期六
吴:
星期二,星期五
陈:
星期三,星期六,星期日
第三章详细设计说明
3.1程序设计思路
课题要求设计一个保安排班系统:
需要通过建立结构体及定义其指针变量,设计含有数组的输入函数并由键盘输入所需要的数据,如姓名,休息日等,再通过建立安排时间的函数对输入的信息进行处理,并最终通过输出函数输出所有合适的方案。
3.2函数模块、功能分析、参数说明
1.定义结构体
建立结构体structpeopleclass并分别定义其成员。
利用结构体用来定义存储由键盘输入所需要的数据,七位员工的姓名和相应的休息日。
2.输出欢迎界面函数
建立输出欢迎界面函数intCoutInterface(peopleclass*people)。
利用此函数用来输出该系统的欢迎界面。
3.输入保安姓名函数
建立输入保安姓名函数intCinName(peopleclass*people)并调用结构体,通过for循环和next指针变量进行输入保安姓名。
3-1输入保安姓名函数流程图
4.输入保安休息日函数
建立输入保安休息时间函数intCinDay(peopleclass*people),通过数组和指针变量以及if选择语句进行输入休息日期。
3-2输入保安休息日函数流程图
5.安排时间函数
建立时间安排程序intCoutPeople(peopleclass*people,intd,abcde*No),并通过for循环和不断赋值而建立时间安排程序。
6.输出函数
建立输出函数intcoutf(peopleclass*people,abcde*No),利用for循环和指针变量依次输出所得方案。
3-3输出函数流程图
7.主函数
通过主函数调用定义结构体,CoutInterface(people)函数,CinName(people)函数,CinDay(people)函数,CoutPeople(people,namber,No)函数,
coutf(people,No),来完成员工休息日安排这一工作。
3-4主函数流程图
第四章软件使用说明
该软件为管理者提供了一种自动排班功能,可任意选定员工的休息日,软件可自动生成最为合理的排班方案。
进入程序后,如图所示:
图4-1欢迎界面
输入保安姓名:
图4-2输入保安姓名
程序运行展示:
1.只输出一组结果:
图4-3输出一种结果的排序输入
结果:
图4-4输出一种结果
2.输出多组结果(按题目中的休息日输入)
图4-5输出多种结果的排序输入
图4-6输出多种组合
第五章课程设计心得与体会
程序设计是一次让我们综合自己所学习的知识,把他应用到实际的一次机会,平常我们学的编程语言总显得那么的不灵活,很多时候我们一本书学下来了,仍编不出一个简单的程序,通过对一个小项目功能的实现,我们不仅重温了平时所学的知识点,还增强了自己的动手能力。
对于一个程序,在我看来,最重要的莫过于思路,同一个程序可以由多个思路来实现,然而我们所要做的就是通过多次的编码调试找出最简,最优思路。
好的思路能无疑能使一个程序员实现事半功倍的效果。
接着就要根据自己的思路为该程序设计算法,只有轮廓形成后才能开始编码,编写的过程中还应搜索记忆中的语言基础,找到最简便的表达方式,增加程序的可读性,代码编写完成后,经过多次编译后无错误了也不代表程序就完成了,运行程序时还应通过多组不同情况,看能否实现。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
通过这次课程设计之后,让我养成了编程的好习惯,就是先列清自己的思路,写清自己的算法,必要时还要画流程图,编写程序时也不是依次由上而下写,而是先把主要函数列出来再一一编写。
通过这次实践,我对很多函数有了新的认识,我也明白了写程序的基本过程和基本方法。
这次课程设计总的来说让我受益匪浅。
我相信,只要自己在每一次实践中都能仔细思考,课程设计其实都不会很难,关键在于自己能不能认真思考,能不能亲自动手做实验,而不是想着其他人的劳动果实,其次你还要多操作,只有多操作才能从中发现问题,才能及时请教,解决问题,从而更好的掌握书本中知识。
还有通过这次实践也让我懂得了:
学校安排课程设计目的不在于你做了多少,不在于你做得好不好,关键在于你能否认真去对待,在于你能否通过这次设计对课本上知识有了更深刻的认识,在于能否从中学到书本上学不到的知识。
因此,我会认真地对待我的每一次实验。
附录一参考文献
[1]谭浩强编著.C++程序设计.北京:
清华大学出版社,2005
[2]谭浩强编著.C++程序设计解题与上机指导.北京:
[3]谭浩强编著.C程序设计(第二版).北京:
清华大学出版社,1999
[4]谭浩强编著.C程序设计设计解题与上机指导(第二版).北京:
[5]孙淑霞等C/C++程序设计实验指导与测试(第2版),电子工业出版社,2007.1
附录二程序代码
#include<
iostream>
string>
stdlib.h>
usingnamespacestd;
structpeopleclass
{
stringname;
intday[7];
intmax;
inta;
};
structabcde
intb[7];
structabcde*next;
}*p1,*p2;
//////////////////////////////////////////////////////////////////////////////////欢迎界面
intCinInterface(peopleclass*people)
{cout<
<
"
****************欢迎进入排班系统*****************\n"
;
cout<
#\t\t特别注意!
\t\t\t#\n"
#\t请各位员工按照提示输入\t\t\t#\n"
#\t先输入自己的姓名\t\t\t#\n"
#\t然后输入自己想要休息日\t\t\t#\n"
#\t\t\t\t\t\t#\n"
return0;
}
////////////////////////////////////////////////////////////////////////////////
intCinName(peopleclass*people)//输入保安名字
inti,j;
for(i=0;
i<
7;
i++)
{
cout<
endl<
输入保安名字:
cin>
>
people[i].name;
people[i].max=0;
people[i].a=0;
for(j=0;
j<
j++)
people[i].day[j]=0;
}
//输入保安选择的休息时间
intCinDay(peopleclass*people)
inti,x,z=0;
i++,z=0)
endl
<
people[i].name
合适的休息日是(输入数字1-7表示周一到周日):
do
cin1:
x;
if(x>
=0&
&
x<
=7)
if(x==0&
z!
=1)
输入错误!
必须要选择合适的休息时间,请重新输入:
gotocin1;
if(x==0)
break;
people[i].day[x-1]=1;
z=1;
else
请重新输入:
people[i].max++;
添加合适的休息时间(选择“0”退出):
}while
(1);
////////////////////////////////////////////////////////////////////////////////////
intCoutPeople(peopleclass*people,intd,abcde*No)//安排时间
for(intk=0;
k<
k++)
if((people[k].day[7-d]==1)&
(people[k].a==0))
people[k].a=1;
p1->
b[7-d]=k;
if(d==1)
p2=p1;
p1=newabcde;
p2->
next=p1;
next=NULL;
for(intj=0;
b[j]=p2->
b[j];
inte=d-1;
CoutPeople(people,e,No);
people[k].a=0;
///////////////////////////////////////////////////////////////////////////////////////
intcoutf(peopleclass*people,abcde*No)//输出函数
abcde*p1;
p1=No;
for(;
p1->
next!
=NULL;
p1=p1->
next)
j=p1->
b[i];
people[j].name<
的休息日是"
星期"
i+1<
endl;
//符合时输出
}cout<
//////////////////////////////////////////////////////////////////////////////////////
//主函数
intmain()
structpeopleclasspeople[7];
intnamber=7;
abcde*No=newabcde;
No->
CinInterface(people);
CinName(people);
CinDay(people);
CoutPeople(people,namber,No);
coutf(people,No);
return0;
(本资料素材和资料部分来自网络,仅供参考。
请预览后才下载,期待您的好评与关注!
)