命令窗程序实现郑码查询

编辑器

工具选择

EditPlus

文档编辑器EditPlus,还有notepad++,ultraedit都是不错的练习敲代码的选择,对于java的初学者来说,它有利于新手对基础的熟悉和理解。
所以在这里,我们依旧采用文档编辑器EditPlus来进行程序的编写练习。

Eclipse

Eclipse,MyEclipse是开放源代码的、基于Java的可扩展开发平台。运用这两个软件,我们可以直接编写软件并运行程序。

SQLite Expert Professional 5 - 64bit

SQLite 可视化管理工具,允许用户在 SQLite 服务器上执行创建、编辑、复制、提取等操作。

软件下载

EditPlus下载地址:
https://www.editplus.com/download.html
这里写图片描述
Eclipse下载地址:
https://www.eclipse.org/downloads/
eclipse
SQLite Expert Professional 5 - 64bit下载地址:
http://www.sqliteexpert.com/download.html
e

任务实现

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

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

文本文件:

text

程序编写:

procedrue

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

textS

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

SQLite的图形化管理工具:
https://blog.csdn.net/qq_42446456/article/details/81038979
用java语言查询读出一个SQLite数据库文件中的数据参见:
https://blog.csdn.net/qq_42446456/article/details/81065851

数据库表格建立:

数据库

连接数据库:

程序代码:

package zm;
import java.sql.Connection;//导入Java.sql包中的Connection类,用于与数据库的连接
import java.sql.DriverManager;//导入Java.sql包中的DriverManager类,管理一组JDBC驱动程序
import java.sql.ResultSet;//导入Java.sql包中的ResultSet类  ,表示数据库的结果,用于查询
import java.sql.Statement;//导入Java.sql包中的Statement类,执行sql语句,并返回生成的结果
import java.sql.SQLException;//导入Java.sql包中的Exception类,执行sql语句,寻找异常。

public class zmconnect { //定义一个类,类名为SQLiteConnection
    public static void connect() {
        Connection conn = null;  //声明数据库连接对象
        try {                    //加载数据库驱动
            String url = "jdbc:sqlite:F:/sqlite/zmdb.db";
            //定义连接数据库的url(url:访问数据库的URL路径),zmdb为数据库名称
            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());
                }
        }
    }
    public static void main(String[] args) {
        connect();
    }   //定义一个main主函数
}

详情:
zmc

读取数据库文件

程序源代码:

package zm;
import java.sql.*;//导入java.sql包中相关类
import java.util.Scanner;
public class zmsearch {
    private Connection connect()
    {  
        Connection conn = null;//定义数据库连接对象
        try {
            String url = "jdbc:sqlite:F:/sqlite/zmdb.db";   
            //定义连接数据库的url(url:访问数据库的URL路径),zmdb为数据库名称
             Class.forName("org.sqlite.JDBC");//加载数据库驱动
            conn = DriverManager.getConnection(url); //获取数据库连接
            System.out.println("数据库连接成功!\n");//数据库连接成功输出提示
        } 
        catch (ClassNotFoundException | SQLException e) {
            System.out.println("数据库连接失败!"+e.getMessage());
        }
        return conn;//返回一个连接
    }
    public void selectAll() {   //选择文本区中的所有文本,在 null或空文档上不执行任何操作。
        Connection conn = this.connect();//连接数据库
        Scanner scan=new Scanner(System.in);//创建Scanner对象,控制台等待输入
        String sql="Select * From zmb";//将从表中查询到的的所有信息存入sql
        while(true){
            System.out.println("请输入一个郑码编码:");  //控制台输出“请输入一个郑码编码”
            try {
                Statement stmt = conn.createStatement();//得到Statement实例
                ResultSet rs = stmt.executeQuery(sql);//执行SQL语句返回结果集
                String str=scan.nextLine(); //定义字符型变量str并赋值
                boolean b = false;//判断表中是否含有输入的词
                // 当返回的结果集不为空时,并且还有记录时,循环输出记录
                while (rs.next()) { //读一行文本
                    String zm=rs.getString("zhengma"); //获取zm字段值
                    String ch=rs.getString("chinese");
                     if(str.equalsIgnoreCase(zm)) {//输入郑码编码存在于表记录则执行
                            System.out.println(ch);//输出对应的中文
                            b = true;
                        }
                } 
                 if(str.equals("ByeBye")) {//判断是否输入的为"ByeBye"
                        System.out.println("程序退出!");
                        System.exit(0);//终止当前正在运行的程序
                    }
                    if(!b) {//查不到
                        System.out.println("没有收录此编码的汉字或词组!");
                        }
            }
            catch (SQLException e) {
            System.out.println("查询数据时出错!"+e.getMessage());
        }
        }
    }
        //定义main主函数
       public static void main(String[] args){
           zmsearch app = new zmsearch();//创建了一个INFOR对象
            app.selectAll();//调用对象的selectAll方法
        }
    }

查询详情:
zmse

猜你喜欢

转载自blog.csdn.net/qq_42446456/article/details/81100896