兩天前,經管系的人找到我,說馬上要開迎新晚會了,要我寫個程序,事先錄入學生數據,然後學生在會場門口刷卡,屏幕顯示其學號姓名班等信息,並將所有到場的學生數據整合,參與接下來的抽獎。整個系統分為錄入系統,迎賓系統,和抽獎系統,因為多人參與錄入,不能使用固定的資料庫,以簡易為主
預覽圖
源代碼
import java.awt.Color; import java.awt.Container; import java.awt.Font; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.Reader; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextArea; import javax.swing.JTextField; public class face extends JFrame { public static void main(String[] args) { JFrame jf = new JFrame("歡迎參加2015經管系迎新晚會"); jf.setBounds(250, 100, 1350, 700); Container c = new Container(); JLabel title = new JLabel("歡迎參加2015經管系迎新晚會"); title.setFont(new Font("宋體", 1, 50)); JLabel staticNo = new JLabel("學號:"); JLabel no = new JLabel("2014233333"); JLabel staticName = new JLabel("姓名:"); JLabel name = new JLabel("測試"); JLabel staticSex = new JLabel("性別:"); JLabel sex = new JLabel("男"); JLabel staticCla = new JLabel("班級:"); JLabel cla = new JLabel("人力二班"); JLabel staticIde = new JLabel("身份:"); JLabel ide = new JLabel("初始賬戶"); JLabel staticVer = new JLabel("防偽碼:"); JLabel ver = new JLabel("23333333"); JLabel state = new JLabel(" 通過"); state.setOpaque(true); state.setBackground(Color.GREEN); JLabel tip = new JLabel("輸入數據請直接回車:"); JTextField enter = new JTextField(); JButton button = new JButton("確認"); JTextArea copyRight = new JTextArea("指令參數: admin/(密碼)---後台數據管理\n" + "lottery---啟動抽獎程序 exit---退出程序"); staticNo.setFont(new Font("宋體", 2, 24)); no.setFont(new Font("宋體", 1, 40)); staticName.setFont(new Font("宋體", 2, 24)); name.setFont(new Font("宋體", 1, 40)); staticSex.setFont(new Font("宋體", 2, 24)); sex.setFont(new Font("宋體", 1, 40)); staticCla.setFont(new Font("宋體", 2, 24)); cla.setFont(new Font("宋體", 1, 40)); staticIde.setFont(new Font("宋體", 2, 24)); ide.setFont(new Font("宋體", 1, 40)); staticVer.setFont(new Font("宋體", 2, 24)); ver.setFont(new Font("宋體", 1, 40)); state.setFont(new Font("宋體", 1, 60)); copyRight.setFont(new Font("宋體", 2, 15)); title.setBounds(300, 50, 900, 50); staticNo.setBounds(80, 140, 100, 50); no.setBounds(150, 140, 250, 50); staticName.setBounds(450, 140, 100, 50); name.setBounds(530, 140, 150, 50); staticSex.setBounds(750, 140, 100, 50); sex.setBounds(830, 140, 100, 50); staticCla.setBounds(930, 140, 100, 50); cla.setBounds(1000, 140, 200, 50); staticIde.setBounds(300, 200, 100, 50); ide.setBounds(380, 200, 200, 50); staticVer.setBounds(700, 200, 150, 50); ver.setBounds(800, 200, 300, 50); state.setBounds(460, 310, 400, 100); enter.setBounds(550, 450, 200, 25); tip.setBounds(550, 420, 200, 30); copyRight.setBounds(495, 550, 330, 40); copyRight.setEnabled(false); enter.addKeyListener(new KeyListener() { @Override public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER) { System.out.println("2333"); String eStu = enter.getText(); if (eStu.equals("xxx")) { Toy2.main(null); return; } if (eStu.equals("lottery")) { Toy.main(null); return; } if (eStu.equals("admin/xxx")) { entering.main(null); return; } if (eStu.equals("exit")) { System.exit(0); return; } if (eStu.equals("xxxxx")) { no.setText("2333333333"); name.setText("xxx"); sex.setText("男"); cla.setText("軟體二班"); ide.setText("內置賬戶"); ver.setText("66666"); state.setBackground(Color.pink); state.setText(" 歡迎"); enter.setText(""); enter.requestFocus(); return; } File f = new File("stu/" + eStu + ".stu"); if (!f.exists()) { no.setText("查無此人"); name.setText("無效"); sex.setText("無效"); cla.setText("無效"); ide.setText("無效"); ver.setText("無效"); state.setBackground(Color.RED); state.setText(" 拒絕"); enter.setText(""); enter.requestFocus(); } else { Reader reader = null; BufferedReader br = null; StringBuffer sb = null; try { reader = new FileReader("stu/" + eStu + ".stu"); br = new BufferedReader(reader); sb = new StringBuffer(); String data = null; try { while ((data = br.readLine()) != null) { sb.append(data); } } catch (IOException e1) { e1.printStackTrace(); } } catch (FileNotFoundException e1) { e1.printStackTrace(); } InputStream inStream = null; try { inStream = new FileInputStream("stu/" + eStu + ".stu"); } catch (FileNotFoundException e2) { e2.printStackTrace(); } FileOutputStream fs = null; try { fs = new FileOutputStream("come/" + eStu + ".stu"); } catch (FileNotFoundException e2) { e2.printStackTrace(); } byte[] buffer = new byte[1444]; // xxx int bytesum = 0; int byteread = 0; try { while ((byteread = inStream.read(buffer)) != -1) { bytesum += byteread; System.out.println(bytesum); fs.write(buffer, 0, byteread); } } catch (IOException e2) { e2.printStackTrace(); } try { inStream.close(); } catch (IOException e2) { e2.printStackTrace(); } String s = sb.toString(); String ss[] = s.split("@"); no.setText(ss[0]); name.setText(ss[1]); sex.setText(ss[2]); cla.setText(ss[3]); ide.setText(ss[4]); ver.setText(ss[5]); if (ss[2].startsWith("女")) { state.setBackground(Color.PINK); } state.setBackground(Color.GREEN); state.setText(" 通過"); enter.setText(""); enter.requestFocus(); try { br.close(); reader.close(); } catch (IOException e1) { enter.setText(""); enter.requestFocus(); e1.printStackTrace(); } } } } @Override public void keyReleased(KeyEvent arg0) { } @Override public void keyTyped(KeyEvent arg0) { } }); c.add(title); c.add(staticNo); c.add(no); c.add(name); c.add(staticName); c.add(staticSex); c.add(sex); c.add(staticCla); c.add(cla); c.add(tip); c.add(staticIde); c.add(staticVer); c.add(ide); c.add(ver); c.add(copyRight); jf.add(state); c.add(enter); jf.add(c); jf.setVisible(false); jf.setVisible(true); } } import java.awt.Color; import java.awt.Container; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.Reader; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; public class Toy extends JFrame { public static void main(String[] args) { JFrame jf = new JFrame("2015經管系迎新晚會抽獎系統"); jf.setBounds(100, 50, 750, 450); Container c = new Container(); jf.setVisible(true); JLabel title = new JLabel("2015經管系迎新晚會 抽獎系統"); title.setFont(new Font("宋體", 1, 40)); title.setBounds(80, 20, 600, 100); c.add(title); JLabel t1 = new JLabel("學號:"); t1.setFont(new Font("宋體", 1, 35)); t1.setBounds(150, 100, 100, 100); c.add(t1); JLabel t2 = new JLabel("等待抽獎"); t2.setFont(new Font("宋體", 1, 35)); t2.setBounds(250, 125, 200, 50); c.add(t2); JLabel t3 = new JLabel("姓名:"); t3.setFont(new Font("宋體", 1, 35)); t3.setBounds(150, 180, 100, 100); c.add(t3); JLabel t4 = new JLabel("等待抽獎"); t4.setFont(new Font("宋體", 1, 35)); t4.setBounds(250, 200, 200, 50); c.add(t4); JButton jb = new JButton("抽獎"); jb.setBounds(280, 300, 150, 50); t2.setOpaque(true); t2.setBackground(Color.YELLOW); t4.setOpaque(true); t4.setBackground(Color.YELLOW); jb.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { String result = "come/" + ListFilesInDirectory("come"); Reader reader = null; // xxx BufferedReader br = null; StringBuffer sb = null; try { reader = new FileReader(result); br = new BufferedReader(reader); sb = new StringBuffer(); String data = null; try { while ((data = br.readLine()) != null) { sb.append(data); } } catch (IOException e1) { e1.printStackTrace(); } } catch (FileNotFoundException e1) { e1.printStackTrace(); } String s = sb.toString(); System.out.println(s); String ss[] = s.split("@"); t2.setText(ss[0]); t4.setText(ss[1]); t2.setBackground(Color.GREEN); t4.setBackground(Color.GREEN); } }); c.add(jb); jf.add(c); } private static String ListFilesInDirectory(String string) { int count = 0; String result = null; String s[] = new String[600]; File file = new File(string); File[] files = file.listFiles(); for (File fl : files) { if (fl.isDirectory()) ListFilesInDirectory(fl.toString()); else { count++; s[count - 1] = fl.getName(); System.out.println(fl.getName()); } } result = s[(int) (Math.random() * count)]; return result; } } import java.awt.Color; import java.awt.Container; import java.awt.Font; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextArea; public class entering extends JFrame { public static void main(String[] args) { JFrame jf = new JFrame("2015經管系迎新晚會錄入系統"); jf.setBounds(100, 50, 800, 450); Container c = new Container(); jf.setVisible(true); JLabel title = new JLabel("2015經管系迎新晚會 錄入系統"); title.setFont(new Font("宋體", 1, 40)); title.setBounds(80, 20, 600, 100); c.add(title); JLabel t1 = new JLabel("學號:"); t1.setFont(new Font("宋體", 1, 35)); t1.setBounds(100, 100, 100, 100); c.add(t1); JLabel t2 = new JLabel("姓名:"); t2.setFont(new Font("宋體", 1, 35)); t2.setBounds(450, 135, 150, 35); c.add(t2); JLabel t3 = new JLabel("性別:"); t3.setFont(new Font("宋體", 1, 35)); t3.setBounds(100, 150, 100, 100); c.add(t3); JLabel t4 = new JLabel("班級:"); t4.setFont(new Font("宋體", 1, 35)); t4.setBounds(340, 175, 200, 50); c.add(t4); JLabel t5 = new JLabel("身份:"); t5.setFont(new Font("宋體", 1, 35)); t5.setBounds(100, 195, 100, 100); c.add(t5); JLabel t6 = new JLabel("防偽碼:"); t6.setFont(new Font("宋體", 1, 35)); t6.setBounds(410, 225, 200, 50); c.add(t6); JTextArea t7 = new JTextArea("提示:開始使用時請將焦點放置於學號處,輸好請回車,焦點將自動調至下一項," + "輸完班級回車後自動保存,需要修改身份,請先修改此項,最後完成班級輸入。" + "因為時間倉促,本程序並沒有選項或固定功能,為了多人協作和簡單易用," + "也沒有使用大型資料庫,不足之處,請多包涵。有問題可以聯繫我(然而你並不知道如何聯繫我233)"); t7.setLineWrap(true); t7.setBounds(100, 320, 600, 60); t7.setEnabled(false); c.add(t7); JLabel t8 = new JLabel("準備就緒,等待數據錄入..."); t8.setFont(new Font("宋體", 1, 20)); t8.setBounds(100, 280, 600, 25); t8.setOpaque(true); t8.setBackground(Color.GREEN); c.add(t8); JTextArea jt1 = new JTextArea(); jt1.setFont(new Font("宋體", 1, 35)); jt1.setBounds(200, 135, 230, 40); c.add(jt1); JTextArea jt2 = new JTextArea(); jt2.setFont(new Font("宋體", 1, 35)); jt2.setBounds(550, 135, 150, 40); c.add(jt2); JTextArea jt3 = new JTextArea(); jt3.setFont(new Font("宋體", 1, 35)); jt3.setBounds(200, 180, 100, 40); c.add(jt3); JTextArea jt4 = new JTextArea(); jt4.setFont(new Font("宋體", 1, 35)); jt4.setBounds(450, 180, 200, 40); c.add(jt4); JTextArea jt5 = new JTextArea("參觀學生"); jt5.setFont(new Font("宋體", 1, 35)); jt5.setBounds(200, 227, 200, 40); c.add(jt5); JTextArea jt6 = new JTextArea(); jt6.setFont(new Font("宋體", 1, 35)); jt6.setBounds(550, 230, 200, 40); jt6.setEnabled(false); c.add(jt6); int r = (int) (Math.random() * 100000000); jt6.setText(r + ""); jt1.addKeyListener(new KeyListener() { public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER) { jt2.requestFocus(); } } @Override public void keyReleased(KeyEvent e) { } @Override public void keyTyped(KeyEvent e) { } }); jt2.addKeyListener(new KeyListener() { public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER) { jt3.requestFocus(); } } @Override public void keyReleased(KeyEvent e) { } @Override public void keyTyped(KeyEvent e) { } }); jt3.addKeyListener(new KeyListener() { public void keyPressed(KeyEvent e2) { if (e2.getKeyCode() == KeyEvent.VK_ENTER) { jt4.requestFocus(); } } @Override public void keyReleased(KeyEvent e3) { } @Override public void keyTyped(KeyEvent e4) { } }); jt4.addKeyListener(new KeyListener() { public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER) { int r = (int) (Math.random() * 100000000); jt6.setText(r + ""); String s = jt1.getText() + "@" + jt2.getText() + "@" + jt3.getText() + "@" + jt4.getText() + "@" + jt5.getText() + "@" + jt6.getText(); if (jt1.getText().length() < 10) { // xxx t8.setText("拒絕錄入:學號位數不對!"); t8.setBackground(Color.RED); return; } try { if (Integer.parseInt(jt1.getText().substring(0, 10)) < 2010000000 || Integer.parseInt(jt1.getText().substring(0, 10)) > 2016000000) { t8.setText("拒絕錄入:學號格式不對!"); t8.setBackground(Color.RED); return; } } catch (Exception e3) { t8.setText("拒絕錄入:學號格式不對!"); t8.setBackground(Color.RED); return; } // if(!jt3.getText().equals("男")||!jt3.getText().equals("女")){ // t8.setText("拒絕錄入:性別請輸入男或女中文單字!"); // t8.setBackground(Color.RED); // return; // } File f = new File("stu/" + jt1.getText().substring(0, 10) + ".stu"); System.out.println("Done"); BufferedWriter output = null; try { output = new BufferedWriter(new FileWriter(f)); } catch (IOException e1) { e1.printStackTrace(); } try { output.write(s); } catch (IOException e1) { e1.printStackTrace(); } try { output.close(); } catch (IOException e1) { e1.printStackTrace(); } jt1.setText(""); jt2.setText(""); jt3.setText(""); jt4.setText(""); jt1.requestFocus(); t8.setBackground(Color.GREEN); t8.setText("成功存入數據:" + s); } } @Override public void keyReleased(KeyEvent e) { } @Override public void keyTyped(KeyEvent e) { } }); jt5.addKeyListener(new KeyListener() { public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER) { jt4.requestFocus(); } } @Override public void keyReleased(KeyEvent e) { } @Override public void keyTyped(KeyEvent e) { } }); jf.add(c); jf.setVisible(false); jf.setVisible(true); } }
御坂網路 2015/11/05 23:05
大家說這麼一長串的是什麼?我怎麼看不懂 😡
admin 博主 2015/11/06 09:21
@ 神秘代碼哦,是開啟新世界♂的鑰匙233
阿貴 2015/11/11 12:30
一個字,屌屌屌屌屌 😆
admin 博主 2015/11/11 19:25
@ 謝謝>_<
啊雷 2015/11/14 22:54
灰常不錯
admin 博主 2015/11/15 12:02
@ 謝謝
西道 2015/12/01 23:09
666... 用java實現的有點高端。 之前用node做過一個類似的系統,用的是微信的掃一掃介面掃二維碼來代替刷卡
admin 博主 2015/12/02 23:37
@ 嘿嘿 謝謝 也有一些人希望我做一些和微信相關的軟體 然而我一直沒用微信 感覺好陌生 所以也沒完成TAT
某宅部 2015/12/04 17:49
表示。。。感覺java完全學不懂啊,不如C語言更簡單... .net才是我信仰