面向对象程序设计(JAVA+UI+MASQL)不想写文档了,它基本功能全部实现

超市管理系统

第1章 系统描述

1.1系统概述

本次面向对象编程课程设计,我设计了一个超市管理系统,该系统可以实现商品信息的查询,增添、修改和删除。系统连接数据库,用户可以通过登录界面进行账号密码登录,账户密码存放在数据库的表中,匹配到正确的账户密码才能登入。

然后根据界面指示选择要执行的操作,设置了增删改查四个功能按钮,点击之后执行对应操作,执行成功之后数据库内的数据也会发生对应的增删改查过后的变化,此系统基本可以模拟出正常超市管理系统的功能。

 

 

1.2选题说明

此次课程设计使用Java语言编写一个管理系统,其实大部分的管理系统的功能都大致相同,都是最基础的增删改查。我选择超市管理系统,也比较贴合实际生活。而如今进入互联网与大数据时代,万物互联,庞大的数据量已经离不开计算机的高速处理能力和简便实用的功能。对于超市来说,货物信息无疑是一个庞大的数据,所以需要一个超市管理系统去对商品信息进行一些基本操作,方便去管理信息。

我设计的管理系统功能非常实用,切合实际操作简单。对于管理员来说,信息的添加,删除,修改和查询都是比较常用的功能。我这个系统是一个对商品整体信息的一个统计和操作,对于管理员来说,当库里增加了一批新的物品时候需要对库里的进行信息添加,有人购买商品之后,需要对数据库里的信息进行删除,管理员还可以查询商品信息,然后在对商品信息进行修改。基本所以说,我设计的这个超市管理系统可以基本完成这些功能,能够迅速实时地对数据库信息进行更新。该系统的登录页面简洁明了,用户需要进行身份验证,输入自己的账号密码,只有正确之后才能进入系统。

 

第2章 系统设计

2.1 概要设计

首先一个管理系统要保证安全是必须要有登陆界面的。登陆界面设置可以输入账号密码,账号密码存在表中,然后进入管理账户表判断账号密码是否正确,正确就可以进入功能界面。如果账号不存在,或者密码错误,就需要提示对应的错误信息。

首先进入商店的界面,就是展示这个商店的一些风格,比如说展示一张图片来吸引预览者,并且可以输入一些提示语之类的话,就相当于欢迎界面,然后呢,就是可以设置这些字体的形状,比如说字体变成斜体或者变成加粗的字体,然后加上登录按钮就展示登陆输入密码的界面

功能界面是整个系统的核心,首先图形界面,需要设计各种按钮组件,然后用户可以点击不同按钮执行不同的功能。增删改查四个按钮进行不同的操作。新调出的增删改查成功或者失败的页面,再这些新的页面上也需要设置一些按钮组件,用于确定操作或者返回。 

系统需要连接数据库,无论是用户登录注册还是执行对货物的增删改查,都是直接对数据库进行操作的,所以需要设置一个连接数据库的方法,在需要实用数据库的时候,就调用构造方法带入相关的参数,进行连接数据库,还有在返回查询信息时候用于接收返回的信息。

然后创建一些小组件,例如菜单栏和弹出式菜单,来为使用者提供帮助,展示作者和使用方法,在这些菜单中我运用了关闭和刷新的方式,增加使用软件的方便性,便于快速操作。

 

2.2 详细设计

2.2.1 登录界面设计

1. package com.company;  

2.   

3. import javax.swing.*;  

4. import java.awt.*;  

5. import java.awt.event.ActionEvent;  

6. import java.awt.event.ActionListener;  

7. import java.awt.event.KeyAdapter;  

8. import java.awt.event.KeyEvent;  

9. import java.sql.*;  

10.   

11. //interface 和尚{  

12. //    void 打坐();  

13. //    void 撞钟();  

14. //    void 习武();  

15. //    void 念经();  

16. //}  

17. //abstract class 天罡星 implements 和尚{//在这里调用空方法没意义,所以多做一步创建一个抽象类,不让别人调用就行  

18. //  

19. //    @Override  

20. //    public void 打坐() {  

21. //  

22. //    }  

23. //  

24. //    @Override  

25. //    public void 撞钟() {  

26. //  

27. //    }  

28. //  

29. //    @Override  

30. //    public void 习武() {  

31. //  

32. //    }  

33. //  

34. //    @Override  

35. //    public void 念经() {  

36. //  

37. //    }  

38. //}  

39. //class 鲁智深 extends 天罡星{//只用重写一部分,  

40. //    @Override  

41. //    public void 习武() {  

42. //        System.out.println(“倒把垂杨柳”);  

43. //    }  

44. //}  

45.   

46.   

47.   

48. public class Main {  

49.   

50.     private static String driverName = “com.mysql.cj.jdbc.Driver”;  

51.   

52.   

53.     public static void main(String[] args) {  

54.   

55.         //可以用lambda  

56. //就选定new Runnable()就可以看到  

57.         SwingUtilities.invokeLater(() -> {//捕捉异常  

58.             try {  

59.                 createAndshowGUI();  

60.             } catch (ClassNotFoundException e) {  

61.                 e.printStackTrace();  

62.             } catch (SQLException e) {  

63.                 e.printStackTrace();  

64.             }  

65.         });  

66.   

67. //        SwingUtilities.invokeLater(new Runnable() {//可以用lambda  

68. //            //就选定new Runnable()就可以看到上面的类型  

69. //            @Override  

70. //            public void run() {  

71. //                createAndshowGUI();//这种方式更安全一点,因为主线程不能更新ui用户接口  

72. //            }  

73. //        });  

74.   

75.   

76.   

77.     }  

78.   

79.     private static void createAndshowGUI() throws ClassNotFoundException, SQLException {  

80.   

81.         //1.创建JFrame窗体对象  

82.         JFrame jf = new JFrame();//括号内标题可以直接直接输入汉字  

83.   

84.         jf.setTitle(“欢迎光临”);//也可以改变这样  

85.         //设置关闭窗口时,一同结束后台的java程序  

86.         // 2.创建指定当前窗体布局创建对象边界布局管理器  

87.         jf.setLayout(new BorderLayout());  

88.         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  

89.   

90.         jf.setResizable(true);//设置窗体大小是否可重置  

91.   

92.         //设置窗口大小  像素  

93.         jf.setSize(1000,700);//可以运用jf.setBounds();完成完成这两句  

94.         //位置  

95.         //jf.setLocation(460,190);  

96.         jf.setLocationRelativeTo(null);  

97.   

98.         //创建组件(按钮组件)  

99.         //JButton button_1=new JButton(“1234”);  

100.         //将组件添加到容器中  

101.         //jf.add(button_1,BorderLayout.PAGE_START);//PAGE_END LINE_START LINE_END CENTER\  

102.   

103.   

104.   

105.         //设置窗体可见  

106. //  //      jf.setVisible(true);  

107. //        //3.创建JDialog对话框  

108. //        JDialog dialog= new JDialog(jf,”abc”,true);  

109. //        //构造方法中传入true的话,那就是设置模式为模态对话框  

110. //        dialog.setDefaultCloseOperation(dialog.HIDE_ON_CLOSE);  

111. //        dialog.setSize(300,200);  

112. //        dialog.setLocation(850,400);//设置位置  

113. //        dialog.setVisible(true);  

114.   

115.         //设置窗体可见放在这里,就能做出来出来先关闭这个然后才展示那个的界面,可以在这个小的上面做个密码。  

116.           jf.setVisible(true);  

117. //        //4.创建流式布局管理器  

118. //        jf.setLayout(new FlowLayout(FlowLayout.LEFT,100,100));//RIGHT CENTER  

119. //        //指定当前窗体布局创建对象流式布局管理器  

120. //        //创建按钮组件并添加到容器当中  

121. //        jf.add(new JButton(“qwe”));  

122. //        jf.add(new JButton(“qwe”));  

123. //        jf.add(new JButton(“qwe”));  

124. //        jf.add(new JButton(“qwe”));  

125. //        jf.add(new JButton(“qwe”));  

126.   

127.   

128. //        //设计窗体事件,为窗体注册监听  

129. //        jf.addWindowListener(new WindowListener() {  

130. //            @Override  

131. //            public void windowOpened(WindowEvent e) {  

132. //                System.out.println(“窗体打开事件”);  

133. //            }  

134. //  

135. //            @Override  

136. //            public void windowClosing(WindowEvent e) {  

137. //                System.out.println(“窗体正在关闭事件”);  

138. //  

139. //            }  

140. //  

141. //            @Override  

142. //            public void windowClosed(WindowEvent e) {  

143. //                System.out.println(“窗体打开事件”);  

144. //  

145. //            }  

146. //  

147. //            @Override  

148. //            public void windowIconified(WindowEvent e) {  

149. //                System.out.println(“窗体图表化,最小化事件”);  

150. //  

151. //            }  

152. //  

153. //            @Override  

154. //            public void windowDeiconified(WindowEvent e) {  

155. //                System.out.println(“窗体取消图表化,取消最小化事件”);  

156. //            }  

157. //  

158. //            @Override  

159. //            public void windowActivated(WindowEvent e) {  

160. //                System.out.println(“窗体激活事件”);  

161. //            }  

162. //  

163. //            @Override  

164. //            public void windowDeactivated(WindowEvent e) {  

165. //                System.out.println(“窗体停用事件”);  

166. //            }  

167. //        });  

168. //  

169.   

170.   

171.   

172. //        //创建组件,并添加到容器中  

173. //        JButton button_3=new JButton(“按钮3”);//jf.add(new JButton(“按钮”));  

174. //        //为事件源注册鼠标监听器  

175. //        button_3.addMouseListener(new MouseListener() {  

176. //            @Override  

177. //            public void mouseClicked(MouseEvent e) {//重要  

178. //                //System.out.println(“鼠标完成单击事件”);  

179. //            }  

180. //  

181. //            @Override  

182. //            public void mousePressed(MouseEvent e) {  

183. //                System.out.println(“鼠标被按下事件”);  

184. //  

185. //                int button=e.getButton();//1为左键2为滚轮3为右键  

186. //                System.out.println(button);  

187. //                if(button==MouseEvent.BUTTON1)  

188. //                    System.out.println(“鼠标左键被点击”);  

189. //                else if(button==MouseEvent.BUTTON2)  

190. //                System.out.println(“鼠标滑轮被点击”);  

191. //                else if(button==MouseEvent.BUTTON3)  

192. //                System.out.println(“鼠标右键被点击”);  

193. //            }  

194. //  

195. //            @Override  

196. //            public void mouseReleased(MouseEvent e) {  

197. //                //System.out.println(“鼠标放开事件”);  

198. //            }  

199. //  

200. //            @Override  

201. //            public void mouseEntered(MouseEvent e) {  

202. //                //System.out.println(“鼠标进入按钮区域事件”);  

203. //  

204. //            }  

205. //  

206. //            @Override  

207. //            public void mouseExited(MouseEvent e) {  

208. //                //System.out.println(“鼠标移出按钮区域事件”);  

209. //  

210. //            }  

211. //        });  

212. //        jf.add(button_3);  

213. //  

214.   

215.   

216. //        JButton button_4=new JButton(“按钮4”);  

217. //        button_4.addMouseListener(new MouseAdapter() {  

218. //            @Override  

219. //            public void mouseClicked(MouseEvent e) {  

220. //                System.out.println(“我被点了!!!”);  

221. //            }  

222. //        });  

223. //        jf.add(button_4);  

224. //        button_4.addActionListener(new ActionListener() {//ActionListener用于监听动作事件  

225. //            //单独点击就用这个,别的就用别的就行  

226. //            @Override  

227. //            public void actionPerformed(ActionEvent e) {  

228. //                System.out.println(“我是ActionListener,我也能够监听点击的动作:我被点了!!!”);  

229. //            }  

230. //        });  

231. //  

232.   

233.   

234.   

235. //        //创建带有滚动条的空面板 JScrollPane带有滚动条,只能存放一个组件  

236. //        JScrollPane jScrollPane =new JScrollPane();  

237. //        //设置水平滚动条,当组件超过了窗体大小,显示滚动条  

238. //        jScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);//需要时展示  

239. //        //设置垂直滚动条策略 设置滚动条一直存在  

240. //        jScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);//接口.存在方式;一直存在  

241. //  

242. //        //创建JPanel存储多个组件  无滚动条,可以存放多个组件  

243. //        JPanel panel=new JPanel();  

244. //        panel.add(new JButton(“1”));  

245. //        panel.add(new JButton(“2”));  

246. //        panel.add(new JButton(“3”));  

247. //        panel.add(new JButton(“4”));  

248. //        panel.add(new JButton(“4”));  

249. //        panel.add(new JButton(“4”));  

250. //        panel.add(new JButton(“4”));  

251. //        panel.add(new JButton(“4”));  

252. //        panel.add(new JButton(“4”));  

253. //  

254. //        //将组织好的一个panel组件,整个添加都添加到带有滚动条的面板当中  

255. //        jScrollPane.setViewportView(panel);  

256. //        jf.add(jScrollPane,BorderLayout.CENTER);  

257.   

258.   

259.   

260.   

261. //  

262. //        //设置为边界布局  

263. //        jf.setLayout(new BorderLayout());  

264. //        //创建聊天记录的JTextArea,因为是聊天记录,所以不能改  

265. //        JTextArea showArea = new JTextArea(25,45);  

266. //        //因为是聊天记录,所以不能修改里面内容  

267. //        showArea.setEditable(false);  

268. //        //创建滚动条的面板组件  

269. //        JScrollPane jScrollPane =new JScrollPane(showArea);  

270. //        //放在下面  

271. //        jf.add(jScrollPane,BorderLayout.PAGE_END);  

272. //  

273. //        //创建文本框JTextField  

274. //        JTextField text = new JTextField(35);  

275. //        //创建发送按钮  

276. //                //按钮与键盘结合  

277. //        JButton but =new JButton(“发送”);  

278. //        but.addActionListener(new ActionListener() {  

279. //            @Override  

280. //            public void actionPerformed(ActionEvent e) {  

281. //                //获取文本框中的数据,  

282. //                String content =text.getText();  

283. //                if (content!=null && content.length()!=0){  

284. //                    showArea.append(“发送信息为:”+content+”\r\n”);//追加  

285. //                }else {  

286. //                    showArea.append(“发送内容不得为空\r\n”);  

287. //                }  

288. //                text.setText(“”);//输入完之后就清空掉  

289. //            }  

290. //        });  

291. //        //创建提示标签‘  

292. //        JLabel label = new JLabel(“留言信息”);  

293. //  

294. //        JPanel panel=new JPanel();  

295. //        panel.add(label);  

296. //        panel.add(text);  

297. //        panel.add(but);  

298. //        jf.add(panel,BorderLayout.PAGE_START);  

299.   

300. //        //5.创建网格布局管理器3  

301. //        //设置当前窗口布局  

302. //        jf.setLayout(new GridLayout(3,3,100,100));  

303. //        for(int i =1 ;i<=9;i++)  

304. //        jf.add(new JButton(“asd”+i));  

305.   

306.   

307.        //事件  

308.         //创建组件,并添加到容器中  

309.           

310.          JButton button_2=new JButton(“登陆”);//jf.add(new JButton(“按钮”));  

311.   

312.         //为事件源注册监听器  

313.         button_2.addActionListener(new ActionListener() {//ActionListener用于监听动作事件  

314.             @Override  

315.             public void actionPerformed(ActionEvent e) {  

316.                 jf.setVisible(false);  

317.                new  DengLu().setVisible(false);  

318.             }  

319.         });  

320.         //将组件添加到窗体中  

321.   

322.   

323.   

324.         //JLabel可以展现文字和图片  

325.         //创建图片JLabel  

326.         JLabel label1 = new JLabel();  

327.         //ImageIcon画布  

328.         ImageIcon icon =new ImageIcon(“src/com/company/p/7E620D805FF95D30D933F86CC6D34048.jpg”);  

329.   

330.         //Image画布中的图片内容  

331.         Image image= icon.getImage();  

332.         image=image.getScaledInstance(1000,550,Image.SCALE_DEFAULT);//图片大小为默认  

333.   

334.         icon.setImage(image);  

335.         label1.setIcon(icon);//放入画布中  

336.         jf.add(label1,BorderLayout.PAGE_START);//居中  

337.   

338.         //创建文本JLabel  

339.         JLabel label2 = new JLabel(“欢迎光临 “,JLabel.CENTER);  

340.         label2.setFont(new Font(“宋体”,Font.PLAIN,40));//改大小  

341.   

342.         //创建两个复选按钮  

343.         JCheckBox cb1=new JCheckBox(“加粗”);//可以直接替换为单选按钮,JRadioButton  

344.         JCheckBox cb2=new JCheckBox(“斜体”);//下面注释掉的是单选按钮只能点一个。  

345. //        ButtonGroup group=new ButtonGroup();  

346. //        group.add(cb1);  

347. //        group.add(cb2);  

348.   

349.         //创建事件监听器  

350.         ActionListener  listener = new ActionListener() {  

351.             @Override  

352.             public void actionPerformed(ActionEvent e) {  

353.                 int mode =0;  

354.                 if (cb1.isSelected()){  

355.                     mode+=Font.BOLD;  

356.   

357.                 }  

358.                 if (cb2.isSelected()){  

359.                     mode+=Font.ITALIC;  

360.   

361.                 }  

362.                 label2.setFont(new Font(“宋体”,mode,40));//改大小  

363.   

364.             }  

365.         };  

366.         cb1.addActionListener(listener);  

367.         cb2.addActionListener(listener);  

368.         //创建面板组件  

369.   

370.         JPanel panel = new JPanel();  

371.         JPanel panel1 = new JPanel();  

372.         panel.add(cb1);  

373.         panel.add(cb2);  

374.         panel1.add(label2);  

375.         panel1.add(button_2);  

376.   

377.         jf.add(panel1,BorderLayout.CENTER);  

378.   

379.         jf.add(panel,BorderLayout.PAGE_END);  

380.   

381.   

382.     }  

383.     /* 

384.  

385.      //适配器设计模式,场景当发现需要使用接口中的部分功能时候,可以考虑设计一个适配器 

386.      //这样使用,就不需要重写接口中所有的抽象方法 

387.  

388.      例子如下 

389.      //相当于中间的实现了,但是为空 

390.      又一次用只重写其中一部分····································································································································································································· 

391.      鲁智深等于说直接面向中间类不直接面向接口,如上 

392.      */  

393.   

394.     //从这里注释直到接口位置,解除下面注释就能实现适配器方法原理  

395. //        鲁智深 鲁智深1 = new 鲁智深();  

396. //        鲁智深1.习武();}  

397.   

398.   

399.   

400. }  

401.   

402.   

403.   

404. package com.company;  

405. import java.sql.*;  

406. import javax.swing.*;  

407. import java.awt.*;  

408. import java.awt.event.ActionEvent;  

409. import java.awt.event.ActionListener;  

410. import java.awt.event.KeyAdapter;  

411. import java.awt.event.KeyEvent;  

412.   

413. public class DengLu extends JFrame {  

414.     private static String driverName = “com.mysql.cj.jdbc.Driver”;  

415.     private static boolean flag =false;  

416.     static Connection conn=null;  

417.     static PreparedStatement pstmt=null;  

418.     static ResultSet rs=null;//作用域不够  

419.     static String zhanghu;  

420.     static String mima;  

421.   

422.     public void panduanmima(){  

423.         try {  

424.   

425.   

426.             Class.forName(driverName);//private static String driverName = “com.mysql.cj.jdbc.Driver”;  

427.             //加载这个类的字节码文件,就运行了那个方法,就注册驱动了,因为那个会注册两次  

428.   

429.             //获取数据库连接对象  

430.             conn = DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/test01”, “root”, “123456”);  

431.             //System.out.println(conn);  

432.   

433.   

434.             pstmt = conn.prepareStatement(“select * from 管理账户 where 账号 = ? and 密码 = ?”);//获取sql语句的执行对象  

435.             pstmt.setObject(1,zhanghu );  

436.             pstmt.setObject(2,mima );  

437.   

438.             rs = pstmt.executeQuery();//执行sql语句  

439.             //next()将指针向后移动 如果还有数据,该方法返回boole ture,如果没有就返回false  

440.   

441.             flag = rs.next();  

442.   

443.   

444.         }catch(Exception e){  

445.             e.printStackTrace();//如果错误,查看完整错误信息  

446.         }finally {//关闭释放资源  

447.             try {  

448.                 rs.close();  

449.             } catch (SQLException e) {  

450.                 e.printStackTrace();  

451.             }  

452.             try {  

453.                 pstmt.close();  

454.             } catch (SQLException e) {  

455.                 e.printStackTrace();  

456.             }  

457.             try {  

458.                 conn.close();  

459.             } catch (SQLException e) {  

460.                 e.printStackTrace();  

461.             }  

462.         }  

463.   

464.     }  

465.   

466.     public DengLu() {  

467.         //1.创建JFrame窗体对象  

468.         JFrame jf = new JFrame();//括号内标题可以直接直接输入汉字  

469.         jf.setTitle(“登陆”);//也可以改变这样  

470.         //设置关闭窗口时,一同结束后台的java程序  

471.         // 2.创建指定当前窗体布局创建对象网格布局管理器  

472.         jf.setLayout(new GridLayout(3,1));  

473.         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  

474.   

475.         jf.setResizable(true);//设置窗体大小是否可重置  

476.   

477.         //设置窗口大小  像素  

478.         jf.setSize(400,350);//可以运用jf.setBounds();完成完成这两句  

479.         //位置  

480.         //jf.setLocation(460,190);  

481.         jf.setLocationRelativeTo(null);  

482.   

483.        jf.setVisible(true);  

484.   

485.   

486.         //文本输入框  

487.         JTextField text=new JTextField(10);  

488.         JPasswordField text1=  new JPasswordField(10);  

489.   

490.         //按钮与键盘结合  

491.         JButton but =new JButton(“登陆”);  

492.   

493.         JLabel label1 = new JLabel(“账号”,JLabel.CENTER);  

494.         JLabel label2 = new JLabel(“密码”,JLabel.CENTER);  

495.         JPanel panel1 = new JPanel();  

496.         JPanel panel2 = new JPanel();  

497.         JPanel panel3 = new JPanel();  

498.   

499.         panel1.add(label1);  

500.         panel1.add(text);  

501.   

502.         panel2.add(label2);  

503.         panel2.add(text1);  

504.   

505.         panel3.add(but);  

506.         jf.add(panel1);  

507.         jf.add(panel2);  

508.         jf.add(panel3);  

509.   

510.         JFrame d= new JFrame(” 错误!”);  

511.   

512.   

513.         but.addActionListener(new ActionListener() {//增加监听动作  

514.             @Override  

515.             public void actionPerformed(ActionEvent e) {  

516.                 zhanghu=text.getText();  

517.                 mima=text1.getText();  

518.                 panduanmima();  

519.                 if(flag)  

520.                 //if((text.getText().equals(“root”))&&(text1.getText().equals(“123”)))  

521.                 {  

522.   

523.                     jf.setVisible(false);  

524.                     d.setVisible(false);  

525.                     new  ZhuTi().setVisible(false);  

526.                 }  

527.                 else{  

528.                 d.setDefaultCloseOperation(d.HIDE_ON_CLOSE);  

529.                 d.setSize(300,200);  

530.                 d.setLocation(850,400);//设置位置  

531.                 d.setVisible(true);  

532.                 JLabel label123 = new JLabel(“用户名或密码错误!请重新输入”);  

533.                 label123.setFont(new Font(“宋体”,Font.PLAIN,20));//改大小  

534.                 JPanel panel = new JPanel();  

535.                 panel.add(label123);  

536.                 d.add(panel);  

537.                 }  

538.                 }  

539.   

540.   

541.   

542.   

543.         });  

544.   

545.   

546.   

547.   

548.   

549.   

550.   

551.     }  

552.   

553. }  

554.   

555. package com.company;  

556.   

557. import org.omg.CORBA.PRIVATE_MEMBER;  

558.   

559. import javax.swing.*;  

560. import javax.swing.table.DefaultTableCellRenderer;  

561. import javax.swing.table.DefaultTableModel;  

562. import java.awt.*;  

563. import java.awt.event.*;  

564. import java.sql.*;  

565. import java.util.Vector;  

566.   

567. public class ZhuTi extends Frame{  

568.     private static String driverName = “com.mysql.cj.jdbc.Driver”;  

569.     private static boolean flag1 =false;  

570.     public static Connection conn1=null;  

571.     public static PreparedStatement pstmt1=null;  

572.     public static ResultSet rs=null;//作用域不够  

573.     public static int id;  

574.     public static String name;  

575.     public static double Cp;  

576.     public static double Xp;  

577.     private DefaultTableModel tableModel;//实实在在的数据  

578.     private JTable dataTable;//声明的样式  

579.     private JScrollPane scrollPane;//滚动面板,用于放入表格  

580.   

581.   

582.   

583.     private JScrollPane body(){  

584.         dataTable=new JTable(10,4){  

585.   

586.             public boolean isCellEditable  (int row,int column){//这个函数控制可以编辑  

587.                 if (column!=0)  

588.                     return true;  

589.                 else  

590.                     return  false;  

591.             }  

592.         };  

593.   

594.         //单元格渲染器  

595.         DefaultTableCellRenderer tcr=new DefaultTableCellRenderer();  

596.         tcr.setHorizontalAlignment(JLabel.CENTER);//居中显示  

597.         dataTable.setDefaultRenderer(Object.class,tcr);//设置渲染器  

598.   

599.         tableModel=(DefaultTableModel)dataTable.getModel();//上面声明的两个东西就是getModel()来操作的  

600.         //这个类来操作数据  

601.   

602.         tableModel.setColumnIdentifiers(new Object[]{“商品编码”,”商品名称”,”成本价”,”销售价”});  

603.   

604.         JScrollPane bodyPanel =new JScrollPane(dataTable);//有可能超过,就会有滚动框  

605.         refresh();  

606.         return bodyPanel;  

607.     }  

608.   

609.   

610.     private  void refresh()  {  

611.         try {  

612.         Class.forName(driverName);//private static String driverName = “com.mysql.cj.jdbc.Driver”;  

613.         //加载这个类的字节码文件,就运行了那个方法,就注册驱动了,因为那个会注册两次  

614.         }catch(Exception  e){  

615.             System.out.println(“连接出错”);  

616.         }  

617.         try {  

618.         //获取数据库连接对象  

619.         conn1 = DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/test01”, “root”, “123456”);  

620.         //System.out.println(conn);  

621.         }catch(SQLException e){  

622.             System.out.println(“连接对象出错”);  

623.         }  

624.   

625.         tableModel.setRowCount(0);//每一次执行的时候清除数据  

626.          try {  

627.              pstmt1 = conn1.prepareStatement(“select * from good”);//获取sql语句的执行对象  

628.         }catch(SQLException e){  

629.             System.out.println(“查询sql语句出错”);  

630.         }  

631.   

632.         try{  

633.             ResultSet rs = pstmt1.executeQuery();  

634.             while (rs.next()){  

635.                 int id1;  

636.                 String name1;  

637.                 double Cp1,Xp1;  

638.                 id1=rs.getInt(“goodId”);  

639.                 name1=rs.getString(“goodName”);  

640.                 Cp1= rs.getDouble(“Cprice”);  

641.                 Xp1=rs.getDouble(“Xprice”);  

642.                 tableModel.addRow(new Object[]{id1,name1,Cp1,Xp1});//添加了一行数据  

643.             }  

644.         }catch (Exception e){  

645.             System.out.println(“7808″+e);  

646.             e.printStackTrace();  

647.         }  

648.   

649.     }  

650.   

651.     public void chaxun(){  

652.         try {  

653.             Class.forName(driverName);//private static String driverName = “com.mysql.cj.jdbc.Driver”;  

654.             //加载这个类的字节码文件,就运行了那个方法,就注册驱动了,因为那个会注册两次  

655.   

656.             //获取数据库连接对象  

657.             conn1 = DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/test01”, “root”, “123456”);  

658.             //System.out.println(conn);  

659.   

660.             pstmt1 = conn1.prepareStatement(“select * from good where goodId = ? and goodName = ?”);//获取sql语句的执行对象  

661.             pstmt1.setObject(1,id);  

662.             pstmt1.setObject(2,name);  

663.   

664.             rs = pstmt1.executeQuery();//执行sql语句  

665.             //next()将指针向后移动 如果还有数据,该方法返回boole ture,如果没有就返回false  

666.   

667.             if(flag1= rs.next()){//返回ture并且指针下移  

668. //                System.out.println(rs.getInt(“Cprice”));  

669. //                System.out.println(rs.getInt(“Xprice”));  

670.                 id=rs.getInt(“goodId”);  

671.                 name=rs.getString(“goodName”);  

672.                 Cp= rs.getDouble(“Cprice”);  

673.                 Xp=rs.getDouble(“Xprice”);  

674.   

675.             }  

676.   

677.   

678.   

679.         }catch(Exception e){  

680.             e.printStackTrace();//如果错误,查看完整错误信息  

681.         }finally {//关闭释放资源  

682.             try {  

683.                 rs.close();  

684.             } catch (SQLException e) {  

685.                 e.printStackTrace();  

686.             }  

687.             try {  

688.                 pstmt1.close();  

689.             } catch (SQLException e) {  

690.                 e.printStackTrace();  

691.             }  

692.             try {  

693.                 conn1.close();  

694.             } catch (SQLException e) {  

695.                 e.printStackTrace();  

696.             }  

697.         }  

698.   

699.     }  

700.     public int xiugai() {  

701.         int i = 0;  

702.         try {  

703.   

704.   

705.             Class.forName(driverName);//private static String driverName = “com.mysql.cj.jdbc.Driver”;  

706.             //加载这个类的字节码文件,就运行了那个方法,就注册驱动了,因为那个会注册两次  

707.   

708.             //获取数据库连接对象  

709.             conn1 = DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/test01”, “root”, “123456”);  

710.             //System.out.println(conn);  

711.   

712.             pstmt1 = conn1.prepareStatement(“UPDATE good SET goodName=?where goodID=?”);//给占位符进行填充数据  

713.   

714.             pstmt1.setObject(1, name);  

715.             pstmt1.setObject(2, id);  

716.             i = 0;  

717.             i = pstmt1.executeUpdate();//执行sql语句  

718.             //next()将指针向后移动 如果还有数据,该方法返回boole ture,如果没有就返回false  

719.   

720.         } catch (Exception e) {  

721.             e.printStackTrace();//如果错误,查看完整错误信息  

722.         } finally {//关闭释放资源  

723.   

724.             try {  

725.                 pstmt1.close();  

726.             } catch (SQLException e) {  

727.                 e.printStackTrace();  

728.             }  

729.             try {  

730.                 conn1.close();  

731.             } catch (SQLException e) {  

732.                 e.printStackTrace();  

733.             }  

734.             return i;  

735.         }  

736.   

737.     }  

738.   

739.   

740.   

741.          //对数据库的增加操作//  

742.   

743.   

744.         public int add()  

745.         {  

746.             int i = 0;  

747.             try {  

748.                 Class.forName(driverName);//private static String driverName = “com.mysql.cj.jdbc.Driver”;  

749.                 //加载这个类的字节码文件,就运行了那个方法,就注册驱动了,因为那个会注册两次  

750.   

751.                 //获取数据库连接对象  

752.                 conn1 = DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/test01”, “root”, “123456”);  

753.                 //System.out.println(conn);  

754.   

755.                 pstmt1=conn1.prepareStatement(“insert into good values(?,?,?,?)”);  

756.                 pstmt1.setObject(1,id);  

757.                 pstmt1.setObject(2,name);  

758.                 pstmt1.setObject(3,Cp);  

759.                 pstmt1.setObject(4,Xp);  

760.                 i = pstmt1.executeUpdate();//执行sql语句  

761.   

762.   

763.             } catch (Exception e){  

764.                 e.printStackTrace();  

765.   

766.             }finally {//关闭释放资源  

767.   

768.                 try {  

769.                     pstmt1.close();  

770.                 } catch (SQLException e) {  

771.                     e.printStackTrace();  

772.                 }  

773.                 try {  

774.                     conn1.close();  

775.                 } catch (SQLException e) {  

776.                     e.printStackTrace();  

777.                 }  

778.                 return i;  

779.             }  

780.   

781.         }  

782.   

783.   

784.          //对数据库的删除操作  

785.   

786.         public  int del(){  

787.         int i=0;  

788.             try {  

789.                 Class.forName(driverName);//private static String driverName = “com.mysql.cj.jdbc.Driver”;  

790.                 //加载这个类的字节码文件,就运行了那个方法,就注册驱动了,因为那个会注册两次  

791.   

792.                 //获取数据库连接对象  

793.                 conn1 = DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/test01”, “root”, “123456”);  

794.                 //System.out.println(conn);  

795.   

796.                 pstmt1=conn1.prepareStatement(“delete from good where goodName = ?”);  

797.   

798.                 pstmt1.setObject(1,name);  

799.                 i=pstmt1.executeUpdate();//执行sql语句  

800.   

801.             } catch (Exception e){  

802.                 e.printStackTrace();  

803.             }  

804.             finally {//关闭释放资源  

805.   

806.                 try {  

807.                     pstmt1.close();  

808.                 } catch (SQLException e) {  

809.                     e.printStackTrace();  

810.                 }  

811.                 try {  

812.                     conn1.close();  

813.                 } catch (SQLException e) {  

814.                     e.printStackTrace();  

815.                 }  

816.                 return i;  

817.             }  

818.         }  

819.   

820.   

821.     public  ZhuTi(){  

822.   

823.   

824.         //1.创建JFrame窗体对象  

825.         JFrame jf = new JFrame();//括号内标题可以直接直接输入汉字  

826.         jf.setTitle(“商店”);//也可以改变这样  

827.         //设置关闭窗口时,一同结束后台的java程序  

828.         // 2.创建指定当前窗体布局创建对象边界布局管理器  

829.         jf.setLayout(new BorderLayout());  

830.         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  

831.   

832.         jf.setResizable(true);//设置窗体大小是否可重置  

833.   

834.         //设置窗口大小  像素  

835.         jf.setSize(1000,700);//可以运用jf.setBounds();完成完成这两句  

836.         //位置  

837.         //jf.setLocation(460,190);  

838.         jf.setLocationRelativeTo(null);  

839.   

840.         //创建组件(按钮组件)  

841.         //JButton button_1=new JButton(“1234”);  

842.         //将组件添加到容器中  

843.         //jf.add(button_1,BorderLayout.PAGE_START);//PAGE_END LINE_START LINE_END CENTER\  

844.   

845.         //设置窗体可见放在这里,就能做出来出来先关闭这个然后才展示那个的界面,可以在这个小的上面做个密码。  

846.         jf.setVisible(true);  

847.         //创建文本JLabel  

848.         JLabel label2 = new JLabel(“查询商品名称”,JLabel.CENTER);  

849.         label2.setFont(new Font(“宋体”,Font.PLAIN,20));//改大小  

850.         //下拉框组件  

851.         //创建面板容器,中间容器JPanel  

852.         JPanel panel = new JPanel();  

853.         //创建下拉框组件  

854.         JComboBox<String> box= new JComboBox<String>();  

855.         //创建文本输入框  

856.         JTextField field= new JTextField(20);  

857.         //创建文本输入框  

858.         JTextField field1= new JTextField(20);  

859.         //向下拉框添加项目选项  

860.   

861.         JLabel label1 = new JLabel(“选择专区”,JLabel.CENTER);  

862.         label1.setFont(new Font(“宋体”,Font.PLAIN,20));//改大小  

863.   

864.         box.addItem(“请选择专区”);  

865.         box.addItem(“洗簌专区”);  

866.         box.addItem(“零食专区”);  

867.         box.addItem(“电子专区”);  

868.         box.addItem(“蔬菜专区”);  

869.         box.addItem(“粮油专区”);  

870.         box.addItem(“衣服专区”);  

871.         //为下拉框创建监听  

872.         box.addActionListener(new ActionListener() {  

873.             @Override  

874.             public void actionPerformed(ActionEvent e) {//动作事件  

875.                 String text= (String)box.getSelectedItem();  

876.                 if (“请选择专区”.equals(text)){//如果选着不是专区,然后就弄成刷新,为空字符就行  

877.                     field1.setText(“”);  

878.                 }else{  

879.                 field1.setText(text);  

880.                 }  

881.             }  

882.         });  

883.   

884.         panel.add(label2);  

885.         panel.add(field);  

886.         panel.add(label1);  

887.         panel.add(box);  

888.         panel.add(field1);  

889.   

890.         jf.add(panel,BorderLayout.PAGE_START);  

891.   

892.   

893.   

894.   

895.   

896.         //创建菜单栏在这几个中为最大的容器  

897.         JMenuBar jMenuBar= new JMenuBar();  

898.         //创建菜单对象  

899.         JMenu menu1 = new JMenu(“文件”);  

900.         JMenu menu2 = new JMenu(“帮助”);  

901.         //创建菜单项  

902.         JMenuItem item1= new JMenuItem(“作者”);  

903.         JMenuItem item2= new JMenuItem(“退出”);  

904.         JMenuItem item10= new JMenuItem(“步骤”);  

905.         //将菜单项添加到菜单对象当中  

906.         menu1.add(item1);  

907.         menu1.addSeparator();//加上分隔符  

908.         menu1.add(item2);  

909.         menu2.add(item10);  

910.         //将菜单栏添加到菜单栏当中  

911.         jMenuBar.add(menu1);  

912.         jMenuBar.add(menu2);  

913.   

914.   

915.         //创建一个JDialog对话框  

916.         item1.addActionListener(new ActionListener() {  

917.             @Override  

918.             public void actionPerformed(ActionEvent e) {  

919.                 JFrame dialog= new JFrame(“作者”);  

920.                 //构造方法中传入true的话,那就是设置模式为模态对话框  

921.                  dialog.setDefaultCloseOperation(dialog.HIDE_ON_CLOSE);  

922.                         dialog.setSize(300,200);  

923.                         dialog.setLocation(850,400);//设置位置  

924.                         dialog.setVisible(true);  

925.   

926.                 JLabel label123 = new JLabel(“左嘉庆”);  

927.                 label123.setFont(new Font(“宋体”,Font.PLAIN,20));//改大小  

928.                 JPanel panel = new JPanel();  

929.                 panel.add(label123);  

930.   

931.                 dialog.add(panel);  

932.             }  

933.         });  

934.         item10.addActionListener(new ActionListener() {  

935.             @Override  

936.             public void actionPerformed(ActionEvent e) {  

937.                 JFrame dialog= new JFrame(“执行步骤”);  

938.                 //构造方法中传入true的话,那就是设置模式为模态对话框  

939.                 dialog.setDefaultCloseOperation(dialog.HIDE_ON_CLOSE);  

940.                 dialog.setSize(1500,200);  

941.                 dialog.setLocation(850,400);//设置位置  

942.                 dialog.setVisible(true);  

943.   

944.                 JLabel label123 = new JLabel(“查找需要输入商品编码和商品名称,添加需要全部都输入,删除的时候需要输入要删除商品名称,修改时候需要输入商品编码和需要输入修改后商品名称”);  

945.                 label123.setFont(new Font(“宋体”,Font.PLAIN,20));//改大小  

946.                 JPanel panel = new JPanel();  

947.                 panel.add(label123);  

948.   

949.                 dialog.add(panel);  

950.             }  

951.         });  

952.   

953.   

954.         //如果点击退出,退出当前程序  

955.         item2.addActionListener(new ActionListener() {  

956.             @Override  

957.             public void actionPerformed(ActionEvent e) {  

958.                 System.exit(0);  

959.             }  

960.         });  

961.   

962.         jf.setJMenuBar(jMenuBar);//放置在顶部setJMenuBar  

963.   

964.   

965.         //创建弹出式菜单对象  

966.         JPopupMenu popupMenu= new JPopupMenu();  

967.         //创建两个菜单项  

968.         JMenuItem item3 =new JMenuItem(“作者”);  

969.         JMenuItem item4 =new JMenuItem(“刷新”);  

970.         JMenuItem item5 =new JMenuItem(“关闭”);  

971.         //将菜单项添加到菜单当中,并且加入分隔符  

972.         popupMenu.add(item3);  

973.         popupMenu.addSeparator();  

974.         popupMenu.add(item4);  

975.         popupMenu.addSeparator();  

976.         popupMenu.add(item5);  

977.         //为JFrame窗体添加鼠标事件  

978.         jf.addMouseListener(new MouseAdapter() {  

979.             @Override  

980.             public void mouseClicked(MouseEvent e) {  

981.                 if (e.getButton()==MouseEvent.BUTTON3){//设置只能右键点击  

982.                     popupMenu.show(e.getComponent(),e.getX(),e.getY());//首先就是固定写法得到这个事件,后面这俩是获取当前鼠标在哪的位置  

983.                 }  

984.   

985.             }  

986.         });  

987.   

988.         //如果点击退出,退出当前程序  

989.         item5.addActionListener(new ActionListener() {  

990.             @Override  

991.             public void actionPerformed(ActionEvent e) {  

992.                 System.exit(0);  

993.             }  

994.         });  

995.   

996.         item3.addActionListener(new ActionListener() {  

997.             @Override  

998.             public void actionPerformed(ActionEvent e) {  

999.                 JFrame dialog= new JFrame(“作者”);  

1000.                 //构造方法中传入true的话,那就是设置模式为模态对话框  

1001.                 dialog.setDefaultCloseOperation(dialog.HIDE_ON_CLOSE);  

1002.                 dialog.setSize(300,200);  

1003.                 dialog.setLocation(850,400);//设置位置  

1004.                 dialog.setVisible(true);  

1005.   

1006.                 JLabel label123 = new JLabel(“左嘉庆”);  

1007.                 label123.setFont(new Font(“宋体”,Font.PLAIN,20));//改大小  

1008.                 JPanel panel = new JPanel();  

1009.                 panel.add(label123);  

1010.   

1011.                 dialog.add(panel);  

1012.             }  

1013.         });  

1014.   

1015.   

1016.   

1017.         //所有的创建文本输入框  

1018.         JTextField goodId=new JTextField(10);  

1019.         JTextField goodName=new JTextField(10);  

1020.         JTextField Cprice=new JTextField(10);  

1021.         JTextField Xprice=new JTextField(10);  

1022.         //所有的中间容器,默认是流式  

1023.         JPanel namePanel=new JPanel();  

1024.   

1025.         JButton addButton=new JButton(“添加”);  

1026.   

1027.         JButton deleteButton=new JButton(“删除”);  

1028.   

1029.         JButton selectButton=new JButton(“刷新”);  

1030.         JButton queryButton=new JButton(“查询”);  

1031.         JButton modifyButton=new JButton(“修改”);  

1032.         JButton button1=new JButton(“申请服务”);  

1033.         JButton button2=new JButton(“建议”);  

1034.         JLabel usernameLabel1=new JLabel(“商品编码:”);  

1035.         JLabel usernameLabel2=new JLabel(“商品名称:”);  

1036.   

1037.         JLabel usernameLabel3=new JLabel(“成本价:”);  

1038.   

1039.         JLabel usernameLabel4=new JLabel(“销售价:”);  

1040.   

1041.         button1.addActionListener(new ActionListener() {//ActionListener用于监听动作事件  

1042.             @Override  

1043.             public void actionPerformed(ActionEvent e) {  

1044.                 new  LiaoTian().setVisible(false);  

1045.             }  

1046.         });  

1047.         button2.addActionListener(new ActionListener() {//ActionListener用于监听动作事件  

1048.             @Override  

1049.             public void actionPerformed(ActionEvent e) {  

1050.                 new  JianYi().setVisible(false);  

1051.             }  

1052.         });  

1053.   

1054.         namePanel.add(usernameLabel1);  

1055.         namePanel.add(goodId);  

1056.         namePanel.add(usernameLabel2);  

1057.         namePanel.add(goodName);  

1058.         namePanel.add(usernameLabel3);  

1059.         namePanel.add(Cprice);  

1060.         namePanel.add(usernameLabel4);  

1061.         namePanel.add(Xprice);  

1062.         namePanel.add(addButton);  

1063.         namePanel.add(deleteButton);  

1064.         namePanel.add(selectButton);  

1065.         namePanel.add(queryButton);  

1066.         namePanel.add(modifyButton);  

1067.   

1068.         namePanel.add(button1);  

1069.         namePanel.add(button2);  

1070.         jf.add(namePanel,BorderLayout.CENTER);  

1071.   

1072.   

1073.         jf.add(body(),BorderLayout.PAGE_END);  

1074.   

1075.   

1076.   

1077.   

1078.   

1079.   

1080.         class  Myjframe extends JFrame{  

1081.             public Myjframe(String type){  

1082.                 this.setBounds(300,300,200,220);  

1083.                 this.setVisible(true);  

1084.                 //网格布局管理器  

1085.                 this.setLayout(new GridLayout(2,1));  

1086.                 JPanel panel1=new JPanel();  

1087.                 JPanel panel2=new JPanel();  

1088.                 panel1.add(new JLabel(type));  

1089.   

1090.   

1091.                 JButton button=new JButton(“确认”);  

1092.                 button.addActionListener(new ActionListener() {  

1093.                     public void actionPerformed(ActionEvent e) {  

1094.   

1095.                         Myjframe.this.dispatchEvent(new WindowEvent(Myjframe.this,WindowEvent.WINDOW_CLOSING));  

1096.                         //窗口绑定一个事件,这个事件是窗体事件,为窗体注册监听,窗体正在关闭事件  

1097.   

1098.                     }  

1099.                 });  

1100.   

1101.                 panel2.add(button);  

1102.                 this.add(panel1);  

1103.                 this.add(panel2);  

1104.             }  

1105.         }  

1106.   

1107.   

1108.         addButton.addActionListener(new ActionListener() {  

1109.             @Override  

1110.             public void actionPerformed(ActionEvent e) {  

1111.                 id= Integer.parseInt(goodId.getText());//id=goodId.getText();被封装  

1112.                  name=goodName.getText();  

1113.                  Cp= Double.parseDouble(Cprice.getText());  

1114.   

1115.                  Xp= Double.parseDouble(Xprice.getText());  

1116.   

1117.                 if(add()>0)  

1118.                     new Myjframe(“添加成功”);  

1119.                 else  

1120.                     new Myjframe(“添加失败”);  

1121.   

1122.                 goodId.setText(“”);  

1123.                 goodName.setText(“”);  

1124.                 Cprice.setText(“”);  

1125.                 Xprice.setText(“”);  

1126.   

1127.             }  

1128.         });  

1129.   

1130.   

1131.   

1132.         deleteButton.addActionListener(new ActionListener() {  

1133.             @Override  

1134.             public void actionPerformed(ActionEvent e) {  

1135.                 String name=goodName.getText();  

1136.   

1137.                 if(del()>0)  

1138.                 new Myjframe(“删除成功”);  

1139.                 else  

1140.                     new Myjframe(“删除失败”);  

1141.                 goodName.setText(“”);  

1142.   

1143.   

1144.             }  

1145.         });  

1146.   

1147.   

1148.   

1149.         selectButton.addActionListener(new ActionListener() {  

1150.             @Override  

1151.             public void actionPerformed(ActionEvent e) {  

1152.                 //打印整张表  

1153.   

1154.                 refresh();  

1155.                 new Myjframe(“刷新成功”);  

1156.   

1157.             }  

1158.         });  

1159.   

1160.   

1161.         queryButton.addActionListener(new ActionListener() {//增加监听动作  

1162.             @Override  

1163.             public void actionPerformed(ActionEvent e) {  

1164.                 id= Integer.parseInt(goodId.getText());  

1165.                 name=goodName.getText();  

1166.                 chaxun();  

1167.                 if(flag1)  

1168.                 {  

1169.                     jf.setVisible(false);  

1170.                     new  ZhuTi().setVisible(false);  

1171.                     Myjframe myjframe1=new Myjframe(“查询成功”);  

1172.   

1173.                     JLabel usernameLabel8=new JLabel(“商品编码:”+id);  

1174.                     JLabel usernameLabel9=new JLabel(“商品名称:”+name);  

1175.                         JLabel usernameLabel10=new JLabel(“成本价:”+Cp);  

1176.                         JLabel usernameLabel11=new JLabel(“销售价:”+Xp);  

1177.   

1178.                     JPanel namePanel=new JPanel();  

1179.                     namePanel.add(usernameLabel8);  

1180.                     namePanel.add(usernameLabel9);  

1181.                     namePanel.add(usernameLabel10);  

1182.                     namePanel.add(usernameLabel11);  

1183.                     myjframe1.add(namePanel,BorderLayout.PAGE_END);  

1184.   

1185.   

1186.                 }  

1187.                 else{  

1188.                     Myjframe myjframenew1= new Myjframe(“查询不成功”);  

1189.                 }  

1190.             }  

1191.   

1192.     });  

1193.   

1194.   

1195.   

1196.         modifyButton.addActionListener(new ActionListener() {  

1197.             @Override  

1198.             public void actionPerformed(ActionEvent e) {  

1199.                 id= Integer.parseInt(goodId.getText());  

1200.                 name=goodName.getText();  

1201.   

1202.                 if(xiugai()>0)  

1203.                     new Myjframe(“修改成功”);  

1204.                 else  

1205.                     new Myjframe(“修改失败”);  

1206.   

1207.                 goodId.setText(“”);  

1208.                 goodName.setText(“”);  

1209.   

1210.             }  

1211.         });  

1212. }  

1213. }  

1214.   

1215.   

1216.   

1217. package com.company;  

1218.   

1219. import javax.swing.*;  

1220. import java.awt.*;  

1221. import java.awt.event.ActionEvent;  

1222. import java.awt.event.ActionListener;  

1223.   

1224. public class LiaoTian extends JFrame {  

1225.   

1226.     public LiaoTian(){  

1227.   

1228.         //1.创建JFrame窗体对象  

1229.         JFrame jf = new JFrame();//括号内标题可以直接直接输入汉字  

1230.         jf.setTitle(“与服务员谈话申请服务要求”);//也可以改变这样  

1231.         //设置关闭窗口时,一同结束后台的java程序  

1232.         // 2.创建指定当前窗体布局创建对象边界布局管理器  

1233.         jf.setLayout(new BorderLayout());  

1234.         jf.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);//EXIT_ON_CLOSE为关闭退出所以不能用  

1235.   

1236.         jf.setResizable(true);//设置窗体大小是否可重置  

1237.   

1238.         //设置窗口大小  像素  

1239.         jf.setSize(500,350);//可以运用jf.setBounds();完成完成这两句  

1240.         //位置  

1241.         //jf.setLocation(460,190);  

1242.         jf.setLocationRelativeTo(null);  

1243.   

1244.         //创建组件(按钮组件)  

1245.         //JButton button_1=new JButton(“1234”);  

1246.         //将组件添加到容器中  

1247.         //jf.add(button_1,BorderLayout.PAGE_START);//PAGE_END LINE_START LINE_END CENTER\  

1248.   

1249.         //设置窗体可见放在这里,就能做出来出来先关闭这个然后才展示那个的界面,可以在这个小的上面做个密码。  

1250.         jf.setVisible(true);  

1251. //  

1252.         //创建聊天记录的JTextArea,因为是聊天记录,所以不能改  

1253.         JTextArea showArea = new JTextArea(15,25);  

1254.         //因为是聊天记录,所以不能修改里面内容  

1255.         showArea.setEditable(false);  

1256.         //创建滚动条的面板组件  

1257.         JScrollPane jScrollPane =new JScrollPane(showArea);  

1258.         //放在下面  

1259.         jf.add(jScrollPane,BorderLayout.PAGE_START);  

1260.   

1261.         //创建文本框JTextField  

1262.         JTextField text = new JTextField(15);  

1263.         //创建发送按钮  

1264.         //按钮与键盘结合  

1265.         JButton but =new JButton(“发送”);  

1266.         but.addActionListener(new ActionListener() {  

1267.             @Override  

1268.             public void actionPerformed(ActionEvent e) {  

1269.                 //获取文本框中的数据,  

1270.                 String content =text.getText();  

1271.                 if (content!=null && content.length()!=0){  

1272.                     showArea.append(“申请服务要求为:”+content+”\r\n”);//追加  

1273.                 }else {  

1274.                     showArea.append(“发送内容不得为空\r\n”);  

1275.                 }  

1276.                 text.setText(“”);//输入完之后就清空掉  

1277.             }  

1278.         });  

1279.         //创建提示标签‘  

1280.         JLabel label = new JLabel(“客户留言”);  

1281.   

1282.         JPanel panel=new JPanel();  

1283.         panel.add(label);  

1284.         panel.add(text);  

1285.         panel.add(but);  

1286.         jf.add(panel,BorderLayout.PAGE_END);  

1287.     }  

1288. }  

1289. package com.company;  

1290.   

1291. import javax.swing.*;  

1292. import java.awt.*;  

1293. import java.awt.event.ActionEvent;  

1294. import java.awt.event.ActionListener;  

1295. import java.awt.event.KeyAdapter;  

1296. import java.awt.event.KeyEvent;  

1297.   

1298. public class JianYi extends JFrame{  

1299.     public JianYi (){  

1300.         //1.创建JFrame窗体对象  

1301.         JFrame jf = new JFrame();//括号内标题可以直接直接输入汉字  

1302.         jf.setTitle(“建议”);//也可以改变这样  

1303.         //设置关闭窗口时,一同结束后台的java程序  

1304.         // 2.创建指定当前窗体布局创建对象边界布局管理器  

1305.         jf.setLayout(new BorderLayout());  

1306.         jf.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);  

1307.   

1308.         jf.setResizable(true);//设置窗体大小是否可重置  

1309.   

1310.         //设置窗口大小  像素  

1311.         jf.setSize(500,350);//可以运用jf.setBounds();完成完成这两句  

1312.         //位置  

1313.         //jf.setLocation(460,190);  

1314.         jf.setLocationRelativeTo(null);  

1315.   

1316.         //创建组件(按钮组件)  

1317.         //JButton button_1=new JButton(“1234”);  

1318.         //将组件添加到容器中  

1319.         //jf.add(button_1,BorderLayout.PAGE_START);//PAGE_END LINE_START LINE_END CENTER\  

1320.   

1321.         //设置窗体可见放在这里,就能做出来出来先关闭这个然后才展示那个的界面,可以在这个小的上面做个密码。  

1322.         jf.setVisible(true);  

1323. //  

1324.         //创建聊天记录的JTextArea,因为是聊天记录,所以不能改  

1325.         JTextArea showArea = new JTextArea(15,25);  

1326.         //因为是聊天记录,所以不能修改里面内容  

1327.         showArea.setEditable(false);  

1328.         //创建滚动条的面板组件  

1329.         JScrollPane jScrollPane =new JScrollPane(showArea);  

1330.         //放在下面  

1331.         jf.add(jScrollPane,BorderLayout.PAGE_START);  

1332.   

1333.         //创建文本框JTextField  

1334.         JTextField text = new JTextField(15);  

1335.         //创建发送按钮  

1336.                 //按钮与键盘结合  

1337.         JButton but =new JButton(“发送”);  

1338.         but.addActionListener(new ActionListener() {  

1339.             @Override  

1340.             public void actionPerformed(ActionEvent e) {  

1341.                 //获取文本框中的数据,  

1342.                 String content =text.getText();  

1343.                 if (content!=null && content.length()!=0){  

1344.                     showArea.append(“客户发送建议信息为:”+content+”\r\n”);//追加  

1345.                 }else {  

1346.                     showArea.append(“发送内容不得为空\r\n”);  

1347.                 }  

1348.                 text.setText(“”);//输入完之后就清空掉  

1349.             }  

1350.         });  

1351.         JLabel label = new JLabel(“客户留言”);  

1352.   

1353.         JPanel panel=new JPanel();  

1354.         panel.add(label);  

1355.         panel.add(text);  

1356.         panel.add(but);  

1357.         jf.add(panel,BorderLayout.PAGE_END);  

1358.   

1359.   

1360.   

1361.     }  

1362.   

1363.   

1364. }  

1365. package com.company;  

1366.   

1367. import java.sql.*;  

1368.   

1369. public class ceShi {  

1370.     private static String driverName = “com.mysql.cj.jdbc.Driver”;  

1371.     //private final static String dbURL = “jdbc:mysql://127.0.0.1:3306/warehouse?useUnicode=true&characterEncoding=utf8mb4&serverTimezone=GMT”;  

1372.     private static String dbURL = “jdbc:mysql://127.0.0.1:3306/test01?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC”;  

1373.     private static String userName = “root”;  

1374.     private static String userPwd = “123456”;  

1375.     private static Connection conn;  

1376.     private static Statement stmt;//Statement 并不安全用 所以用PreparedStatement  

1377.     private static ResultSet rs=null;  

1378.     private static PreparedStatement pstmt;  

1379.   

1380.   

1381.   

1382.   

1383. /* 

1384. 先注册驱动,加载驱动,连接对象,执行sql 

1385.  

1386.     对数据库的查找操作 

1387.     jdbc 就是用java语言连接数据的技术,是Java公司提供给开发人员操作数据库的一套编程接口 

1388.     数据库厂商就是给了数据库驱动然后适配java,jdbe就是应用程序和数据库之间的一个桥梁作用 

1389.  

1390.      Driver接口是所有jdbc驱动程序必须实现的接口,该接口专门提供给数据库厂商使用。 

1391.      用于加载驱动,一次程序的运行中,只需要加载一次即可。 

1392.  

1393.      DriverManager :使用该类注册驱动。 

1394.  

1395.     Connection:连接对象 ,跟数据库的连接对象 

1396.  

1397.     Statement接口(使用时候不推荐,因为不安全) 用于执行静态SQL语句,并返回一个结果对象。 SQL语句的执行者,通过Connection进行获取 

1398.     因为Statement比较繁琐,而且存在安全方面的问题(注入攻击)。用PreparedStatement就解决了 

1399.     PreparedStatement接口是Statement接口的子接口,用于执行预编译的SQL语句 

1400.  

1401.     ResultSet 结果集对象,封装了查询结果的数据。很多方法 

1402.     */  

1403.   

1404.     public static void main(String[] args)  {  

1405.   

1406.         /* 

1407.          * 1。注册函数 

1408.          * 2获取数据库连接 

1409.          * 3.获取sql语句的执行对象 

1410.          * 4.执行sql函数 

1411.          *        DML()(增删改)executeUpdate 

1412.          *        DQL()(查询)   executeQuery 

1413.          * 5.处理结果集 

1414.          * 6.关闭流释放资源。 

1415.          */  

1416.   

1417.   

1418. //        private static String driverName = “com.mysql.cj.jdbc.Driver”;  

1419. //        //private final static String dbURL = “jdbc:mysql://127.0.0.1:3306/warehouse?useUnicode=true&characterEncoding=utf8mb4&serverTimezone=GMT”;  

1420. //        private static String dbURL = “jdbc:mysql://127.0.0.1:3306/test01?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC”;  

1421. //        private static String userName = “root”;  

1422. //        private static String userPwd = “123456”;  

1423. //        private static Connection conn;  

1424. //        private static Statement stmt;//Statement 并不安全用 所以用PreparedStatement  

1425. //  

1426. //        private static PreparedStatement pstmt;  

1427.         // 1、加载数据库驱动  

1428.         try {  

1429.             Class.forName(driverName);//private static String driverName = “com.mysql.cj.jdbc.Driver”;  

1430.             //加载这个类的字节码文件,就运行了那个方法,就注册驱动了,因为那个会注册两次  

1431.         } catch (ClassNotFoundException e) {  

1432.             System.out.println(“数据库驱动程序加载失败!”);  

1433.             System.exit(0);  

1434.         }  

1435.         // 2、获取数据库连接  

1436.         try {  

1437.             conn = DriverManager.getConnection(dbURL, userName, userPwd);  

1438.             System.out.println(“数据库连接创建成功!”);  

1439.         } catch (SQLException e) {  

1440.             System.out.println(“数据库连接创建失败!”);  

1441.         }  

1442.   

1443.         // 3、获取数据库连接对象  

1444.         try {  

1445.             stmt = conn.createStatement();  

1446.         } catch (SQLException e) {  

1447.             //e.printStackTrace();  

1448.             System.out.println(“获取Statement对象失败!”);  

1449.         }  

1450.   

1451.    }  

1452. }  

1453. package com.company;  

1454.   

1455. /*一个数据表对应一个java类 

1456. 表中的一条记录对应java类的一个对象 

1457. 表中的一个字段对应java类的一个属性 

1458.  

1459. * */  

1460. public class rslinshi {//可以直接用结果集来赋值到一个对象中,来处理对象,但是我运用了全集变量,调用就行  

1461.   

1462.     private int goodId;  

1463.     private String goodName;  

1464.     private double Cprice;  

1465.     private double Xprice;  

1466.   

1467.     public int getGoodId() {  

1468.         return goodId;  

1469.     }  

1470.   

1471.     public void setGoodId(int goodId) {  

1472.         this.goodId = goodId;  

1473.     }  

1474.   

1475.     public String getGoodName() {  

1476.         return goodName;  

1477.     }  

1478.   

1479.     public void setGoodName(String goodName) {  

1480.         this.goodName = goodName;  

1481.     }  

1482.   

1483.     public double getCprice() {  

1484.         return Cprice;  

1485.     }  

1486.   

1487.     public void setCprice(double cprice) {  

1488.         Cprice = cprice;  

1489.     }  

1490.   

1491.     public double getXprice() {  

1492.         return Xprice;  

1493.     }  

1494.   

1495.     public void setXprice(double xprice) {  

1496.         Xprice = xprice;  

1497.     }  

1498. } 

资源下载: