本周是数据结构的第二阶段。
我选择的是背单词系统,用到了我从来没有使用过的新的jar包json包,里面的函数用来实现对文件的操作十分好用
package EngWord;
import com.alibaba.fastjson.JSON;
import little.EnglishWord.test_.Person;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.ArrayList;
public class Tools {
public static String file_path = "C://Users//xiaoguoguo//Desktop//小学期//数据结构小学期//Word.txt";
private static String read_file() throws IOException {
File my_file = create_file_obj();
String content = null;
StringBuilder result = new StringBuilder();
BufferedReader br = new BufferedReader(new FileReader(my_file));
String s = null;
while ((s = br.readLine()) != null) {
result.append(s);
}
br.close();
content = result.toString();
return content;
}
// 写文件
private static void write_file(String content) throws IOException {
File file = create_file_obj();
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
writer.write(content);
writer.flush();
writer.close();
}
// 创建文件对象
private static File create_file_obj() {
File my_file = new File(file_path);
return my_file;
}
// 将 Word 类 数组对象 转变成 字符串的方法
private static String arr_to_string(ArrayList<Word> wrd_arr) {
String res = JSON.toJSONString(wrd_arr);
return res;
}
// 将 Word 数组字符串 装变成 对象的方法
private static ArrayList<Word> str_to_arr(String content) {
ArrayList<Word> arr = (ArrayList<Word>) JSON.parseArray(content.toString(),Word.class);
return arr;
}
// 从 文件中 获得 数组对象
private static ArrayList<Word> file_to_arr() throws IOException {
String file_con = read_file();
ArrayList<Word> wrd_arr = str_to_arr(file_con);
return wrd_arr;
}
// 将 对象数组 存入文件
private static void arr_to_file(ArrayList<Word> wrd_arr) throws IOException {
String arr_str = arr_to_string(wrd_arr);
write_file(arr_str);
}
// 添加 新人
public static void add_new_wrd(Word wrd) throws IOException {
ArrayList<Word> wrd_arr = file_to_arr();
wrd_arr.add(wrd);
arr_to_file(wrd_arr);
System.out.println("添加单词成功!");
}
// 查询 中文 单词
public static String show_wrd_bychinese(String chinese) throws IOException {
String res = null;
ArrayList<Word> wrd_arr = file_to_arr();
for (int i = 0; i < wrd_arr.size(); i++) {
if(chinese.equals(wrd_arr.get(i).getChinese())){
res = "单词:" + wrd_arr.get(i).getEnglish() + "词性:" + wrd_arr.get(i).getCixing() +
" 释义:" + wrd_arr.get(i).getChinese() + "例句:" + wrd_arr.get(i).getExample();
System.out.println(res);
break;
}
}
return res;
}
// 查询 英文 单词
public static String show_wrd_byenglish(String english) throws IOException {
String res = null;
ArrayList<Word> wrd_arr = file_to_arr();
int index = -1;
for (int i = 0; i < wrd_arr.size(); i++) {
if(english.equals(wrd_arr.get(i).getEnglish())){
res = "单词:" + wrd_arr.get(i).getEnglish() + "词性:" + wrd_arr.get(i).getCixing() +
" 释义:" + wrd_arr.get(i).getChinese() + "例句:" + wrd_arr.get(i).getExample();
System.out.println(res);
index = 1;
break;
}
}
if (res == null) {
System.out.println("词库无单词...");
}
return res;
}
// 删除 单词
public static void delete_wrd(String english) throws IOException {
ArrayList<Word> wrd_arr = file_to_arr();
int english_index = -1;
for (int i = 0; i < wrd_arr.size(); i++) {
if(english.equals(wrd_arr.get(i).getEnglish())){
english_index = i;
break;
}
}
if (english_index == -1 ){
System.out.println("没有此单词...");
} else {
wrd_arr.remove((english_index));
System.out.println("删除成功!");
arr_to_file(wrd_arr);
}
}
// 修改 单词
public static void update_wrd(String english,String chinese) throws IOException {
ArrayList<Word> wrd_arr = file_to_arr();
for (int i = 0; i < wrd_arr.size(); i++) {
if(english.equals(wrd_arr.get(i).getEnglish())){
wrd_arr.get(i).setChinese(chinese);
System.out.println(wrd_arr.get(i).getChinese());
System.out.println("修改成功....");
arr_to_file(wrd_arr);
break;
}
}
}
// 查询 全部
public static String show_all_wrd() throws IOException {
String res = null;
ArrayList<Word> wrd_arr = file_to_arr();
for (int i = 0;i < wrd_arr.size();i++){
System.out.println("单词 :" + wrd_arr.get(i).getEnglish() + " 词性:" + wrd_arr.get(i).getCixing()+" 释义:" +
wrd_arr.get(i).getChinese() + " 例句:" + wrd_arr.get(i).getExample());
}
return res;
}
// 背单词
public static void recite_wrd(String english,String chinese) throws IOException {
ArrayList<Word> wrd_arr = file_to_arr();
int flag = -1;
for (int i = 0; i < wrd_arr.size(); i++) {
if(english.equals(wrd_arr.get(i).getEnglish()) && chinese.equals(wrd_arr.get(i).getChinese())){
wrd_arr.get(i).setVisited(1);
//System.out.println(wrd_arr.get(i).getChinese());
System.out.println("记忆成功!");
arr_to_file(wrd_arr);
flag = 1;
break;
}
}
if(flag == -1) {
System.out.println("出错了哦,继续努力!");
}
}
// 生词本
public static String show_new_wrd() throws IOException {
String res = null;
ArrayList<Word> wrd_arr = file_to_arr();
for (int i = 0;i < wrd_arr.size();i++){
if (wrd_arr.get(i).getVisited() == 0){
System.out.println("单词 :" + wrd_arr.get(i).getEnglish() + " 词性:" + wrd_arr.get(i).getCixing()+" 释义:" +
wrd_arr.get(i).getChinese() + " 例句:" + wrd_arr.get(i).getExample());
}
}
return res;
}
public static void rate_wrd() throws IOException {
ArrayList<Word> wrd_arr = file_to_arr();
int num = 0;
for (int i = 0;i < wrd_arr.size();i++){
if (wrd_arr.get(i).getVisited() == 1){
num++;
}
}
System.out.println("记忆进度:" + num + " / " + wrd_arr.size());
}
}
这里实现了单词的录入,删除,查看,根据英文看释义,根据释义差单词,也粗略的完成了背单词功能,单词记忆进度功能。。。
原创文章,作者:,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/274939.html