简易的java 排课程序.doc_第1页
简易的java 排课程序.doc_第2页
简易的java 排课程序.doc_第3页
简易的java 排课程序.doc_第4页
简易的java 排课程序.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

/Class.java packagecom.youngmaster;publicclassClassprivateStringname;/班级名称 privateintid;/班级号 privateintnumber;/班级人数 privateSequencecs;publicClass() publicClass(intid,Stringname,intnumber)=name;this.number=number;this.id=id;setCs(newSequence(); publicStringgetName()returnname; publicvoidsetName(Stringname)=name; publicintgetNumber()returnnumber;publicvoidsetNumber(intnumber)this.number=number;publicintgetId()returnid;publicvoidsetId(intid)this.id=id;publicSequencegetCs()returncs;publicvoidsetCs(Sequencecs)this.cs=cs; = /ClassDemo.java packagecom.youngmaster;importjava.io.*;importjava.util.Date;importjava.util.Calendar;importjxl.*;importjxl.write.*;publicclassClassDemopublicvoidprint()throwsExceptionWritableWorkbookbook=Workbook.createWorkbook(newFile(Teaching.xls);WritableSheetsheet=book.createSheet(第一页,0);Labellabel=newLabel5;label0=newLabel(0,0,星期);label1=newLabel(1,0,日期);label2=newLabel(2,0,剑锋);label3=newLabel(3,0,秋静);label4=newLabel(4,0,秦少游);for(Labell:label)sheet.addCell(l);/输出日期 for(inti=1;i365;i+)Calendarcal=Calendar.getInstance();cal.add(Calendar.DATE,i-1);doublem=cal.get(Calendar.DAY_OF_WEEK);jxl.write.Numbernumber=newjxl.write.Number(0,i,m); sheet.addCell(number);Datedate=cal.getTime();jxl.write.DateTimedt=newjxl.write.DateTime(1,i,date);sheet.addCell(dt); book.write();book.close(); publicstaticvoidmain(Stringargs)ClassDemocd=newClassDemo();trycd.print();catch(Exceptione)System.out.println(e); = /ClassRoom.java packagecom.youngmaster; publicclassClassRoomprivateStringname;/教室名称 privateintid; /教室号 privateintnumber; /教室容纳人数 publicClassRoom() publicClassRoom(intid,Stringname,intnumber)=name;this.id=id;this.number=number;publicStringgetName()returnname; publicvoidsetName(Stringname)=name;publicintgetId()returnid;publicvoidsetId(intid)this.id=id;publicintgetNumber()returnnumber;publicvoidsetNumber(intnumber)this.number=number;= /Course.java packagecom.youngmaster; publicclassCourseprivateStringname;/课程名称 privateinttimes; /课时数 privateinttimesWeek;privateintid;/课程号 publicintgetId()returnid;publicvoidsetId(intid)this.id=id;publicintgetTimes()returntimes;publicvoidsetTimes(inttimes)this.times=times;publicCourse() publicCourse(intid,Stringname,inttimes,inttimesWeek)=name;this.id=id;this.times=times;this.timesWeek=timesWeek;publicStringgetName()returnname; publicvoidsetName(Stringname)=name;publicintgetTimesWeek()returntimesWeek;publicvoidsetTimesWeek(inttimesWeek)this.timesWeek=timesWeek; =/OrderCourse.java packagecom.youngmaster; importjava.util.LinkedList;importjava.util.Random;importjava.util.TreeSet; publicclassOrderCourseprivateTeachert1,t2,t3; privateClassc1,c2,c3; privateCoursecs1,cs2,cs3; privateClassRoomcr1,cr2,cr3; privateLinkedListcsList; privateLinkedListcrList; privateLinkedListtList; privateLinkedListcList;/已经排成的时间段 LinkedListsub1;LinkedListsub2;LinkedListsub3;/ LinkedListtemList1;LinkedListtemList2; publicOrderCourse()/设置老师 t1=newTeacher(1001,剑锋);t2=newTeacher(1002,秋静);t3=newTeacher(1003,秦少游);tList=newLinkedList();tList.add(t1);tList.add(t2);tList.add(t3);/设置上课班级 c1=newClass(0601,JAVA0601班,20);c2=newClass(0602,JAVA0602班,25);c3=newClass(0603,JAVA0603班,19);cList=newLinkedList();cList.add(c1);cList.add(c2);cList.add(c3);/设置课程 cs1=newCourse(1001,javabase,29,6);cs2=newCourse(1002,jsp,35,6);cs3=newCourse(1003,oracle,51,6);csList=newLinkedList();csList.add(cs1);csList.add(cs2);csList.add(cs3);/设置上课教室 cr1=newClassRoom(1001,实验楼303,50);cr2=newClassRoom(1002,南方商务大厦,40);cr3=newClassRoom(1003,先锋公司,30);crList=newLinkedList();crList.add(cr1);crList.add(cr2);crList.add(cr3); publicvoidinitShow()System.out.println(目前排课的资源情况如下:);System.out.println(教师情况);for(Teachert:tList)System.out.println(教师ID:+t.getId()+教师姓名:+t.getName();System.out.println(教室情况);for(ClassRoomcr:crList)System.out.println(教室ID:+cr.getId()+教室名称:+cr.getName() +cr.getNumber();System.out.println(课程情况);for(Coursecs:csList)System.out.println(课程ID:+cs.getId()+课程名称:+cs.getName() +课时数:+cs.getTimes()+每周课时+cs.getTimesWeek();System.out.println(班级情况);for(Classc:cList)System.out.println(班级ID:+c.getId()+班级名称:+c.getName() +班级人数:+c.getNumber(); /增加排课资源数 publicvoidadd() /从LinkedList中随机取出timesWeek个元素组成的LinkedList publicLinkedListrandList(LinkedListlist,inttimesWeek)LinkedListsubList=newLinkedList();Randomrand=newRandom(); intj=0;while(true)Stringm=list.get(rand.nextInt(list.size()-1);if(!subList.contains(m)subList.add(m);j+;if(j=timesWeek)break;returnsubList; /对随机时间段排序 publicTreeSetlistToTree(LinkedListsub)TreeSetset=newTreeSet(sub); returnset;publicTreeSetAllTree(LinkedListsub1,LinkedListsub2, LinkedListsub3)TreeSetset=newTreeSet(sub1);set.addAll(sub2);set.addAll(sub3);returnset; /排课流程 publicvoidorder(Teachert)Coursecourse=null;if(t=t1)course=cs1;elseif(t=t2)course=cs2;elseif(t=t3)course=cs3;temList1=(LinkedList)(t.getTs().getList().clone();/temList1存放原教师空闲时间 t.getTs().getList().retainAll(c1.getCs().getList();/求教师与学生时间交集 temList2=t.getTs().getList();/temList2存放教师与学生时间交集 sub1=randList(temList2,course.getTimesWeek();/取出教师和学生的一定次数的随机组合 c1.getCs().getList().removeAll(sub1);/移去被分去的时间 t.getTs().setList(temList1);/恢复t1中时间 t.getTs().getList().removeAll(sub1);/移去被分去的时间 temList1=(LinkedList)(t.getTs().getList().clone();/temList1存放原教师空闲时间 t.getTs().getList().retainAll(c2.getCs().getList();/求交集 temList2=t.getTs().getList();/temList2存放教师与学生时间交集 sub2=randList(temList2,course.getTimesWeek();/取出教师和学生的一定次数的随机组合 c2.getCs().getList().removeAll(sub2);/移去被分去的时间 t.getTs().setList(temList1);/恢复t1中时间 t.getTs().getList().removeAll(sub2);/移去被分去的时间 temList1=(LinkedList)(t.getTs().getList().clone();/temList1存放原教师空闲时间 t.getTs().getList().retainAll(c3.getCs().getList();/求交集 temList2=t.getTs().getList();/temList2存放教师与学生时间交集 sub3=randList(temList2,course.getTimesWeek();/取出教师和学生的一定次数的随机组合 c3.getCs().getList().removeAll(sub3);t.getTs().setList(temList1);/恢复t1中时间 t.getTs().getList().removeAll(sub3);/移去被分去的时间 /输入课表方法 publicvoidshowCourseTable(Teachert)Coursecourse=null;if(t=t1)course=cs1;elseif(t=t2)course=cs2;elseif(t=t3)course=cs3;System.out.println();System.out.println(t.getName()+的课表详情排列如下:+课程名称: +course.getName();System.out.println(班级名称:+c1.getName()+教室名称:+cr1.getName();for(Strings:listToTree(sub1)System.out.println(s); System.out.println(班级名称:+c2.getName()+教室名称:+cr2.getName();for(Strings:listToTree(sub2)System.out.println(s); System.out.println(班级名称:+c3.getName()+教室名称:+cr3.getName();for(Strings:listToTree(sub3)System.out.println(s); /System.out.println(*);/for(Strings:AllTree(sub1,sub2,sub3)/System.out.println(s);/if(sub1.contains(s)/ /elseif(sub2.contains(s)/ /elseif(sub3.contains(s)/ / /publicvoidcontrol()/t1排课 order(t1);showCourseTable(t1); /t2排课 order(t2);showCourseTable(t2);/t3排课 order(t3);showCourseTable(t3); =/Sequence.java packagecom.youngmaster; importjava.util.LinkedList; publicclassSequenceprivateLinkedListlist=newLinkedList();publicSequence()list.add(a-星期一1-2节);list.add(b-星期一3-4节);list.add(c-星期一5-6节);list.add(d-星期一7-8节);list.add(e-星期二1-2节);list.add(f-星期二3-4节);list.add(g-星期二5-6节);list.add(h-星期二7-8节);list.add(i-星期三1-2节);list.add(j-星期三3-4节);list.add(k-星期三5-6节);list.add(l-星期三7-8节);list.add(m-星期四1-2节);list.add(n-星期四3-4节);list.add(o-星期四5-6节);list.add(p-星期四7-8节);list.add(q-星期五1-2节);list.add(r-星期五3-4节);list.add(s-星期五5-6节);list.add(t-星期五7-8节);publicLinkedListgetList()returnlist;publicvoidsetList(Linke

温馨提示

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

评论

0/150

提交评论