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

📄 代码.txt

📁 apriori用于购物篮分析的原代码
💻 TXT
📖 第 1 页 / 共 3 页
字号:
/*
 * apriori.java
 *
 * Created on 2008年5月12日, 下午9:16
 */

/**
 *
 * @author  june
 */
import com.sun.org.apache.bcel.internal.generic.ConversionInstruction;
import javax.swing.JOptionPane;
import javax.swing.*;
import javax.swing.JMenu;
import java.sql.*;
import java.lang.*;
import MyPackage.NumberCount;
import MyPackage.Terms;
import MyPackage.Different;
import java.net.URI;

public class apriori extends javax.swing.JFrame {
    
       String dbURL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=fangji";
       String userName = "sa";
       String userPwd = "850122";
	String query = "select 方编号,药名 from 药物表";
        int i=0,l=0,k=0,p=0;
	String queryName = "select 药名 from 药物表 group by 药名 order by 药名 ";
        String queryId = "select 方编号 from  方剂表";
        String drugName[]= new String[405]; 
        String fangjiId[] = new String[1060];
        String temp[] = new String[27];   //一个方剂中最大的药物数
        NumberCount OneNumberCount[]=null;
        NumberCount TwoNumberCount[]=null;
        NumberCount ThreeNumberCount[]=null;
        char matrix[][] = new char[1060][405];
    /** Creates new form apriori */
    public apriori() {

        initComponents();
         jPanel1.setVisible(false);   
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">                          
    private void initComponents() {
        jPanel1 = new javax.swing.JPanel();
        jTextField1 = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jTextField3 = new javax.swing.JTextField();
        jTextField4 = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jScrollPane3 = new javax.swing.JScrollPane();
        jTextPane2 = new javax.swing.JTextPane();
        jButton2 = new javax.swing.JButton();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();
        jMenu2 = new javax.swing.JMenu();
        jMenuItem2 = new javax.swing.JMenuItem();
        jMenu3 = new javax.swing.JMenu();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setText("\u6700\u5c0f\u652f\u6301\u5ea6");

        jLabel3.setText("\u6700\u5c0f\u7f6e\u4fe1\u5ea6");

        jLabel4.setText("%              \u6700\u5927\u9879\u6570");

        jButton1.setText("Apriori\u5173\u8054\u7b97\u6cd5");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jScrollPane3.setViewportView(jTextPane2);

        jButton2.setText("\u5173\u8054\u89c4\u5219");
        jButton2.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jButton2MouseClicked(evt);
            }
        });
        jButton2.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                jButton2KeyTyped(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                        .addGroup(jPanel1Layout.createSequentialGroup()
                            .addComponent(jLabel1)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(jTextField1))
                        .addGroup(jPanel1Layout.createSequentialGroup()
                            .addComponent(jLabel3)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, 75, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(165, 165, 165)
                        .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, 139, Short.MAX_VALUE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, 139, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 19, Short.MAX_VALUE)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jButton2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addGap(25, 25, 25))
            .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 614, Short.MAX_VALUE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel1)
                            .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(12, 12, 12)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jButton2)
                            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel3)
                                .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(33, 33, 33)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabel4))))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 16, Short.MAX_VALUE)
                .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 274, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

        jMenu1.setText("\u6587\u4ef6");
        jMenuItem1.setText("\u9000\u51fa");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });

        jMenu1.add(jMenuItem1);

        jMenuBar1.add(jMenu1);

        jMenu2.setText("\u6570\u636e\u6316\u6398");
        jMenuItem2.setText("\u5173\u8054\u89c4\u5219\u6316\u6398");
        jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem2ActionPerformed(evt);
            }
        });

        jMenu2.add(jMenuItem2);

        jMenuBar1.add(jMenu2);

        jMenu3.setText("\u5e2e\u52a9");
        jMenuBar1.add(jMenu3);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
        pack();
    }// </editor-fold>                        

    private void jButton2MouseClicked(java.awt.event.MouseEvent evt) {                                      
                                                                                 //找关联规则
            if(!CheckPass())
            {
                return;
            }
            
            SetTable();
            double persent_d =(Float.valueOf(jTextField1.getText()))/100.0;
            float persent_t = Float.valueOf(String.valueOf( persent_d));  //把double型转换成float型,必须先转换为字符串型
            
            double persent_d_g =(Float.valueOf(jTextField3.getText()))/100.0;
            float persent_t_g = Float.valueOf(String.valueOf( persent_d_g));
            
            String Result_g="";
             switch(Integer.valueOf(jTextField4.getText()))
             {
                 case 2:
                 {
                    Result_g= GetTwoItem(persent_t,persent_t_g);
                     break;
                 }
                 default :
                 {
                    Result_g= GetTwoItem(persent_t,persent_t_g);
                    Result_g+=GetThreeItem(persent_t,persent_t_g);
                     break;
                 }
             }
            if(Result_g.trim().equals(""))          //去掉字符串两端的空格
            {
                Result_g="没有找到适当的数据!!!";
            }
            jTextPane2.setText(Result_g );
            
            
    }                                     

    private void jButton2KeyTyped(java.awt.event.KeyEvent evt) {                                  
// TODO 将在此处添加您的处理代码:
    }                                 

    private boolean CheckPass()           //验证输入数据的正确性
    {
        String a1=jTextField1.getText();
        String a3=jTextField3.getText(); 
        String a4=jTextField4.getText();
        if(a1.length()==0||a3.length()==0||a4.length()==0)
        {
            JOptionPane.showMessageDialog(this,"请输入数据!   输入框不能为空!","警告对话框",JOptionPane.WARNING_MESSAGE); 
            return false;
        }
        for(int i=0;i<a1.length();i++)
        {
            if(a1.charAt(i)<'0'||a1.charAt(i)>'9')
            {
                JOptionPane.showMessageDialog(this,"非法字符!   请输入数字!","警告对话框",JOptionPane.WARNING_MESSAGE);
                jTextField1.setText(null); jTextField1 .setText(null);                        
                    return false;
             }
        }
        for(int i=0;i<a3.length();i++){
            if(a3.charAt(i)<'0'||a3.charAt(i)>'9'){
                JOptionPane.showMessageDialog(this,"非法字符!   请输入数字!","警告对话框",JOptionPane.WARNING_MESSAGE);
                jTextField3.setText(null);  jTextField3.setText(null);
                return false;
            }
        }
         for(int i=0;i<a4.length();i++){
            if(a4.charAt(i)<'0'||a4.charAt(i)>'5'){
                JOptionPane.showMessageDialog(this,"非法字符!   请输入数字!","警告对话框",JOptionPane.WARNING_MESSAGE);
                jTextField4.setText(null);  jTextField4.setText(null);
                return false;
            }
        }
        return true; 
    }
    
    private void SetTable()              //建立位图
    {
         try
         {
            Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
            Connection dbConn = DriverManager.getConnection(dbURL, userName, userPwd); //连接到数据库,提供相应的用户名、密码
	    Statement stmt = dbConn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); //用dbConn连接创建SQL语句对象
            ResultSet rsName = stmt.executeQuery(queryName);
            i=0;
            while(rsName.next())
            { 
                if(i<405)
                {
                    drugName[i] = rsName.getString("药名"); 
                }
                i++;
            }
            System.out.println("共有"+i+"味药 :");
            ResultSet rsId = stmt.executeQuery(queryId); 
            i=0;
            while(rsId.next()){
                fangjiId[i++] = rsId.getString("方编号");        //把方编号存入数组
            }
                     
            for(int i = 0; i<1060;i++)
            {
                for(int j = 0 ;j<405;j++)
                {
                     matrix[i][j] = '0';          
                }
            }
            for(int i=0;i<1060;i++)
            {
                String queryName1 = "select 药名 from  药物表 where 方编号="+fangjiId[i]+"  group by 药名 order by 药名";
                ResultSet rsName1 = stmt.executeQuery(queryName1);
                l=0;
                while(rsName1.next())
                {              //把每次查找出的一种方剂的所有药名存放在临时数组'temp'中.
                     temp[l] = rsName1.getString("药名");
                     l++;
                }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -