




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验报告(三):面向对象程序设计-事件模拟科目:程序设计方法 专业:计算机科学与技术 班级: 计7 姓名: 风律澈 学号: 105032011130 日期: 2013.6.61 实验目的1、学习面向对象程序设计方法的基本思想.2、掌握在具体场景中对象的提取。3、掌握类之间的各种关系。4、掌握适用序列图/时序图来表示对象之间的交互关系。2 实验内容食堂位置的设置问题:某食堂需要设置足够的位置供学生在进餐时使用,其目的是确保在高峰期时每一个学生都有一个位置可用,且又不会由于设置过多位置造成浪费。输入:学生到达食堂的时间和就餐时间作为输入序列。要求:模拟学生进入食堂,买饭、就餐、离开的过程.并通过设
2、置不同的买饭窗口观察窗口数对学生排队和设置就餐位置的影响。输出:在当前输入情况下,最高峰时学生就餐需要的座位数。基本要求:首先分析所要实现的系统,分析其中所隐含的对象;确定各个类之间的关系,画出类图;用交互图画出各个对象之间的关系。提示:对象是动作的主体,比如排队过程,这个事件该放在学生这个类中,学生为了排队,需要观察各个队列的长短,然后做出决定是排到哪个队列中。同时,整个模拟过程有个控制类,这个类从各个队列中获取要发生的事件,然后调用具体对象的方法实现。 3 程序设计3。1 类图分析其中蕴含的对象,抽象出类,并且画出类关系图 学生类到食堂吃饭时间:int 吃饭耗时:int生存时间:int选择
3、窗口()修改生存时间(k)获得到食堂吃饭时间()获得吃饭耗时()获得生存时间()减少生存时间() 窗口打饭时间:int排队学生:int增加排队学生()获得排队学生()减少排队学生() 食堂窗口:窗口10最大学生数量:int学生数量:int插入k窗口排队(k)获得窗口k排队人数(k)从k窗口排队中移除(k)增加学生数量()减少学生数量()获得最大学生数量()获得学生数量()修改最大学生数量()3。2 序列图对所涉及个各个事件、对象交互关系,分别用序列图表示.至少画出控制类的调度序列图、学生排队事件序列图。其余可以自行扩展具体可以参考课件中序列图部分。生成对象Int n=0n+学生类处理餐厅。窗口
4、处理输出食堂最大学生数量学生类处理NO食堂学生数量=0YESNew 食堂 最大学生数量=0 学生数量=0 New 窗口 打饭时间=1 排队学生数量=0New 优先队列<学生 qNew 链表<学生> sInt i=0i+New 学生t 到食堂时间 random(1189) 吃饭耗时 random(310)Q.add(学生t)YESi100NONOq.fist到食堂时间=nYESNew 学生x=p.popint kk=学生x。选择窗口()食堂.窗口k。排队学生数量+学生x。修改生存时间(食堂。窗口k。排队学生数量)S。add(学生x)int m=0YESm=10NONO食堂。窗口
5、m。队学生数量>0YES食堂。窗口m.队学生数量-m+食堂.学生数量+NO食堂。学生数量食堂.最大学生数量YES食堂。最大学生数量=食堂.学生数量int f=0f<s。sizeYESSf。生存时间-NOf+Sf.生存时间=0YESS.popn食堂.学生数量-f-4 实现4.1 程序实现把他们的实现放进去,最好能大概说明过程,或者程序中注释。如果对应多个文件,希望能够清楚说明,并分节.这里实现的每一个对象、事件希望能够和上面设计相对应。package 餐厅;import java。util.LinkedList;import java。util。PriorityQueue;impor
6、t java.util.Random;import java.util.Stack;public class main /* * param args */public static void main(String args) / TODO Autogenerated method stub/ 1 /room dinnerholl=new room();PriorityQueue<student> q=new PriorityQueuestudent();LinkedListstudent s=new LinkedList<student();for(int i=0;i30
7、0;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
8、。set_during(dinnerholl。get_window_list_long(k);s.add(t);if(q。peek()=null)break;/ 3 /for(int m=0;m<10;m+)if(dinnerholl。get_window_list_long(m)>0)dinnerholl.outlist(m);dinnerholl。rise_now_student_number();if(dinnerholl。get_moststudentnumber()dinnerholl.get_nowstudentnumber())dinnerholl.reset_mos
9、tstudentnumber(dinnerholl.get_nowstudentnumber());/ 4 /for(int j=0;j<s.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.uti
10、l。Random;public class student implements Comparablestudent 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 Autogenerated method stubif(this。arrivalo.arrival) return 1;if(this。arrival<
11、;o.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.
12、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;i<10;i+)this.windowsi=new window();pu
13、blic 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()retu
14、rn 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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 饭店股份分配协议书
- 共建大数据学院协议书
- 金属回收调价协议书
- 醉酒死亡补偿协议书
- 销户车辆卖车协议书
- 解除制作合同协议书
- 尿痛护理措施
- 遣散员工补偿协议书
- 酒店合作框架协议书
- 银行终止扣款协议书
- 社区心理矫正课件
- DBJ04-T 312-2024 湿陷性黄土场地勘察及地基处理技术标准
- 《基于舞弊风险因子的辉山乳业公司财务舞弊案例探析》15000字(论文)
- 法人担保书范例
- 2025年1月浙江省首考高考英语试卷试题真题(含答案+听力原文)
- 大厨教你做菜知到智慧树章节测试课后答案2024年秋福州黎明职业技术学院
- 中国能源展望2060(2025年版)
- 《新闻传播伦理与法规》大一笔记
- 湖北大学知行学院《面向对象程序设计》2021-2022学年第一学期期末试卷
- 【MOOC】中国特色文化英语教学-苏州大学 中国大学慕课MOOC答案
- 【MOOC】财务会计-淄博职业学院 中国大学慕课MOOC答案
评论
0/150
提交评论