C语言排班系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

xxxxxxxxx大学
设计报告
课题名称:排班系统
学院:xxxxx
专业班级:xxxxxxxxxx
学号:xxxxxxx
学生:xxxx
指导教师:xxxx
Xxxxxxx
Xxxx年 xx月 xx 日
学生Xxxx 指导教师Xxx 课题名称排班系统设计时间Xxxx 设计地点Xxxxx
设计目的学习综合运用C高级语言课程和其他先修课程的知识,提高分析和解决实际问题的的能力,进一步巩固、加深和拓宽所学的知识;进一步加强结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。

对于保安休息日的合理安排,使他们的工作效率更高。

使我掌握了许多更多的C 语言知识。

指导教师评语
评语等级
很好地完成课程设计任务,报告书写规范、层次清晰,
文字表达流畅,设计内容完整、新颖,记录详细。

能够
运用所学知识,进行分析问题、解决问题。

答辩时对设
计项目过程把握程度好,回答问题思路清晰,语言流利,
内容准确。

优秀
较好地完成课程设计任务,报告书写较规范,文字表达
通顺,设计内容较完整,记录较详细。

能够运用所学知
识,进行问题分析,解决问题。

答辩时回答问题思路较
清晰,语言基本流利,内容基本准确。

良好
较好地完成课程设计任务,报告书写较规范,文字表达
较通顺,设计内容较完整,记录不够详细。

答辩时回答
问题思路基本清晰,语言基本流利,内容基本完整准确。

中等
基本完成课程设计任务,报告书写一般,文字表达较通
顺,设计内容基本完整,记录不够详细。

答辩时回答问
题思路基本清晰,语言不够流利,内容基本准确。

及格
未能按照课程设计要求完成课程设计任务,报告书写不
规范,设计不完整或提交资料不完整,答辩时表述不清
晰,问题回答不准确。

不及格评定等级:
系部教研室意见
一、需求分析(设计目的)
排班系统是对7名保安上班的时间进行规划,使他们时间不冲突。

我对于这个排班系统进行了简化,使其输入数字代替星期几,不过需要在每个人后面加上-1进行运算才行。

在这个排班系统界面中,会显示一个人的人名,在他的后面输入数字代表他要星期几休息,在最后加上-1按回车,会显示下一个的人名,一直重复上面的步骤。

最后显示的是每个人在最合理的时间上班。

伴着信息技术的发展,可以采用计算机完成排班,实现自动化和智能化的排班。

此外,排班工作的事后统计比较繁杂,容易发生错误或遗漏等现象。

为使排班更加合理,更加科学,方便企业规范公司的日常管理,提升企业员工工作效率,排班系统的设计和开发是急待需要完成的。

因此,笔者就排班的管理信息系统作为选题进行研究。

本论文最主要是在于排班管理系统数据库设计及相应模块功能实现的研究与分析,通过面向对象和结构化相结合的方式实现对开发
环境和开发方法的研究分析。

从系统方便与安全的角度出发,三层C/S结构是我们在系统的结构选择中较为理想的目标。

它主要包括数据库访问层、表示层和业务逻辑层。

本文通过对该系统中的各个模块进行比较细致的描述,并对存在于系统开发中的困难、相应处理方法及排班算法的实际运用进行重点的论述,在完成信息化系统的设计,以此来优化排班工作,增强工作
质量,提升工作效率。

在系统的需求分析部分,笔者首先就对排班的规则、模块划分和用例的分析进行了阐述;然后,对假期模块的设置、班表模块的管理和规则模块的维护等进行了说明。

在系统设计部分,则主要设计了系统的构架、数据库系统和系统的功能。

本系统被分为前台和后台这两大模块。

前庭主管对员工的值班、轮岗是根据具体的情况进行及时的调度以及合理有序的安排。

前庭主管模块是为前庭主管而设计的,前庭主管进入登录界面,主要实现对员工的排班和调度。

用户在运用后,对系统的反响效果不错,满足了用户对排班系统的实际需求。

二、总体设计
程序分为三大基本结构、输入函数、选择判断结构、输出函数。

图1 系统模块图
总体是分为三个部分,输入界面、选择判断、输出界面。

输入界面又分为两个小部分,一个是输入空闲的时间,也就是输入保安想要休息时间的数字,比如星期一,可以输入1来代表。

另一个是存储每个人空闲的时间,用for循环和二维数组结合实现的。

判断选择模块,细分为判断每个人时间是否冲突、选择每个人最合适的时间、存储时间三个小部分判断每个人时间是否冲突运用了for循环和if的组合,选择每个人最合适的时间运用了switch语句,
最后把所选的时间存储起来。

输出界面就是printf的运用和结合上面的模块进行输出的。

图2 程序流程图
三、详细设计与实现
3.1详细设计
1、输入函数和输出函数变量的定义for语句和switchcase语句ss字符串的使用等输入函数
函数原形自定义swap(intaintb)函数
功能swap()函数利用取地址符号完成对程序中某个变量的赋值进而程序中判断交换的功能void swap(int *a,int *b)
{
int m;
m=*a;
*a=*b;
*b=m;
}
函数原形getchar4
功能向计算机输入一个字符,输入每个人想休息的时间
变量及类型
intabmk整型形参变量接收main()传过来的随机数字inti循环控制变量其中i具有自加功能
intj整型形参变量其中j具有自加功能
说明输入字符后需要输入1待系统做出判断后往下执行
运用二维数组存储每个人的空闲时间。

for(i=0;i<7;i++)
{printf("%s:",ss[i]);
for(j=0;j<7;j++)
{scanf("%d",&rest[i][j]);
if(rest[i][j]==-1)
2、选择判断结构
选择每个人对应的星期几。

switchcase语句从表达式值等于某个case语句后的值开始它下方的所有语句都会一直运行直到遇到一个break为止随后switch语句将结束程序从switch结束大括号之后的第一个语句继续执行并忽略其他case假如任何一个case语句的值都不等于表达式的值就运行可选标签default之下的语句
switch(list[i])
{case 1:printf("星期一");
break;
case 2:printf("星期二");
break;
case 3:printf("星期三");
break;
case 4:printf("星期四");
break;
case 5:printf("星期五");
break;
case 6:printf("星期六");
break;
case 7:printf("星期七");
break;
default:
break;
判断每个人是否冲突,假如表达式的值和任何一个case标签都不匹配同时没有发现一个default标签程序会跳过整个switch语句从它的结束大括号之后的第一个语句继续执行
for语句for(语句1语句2语句3)循环体
执行时先执行一次语句1(注意只执行一次)之后判断语句2是否成立1)如果成立执行循环体之后执行语句3再返回语句2判断条件是否成立成立执行循环体后再执行语句3如此直到循环体不成立则跳出循环
for(i=0;i<7;i++)
{printf("%s:",ss[i]);
for(j=0;j<7;j++)
{scanf("%d",&rest[i][j]);
if(rest[i][j]==-1)
break;
如果语句2不成立则不执行循环体也不执行语句3直接跳出循环
存储每个人经过判断的时间。

3、输出函数函数原形printf()
功能输出相关提示信息及最后结果3相关变量intn输出正确结果intij输出计算正确计算排班情况4说明输出时要把要输出的信息用双引号括起来输出数字时要在其代表变量前加逗号。

输出每个人的姓名
printf("赵钱孙李周吴陈\n");
printf("=============================\n");
输出每个人合适的时间
switch(list[i])
case 1:printf("星期一");break;
case 2:printf("星期二");break;
case 3:printf("星期三");break;
case 4:printf("星期四");break;
case 5:printf("星期五");break;
case 6:printf("星期六");break;
case 7:printf("星期七");break;
3.2实现界面
通过这些语法的使用输入函数和输出函数、变量的定义、for语句和switch-case语句的使用等,输入每个保安的休息时间,最后经过该程序,输出最后符合每个人要求的排班表。

图3当有两种结果的界面
图4当都不符合时的界面
图5当有多种可能时的界面
四、遇到的问题及解决方案
我在设计程序程序的过程中遇到了不少问题首先遇到的问题是使用何种数组以及如何使输出变得简洁易懂易操作要开发出满足用户需求的软件产品,首先要了解用户的需求。

深入了解软件需求是软件开发成功的前提。

无论人们如何做好设计和编码工作,不能真正满足用户需求的程序只会让用户失望,给开发人员带来麻烦。

一种需求分析的任务不是确定系统如何完成工作,而是确定系统必须完成的工作,即对目标系统提出完整、准确、清晰、具体的需求。

在思考讨论之后我决定尽量使输入数字化输出结果文字化的做法也就是再输入星期几的时候直接用数字代替在输出的时候为了更加直观就需要把原先的数字输出为星期几这种文字的形式在单个对象输出结束之后我选择了1这个不会与其他日期混淆的数字以此表示可以对下一个对象进行输出这就需要重新定义一个二维数组数组中存放星期一星期二等文字形式的定义这样我们可以通过前面输入的数字来引用对应的文字解决了最基本的问题之后我们遇到的问题是程序使用过程还是不够直观不能让使用者直接观察到每个保安可能选择的休息日在无法自行解决的情况下。

我重新定义了ss字符串采用了charss数组选择了charss数组之后遇到的问题就是输出语句繁琐每次都会显示请输入下列人选择休息的可能时间后来我们对printf(请输入下列人选选择休息的可能时间)这个语句进行修改与位置的调整使得其变得简洁调试过程比较繁琐
除了跟版本有一定的关系外有时候就因为一个小错误程序调试了好久也出不来想要的结果。

图6出现错误时的界面
五、总结与体会
通过设计这次磨砺,我这把小刀变得更锋利了。

我的能力也提高了。

所以它对于我来说有着十分重要的意义。

我会运用从中得到的宝贵经验来指导我今后的学习和工作,不断的实践,不断地学习,让自己变得更加充实自己,更有内涵,更适合于社会发展的需要。

计算机和通信技术的飞速发展极大地改变了企业的经营管理方法,为了提高企业的竞争力,各行各业在建立了事务处理系统多年后正逐步建立企业自身的决策支持系统。

日常排班系统是公司、企业管理的一项日常工作,一种公平、合理的排班方法对于调动工作人员的工作积极性、提高工作效率都具有重要的意义。

目前排班系统主要都是基于手工排班的方式来考虑的而且约束条件较多,所以利用计算机进行排班的思想自然而生。

并非所有的问题都有简单而明显的解决方法。

事实上,许多问题无法在预定的系统规模或时限内得到解决。

如果没有可行的解决方案,那么任何时间、人力、软硬件资源和资金投入到项目上都是不必要的浪费。

一种可行性研究的目的是确定问题能否在最短的时间内以最低的成本得到解决。

中国风格对于系统的可行性分析,首先要推导出系统的逻辑模型,然后从系统的逻辑模型出发,探索几个主要的解决方案(即系统实现方案)。

应仔细研究每种解决方案的可行性。

一般来说,每种方案的可行性至少应从技术可行性、经济可行性和操作可行性三个方面进行研究。

根据以上分析,本系统的可行性研究。

我体会到想要学好一个程序不仅要上课认真听老师讲还要在课外多阅读一些相关的资料和书籍同时相关的资料对我完成程序的编写提供很大的帮助除此之外我还认识到编写程序时必须要耐心仔细真可谓细节决定成败一个标点和字符或是中英文等输入细节都要注意否则就可能导致整个程序运行错误这极大地培养了我发现问题的科学素养此外思考讨论查找资料以及调试修改的过程是非常繁琐的但是我要尽量做到尽善尽美只有这样才能设计出简洁的比较人性化的程序。

经过两周的努力,我终于完成了课程设计,这是一个艰苦而漫长的过程。

是的,这是多
年阅读后的第一次课程设计。

看着劳动的成果,我很高兴!虽然不是我一个人做的,但这是你们所有人的共同努力。

一种也许不是!我两周前说过,干掉他没关系!一周前我说过,现在我可以说:哈哈,结束了!一开始,我一点头绪都没有,所以我去图书馆找资料,找到一些图片,但是这个小小的进步远远不够,只是一个小小的开始。

下一步是在线搜索并找到一些类似的主题。

那时,每个人都很高兴,但那不是我想要的。

所以我在网上搜索了一些相关的功能等等。

最后,在大家的努力下,我完成了这个项目。

虽然在电脑上编程有点累,但当你看到劳动的结果时,你心里真的有了不同的滋味!世上没有难事,只怕有心人,的确。

完成这个节目后最大的收获就是感受到集体的力量,当然个人的智慧也很重要!一种完成课程设计后,我的自信心提高了,我可以编写程序。

虽然对于有些人来说,这个程序会很简单,但是对于我的C语言初学者来说,这并不容易。

这段经历增强了我将来学习电脑的信心。

享受劳动成果真是太好了!
当时我已经忙了一个多星期了。

在大家的共同努力下,我终于设计出了这个程序。

虽然不是我一个人完成的,但我还是很高兴,因为在设计过程中,我学会了设计一个大规模的程序,找到信息是非常重要的。

在其他程序的基础上,根据所学进行修改和调试,最终设计出自己想要的程序。

这个过程很艰难,但只要你坚持不懈,成功就在眼前。

一种此外,坚实的基础也是非常重要的,因为如果你平时学得不好,你可能会在面对这样一个困难的项目时被吓倒。

很难看到别人的程序,更不用说自己设计了。

解决这个问题。

最好向你的同学和老师请教。

别害怕尴尬。

尤其是教师,评论他们多年的编程经验,来解决我的问题,对他们来说只是小事一桩。

一种在设计这个程序的时候,我根据老师提供的数据,通过画图和循环的方式设计了这个框架,但是我接下来做不到。

计算是一个重点和难点。

我也检查了相应的数据,但这是通过使用坐标来完成的。

所以为了便于程序的设计,我还改变了坐标进行了计算,解决了问题。

接下来是关键问题。

我数据是用鼠标制作的,所以我们只能自己设计关键功能。

幸运的是,我手头有类似的数据。

经过我和同学们反复的尝试和讨论,这并不难。

最好由我来决定。

最后是数组。

这种设计方法非常严格。

它是一种类型。

计算很麻烦。

有必要确定它的位置,但只要你愿意尝试,这些问题就可以解决。

从一个多星期的设计过程中,我看到了自己的努力和努力,也让我知道精神的力量是无价的。

虽然我在过去的一年里没有太多的接触,但我之间的友谊已经深深扎根在我的心中。

当我遇到问题时,我会努力前进的。

通过近期的学习,本人切实的感觉到了自身的提高,在此感谢老师安排的此次学习的必要的,非常精彩的活动,感谢每-位授课老师精彩的授课。

此次的培训学习,使自己的理论基础,道德水准,业务修养等方面有了比较明显的提高,进-步增强了学习理论的自觉性与坚定性,增强了做好新形势下本职工作的能力和信心。

在完成本次课程设计的过程中一方面让我们在实际运用中更加深刻地理解了课堂学到的知识另一方面通过查询资料培养了我在有限时间内搜集资料以及写论文的能力与此同时在编写程序。

由于时间和个人技术关系,本系统还有一些不足和值得改进的地方,具体说来有程序中错误处理和输入控制不够全面,可能导致输入无效引发错误,设计还有待优化。

相关文档
最新文档