자바 재고관리 프로그램 db - jaba jaegogwanli peulogeulaem db

package stockmanagiment; import java.sql.*; public class Connect { public static Connection makeConnection() { String url = "jdbc:mysql://localhost/convenience"; // 데이터베이스 주소 String id = "root"; String password = "1234"; Connection con = null; try { Class.forName("com.mysql.cj.jdbc.Driver"); System.out.println("드라이버 적재 성공"); con = DriverManager.getConnection(url, id, password); System.out.println("데이터베이스 연결 성공"); } catch (ClassNotFoundException e) { System.out.println("드라이버를 찾을 수 없습니다."); }catch (SQLException e) { System.out.println("연결에 실패하였습니다."); } return con; } }

db연결 클래스

package stockmanagiment; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import java.sql.SQLException; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; public class Stockmanage implements ActionListener { private JPanel idPanel; private JLabel idlabel; private JTextField idInput; private JLabel passlabel; private JTextField passInput; private JPanel passPanel; private JButton loginButton; private JFrame jframe; private Connection con; public Stockmanage() { idlabel = new JLabel("ID"); idInput = new JTextField(15); idPanel = new JPanel(); idPanel.setLayout(new BorderLayout()); idPanel.add(idlabel,BorderLayout.WEST); idPanel.add(idInput,BorderLayout.CENTER); passlabel = new JLabel("비밀번호"); passInput = new JTextField(15); passPanel = new JPanel(); passPanel.setLayout(new BorderLayout()); passPanel.add(passlabel,BorderLayout.WEST); passPanel.add(passInput,BorderLayout.CENTER); loginButton = new JButton("로그인"); loginButton.addActionListener(this); jframe = new JFrame("재고관리 프로그램"); jframe.setLayout(new BorderLayout()); jframe.add(idPanel,BorderLayout.NORTH); jframe.add(passPanel,BorderLayout.CENTER); jframe.add(loginButton,BorderLayout.SOUTH); jframe.pack(); jframe.setLocationRelativeTo(null); jframe.setVisible(true); } @Override public void actionPerformed(ActionEvent e) { Object obj = e.getSource(); if(obj == loginButton) { String id = idInput.getText(); String password = passInput.getText(); if(id.equals("head") && password.equals( "0000")) { jframe.setVisible(false); try { con = Connect.makeConnection(); new Head(con); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } else if((id.equals("knbranch")|| (id.equals("mrbranch")))&& password.equals("0011")) { jframe.setVisible(false); con = Connect.makeConnection(); new Branch(id,con); } else { JOptionPane.showMessageDialog(null, "일치하는 계정정보가 없습니다. " + "다시 확인하세요","알림", JOptionPane.ERROR_MESSAGE); } } } public static void main(String[] args) { new Stockmanage(); } } package stockmanagiment; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.sql.Connection; import java.sql.Date; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.HashMap; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; public class Head implements ActionListener, ItemListener{ private JLabel label; private JTextArea dateshow; private JTextArea dataOut; private JLabel sumlabel; private JTextArea sumOut; private JComboBox<String> branchc; private JButton showOrder; private JButton aprOrder; private Container tab; private CardLayout clayout; private JPanel headPanel; private JPanel buttonPanel1; private JPanel buttonPanel2; private JPanel functionPanel; private JPanel sumPanel; private JFrame jframe; private Connection con; private PreparedStatement pstmt; private HashMap<String, String> brtablelist; public Head() {} public Head(Connection con) throws SQLException { this.con = con; label = new JLabel("본사"); brtablelist = new HashMap<String,String>(); // 보완필요 if문 반복을 피하기 위해서 hashmap으로 코드를 짰는데 프로그램 실행할 때마다 반복해서 put메서드를 실행해줘야 하는게... brtablelist.put("강남점", "kangnam"); brtablelist.put("모란점", "moran"); Date now = new Date(System.currentTimeMillis()); SimpleDateFormat simple= new SimpleDateFormat("YY-MM-dd"); dateshow = new JTextArea(); dateshow.setText(simple.format(now)); // textArea에 날짜 표시 dateshow.setEditable(false); headPanel = new JPanel(); headPanel.setLayout(new BorderLayout()); headPanel.add(label,BorderLayout.WEST); headPanel.add(dateshow,BorderLayout.EAST); dataOut= new JTextArea(40,30); JScrollPane jsp = new JScrollPane(dataOut, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); String[]list = {"지점선택","본사","강남점","모란점"}; branchc = new JComboBox<String>(list); branchc.addItemListener(this); showOrder = new JButton("주문조회"); showOrder.addActionListener(this); buttonPanel1 = new JPanel(); buttonPanel1.setLayout(new BorderLayout()); buttonPanel1.add(showOrder,BorderLayout.CENTER); aprOrder = new JButton("승인"); aprOrder.addActionListener(this); buttonPanel2 = new JPanel(); buttonPanel2.setLayout(new BorderLayout()); buttonPanel2.add(aprOrder,BorderLayout.CENTER); tab = new JPanel(); clayout = new CardLayout(); tab.setLayout(clayout); tab.add(buttonPanel1, "show"); tab.add(buttonPanel2, "approve"); sumlabel = new JLabel("매출합계"); sumOut = new JTextArea(); sumPanel = new JPanel(); sumPanel.setLayout(new BorderLayout()); sumPanel.add(sumlabel,BorderLayout.WEST); sumPanel.add(sumOut,BorderLayout.CENTER); functionPanel = new JPanel(); functionPanel.setLayout(new BorderLayout()); functionPanel.add(branchc,BorderLayout.NORTH); functionPanel.add(tab,BorderLayout.CENTER); functionPanel.add(sumPanel,BorderLayout.SOUTH); clayout.show(tab, "show"); jframe = new JFrame("재고관리 프로그램"); jframe.setLayout(new BorderLayout()); jframe.add(headPanel,BorderLayout.NORTH); jframe.add(jsp,BorderLayout.CENTER); jframe.add(functionPanel,BorderLayout.EAST); jframe.pack(); jframe.setLocationRelativeTo(null); jframe.setVisible(true); } @Override public void actionPerformed(ActionEvent e) { Object obj = e.getSource(); if( obj== showOrder) { String branch,code,name=""; Date aprdate,orderdate; int idx,unitprice,quantity,totalprice=0; try { dataOut.setText(""); //데이터창 초기화 dataOut.append("주문번호 주문지점 주문일 코드 품명 단가 수량 금액 처리일"); //컬럼명 출력 dataOut.append("\n"); pstmt = con.prepareStatement("select * from convenience.order order by aprdate;"); ResultSet rs = pstmt.executeQuery(); while(rs.next()) { idx = rs.getInt("idx"); //서로다른 지점에서 같은 날 같은제품을 주문했을 경우에 구분이 필요해서 PK로 지정할 일련번호? 주문번호가 필요함 branch = rs.getString("branch"); orderdate = rs.getDate("orderdate"); code = rs.getString("code"); name = rs.getString("name"); unitprice = rs.getInt("unitprice"); quantity = rs.getInt("quantity"); totalprice = rs.getInt("totalprice"); aprdate = rs.getDate("aprdate"); //값을 하나씩 읽어와서 변수에 대입 dataOut.append( idx +"\t"+branch+"\t"+orderdate+"\t"+code+"\t"+ name +"\t" + unitprice+"\t"+quantity +"\t"+ totalprice+"\t"+aprdate); //데이터 창에 출력 dataOut.append("\n"); } clayout.show(tab, "approve"); //버튼 바꾸기 } catch (Exception ex) { // TODO: handle exception } } else if(obj==aprOrder) { try { pstmt = con.prepareStatement("select idx, aprdate from convenience.order where aprdate is null;"); //승인일란이 공란인 데이터를 가져옴 ResultSet rs = pstmt.executeQuery(); //쿼리문 실행 ArrayList<Integer>list = new ArrayList<Integer>(); //idx를 넣을 arraylist 변수 선언 while(rs.next()) { list.add(rs.getInt("idx")); //각 데이터의 idx(주문번호)를 가져와서 list에 넣음 } int size = list.size(); for(int i=0;i<size;i++) { pstmt = con.prepareStatement("update convenience.order set aprdate = now() where idx = ?;"); // 내부함수를 써서 오늘 날짜로 승인일 변경 pstmt.setInt(1, list.get(i)); //list에서 값을 하나씩 읽어서 order테이블에서 일치하는 행의 데이터를 가져와서 오늘 날짜로 승인일 입력 pstmt.executeUpdate(); //본사 재고에서 빼서 지점 재고로 넣는 코드 필요 } clayout.show(tab, "show"); } catch (Exception e2) { // TODO: handle exception } } } @Override public void itemStateChanged(ItemEvent ie) { String code,name,shpoint=""; Date shipping,receiving; int quantity,unitprice,totalprice=0; Timestamp expiry; String choice = branchc.getSelectedItem().toString(); try { if(choice.equals("지점선택")){} //지점선택은 아무런 행동 x else if(choice.equals("본사")) { //본사 테이블과 지점 테이블 컬럼이 달라서 본사만 따로 분리 pstmt = (PreparedStatement)con.prepareStatement("select * from convenience.head order by expiry;"); ResultSet rs = pstmt.executeQuery(); dataOut.setText(""); dataOut.append("코드 품명 수량 단가 금액 입고날짜 출고날짜 유통기한 출고지점"); dataOut.append("\n"); while(rs.next()) { code = rs.getString("code"); name = rs.getString("name"); quantity = rs.getInt("quantity"); unitprice = rs.getInt("unitprice"); totalprice = rs.getInt("totalprice"); receiving = rs.getDate("receiving"); shipping = rs.getDate("shipping"); expiry = rs.getTimestamp("expiry"); shpoint = rs.getString("shpoint"); dataOut.append(code+"\t"+ name + "\t"+quantity + "\t"+unitprice + "\t"+totalprice +"\t"+receiving +"\t"+ shipping + "\t"+expiry + "\t"+shpoint); dataOut.append("\n"); } } else { Date saledate; dataOut.setText(""); dataOut.append("코드 품명 수량 단가 금액 입고날짜 판매일 유통기한"); dataOut.append("\n"); String branch=brtablelist.get(choice); //한글지점명을 key로 value인 영어 테이블 값을 가져와서 branch에 대입 if(branch!=null) { PreparedStatement pstmt = con.prepareStatement("select * from convenience."+branch+ " order by expiry;"); ResultSet rs = pstmt.executeQuery(); while(rs.next()) { code = rs.getString("code"); name = rs.getString("name"); quantity = rs.getInt("quantity"); unitprice = rs.getInt("unitprice"); totalprice = rs.getInt("totalprice"); receiving = rs.getDate("receiving"); saledate = rs.getDate("saledate"); expiry = rs.getTimestamp("expiry"); dataOut.append(code+ "\t"+name + "\t"+quantity +"\t"+ unitprice + "\t"+totalprice +"\t"+receiving +"\t"+ saledate +"\t"+ expiry); dataOut.append("\n"); } } } } catch (Exception e) { // TODO: handle exception } } } package stockmanagiment; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import java.sql.Date; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Timestamp; import java.text.SimpleDateFormat; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextArea; public class Branch implements ActionListener{ private JLabel label; private JTextArea dateshow; private JTextArea dataOut; private JLabel sumlabel; private JTextArea sumOut; private JButton showButton; private JButton orderButton; private JPanel headPanel; private JPanel functionPanel; private JPanel sumPanel; private JPanel buttonPanel; private JFrame jframe; private Connection con; private String id; public Branch() {}; public Branch(String id,Connection con) { this.id = id; this.con = con; label = new JLabel("지점"); Date now = new Date(System.currentTimeMillis()); SimpleDateFormat simple= new SimpleDateFormat("YY/MM-dd"); dateshow = new JTextArea(); dateshow.setText(simple.format(now)); dateshow.setEditable(false); headPanel = new JPanel(); headPanel.setLayout(new BorderLayout()); headPanel.add(label,BorderLayout.WEST); headPanel.add(dateshow,BorderLayout.EAST); dataOut= new JTextArea(30,30); sumlabel = new JLabel("매출합계"); sumOut = new JTextArea(); sumPanel = new JPanel(); sumPanel.setLayout(new BorderLayout()); sumPanel.add(sumlabel,BorderLayout.WEST); sumPanel.add(sumOut,BorderLayout.CENTER); showButton = new JButton("조회"); showButton.addActionListener(this); orderButton = new JButton("주문"); orderButton.addActionListener(this); buttonPanel = new JPanel(); buttonPanel.setLayout(new BorderLayout()); buttonPanel.add(showButton,BorderLayout.CENTER); buttonPanel.add(orderButton,BorderLayout.AFTER_LAST_LINE); functionPanel = new JPanel(); functionPanel.setLayout(new BorderLayout()); functionPanel.add(sumPanel,BorderLayout.NORTH); functionPanel.add(buttonPanel,BorderLayout.CENTER); jframe = new JFrame("재고관리 프로그램"); jframe.setLayout(new BorderLayout()); jframe.add(headPanel,BorderLayout.NORTH); jframe.add(dataOut,BorderLayout.CENTER); jframe.add(functionPanel,BorderLayout.EAST); jframe.pack(); jframe.setLocationRelativeTo(null); jframe.setVisible(true); } public static void main(String[] args) { } @Override public void actionPerformed(ActionEvent e) { Object obj = e.getSource(); if(obj == showButton) { String code,name=""; Date receiving,saledate; int quantity,unitprice,totalprice; Timestamp expiry; String sql=""; if(id.startsWith("kn")) sql = "select * from convenience.kangnam order by expiry;"; else if(id.startsWith("mr")) sql = "select * convenience.moran order by expiry;"; try { PreparedStatement psmt = (PreparedStatement)con.prepareStatement(sql); ResultSet rs = psmt.executeQuery(); dataOut.setText(""); dataOut.append("코드 품명 수량 단가 금액 입고날짜 판매일 유통기한"); while(rs.next()) { code = rs.getString("code"); name = rs.getString("name"); quantity = rs.getInt("quantity"); unitprice = rs.getInt("unitprice"); totalprice = rs.getInt("totalprice"); receiving = rs.getDate("receiving"); saledate = rs.getDate("saledate"); expiry = rs.getTimestamp("expiry"); // 값을 한 줄씩 읽어와서 변수에 대입하고 dataOut에 출력 dataOut.append(code+ "\t"+name + "\t"+quantity + "\t"+unitprice + "\t"+totalprice +"\t"+receiving + "\t"+saledate + "\t"+expiry+"\n"); } } catch (Exception e2) { // TODO: handle exception } } else if(obj == orderButton) { new Order(con,id); } } } package stockmanagiment; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; public class Info { //상품코드를 기반으로 상품리스트에서 정보를 가져오는 클래스 public String name; public int unitprice; Connection con; java.sql.Statement stmt; public Info serch(Connection con, String code) throws SQLException { this.con = con; Info info = new Info(); stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("select name, unitprice from product where code='"+code+"'"); //code와 일치하는 행을 찾아서 rs.next(); info.name = rs.getString("name"); //제품이름과 info.unitprice = rs.getInt("unitprice"); //단가를 멤버변수에 대입해서 return info; //info객체 반환 } } package stockmanagiment; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import java.sql.Date; import java.sql.PreparedStatement; import java.sql.SQLException; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class Order implements ActionListener{ private JLabel codeLabel; private JTextField codeinput; private JPanel codePanel; private JLabel quanLabel; private JTextField quaninput; private JPanel quanPanel; private JButton insertButton; private JFrame order; private Connection con; private String id; private Info info; private PreparedStatement pstmt; public Order(){} public Order(Connection con, String id){ this.con = con; this.id = id; codeLabel = new JLabel("코드"); codeinput = new JTextField(5); codePanel = new JPanel(); codePanel.setLayout(new BorderLayout()); codePanel.add(codeLabel,BorderLayout.WEST); codePanel.add(codeinput,BorderLayout.EAST); quanLabel = new JLabel("주문량"); quaninput = new JTextField(5); quanPanel = new JPanel(); quanPanel.setLayout(new BorderLayout()); quanPanel.add(quanLabel,BorderLayout.WEST); quanPanel.add(quaninput,BorderLayout.EAST); insertButton = new JButton("입력"); insertButton.addActionListener(this); order = new JFrame("주문창"); order.setLayout(new BorderLayout()); order.add(codePanel, BorderLayout.NORTH); order.add(quanPanel, BorderLayout.CENTER); order.add(insertButton,BorderLayout.SOUTH); order.pack(); order.setResizable(false); order.setVisible(true); } @Override public void actionPerformed(ActionEvent e) { Object obj = e.getSource(); if(obj == insertButton ) { try { String branch=""; if(id.startsWith("kn")) branch = "강남점"; else if(id.startsWith("mr")) branch = "모란점"; String code = codeinput.getText(); info = new Info().serch(con, code); String name = info.name; int unitprice = info.unitprice; int quantity = Integer.parseInt(quaninput.getText()); int totalprice = unitprice*quantity; pstmt = con.prepareStatement("insert into convenience.order " + "( branch, orderdate, code, name, unitprice, quantity, totalprice) values (?,now(),?,?,?,?,?);"); pstmt.setString(1, branch); pstmt.setString(2, code); pstmt.setString(3,name); pstmt.setInt(4,unitprice); pstmt.setInt(5,quantity); pstmt.setInt(6,totalprice); pstmt.executeUpdate(); // 각 물음표에 넣을 값을 설정해주고 쿼리문 실행 } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } }

Toplist

최신 우편물

태그