weixin_38164790 2017-04-02 09:49 采纳率: 0%
浏览 1248

关于一个简单课程表的逻辑问题

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;

public class Curriculum {public static String filePath = Curriculum.class.getClassLoader().getResource("CurriculumSchedule.txt").getPath();
private final static String COURSE_SEPERATOR=",";
private final static String PERIOD_SEPERATOR="、";
private final static String COMMAND_SEPERATOR=" ";

private final static String ADD_SUCC="已添加到文件中";
private final static String REMOVE_SUCC="已从文件删除";
private final static String UPDATE_SUCC="已更新文件";
private final static String DUPLICATE="课程已存在";

public static class Datehelp{
private static BufferedWriter writer;
private static BufferedReader reader;
private static FileWriter fileWriter;
public static void Add(datebase date1){
initwriter();
try {

initwriter();

writer.write(date1.toString());

writer.flush();

} catch (IOException e) {

e.printStackTrace();

        }finally {  
            try {  
                writer.close(); 
            }catch (IOException e) {  
                e.printStackTrace();  

            }  
        }  
        System.out.println(ADD_SUCC);}
        public static void Update(datebase date){

        }
        public static void Delete(datebase date){

        }
        public static void Find(datebase date){

        }
        public static void Show(datebase date){

        }
        public static void Remove(datebase date){

        }
        public static void initwriter(){
            try{
             writer = new BufferedWriter(new FileWriter(filePath,true));    
               }
            catch(IOException e)
            {
             e.printStackTrace();   
            }
                                }
        public static void initreader(){
            try{
            reader = new BufferedReader(new FileReader(filePath));
        }catch(IOException e){
            e.printStackTrace();
        }

        }

        }
public static void main(String[] args){ 
    String temp =null;

  try{
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
     temp =br.readLine();
     while(temp!= null){

     String[]temp2 = temp.split(COMMAND_SEPERATOR);
     String temp5 =temp2[1];
     String[]temp4 =temp5.split(COURSE_SEPERATOR);
     datebase date1 =new datebase(temp4[0],temp4[1],temp4[2],temp4[3]);
     String first = temp2[0];
    switch(first){
    case"Add":
         Datehelp.Add(date1);
        break;

    case"Remove":
        Datehelp.Remove(date1);
        break;
    case"Update":
        Datehelp.Update(date1);
        break;
    case"Find":
        Datehelp.Find(date1);           break;
    case"Show":
        Datehelp.Show(date1);
        break;


  }}}
  catch (IOException e){
      e.printStackTrace();

  }
}

}

class datebase{
public String date;
public String time;
public String name;
public String place;
public int Date;
public int Time;
public String toString(){
return(date+","+time+","+name+","+place);
}
public datebase(String a,String b,String c,String d){
this.date = a;
this.time = b;
this.name = c;
this.place = d;
switch(a){
case"星期一":
this.Date =1;
break;
case"星期二":
this.Date =2;
break;
case"星期三":
this.Date =3;
break;
case"星期四":
this.Date =4;
break;
case"星期五":

this.Date =5;
break;
}
switch(b){
case"一节":
this.Time =1;
break;
case"一、二节":
this.Time =2;
break;
case"二、三节":
this.Time =3;
break;
case"三、四节":
this.Time =4;
break;

}


}
}

大概需求如下
题目要求
1.编写一个课程表程序,通过命令行方式完成对课程的增、删、改、查、显示。
2.数据保存在文件中,文件名称:CurriculumSchedule.txt。

输入示例
Add 星期四,三、四节,计算与软件工程,仙2-407//如果成功 显示“已添加到文件中”
Remove 星期四,三、四节,计算与软件工程,仙2-407//如果成功 显示“已从文件删除”
Update 星期四,三、四节,计算与软件工程,仙2-408//如果成功 显示“已更新文件”
Find 星期四,三、四节 //如存在课程 显示 “课程名,上课地点”
Show //排序显示所有课程

命令格式
操作(英文)+空格+信息(全部中文表示) 在一行中输入,每项信息之间使用中文的“,”分隔
Add 时间,课时,课程,地点
Remove 时间,课时,课程,地点
Update 时间,课时,课程,地点
Find 时间,课时
Show

数据的范围和格式
时间:星期一 -- 星期日 全部中文表示
课时:一 -- 八 全部中文表示,多个课时之间用中文的“、”号分隔
课程:任意 全部中文表示
地点:任意 全部中文表示

注意
1.Add和Update时不能出现重复值,否则提示“课程已存在”。
判断课程重复的依据是:时间、课时、地点全部相同,容易理解,同一天同一课时,在同一教室不能有多门课程在进行。
2.Find命令如果出现多条符合结果,都需要输出,输出格式见输出示例。
3.Show命令需要显示已排序的完整课程信息,输出格式见输出示例。
排序要求先按时间升序即周一至周日的顺序,再按课时部分第一位所表示的数字大小升序进行排序。

输出示例
1.Find结果输出: "计算与软件工程,仙2-407"
"离散数学,仙1-407"
每条记录输出一行,格式为 (课程,地点)。课程与地点之间用中文“,”分隔,多条记录之间用换行符分隔。

2.Show结果输出:"星期一,一节,政治,仙2-408"
"星期一,二、三节,计算与软件工程,仙2-408"
"星期四,三、四节,计算与软件工程,仙2-407"
每条记录输出一行,格式为(时间,课时,课程,地点)。每项信息之间用中文“,”分隔,多条记录之间用换行符分隔。
请注意:输出信息的格式和分隔符请使用示例中定义的,不要随意修改,否则会导致测试用例无法通过

我把大概的框架建好了。在进行第一个Add()的时候测试了一下。比如说我输入 Add 发送到,发送到,士大夫,士大夫房贷首付 (为了测试就胡乱输入的) 那么控制台救会一直不停地输出“”“已添加到文件中。我认为为什么不是应该只是输入一个吗。
还有就求大家帮我把第一个Add()方法写一下,我不是抄袭,我只是想知道一些具体的语法我好学。毕竟老师上课不怎么讲。

  • 写回答

2条回答 默认 最新

  • AQ_xiaobin 2017-04-02 14:43
    关注

    不能,你回头看一下逻辑方面的复习一下,看看判断循环!

    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮