1. 程式人生 > 實用技巧 >Java 英語單詞自測

Java 英語單詞自測

Java英語單詞自測小遊戲

編寫初衷

  記英語單詞的時候,不知道記沒記住,所以寫了個檢測的程式,在檢測的同時,也能夠複習之前學習的。

任務目標

  • 建立資料庫
  • Java編寫程式碼(沒寫成GUI,覺著寫成GUI巨醜)
  • 打包成Jar包
  • 終端啟動jar包

建立資料庫

  建立名為english的資料庫,並且在資料庫中建立study_english(word,chinese)表,所以我只需要不斷更新表中的資料,達到擴充的目的。

Java編寫程式碼

  • 在專案中匯入mysql jar包
  • Utils包 連線資料庫
package Utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCUtils {
	static {
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	public static Connection getConnection() throws SQLException  {
		Connection con = null;
		con = DriverManager.getConnection("jdbc:mysql://localhost:3306/english","root","root");
		return con;
	}
	public static void release(Connection con,Statement st,ResultSet rs) throws SQLException {
		if(rs!=null) {
			rs.close();
		}
		if(st!=null) {
			st.close();
		}
		if(con!=null) {
			con.close();
		}
	}
}	

  • daomain包 建立實體類(word,chinese)
package daomain;
public class English {
	private String word;
	private String chinese;
	public String getWord() {
		return word;
	}
	public void setWord(String word) {
		this.word = word;
	}
	public String getChinese() {
		return chinese;
	}
	public void setChinese(String chinese) {
		this.chinese = chinese;
	}
	@Override
	public String toString() {
		return "English [word=" + word + ", chinese=" + chinese + "]";
	}
	
}
  • dao包 資料庫->列表
package dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import Utils.JDBCUtils;
import daomain.English;

public class EnglishDao {
	@SuppressWarnings("finally")
	public static ArrayList<English> findEnglish(String sql) {
		ArrayList<English> arr = null;
		Connection con = null;
		Statement st = null;
		ResultSet rs = null;
		try {
			// 連線資料庫進行查詢
			con = JDBCUtils.getConnection();
			st = con.createStatement();
			rs = st.executeQuery(sql);
			if (rs.next()) {
				arr = new ArrayList<English>();
				while (true) {
					English eng = new English();
					eng.setWord(rs.getString("word"));
					eng.setChinese(rs.getString("chinese"));
					arr.add(eng);
					if (rs.next() == false) {
						break;
					}
				}
			}
		} catch (Exception e1) {
			e1.printStackTrace();
		} finally {
			try {
				JDBCUtils.release(con, st, rs);
			} catch (final SQLException e) {
				e.printStackTrace();
			}
			return arr;
		}
	}
}
  • 實現
package English;

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

import dao.EnglishDao;
import daomain.English;

public class Englishtest {
	public static void dome() {
		Scanner scan = new Scanner(System.in);
		String in_chinese = null;
		int score = 0;
		Random r = new Random();
		
		String sql = "select * from study_english";
		ArrayList<English> list = EnglishDao.findEnglish(sql);
		
		
		System.out.println("歡迎進入英語自我測試小遊戲");
		System.out.println("分值達到100分通關");
		System.out.println("---------------------");
		while(true) {
			English english = list.get(r.nextInt(list.size()));
			String word = english.getWord();
			String chinese = english.getChinese();
			System.out.println("單詞:"+word);
			
			System.out.print("英譯漢:");
			in_chinese = scan.nextLine();
			System.out.println("正確答案:"+chinese);
			if(chinese.contains(in_chinese)) {
				score ++;
			}else {
				score --;
			}
			System.out.println("得分:"+score);
			if(score==100) {
				break;
			}
			System.out.println("---------------------");
		}
		System.out.println("恭喜通關");
	}
	
}

打包成Jar包

右鍵專案選擇Export

終端啟動jar包

在jar包的同一級下建立run.txt

run.txt寫入命令java -jar main.jar

將字尾改為.bat

雙擊執行