⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbms.java

📁 基于xml的数据库管理系统
💻 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 + -