1课程设计报告课程名称操作系统课题名称嗜睡的理发师问题专业信息管理与信息系统班级学号姓名指导教师2016年6月18日2湖南工程学院课程设计任务书课程名称操作系统课题嗜睡的理发师问题专业班级信管1301学生姓名学号指导老师审批任务书下达日期2016年6月3日任务完成日期2016年6月17日3一、设计内容与设计要求1.课程设计目的:《操作系统》课程设计是信管专业实践性环节之一,是学习完《操作系统》课程后进行的一次较全面的综合练习。其目的在于加深对操作系统的理论、方法和基础知识的理解,掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统的设计和实现思路,培养学生的系统设计能力,并了解操作系统的发展动向和趋势。进一步提高上机动手能力,培养使用计算机解决实际问题的能力,为后继课程的学习和实验,以及毕业设计的完成打下扎实的基础。2.课题题目嗜睡的理发师问题一个理发店由一个有N张沙发的等候室和一个放有一张理发椅的理发室组成。没有顾客要理发时,理发师便去睡觉。当一个顾客走进理发店时,如果所有的沙发都已被占用,他便离开理发店;否则,如果理发师正在为其他顾客理发,则该顾客就找一张空沙发坐下等待;如果理发师因无顾客正在睡觉,则由新到的顾客唤醒理发师为其理发。在理发完成后,顾客必须付费,直到理发师收费后才能离开理发店。试用信号量实现这一同步问题。3.设计要求:1.根据自己对应的课题完成以下主要工作:(1).分析设计要求,给出解决方案,建立必要的数据结构,然后设计总体流程(包括界面)、详细设计必要的算法,并最终显示结果。基于WINDOWS或LINUX操作系统都可以,用何种编程语言都有可以。(2).提交设计报告,包括设计要求、设计思想流程、设计所涉及的主要数据结构、程序清单、运行结果、设计心得、参考资料等。(3).严禁抄袭,复制设计内容,查出后相关同学设计成绩以零分处理。(4).所提交源程序应是能够运行通过的完整程序。(5).提交不少于5000字的课程设计报告,含系统说明,系统功能图,流程图,程序设计说明,源程序清单2.设计过程中既要虚心接受老师的指导,又要充分发挥主观能动性、独立思考、努力钻研、勤于实践、勇于创新。43.在设计过程中,要严格要求自己,树立严密、严谨的科学态度,必须按时、保质、保量完成任务。要求独立完成规定的设计内容,不得弄虚作假,不准抄袭或拷贝他人的程序或其他内容。4.不得迟到、早退、旷课。缺课节数达两次以上者,成绩按不及格处理。二、进度安排第15周星期一14:30—18:30星期三14:30—18:30星期四14:30—18:30第16周星期二14:30—18:30星期三14:30—18:30星期四14:30—18:30目录1需求分析....................................................................................................................................................11.1系统设计题目................................................................................................................................11.2问题具体描述................................................................................................................................11.3问题分析........................................................................................................................................11.4运行环境分析................................................................................................................................12总体设计....................................................................................................................................................12.1简要介绍........................................................................................................................................22.2概要设计流程图............................................................................................................................22.3数据结构说明................................................................................................................................23详细设计....................................................................................................................................................33.1详细设计流程图............................................................................................................................33.2C++语言定义相关的数据类型.....................................................................................................33.3各模块功能...................................................................................................................................44调试与运行结果........................................................................................................................................44.1调试...............................................................................................................................................44.2运行结果.......................................................................................................................................45心得体会....................................................................................................................................................66附录...........................................................................................................................................................66.1源代码............................................................................................................................................76.2参考文献....................................................................................................................................117评分表....................................................................................................................................................1211需求分析1.1系统设计题目理发店有三个理发师,有三张沙发。顾客来了理发师正忙可以坐在沙发上。理发师理完发可以从沙发上叫醒顾客理发。1.2问题具体描述理发店有三个理发师,有三张沙发。顾客来了理发师正忙可以坐在沙发上。理发师理完发可以从沙发上叫醒顾客理发。所以主要由理发师,沙发和顾客组成,当顾客数为零时,理发师休息,当顾客来时,判定理发师是否空闲,如果空闲则理发师理发。当顾客数超过理发师数时,理发师都忙碌,顾客则坐沙发休息,如果未理发的顾客数超过沙发数则顾客离开。1.3问题分析理发师问题是一个利用信号量进行PV操作的经典问题。设计程序实现此问题,要使得理发师的活动与顾客的活动得到各自真实得模拟。所执行的程序应体现:理发师在没有顾客的时候去睡觉,有顾客则工作;顾客在理发师工作时坐下等待,无座时离开,直至等到理发师自己理理发。1.4运行环境分析操作系统:windows7\8\2000\2003\xp运行环境:MicrosoftVisualStudio6.0内存:1GCPU:2.0GHz系统硬盘:30G2总体设计22.1简要介绍此程序主要完成下面各大功能(1)友好界面(2)实现本程序是否开始的功能。(3)实现理发师的理发功能。(4)设置控制程序结束的语句,可根据用户需要而结束程序2.2概要设计流程图图2.1概要设计流程图2.3数据结构说明本程序用到了数据结构中的队列,理发的顾客由随机函数产生,顾客遵从先到先理发的原则,但队列的长度限制为输入的理发店中的椅子的个数,当理发店的椅子没有空位的时候,到来的顾客主动退出加入队列。理发师对队列中的顾客进行先到先服务的原则理发。33详细设计3.1详细设计流程图图3.1详细设计流程图3.2C++语言定义相关的数据类型intchairs;//普通椅子数intcustomers=0;//顾客数intcount=0;//循环中用来计量的intwaiting=0;//等候理发的人数intfinish=0;//已经理完发的人数intwork=