瓜果蔬菜這裏查小系統

時間:2017年12月

階段:大二上學期

背景:JAVA程序設計基礎課設

名稱:瓜果蔬菜這裏查小系統(未刪減版)

實現功能點

①用戶註冊:檢測賬號的唯一性,並插入數據庫

②用戶登入:防數據庫注入問題

③遊客登入:權限限制,文字提示註冊,以增加本系統用戶量

④找回密碼:通過密匙找回,雙重保險

⑤身份與權限:遊客,會員,管理員,三級身份

⑥內容搜索:會員專屬,可尋找喜歡的瓜果蔬菜圖片和信息

⑦用戶管理:管理員可通過表格查詢用戶信息及刪除更改用戶信息

⑧信息修改:用戶可修改基本信息和安全信息

⑨界面切換:更多人性化的設計

⑩界面美化:半透明效果、居中顯示、置頂顯示等

項目測試

1、開始界面,用戶可以選擇遊客登入、用戶登入或者註冊登入來進入系統

2、開始界面打開時,數據庫的連接也在後臺在進行中,若連接失敗則會彈出連接失敗的對話框,點擊確認後,此程序將會被關閉。因爲程序必須使用數據庫,所以這樣設置。

3、再次運行程序,點擊“註冊加入我們”,會在開始面板的中間彈出註冊面板,註冊面板是半透明效果,且會一直至於開始面板的頂端,此時如果不點擊取消按鍵,其開始面板是不可被操作的,當點擊取消按鍵後,註冊面板會消失,開始面板會變成可操作面板,註冊面板重置按鍵可以把輸入文本框的內容全部清空,確定按鍵則是確定註冊。

4、註冊成功後自動彈出登入頁面,登入頁面的基本樣式和註冊頁面樣式相同,透明和按鍵效果等方面,“?”按鍵是找回密碼用的,在後面有詳細介紹。

5、註冊成功後數據庫裏有添加一行用戶名爲155231的字段

 

6、再次註冊相同賬號則會彈出賬號名是不可重複註冊的消息框

 

7、檢驗輸入文本框內容是否爲空,空則彈出賬號和密碼不能爲空消息框提示,不可進行登入操作

8、點擊開始界面的做一名小遊客安按鈕,進入遊客界面,且關閉開始界面,遊客不可以更改個人信息,不可以使用搜索功能,只能左右瀏覽,並且可見多處都有提示要進行註冊的文字。

9、瀏覽至最後一份或者第一份時會有相應提示

10、點擊改改自己,彈出一個半透明界面,可以更改自己的普通信息(個人資料)和安全信息(密碼和密匙),如果普通信息留白則會保持原來的信息,不會被空值覆蓋掉,當更改成功後則會跳到登入界面,需要再次進行登入操作,達到更高安全級別。

設計心得

      界面的美觀將必然會提高用戶的使用積極性,半透明效果切實令人有好感,但這視乎還遠遠不夠。書到用時方知少,Java能成爲現今最流行的編程語言,魅力如此之大,其內容肯定不簡,課堂重要,但自學更重要,用心了才能讓自己的程序行雲流水少有bug

      一個人,一句句代碼,慢慢的敲,許多天…..基本框架的實現,頁面內容深入實現,終於滿足暫時想要求,而它永遠不能稱之爲成品,人的慾望如果滿足了,那等待他的將只有退步,它一直會是我的半成品。好的程序不會是幾天就可以完成的,需要的是時間,慢慢的琢磨,慢慢的改進。

     學習。

工程代碼

  1 package test01;
  2 import java.awt.BorderLayout;
  3 import java.awt.Color;
  4 import java.awt.Dimension;
  5 import java.awt.Font;
  6 import java.awt.GridLayout;
  7 import java.awt.event.ActionEvent;
  8 import java.awt.event.ActionListener;
  9 import java.io.IOException;
 10 import java.io.PrintWriter;
 11 import java.io.StringWriter;
 12 import java.sql.Connection;
 13 import java.sql.DriverManager;
 14 import java.sql.ResultSet;
 15 import java.sql.SQLException;
 16 import java.sql.Statement;
 17 import javax.swing.ImageIcon;
 18 import javax.swing.JButton;
 19 import javax.swing.JComboBox;
 20 import javax.swing.JFrame;
 21 import javax.swing.JLabel;
 22 import javax.swing.JOptionPane;
 23 import javax.swing.JPanel;
 24 import javax.swing.JPasswordField;
 25 import javax.swing.JScrollPane;
 26 import javax.swing.JSplitPane;
 27 import javax.swing.JTable;
 28 import javax.swing.JTextArea;
 29 import javax.swing.JTextField;
 30 class Start{
 31     private JFrame jfde;
 32     private JFrame jfbu1;
 33     private JFrame jfbu2;
 34     private JFrame jfmain;
 35     private JFrame jfbu3g;
 36     private JTextField jtbu1user;
 37     private JPasswordField jtbu1pasw;
 38     private JTextField jtbu2user;
 39     private JPasswordField jtbu2pasw;
 40     private JPasswordField jtbu2pasw2;
 41     private  JTextField  jtbu2nam;
 42     private JTextField jtbu2age;
 43     private JComboBox jcbu2sex;
 44     private boolean boo=false;
 45     Connection ct=null;
 46     Statement st=null;
 47     private String dbuser;
 48     public Start(){
 49     jfde=new JFrame("瓜果蔬菜這裏查登入");
 50     jfde.setSize(600, 400);
 51     jfde.setResizable(false);//不可縮放
 52     jfde.setLocationRelativeTo(null);//居中顯示
 53     JLabel jlde=new JLabel(new ImageIcon("picture/jfde.jpg"));
 54     jlde.setBounds(0, 0,jfde.getWidth(), jfde.getWidth());
 55     JPanel jpde=new JPanel();
 56     JButton bu1=new JButton("已有賬號登入");
 57     JButton bu2=new JButton("註冊加入我們");
 58     JButton bu3=new JButton("做一名小遊客");
 59     jpde.add(bu3);
 60     jpde.add(bu1);
 61     jpde.add(bu2);
 62     jfde.add(jpde,"South");
 63     jfde.add(jlde);
 64     jfde.setVisible(true);
 65     new Db();//數據庫加載
 66     bu1.addActionListener(new Bu1());
 67     bu2.addActionListener(new Bu2());
 68     bu3.addActionListener(new Bu3());}
 69     class Bu1 implements ActionListener{
 70         private ActionEvent e;
 71         public Bu1(int x){actionPerformed(e);}
 72         public Bu1(){};
 73         @Override
 74         public void actionPerformed(ActionEvent e) {
 75             jfde.setEnabled(false);//設置不可執行窗口setOpacity(0.8f);
 76             jfbu1=new JFrame();
 77             jfbu1.setUndecorated(true);
 78             jfbu1.setOpacity(0.8f);
 79             JPanel jpbu1=new JPanel();
 80             jpbu1.setBackground(Color.green);
 81             jpbu1.setLayout(new GridLayout(4,1));//縱,橫
 82             JPanel jpbu5=new JPanel();
 83             JPanel jpbu3=new JPanel();//密碼
 84             JPanel jpbu6=new JPanel();
 85             JPanel jpbu4=new JPanel();//按鍵
 86             JPanel JPbu7=new JPanel();
 87             JPbu7.add(new JLabel("登入"));
 88             JLabel jlbu1user=new JLabel("賬號: ");
 89              jtbu1user=new JTextField(12);
 90             JLabel jlbu1pasw=new JLabel("密碼: ");
 91             jtbu1pasw=new JPasswordField(12);
 92             JButton jbbu1hui=new JButton("?");//找回密碼
 93             JButton jbbu1hxx=new JButton(" ");
 94             jbbu1hxx.setEnabled(false);
 95             jpbu5.add(jlbu1user);
 96             jpbu5.add(jtbu1user);
 97             jpbu5.add(jbbu1hxx);
 98             jpbu3.add(jlbu1pasw);
 99             jpbu3.add(jtbu1pasw);
100             jpbu3.add(jbbu1hui);
101             jpbu1.add(JPbu7);
102             jpbu1.add(jpbu5);
103             jpbu1.add(jpbu3);
104             jpbu1.add(jpbu6);
105             JButton jbbu1sub=new JButton("確定");
106             JButton jbbu1res=new JButton("重置");
107             JButton jbbu1bac=new JButton("取消");
108             jpbu4.add(jbbu1res);
109             jpbu4.add(jbbu1sub);
110             jpbu4.add(jbbu1bac);
111             jfbu1.add(jpbu1,"Center");
112             jfbu1.add(jpbu4, "South");
113             jfbu1.setResizable(false);//不可縮放
114             jfbu1.setSize(300, 200);
115             jfbu1.setLocationRelativeTo(jfde);//設置基於jfde窗體居中
116             jfbu1.setAlwaysOnTop(true);//窗體頂端顯示
117             jfbu1.setVisible(true);
118             jbbu1res.addActionListener(new Jbbu1res());
119             jbbu1bac.addActionListener(new Jbbu1bac());
120             jbbu1sub.addActionListener(new Jbbu1sub());
121             jbbu1hui.addActionListener(new Jbbu1hui());
122         }}
123     class Bu2 implements ActionListener{
124         private ActionEvent e;
125         public Bu2(){};
126         public Bu2(int i){actionPerformed(e);}
127         public void actionPerformed(ActionEvent e){
128             jfde.setEnabled(false);//設置不可執行窗口setOpacity(0.8f);
129             jfbu2=new JFrame();
130             jfbu2.setUndecorated(true);
131             jfbu2.setOpacity(0.8f);
132             JPanel jpbu1=new JPanel();
133             jpbu1.setBackground(Color.green);
134             jpbu1.setLayout(new GridLayout(7,1));//縱,橫
135             JPanel jpbu2=new JPanel();
136             JPanel jpbu5=new JPanel();
137             JPanel jpbu3=new JPanel();
138             JPanel jpbu6=new JPanel();
139             JPanel jpbu4=new JPanel();
140             JPanel jpbu7=new JPanel();
141             JPanel jpbu8=new JPanel();
142             jpbu8.add(new JLabel("註冊"));
143             jpbu1.add(jpbu8);
144             JLabel jlbu2user=new JLabel("賬號: ");
145              jtbu2user=new JTextField(12);
146             JLabel jlbu2pasw=new JLabel("密碼: ");
147              jtbu2pasw=new JPasswordField(12);
148             JLabel jlbu2pasw2=new JLabel("確認密碼: ");
149              jtbu2pasw2=new JPasswordField(12);
150              JLabel jlbu2nam=new JLabel("暱稱: ");
151              jtbu2nam=new JTextField(12); 
152             JLabel  jlbu2sex=new JLabel("性別: ");
153             String str[]={"","男","女"};
154             jcbu2sex=new JComboBox(str);
155             //jcbu2sex.setEditable(true);
156             JLabel jlbu2age=new JLabel("年齡: ");
157             jtbu2age=new JTextField(3);
158             jpbu2.add(jlbu2user);
159             jpbu2.add(jtbu2user);
160             jpbu3.add(jlbu2pasw);
161             jpbu3.add(jtbu2pasw);
162             jpbu3.add(jlbu2pasw2);
163             jpbu3.add(jtbu2pasw2);
164             jpbu4.add(jlbu2nam);
165             jpbu4.add(jtbu2nam);
166             jpbu5.add(jlbu2sex);
167             jpbu5.add(jcbu2sex);
168             jpbu6.add(jlbu2age);
169             jpbu6.add(jtbu2age);
170             jpbu1.add(jpbu2);
171             jpbu1.add(jpbu3);
172             jpbu1.add(jpbu4);
173             jpbu1.add(jpbu5);
174             jpbu1.add(jpbu6);
175             JButton jbbu2sub=new JButton("確定");
176             JButton jbbu2res=new JButton("重置");
177             JButton jbbu2bac=new JButton("取消");
178             jpbu7.add(jbbu2res);
179             jpbu7.add(jbbu2sub);
180             jpbu7.add(jbbu2bac);
181             jfbu2.add(jpbu1,"North");
182             jfbu2.add(jpbu7, "South");
183             jfbu2.setResizable(false);//不可縮放
184             jfbu2.setSize(400, 250);
185             jfbu2.setLocationRelativeTo(jfde);//設置基於jfde窗體居中
186             jfbu2.setAlwaysOnTop(true);//窗體頂端顯示
187             jfbu2.setVisible(true);
188            jbbu2res.addActionListener(new Jbbu2res());
189            jbbu2bac.addActionListener(new Jbbu2bac());
190            jbbu2sub.addActionListener(new Jbbu2sub());}    }
191     class Bu3 implements ActionListener{
192         private int nut=0;
193         private int dbzong=0;
194         private ActionEvent e;
195         public Bu3(){};
196         public Bu3(int i){actionPerformed(e);}
197         @Override
198         public void actionPerformed(ActionEvent e) {   //登入主********************************         
199             String usnc = null;
200             String ussex=null;
201             int usage=0;
202             String usqm=null;
203             String ussf=null;
204             if(boo==true){
205                 boo=false;
206             }else{dbuser="11768";}
207             jfde.dispose();
208         try {
209             ResultSet re=st.executeQuery("select *from t_userx where 用戶名='"+dbuser+"'");
210             if(re.next()){
211                 usnc=re.getString("暱稱");
212                 ussex=re.getString("性別");
213                 usage=re.getInt("年齡");
214                 usqm=re.getString("簽名");
215                 ussf=re.getString("身份");
216             }re.close();//關閉
217         } catch (SQLException e1) {
218             e1.printStackTrace();
219         }    
220         jfmain=new JFrame("瓜果蔬菜這裏查");
221         jfmain.setExtendedState(JFrame.MAXIMIZED_BOTH);
222         JSplitPane jspouter=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true);
223         JSplitPane jspinner=new JSplitPane(JSplitPane.VERTICAL_SPLIT,true);
224         JPanel jp1=new JPanel();
225         jp1.setLayout(new GridLayout(7,1));//縱,橫
226         JPanel jpim=new JPanel();
227         JButton jb1=new JButton(new ImageIcon("picture/jfmain_user.jpg"));
228         jpim.add(jb1);
229         jb1.setBackground(Color.blue);
230         JLabel jl1=new JLabel("^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^");
231         jp1.add(jl1);
232         jp1.add(jpim);
233         JPanel jpusem=new JPanel();
234         jpusem.setLayout(new GridLayout(4,1));
235         JLabel jln1=new JLabel("             "+usnc.trim());
236         jln1.setFont(new Font("華文行楷",Font.BOLD,24));
237         JLabel jln2=new JLabel("賬    號:"+dbuser.trim());
238         JLabel jln3=new JLabel("身    份:"+ussf.trim());
239         JLabel jln4=new JLabel("年    齡:"+usage);
240         JLabel jln5=new JLabel("性    別:"+ussex.trim());
241         JLabel jln6=new JLabel("籤    名:"+usqm.trim());
242         JPanel jpjsem=new JPanel();
243         JPanel jpj=new JPanel();
244         jpjsem.setLayout(new GridLayout(4,1));
245         jpjsem.add(jln5);
246         jpjsem.add(jln6);
247         jpusem.add(jln1);
248         jpusem.add(jln2);
249         jpusem.add(jln3);
250         jpusem.add(jln4);
251         jp1.add(jpusem);
252         jp1.add(jpjsem);
253         JPanel jpys=new JPanel();
254         if(ussf.trim().equals("管理員")){
255             JPanel jpzk=new JPanel();
256             String[][] struse=new String[100][7];
257              String []names={"用戶名","密碼","暱稱","年齡","性別","身份","簽名"};
258              int i=0,j=0,x=0;
259              try {
260                 ResultSet regl=st.executeQuery("select *from t_userx");
261                 while(regl.next()){
262                     if(x==0){x++;continue;}
263                     struse[i][j]=regl.getString("用戶名");j++;
264                     struse[i][j]=regl.getString("密碼");j++;
265                     struse[i][j]=regl.getString("暱稱");j++;
266                     struse[i][j]=String.valueOf(regl.getInt("年齡"));j++;
267                     struse[i][j]=regl.getString("性別");j++;
268                     struse[i][j]=regl.getString("身份");j++;
269                     struse[i][j]=regl.getString("簽名");j++;i++;j=0;}
270                 i=0;j=0;
271                 x=0;
272                 regl.close();//關閉
273             } catch (SQLException e1) {
274                 e1.printStackTrace();}    
275             JTable table=new JTable(struse,names);
276             table.setPreferredScrollableViewportSize(new Dimension(1000,900));
277             JScrollPane scll=new JScrollPane(table);
278             jpzk.add(scll);
279             JButton jbsc=new JButton("刪除用戶");
280             jpys.add(jpzk);
281             jpys.add(jbsc);
282             jbsc.addActionListener(new ActionListener(){
283                 public void actionPerformed(ActionEvent e) {
284                     String inxx=JOptionPane.showInputDialog(null,"請輸入需要刪除的用戶名:","刪除用戶",JOptionPane.QUESTION_MESSAGE);
285                     if(inxx!=null&&Integer.parseInt(inxx)!=1){
286                         try {
287                             ResultSet re = st.executeQuery("select *from t_userx where 用戶名='"+inxx+"'");
288                             if(!re.next()){ 
289                                 JOptionPane.showMessageDialog(null,"查找失敗,請重新輸入");
290                             }else{
291                                 try {
292                                     int yongh=st.executeUpdate("delete from t_userx where 用戶名='"+inxx+"'");
293                                     if(yongh==1){JOptionPane.showMessageDialog(null, "刪除成功,再次進入此頁將更新表格");}
294                                 } catch (SQLException e1) {
295                                     e1.printStackTrace();
296                                 }}
297                         } catch (SQLException e1) {
298                             e1.printStackTrace();}}}});}else{
299         jpys.setLayout(new BorderLayout());
300         
301         JPanel jpss=new JPanel();
302         jpss.setLayout(new GridLayout(3,1));
303         JPanel jpss0=new JPanel();
304         JLabel jlss=new JLabel("搜索想要的         (遊客無搜索功能,快加入我們吧)   :");
305         JButton jbss=new JButton("搜索");
306         JTextField jtss=new JTextField(12);
307         jpss0.add(jlss);
308         jpss0.add(jtss);
309         jpss0.add(jbss);
310         jpss.add(jpss0);
311         JLabel jlzk=new JLabel("-----添加、收藏等更多功能,趕緊註冊上車-----");
312         JLabel jlzk2=new JLabel("");
313         jpss.add(jlzk);
314         jpss.add(jlzk2);
315         jpys.add(jpss,"North");
316         JPanel jpnr=new JPanel();
317         JLabel jlim=new JLabel(new ImageIcon("picture/0.jpg"));
318         jlim.setBounds(0, 0,jlim.getWidth(), jlim.getWidth());
319         jpnr.add(jlim);
320         JTextArea jta=new JTextArea("信息:\n\n",20,20);
321         jta.setEditable(false);
322         jta.setLineWrap(true);
323         JScrollPane jsp=new JScrollPane(jta);//滾動條
324         jpnr.add(jta);
325         jpys.add(jpnr,"Center");
326         JPanel jpbt=new JPanel();
327         JButton jbsan=new JButton("上一份");
328         JButton jbxia=new JButton("下一份");
329         if(ussf.trim().equals("會員")){
330             jlss.setText("  在這裏找找自己想要的:    ");
331             jlzk.setText("-----歡迎來到這美妙的瓜果蔬菜世界-----");
332             JPanel jpzk1=new JPanel();
333             JPanel jpzk2=new JPanel();
334             JPanel jpgai=new JPanel();
335             JPanel jpjg=new JPanel();
336             JButton jbbu3g=new JButton("改改自己");
337             JButton jbbu3d=new JButton("切換賬號");
338             jp1.add(jpzk1);
339             jp1.add(jpzk2);
340             jpgai.add(jbbu3g);
341             jpgai.add(jbbu3d);
342             jpjg.add(jbbu3d);
343             jpjg.add(jbbu3g);
344             jp1.add(jpjg);
345             JButton jbsc=new JButton("收藏");
346             jpbt.add(jbsc);
347             jpbt.add(new JLabel("                                                      "));
348             jpbt.add(new JLabel("                                                      "));
349             jpbt.add(jbsan);
350             jpbt.add(new JLabel("                                                      "));
351             jpbt.add(new JLabel("                                                      "));
352             jpbt.add(new JLabel("                                                      "));
353             jpbt.add(jbxia);
354             jpbt.add(new JLabel("                                                      "));
355             jpbt.add(new JLabel("                                                      "));
356             JButton jbtj=new JButton("添加");
357             jpbt.add(jbtj);
358             jbbu3g.addActionListener(new Jbbu3g());
359             jbbu3d.addActionListener(new Jbbu3d());
360             jbss.addActionListener(new ActionListener(){
361                 @Override
362                 public void actionPerformed(ActionEvent e) {
363                 if("".equals(jtss.getText())) JOptionPane.showMessageDialog(null, "搜索編號不可爲空");
364                 try {
365                     ResultSet rsss = st.executeQuery("select *from t_fruit1 where 序號="+jtss.getText().trim());
366                         if(rsss.next()){
367                             jlzk2.setText("             唯一編號:"+rsss.getString("序號").trim()+"                                                  名稱:"+rsss.getString("名稱").trim());
368                             jlim.setIcon(new ImageIcon("picture/"+rsss.getString("文件路徑").trim()));
369                             jta.setText("信息:\n\n   "+rsss.getString("信息").trim());
370                             }else{
371                             JOptionPane.showMessageDialog(null,"查找失敗,請重新輸入");    
372                     }
373                 } catch (SQLException e1) {
374                     // TODO 自動生成的 catch 塊
375                     e1.printStackTrace();}    }});
376         }else{
377             JButton jbbu3j=new JButton("加入我們");
378             jpj.add(jbbu3j);//加入我們
379             jp1.add(jpj);
380             jbbu3j.addActionListener(new Jbbu3j());//註冊賬號     
381             
382             jpbt.add(jbsan);
383             jpbt.add(new JLabel("                                                      "));
384             jpbt.add(new JLabel("                                                      "));
385             jpbt.add(new JLabel("                                                      "));
386             jpbt.add(jbxia);
387         }
388         jpys.add(jpbt,"South");
389 
390         jbxia.addActionListener(new ActionListener(){
391             
392             @Override
393             public void actionPerformed(ActionEvent e) {
394                 nut++;
395                 try {
396                     ResultSet recoun=st.executeQuery("select count(序號)conu from t_fruit1");
397                     if(recoun.next()){dbzong=recoun.getInt("conu");}
398                     
399                     if(nut==1&&nut<=dbzong){
400                     ResultSet rsde1 = st.executeQuery("select top 1 *from t_fruit1");
401                     
402                     if(rsde1.next()){
403                         jlzk2.setText("             唯一編號:"+rsde1.getString("序號").trim()+"                                                   名稱:"+rsde1.getString("名稱").trim());
404                         jlim.setIcon(new ImageIcon("picture/"+rsde1.getString("文件路徑").trim()));
405                         jta.setText("信息:\n\n   "+rsde1.getString("信息").trim());
406                         
407                         }
408                 }else if(nut>1&&nut<=dbzong){
409                     
410                    ResultSet rsde1 = st.executeQuery("select top "+nut+" *from t_fruit1 where 序號 not in(select top "+(nut-1)+" 序號 from t_fruit1)");
411                     if(rsde1.next()){
412                         jlzk2.setText("             唯一編號:"+rsde1.getString("序號").trim()+"                                                    名稱:"+rsde1.getString("名稱").trim());
413                         jlim.setIcon(new ImageIcon("picture/"+rsde1.getString("文件路徑").trim()));
414                         jta.setText("信息:\n\n   "+rsde1.getString("信息").trim());
415                 }}else{
416                     nut--;
417                     JOptionPane.showMessageDialog(null,"已經是最後份");
418                 } }catch (SQLException e2) {
419                     // TODO 自動生成的 catch 塊
420                     e2.printStackTrace();
421                 }}});
422         jbsan.addActionListener(new ActionListener(){
423             public void actionPerformed(ActionEvent e){        
424                 if(nut!=0)nut--;    
425                 if(nut>0){
426                     try {
427                         ResultSet recoun=st.executeQuery("select count(序號)conu from t_fruit1");
428                         if(recoun.next()){dbzong=recoun.getInt("conu");}
429                         
430                         if(nut==1&&nut<=dbzong){
431                         ResultSet rsde1 = st.executeQuery("select top 1 *from t_fruit1");
432                         if(rsde1.next()){
433                             jlzk2.setText("             唯一編號:"+rsde1.getString("序號").trim()+"                                                  名稱:"+rsde1.getString("名稱").trim());
434                             jlim.setIcon(new ImageIcon("picture/"+rsde1.getString("文件路徑").trim()));
435                             jta.setText("信息:\n\n   "+rsde1.getString("信息").trim());
436                             
437                             }
438                     }else if(nut>1&&nut<=dbzong){
439                         
440                        ResultSet rsde1 = st.executeQuery("select top "+nut+" *from t_fruit1 where 序號 not in(select top "+(nut-1)+" 序號 from t_fruit1)");
441                         if(rsde1.next()){
442                             jlzk2.setText("             唯一編號:"+rsde1.getString("序號").trim()+"                                                    名稱:"+rsde1.getString("名稱").trim());
443                             jlim.setIcon(new ImageIcon("picture/"+rsde1.getString("文件路徑").trim()));
444                             jta.setText("信息:\n\n   "+rsde1.getString("信息").trim());}}else{
445                         nut=1;
446                         JOptionPane.showMessageDialog(null,"已經是第一份");
447                     } }catch (SQLException e2) {
448                     e2.printStackTrace();}
449                 }else{
450                     nut=1;
451                     JOptionPane.showMessageDialog(null,"已經是第一份");
452     }}});}
453         jspouter.setLeftComponent(jp1);
454         jspouter.setRightComponent(jspinner);
455         jspinner.setTopComponent(jpys);
456         JPanel jpyx=new JPanel();
457         jpyx.setLayout(new GridLayout(4,1));
458         jpyx.add(new JLabel("開  發  者:東小東"));
459         jpyx.add(new JLabel("項目名稱:瓜果蔬菜這裏查"));
460         jpyx.add(new JLabel("時        間:2017-12-16"));
461         jspinner.setBottomComponent(jpyx);
462         jspinner.setDividerLocation(900);
463         jspinner.setDividerSize(4);
464         jspouter.setDividerSize(4);
465         jfmain.add(jspouter);
466         jfmain.setVisible(true);}}
467 class Jbbu1res implements ActionListener{
468     @Override
469     public void actionPerformed(ActionEvent e) {
470         jtbu1user.setText("");
471         jtbu1pasw.setText("");}}
472 class Jbbu1bac implements ActionListener{
473     @Override
474     public void actionPerformed(ActionEvent e) {
475     jfbu1.dispose();
476     jfde.setEnabled(true);//可執行窗口
477     }    }
478 class Jbbu1sub implements ActionListener{
479 public void actionPerformed(ActionEvent e){
480                                                                //登入*-****************************
481     if(jtbu1user.getText().equals("")||String.valueOf(jtbu1pasw.getPassword()).equals("")){
482         jfbu1.setVisible(false);
483         JOptionPane.showMessageDialog(null,"賬號和密碼不能爲空");
484         jfbu1.setVisible(true);
485     }else{
486 try {
487     ResultSet rsde=st.executeQuery("select 密碼 from t_userx where 用戶名='"+jtbu1user.getText()+"'");
488     if(rsde.next()){
489         String pass=rsde.getString("密碼");
490         if(pass.trim().equals(String.valueOf(jtbu1pasw.getPassword()).trim())){
491             boo=true;
492             dbuser=jtbu1user.getText();
493             jfbu1.dispose();
494             new Bu3(1);    
495         }else{
496             jfbu1.setVisible(false);
497             JOptionPane.showMessageDialog(null, "密碼錯誤,請重新輸入");
498             jfbu1.setVisible(true);    
499         }
500         }else{
501             jfbu1.setVisible(false);
502             JOptionPane.showMessageDialog(null,"賬號不存在,請重新輸入");
503             jfbu1.setVisible(true);}
504 } catch (SQLException e1) {
505     e1.printStackTrace();
506 }}}    }
507 class Jbbu1hui implements ActionListener{
508     public void actionPerformed(ActionEvent e){//找回密碼*-****************************    
509     JFrame jfhui=new JFrame();
510     jfbu1.dispose();
511     jfhui.setUndecorated(true);
512     jfhui.setOpacity(0.8f);
513     jfhui.setResizable(false);//不可縮放
514     jfhui.setSize(300, 200);
515     jfhui.setLocationRelativeTo(jfde);//設置基於jfde窗體居中
516     JPanel jpbu1=new JPanel();
517     jpbu1.setLayout(new GridLayout(5,1));//縱,橫
518     JPanel jpbu3=new JPanel();
519     JPanel jpbu4=new JPanel();
520     JPanel jpbu5=new JPanel();
521     JPanel jpbu6=new JPanel();    
522     JPanel jpbu7=new JPanel();
523     JLabel jl1=new JLabel("找回密碼");
524     jpbu1.add(jl1);
525     JLabel jlx=new JLabel("賬號");
526     JTextField jtx=new JTextField(12);
527     jpbu3.add(jlx);
528     jpbu3.add(jtx);
529     jpbu1.add(jpbu3);
530     JLabel jlps=new JLabel("密匙");
531     JPasswordField jtps=new JPasswordField(12);
532     jpbu4.add(jlps);
533     jpbu4.add(jtps);
534     jpbu1.add(jpbu4);
535     jpbu1.add(jpbu7);
536     JButton jbsub=new JButton("確定");
537     JButton jbbac=new JButton("取消");
538     jpbu5.add(jbsub);
539     jpbu5.add(jbbac);
540     jpbu1.add(jpbu5);
541     jfhui.add(jpbu1,"Center");
542     jfhui.add(jpbu6,"South");
543     jfhui.setAlwaysOnTop(true);//窗體頂端顯示
544     jfhui.setVisible(true);
545     jbbac.addActionListener(new ActionListener(){
546         @Override
547         public void actionPerformed(ActionEvent e) {
548             jfhui.dispose();
549             jfde.setEnabled(true);//可執行窗口
550 }});
551     jbsub.addActionListener(new ActionListener(){
552         @Override
553         public void actionPerformed(ActionEvent e) {
554         ResultSet rsde;
555         try {
556             rsde = st.executeQuery("select 密碼,密匙 from t_userx where 用戶名='"+jtx.getText()+"'");
557             if(rsde.next()){
558                 String pass=rsde.getString("密匙");
559                 String pass1=rsde.getString("密碼");
560                 if(pass.trim().equals(String.valueOf(jtps.getPassword()).trim())){
561                     jfhui.dispose();
562                     JOptionPane.showMessageDialog(null,"密碼爲:"+pass1.trim()+"   可登入後修改密碼^_^   ");
563                     jfde.setEnabled(true);//可執行窗口
564                      new Bu1(1);}else{
565                     jfhui.setVisible(false);
566                     JOptionPane.showMessageDialog(null, "密匙錯誤,請重新輸入");
567                     jfhui.setVisible(true);    }
568                 }else{
569                     jfhui.setVisible(false);
570                     JOptionPane.showMessageDialog(null,"賬號不存在,請重新輸入");
571                     jfhui.setVisible(true);
572                 }} catch (SQLException e1) {
573                     e1.printStackTrace();}}});}}
574 class Jbbu2bac implements ActionListener{
575     @Override
576     public void actionPerformed(ActionEvent e) {
577         jfbu2.dispose();
578         jfde.setEnabled(true);}}
579 class Jbbu2res implements ActionListener{
580     public void actionPerformed(ActionEvent e){
581         jtbu2user.setText("");
582         jtbu2pasw.setText("");
583         jtbu2pasw2.setText("");
584         jtbu2nam.setText("");
585         jtbu2age.setText("");}}
586 class Jbbu2sub implements ActionListener{
587     public void actionPerformed(ActionEvent e){//註冊******************************** 
588         if(jtbu2user.getText().equals("")||String.valueOf(jtbu2pasw.getPassword()).equals("")){jfbu2.setVisible(false);
589             JOptionPane.showMessageDialog(null,"賬號和密碼不能爲空");
590             jfbu2.setVisible(true);}
591         else if(!(String.valueOf(jtbu2pasw.getPassword()).equals(String.valueOf(jtbu2pasw2.getPassword())))){
592             jfbu2.setVisible(false);
593             JOptionPane.showMessageDialog(null, "兩次輸入密碼不一致");
594             jfbu2.setVisible(true);}
595         else{
596         try {int inx=st.executeUpdate(String.format("insert into t_userx values('%s','%s','%s','%s',%d,'','會員','')",jtbu2user.getText(),String.valueOf(jtbu2pasw.getPassword()),"".equals(jtbu2nam.getText())?"NULL":jtbu2nam.getText(),"".equals(jcbu2sex.getSelectedItem())?"祕密":jcbu2sex.getSelectedItem(),("".equals(jtbu2age.getText()))?0:Integer.parseInt(jtbu2age.getText())));
597             if(inx==1){
598                 jfbu2.dispose();
599                 JOptionPane.showMessageDialog(null,"註冊成功");
600                 jfde.setEnabled(true);
601                 new Bu1(1); }
602         } catch (SQLException e1) {
603             StringWriter sw=new StringWriter();
604             PrintWriter pw=new PrintWriter(sw);
605             e1.printStackTrace(pw);
606                 String strx=new String(sw.toString());
607                 if(strx.indexOf("重複鍵")>-1) {
608                 jfbu2.setVisible(false);
609                 JOptionPane.showMessageDialog(null,String.format("賬號:%s 不可重複註冊",strx.substring(strx.indexOf("重複鍵值爲 (")+7,strx.indexOf(" )。")).trim()));
610                 jfbu2.setVisible(true);
611                 try{
612                 sw.close();
613                 pw.close();
614             } catch (IOException e11) {
615                 e11.printStackTrace();}}}    }    }}
616 class Jbbu3j implements ActionListener{
617     public void actionPerformed(ActionEvent e){
618         jfde.setVisible(true);
619         jfmain.dispose();
620         new Bu2(1);}}
621 class Jbbu3g implements ActionListener{
622     public void actionPerformed(ActionEvent e){
623         jfmain.setEnabled(false);//設置不可執行窗口setOpacity(0.8f);
624         jfbu3g=new JFrame();
625         jfbu3g.setUndecorated(true);
626         jfbu3g.setOpacity(0.9f);
627         jfbu3g.setResizable(false);//不可縮放
628         jfbu3g.setSize(750, 480);
629         jfbu3g.setLocationRelativeTo(jfmain);//設置基於jfde窗體居中
630         JPanel jpbu1=new JPanel();
631         jpbu1.setBackground(Color.green);
632         jpbu1.setLayout(new GridLayout(10,1));//縱,橫
633         JPanel jpbu2=new JPanel();
634         JPanel jpbu5=new JPanel();
635         JPanel jpbu3=new JPanel();
636         JPanel jpbu6=new JPanel();
637         JPanel jpbu4=new JPanel();
638         JPanel jpbu7=new JPanel();
639         JPanel jpbu8=new JPanel();
640         JPanel jpbu9=new JPanel();
641         JPanel jpbu10=new JPanel();
642         JPanel jpbu11=new JPanel();
643         jpbu2.setBackground(Color.yellow);
644         jpbu3.setBackground(Color.yellow);
645         jpbu8.setBackground(Color.yellow);
646         jpbu4.setBackground(Color.green);
647         jpbu5.setBackground(Color.green);
648         jpbu6.setBackground(Color.green);
649         jpbu7.setBackground(Color.green);
650         jpbu9.setBackground(Color.green);
651         jpbu10.setBackground(Color.green);
652         jpbu11.setBackground(Color.green);
653         JLabel jlbiao=new JLabel("修改普通信息(留白則不會更改)");
654         jpbu2.add(jlbiao);
655         jpbu1.add(jpbu2);
656         jpbu3.add(new JLabel("賬號爲:"+dbuser));
657         jpbu1.add(jpbu3);
658         JLabel jlnc=new JLabel("暱稱");
659         JTextField jtnc=new JTextField(12);
660         jpbu4.add(jlnc);
661         jpbu4.add(jtnc);
662         jpbu1.add(jpbu4);
663         JLabel jlxb=new JLabel("性別");
664         String str[]={"","男","女"};
665         JComboBox jcxb=new JComboBox(str);
666         jpbu5.add(jlxb);
667         jpbu5.add(jcxb);
668         jpbu1.add(jpbu5);
669         JLabel jlnl=new JLabel("年齡");
670         JTextField jtnl=new JTextField(5);
671         jpbu6.add(jlnl);
672         jpbu6.add(jtnl);
673         jpbu1.add(jpbu6);
674         JLabel jlqm=new JLabel("簽名");
675         JTextField jtqm=new JTextField(24);
676         jpbu7.add(jlqm);
677         jpbu7.add(jtqm);
678         jpbu1.add(jpbu7);
679         jpbu8.add(new JLabel("修改安全信息(密碼爲登入使用,密匙爲找回密碼使用,不能爲空)"));
680         jpbu1.add(jpbu8);
681         JLabel jlmm=new JLabel("密碼: ");
682         JPasswordField jtmm=new JPasswordField(12);
683         JLabel jlmm2=new JLabel("確認密碼: ");
684         JPasswordField jtmm2=new JPasswordField(12);
685         jpbu9.add(jlmm);
686         jpbu9.add(jtmm);
687         jpbu9.add(jlmm2);
688         jpbu9.add(jtmm2);
689         jpbu1.add(jpbu9);
690         JLabel jlms=new JLabel("密匙: ");
691         JPasswordField jtms=new JPasswordField(12);
692         JLabel jlms2=new JLabel("確認密匙: ");
693         JPasswordField jtms2=new JPasswordField(12);
694         jpbu10.add(jlms);
695         jpbu10.add(jtms);
696         jpbu10.add(jlms2);
697         jpbu10.add(jtms2);
698         jpbu1.add(jpbu10);
699         JButton jbsub=new JButton("確定");
700         JButton jbbac=new JButton("取消");
701         jpbu11.add(jbsub);
702         jpbu11.add(jbbac);
703         jfbu3g.add(jpbu11,"South");
704         jfbu3g.add(jpbu1,"Center");
705         jfbu3g.setAlwaysOnTop(true);//窗體頂端顯示
706         jfbu3g.setVisible(true);
707         jbbac.addActionListener(new ActionListener(){
708             public void actionPerformed(ActionEvent e) {
709                 jfmain.setEnabled(true);//設置不可執行窗口setOpacity(0.8f);    
710                 jfbu3g.dispose();}});
711         jbsub.addActionListener(new ActionListener(){
712             public void actionPerformed(ActionEvent e) {
713     if(String.valueOf(jtmm2.getPassword()).equals("")||String.valueOf(jtms.getPassword()).equals("")||String.valueOf(jtms2.getPassword()).equals("")||String.valueOf(jtmm.getPassword()).equals("")){
714                     jfbu3g.setVisible(false);
715                     JOptionPane.showMessageDialog(null,"密碼和密匙不能爲空");
716                     jfbu3g.setVisible(true);
717                     
718                 }else if(!(String.valueOf(jtmm.getPassword()).equals(String.valueOf(jtmm2.getPassword())))){
719                     jfbu3g.setVisible(false);
720                     JOptionPane.showMessageDialog(null, "兩次輸入密碼不一致");
721                     jfbu3g.setVisible(true);
722                     
723                 }else if(!(String.valueOf(jtms.getPassword()).equals(String.valueOf(jtms2.getPassword())))){
724                     jfbu3g.setVisible(false);
725                     JOptionPane.showMessageDialog(null, "兩次輸入密匙不一致");
726                     jfbu3g.setVisible(true);}
727                     else{try {if(!(jtnc.getText().equals(""))){
728                             st.executeUpdate("update t_userx set 暱稱='"+jtnc.getText()+"' where 用戶名='"+dbuser+"'");
729                         }
730                         if(!("".equals(jcxb.getSelectedItem()))){
731                             st.executeUpdate("update t_userx set 性別='"+jcxb.getSelectedItem()+"' where 用戶名='"+dbuser+"'");
732                         }
733                         if(!(jtnl.getText().equals(""))){
734                             st.executeUpdate("update t_userx set 年齡="+Integer.parseInt(jtnl.getText())+" where 用戶名='"+dbuser+"'");
735                         }
736                         if(!(jtqm.getText().equals(""))){
737                             st.executeUpdate("update t_userx set 簽名='"+jtqm.getText()+"' where 用戶名='"+dbuser+"'");
738                         }
739                         st.executeUpdate("update t_userx set 密碼='"+String.valueOf(jtmm.getPassword())+"' where 用戶名='"+dbuser+"'");
740                         st.executeUpdate("update t_userx set 密匙='"+String.valueOf(jtms.getPassword())+"' where 用戶名='"+dbuser+"'");
741                             jfbu3g.dispose();
742                             jfmain.dispose();
743                             JOptionPane.showMessageDialog(null,"修改成功");
744                             jfde.setEnabled(true);
745                             jfde.setVisible(true);
746                             new Bu1(1);
747                     } catch (NumberFormatException e1) {
748                         // TODO 自動生成的 catch 塊
749                         e1.printStackTrace();
750                     } catch (SQLException e1) {
751                         // TODO 自動生成的 catch 塊
752                         e1.printStackTrace();
753                     }}}});}}
754 class Jbbu3d implements ActionListener{
755     public void actionPerformed(ActionEvent e) {
756         jfmain.dispose();
757         jfde.setVisible(true);
758         new Bu1(1);}}
759 class Db{public Db(){
760         String url = "jdbc:sqlserver://localhost:1433;databaseName=java_datax";
761         String user="java_userx";  
762         String password="123123";
763     try {Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//註冊、加載特定的驅動程序
764         } catch (ClassNotFoundException e) {
765             JOptionPane.showMessageDialog(null,"加載數據庫失敗01");
766             System.exit(0);//關閉整個應用
767             e.printStackTrace();}
768         try {
769             ct=DriverManager.getConnection(url,user,password);//創建連接,創建連接Connection對象
770         } catch (SQLException e1) {
771             JOptionPane.showMessageDialog(null,"加載數據庫失敗02");
772             System.exit(0);//關閉整個應用
773             e1.printStackTrace();
774         }
775         try {
776             st=ct.createStatement();//創建會話對象,用Connection對象生成Statement對象
777         } catch (SQLException e3) {
778             JOptionPane.showMessageDialog(null,"加載數據庫失敗03");
779             System.exit(0);//關閉整個應用
780             e3.printStackTrace();
781         }}}}
782 public class Main{
783     public static void main(String arg[]){
784         new Start();}    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章