Java手写数据库(第一章)
第一章 准备知识
(一) 实现的步骤
- 定义语法文件,我们使用JavaCC定义语法文件(sql.jj)描述Sql语句的词法和语法规则。
- 构建词法分析器与语法分析器,使用JavaCC的命令行工具javacc将Sql.jj文件编译为Java代码。
- 编写Sql执行引擎,实现对不同Sql语句的解析和执行逻辑,例如执行SELECT、UPDATE、DELETE等操作。
- 实现数据库模型,建立数据库的数据模型,包括表、列、行等内容。在模型中可以定义表的属性、索引、限制、触发器等内容,以支持更加复杂的查询和更新操作。
- 实现与数据库相关的操作,例如增加、删除、修改、查询、排序、聚集等操作。这些操作需要与数据库模型进行交互,并将操作结果返回给客户端
(二) JavaCC简介
JavaCC是一个用于生成Java语言解析器的工具,全称为Java Compiler Compiler。它将基于语法规则的文本描述(称为语法文件)转换为Java语言解析器,可以用于解析复杂的文本格式,如编程语言、网页标记语言等。JavaCC使用Java语言编写,具有可移植性和灵活性。要在Maven项目中引入Javacc,您需要做以下几步:
- 在Maven项目的pom.xml文件中添加以下依赖:
- 在项目源代码的目录下创建一个.jj文件,该文件是使用Javacc定义语法和词法规则的文件。
- 在pom.xml的构建配置中添加以下代码来为Javacc插件指定.jj文件所在的目录和生成代码所在的目录:
其中,your_folder是存放.jj文件的文件夹,sql.jj是您创建的.jj文件的名称。
- 运行Maven插件进行编译。在终端中输入以下命令:
Copy
此时,Maven将会编译.jjt文件并生成Java源代码。通过以上步骤,就可以在Maven项目中使用Javacc进行语法规则的定义和编译了。
(三) Javacc NBP简介
Javacc NBP(Naming Bounded Parser)是基于Javacc开发的一种语法分析器,它支持在定义语法规则时为非终结符号指定名字(Name),并对它们进行监控(Bound),以确保它们的使用符合规范和约束。如果有任何不符合要求的错误,Javacc NBp会抛出异常并中止程序。以下是Javacc NBp的使用方法:
一、安装Javacc
首先,您需要在计算机上安装Javacc。可以从官网(https://javacc.github.io/javacc/)下载最新版本的Javacc,并按照说明进行安装。安装后,您可以通过在命令行或终端窗口中运行javacc命令来使用它。
二、编写Javacc NBP文件
在安装完Javacc后,您可以使用文本编辑器编写Javacc NBp文件(通常以.jj扩展名结尾)。这个文件包含语法规则、词法规则和其他配置信息,用来定义您想要分析的编程语言。
以下是一个简单的Javacc NBP文件示例,用于解析一个加法表达式:
三、生成解析器代码
使用Javacc命令行工具,将Javacc NBp文件转换为Java代码。您可以在命令行中输入以下命令:
该命令会生成Calculator.java和TokenMgrError.java两个文件。其中Calculator.java文件包含解析器的代码。
四、使用解析器进行语法分析
编译并运行生成的Calculator.java文件。这将启动一个计算器程序,并对输入的表达式进行分析和计算(例如,2+3)。
教程1 | 简易计算器项目制作
一、项目简介
该程序是一个图形界面的简单Java计算器,具有良好的界面,使用人员能快捷简单的进行加、减、乘、除、操作。其程序要求为设计一个图形界面(GUI)的计算器应用程序,完成简单的加法、减法、乘法、除法运算,且参与计算的数字和所得结果可以有小数点、正负号,同时还要具备清零功能。程序运行后的效果如图1所示:
图1 计算器
二、需求分析
根据项目简介中的项目要求,我们将其具体需求做如下分析:
1. 要使用java的GUI设计出计算器界面。
2. 通过界面按钮,可以进行加减乘除运算,并能将结果显示在界面中。
3. 计算可以有小数点,和正负整数的计算。
4. 要有清零功能。
三、设计思路:
分析完项目需求后,接下来让我们看一下项目的设计思路。
1.本应用程序继承自框架类(Frame),此程序使用Frame布局管理器BorderLayout,将包含单行文本框和清零按钮的Panel2加入到“North”区域,包含各种按钮的面板Panel1加入到”Center”区域。包含各种按钮的面板Panel1采用4行4列的网格布局,然后将数字按钮和运算符按钮以及控制按钮添加到面板中。
2.项目中要注册按钮事件监听器ActionListener;事件监听器中的事件处理方法public void actionPerformed(ActionEvent evt)完成主要的按钮事件的处理。
3.事件处理分以下几种情况:数字按钮事件(”0”,”1”,”2”„”8”,”9”)、运算符按钮事件(”+”,”-“,”*”,”/”)小数点按钮事件(”.”)、等号按钮事件(”=”)、清楚按钮事件(“CE”)。
4.计算器完成的是一个数学表达式,里面涉及到的就是加、减、乘、除的基本操作,仅需定义一个变量来保存运算操作的前一个数字,与当前在计算器上的显示数字进行计算即可。
四、项目总结:
(1)训练目标:
通过本次的Java课程设计,使同学们对Java的知识有更深一步的了解,同时理解和较熟练的掌握JavaApplet图形界面的基本方法,在编译程序的时候能对知识系统进行更加全面的梳理,使同学们熟练的掌握基本理论知识,并增强同学们的动手能力。
(2)建议实施课时
4课时(2课时理论,2课时上机)。
(3)评分标准
l 项目运行界面考核(0~20)
学生运行出的界面与项目效果图一致即可得分。20分。
l 项目功能考核(0~60)
项目需求分析中的4个功能,每个功能15分。全部完成并且运行调试无bug即可得60分。
l 代码编写习惯考核(0~20)
Ø 代码整洁,思路清晰。(5分)
Ø 代码重用性高。(10分)
Ø 注释清晰明了。(5分)
本项目有源代码,如果各位老师想运行案例程序,可以微信回复:
代码+姓名+电话+邮箱+学校+所教学科
例(代码+张xx+13388xxx+123xxx@qq.com+北京师范大学+计算机科学与技术)
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。