C, PHP, VB, .NET

Дневникът на Филип Петров


* Изходен код от упражнение 2, 2015

Публикувано на 02 октомври 2015 в раздел ПИК3 Java.

Да се напише клас с main метод, в който да се демонстрира извеждане на меню в конзолен режим, в което да има следните дейности:

  1. Въвеждане на данни за нов клиент – изисква въвеждането на данни за човека от клавиатурата. За всеки клиент се пази име, ЕГН и адрес. След успешно въвеждане, данните се съхраняват във файл в текущата директория с име <ЕГН>.txt, където <ЕГН> е 10 цифреното число, което е ЕГН на човека;
  2. Търсене на потребител по ЕГН – потребителя въвежда число <EГН> и програмата се опитва да отвори файла <EГН>.txt. Ако такъв съществува, трябва да се изведе информация за човека. В противен случай се извежда съобщение, че такъв човек не съществува;
  3. Търсене на потребител по ключова дума – отваря един по един всички файлове с разширение .txt от текущата директория и ги претърсва за съответната ключова дума;
  4. Изход.

След извършване на дадено действие, програмата трябва да се връща в главното меню (за целта използвайте безкраен цикъл). Изпълнението ѝ продължава до избор на „Изход“.

 

Решение: С уговорката, че правим съвсем минимална валидация на данните, едно възможно решение е:

import java.io.*;
import java.util.Scanner;
import java.util.InputMismatchException;

public class ClientsManagement{
  public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    menuLoop: do{
      printMenu();
      String option;
      option = sc.nextLine();
      switch(option){
        case "1": enterData(sc);
        break;
        case "2": System.out.print("Enter egn: ");
        getInfo(sc.nextLine()+".txt");
        break;
        case "3": System.out.print("Enter keyword: ");
        findData(sc.nextLine());
        break;
        case "4": break menuLoop;
        default: System.out.println("Invalid option. Enter 1, 2, 3 or 4.");
      }
      
      System.out.println("\n----------\n");
    }
    while(true);
  }
  static void printMenu(){
    System.out.println("Client management program");
    System.out.println("1. Enter new client data");
    System.out.println("2. Get client data by egn");
    System.out.println("3. Search data with keyword");
    System.out.println("4. Exit");
    System.out.print("Enter option number: ");
  }
  
  static void enterData(Scanner sc){
    System.out.print("Enter name: ");
    String name = sc.nextLine();
    System.out.print("Enter egn: ");
    String egn = sc.nextLine();
    // Tuk se ochakva po-seriozna proverka za validnost ot tazi
    // V tazi proverka proveriavame dali egn e samo cifri
    if(!egn.matches("\\d+")){
      System.out.println("Invalid EGN");
      return;
    }
    System.out.print("Enter address: ");
    String address = sc.nextLine();
    PrintWriter pr = null;
    try{
      pr = new PrintWriter(new FileWriter(egn+".txt"));
      pr.println(name);
      pr.println(egn);
      pr.println(address);
    }
    catch(IOException e){
      System.out.println("Can't save file");
    }
    finally{
      if(pr != null) pr.close();
    }
    System.out.println("Data saved");
  }
  
  static void getInfo(String fileName){
    Scanner fsc = null;
    try{
      fsc = new Scanner(new BufferedReader(new FileReader(fileName)));
      while(fsc.hasNext()) System.out.println(fsc.nextLine());
    }
    catch(FileNotFoundException e1){
      System.out.println("No such user");
    }
    finally{
      if(fsc != null) fsc.close();
    }
  }
  
  static void findData(String keyword){
    String path = ".";
    int usersFound = 0;
    File folder = new File(path);
    File[] filesList = folder.listFiles();
    filesLoop: for(File f: filesList){
      if(f.isFile() && f.getName().endsWith(".txt")){
        Scanner fsc = null;
        try{
          fsc = new Scanner(f);
          while(fsc.hasNext()){
            if(fsc.next().equals(keyword)){
              usersFound++;
              System.out.println("User "+usersFound+": ");
              getInfo(f.getName());
              System.out.println("...\n");
            }
          }
        }
        catch(FileNotFoundException e){}
        finally{
          if(fsc!=null) fsc.close();
        }
      }
    }
    if(usersFound==0) System.out.println("Keyword not found");
  }
}

 



Добави коментар

Адресът на електронната поща няма да се публикува


*