📄 dbms.java
字号:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.xml.parsers.*;
import java.io.*;
import org.xml.sax.*;
import org.w3c.dom.*;
public class dbms extends Frame implements ActionListener
{
TextArea Edit,Check; //两个文本框,一个用于编辑,另一个用于打印出错信息
Button execute;
FileDialog file_save,file_load; //文件读取,存入框
Menu menu;
MenuBar menubar;
MenuItem itemOpen,itemSave;
BufferedReader in; //几个文件流
FileReader file_reader;
BufferedWriter out;
FileWriter file_writer;
static RandomAccessFile wenjian=null;
database mydb; //可以随时从当前类获得操作的数据库名称
dbms() //主类的构造函数,完成构件的初始化,和图形界面的安排工作
{
setTitle("XML_DBMS");
setSize(600,530);
setLocation(150,150);
Edit=new TextArea(500,300);
Edit.setBounds(50,50,500,300);
add(Edit);
Check=new TextArea(500,200);
Check.setBounds(50,350,500,150);
Check.setEditable(false);
add(Check);
execute=new Button("执行");
execute.setBounds(200,500,60,20);
execute.addActionListener(this);
add(execute);
menubar=new MenuBar();
menu=new Menu("数据库");
itemOpen=new MenuItem("创建数据库");
itemSave=new MenuItem("加载已经有的数据库");
itemOpen.addActionListener(this);
itemSave.addActionListener(this);
menu.add(itemOpen);
menu.add(itemSave);
menubar.add(menu);
setMenuBar(menubar);
file_save=new FileDialog(this,"save",FileDialog.SAVE);
file_save.addWindowListener(new WindowAdapter()
{public void windowCloseing(WindowEvent e)
{file_save.setVisible(false);}
});
file_load=new FileDialog(this,"load",FileDialog.LOAD);
file_load.addWindowListener(new WindowAdapter()
{public void windowCloseing(WindowEvent e)
{file_load.setVisible(false);}
});
mydb=new database(Check);
setLayout(null);
setVisible(true);
}
public static void main(String args[]) //main函数
{
new dbms();
}
public void actionPerformed(ActionEvent e) //按钮模块,其中有对文件存取,更有对文件的分析
{
if(e.getSource()==itemOpen) //创建一个数据库
{
mydb.Edit.setText("输入新数据库的名称");
mydb.setmode(0);
mydb.setVisible(true);
}
if(e.getSource()==itemSave) //读取一个数据库
{
mydb.Edit.setText("输入要加载数据库的名称");
mydb.setmode(1);
mydb.setVisible(true);
}
if(e.getSource()==execute)
{
String command=Edit.getText();
wordanalysis ana=new wordanalysis();
String info=ana.analyse(command); //首先进行词法分析
Check.append("******************************************************\n");
Check.append(info+"\n");
word wordlist=ana.whead; //获得词语列表
/********************************************************************/
System.out.println("*******************************************");
while(wordlist!=null)
{
System.out.println(wordlist.name+" | "+wordlist.type);
wordlist=wordlist.next;
}
System.out.println("*******************************************");
wordlist=ana.whead;
/********************************************************************/
if(info.equals("没有文字错误") && wordlist.next!=null)
{
exe(wordlist); //如果没有语法错误就运行脚本
}
}
}
public void exe(word list)
{
word wordlist=list,w_float=list.next;
String commandtype=wordlist.next.name;
//获得列表第一个关键字
if(commandtype.equals("createtable"))
{
Createtable table=new Createtable();
table.createtable(w_float,Check,mydb);
try
{
if(mydb.document!=null)
{
mydb.writeXMLFile(mydb.databasename);
}
}catch(Exception e){}
}
if(commandtype.equals("select"))
{
Select select=new Select();
select.selectline(w_float,Check,mydb);
}
if(commandtype.equals("update"))
{
Update update=new Update();
update.updateline(w_float,Check,mydb);
try
{
if(mydb.document!=null)
{
mydb.writeXMLFile(mydb.databasename);
}
}catch(Exception e){}
}
if(commandtype.equals("delete"))
{
Delete delete=new Delete();
delete.deleteline(w_float,Check,mydb);
try
{
if(mydb.document!=null)
{
mydb.writeXMLFile(mydb.databasename);
}
}catch(Exception e){}
}
if(commandtype.equals("insert"))
{
Insert insert=new Insert();
insert.inserttable(w_float,Check,mydb);
try
{
if(mydb.document!=null)
{
mydb.writeXMLFile(mydb.databasename);
}
}catch(Exception e){}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -