课程设计-座-理发师系统1.doc

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课程设计-座-理发师系统1

摘 要 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。 通过对《操作系统》这门课的学习后,要求我们能够在深刻理解和应用有关经典进程的同步和互斥问题之余,能够模拟解决打瞌睡的理发师问题。要求以输出字符串的形式表示理发师和顾客的行为。 理发师问题是一个利用信号量进行P、V操作的经典问题。设计程序实现此问题,要使得理发师的活动与顾客的活动得到各自真实的模拟。所执行的程序应体现:理发师在没有顾客的时候去睡觉,有顾客则工作;顾客在理发师工作时坐下等待,无座时离开,直至等到理发师自己理发。 关键字:理发师;顾客;PV操作 目 录 摘 要 1 1 设计要求 1 1.1初始条件 1 1.2技术要求 1 2 需求分析 2 2.1具体需求 2 2.2系统实现步骤 2 3 总体设计 3 3 3.2各功能之间的调用关系 4 3.3创建数据结构 6 4详细设计 6 4.1控制营业开始的模块 7 4.2建立一个理发类 7 4.3理发功能模块 8 5系统实现原理 15 6程序运行界面 18 6.1进入程序友好界面 18 6.2理发店营业界面 19 6.3理发店服务界面 20 6.4 询问是否继续工作界面 21 6.5 无顾客界面 22 6.6理发店尚未营业的界面 23 6.7退出程序的界面 23 7 设计总结 24 参考文献 25 致 谢 26 附录 27 1 设计要求 1.1初始条件 (1)操作系统:Windos (2)程序设计语言:C++语言 (3)设有三个理发师,3把椅子(另外还有三把理发椅),几把椅子可用连续 存储单元。 1.2技术要求 (1)为每个理发师/顾客产生一个线程,设计正确的同步算法。 (2)每个顾客进入理发室后,即时显示“work=1” 及其线程自定义标识,还同时显示理发室共有几名顾客及其所坐的位置。 (3)为每位顾客提供一个等待沙发 (4)若等待人数达到上限则新来顾客离开理发店 (5)若理发师理发人数达到3人,则可以询问理发师是否继续工作 (6)若理发师工作状态为0,则理发店关门 (7)若理发师继续工作且无顾客则理发师进入睡眠状态 (8)至多有6个顾客,每人理发至少3秒钟。 (9)多个顾客须共享操作函数代码。 (10)本操作实现并发、并行、进程同步。 2 需求分析 2.1具体需求 通过设计模拟解决打瞌睡的理发师问题,为理发店提供高效便捷的服务。理发店内有三名理发师,三把理发椅,和N把普通的椅子。要实现如果没有顾客来,那么理发师就坐在理发椅上打瞌睡;当顾客到来时,就唤醒理发师。如果顾客到来时理发师正在理发,顾客就坐下来等待。如果N把椅子都坐满了,顾客就离开该理发店到别处去理发。 理发师刚开始理发时,先看看店里有没有顾客,如果没有,则在理发椅上打瞌睡;如果有顾客,则为等待时间最长的顾客理发,且等待人数减1。顾客来到店里,先看看有无空位,如果没有空位,就不等了。离开理发店;如果有空位则等待,等待人数加1;如果理发师在打瞌睡,则将其唤醒。 2.2系统实现步骤 这是一个很简单的程序,除了用到main()函数之外,还用到了一个lifa类函数来产生随机数、lifa()、lifashi();另外也用到了for循环和if嵌套语句。 设计的原理是:在开始程序是,先由程序员输入椅子数chairs,然后询问程序员是否开门营业:若程序员输入‘y’,则开门营业;若输入‘n’,则持续询问程序员是否营业。 在刚开门营业之后,先随机产生顾客:若没顾客来,则理发师打瞌睡,再次进行产生顾客;若有顾客来,则直接为顾客理发。 在为顾客理发期间,程序自动产生顾客,最多产生3个顾客。顾客进来后,先看看理发师是否在理发,是则看看是否有空椅子,若有则坐下,无则离开。如果理发师正空闲,则直接为顾客理发。 当理发完成之后,先判断已经为多少人理发了,如果未超过3人,则继续营业。若已超过,则询问程序员是否继续营业。 若继续理发,则先判断是否有人等待,若有则先为等待最久的顾客理发,若没则理发师打瞌睡,程序继续回到随机产生顾客。 3 总体设计 题目中要求描述理发师和顾客的为,因此需要两类程和 ()分别描述理发师和顾客的行为。理发师和顾客之间同步关系当理发师时顾客近来需要唤醒理发师为其理发,当有顾客时理发师为其理发,没有的时候理发师理发师和顾客之间互斥关系由于每次理发师只能为一个人理发,且可供等侯的椅子有限只有n,即理发师和椅子是临界资源,所以顾客之间是

文档评论(0)

132****6080 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档