Java 图形界面开发--图文并茂建立学生管理系统
概述
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/50932501 冷血之心的博客)
图形用户界面(Graphics User Interface,GUI)是用户与程序交互的窗口,比命令行的界面更加直观并且更好操作。
这是本人在学习Java图形界面开发阶段一步一步实现的超级简易的学生管理系统。虽然说不入大神法眼,但这确实是费了自己不少心血。对于我这样的菜鸟来说,考虑不周到,一不小心就Exception,然后就是自己调呀调。在此分享出来希望对和我一样的菜鸟有帮助。
该程序使用的数据库为SQL server,如果不太懂怎么使用java操作SQL server数据库的可以看看我的这篇博客,希望可以帮到大家。
Java程序操作数据库SQLserver详解
程序完整代码下载地址见:
http://download.csdn.net/detail/qq_25827845/9766699
步骤一:静态登录界面的实现。
代码如下:
- /**
- * 功能:学生成绩管理系统
- * 步骤1、登录界面的静态实现
- * author:ywq
- */
- import java.awt.*;
- import javax.swing.*;
- public class Login extends JFrame{
- //定义组件
- JPanel jp1,jp2,jp3;//面板
- JLabel jlb1,jlb2;//标签
- JButton jb1,jb2;//按钮
- JTextField jtf;//文本
- JPasswordField jpf;//密码
- public static void main(String[] args) {
- Login win=new Login();
- }
- //构造函数
- public Login(){
- //创建面板
- jp1=new JPanel();
- jp2=new JPanel();
- jp3=new JPanel();
- //创建标签
- jlb1=new JLabel("用户名");
- jlb2=new JLabel("密 码");
- //创建按钮
- jb1=new JButton("登录");
- jb2=new JButton("重置");
- //创建文本框
- jtf=new JTextField(10);
- //创建密码框
- jpf=new JPasswordField(10);
- //设置布局管理
- this.setLayout(new GridLayout(3, 1));//网格式布局
- //加入各个组件
- jp1.add(jlb1);
- jp1.add(jtf);
- jp2.add(jlb2);
- jp2.add(jpf);
- jp3.add(jb1);
- jp3.add(jb2);
- //加入到JFrame
- this.add(jp1);
- this.add(jp2);
- this.add(jp3);
- //设置窗体
- this.setTitle("用户登录");//窗体标签
- this.setSize(300, 150);//窗体大小
- this.setLocationRelativeTo(null);//在屏幕中间显示(居中显示)
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出关闭JFrame
- this.setVisible(true);//显示窗体
- //锁定窗体
- this.setResizable(false);
- }
- }
运行界面如图所示:
本静态界面的实现,使用了网格布局,3行1列,在每一行中放入了一个JPanel面板,每个面板上又分别放入所需的组件,整体构成了一个静态的登录界面。
步骤二:添加监听,并且进行验证用户名和密码。
代码如下:
- /*
- * 功能:学生成绩管理系统
- * 步骤1:登录界面的静态实现
- * 步骤2:添加对各个组件的监听。
- * 步骤3:对用户名和密码进行验证。
- * author:ywq
- */
- package com.package_1;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- public class Login extends JFrame implements ActionListener {
- //定义组件
- JButton jb1,jb2=null;
- JRadioButton jrb1,jrb2=null;
- JPanel jp1,jp2,jp3,jp4=null;
- JTextField jtf=null;
- JLabel jlb1,jlb2,jlb3=null;
- JPasswordField jpf=null;
- ButtonGroup bg=null;
- //设定用户名和密码
- final String stu_name="6";
- final String stu_pwd="1";
- final String tea_name="5";
- final String tea_pwd="1";
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Login ms=new Login();
- }
- public Login()
- {
- //创建组件
- jb1=new JButton("登录");
- jb2=new JButton("重置");
- //设置监听
- jb1.addActionListener(this);
- jb2.addActionListener(this);
- jrb1=new JRadioButton("教师");
- jrb2=new JRadioButton("学生");
- bg=new ButtonGroup();
- bg.add(jrb1);
- bg.add(jrb2);
- jrb2.setSelected(true);
- jp1=new JPanel();
- jp2=new JPanel();
- jp3=new JPanel();
- jp4=new JPanel();
- jlb1=new JLabel("用户名:");
- jlb2=new JLabel("密 码:");
- jlb3=new JLabel("权 限:");
- jtf=new JTextField(10);
- jpf=new JPasswordField(10);
- //加入到JPanel中
- jp1.add(jlb1);
- jp1.add(jtf);
- jp2.add(jlb2);
- jp2.add(jpf);
- jp3.add(jlb3);
- jp3.add(jrb1);
- jp3.add(jrb2);
- jp4.add(jb1);
- jp4.add(jb2);
- //加入JFrame中
- this.add(jp1);
- this.add(jp2);
- this.add(jp3);
- this.add(jp4);
- //设置布局管理器
- this.setLayout(new GridLayout(4,1));
- //给窗口设置标题
- this.setTitle("学生成绩管理系统");
- //设置窗体大小
- this.setSize(300,200);
- //设置窗体初始位置
- this.setLocation(200, 150);
- //设置当关闭窗口时,保证JVM也退出
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- //显示窗体
- this.setVisible(true);
- this.setResizable(true);
- }
- @Override
- public void actionPerformed(ActionEvent e) {
- if(e.getActionCommand()=="登录")
- {
- //如果选中教师登录
- if(jrb1.isSelected())
- {
- tealogin();
- }else if(jrb2.isSelected()) //学生在登录系统
- {
- stulogin();
- }
- }else if(e.getActionCommand()=="重置")
- {
- clear();
- }
- }
- //学生登录判断方法
- public void stulogin()
- {
- if(stu_name.equals(jtf.getText())&&stu_pwd.equals(jpf.getText()))
- {
- // System.out.println("登录成功");
- JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
- clear();
- }else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else if(jtf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else if(jpf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else
- {
- JOptionPane.showMessageDialog(null,"用户名或者密码错误!n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);
- //清空输入框
- clear();
- }
- }
- //教师登录判断方法
- public void tealogin()
- {
- if(tea_name.equals(jtf.getText())&&tea_pwd.equals(jpf.getText()))
- {
- // System.out.println("登录成功");
- JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
- clear();
- }else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else if(jtf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else if(jpf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else
- {
- JOptionPane.showMessageDialog(null,"用户名或者密码错误!n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);
- //清空输入框
- clear();
- }
- }
- //清空文本框和密码框
- public void clear()
- {
- jtf.setText("");
- jpf.setText("");
- }
- }
运行界面如下所示:
本程序加入了对各个组件的监听,首先implements ActionListener接口,然后注册监听。在ActionPerformance方法中进行相应的处理事件。
当点击登录按钮时,首先判断是哪个权限的用户在进行登录,分别调用taelogin()和stulogin()方法来进行验证。在验证方法中,对文本框和密码框的内容进行一个判断,分别弹出不同的提示信息。
步骤三:(1)程序连接数据库来进行用户名和密码的验证!!!
(2)验证成功后进行界面的切换!!!
代码如下:
- /*
- * 功能:学生成绩管理系统
- * 步骤1、登录界面的静态实现
- * 步骤2:实现界面的切换
- * 步骤3:使用数据库来验证用户名和密码
- * author:ywq
- */
- package com.package_2;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.sql.*;
- public class login extends JFrame implements ActionListener {
- //定义登录界面的组件
- JButton jb1,jb2,jb3=null;
- JRadioButton jrb1,jrb2=null;
- JPanel jp1,jp2,jp3,jp4=null;
- JTextField jtf=null;
- JLabel jlb1,jlb2,jlb3=null;
- JPasswordField jpf=null;
- ButtonGroup bg=null;
- //设定用户名和密码
- static String userword;
- static String pwd;
- static Connection ct=null;
- PreparedStatement ps=null;
- ResultSet rs=null;
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- login ms=new login();
- try {
- Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
- ct=DriverManager.getConnection("jdbc:odbc:ywq");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- //构造函数
- public login()
- {
- //创建组件
- jb1=new JButton("登录");
- jb2=new JButton("重置");
- jb3=new JButton("退出");
- //设置监听
- jb1.addActionListener(this);
- jb2.addActionListener(this);
- jb3.addActionListener(this);
- //以上三个按钮的监听统一放在了actionPerformance()中
- //监听也可以是下边这种方式
- // jb3.addActionListener(new ActionListener()
- // {
- //
- // @Override
- // public void actionPerformed(ActionEvent e) {
- // // TODO Auto-generated method stub
- // System.exit(0);
- // }
- //
- // });
- jrb1=new JRadioButton("教师");
- jrb2=new JRadioButton("学生");
- bg=new ButtonGroup();
- bg.add(jrb1);
- bg.add(jrb2);
- jrb2.setSelected(true);
- jp1=new JPanel();
- jp2=new JPanel();
- jp3=new JPanel();
- jp4=new JPanel();
- jlb1=new JLabel("用户名:");
- jlb2=new JLabel("密 码:");
- jlb3=new JLabel("权 限:");
- jtf=new JTextField(10);
- jpf=new JPasswordField(10);
- //加入到JPanel中
- jp1.add(jlb1);
- jp1.add(jtf);
- jp2.add(jlb2);
- jp2.add(jpf);
- jp3.add(jlb3);
- jp3.add(jrb1);
- jp3.add(jrb2);
- jp4.add(jb1);
- jp4.add(jb2);
- jp4.add(jb3);
- //加入JFrame中
- this.add(jp1);
- this.add(jp2);
- this.add(jp3);
- this.add(jp4);
- //设置布局管理器
- this.setLayout(new GridLayout(4,1));
- //给窗口设置标题
- this.setTitle("学生成绩管理系统");
- //设置窗体大小
- this.setSize(300,200);
- //设置窗体初始位置
- this.setLocation(200, 150);
- //设置当关闭窗口时,保证JVM也退出
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- //显示窗体
- this.setVisible(true);
- this.setResizable(true);
- }
- @Override
- public void actionPerformed(ActionEvent e) {
- if(e.getActionCommand()=="退出")
- {
- System.exit(0);
- }else if(e.getActionCommand()=="登录")
- {
- //如果选中教师登录
- if(jrb1.isSelected())
- {
- //创建火箭车
- try {
- ps=ct.prepareStatement("select * from info where 权限=? ");
- //给?赋值(可防止SQL注入漏洞问题),不要直接使用拼接的方式
- ps.setString(1, "教师");
- //ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
- rs=ps.executeQuery();
- //循环取出
- while(rs.next()){
- //将教师的用户名和密码取出
- userword=rs.getString(2);
- pwd=rs.getString(3);
- System.out.println("成功获取到密码和用户名from数据库");
- System.out.println(userword+"t"+pwd+"t");
- }
- } catch (SQLException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- //从数据库得到用户名和密码后调用登录方法,与输入的用户名和密码作比较
- tealogin();
- }else if(jrb2.isSelected()) //学生在登录系统
- {
- //创建火箭车
- try {
- ps=ct.prepareStatement("select * from info where 权限=? ");
- //给?赋值(可防止SQL注入漏洞问题),不要直接使用拼接的方式
- ps.setString(1, "学生");
- //ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
- rs=ps.executeQuery();
- //循环取出
- while(rs.next()){
- //将学生的用户名和密码取出
- userword=rs.getString(2);
- pwd=rs.getString(3);
- System.out.println("成功获取到密码和用户名from数据库");
- System.out.println(userword+"t"+pwd+"t");
- }
- } catch (SQLException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- //从数据库得到用户名和密码后调用登录方法,与输入的用户名和密码作比较
- stulogin();
- }
- }else if(e.getActionCommand()=="重置")
- {
- clear();
- }
- }
- //清空文本框和密码框
- public void clear()
- {
- jtf.setText("");
- jpf.setText("");
- }
- //学生登录判断方法
- public void stulogin()
- {
- if(userword.equals(jtf.getText())&&pwd.equals(jpf.getText()))
- {
- // System.out.println("登录成功");
- JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
- clear();
- //关闭当前界面
- dispose();
- //创建一个新界面
- UI ui=new UI();
- }else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else if(jtf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else if(jpf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else
- {
- JOptionPane.showMessageDialog(null,"用户名或者密码错误!n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);
- //清空输入框
- clear();
- }
- }
- //教师登录判断方法
- public void tealogin()
- {
- if(userword.equals(jtf.getText())&&pwd.equals(jpf.getText()))
- {
- // System.out.println("登录成功");
- JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
- clear();
- //关闭当前界面
- dispose();
- //创建一个新界面,适用于教师来管理学生
- UI ui=new UI();
- }else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else if(jtf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else if(jpf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else
- {
- JOptionPane.showMessageDialog(null,"用户名或者密码错误!n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);
- //清空输入框
- clear();
- }
- }
- }
首先建立相应的数据库,如图所示:
在程序中,首先是在主函数中(1)加载数据库驱动 。(2)建立连接
此处有问题,可参考博客 http://blog.csdn.net/qq_25827845/article/details/50836362
在进行验证时,通过建立“火箭车”将所需的SQL语句发送到数据库,并且查询得到相应的数据。利用此数据和用户输入的用户名和密码进行验证。当验证成功时,即进行界面的跳转。
页面跳转关键部分:
(1)调用dispose()方法关闭当前界面
(2)重新new一个新界面,比如本例中的new UI();其中,UI是另一个完整的界面。
如此实现了界面的切换。
UI界面的代码如下:
- package com.package_2;
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.*;
- public class UI extends JFrame implements ActionListener
- {
- //定义组件
- JButton jb1,jb2=null;
- JPanel jp1,jp2,jp3=null;
- JLabel jlb1,jlb2,jlb3,jlb4=null;
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- // UI ui=new UI();
- }
- //构造函数
- public UI() //不能申明为void!!!!!否则弹不出新界面
- {
- //创建组件
- jb1=new JButton("课程管理");
- jb2=new JButton("成绩查询");
- jp1=new JPanel();
- jp2=new JPanel();
- jp3=new JPanel();
- jlb1=new JLabel("姓名");
- jlb2=new JLabel("学号");
- jlb3=new JLabel("最新公告:");
- jlb4=new JLabel("我校举行六十周年校庆的通知");
- jp1.add(jlb1);
- jp1.add(jlb2);
- jp2.add(jb1);
- jp2.add(jlb3);
- jp3.add(jb2);
- jp3.add(jlb4);
- this.add(jp1);
- this.add(jp2);
- this.add(jp3);
- //设置布局管理器
- this.setLayout(new GridLayout(3,3,50,50));
- this.setTitle("学生成绩管理系统");
- this.setSize(400,300);
- this.setLocation(200, 200);
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- this.setVisible(true);
- }
- @Override
- public void actionPerformed(ActionEvent e) {
- // TODO Auto-generated method stub
- }
- }
以上程序的执行结果如图所示:
步骤4:(1)程序连接数据库来进行用户名和密码的验证!!!
(2)验证成功后进行界面的切换!!!【对步骤三的代码进行一定的优化】
代码如下:Login.java
- /*
- * 功能:学生成绩管理系统
- * 步骤1、登录界面的静态实现
- * 步骤2:实现界面的切换
- * 步骤3:使用数据库来验证用户名和密码
- * 步骤4:对代码进行优化。增加专门用来与数据库进行连接的类
- * author:ywq
- */
- package com.package_5;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.sql.*;
- public class Login extends JFrame implements ActionListener {
- //定义登录界面的组件
- JButton jb1,jb2,jb3=null;
- JRadioButton jrb1,jrb2=null;
- JPanel jp1,jp2,jp3,jp4=null;
- JTextField jtf=null;
- JLabel jlb1,jlb2,jlb3=null;
- JPasswordField jpf=null;
- ButtonGroup bg=null;
- //菜单项
- JMenuBar jmb=null;
- JMenu jm=null;
- JMenuItem jmi1,jmi2=null;
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Login ms=new Login();
- }
- //构造函数
- public Login()
- {
- //创建组件
- jb1=new JButton("登录");
- jb2=new JButton("重置");
- jb3=new JButton("退出");
- //设置监听
- jb1.addActionListener(this);
- jb2.addActionListener(this);
- jb3.addActionListener(this);
- jmb=new JMenuBar(); //JMenuBar指菜单栏
- jm=new JMenu("选项"); //JMenu是菜单栏中的选项栏
- jmi1=new JMenuItem("开始"); //JMenuItem指选项栏中的选项
- jmi2=new JMenuItem("退出系统");
- jm.add(jmi1);
- jm.add(jmi2);
- jmb.add(jm);
- jrb1=new JRadioButton("教师",true);
- jrb2=new JRadioButton("学生");
- bg=new ButtonGroup();
- bg.add(jrb1);
- bg.add(jrb2);
- // jrb2.setSelected(true);
- jp1=new JPanel();
- jp2=new JPanel();
- jp3=new JPanel();
- jp4=new JPanel();
- jlb1=new JLabel("用户名:");
- jlb2=new JLabel("密 码:");
- jlb3=new JLabel("权 限:");
- jtf=new JTextField(10);
- jpf=new JPasswordField(10);
- //加入到JPanel中
- jp1.add(jlb1);
- jp1.add(jtf);
- jp2.add(jlb2);
- jp2.add(jpf);
- jp3.add(jlb3);
- jp3.add(jrb1);
- jp3.add(jrb2);
- jp4.add(jb1);
- jp4.add(jb2);
- jp4.add(jb3);
- //加入JFrame中
- this.setJMenuBar(jmb);
- this.add(jp1);
- this.add(jp2);
- this.add(jp3);
- this.add(jp4);
- //设置布局管理器
- this.setLayout(new GridLayout(4,1));
- //给窗口设置标题
- this.setTitle("学生成绩管理系统");
- //设置窗体大小
- this.setSize(300,250);
- //设置窗体初始位置
- this.setLocation(200, 150);
- //设置当关闭窗口时,保证JVM也退出
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- //显示窗体
- this.setVisible(true);
- this.setResizable(true);
- }
- @Override
- public void actionPerformed(ActionEvent e) {
- if(e.getActionCommand()=="退出")
- {
- System.exit(0);
- }else if(e.getActionCommand()=="登录")
- {
- //当点击登录按钮时,首先与数据库建立连接
- GetSQL.ConnectSQL();
- //如果选中教师登录
- if(jrb1.isSelected())
- {
- GetSQL.sqlquery("教师");
- //从数据库得到用户名和密码后调用登录方法,与输入的用户名和密码作比较
- this.tealogin();
- }else if(jrb2.isSelected()) //学生在登录系统
- {
- GetSQL.sqlquery("学生");
- //从数据库得到用户名和密码后调用登录方法,与输入的用户名和密码作比较
- this.stulogin();
- }
- }else if(e.getActionCommand()=="重置")
- {
- this.clear();
- }
- }
- //清空文本框和密码框
- public void clear()
- {
- jtf.setText("");
- jpf.setText("");
- }
- //学生登录判断方法
- public void stulogin()
- {
- if(GetSQL.userword.equals(jtf.getText())&&GetSQL.pwd.equals(jpf.getText()))
- {
- // System.out.println("登录成功");
- JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
- this.clear();
- //关闭当前界面
- dispose();
- //创建一个新界面
- Stu_UI ui=new Stu_UI();
- }else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else if(jtf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else if(jpf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else
- {
- JOptionPane.showMessageDialog(null,"用户名或者密码错误!n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);
- //清空输入框
- this.clear();
- }
- }
- //教师登录判断方法
- public void tealogin()
- {
- if(GetSQL.userword.equals(jtf.getText())&&GetSQL.pwd.equals(jpf.getText()))
- {
- // System.out.println("登录成功");
- JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
- this.clear();
- //关闭当前界面
- dispose();
- //创建一个新界面,适用于教师来管理学生
- Teacher t=new Teacher();
- }else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else if(jtf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else if(jpf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else
- {
- JOptionPane.showMessageDialog(null,"用户名或者密码错误!n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);
- //清空输入框
- this.clear();
- }
- }
- }
SQL.java 负责与数据库建立连接,包括俩方法。一个是连接数据库方法,一个是查询方法。可进一步扩展。
- package com.package_5;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- //写一个类,用来与数据库建立连接,并且查询数据
- class GetSQL
- {
- //设定用户名和密码
- static String userword;
- static String pwd;
- static Connection ct=null;
- static PreparedStatement ps=null;
- static ResultSet rs=null;
- //用于连接数据库的方法,可用于子类的继承
- public static void ConnectSQL()
- {
- try {
- Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
- ct=DriverManager.getConnection("jdbc:odbc:ywq");
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- //用于向数据库进行查询的方法
- public static void sqlquery(String s)
- {
- //创建火箭车
- try {
- ps=ct.prepareStatement("select * from info where 权限=? ");
- //给?赋值(可防止SQL注入漏洞问题),不要直接使用拼接的方式
- ps.setString(1, s);
- //ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
- rs=ps.executeQuery();
- //循环取出
- while(rs.next()){
- //将教师的用户名和密码取出
- userword=rs.getString(2);
- pwd=rs.getString(3);
- System.out.println("成功获取到密码和用户名from数据库");
- System.out.println(userword+"t"+pwd+"t");
- }
- } catch (Exception e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- }
- }
Stu_UI.java 学生登录成功后跳转的界面
- package com.package_5;
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.*;
- public class Stu_UI extends JFrame implements ActionListener
- {
- //定义组件
- JButton jb1,jb2=null;
- JPanel jp1,jp2,jp3=null;
- JLabel jlb1,jlb2,jlb3,jlb4=null;
- // public static void main(String[] args) {
- // // TODO Auto-generated method stub
- // Stu_UI ui=new Stu_UI();
- // }
- //构造函数
- public Stu_UI() //不能申明为void!!!!!否则弹不出新界面
- {
- //创建组件
- jb1=new JButton("课程管理");
- jb2=new JButton("成绩查询");
- jp1=new JPanel();
- jp2=new JPanel();
- jp3=new JPanel();
- jlb1=new JLabel("姓名");
- jlb2=new JLabel("学号");
- jlb3=new JLabel("最新公告:");
- jlb4=new JLabel("我校举行六十周年校庆的通知");
- jp1.add(jlb1);
- jp1.add(jlb2);
- jp2.add(jb1);
- jp2.add(jlb3);
- jp3.add(jb2);
- jp3.add(jlb4);
- this.add(jp1);
- this.add(jp2);
- this.add(jp3);
- //设置布局管理器
- this.setLayout(new GridLayout(3,3,50,50));
- this.setTitle("学生成绩管理系统");
- this.setSize(400,300);
- this.setLocation(200, 200);
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- this.setVisible(true);
- }
- @Override
- public void actionPerformed(ActionEvent e) {
- // TODO Auto-generated method stub
- }
- }
Teacher.java 教师登录成功后跳转的界面。
- package com.package_5;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- public class Teacher extends JFrame implements ActionListener{
- //定义组件
- JLabel jl2=null;
- JTextField jtf=null;
- JButton jb=null;
- JPanel jp1,jp2=null;
- JTable jtable=null;
- String name=null;
- String num=null;
- static Connection ct=null;
- PreparedStatement ps=null;
- ResultSet rs=null;
- // public static void main(String[] args) {
- // // TODO Auto-generated method stub
- // Teacher t=new Teacher();
- //
- // try {
- // Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
- // ct=DriverManager.getConnection("jdbc:odbc:ywq");
- // } catch (Exception e) {
- //
- // e.printStackTrace();
- // }
- //
- // }
- //构造函数
- public Teacher()
- {
- //创建组件
- jl2=new JLabel("请输入学号:");
- jtf=new JTextField(10);
- jb=new JButton("查询");
- //设置监听
- jb.addActionListener(this);
- //设置表格
- final Object[] columnNames = {"姓名","学号"};
- Object[][] rowData = {
- {"小明","2015110512"},
- {"小","2015110"},
- {"小红","2015110511"}
- };
- jtable=new JTable(rowData, columnNames);
- jp1=new JPanel();
- jp2=new JPanel();
- jp1.add(jl2);
- jp1.add(jtf);
- jp1.add(jb);
- jp2.add(jtable);
- this.add(jp1);
- this.add(jp2);
- this.setLayout(new GridLayout(2,3));
- this.setTitle("学生成绩管理系统—教师");
- this.setSize(500,400);
- this.setLocation(200, 200);
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- this.setVisible(true);
- }
- @Override
- public void actionPerformed(ActionEvent e) {
- if(e.getActionCommand()=="查询")
- {
- //JOptionPane.showMessageDialog(null,"查询成功!","提示消息",JOptionPane.WARNING_MESSAGE);
- //创建火箭车
- try {
- ps=ct.prepareStatement("select * from info where xuehao=? ");
- //给?赋值(可防止SQL注入漏洞问题),不要直接使用拼接的方式
- ps.setString(1, jtf.getText());
- //ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
- rs=ps.executeQuery();
- //循环取出
- if(rs.next())
- {
- name=rs.getString(5);
- System.out.println("查询成功from数据库");
- System.out.println(name+"t");
- JOptionPane.showMessageDialog(null,"查询成功!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else
- {
- System.out.println("查询失败");
- JOptionPane.showMessageDialog(null,"查询失败!","提示消息",JOptionPane.WARNING_MESSAGE);
- }
- // while(rs.next()){
- // //将教师的用户名和密码取出
- num=rs.getString(4);
- // name=rs.getString(5);
- // System.out.println("查询成功from数据库");
- // System.out.println(name+"t");
- // }
- } catch (SQLException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- }
- }
- }
步骤5:优化数据库验证条件,使用不同的表来进行查询。
教师界面增加查询功能。
代码如下:Login6.java
- /*
- * 功能:学生成绩管理系统
- * 步骤1、登录界面的静态实现
- * 步骤2:实现界面的切换
- * 步骤3:使用数据库来验证用户名和密码
- * 步骤4:对代码进行优化。增加专门用来与数据库进行连接的类
- * 步骤5:优化代码,增加判断条件。
- * 步骤6:使用数据库进行查询时,优化查询方法和判断条件。数据库的表中可有多个数据。引入不同的表来查询。
- * 步骤7:教师界面实现了查询某个学生信息和某教师信息的功能。
- * author:ywq
- */
- package com.package_7;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.sql.*;
- public class Login6 extends JFrame implements ActionListener {
- //定义登录界面的组件
- JButton jb1,jb2,jb3=null;
- JRadioButton jrb1,jrb2=null;
- JPanel jp1,jp2,jp3,jp4=null;
- JTextField jtf=null;
- JLabel jlb1,jlb2,jlb3=null;
- JPasswordField jpf=null;
- ButtonGroup bg=null;
- //菜单项
- JMenuBar jmb=null;
- JMenu jm=null;
- JMenuItem jmi1,jmi2=null;
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Login6 ms=new Login6();
- }
- //构造函数
- public Login6()
- {
- //创建组件
- jb1=new JButton("登录");
- jb2=new JButton("重置");
- jb3=new JButton("退出");
- //设置监听
- jb1.addActionListener(this);
- jb2.addActionListener(this);
- jb3.addActionListener(this);
- jmb=new JMenuBar(); //JMenuBar指菜单栏
- jm=new JMenu("选项"); //JMenu是菜单栏中的选项栏
- jmi1=new JMenuItem("开始"); //JMenuItem指选项栏中的选项
- jmi2=new JMenuItem("退出系统");
- jm.add(jmi1);
- jm.add(jmi2);
- jmb.add(jm);
- jrb1=new JRadioButton("教师",true);
- jrb2=new JRadioButton("学生");
- bg=new ButtonGroup();
- bg.add(jrb1);
- bg.add(jrb2);
- // jrb2.setSelected(true);
- jp1=new JPanel();
- jp2=new JPanel();
- jp3=new JPanel();
- jp4=new JPanel();
- jlb1=new JLabel("用户名:");
- jlb2=new JLabel("密 码:");
- jlb3=new JLabel("权 限:");
- jtf=new JTextField(10);
- jpf=new JPasswordField(10);
- //加入到JPanel中
- jp1.add(jlb1);
- jp1.add(jtf);
- jp2.add(jlb2);
- jp2.add(jpf);
- jp3.add(jlb3);
- jp3.add(jrb1);
- jp3.add(jrb2);
- jp4.add(jb1);
- jp4.add(jb2);
- jp4.add(jb3);
- //加入JFrame中
- this.setJMenuBar(jmb);
- this.add(jp1);
- this.add(jp2);
- this.add(jp3);
- this.add(jp4);
- //设置布局管理器
- this.setLayout(new GridLayout(4,1));
- //给窗口设置标题
- this.setTitle("学生成绩管理系统");
- //设置窗体大小
- this.setSize(300,250);
- //设置窗体初始位置
- this.setLocation(200, 150);
- //设置当关闭窗口时,保证JVM也退出
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- //显示窗体
- this.setVisible(true);
- this.setResizable(true);
- }
- @Override
- public void actionPerformed(ActionEvent e) {
- if(e.getActionCommand()=="退出")
- {
- System.exit(0);
- }else if(e.getActionCommand()=="登录")
- {
- if(!jtf.getText().isEmpty() && !jpf.getText().isEmpty())
- {
- //当点击登录按钮时,首先与数据库建立连接
- GetSQL.ConnectSQL();
- //如果选中教师登录
- if(jrb1.isSelected())
- {
- GetSQL.querytea("教师",jtf.getText());
- //首先判断是否存在该用户,即是否得到了密码
- if(GetSQL.pwd ==null)
- {
- this.clear();
- }else
- {
- //调用登录方法
- this.tealogin();
- }
- }else if(jrb2.isSelected()) //学生在登录系统
- {
- GetSQL.querystu("学生",jtf.getText());
- //首先判断是否存在该用户,即是否得到了密码
- if(GetSQL.pwd ==null)
- {
- this.clear();
- }else
- {
- //调用登录方法
- this.stulogin();
- }
- }
- }else if(jtf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入用户名","提示消息",JOptionPane.WARNING_MESSAGE);
- this.clear();
- }else if(jpf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入密码","提示消息",JOptionPane.WARNING_MESSAGE);
- this.clear();
- }
- }else if(e.getActionCommand()=="重置")
- {
- this.clear();
- }
- }
- //清空文本框和密码框
- public void clear()
- {
- jtf.setText("");
- jpf.setText("");
- }
- //学生登录判断方法
- public void stulogin()
- {
- if(GetSQL.pwd.equals(jpf.getText()))
- {
- // System.out.println("登录成功");
- JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
- this.clear();
- //关闭当前界面
- dispose();
- //创建一个新界面
- Stu_UI6 ui=new Stu_UI6();
- }else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else if(jtf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else if(jpf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else
- {
- JOptionPane.showMessageDialog(null,"用户名或者密码错误!n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);
- //清空输入框
- this.clear();
- }
- }
- //教师登录判断方法
- public void tealogin()
- {
- if(GetSQL.pwd.equals(jpf.getText()))
- {
- // System.out.println("登录成功");
- JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
- this.clear();
- //关闭当前界面
- dispose();
- //创建一个新界面,适用于教师来管理学生
- Teacher6 t=new Teacher6();
- }else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else if(jtf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else if(jpf.getText().isEmpty())
- {
- JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE);
- }else
- {
- JOptionPane.showMessageDialog(null,"用户名或者密码错误!n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE);
- //清空输入框
- this.clear();
- }
- }
- }
SQL.java
- /*
- * 功能:用来和数据库SQLserver进行连接,以及相应的查询方法。
- */
- package com.package_7;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import javax.swing.JOptionPane;
- //写一个类,用来与数据库建立连接,并且查询数据
- class GetSQL {
- // 设定用户名和密码
- static String userword;
- static String pwd;
- static String english;
- static String num;
- static String name;
- static String chinese;
- static String zhengzhi;
- static String math;
- static String age;
- static String salary;
- static String sex;
- static String zhicheng;
- static String teanum;
- static String teaname;
- static Connection ct = null;
- static PreparedStatement ps = null;
- static ResultSet rs = null;
- // 用于连接数据库的方法,可用于子类的继承
- public static void ConnectSQL() {
- try {
- Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
- ct = DriverManager.getConnection("jdbc:odbc:ywq");
- System.out.println("The SQL is connected");
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- // 用于向数据库进行查询的方法
- public static void querystu(String s,String username) {
- // 创建火箭车
- try {
- ps = ct.prepareStatement("select * from info where 权限=? and 用户名=? ");
- // 给?赋值(可防止SQL注入漏洞问题),不要直接使用拼接的方式
- ps.setString(1, s);
- ps.setString(2, username);
- // ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
- rs = ps.executeQuery();
- // 循环取出
- if (rs.next()) {
- // 将教师的用户名和密码取出
- userword = rs.getString(2);
- pwd = rs.getString(3);
- System.out.println("成功获取到密码和用户名from数据库");
- System.out.println(userword + "t" + pwd + "t");
- }else
- {
- JOptionPane.showMessageDialog(null, "没有此用户,请重新输入!", "提示消息", JOptionPane.WARNING_MESSAGE);
- }
- } catch (Exception e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- }
- //在教师表中进行查询
- public static void querytea(String s,String name ) {
- // 创建火箭车
- try {
- ps = ct.prepareStatement("select * from info_tea where 权限=? and 用户名=? ");
- // 给?赋值(可防止SQL注入漏洞问题),不要直接使用拼接的方式
- ps.setString(1, s);
- ps.setString(2, name);
- // ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
- rs = ps.executeQuery();
- // 循环取出
- if (rs.next()) {
- // 将教师的用户名和密码取出
- userword = rs.getString(2);
- pwd = rs.getString(3);
- System.out.println("成功获取到密码和用户名from数据库");
- System.out.println(userword + "t" + pwd + "t");
- }else
- {
- JOptionPane.showMessageDialog(null, "没有此用户,请重新输入!", "提示消息", JOptionPane.WARNING_MESSAGE);
- }
- } catch (Exception e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- }
- //从数据库中根据学号或者教工号来查询数据,并且填入表格。
- public static void getdatastu(String s) {
- // 创建火箭车
- try {
- ps = ct.prepareStatement("select * from info where 学号 =? ");
- // 给?赋值(可防止SQL注入漏洞问题),不要直接使用拼接的方式
- ps.setString(1, s);
- // ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
- rs = ps.executeQuery();
- if(rs.next())
- {
- // 将教师的用户名和密码取出
- num = rs.getString(4);
- name = rs.getString(5);
- math = rs.getString(6);
- chinese = rs.getString(7);
- english = rs.getString(8);
- zhengzhi = rs.getString(9);
- }else
- {
- JOptionPane.showMessageDialog(null, "沒有此学生,请重新输入", "提示消息", JOptionPane.WARNING_MESSAGE);
- }
- } catch (Exception e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- }
- public static void getdatatea(String s) {
- // 创建火箭车
- try {
- ps = ct.prepareStatement("select * from info_tea where 教师编号号 =? ");
- // 给?赋值(可防止SQL注入漏洞问题),不要直接使用拼接的方式
- ps.setString(1, s);
- // ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集
- rs = ps.executeQuery();
- if(rs.next())
- {
- // 将教师的用户名和密码取出
- teanum = rs.getString(4);
- teaname = rs.getString(5);
- sex = rs.getString(6);
- salary = rs.getString(7);
- zhicheng = rs.getString(8);
- age = rs.getString(9);
- }else
- {
- JOptionPane.showMessageDialog(null, "沒有此教师,请重新输入", "提示消息", JOptionPane.WARNING_MESSAGE);
- }
- } catch (Exception e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- }
- }
Stu_UI6.java
- /*
- * 功能:学生登录成功界面。
- *
- */
- package com.package_7;
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.*;
- public class Stu_UI6 extends JFrame implements ActionListener
- {
- //定义组件
- JButton jb1,jb2=null;
- JPanel jp1,jp2,jp3=null;
- JLabel jlb1,jlb2,jlb3,jlb4=null;
- // public static void main(String[] args) {
- // // TODO Auto-generated method stub
- // Stu_UI6 ui=new Stu_UI6();
- // }
- //构造函数
- public Stu_UI6() //不能申明为void!!!!!否则弹不出新界面
- {
- //创建组件
- jb1=new JButton("课程管理");
- jb2=new JButton("成绩查询");
- jp1=new JPanel();
- jp2=new JPanel();
- jp3=new JPanel();
- jlb1=new JLabel("姓名");
- jlb2=new JLabel("学号");
- jlb3=new JLabel("最新公告:");
- jlb4=new JLabel("我校举行六十周年校庆的通知");
- jp1.add(jlb1);
- jp1.add(jlb2);
- jp2.add(jb1);
- jp2.add(jlb3);
- jp3.add(jb2);
- jp3.add(jlb4);
- this.add(jp1);
- this.add(jp2);
- this.add(jp3);
- //设置布局管理器
- this.setLayout(new GridLayout(3,3,50,50));
- this.setTitle("学生成绩管理系统");
- this.setSize(400,300);
- this.setLocation(200, 200);
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- this.setVisible(true);
- }
- @Override
- public void actionPerformed(ActionEvent e) {
- // TODO Auto-generated method stub
- }
- }
Teacher.java
- /*
- * 功能:实现了查询学生和老师的信息,并且显示在表格中的功能。
- */
- package com.package_7;
- import javax.swing.*;
- import javax.swing.table.DefaultTableModel;
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- public class Teacher6 extends JFrame implements ActionListener {
- // 定义组件
- JLabel jl2,jl,jl3,jl4 = null;
- JTextField jtf,jtf2 = null;
- JButton jb,jb2 = null;
- JPanel jp1, jp2,jp3,jp4,jp5,jp6 = null;
- DefaultTableModel model,model2 = null;
- JTable table,table2 = null;
- JScrollPane jsp,jsp2 = null;
- // public static void main(String[] args) {
- // TODO Auto-generated method stub
- // Teacher6 t = new Teacher6();
- // }
- // 构造函数
- public Teacher6() {
- // 创建组件
- jl = new JLabel("请输入学号:");
- jl2=new JLabel("请输入教工号:");
- jl3=new JLabel("学生信息表:");
- jl4=new JLabel("教师信息表:");
- jtf = new JTextField(10);
- jtf2 = new JTextField(10);
- jb = new JButton("查询1");
- jb2 = new JButton("查询2");
- // 设置监听
- jb.addActionListener(this);
- jb2.addActionListener(this);
- // 设置表格1
- String[] colnames = { "姓名", "学号", "数学", "语文", "英语", "政治" };
- model = new DefaultTableModel(colnames, 3);
- table = new JTable(model);
- jsp = new JScrollPane(table);
- //设置表格2
- String[] col = { "姓名", "教工号", "性别", "工资", "职称", "年龄" };
- model2 = new DefaultTableModel(col, 3);
- table2 = new JTable(model2);
- jsp2 = new JScrollPane(table2);
- jp1 = new JPanel();
- jp2 = new JPanel();
- jp3 = new JPanel();
- jp4 = new JPanel();
- jp5 = new JPanel();
- jp6 = new JPanel();
- jp5.setLayout(new BorderLayout());
- jp6.setLayout(new BorderLayout());
- jp1.add(jl);
- jp1.add(jtf);
- jp1.add(jb);
- jp1.setLayout(new FlowLayout(FlowLayout.LEFT));
- jp1.setPreferredSize(new Dimension(20,20));
- jp3.add(jl2);
- jp3.add(jtf2);
- jp3.add(jb2);
- jp3.setLayout(new FlowLayout(FlowLayout.LEFT));
- jp2.add(jsp);
- jp4.add(jsp2);
- jp5.add(jl3,BorderLayout.SOUTH);
- jp6.add(jl4,BorderLayout.SOUTH);
- this.add(jp1);
- this.add(jp5);
- this.add(jp2);
- this.add(jp3);
- this.add(jp6);
- this.add(jp4);
- this.setLayout(new GridLayout(6, 1));
- this.setTitle("学生成绩管理系统—教师");
- this.setSize(500, 500);
- this.setLocation(150, 150);
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- this.setVisible(true);
- this.setResizable(false);
- }
- @Override
- public void actionPerformed(ActionEvent e) {
- if (e.getActionCommand().equals("查询1") &&!jtf.getText().isEmpty()) {
- // 当点击查询按钮1时,首先与数据库建立连接
- GetSQL.ConnectSQL();
- GetSQL.getdatastu(jtf.getText());
- jtf.setText("");
- // System.out.println(GetSQL.english);
- // System.out.println(GetSQL.chinese);
- // 将数据填入表格
- table.setValueAt(GetSQL.name, 0, 0);
- table.setValueAt(GetSQL.num, 0, 1);
- table.setValueAt(GetSQL.math, 0, 2);
- table.setValueAt(GetSQL.chinese, 0, 3);
- table.setValueAt(GetSQL.english, 0, 4);
- table.setValueAt(GetSQL.zhengzhi, 0, 5);
- }else if (e.getActionCommand().equals("查询2") &&!jtf2.getText().isEmpty())
- {
- // 当点击查询按钮1时,首先与数据库建立连接
- GetSQL.ConnectSQL();
- GetSQL.getdatatea(jtf2.getText());
- jtf2.setText("");
- // 将数据填入表格
- table2.setValueAt(GetSQL.teaname, 0, 0);
- table2.setValueAt(GetSQL.teanum, 0, 1);
- table2.setValueAt(GetSQL.sex, 0, 2);
- table2.setValueAt(GetSQL.salary, 0, 3);
- table2.setValueAt(GetSQL.zhicheng, 0, 4);
- table2.setValueAt(GetSQL.age, 0, 5);
- }else
- {
- JOptionPane.showMessageDialog(null , "请输入要查询的编号","提示消息",JOptionPane.WARNING_MESSAGE);
- }
- }
- }
其中,数据库数据如图所示:
在前面的数据库查询中,使用了
ps=ct.prepareStatement("select * from info where 权限=? ");
改进方法:
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 图形界面开发--图文并茂建立学生管理系统 的全部内容,希望文章能够帮你解决Java 图形界面开发--图文并茂建立学生管理系统 所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
- 本文分类:Java
- 浏览次数:396 次浏览
- 发布日期:2023-12-13 19:00:23
- 本文链接:https://www.kaopuke.com/article/k-p-k_13_u_23_o_6_f5_13__7__22_y.html
发表评论 取消回复