编辑器
工具选择
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/
SQLite Expert Professional 5 - 64bit下载地址:
http://www.sqliteexpert.com/download.html
任务实现
打开小小输入法的郑码表观察,如
a 一 再
aa 一下
aaam 万无一失
aaav 可歌可泣
aaax 天下无难事
aacf 百无聊赖
aacm 无可奉告
aadj 无可挽回
aadt 殊死搏斗
aaeu 平型关
aaez 一开始
。。。
改造上次你已完成的“编程实现一个命令窗程序,使得输入“你”则在屏上回显“you”的那个程序”,使得能进行郑码查询,如输入aacm,则输出“无可奉告”。
将码表放在一个文本文件中,如zmb.txt中,实现以上功能。
文本文件:
程序编写:
程序代码:
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();
}
}
}
程序运行:
将码表放在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主函数
}
详情:
读取数据库文件
程序源代码:
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方法
}
}
查询详情: