Manager
unknown
plain_text
2 years ago
7.4 kB
0
Indexable
Never
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package s00015; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.Hashtable; import java.util.Scanner; /** * LAB 05 SE1606 * * @author Ngo Hai Bang CE160624 */ public class Manager { private int numberOfVoc = 0; Hashtable<String, String> VocabularyList; Scanner sc = new Scanner(System.in); /** * */ public Manager() { this.numberOfVoc = 0; this.VocabularyList = new Hashtable<String, String>(); } /** * Tải từ vừng từ file vào trong hashtable * * @throws IOException */ public void loadVocabulary() throws IOException { File vocFile = new File("EnVn.txt"); if (!vocFile.exists()) { // kiểm tra xem file tồn tại hay chưa vocFile.createNewFile(); // tạo file data khi nó chưa tồn tại System.out.printf("The data file " + vocFile + " is not exits. " + "Creating new data file " + vocFile + "... Done!\n"); } else { System.out.printf("\nThe data file " + vocFile + " is found." // thông báo load file thành công + " The data of vocabulary is loading... "); String VN, EL; try (BufferedReader br = new BufferedReader(new FileReader(vocFile))) { this.numberOfVoc = Integer.parseInt(br.readLine()); //đọc dòng đầu tiên là số lượng của từ vựng lưu trong file for (int i = 0; i < this.numberOfVoc; i++) { //đọc dữ liệu VN = br.readLine(); //dòng nghĩa tiếng Việt EL = br.readLine(); //dòng Tiếng Anh this.VocabularyList.put(VN, EL); // tạo đưa dữ liệu vào hashtable } } System.out.println(" Done! [" + this.numberOfVoc + " vocabulary]"); //thông báo đọc file xong và hiển thị số lượng từ vựng có trong file } } /** * Lưu từ vựng từ hashtable vào file * * @throws IOException */ public void saveVocabulary() throws IOException { FileWriter fw = new FileWriter(new File("EnVn.txt")); //taọ đối tượng để ghi file try { System.out.print("Vocabulary is saving into data file EnVn.txt..."); fw.append(String.valueOf(this.numberOfVoc) + "\n"); //ghi số lượng của từ vựng ở dầu file for (String key : VocabularyList.keySet()) { // vòng lặp để ghi dữ liệu String VN = key; String EL = this.VocabularyList.get(key); // ghi thông tin từ vựng vào file fw.append(VN + "\n"); //ghi từ tiếng Việt vào file fw.append(EL + "\n"); //ghi từ tiếng Anh vào file } } finally { // lưu dữ liệu ( từ RAM vào HDD) fw.close(); System.out.println(" Done! [" + this.numberOfVoc + " vocabulary]"); //hiển thị số lượng từ lưu vào file } } /** * Hàm để nhập chuỗi và kiểm tra xem chuỗi ng dùng nhập có rỗng hay không, * rỗng thì nhập lại * * @param scanner * @param message * @return */ public String getInputString(Scanner scanner, String message) { String string; do { //vòng lặp sẽ lạp lại nếu nhập sai dữ liệu System.out.print(message); string = scanner.nextLine().trim(); if (string.equals("")) { // kiểm tra xem người dùng có nhập gì không System.out.println("Error: Your input can not be empty!"); } } while (string.equals("")); return string; } /** * Nhập từ tiếng Anh và tiếng Việt, và thêm vào hashtable * */ public void addWord() { String EL; String VN; EL = getInputString(sc, "Enter English: "); //nhập từ tiếng Anh muốn thêm if (checkValid(EL) == false) { // kiểm tra xem từ đó đã có trong từ điển chưa System.out.println("This word has been added to the dictionary!"); return; } VN = getInputString(sc, "Enter Vietnamese: "); //nhập từ tiếng Việt this.VocabularyList.put(VN, EL); //thêm vào hashtable ++this.numberOfVoc; //tăng một đơn vị cho số lượng từ System.out.println("Add Successful"); } /** * Nhập một từ tiếng anh, và xóa từ đó khỏi hashtable * */ public void removeWord() { String removeWord; int count = 0; removeWord = getInputString(sc, "Enter English: "); //nhập từ tiếng Anh muốn xóa for (String key : VocabularyList.keySet()) { //lượt qua từng phần tử if (VocabularyList.get(key).toLowerCase().equals(removeWord.toLowerCase())) { //kiểm tra xem phân tử hiện tại có giống với từ muốn xóa không this.VocabularyList.remove(key); //nếu có thì xóa khỏi hashtable --this.numberOfVoc; ++count; System.out.println("Remove Successful"); break; } } if (count == 0) { //nếu count = 0 thì thông báo không tìm thấy System.out.println("Not found '" + removeWord + "' in dictionary!"); } } /** * Dich từ từ tiếng Anh ra tiếng Việt * */ public void translate() { String findWord; int count = 0; findWord = getInputString(sc, "Enter English: "); //nhập từ tiếng Anh muốn dịch for (String key : VocabularyList.keySet()) { //kiểm tra qua từng phần tử trong hashtable if (VocabularyList.get(key).toLowerCase().equals(findWord.toLowerCase())) { //kiểm tra xem 2 từ có giống nhau không ++count; System.out.println("Vietnamese: " + key); //nếu có thì in nghĩa tiếng Việt break; } } if (count == 0) { //hiển thị không tìm thấy khi count = 0 System.out.println("Not found '" + findWord + "' in dictionary!"); } } /** * Kiểm tra xem từ người dùng muốn thêm vào có trùng hay không * * @param EL * @return */ public boolean checkValid(String EL) { for (String key : VocabularyList.keySet()) { //lượt qua từng phần tử của hashtable if (VocabularyList.get(key).toLowerCase().equals(EL.toLowerCase())) { //kiểm tra xem từ này đã được thêm vào chưa return false; } } return true; } }