




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告(三):面向对象程序设计-事件模拟科目:程序设计方法 专业:计算机科学与技术 班级: 计7 姓名: 风律澈 学号: 105032011130 日期: 2013.6.61 实验目的1、学习面向对象程序设计方法的基本思想。2、掌握在具体场景中对象的提取。3、掌握类之间的各种关系。4、掌握适用序列图/时序图来表示对象之间的交互关系。2 实验内容食堂位置的设置问题:某食堂需要设置足够的位置供学生在进餐时使用,其目的是确保在高峰期时每一个学生都有一个位置可用,且又不会由于设置过多位置造成浪费。输入:学生到达食堂的时间和就餐时间作为输入序列。要求:模拟学生进入食堂,买饭、就餐、离开的过程。并通过设置不同的买饭窗口观察窗口数对学生排队和设置就餐位置的影响。输出:在当前输入情况下,最高峰时学生就餐需要的座位数。基本要求:首先分析所要实现的系统,分析其中所隐含的对象;确定各个类之间的关系,画出类图;用交互图画出各个对象之间的关系。提示:对象是动作的主体,比如排队过程,这个事件该放在学生这个类中,学生为了排队,需要观察各个队列的长短,然后做出决定是排到哪个队列中。同时,整个模拟过程有个控制类,这个类从各个队列中获取要发生的事件,然后调用具体对象的方法实现。 3 程序设计3.1 类图分析其中蕴含的对象,抽象出类,并且画出类关系图 学生类到食堂吃饭时间:int 吃饭耗时:int生存时间:int选择窗口()修改生存时间(k)获得到食堂吃饭时间()获得吃饭耗时()获得生存时间()减少生存时间() 窗口打饭时间:int排队学生:int增加排队学生()获得排队学生()减少排队学生() 食堂窗口:窗口10最大学生数量:int学生数量:int插入k窗口排队(k)获得窗口k排队人数(k)从k窗口排队中移除(k)增加学生数量()减少学生数量()获得最大学生数量()获得学生数量()修改最大学生数量()3.2 序列图对所涉及个各个事件、对象交互关系,分别用序列图表示。至少画出控制类的调度序列图、学生排队事件序列图。其余可以自行扩展具体可以参考课件中序列图部分。生成对象Int n=0n+学生类处理餐厅.窗口处理输出食堂最大学生数量学生类处理NO食堂学生数量=0YESNew 食堂 最大学生数量=0 学生数量=0 New 窗口 打饭时间=1 排队学生数量=0New 优先队列 qNew 链表 sInt i=0i+New 学生t 到食堂时间 random(1189) 吃饭耗时 random(310)Q.add(学生t)YESi=10NONO食堂.窗口m.队学生数量0YES食堂.窗口m.队学生数量-m+食堂.学生数量+NO食堂.学生数量食堂.最大学生数量YES食堂.最大学生数量=食堂.学生数量int f=0fs.sizeYESSf.生存时间NOf+Sf.生存时间=0YESS.popn食堂.学生数量-f-4 实现4.1 程序实现把他们的实现放进去,最好能大概说明过程,或者程序中注释。如果对应多个文件,希望能够清楚说明,并分节。这里实现的每一个对象、事件希望能够和上面设计相对应。package 餐厅;import java.util.LinkedList;import java.util.PriorityQueue;import java.util.Random;import java.util.Stack;public class main /* * param args */public static void main(String args) / TODO Auto-generated method stub/ 1 /room dinnerholl=new room();PriorityQueue q=new PriorityQueue();LinkedList s=new LinkedList();for(int i=0;i300;i+)/假定学生人数100人Random random=new Random();int a=random.nextInt(120)+1;/食堂开放时间单位分钟int b=random.nextInt(20)+3;/每个人吃饭时间单位分钟,312分钟student st=new student(a,b);q.offer(st);int n=0;don+;/ 2 /if(q.peek()!=null) while(q.peek().getarrival()=n)student t;t=q.poll();int k=t.choosewindow();dinnerholl.inlist(k);t.set_during(dinnerholl.get_window_list_long(k);s.add(t);if(q.peek()=null)break;/ 3 /for(int m=0;m0)dinnerholl.outlist(m);dinnerholl.rise_now_student_number();if(dinnerholl.get_moststudentnumber()dinnerholl.get_nowstudentnumber()dinnerholl.reset_moststudentnumber(dinnerholl.get_nowstudentnumber();/ 4 /for(int j=0;js.size();j+)s.get(j).decrease_during();if(s.get(j).get_during()=0)s.remove(j);dinnerholl.decrease_now_student_number();j-;while(!s.isEmpty();/输出结果System.out.println(dinnerholl.get_moststudentnumber();-package 餐厅;import java.util.Random;public class student implements Comparable private int arrival;private int eattime;private int during;public student(int a,int b)this.arrival=a;this.eattime=b;Overridepublic int compareTo(student o) / TODO Auto-generated method stubif(this.arrivalo.arrival) return 1;if(this.arrivalo.arrival) return -1;return 0;public int getarrival()return this.arrival;public int geteattime()return this.eattime;public int choosewindow()Random random=new Random();int k=random.nextInt(10);return k;public void set_during(int list)this.during=list+this.eattime;public int get_during()return this.during;public void decrease_during()this.during-;-package 餐厅;public class room private int moststudentnumber;private int nowstudentnumber;private window windows;public room()this.moststudentnumber=0;this.nowstudentnumber=0;this.windows=new window10;for(int i=0;i10;i+)this.windowsi=new window();public void inlist(int k)this.windowsk.rise_student_number();public int get_window_list_long(int k)return this.windowsk.get_student_number();public void outlist(int k)this.windowsk.remove_student_number();public void rise_now_student_number()this.nowstudentnumber+;public int get_nowstudentnumber()return this.nowstudentnumber;public int get_moststudentnumber()return this.moststudentnumber;public void reset_moststudentnumber(int k)this.moststudentnumber=k;public void decrease_now_student_number()this.nowstudentnumber-;-package 餐厅;public class window private int pack;private int studentnumber;public window()this.pack=1;this.studentnumber=0;public void rise_student_number()this.studentnumber+;public int get_student_number()return this.studentnumber;public void remove_student_number()this.studentnumber-;4.2 运行结果与分析实验结果需要你提供输入(需要详细列出所有数据),输出对应。不允许通过大量截图的方式展示实验结果。用不同的数据量、数据集作为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 成衣品质检验教学设计-2025-2026学年中职专业课-服装制作工艺-服装设计与工艺-轻工纺织大类
- Section B教学设计-2025-2026学年初中英语人教新目标版2012七年级下册-人教版2012
- 任务三 纸板凳的制作教学设计-2025-2026学年初中劳动七年级上册浙教版
- 3.1 列代数式表示数量关系 第2课时 列代数式 说课稿 2024-2025学年人教版七年级数学上册
- 集团有限公司资产管理办法
- 蔬果类营养知识培训课件
- 4.7 数学建模活动:生长规律的描述说课稿-2025-2026学年高中数学人教B版2019必修第二册-人教B版2019
- 第八章 人民解放战争时期的政治概况和文化教学设计-2025-2026学年中职历史中国历史 (全一册)人教版
- 2025年体能专业理论知识考试题库
- 2025年全民(药膳与食疗)技能知识考试题与答案
- 门卫24小时值班登记表
- 幼儿园大型器械玩具安全检查记录表
- 苏科版三年级上册劳动第四课《橡皮泥塑》课件(定稿)
- 肩袖撕裂讲课课件
- 三年级上册信息技术教学计划(电子工业出版社)
- 旅行管家实务全套ppt课件最全电子教案完整版教学教程整套全书课件ppt
- 医院学术委员会及工作职责制度的通知
- 煤矿物料装车、捆绑管理规定
- CPK计算表格EXCEL模板
- 车工技师论文 细长轴的加工技术方法
- 过程装备与控制工程导论
评论
0/150
提交评论