《操作系统》打瞌睡理发师课程设计.doc_第1页
《操作系统》打瞌睡理发师课程设计.doc_第2页
《操作系统》打瞌睡理发师课程设计.doc_第3页
《操作系统》打瞌睡理发师课程设计.doc_第4页
《操作系统》打瞌睡理发师课程设计.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课课 程程 设设 计 论文 计 论文 课程名称 操作系统 题目名称 打瞌睡理发师问题 学生学部 系 信息与计算机学部 专业班级 08 计算机科学与技术 3 班 学 号 学生姓名 指导教师 2010 年 12 月 28 日 课程设计 论文 任务书课程设计 论文 任务书 一 课程设计 论文 的内容 模拟解决打瞌睡的理发师问题 理发店内有一名理发师 一把理发椅 和 N 把普通的椅 子 如果没有顾客来 那么理发师就坐在理发椅上打瞌睡 当顾客到来时 就唤醒理发师 如果顾客到来时理发师正在理发 顾客就坐下来等待 如果 N 把椅子都坐满了 顾客就离开 该理发店到别处去理发 理发师刚开始理发时 先看看店里有没有顾客 如果没有 则在理发椅上打瞌睡 如果 有顾客 则为等待时间最长的顾客理发 且等待人数减 1 顾客来到店里 先看看有无空位 如果没有空位 就不等了 离开理发店 如果有空位则等待 等待人数加 1 如果理发师在 打瞌睡 则将其唤醒 二 课程设计 论文 的要求与数据 1 需求分析 2 系统设计 3 模块代码能正常运行 4 提供合理的测试数据 5 设计说明文档 三 课程设计 论文 应完成的工作 1 采用模块化的程序设计方法 程序书写符合规范 代码应完善 2 要有运行结果和过程的界面截图 3 对系统进行初步的错误和漏洞检测 4 根据论文规范撰写论文 用A4纸打印并按时提交 题目名称打瞌睡理发师问题 学生学部 系 信息与计算机学部 专业班级2008 级计算机科学与技术 3 班 姓 名 学 号 四 课程设计 论文 进程安排 序号设计 论文 各阶段内容地点起止日期 1 搜集资料图书馆 10 12 10 12 14 2 需求分析图书馆 10 12 15 12 18 3 系统分析与设计图书馆 10 12 19 12 25 4 功能模块的实现图书馆 10 12 26 12 30 5 系统测试 运行图书馆 11 1 2 1 3 6 完成课程设计 论文 图书馆 11 1 4 1 5 五 应收集的资料及主要参考文献 1 郁红英 李春强 计算机操作系统 北京 清华大学出版社 2008 2 孟庆昌 操作系统 北京 电子工业出版社 2009 3 汤子瀛 哲凤屏 计算机操作系统 北京 电子工业出版社 2009 4 尤晋元 史美林等 windows 操作系统原理 北京 机械工业出版社 2001 5 孟静 计算机操作系统原理教程 北京 清华大学出版社 2005 6 广树建 新编 C C 程序设计教程 广州 华南理工出版社 2008 发出任务书日期 发出任务书日期 20102010 年年 1212 月月 1010 日日 指导教师签名 指导教师签名 计划完成日期 计划完成日期 20112011 年年 1 1 月月 5 5 日日 摘要摘要 通过对 操作系统 这门课的学习后 要求我们能够在深刻理解和应用有关经典进程的 同步和互斥问题之余 能够模拟解决打瞌睡的理发师问题 要求以输出字符串的形式表示理 发师和顾客的行为 由程序员输入理发店内的普通椅子数和决定是否营业 在刚开门时 理 发师为顾客理发时和理发师打瞌睡的时候随机产生顾客 但在理发师为某个顾客理发期间最 多只能产生 6 个顾客 在理发师完成为 5 个顾客理发之后 可以决定是否停止营业 关键词 关键词 Visual Studio 2005 打瞌睡理发师 C 语言 目录目录 1 1 序言序言 1 1 2 2 程序流程图 程序流程图 1 1 3 3 程序代码 程序代码 2 2 4 4 运行示例 运行示例 4 4 总结总结 7 7 参考文献参考文献 7 7 1 1 1 序言序言 这是一个很简单的程序 除了用到 main 函数之外 还用到了一个 rand 函数来产生 随机数和一个 Sleep 函数来产生停顿时间 另外也用到了一个 for 循环 两个 goto 语句 和 几个 if 嵌套语句 设计的原理是 在开始程序是 先由程序员输入椅子数 chairs 然后询问程序员是否开 门营业 若程序员输入 y 则开门营业 若输入 n 则持续询问程序员是否营业 在刚开门营业之后 先随机产生顾客 若没顾客来 则理发师打瞌睡 再次进行产生顾 客 若有顾客来 则直接为顾客理发 在为顾客理发期间 程序自动产生顾客 最多产生 5 个顾客 顾客进来后 先看看理发 师是否在理发 是则看看是否有空椅子 若有则坐下 无则离开 如果理发师正空闲 则直 接为顾客理发 当理发完成之后 先判断已经为多少人理发了 如果未超过 4 人 则继续营业 若已超 过 则询问程序员是否继续营业 若继续理发 则先判断是否有人等待 若有则先为等待最久的顾客理发 若没则理发师打瞌睡 程 序继续回到随机产生顾客 2 2 程序流程图 程序流程图 开始 输 入 椅 子 数 对 不 起 尚 未 营 业 开 门 迎 接 客 人 顾 客 数 椅 子 数 离 开 理 发 师 理 发 完 成 N Y N Y 2 3 3 程序代码 程序代码 include include define random rand 10000 RAND MAX 用来产生随机数 void main int chairs 普通椅子数 int customers 0 顾客数 int count 0 循环中用来计量的 int waiting 0 等候理发的人数 int finish 0 已经理完发的人数 int work 0 理发师是否在工作 int sleeping 0 理发师是否在打瞌睡 char opendoor 理发店是否开门接待顾客 char blank 获取空白字符 printf 请输入理发店内的普通椅子数 n scanf d blank getchar printf 理发店内总共有 d 把普通椅子 n chairs printf 要开门接待顾客吗 y n n opendoor getchar while opendoor y printf 对不起 尚未营业 n blank getchar printf 要开门接待顾客吗 y n n opendoor getchar printf 开门迎接客人 n 开门接待顾客 if random 2 刚开门时随机产生顾客 分有顾客和没顾客两种情况 若为真 则有顾客 printf 刚开门就有顾客到来 n customers 顾客数加 1 printf 理发师为第 d 个顾客理发 n customers work 1 进入工作状态 Loop for count 0 random 2count 理发师为一个顾客理发的期间随机产生顾客 分 有顾客和没顾客两种情况 若为真则有顾客 且最多为来了五个 3 customers printf 第 d 个顾客到来了 n customers sleeping 0 设定理发师不在打瞌睡状态 if work 1 判断是否正为顾客理发 是则新来顾客等待 否则不用等待 if waiting4 完成为 4 个人理发的任务 询问理发师是否继续工作 printf 已经为 d 位顾客理发了 还有 d 个顾客在等待 是否继续工作 y n n finish waiting blank getchar opendoor getchar if opendoor n exit 0 sleeping 0 继续工作则改为清醒状态 if waiting 0 看看是否有人在等待理发 printf 有 d 位顾客等待 理发师继续为等待的顾客理发 n waiting waiting work 1 有则进入工作状态 4 goto Loop else 无则打瞌睡 if sleeping 0 printf 没有顾客来理发 理发师打瞌睡中 n sleeping 1 goto Loop 继续边打瞌睡边等顾客 else 刚开门时随机产生顾客 若为假 则无顾客 理发师打瞌睡 if sleeping 0 printf 没有顾客来理发 理发师打瞌睡中 n sleeping 1 goto Loop 4 4 运行示例 运行示例 运行程序显示出字符界面 按照提示设置椅子数目 并决定是否开门营业 若不开门 则 一直提示 开门则开始营业 顾客随机到来 程序自动运行 若理发完成数超过 5 并且没有人等 待 则理发师可以决定是否关门休息 界面如下 5 6 当选择相应的 Y 或 N 后就可以决定是否关门了 选择 Y 则关门 顾客将不能再进去理 发 否者继续理发 运行完成后 即可退出程序 7 总结总结 为期一个月的电脑游戏课程设计马上就要结束了 现在我来总结一下这一个月所学的内 容和感想 课程设计对学生而言是其对所学课程内容掌握情况的一次自我验证 从而有着极其重要 的意义 通过课程设计能提高学生对所学知识的综合应用能力 能全面检查并掌握所学内容 计算机操作系统 从课程性质上讲是一门专业基础课 它的目的和任务就是训练学生对计 算机操作系统的认识 让学生对计算机操作系统有更进一部的认识 进而增加其对学习和应 用相关专业课的兴趣 通过这次课程设计使我懂得了理论与实际相结合是很重要的 只有理论知识是远远不够 的 只有把所学的理论知识与实践相结合起来 从理论中得出结论 将结论用于实践 从而 提高自己的实际动手能力和独立思考的能力 在设计的过程中当然遇到了问题 可以说得是 困难重重 毕竟这是不可避免的 同时在设计的过程中发现了自己的不足之处 对以前所学 过的知识理解得不够深刻 掌握得不够牢固 由于能力有限 其中文档的编写是参考书上资 料 我想在以后的学习中 要更注重实践这一环节 通过这次课程设计使我们懂得了理论与 实际相结合是很重要的 只有理论知识是远远不够的 只有把所学的理论知识与实践相结合 起来 从理论中得出结论 才能真正为社会服务 从而提高自己的实际动手能力和独立思考 的能力 在设计的过程中遇到种种问题 同时在设计的过程中发现了自己的不足之处 对一 些前面学过的知识理解得不够深刻 掌握得不够牢固 通过这次课程设计之后 我们把前面 所学过的知识又重新温故了一遍 从设计过程看 在整整一个月的日子里 做到精益求精 学到了很多很多的东西 同时 不仅可以巩固了以前所学过的知识 而且学到了很多在书本上所没有学到过的知识 从设计 结果看 设计要求完成任务 达到了预期的目的 设计 演示效果较好 最主要是从中学到 了知识 参考文献参考文献 1 郁红英 李春强 计算机操作系统 北京 清华大学出版社 2008 2 孟庆昌 操作系统 北京 电子工业出版社 2009 3 汤子瀛 哲凤屏 计算机操作系统 北京 电子工业出版社 2009 4 尤晋元 史美林等 windows 操作系统原理 北京 机械工业出版社 2001 5 孟静 计算机操作系统原理教程 北京 清华大学出版社 2005 6 广树建 新编 C C 程序设计教程 广州 华南理工出版社 2008 心 得 体 会 课程设计是培养学生综合运用所学知识 发现 提出 分析和解决实际问题 锻 炼实践能力的重要环节 是对学生实际工作能力的具体训练和考察过程 随着科学 技术发展的日新日异 当今计算机应用在生活中可以说得是无处不在 因此作为 二十一世纪的大学来说掌握计算机开发技术是十分重要的 在设计的过程中 我遇到了不少的问题 感觉到很陌生 有时甚至束手无策 发现原来设计出一个规范的算法是很有学问的 经过老师的指导 同学们的帮助 再加上自己坚持和努力 才编写出一个比较合理的电脑游戏设计文档 虽然还存 在诸多问题 望老师见谅 通过

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论