Java 入门之图形界面开发
白羽 2018-07-09 来源 :网络 阅读 765 评论 0

摘要:本文将带你了解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. }  


运行界面如图所示:Java 入门之图形界面开发

本静态界面的实现,使用了网格布局,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. }  


以上程序的执行结果如图所示:

 

 

 Java 入门之图形界面开发

 

 

 Java 入门之图形界面开发

步骤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()来进行查询,如果查到此用户名则判断密码是否正确。否则将弹出“用户名不存在的提示”,较好的解决了查询问题。

如图所示:

 Java 入门之图形界面开发

 

教师登录成功界面,如图:

 Java 入门之图形界面开发

 

在此系统中,可以对数据库中学生表和教师表中的信息进行查询,按照提示,可输入学号和教工号来实现。

如图所示:

 

 

说说经验之谈,在构建表格的时候,列名怎么也不出现。

查阅资料后发现,只有将JTable加入到JScrollPane中才会显示列名。代码如下:

// 设置表格1
        String[] colnames = { "姓名", "学号", "数学", "语文", "英语", "政治" };

        model = new DefaultTableModel(colnames, 3);

        table = new JTable(model);

        jsp = new JScrollPane(table);

然后将JScrollPane添加进一个JPanel中,实现了表格的设置。

 

至于点击查询按钮所进行的查询工作就和前面大同小异了。当输入的学号或者教工号不存在时,会给出一个提示。如图所示:

 

Java 入门之图形界面开发

简易信息管理系统适合新手学Java图形界面开发。

1、登录界面可以进行登录操作。有俩种权限选择。分别跳转到不同的界面。

2、使用了事件监听、Java操作SQLserver数据库等知识。

3、图形化界面中使用了JTable等组件,将查询结果显示在表格中。

 


 


以上就介绍了JAVA的相关知识,希望对JAVA有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言JAVA频道!

 



 


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程