编程实现一个命令窗程序能进行郑码查询

编程实现一个命令窗程序能进行郑码查询

打开小小输入法的郑码表观察,如
a 一
aa 一下
aaam 万无一失
aaav 可歌可泣
aaax 天下无难事
aacf 百无聊赖
aacm 无可奉告
aadj 无可挽回
aadt 殊死搏斗
aaeu 平型关
aaez 一开始
。。。
改造上次你已完成的“编程实现一个命令窗程序,使得输入“你”则在屏上回显“you”的那个程序”,使得能进行郑码查询,如输入aacm,则输出“无可奉告”。以如下两种方法:
1)将码表放在一个文本文件中,如zmb.txt中,实现以上功能。
2)将码表放在SQLite文件中,如zmdb. sqlite, 再次以上功能。

将码表放在一个文本文件中,如zmb.txt中,实现以上功能

zmb.txt文件:
这里写图片描述
源程序为:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;

public class testzmb {
    public static void main(String[] args) throws IOException {
        while(true) {
              System.out.print("Please input :");
              Scanner sa=new Scanner(System.in); //定义scanner,等待输入
              String a=sa.next(); //读取输入的字符放入a中
              if("ByeBye".equalsIgnoreCase(a)) {//equalsIgnoreCase( )方法用来比较字符串不区分大小写,equals( )方法用来比较字符串需要区分大小写
                    System.exit(0);//退出程序的执行
                }
              File f=new File("E:\\yb\\zmb.txt");//创建了一个File对象
              FileReader fre=new FileReader(f);//FileReader字符输入流读文件
              BufferedReader bre=new BufferedReader(fre);//用BufferedReader来进行数据流读取的
              String str="";//定义一个指向首元素为0的字符数组
              boolean flag=false;//定义flag用于标志是否找到
              while((str=bre.readLine())!=null)//判断最后一行不存在,为空
              {
                  String chinese=str.substring(str.indexOf("<")+1,str.indexOf(">"));//substring(起始坐标,结束坐标),indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置,从前往后查。
                  String zm=str.substring(str.lastIndexOf("<")+1,str.lastIndexOf(">"));//lastIndexOf() 方法可返回某个指定的字符串值在字符串中最后一次出现的位置,从后往前查。
                  if(chinese.equalsIgnoreCase(a)) {//用输入的字符与文件里面的中文字符进行比对
                      System.out.println("This is zm:"+zm); //输出英文
                      flag=true;//标志找到
                  }
              }
              if(flag==false) {//没有找到
                  System.out.println("The word can't be found!");
              }
              bre.close();//关闭流
              fre.close();
        }
    }   
}

实现的效果为:
这里写图片描述

将码表放在SQLite文件中,如zmdb. sqlite, 再次以上功能。

创建一个郑码表在SQLite数据库中,如图所示:
这里写图片描述
向创建的郑码表中添加数据,如图所示:
这里写图片描述
使用java编程语言连接到SQLite数据库,代码如下:

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

public class ConnectSQLite {
    /**
     * Connect to a sample database
     */
    public static void connect() {
        Connection conn = null;
        try {
            // db parameters
            String url = "jdbc:sqlite:D:/sqlite/test.db";
            // create a connection to the database
            conn = DriverManager.getConnection(url);

            System.out.println("Connection to SQLite has been established.");

        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } finally {
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException ex) {
                System.out.println(ex.getMessage());
            }
        }
    }
    /**
     * @param args
     *            the command line arguments
     */
    public static void main(String[] args) {
        connect();
    }
}

连接好数据库后,对郑码进行操作,代码如图所示:

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

public class SelectRecords {

    private Connection connect() {
        // SQLite connection string
        String url = "jdbc:sqlite:D:/sqlite/test.db";
        Connection conn = null;
        try {
            conn = DriverManager.getConnection(url);
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
        return conn;
    }
    public void selectAll() {
        while(true) {
            System.out.print("Please input :");
            Scanner sa=new Scanner(System.in); //定义scanner,等待输入
            String a=sa.next(); //读取输入的字符放入a中
            if("ByeBye".equalsIgnoreCase(a)) {//equalsIgnoreCase( )方法用来比较字符串不区分大小写,equals( )方法用来比较字符串需要区分大小写
                  System.exit(0);//退出程序的执行
              }
        String sql = "SELECT * FROM zmdb";
        try {
            Connection conn = this.connect();
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(sql);
            boolean flag=false;//定义flag用于标志是否找到   
            while (rs.next()) {
                String zm=rs.getString("zm");
                String chinese=rs.getString("chinese");
                 if(zm.equalsIgnoreCase(a)) {//用输入的字符与文件里面的中文字符进行比对
                     System.out.println("This is chinese:"+chinese);
                     flag=true;//标志找到
                 }
            } 
            if(flag==false) {//没有找到
                System.out.println("The word can't be found!");
            }     
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
    }
    }
    /**
     * @param args
     *            the command line arguments
     */
    public static void main(String[] args) {
        SelectRecords app = new SelectRecords();
        app.selectAll();
    }
}

实现的效果图为:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值