Java 图形界面开发–图文并茂建立学生管理系统

Java 图形界面开发–图文并茂建立学生管理系统(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/50932501冷血之心的博客)图形用户界面(GraphicsUserInterface,GUI)是用户与程序交互的窗口,比命令行的界面更加直观并且更好操作。关注微信公众号(文强的技术小屋),学习更多技术知识,一起遨游知识海洋~…

大家好,又见面了,我是你们的朋友全栈君。

  (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/50932501 冷血之心的博客)

图形用户界面(Graphics User Interface,GUI)是用户与程序交互的窗口,比命令行的界面更加直观并且更好操作。

关注微信公众号(文强的技术小屋),学习更多技术知识,一起遨游知识海洋~

Java 图形界面开发--图文并茂建立学生管理系统

       这是本人在学习java图形界面开发阶段一步一步实现的超级简易的学生管理系统。虽然说不入大神法眼,但这确实是费了自己不少心血。对于我这样的菜鸟来说,考虑不周到,一不小心就Exception,然后就是自己调呀调。在此分享出来希望对和我一样的菜鸟有帮助。

       该程序使用的数据库为SQL server,如果不太懂怎么使用java操作SQL server数据库的可以看看我的这篇博客,希望可以帮到大家。

Java程序操作数据库SQLserver详解  

 

Java程序完整代码下载地址见:

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);
	}
}

运行界面如图所示:Java 图形界面开发--图文并茂建立学生管理系统

 

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

 

 

运行界面如下所示:Java 图形界面开发--图文并茂建立学生管理系统

Java 图形界面开发--图文并茂建立学生管理系统

Java 图形界面开发--图文并茂建立学生管理系统

本程序加入了对各个组件的监听,首先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();
			}
		}


		
}

首先建立相应的数据库,如图所示:

(注意:下边就是该数据库中表的建表语句!!!!)

Java 图形界面开发--图文并茂建立学生管理系统

在程序中,首先是在主函数中(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
			
		}
}

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

 

Java 图形界面开发--图文并茂建立学生管理系统

 

 

Java 图形界面开发--图文并茂建立学生管理系统

 

 

步骤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);
		}

	}
}

其中,数据库数据如图所示:

Java 图形界面开发--图文并茂建立学生管理系统

此处是分别建立了两张表,表结构更加复杂一点,博主在当时没有保存下来,后续补了一份sql文件,需要的可以加群366533258获取sql文件。2019.01.02

 

在前面的数据库查询中,使用了

ps=ct.prepareStatement(“select * from info where 权限=? “);

这条语句,是依次将数据库中的权限“学生”或者”教师”的数据全部取出来,进行判断时,会产生错误。因为其将最后一个数据复制给了username和password。

 

改进方法:

ps = ct.prepareStatement(“select * from info where 权限=? and 用户名=? “); 

此条语句按照jtf.getText()来进行查询,如果查到此用户名则判断密码是否正确。否则将弹出“用户名不存在的提示”,较好的解决了查询问题。

如图所示:

Java 图形界面开发--图文并茂建立学生管理系统

 

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

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文件copy出来即是一个完整的Java程序(当然你还需要一份数据库的建表sql文件),希望能够帮助更多正在学习图形界面开发的小伙伴~

如果对你有帮助,记得点赞哦~欢迎大家关注我的博客,可以加群 366533258 交流讨论哈~

 

关注微信公众号(文强的技术小屋),学习更多技术知识,一起遨游知识海洋~

Java 图形界面开发--图文并茂建立学生管理系统

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/151778.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • DNS服务器的配置「建议收藏」

    DNS服务器的配置「建议收藏」DNS(DomainNameServer,域名服务器)是进行域名(domainname)和与之相对应的IP地址(IPaddress)转换的服务器。DNS中保存了一张域名(domainname)和与之相对应的IP地址(IPaddress)的表,以解析消息的域名。域名是Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。1、安装…

  • TCP/IP三次握手与四次挥手学习笔记(一)「建议收藏」

    TCP/IP三次握手与四次挥手学习笔记(一)

  • 鸿蒙系统v30能用吗_v30pro升级鸿蒙系统使用感受

    鸿蒙系统v30能用吗_v30pro升级鸿蒙系统使用感受鸿蒙鸿蒙发布在gitee上https://gitee.com/openHarmony入门指导,以Hi3516DV300为例https://gitee.com/openharmony/docs/tree/master/quick-start搭建环境在ubuntu18.4上,环境搭建可参考gitee上的入门的指导,编译顺利通过后,回头重点理一下:安装Pythonsudoaptinstall-ypythonsudoaptinstall-ypython3下载编译工具w

  • 基于ZigBee的工业废气监测系统

    基于ZigBee的工业废气监测系统摘要本文主要对工业现场中排放的工业废气浓度进行检测。并根据国内外气体监测技术的发展现状,提出了基于ZigBee的工业废气监测系统的设计方案。本系统主要由单片机、气体浓度检测模块、模数转换模块、显示模块、按键、蜂鸣器和无线通信模块等组成。本文首先介绍了工业废气检测系统的研究背景意义,同时结合国内外气体检测技术的发展现状,提出了基于ZigBee的工业废气监测…

  • u16转化u8_c语言指针编程题及详解

    u16转化u8_c语言指针编程题及详解如果你实际上有两个不同的u8,传统的解决方案涉及按位操作,特别是移位和按位OR。这需要零堆分配并且非常有效:letnumber=((vector[0]asu16)<<8)|vector[1]asu16;图解说明:A0B0+——–++——–+|XXXXXXXX||Y…

    2022年10月15日
  • Tomcat系统架构

    Tomcat系统架构

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号