Java 学生个人时间表

Java 学生个人时间表,java,algorithm,data-structures,Java,Algorithm,Data Structures,我正在为学生开发一个基于控制台的个人日程计划器。我的目标是,该应用程序将采取什么活动的用户想要做的连同总时间与用户一天,然后分配时间段,并显示在表格格式 所分配的时间取决于主题(分配更多时间用于更重要的任务等) 我正在为我的第四学期英语做这个项目 我已经开始研究这个算法了,我的问题是,有这样的算法(已经)可用吗?我在网上搜索过,但我找到的规划算法都是针对公交车时刻表和其他方面的,但并不完全是我要找的。根据amit的要求,这里有一些参考资料 就我所知,背包问题是一个最大化问题。给定一组具有特定用途

我正在为学生开发一个基于控制台的个人日程计划器。我的目标是,该应用程序将采取什么活动的用户想要做的连同总时间与用户一天,然后分配时间段,并显示在表格格式

所分配的时间取决于主题(分配更多时间用于更重要的任务等)

我正在为我的第四学期英语做这个项目


我已经开始研究这个算法了,我的问题是,有这样的算法(已经)可用吗?我在网上搜索过,但我找到的规划算法都是针对公交车时刻表和其他方面的,但并不完全是我要找的。

根据amit的要求,这里有一些参考资料

就我所知,背包问题是一个最大化问题。给定一组具有特定用途和重量的物品,您希望选择最佳子集-即给定重量的“最佳”物品组合-背包/帆布包中可携带的最大容量

例如,在僵尸入侵中,电锯可能是非常有用的物品,但它又大又笨重,所以从字面上讲,它的用处可能被它的体积所压倒。而刀也很有用,但重量要轻得多。如果你选择刀子,你也可以选择手电筒、撬棍、干口粮和睡袋,而如果你选择电锯,你只有空间放干口粮

您的特殊问题是尝试将一组活动放入固定的时间段。要做到这一点,您需要通过某些因素对活动进行加权,例如

  • 一天中可能发生这些情况的时间段
  • 持续时间
  • 他们对学生的期望
  • 是否可以在类似活动之前或之后立即安排,例如,如果学生刚去健身房,他们不太可能想参加游泳训练
然后,您需要为这些不同的因素提出一个加权算法,并使用该加权算法来决定如何为特定的一天选择活动;请记住,不同的人可能有不同的偏好,您可能需要在使用权重时允许某种形式的配置

(请注意,这都是基于我对算法的有限接触的假设——正如我所说,我自己从来没有做过,以上是我对如何处理这个问题的最初想法)

我通过谷歌找到的一些资源有:

(麻省理工学院讲座视频)


祝你好运,这听起来是一个有趣的项目。

我终于完成了我的项目

代码是:

 package project;

public class TimeTable extends Time {
    int i;

    String table[] = new String[24];
    Activity activity[];
    static int currentTime;
    boolean flag = false;

    public void setTable(Activity[] iActivity){
        setNontime();
        activity = iActivity;
        int temp;

        temp = clgStart- wakeTime; 
        currentTime=wakeTime;
        System.out.println("tmep is "+temp);
          setTimeTillCollege(temp);

          currentTime= clgEnd;
          temp = dinner - clgEnd;

          System.out.println("temp is"+temp);

          setTimeTillDinner(temp);

          currentTime = dinner+1;
          temp= sleepTime-dinner-1;

          setTimeTillSleep(temp);

      }



    private void setTimeTillSleep(int temp) {
        if(temp<=2){
            table[currentTime]= getNonAcad();
        }
    }

    private void setTimeTillDinner(int temp) {
        if(flag){//if the academic subs are not given in daylight
              /*          if(temp<1){
              table[currentTime] = "timepass";
          } else*/
              if(temp==1){
              table[currentTime] = getNonAcad();
          } else if(temp==2){
              table[currentTime] = getAcademic(2);
          } else {
              while(temp!=0){

              }
          }   
      }   else {
          while(temp!=0){
              if(temp > 4){
                  table[currentTime]=getAcademic(2);
                  flag=true;
                  temp-=2;
              } else if(temp==4){
                  table[currentTime]=getAcademic(2);
                  temp-=2;
                  table[currentTime]=getAcademic(2);
                  temp-=2;
                  flag=true;
              } 
          }
    }

}



    private void setTimeTillCollege(int temp) {

        if(temp==1){
              table[currentTime] = "Revise";
          } else if(temp==maxSlot){
              table[currentTime] = getAcademic(2);
          } else {
              while(temp!=0){
                  if(temp > 4){
                      table[currentTime]=getAcademic(2);
                      flag=true;
                      temp-=2;
                  } else if(temp==4){
                      table[currentTime]=getAcademic(2);
                      temp-=2;
                      table[currentTime]=getAcademic(2);
                      temp-=2;
                      flag=true;
                  } else if(temp<4){

                  } else if(temp==1){
                      getAcademic(1);
                  }
              }
          }
    }



    private String getNonAcad() {
        for (i = 0; i < activity.length; i++) {
            if(!activity[i].over && !activity[i].acad){
                activity[i].over = true;
                currentTime+=activity[i].timeSlot;
                return activity[i].name;
            }
        }
        return null;
    }


    private String getAcademic(int j) {
        for (i = 0; i < activity.length; i++) {
            if(!activity[i].over && activity[i].credit==j){
                activity[i].over = true;
                currentTime+=activity[i].timeSlot;
                return activity[i].name;
            }
        }
        return null;
    }

    @SuppressWarnings("unused")
    private String getAcademic() {
        for (i = 0; i < activity.length; i++) {
            if(activity[i].credit==1 && activity[i].acad){
                activity[i].over = true;
                currentTime+=activity[i].timeSlot;
                return activity[i].name;
            }
        }
        return null;
    }


    public  void setNontime(){

        for (i = 0; i < table.length; i++) {
            table[i]= new String();
        }

        table[sleepTime]="Sleep";
        table[clgStart]="College";
        table[clgEnd]="College ends";
        table[dinner]= "Dinner";

    }


    public void display() {
        System.out.println("inside display method");
        for ( i = wakeTime; i < table.length; i++) {
                System.out.println(i+" "+table[i]);
            }

}}
成套工程;
公课时间延长{
int i;
字符串表[]=新字符串[24];
活动[];
静态时间;
布尔标志=假;
公共作废可设置(活动[]iActivity){
setNontime();
活动=iActivity;
内部温度;
温度=clgStart-唤醒时间;
currentTime=唤醒时间;
系统输出打印项次(“tmep为”+temp);
SETTIMETILL学院(临时);
currentTime=clgEnd;
温度=晚餐-温度;
系统输出打印项次(“温度为”+温度);
设置时间至晚餐(温度);
当前时间=晚餐+1;
温度=睡眠时间-晚餐时间-1;
setTimeTillSleep(温度);
}
私有void setTimeTillSleep(内部温度){
如果(临时4){
表[currentTime]=getAcademic(2);
flag=true;
温度-=2;
}否则如果(温度==4){
表[currentTime]=getAcademic(2);
温度-=2;
表[currentTime]=getAcademic(2);
温度-=2;
flag=true;

}else if(听起来像是@mcfinnigan的变体:您应该将其作为一个答案发布[提供关于问题的更多细节以及如何解决问题或java实现的资源]@麦克芬尼根:你能简要介绍一下背包问题吗?因为我是大二的学生,所以没有算法理论作为一门课程,所以很不幸,我无法理解书中给出的背包问题的完整数学描述wikipedia@Lucifer不幸的是,这只是我在pas中遇到的事情sing;我自己从来没有使用过它。你最好的选择是用谷歌搜索关于它的信息——如果你能找到算法的伪代码,你也许可以根据你的目的调整它;如果不能,它至少可以指引你正确的方向。