时间: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();} }
原文地址:https://www.cnblogs.com/dongxiaodong/p/10806834.html