摘要:本文将带你了解Java 入门之图形界面开发,希望本文对大家学JAVA有所帮助。
步骤一:静态登录界面的实现。
代码如下:
[java] view plain copy
1. /**
2. * 功能:学生成绩管理系统
3. * 步骤1、登录界面的静态实现
4. * author:ywq
5. */
6. import java.awt.*;
7. import javax.swing.*;
8. public class Login extends JFrame{
9. //定义组件
10. JPanel jp1,jp2,jp3;//面板
11. JLabel jlb1,jlb2;//标签
12. JButton jb1,jb2;//按钮
13. JTextField jtf;//文本
14. JPasswordField jpf;//密码
15. public static void main(String[] args) {
16. Login win=new Login();
17. }
18.
19. //构造函数
20. public Login(){
21. //创建面板
22. jp1=new JPanel();
23. jp2=new JPanel();
24. jp3=new JPanel();
25. //创建标签
26. jlb1=new JLabel("用户名");
27. jlb2=new JLabel("密 码");
28. //创建按钮
29. jb1=new JButton("登录");
30. jb2=new JButton("重置");
31. //创建文本框
32. jtf=new JTextField(10);
33. //创建密码框
34. jpf=new JPasswordField(10);
35.
36. //设置布局管理
37. this.setLayout(new GridLayout(3, 1));//网格式布局
38.
39. //加入各个组件
40. jp1.add(jlb1);
41. jp1.add(jtf);
42.
43. jp2.add(jlb2);
44. jp2.add(jpf);
45.
46. jp3.add(jb1);
47. jp3.add(jb2);
48.
49. //加入到JFrame
50. this.add(jp1);
51. this.add(jp2);
52. this.add(jp3);
53.
54. //设置窗体
55. this.setTitle("用户登录");//窗体标签
56. this.setSize(300, 150);//窗体大小
57. this.setLocationRelativeTo(null);//在屏幕中间显示(居中显示)
58. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出关闭JFrame
59. this.setVisible(true);//显示窗体
60.
61. //锁定窗体
62. this.setResizable(false);
63. }
64. }
运行界面如图所示:
本静态界面的实现,使用了网格布局,3行1列,在每一行中放入了一个JPanel面板,每个面板上又分别放入所需的组件,整体构成了一个静态的登录界面。
步骤二:添加监听,并且进行验证用户名和密码。
代码如下:
[java] view plain copy
1. /*
2. * 功能:学生成绩管理系统
3. * 步骤1:登录界面的静态实现
4. * 步骤2:添加对各个组件的监听。
5. * 步骤3:对用户名和密码进行验证。
6. * author:ywq
7. */
8. package com.package_1;
9. import javax.swing.*;
10.
11. import java.awt.*;
12. import java.awt.event.ActionEvent;
13. import java.awt.event.ActionListener;
14.
15. public class Login extends JFrame implements ActionListener {
16.
17. //定义组件
18. JButton jb1,jb2=null;
19. JRadioButton jrb1,jrb2=null;
20. JPanel jp1,jp2,jp3,jp4=null;
21. JTextField jtf=null;
22. JLabel jlb1,jlb2,jlb3=null;
23. JPasswordField jpf=null;
24. ButtonGroup bg=null;
25.
26. //设定用户名和密码
27. final String stu_name="6";
28. final String stu_pwd="1";
29. final String tea_name="5";
30. final String tea_pwd="1";
31.
32. public static void main(String[] args) {
33. // TODO Auto-generated method stub
34. Login ms=new Login();
35. }
36. public Login()
37. {
38. //创建组件
39. jb1=new JButton("登录");
40. jb2=new JButton("重置");
41. //设置监听
42. jb1.addActionListener(this);
43. jb2.addActionListener(this);
44.
45. jrb1=new JRadioButton("教师");
46. jrb2=new JRadioButton("学生");
47. bg=new ButtonGroup();
48. bg.add(jrb1);
49. bg.add(jrb2);
50. jrb2.setSelected(true);
51.
52. jp1=new JPanel();
53. jp2=new JPanel();
54. jp3=new JPanel();
55. jp4=new JPanel();
56.
57. jlb1=new JLabel("用户名:");
58. jlb2=new JLabel("密 码:");
59. jlb3=new JLabel("权 限:");
60.
61. jtf=new JTextField(10);
62. jpf=new JPasswordField(10);
63. //加入到JPanel中
64. jp1.add(jlb1);
65. jp1.add(jtf);
66.
67. jp2.add(jlb2);
68. jp2.add(jpf);
69.
70. jp3.add(jlb3);
71. jp3.add(jrb1);
72. jp3.add(jrb2);
73.
74. jp4.add(jb1);
75. jp4.add(jb2);
76.
77. //加入JFrame中
78. this.add(jp1);
79. this.add(jp2);
80. this.add(jp3);
81. this.add(jp4);
82. //设置布局管理器
83. this.setLayout(new GridLayout(4,1));
84. //给窗口设置标题
85. this.setTitle("学生成绩管理系统");
86. //设置窗体大小
87. this.setSize(300,200);
88. //设置窗体初始位置
89. this.setLocation(200, 150);
90. //设置当关闭窗口时,保证JVM也退出
91. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
92. //显示窗体
93. this.setVisible(true);
94. this.setResizable(true);
95.
96. }
97. @Override
98. public void actionPerformed(ActionEvent e) {
99.
100. if(e.getActionCommand()=="登录")
101. {
102. //如果选中教师登录
103. if(jrb1.isSelected())
104. {
105. tealogin();
106. }else if(jrb2.isSelected()) //学生在登录系统
107. {
108. stulogin();
109. }
110.
111. }else if(e.getActionCommand()=="重置")
112. {
113. clear();
114. }
115.
116. }
117.
118. //学生登录判断方法
119. public void stulogin()
120. {
121. if(stu_name.equals(jtf.getText())&&stu_pwd.equals(jpf.getText()))
122. {
123. // System.out.println("登录成功");
124. JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
125. clear();
126. }else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
127. {
128. JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);
129. }else if(jtf.getText().isEmpty())
130. {
131. JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);
132. }else if(jpf.getText().isEmpty())
133. {
134. JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);
135. }else
136. {
137. JOptionPane.showMessageDialog(null,"用户名或者密码错误!\n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);
138. //清空输入框
139. clear();
140. }
141. }
142. //教师登录判断方法
143. public void tealogin()
144. {
145. if(tea_name.equals(jtf.getText())&&tea_pwd.equals(jpf.getText()))
146. {
147. // System.out.println("登录成功");
148. JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
149. clear();
150. }else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
151. {
152. JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);
153. }else if(jtf.getText().isEmpty())
154. {
155. JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);
156. }else if(jpf.getText().isEmpty())
157. {
158. JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);
159. }else
160. {
161. JOptionPane.showMessageDialog(null,"用户名或者密码错误!\n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);
162. //清空输入框
163. clear();
164. }
165. }
166. //清空文本框和密码框
167. public void clear()
168. {
169. jtf.setText("");
170. jpf.setText("");
171. }
172.
173. }
运行界面如下所示:
本程序加入了对各个组件的监听,首先implements ActionListener接口,然后注册监听。在ActionPerformance方法中进行相应的处理事件。
当点击登录按钮时,首先判断是哪个权限的用户在进行登录,分别调用taelogin()和stulogin()方法来进行验证。在验证方法中,对文本框和密码框的内容进行一个判断,分别弹出不同的提示信息。
步骤三:(1)程序连接数据库来进行用户名和密码的验证!!!
(2)验证成功后进行界面的切换!!!
代码如下:
[java] view plain copy
1. /*
2. * 功能:学生成绩管理系统
3. * 步骤1、登录界面的静态实现
4. * 步骤2:实现界面的切换
5. * 步骤3:使用数据库来验证用户名和密码
6. * author:ywq
7. */
8. package com.package_2;
9. import javax.swing.*;
10.
11. import java.awt.*;
12. import java.awt.event.ActionEvent;
13. import java.awt.event.ActionListener;
14. import java.sql.*;
15.
16. public class login extends JFrame implements ActionListener {
17.
18. //定义登录界面的组件
19. JButton jb1,jb2,jb3=null;
20. JRadioButton jrb1,jrb2=null;
21. JPanel jp1,jp2,jp3,jp4=null;
22. JTextField jtf=null;
23. JLabel jlb1,jlb2,jlb3=null;
24. JPasswordField jpf=null;
25. ButtonGroup bg=null;
26.
27. //设定用户名和密码
28. static String userword;
29. static String pwd;
30.
31. static Connection ct=null;
32. PreparedStatement ps=null;
33. ResultSet rs=null;
34.
35. public static void main(String[] args) {
36. // TODO Auto-generated method stub
37. login ms=new login();
38.
39.
40. try {
41. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
42. ct=DriverManager.getConnection("jdbc:odbc:ywq");
43. } catch (Exception e) {
44.
45. e.printStackTrace();
46. }
47.
48. }
49. //构造函数
50. public login()
51. {
52. //创建组件
53. jb1=new JButton("登录");
54. jb2=new JButton("重置");
55. jb3=new JButton("退出");
56. //设置监听
57. jb1.addActionListener(this);
58. jb2.addActionListener(this);
59. jb3.addActionListener(this);
60. //以上三个按钮的监听统一放在了actionPerformance()中
61. //监听也可以是下边这种方式
62. // jb3.addActionListener(new ActionListener()
63. // {
64. //
65. // @Override
66. // public void actionPerformed(ActionEvent e) {
67. // // TODO Auto-generated method stub
68. // System.exit(0);
69. // }
70. //
71. // });
72.
73. jrb1=new JRadioButton("教师");
74. jrb2=new JRadioButton("学生");
75. bg=new ButtonGroup();
76. bg.add(jrb1);
77. bg.add(jrb2);
78. jrb2.setSelected(true);
79.
80. jp1=new JPanel();
81. jp2=new JPanel();
82. jp3=new JPanel();
83. jp4=new JPanel();
84.
85. jlb1=new JLabel("用户名:");
86. jlb2=new JLabel("密 码:");
87. jlb3=new JLabel("权 限:");
88.
89. jtf=new JTextField(10);
90. jpf=new JPasswordField(10);
91. //加入到JPanel中
92. jp1.add(jlb1);
93. jp1.add(jtf);
94.
95. jp2.add(jlb2);
96. jp2.add(jpf);
97.
98. jp3.add(jlb3);
99. jp3.add(jrb1);
100. jp3.add(jrb2);
101.
102. jp4.add(jb1);
103. jp4.add(jb2);
104. jp4.add(jb3);
105.
106. //加入JFrame中
107. this.add(jp1);
108. this.add(jp2);
109. this.add(jp3);
110. this.add(jp4);
111. //设置布局管理器
112. this.setLayout(new GridLayout(4,1));
113. //给窗口设置标题
114. this.setTitle("学生成绩管理系统");
115. //设置窗体大小
116. this.setSize(300,200);
117. //设置窗体初始位置
118. this.setLocation(200, 150);
119. //设置当关闭窗口时,保证JVM也退出
120. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
121. //显示窗体
122. this.setVisible(true);
123. this.setResizable(true);
124.
125. }
126. @Override
127. public void actionPerformed(ActionEvent e) {
128.
129. if(e.getActionCommand()=="退出")
130. {
131. System.exit(0);
132. }else if(e.getActionCommand()=="登录")
133. {
134. //如果选中教师登录
135. if(jrb1.isSelected())
136. {
137. //创建火箭车
138. try {
139. ps=ct.prepareStatement("select * from info where 权限=? ");
140. //给?赋值(可防止SQL注入漏洞问题),不要直接使用拼接的方式
141. ps.setString(1, "教师");
142. //ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
143. rs=ps.executeQuery();
144. //循环取出
145. while(rs.next()){
146. //将教师的用户名和密码取出
147. userword=rs.getString(2);
148. pwd=rs.getString(3);
149. System.out.println("成功获取到密码和用户名from数据库");
150. System.out.println(userword+"\t"+pwd+"\t");
151. }
152. } catch (SQLException e1) {
153. // TODO Auto-generated catch block
154. e1.printStackTrace();
155. }
156. //从数据库得到用户名和密码后调用登录方法,与输入的用户名和密码作比较
157. tealogin();
158. }else if(jrb2.isSelected()) //学生在登录系统
159. {
160. //创建火箭车
161. try {
162. ps=ct.prepareStatement("select * from info where 权限=? ");
163. //给?赋值(可防止SQL注入漏洞问题),不要直接使用拼接的方式
164. ps.setString(1, "学生");
165. //ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
166. rs=ps.executeQuery();
167. //循环取出
168. while(rs.next()){
169. //将学生的用户名和密码取出
170. userword=rs.getString(2);
171. pwd=rs.getString(3);
172. System.out.println("成功获取到密码和用户名from数据库");
173. System.out.println(userword+"\t"+pwd+"\t");
174. }
175. } catch (SQLException e1) {
176. // TODO Auto-generated catch block
177. e1.printStackTrace();
178. }
179. //从数据库得到用户名和密码后调用登录方法,与输入的用户名和密码作比较
180. stulogin();
181. }
182.
183. }else if(e.getActionCommand()=="重置")
184. {
185. clear();
186. }
187.
188. }
189.
190.
191. //清空文本框和密码框
192. public void clear()
193. {
194. jtf.setText("");
195. jpf.setText("");
196. }
197. //学生登录判断方法
198. public void stulogin()
199. {
200. if(userword.equals(jtf.getText())&&pwd.equals(jpf.getText()))
201. {
202. // System.out.println("登录成功");
203. JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
204. clear();
205. //关闭当前界面
206. dispose();
207. //创建一个新界面
208. UI ui=new UI();
209. }else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
210. {
211. JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);
212. }else if(jtf.getText().isEmpty())
213. {
214. JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);
215. }else if(jpf.getText().isEmpty())
216. {
217. JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);
218. }else
219. {
220. JOptionPane.showMessageDialog(null,"用户名或者密码错误!\n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);
221. //清空输入框
222. clear();
223. }
224. }
225.
226. //教师登录判断方法
227. public void tealogin()
228. {
229. if(userword.equals(jtf.getText())&&pwd.equals(jpf.getText()))
230. {
231. // System.out.println("登录成功");
232. JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
233. clear();
234. //关闭当前界面
235. dispose();
236. //创建一个新界面,适用于教师来管理学生
237. UI ui=new UI();
238. }else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
239. {
240. JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);
241. }else if(jtf.getText().isEmpty())
242. {
243. JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);
244. }else if(jpf.getText().isEmpty())
245. {
246. JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);
247. }else
248. {
249. JOptionPane.showMessageDialog(null,"用户名或者密码错误!\n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);
250. //清空输入框
251. clear();
252. }
253. }
254.
255.
256.
257. }
首先建立相应的数据库,如图所示:
在程序中,首先是在主函数中(1)加载数据库驱动 。(2)建立连接
此处有问题,可参考博客 //blog.csdn.net/qq_25827845/article/details/50836362
在进行验证时,通过建立“火箭车”将所需的SQL语句发送到数据库,并且查询得到相应的数据。利用此数据和用户输入的用户名和密码进行验证。当验证成功时,即进行界面的跳转。
页面跳转关键部分:
(1)调用dispose()方法关闭当前界面
(2)重新new一个新界面,比如本例中的new UI();其中,UI是另一个完整的界面。
如此实现了界面的切换。
UI界面的代码如下:
[java] view plain copy
1. package com.package_2;
2.
3. import java.awt.*;
4. import java.awt.event.*;
5.
6. import javax.swing.*;
7.
8. public class UI extends JFrame implements ActionListener
9. {
10.
11. //定义组件
12. JButton jb1,jb2=null;
13. JPanel jp1,jp2,jp3=null;
14. JLabel jlb1,jlb2,jlb3,jlb4=null;
15.
16. public static void main(String[] args) {
17. // TODO Auto-generated method stub
18. // UI ui=new UI();
19. }
20.
21. //构造函数
22. public UI() //不能申明为void!!!!!否则弹不出新界面
23. {
24. //创建组件
25. jb1=new JButton("课程管理");
26. jb2=new JButton("成绩查询");
27.
28. jp1=new JPanel();
29. jp2=new JPanel();
30. jp3=new JPanel();
31.
32. jlb1=new JLabel("姓名");
33. jlb2=new JLabel("学号");
34. jlb3=new JLabel("最新公告:");
35. jlb4=new JLabel("我校举行六十周年校庆的通知");
36.
37. jp1.add(jlb1);
38. jp1.add(jlb2);
39.
40. jp2.add(jb1);
41. jp2.add(jlb3);
42.
43. jp3.add(jb2);
44. jp3.add(jlb4);
45.
46.
47. this.add(jp1);
48. this.add(jp2);
49. this.add(jp3);
50.
51. //设置布局管理器
52. this.setLayout(new GridLayout(3,3,50,50));
53. this.setTitle("学生成绩管理系统");
54. this.setSize(400,300);
55. this.setLocation(200, 200);
56. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
57. this.setVisible(true);
58.
59. }
60. @Override
61. public void actionPerformed(ActionEvent e) {
62. // TODO Auto-generated method stub
63.
64. }
65. }
以上程序的执行结果如图所示:
步骤4:(1)程序连接数据库来进行用户名和密码的验证!!!
(2)验证成功后进行界面的切换!!!【对步骤三的代码进行一定的优化】
代码如下:Login.java
[java] view plain copy
1. /*
2. * 功能:学生成绩管理系统
3. * 步骤1、登录界面的静态实现
4. * 步骤2:实现界面的切换
5. * 步骤3:使用数据库来验证用户名和密码
6. * 步骤4:对代码进行优化。增加专门用来与数据库进行连接的类
7. * author:ywq
8. */
9. package com.package_5;
10. import javax.swing.*;
11.
12. import java.awt.*;
13. import java.awt.event.ActionEvent;
14. import java.awt.event.ActionListener;
15. import java.sql.*;
16.
17. public class Login extends JFrame implements ActionListener {
18.
19. //定义登录界面的组件
20. JButton jb1,jb2,jb3=null;
21. JRadioButton jrb1,jrb2=null;
22. JPanel jp1,jp2,jp3,jp4=null;
23. JTextField jtf=null;
24. JLabel jlb1,jlb2,jlb3=null;
25. JPasswordField jpf=null;
26. ButtonGroup bg=null;
27.
28. //菜单项
29. JMenuBar jmb=null;
30. JMenu jm=null;
31. JMenuItem jmi1,jmi2=null;
32.
33.
34. public static void main(String[] args) {
35. // TODO Auto-generated method stub
36. Login ms=new Login();
37.
38.
39. }
40. //构造函数
41. public Login()
42. {
43. //创建组件
44. jb1=new JButton("登录");
45. jb2=new JButton("重置");
46. jb3=new JButton("退出");
47. //设置监听
48. jb1.addActionListener(this);
49. jb2.addActionListener(this);
50. jb3.addActionListener(this);
51.
52. jmb=new JMenuBar(); //JMenuBar指菜单栏
53. jm=new JMenu("选项"); //JMenu是菜单栏中的选项栏
54. jmi1=new JMenuItem("开始"); //JMenuItem指选项栏中的选项
55. jmi2=new JMenuItem("退出系统");
56. jm.add(jmi1);
57. jm.add(jmi2);
58. jmb.add(jm);
59.
60.
61. jrb1=new JRadioButton("教师",true);
62. jrb2=new JRadioButton("学生");
63. bg=new ButtonGroup();
64. bg.add(jrb1);
65. bg.add(jrb2);
66. // jrb2.setSelected(true);
67.
68. jp1=new JPanel();
69. jp2=new JPanel();
70. jp3=new JPanel();
71. jp4=new JPanel();
72.
73. jlb1=new JLabel("用户名:");
74. jlb2=new JLabel("密 码:");
75. jlb3=new JLabel("权 限:");
76.
77. jtf=new JTextField(10);
78. jpf=new JPasswordField(10);
79. //加入到JPanel中
80. jp1.add(jlb1);
81. jp1.add(jtf);
82.
83. jp2.add(jlb2);
84. jp2.add(jpf);
85.
86. jp3.add(jlb3);
87. jp3.add(jrb1);
88. jp3.add(jrb2);
89.
90. jp4.add(jb1);
91. jp4.add(jb2);
92. jp4.add(jb3);
93.
94. //加入JFrame中
95. this.setJMenuBar(jmb);
96. this.add(jp1);
97. this.add(jp2);
98. this.add(jp3);
99. this.add(jp4);
100. //设置布局管理器
101. this.setLayout(new GridLayout(4,1));
102. //给窗口设置标题
103. this.setTitle("学生成绩管理系统");
104. //设置窗体大小
105. this.setSize(300,250);
106. //设置窗体初始位置
107. this.setLocation(200, 150);
108. //设置当关闭窗口时,保证JVM也退出
109. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
110. //显示窗体
111. this.setVisible(true);
112. this.setResizable(true);
113.
114. }
115. @Override
116. public void actionPerformed(ActionEvent e) {
117.
118. if(e.getActionCommand()=="退出")
119. {
120. System.exit(0);
121. }else if(e.getActionCommand()=="登录")
122. {
123. //当点击登录按钮时,首先与数据库建立连接
124. GetSQL.ConnectSQL();
125. //如果选中教师登录
126. if(jrb1.isSelected())
127. {
128. GetSQL.sqlquery("教师");
129. //从数据库得到用户名和密码后调用登录方法,与输入的用户名和密码作比较
130. this.tealogin();
131. }else if(jrb2.isSelected()) //学生在登录系统
132. {
133. GetSQL.sqlquery("学生");
134. //从数据库得到用户名和密码后调用登录方法,与输入的用户名和密码作比较
135. this.stulogin();
136. }
137.
138. }else if(e.getActionCommand()=="重置")
139. {
140. this.clear();
141. }
142.
143. }
144.
145. //清空文本框和密码框
146. public void clear()
147. {
148. jtf.setText("");
149. jpf.setText("");
150. }
151. //学生登录判断方法
152. public void stulogin()
153. {
154. if(GetSQL.userword.equals(jtf.getText())&&GetSQL.pwd.equals(jpf.getText()))
155. {
156. // System.out.println("登录成功");
157. JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
158. this.clear();
159. //关闭当前界面
160. dispose();
161. //创建一个新界面
162. Stu_UI ui=new Stu_UI();
163. }else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
164. {
165. JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);
166. }else if(jtf.getText().isEmpty())
167. {
168. JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);
169. }else if(jpf.getText().isEmpty())
170. {
171. JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);
172. }else
173. {
174. JOptionPane.showMessageDialog(null,"用户名或者密码错误!\n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);
175. //清空输入框
176. this.clear();
177. }
178. }
179.
180. //教师登录判断方法
181. public void tealogin()
182. {
183. if(GetSQL.userword.equals(jtf.getText())&&GetSQL.pwd.equals(jpf.getText()))
184. {
185. // System.out.println("登录成功");
186. JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
187. this.clear();
188. //关闭当前界面
189. dispose();
190. //创建一个新界面,适用于教师来管理学生
191. Teacher t=new Teacher();
192. }else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
193. {
194. JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);
195. }else if(jtf.getText().isEmpty())
196. {
197. JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);
198. }else if(jpf.getText().isEmpty())
199. {
200. JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);
201. }else
202. {
203. JOptionPane.showMessageDialog(null,"用户名或者密码错误!\n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);
204. //清空输入框
205. this.clear();
206. }
207. }
208.
209. }
SQL.java 负责与数据库建立连接,包括俩方法。一个是连接数据库方法,一个是查询方法。可进一步扩展。
[java] view plain copy
1. package com.package_5;
2.
3. import java.sql.Connection;
4. import java.sql.DriverManager;
5. import java.sql.PreparedStatement;
6. import java.sql.ResultSet;
7.
8. //写一个类,用来与数据库建立连接,并且查询数据
9. class GetSQL
10. {
11. //设定用户名和密码
12. static String userword;
13. static String pwd;
14.
15. static Connection ct=null;
16. static PreparedStatement ps=null;
17. static ResultSet rs=null;
18.
19. //用于连接数据库的方法,可用于子类的继承
20. public static void ConnectSQL()
21. {
22. try {
23. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
24. ct=DriverManager.getConnection("jdbc:odbc:ywq");
25. } catch (Exception e) {
26. // TODO Auto-generated catch block
27. e.printStackTrace();
28. }
29.
30. }
31. //用于向数据库进行查询的方法
32. public static void sqlquery(String s)
33. {
34. //创建火箭车
35. try {
36. ps=ct.prepareStatement("select * from info where 权限=? ");
37. //给?赋值(可防止SQL注入漏洞问题),不要直接使用拼接的方式
38. ps.setString(1, s);
39. //ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
40. rs=ps.executeQuery();
41. //循环取出
42. while(rs.next()){
43. //将教师的用户名和密码取出
44. userword=rs.getString(2);
45. pwd=rs.getString(3);
46. System.out.println("成功获取到密码和用户名from数据库");
47. System.out.println(userword+"\t"+pwd+"\t");
48. }
49. } catch (Exception e1) {
50. // TODO Auto-generated catch block
51. e1.printStackTrace();
52. }
53. }
54. }
Stu_UI.java 学生登录成功后跳转的界面
[java] view plain copy
1. package com.package_5;
2.
3. import java.awt.*;
4. import java.awt.event.*;
5.
6. import javax.swing.*;
7.
8. public class Stu_UI extends JFrame implements ActionListener
9. {
10.
11. //定义组件
12. JButton jb1,jb2=null;
13. JPanel jp1,jp2,jp3=null;
14. JLabel jlb1,jlb2,jlb3,jlb4=null;
15.
16. // public static void main(String[] args) {
17. // // TODO Auto-generated method stub
18. // Stu_UI ui=new Stu_UI();
19. // }
20. //构造函数
21. public Stu_UI() //不能申明为void!!!!!否则弹不出新界面
22. {
23. //创建组件
24. jb1=new JButton("课程管理");
25. jb2=new JButton("成绩查询");
26.
27. jp1=new JPanel();
28. jp2=new JPanel();
29. jp3=new JPanel();
30.
31. jlb1=new JLabel("姓名");
32. jlb2=new JLabel("学号");
33. jlb3=new JLabel("最新公告:");
34. jlb4=new JLabel("我校举行六十周年校庆的通知");
35.
36. jp1.add(jlb1);
37. jp1.add(jlb2);
38.
39. jp2.add(jb1);
40. jp2.add(jlb3);
41.
42. jp3.add(jb2);
43. jp3.add(jlb4);
44.
45.
46. this.add(jp1);
47. this.add(jp2);
48. this.add(jp3);
49.
50. //设置布局管理器
51. this.setLayout(new GridLayout(3,3,50,50));
52. this.setTitle("学生成绩管理系统");
53. this.setSize(400,300);
54. this.setLocation(200, 200);
55. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
56. this.setVisible(true);
57.
58. }
59. @Override
60. public void actionPerformed(ActionEvent e) {
61. // TODO Auto-generated method stub
62.
63. }
64. }
Teacher.java 教师登录成功后跳转的界面。
[java] view plain copy
1. package com.package_5;
2.
3. import javax.swing.*;
4.
5. import java.awt.*;
6. import java.awt.event.ActionEvent;
7. import java.awt.event.ActionListener;
8. import java.sql.Connection;
9. import java.sql.DriverManager;
10. import java.sql.PreparedStatement;
11. import java.sql.ResultSet;
12. import java.sql.SQLException;
13.
14. public class Teacher extends JFrame implements ActionListener{
15.
16. //定义组件
17. JLabel jl2=null;
18. JTextField jtf=null;
19. JButton jb=null;
20. JPanel jp1,jp2=null;
21. JTable jtable=null;
22.
23. String name=null;
24. String num=null;
25.
26. static Connection ct=null;
27. PreparedStatement ps=null;
28. ResultSet rs=null;
29.
30. // public static void main(String[] args) {
31. // // TODO Auto-generated method stub
32. // Teacher t=new Teacher();
33. //
34. // try {
35. // Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
36. // ct=DriverManager.getConnection("jdbc:odbc:ywq");
37. // } catch (Exception e) {
38. //
39. // e.printStackTrace();
40. // }
41. //
42. // }
43.
44.
45. //构造函数
46. public Teacher()
47. {
48. //创建组件
49. jl2=new JLabel("请输入学号:");
50. jtf=new JTextField(10);
51. jb=new JButton("查询");
52. //设置监听
53. jb.addActionListener(this);
54. //设置表格
55. final Object[] columnNames = {"姓名","学号"};
56. Object[][] rowData = {
57. {"小明","2015110512"},
58. {"小","2015110"},
59. {"小红","2015110511"}
60. };
61. jtable=new JTable(rowData, columnNames);
62.
63. jp1=new JPanel();
64. jp2=new JPanel();
65.
66. jp1.add(jl2);
67. jp1.add(jtf);
68. jp1.add(jb);
69. jp2.add(jtable);
70.
71. this.add(jp1);
72. this.add(jp2);
73.
74. this.setLayout(new GridLayout(2,3));
75. this.setTitle("学生成绩管理系统—教师");
76. this.setSize(500,400);
77. this.setLocation(200, 200);
78. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
79. this.setVisible(true);
80.
81.
82. }
83.
84.
85. @Override
86. public void actionPerformed(ActionEvent e) {
87.
88. if(e.getActionCommand()=="查询")
89. {
90. //JOptionPane.showMessageDialog(null,"查询成功!","提示消息",JOptionPane.WARNING_MESSAGE);
91. //创建火箭车
92. try {
93. ps=ct.prepareStatement("select * from info where xuehao=? ");
94. //给?赋值(可防止SQL注入漏洞问题),不要直接使用拼接的方式
95. ps.setString(1, jtf.getText());
96. //ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
97. rs=ps.executeQuery();
98. //循环取出
99. if(rs.next())
100. {
101. name=rs.getString(5);
102. System.out.println("查询成功from数据库");
103. System.out.println(name+"\t");
104. JOptionPane.showMessageDialog(null,"查询成功!","提示消息",JOptionPane.WARNING_MESSAGE);
105. }else
106. {
107. System.out.println("查询失败");
108. JOptionPane.showMessageDialog(null,"查询失败!","提示消息",JOptionPane.WARNING_MESSAGE);
109. }
110. // while(rs.next()){
111. // //将教师的用户名和密码取出
112. //// num=rs.getString(4);
113. // name=rs.getString(5);
114. // System.out.println("查询成功from数据库");
115. // System.out.println(name+"\t");
116. // }
117. } catch (SQLException e1) {
118. // TODO Auto-generated catch block
119. e1.printStackTrace();
120. }
121.
122.
123. }
124.
125. }
126. }
步骤5:优化数据库验证条件,使用不同的表来进行查询。
教师界面增加查询功能。
代码如下:Login6.java
[java] view plain copy
1. /*
2. * 功能:学生成绩管理系统
3. * 步骤1、登录界面的静态实现
4. * 步骤2:实现界面的切换
5. * 步骤3:使用数据库来验证用户名和密码
6. * 步骤4:对代码进行优化。增加专门用来与数据库进行连接的类
7. * 步骤5:优化代码,增加判断条件。
8. * 步骤6:使用数据库进行查询时,优化查询方法和判断条件。数据库的表中可有多个数据。引入不同的表来查询。
9. * 步骤7:教师界面实现了查询某个学生信息和某教师信息的功能。
10. * author:ywq
11. */
12. package com.package_7;
13. import javax.swing.*;
14.
15. import java.awt.*;
16. import java.awt.event.ActionEvent;
17. import java.awt.event.ActionListener;
18. import java.sql.*;
19.
20. public class Login6 extends JFrame implements ActionListener {
21.
22. //定义登录界面的组件
23. JButton jb1,jb2,jb3=null;
24. JRadioButton jrb1,jrb2=null;
25. JPanel jp1,jp2,jp3,jp4=null;
26. JTextField jtf=null;
27. JLabel jlb1,jlb2,jlb3=null;
28. JPasswordField jpf=null;
29. ButtonGroup bg=null;
30.
31. //菜单项
32. JMenuBar jmb=null;
33. JMenu jm=null;
34. JMenuItem jmi1,jmi2=null;
35.
36.
37. public static void main(String[] args) {
38. // TODO Auto-generated method stub
39. Login6 ms=new Login6();
40.
41.
42. }
43. //构造函数
44. public Login6()
45. {
46. //创建组件
47. jb1=new JButton("登录");
48. jb2=new JButton("重置");
49. jb3=new JButton("退出");
50. //设置监听
51. jb1.addActionListener(this);
52. jb2.addActionListener(this);
53. jb3.addActionListener(this);
54.
55. jmb=new JMenuBar(); //JMenuBar指菜单栏
56. jm=new JMenu("选项"); //JMenu是菜单栏中的选项栏
57. jmi1=new JMenuItem("开始"); //JMenuItem指选项栏中的选项
58. jmi2=new JMenuItem("退出系统");
59. jm.add(jmi1);
60. jm.add(jmi2);
61. jmb.add(jm);
62.
63.
64. jrb1=new JRadioButton("教师",true);
65. jrb2=new JRadioButton("学生");
66. bg=new ButtonGroup();
67. bg.add(jrb1);
68. bg.add(jrb2);
69. // jrb2.setSelected(true);
70.
71. jp1=new JPanel();
72. jp2=new JPanel();
73. jp3=new JPanel();
74. jp4=new JPanel();
75.
76. jlb1=new JLabel("用户名:");
77. jlb2=new JLabel("密 码:");
78. jlb3=new JLabel("权 限:");
79.
80. jtf=new JTextField(10);
81. jpf=new JPasswordField(10);
82. //加入到JPanel中
83. jp1.add(jlb1);
84. jp1.add(jtf);
85.
86. jp2.add(jlb2);
87. jp2.add(jpf);
88.
89. jp3.add(jlb3);
90. jp3.add(jrb1);
91. jp3.add(jrb2);
92.
93. jp4.add(jb1);
94. jp4.add(jb2);
95. jp4.add(jb3);
96.
97. //加入JFrame中
98. this.setJMenuBar(jmb);
99. this.add(jp1);
100. this.add(jp2);
101. this.add(jp3);
102. this.add(jp4);
103. //设置布局管理器
104. this.setLayout(new GridLayout(4,1));
105. //给窗口设置标题
106. this.setTitle("学生成绩管理系统");
107. //设置窗体大小
108. this.setSize(300,250);
109. //设置窗体初始位置
110. this.setLocation(200, 150);
111. //设置当关闭窗口时,保证JVM也退出
112. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
113. //显示窗体
114. this.setVisible(true);
115. this.setResizable(true);
116.
117. }
118. @Override
119. public void actionPerformed(ActionEvent e) {
120.
121. if(e.getActionCommand()=="退出")
122. {
123. System.exit(0);
124. }else if(e.getActionCommand()=="登录")
125. {
126. if(!jtf.getText().isEmpty() && !jpf.getText().isEmpty())
127. {
128. //当点击登录按钮时,首先与数据库建立连接
129. GetSQL.ConnectSQL();
130. //如果选中教师登录
131. if(jrb1.isSelected())
132. {
133. GetSQL.querytea("教师",jtf.getText());
134. //首先判断是否存在该用户,即是否得到了密码
135. if(GetSQL.pwd ==null)
136. {
137. this.clear();
138. }else
139. {
140. //调用登录方法
141. this.tealogin();
142. }
143. }else if(jrb2.isSelected()) //学生在登录系统
144. {
145. GetSQL.querystu("学生",jtf.getText());
146. //首先判断是否存在该用户,即是否得到了密码
147. if(GetSQL.pwd ==null)
148. {
149. this.clear();
150. }else
151. {
152. //调用登录方法
153. this.stulogin();
154. }
155.
156. }
157. }else if(jtf.getText().isEmpty())
158. {
159. JOptionPane.showMessageDialog(null,"请输入用户名","提示消息",JOptionPane.WARNING_MESSAGE);
160. this.clear();
161. }else if(jpf.getText().isEmpty())
162. {
163. JOptionPane.showMessageDialog(null,"请输入密码","提示消息",JOptionPane.WARNING_MESSAGE);
164. this.clear();
165. }
166. }else if(e.getActionCommand()=="重置")
167. {
168. this.clear();
169. }
170.
171. }
172.
173. //清空文本框和密码框
174. public void clear()
175. {
176. jtf.setText("");
177. jpf.setText("");
178. }
179. //学生登录判断方法
180. public void stulogin()
181. {
182. if(GetSQL.pwd.equals(jpf.getText()))
183. {
184. // System.out.println("登录成功");
185. JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
186. this.clear();
187. //关闭当前界面
188. dispose();
189. //创建一个新界面
190. Stu_UI6 ui=new Stu_UI6();
191. }else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
192. {
193. JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);
194. }else if(jtf.getText().isEmpty())
195. {
196. JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);
197. }else if(jpf.getText().isEmpty())
198. {
199. JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);
200. }else
201. {
202. JOptionPane.showMessageDialog(null,"用户名或者密码错误!\n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);
203. //清空输入框
204. this.clear();
205. }
206. }
207.
208. //教师登录判断方法
209. public void tealogin()
210. {
211. if(GetSQL.pwd.equals(jpf.getText()))
212. {
213. // System.out.println("登录成功");
214. JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
215. this.clear();
216. //关闭当前界面
217. dispose();
218. //创建一个新界面,适用于教师来管理学生
219. Teacher6 t=new Teacher6();
220. }else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
221. {
222. JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);
223. }else if(jtf.getText().isEmpty())
224. {
225. JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);
226. }else if(jpf.getText().isEmpty())
227. {
228. JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);
229. }else
230. {
231. JOptionPane.showMessageDialog(null,"用户名或者密码错误!\n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);
232. //清空输入框
233. this.clear();
234. }
235. }
236.
237. }
SQL.java
[java] view plain copy
1. /*
2. * 功能:用来和数据库SQLserver进行连接,以及相应的查询方法。
3. */
4. package com.package_7;
5.
6. import java.sql.Connection;
7. import java.sql.DriverManager;
8. import java.sql.PreparedStatement;
9. import java.sql.ResultSet;
10. import java.sql.SQLException;
11.
12. import javax.swing.JOptionPane;
13.
14. //写一个类,用来与数据库建立连接,并且查询数据
15. class GetSQL {
16. // 设定用户名和密码
17. static String userword;
18. static String pwd;
19.
20. static String english;
21. static String num;
22. static String name;
23. static String chinese;
24. static String zhengzhi;
25. static String math;
26.
27. static String age;
28. static String salary;
29. static String sex;
30. static String zhicheng;
31. static String teanum;
32. static String teaname;
33.
34. static Connection ct = null;
35. static PreparedStatement ps = null;
36. static ResultSet rs = null;
37.
38. // 用于连接数据库的方法,可用于子类的继承
39. public static void ConnectSQL() {
40. try {
41. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
42. ct = DriverManager.getConnection("jdbc:odbc:ywq");
43. System.out.println("The SQL is connected");
44. } catch (Exception e) {
45. // TODO Auto-generated catch block
46. e.printStackTrace();
47. }
48.
49. }
50.
51. // 用于向数据库进行查询的方法
52. public static void querystu(String s,String username) {
53. // 创建火箭车
54. try {
55. ps = ct.prepareStatement("select * from info where 权限=? and 用户名=? ");
56. // 给?赋值(可防止SQL注入漏洞问题),不要直接使用拼接的方式
57. ps.setString(1, s);
58. ps.setString(2, username);
59. // ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
60. rs = ps.executeQuery();
61. // 循环取出
62. if (rs.next()) {
63. // 将教师的用户名和密码取出
64. userword = rs.getString(2);
65. pwd = rs.getString(3);
66. System.out.println("成功获取到密码和用户名from数据库");
67. System.out.println(userword + "\t" + pwd + "\t");
68. }else
69. {
70. JOptionPane.showMessageDialog(null, "没有此用户,请重新输入!", "提示消息", JOptionPane.WARNING_MESSAGE);
71. }
72. } catch (Exception e1) {
73. // TODO Auto-generated catch block
74. e1.printStackTrace();
75. }
76. }
77. //在教师表中进行查询
78. public static void querytea(String s,String name ) {
79. // 创建火箭车
80. try {
81. ps = ct.prepareStatement("select * from info_tea where 权限=? and 用户名=? ");
82. // 给?赋值(可防止SQL注入漏洞问题),不要直接使用拼接的方式
83. ps.setString(1, s);
84. ps.setString(2, name);
85. // ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
86. rs = ps.executeQuery();
87. // 循环取出
88. if (rs.next()) {
89. // 将教师的用户名和密码取出
90. userword = rs.getString(2);
91. pwd = rs.getString(3);
92. System.out.println("成功获取到密码和用户名from数据库");
93. System.out.println(userword + "\t" + pwd + "\t");
94. }else
95. {
96. JOptionPane.showMessageDialog(null, "没有此用户,请重新输入!", "提示消息", JOptionPane.WARNING_MESSAGE);
97. }
98. } catch (Exception e1) {
99. // TODO Auto-generated catch block
100. e1.printStackTrace();
101. }
102. }
103.
104. //从数据库中根据学号或者教工号来查询数据,并且填入表格。
105. public static void getdatastu(String s) {
106. // 创建火箭车
107. try {
108. ps = ct.prepareStatement("select * from info where 学号 =? ");
109. // 给?赋值(可防止SQL注入漏洞问题),不要直接使用拼接的方式
110. ps.setString(1, s);
111. // ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
112. rs = ps.executeQuery();
113. if(rs.next())
114. {
115. // 将教师的用户名和密码取出
116. num = rs.getString(4);
117. name = rs.getString(5);
118. math = rs.getString(6);
119. chinese = rs.getString(7);
120. english = rs.getString(8);
121. zhengzhi = rs.getString(9);
122. }else
123. {
124. JOptionPane.showMessageDialog(null, "沒有此学生,请重新输入", "提示消息", JOptionPane.WARNING_MESSAGE);
125. }
126.
127. } catch (Exception e1) {
128. // TODO Auto-generated catch block
129. e1.printStackTrace();
130. }
131. }
132. public static void getdatatea(String s) {
133. // 创建火箭车
134. try {
135. ps = ct.prepareStatement("select * from info_tea where 教师编号号 =? ");
136. // 给?赋值(可防止SQL注入漏洞问题),不要直接使用拼接的方式
137. ps.setString(1, s);
138. // ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
139. rs = ps.executeQuery();
140. if(rs.next())
141. {
142. // 将教师的用户名和密码取出
143. teanum = rs.getString(4);
144. teaname = rs.getString(5);
145. sex = rs.getString(6);
146. salary = rs.getString(7);
147. zhicheng = rs.getString(8);
148. age = rs.getString(9);
149. }else
150. {
151. JOptionPane.showMessageDialog(null, "沒有此教师,请重新输入", "提示消息", JOptionPane.WARNING_MESSAGE);
152. }
153.
154. } catch (Exception e1) {
155. // TODO Auto-generated catch block
156. e1.printStackTrace();
157. }
158. }
159.
160. }
Stu_UI6.java
[java] view plain copy
1. /*
2. * 功能:学生登录成功界面。
3. *
4. */
5. package com.package_7;
6.
7. import java.awt.*;
8. import java.awt.event.*;
9.
10. import javax.swing.*;
11.
12. public class Stu_UI6 extends JFrame implements ActionListener
13. {
14.
15. //定义组件
16. JButton jb1,jb2=null;
17. JPanel jp1,jp2,jp3=null;
18. JLabel jlb1,jlb2,jlb3,jlb4=null;
19.
20. // public static void main(String[] args) {
21. // // TODO Auto-generated method stub
22. // Stu_UI6 ui=new Stu_UI6();
23. // }
24. //构造函数
25. public Stu_UI6() //不能申明为void!!!!!否则弹不出新界面
26. {
27. //创建组件
28. jb1=new JButton("课程管理");
29. jb2=new JButton("成绩查询");
30.
31. jp1=new JPanel();
32. jp2=new JPanel();
33. jp3=new JPanel();
34.
35. jlb1=new JLabel("姓名");
36. jlb2=new JLabel("学号");
37. jlb3=new JLabel("最新公告:");
38. jlb4=new JLabel("我校举行六十周年校庆的通知");
39.
40. jp1.add(jlb1);
41. jp1.add(jlb2);
42.
43. jp2.add(jb1);
44. jp2.add(jlb3);
45.
46. jp3.add(jb2);
47. jp3.add(jlb4);
48.
49.
50. this.add(jp1);
51. this.add(jp2);
52. this.add(jp3);
53.
54. //设置布局管理器
55. this.setLayout(new GridLayout(3,3,50,50));
56. this.setTitle("学生成绩管理系统");
57. this.setSize(400,300);
58. this.setLocation(200, 200);
59. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
60. this.setVisible(true);
61.
62. }
63. @Override
64. public void actionPerformed(ActionEvent e) {
65. // TODO Auto-generated method stub
66.
67. }
68. }
Teacher.java
[java] view plain copy
1. /*
2. * 功能:实现了查询学生和老师的信息,并且显示在表格中的功能。
3. */
4.
5. package com.package_7;
6.
7. import javax.swing.*;
8. import javax.swing.table.DefaultTableModel;
9.
10. import java.awt.*;
11. import java.awt.event.ActionEvent;
12. import java.awt.event.ActionListener;
13. import java.sql.Connection;
14. import java.sql.DriverManager;
15. import java.sql.PreparedStatement;
16. import java.sql.ResultSet;
17. import java.sql.SQLException;
18.
19. public class Teacher6 extends JFrame implements ActionListener {
20.
21. // 定义组件
22. JLabel jl2,jl,jl3,jl4 = null;
23. JTextField jtf,jtf2 = null;
24. JButton jb,jb2 = null;
25. JPanel jp1, jp2,jp3,jp4,jp5,jp6 = null;
26.
27. DefaultTableModel model,model2 = null;
28. JTable table,table2 = null;
29. JScrollPane jsp,jsp2 = null;
30.
31. // public static void main(String[] args) {
32. // TODO Auto-generated method stub
33. // Teacher6 t = new Teacher6();
34. // }
35.
36. // 构造函数
37. public Teacher6() {
38. // 创建组件
39. jl = new JLabel("请输入学号:");
40. jl2=new JLabel("请输入教工号:");
41.
42. jl3=new JLabel("学生信息表:");
43. jl4=new JLabel("教师信息表:");
44.
45. jtf = new JTextField(10);
46. jtf2 = new JTextField(10);
47. jb = new JButton("查询1");
48. jb2 = new JButton("查询2");
49. // 设置监听
50. jb.addActionListener(this);
51. jb2.addActionListener(this);
52. // 设置表格1
53. String[] colnames = { "姓名", "学号", "数学", "语文", "英语", "政治" };
54. model = new DefaultTableModel(colnames, 3);
55. table = new JTable(model);
56. jsp = new JScrollPane(table);
57. //设置表格2
58. String[] col = { "姓名", "教工号", "性别", "工资", "职称", "年龄" };
59. model2 = new DefaultTableModel(col, 3);
60. table2 = new JTable(model2);
61. jsp2 = new JScrollPane(table2);
62.
63.
64. jp1 = new JPanel();
65. jp2 = new JPanel();
66. jp3 = new JPanel();
67. jp4 = new JPanel();
68. jp5 = new JPanel();
69. jp6 = new JPanel();
70. jp5.setLayout(new BorderLayout());
71. jp6.setLayout(new BorderLayout());
72.
73. jp1.add(jl);
74. jp1.add(jtf);
75. jp1.add(jb);
76. jp1.setLayout(new FlowLayout(FlowLayout.LEFT));
77. jp1.setPreferredSize(new Dimension(20,20));
78.
79. jp3.add(jl2);
80. jp3.add(jtf2);
81. jp3.add(jb2);
82. jp3.setLayout(new FlowLayout(FlowLayout.LEFT));
83.
84. jp2.add(jsp);
85. jp4.add(jsp2);
86.
87. jp5.add(jl3,BorderLayout.SOUTH);
88. jp6.add(jl4,BorderLayout.SOUTH);
89.
90. this.add(jp1);
91. this.add(jp5);
92. this.add(jp2);
93. this.add(jp3);
94. this.add(jp6);
95. this.add(jp4);
96.
97. this.setLayout(new GridLayout(6, 1));
98. this.setTitle("学生成绩管理系统—教师");
99. this.setSize(500, 500);
100. this.setLocation(150, 150);
101. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
102. this.setVisible(true);
103. this.setResizable(false);
104.
105.
106. }
107.
108. @Override
109. public void actionPerformed(ActionEvent e) {
110.
111. if (e.getActionCommand().equals("查询1") &&!jtf.getText().isEmpty()) {
112. // 当点击查询按钮1时,首先与数据库建立连接
113. GetSQL.ConnectSQL();
114. GetSQL.getdatastu(jtf.getText());
115. jtf.setText("");
116. // System.out.println(GetSQL.english);
117. // System.out.println(GetSQL.chinese);
118. // 将数据填入表格
119. table.setValueAt(GetSQL.name, 0, 0);
120. table.setValueAt(GetSQL.num, 0, 1);
121. table.setValueAt(GetSQL.math, 0, 2);
122. table.setValueAt(GetSQL.chinese, 0, 3);
123. table.setValueAt(GetSQL.english, 0, 4);
124. table.setValueAt(GetSQL.zhengzhi, 0, 5);
125.
126. }else if (e.getActionCommand().equals("查询2") &&!jtf2.getText().isEmpty())
127. {
128. // 当点击查询按钮1时,首先与数据库建立连接
129. GetSQL.ConnectSQL();
130. GetSQL.getdatatea(jtf2.getText());
131. jtf2.setText("");
132.
133. // 将数据填入表格
134. table2.setValueAt(GetSQL.teaname, 0, 0);
135. table2.setValueAt(GetSQL.teanum, 0, 1);
136. table2.setValueAt(GetSQL.sex, 0, 2);
137. table2.setValueAt(GetSQL.salary, 0, 3);
138. table2.setValueAt(GetSQL.zhicheng, 0, 4);
139. table2.setValueAt(GetSQL.age, 0, 5);
140. }else
141. {
142. JOptionPane.showMessageDialog(null , "请输入要查询的编号","提示消息",JOptionPane.WARNING_MESSAGE);
143. }
144.
145. }
146. }
其中,数据库数据如图所示:
在前面的数据库查询中,使用了
ps=ct.prepareStatement("select * from info where 权限=? ");
这条语句,是依次将数据库中的权限“学生”或者"教师"的数据全部取出来,进行判断时,会产生错误。因为其将最后一个数据复制给了username和password。
改进方法:
ps = ct.prepareStatement("select * from info where 权限=? and 用户名=? ");
此条语句按照jtf.getText()来进行查询,如果查到此用户名则判断密码是否正确。否则将弹出“用户名不存在的提示”,较好的解决了查询问题。
如图所示:
教师登录成功界面,如图:
在此系统中,可以对数据库中学生表和教师表中的信息进行查询,按照提示,可输入学号和教工号来实现。
如图所示:
说说经验之谈,在构建表格的时候,列名怎么也不出现。
查阅资料后发现,只有将JTable加入到JScrollPane中才会显示列名。代码如下:
// 设置表格1
String[] colnames = { "姓名", "学号", "数学", "语文", "英语", "政治" };
model = new DefaultTableModel(colnames, 3);
table = new JTable(model);
jsp = new JScrollPane(table);
然后将JScrollPane添加进一个JPanel中,实现了表格的设置。
至于点击查询按钮所进行的查询工作就和前面大同小异了。当输入的学号或者教工号不存在时,会给出一个提示。如图所示:
简易信息管理系统适合新手学Java图形界面开发。
1、登录界面可以进行登录操作。有俩种权限选择。分别跳转到不同的界面。
2、使用了事件监听、Java操作SQLserver数据库等知识。
3、图形化界面中使用了JTable等组件,将查询结果显示在表格中。
以上就介绍了JAVA的相关知识,希望对JAVA有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言JAVA频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号