专业课程设计I报告_B09040218讲述.doc

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

教师对学生的项目评分——进程的同步与互斥 一、课题内容和要求 课题内容: 在一个班上有S个学生。每个学生都要做一个项目,每一个项目由K个老师一起评分。总共有M个老师。每个老师最多给N个项目评分。其中,S*K=M*N。 在项目结束后,老师们提供T分钟用来检查学生们的项目。检查每一个学生的项目需要用时D分钟。其中,TD。每一个学生的项目由K个老师共同来检查。在T分钟的时间段内,学生可以在任何时间进入教室(random),除了在最后的D分钟内。所有的老师一直保持工作状态直到他检查完N个项目或者是T分钟过去后。T分钟过去后,所有的老师和同学都必须离开教室。另外,在T分钟结束前的D分钟内(即在最后的D分钟内),如果有任何老师或者是学生都处在没有任务的状态下,都必须离开教室,因为已经没有时间让他完成任务了(因为一个项目检查的时间是整整D分钟)。 要求: 用一个程序来模拟上面描述的作业检查过程。每一个学生和每一个老师应该用不同的线程来完成。可以选用C、C++和Java作为开发语言,但是考虑到专业课程设计I的实验大纲,请尽可能使用Java语言。 二、需求和思路分析 当一个学生进入教室后,他立即开始找K个没有任务的老师(一次找一个老师,假如没有空闲的老师,则等到有老师为止),找齐K个老师之后给老师检查,然后离开教室。刚开始每一个老师都是处于空闲状态直到他被学生找到,被学生找到后只能等待,直到学生找齐K个老师(在等待学生找其他老师的时间里,他是不能接受其他同学检查作业的请求的),当学生找齐K个老师后,老师们执行完检查任务,然后重新变成空闲状态。每个老师在总共检查了N个学生的作业后,离开教室。并不保证所有的学生都在T分钟的时间段内完成了检查,还要注意不能发生死锁问题。 设计一个学生线程,一个老师线程,并将共享代码块用synchronized锁起来,使在同一时间,只有一个学生线程使用此代码块。 一个学生线程执行下面的步骤: (1) 选择一个进入的时间(random()%(T-D))minutes ; (2) 进入教室; (3) 选择K个空闲的老师,若找不齐,则等待; (4) 找齐后,做D分钟的检查; (5) 检查完毕离开教室。 一个老师线程执行下面的步骤: (1) 在教室中空闲; (2) 直到被一个学生选择后等待(所有K个老师聚集); (3) 等待结束项目检查开始; (4) 做D分钟的项目检查; (1)—(4)步骤重复N次…… (5) N次检查完毕或者T分钟时间到,离开教室。 三、概要设计 学生线程(Student.java): class Student extends Thread{ public int K,J,T,D; //每个学生找K个老师检查 第J个同学 public int numTeacher; //传递教师人数 public int numK=0; //统计找到老师数 Teacher [] teacher; //传递教师指针 操控教师数组 public int [] pos; //创建存储选择老师的下标的数组,供释放使用 Random ran1=new Random(); int n; //存放最小的需求 初值为开始时需要老师数 public Student(int K,int J,int T,int D,Teacher [] teacher,int numTeacher); //构造函数 public void run(); //学生线程需要执行的代码 } 老师线程(Teacher.java): public class Student extends Thread{ public int K,J,T,D; //每个学生找K个老师检查 第J个同学 public int numTeacher; //传递教师人数 public int numK=0; //统计找到老师数 Teacher [] teacher; //传递教师指针 操控教师数组 public int [] pos; //创建存储选择老师的下标的数组,供释放使用 Random ran1=new Random(); int n; //存放最小的需求 初值为开始时需要老师数 public Student(int K,int J,int T,int D,Teacher [] teacher,int numTeacher); //构造函数 public void run(); //老师线程需要执行的代码 } Check.java: class check { public static i

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档