Как мне отслеживать время, когда что-то произошло в моем коде? - PullRequest
0 голосов
/ 30 мая 2020

Я делаю программу, которая считывает ввод от пользователя, позволяет им просматривать книги, доступные в моей библиотеке (которая импортирована из листа Excel), выбирать элемент и брать его взаймы, но дело в том, что я хотите указать даты заимствования и возврата, как мне это сделать? например: если пользователь подтверждает заимствование книги, после того, как операция происходит, дата заимствования должна быть добавлена ​​в лист Excel, а также небольшой побочный запрос с этим; если можно каким-то образом пренебречь первой строкой в ​​for l oop, которая проходит через массив циклов и продолжить с другими строками, тогда, пожалуйста, помогите мне и с этим (этот l oop находится в строке 111 в код, следующий за списком "отфильтрованные книги") вот мой код: `publi c class BookStudentMerge {

 public static List<Row> getStudentInfo(Sheet sheet, DataFormatter formatter, FormulaEvaluator evaluator, String searchValue) {
      List<Row> result = new ArrayList<Row>();
      String cellValue = "";
      String searchV = searchValue.toLowerCase();
      for (Row row : sheet) {
       for (Cell cell : row) {
        cellValue = formatter.formatCellValue(cell, evaluator);
        String cellV = cellValue.toLowerCase();
        if (cellV.contains(searchV)) {
         result.add(row);
         break;
        }
       }
      }
      return result;
     }
 public static List<Row> bookSearch(Sheet sheet, DataFormatter formatter, FormulaEvaluator evaluator, String searchValue) {
     List<Row> none = new ArrayList<Row>();
     String searchM = searchValue.toLowerCase(); 
     List<Row> result = new ArrayList<Row>();
      String cellValue = "";
      for (Row row : sheet) {
       for (Cell cell : row) {
        cellValue = formatter.formatCellValue(cell, evaluator);
        String cellM = cellValue.toLowerCase();
        if (cellM.contains(searchM)) {
            result.add(row);
         break;
        }
       }
      }
      return result;
 }
 public static boolean checkAvailability (Row r, DataFormatter formatter, FormulaEvaluator evaluator) {
     String cellValue = "";
     for (Cell c : r) {
         cellValue = formatter.formatCellValue(c, evaluator);
         String cellM = cellValue.toLowerCase();
         if (cellM.equalsIgnoreCase("Available")) {
             return true; 
     }
    }
     return false;
 }
 public static void changeStatus (Row r, DataFormatter formatter, FormulaEvaluator evaluator) {
     String cellValue = "";
     for (Cell c : r) {
         cellValue = formatter.formatCellValue(c, evaluator);
         String cellM = cellValue.toLowerCase();
     if (cellM.equalsIgnoreCase("Available")) {
         c.setCellValue("Unavailable");
     }
     else if (cellM.equalsIgnoreCase("Unavailable")) {
         c.setCellValue("Available"); 
     }
     }
 }

public static void main(String[] args) throws IOException, InvalidFormatException {





    Workbook Books = WorkbookFactory.create(new FileInputStream("C:\\Users\\abdul\\Desktop\\University Files\\Object-Oriented Programming\\Project files\\Book class\\Books & DDC.xlsx"));
    Sheet SB = Books.getSheetAt(0);
    Workbook Students = WorkbookFactory.create(new FileInputStream("C:\\Users\\abdul\\Desktop\\University Files\\Object-Oriented Programming\\Project files\\Book class\\StudentsInfo.xlsx"));
    Sheet SS = Students.getSheetAt(0);
    DataFormatter FB = new DataFormatter();
    FormulaEvaluator EB =  Books.getCreationHelper().createFormulaEvaluator();      
    DataFormatter FS = new DataFormatter();
    FormulaEvaluator ES =  Students.getCreationHelper().createFormulaEvaluator();
    Scanner s = new Scanner (System.in);




         System.out.println("Welcome to our BiblioTheque library program!");
         System.out.println("Enter a valid student ID number: ");
         String inp = s.nextLine();
          Row headers = SS.getRow(0);
          for (Cell HS : headers) {
              System.out.print(HS.getStringCellValue() + "\t\t  ");
          }
         System.out.println();
         List<Row> filteredStudents = getStudentInfo(SS, FS, ES, inp);
         for (Row row : filteredStudents) {
               for (Cell cell : row) {
                   System.out.print(FS.formatCellValue(cell, ES));
                   System.out.print("\t     ");
               }
               System.out.println();
         }
         System.out.println();
         System.out.println("Search for a book by title, author, DDC, or ISBN: ");
         System.out.println("enter the name, author, ddc, isbn of your book: ");
         String search = s.nextLine();
          List<Row> filteredBooks = bookSearch(SB, FB, EB, search);
          Row HB = SB.getRow(0);
          for (Cell CB : HB) {
              System.out.print(CB.getStringCellValue() + "\t\t\t");
          }
          System.out.println();
          for (Row row : filteredBooks) {
              for (Cell cell : row) {
            System.out.print(FB.formatCellValue(cell, EB));
            System.out.print("\t\t");
           }
              System.out.println();
          }
          if (filteredBooks.isEmpty()) {
              System.out.println("no results found for the entered keyword/number");
          }
          else {
              System.out.println("do you wish to borrow any of the displayed books?");
          }
          String ans = s.nextLine();
          if (ans.equalsIgnoreCase("yes")) {
              System.out.println("choose the desired book by typing the item's list number: ");
          }
          int borrow = s.nextInt() - 1;
          Row Result = filteredBooks.get(borrow);
          if (checkAvailability(Result, FB, EB)) {
              System.out.println("You are going to borrow the book " + Result.getCell(0) + ", please proceed to the help desk to complete the operation.");
              changeStatus(Result, FB, EB);
          }
}

}`

1 Ответ

1 голос
/ 30 мая 2020

Одна из возможностей: java.time.LocalDateTime:

import java.time.LocalDateTime;    

public class Time {    
  public static void main(String[] args) {    
   LocalDateTime time = LocalDateTime.now();  
   System.out.println(time);  
  }    
}    

Это даст следующий результат: 2020-05-30T13:29:14.566.

Если вы хотите изменить формат, вам нужно будет использовать a DateTimeFormatter:

import java.time.LocalDateTime; 
import java.time.format.DateTimeFormatter;  

public class Time {    
  public static void main(String[] args) {    
   LocalDateTime time = LocalDateTime.now();

   DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
   String timeDate = time.format(formatter);
   System.out.println(timeDate);  
  }    
}      

Это даст результат вроде 30-05-2020 13:59:13.

Итак, теперь у нас есть String с желаемой датой. Теперь нам просто нужно записать это в csv-файл (я рекомендую использовать csv, а не файл excel!). Один из примеров того, как это возможно, представлен в ответе this . Если вы действительно хотите использовать Excel, я предлагаю прочитать этот вопрос и ответы на него.

Дополнительную информацию можно найти здесь и здесь .

Используя информацию и примеры, представленные выше, вы сможете самостоятельно реализовать это в своем коде.

...