Java项目 学生信息管理系统 DAO设计模式

Java项目 学生信息管理系统 DAO设计模式_第1张图片
Java项目 学生信息管理系统 DAO设计模式_第2张图片
Java项目 学生信息管理系统 DAO设计模式_第3张图片
Java项目 学生信息管理系统 DAO设计模式_第4张图片
StuManage.java

//完成一个迷你版的学生管理系统 model2模式
//这是我们的主界面
//想办法对表的操作封装成一个类,可以完成对表的操作
package com.test3;
import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.awt.event.*;
import java.sql.*;
public class StuManage extends JFrame implements ActionListener{
	//定义一些控件
	JPanel jp1,jp2;
	JLabel jl1;
	JButton jb1,jb2,jb3,jb4;
	JTable jt;
	JScrollPane jsp;
	JTextField jtf;
	StuModel sm;
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		StuManage test3=new StuManage();
	}
	//构造函数
	public StuManage()
	{
		jp1=new JPanel();
		jtf=new JTextField(10);
		jb1=new JButton("查询");
		jb1.addActionListener(this);
		jl1=new JLabel("请输入名字");
		//把各个控件加入到jpl
		jp1.add(jl1);
		jp1.add(jtf);
		jp1.add(jb1);
		jp2=new JPanel();
		jb2=new JButton("添加");
		jb2.addActionListener(this);
		jb3=new JButton("修改");
		jb3.addActionListener(this);
		jb4=new JButton("删除");
		jb4.addActionListener(this);
		//把各个控件加入到jp2
		jp2.add(jb2);
		jp2.add(jb3);
		jp2.add(jb4);		
		//创建一个数据模型对象
		sm=new StuModel();
		String []paras={"1"};
		sm.queryStu("select *from stu where 1=? ",paras);
		jt=new JTable(sm);
		jsp=new JScrollPane(jt);
		this.add(jsp);
		this.add(jp1,"North");
		this.add(jp2,"South");
		this.setSize(400,300);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
		
	}
	public void actionPerformed(ActionEvent arg0){
		//判断是哪个按钮被点击
		if(arg0.getSource()==jb1)
		{
			System.out.println("用户希望查询");
			//因为把对表的数据封装到StuModel中,我们就可以比较简单的完成查询任务了
			String name=this.jtf.getText().trim();
			//写一个sql语句
			String sql="select * from stu where stuName=?";
			String[] paras={name};
			//构建新的数据模型类,并更新
			sm=new StuModel();
			sm.queryStu(sql, paras);
			//更新JTable
			jt.setModel(sm);
		}
		//当用户点击添加
		else if(arg0.getSource()==jb2)
		{
			StuAddDialog sa=new StuAddDialog(this,"添加学生",true);
			//构建新的数据模型类,并更新
			sm=new StuModel();
			String []paras2={"1"};
			sm.queryStu("select * from stu where 1=?", paras2);
			//更新JTable
			jt.setModel(sm);
		}else if(arg0.getSource()==jb3)
		{
			//用户希望修改
			int rowNum=this.jt.getSelectedRow();
			if(rowNum==-1)
			{
				//提示
				JOptionPane.showMessageDialog(this, "请选择一行");
				return;
			}
			//显示修改对话框
			new StuUpDialog(this,"修改学生",true,sm,rowNum);
			//构建新的数据模型类,并更新
			sm=new StuModel();
			String []paras2={"1"};
			sm.queryStu("select * from stu where 1=?", paras2);
			//更新JTable
			jt.setModel(sm);
		}
//当用户点击删除
		else if(arg0.getSource()==jb4)
		{
			//1.得到学生的Id
			//getSelectedRow返回用户点击的行
			//如果用户一行都没选择,就返回-1
			int rowNum=this.jt.getSelectedRow();
			if(rowNum==-1)
			{
				//提示
				JOptionPane.showMessageDialog(this, "请选择一行");
				return;
			}
			//如果不是-1 得到学生编号
			String stuId=(String)sm.getValueAt(rowNum, 0);
			//创建一个sql
			String sql="delete from stu where stuId=?";
			String []paras={stuId};
			StuModel temp=new StuModel();
			temp.updStu(sql, paras);
			//更新数据模型
			//构建新的数据模型类,并更新
			sm=new StuModel();
			String []paras2={"1"};
			sm.queryStu("select * from stu where 1=?", paras2);
			//更新JTable
			jt.setModel(sm);
		}
	}

}

SqlHelper.java

package com.test3;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class SqlHelper {

	//定义操作数据库需要的东西
		PreparedStatement ps=null;
		Connection ct=null;
		ResultSet rs=null;
		String url="jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=LiangshanHeros2";
		String user="sa";
		String passwd="tingwei";
		String driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
		
	//关闭数据库资源
		public void close()
		{
			//关闭
			
			try {
				if(rs!=null) rs.close();
				if(ps!=null) ps.close();
				if(ct!=null) ct.close();
			} catch (Exception e) {
				e.printStackTrace();
				// TODO: handle exception
			}
		}
		//写一个不需要注入参数
		public ResultSet queryExecute(String sql)
		{
			try {
				//1.加载驱动
				Class.forName(driver);
				//2.得了连接
				ct=DriverManager.getConnection(url,user,passwd);
				//3/创建ps
				ps=ct.prepareStatement(sql);
	
				rs=ps.executeQuery();
			} catch (Exception e) {
				e.printStackTrace();
				// TODO: handle exception
			}finally{
				//关闭资源
			}
			return rs;
		}
//查询数据库的操作
		public ResultSet queryExecute(String sql,String []paras)
		{
			try {
				//1.加载驱动
				Class.forName(driver);
				//2.得了连接
				ct=DriverManager.getConnection(url,user,passwd);
				//3/创建ps
				ps=ct.prepareStatement(sql);
				//给ps的问号赋值
				for(int i=0;i<paras.length;i++)
				{
					ps.setString(i+1, paras[i]);
				}
				rs=ps.executeQuery();
			} catch (Exception e) {
				e.printStackTrace();
				// TODO: handle exception
			}finally{
				//关闭资源
			}
			return rs;
			
		}
	//把增删改和在一起
		public boolean updExecute(String sql,String []paras)
		{
			boolean b=true;
			try {
				//1.加载驱动
				Class.forName(driver);
				//2.得了连接
				ct=DriverManager.getConnection(url,user,passwd);
				//3/创建ps
				ps=ct.prepareStatement(sql);
				//给ps的问号赋值
				for(int i=0;i<paras.length;i++)
				{
					ps.setString(i+1, paras[i]);
				}
				//4.执行操作
				if(ps.executeUpdate()!=1)
				{
					b=false;
				}
				
			} catch (Exception e) {
				// TODO: handle exception
				b=false;
				e.printStackTrace();
			}finally{
				this.close();
			}
			return b;
		}
}

StuModel.java

//这是我的一个stu表模型
//数据模型
package com.test3;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;

import javax.swing.table.*;
public class StuModel extends AbstractTableModel {

	//用rowData存放行数据,columnNames存放列名
	Vector rowData;
	Vector columnNames;
	//添加学生(增删改)
	public boolean updStu(String sql,String[]paras)
	{
		//创建一个SqlHelper(如果程序并发性不考虑,可以吧SqlHelper做成static
		SqlHelper sqlHelper=new SqlHelper();
		return sqlHelper.updExecute(sql, paras);
	}
	//查询的本质就是初始化
	public void queryStu(String sql,String []paras)
	{
		SqlHelper sqlHelper=null;
		//中间
		columnNames=new Vector();
		columnNames.add("学号");
		columnNames.add("名字");
		columnNames.add("性别");
		columnNames.add("年龄 ");
		columnNames.add("籍贯");
		columnNames.add("系别");	
		rowData=new Vector();
		try {
				sqlHelper=new SqlHelper();
				ResultSet rs= sqlHelper.queryExecute(sql, paras);
			while(rs.next())
			{
				Vector hang=new Vector();
				hang.add(rs.getString(1));
				hang.add(rs.getString(2));
				hang.add(rs.getString(3));
				hang.add(rs.getInt(4));
				hang.add(rs.getString(5));
				hang.add(rs.getString(6));
				//加入到rowData
				rowData.add(hang);	
			}
		} catch (Exception e) {
			e.printStackTrace();
			// TODO: handle exception
		}finally{
			sqlHelper.close();
		}
	}
@Override//等到有多少行
	public int getRowCount() {
		// TODO 自动生成的方法存根
		return  this.rowData.size();
	}

	@Override//等到有多少列
	public int getColumnCount() {
		// TODO 自动生成的方法存根
		return this.columnNames.size();
	}

	@Override
	public String getColumnName(int column) {
		// TODO 自动生成的方法存根
		return (String)this.columnNames.get(column);
	}

	@Override//得到某行某列的数据
	public Object getValueAt(int rowIndex, int columnIndex) {
		// TODO 自动生成的方法存根
		return ((Vector)this.rowData.get(rowIndex)).get(columnIndex);
	}

	
}

StuAddDialog.java

//添加学生界面
package com.test3;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;

public class StuAddDialog extends JDialog implements ActionListener{

	//定义我需要的swing组件
	JLabel jl1,jl2,jl3,jl4,jl5,jl6;
	JButton jb1,jb2;
	JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6;
	JPanel jp1,jp2,jp3;	
	public StuAddDialog(Frame owner,String title,boolean modal)
	{
		super(owner,title,modal);//调用父类构造函数,达到模式对话框
		jl1=new JLabel("学号");
		jl2=new JLabel("姓名");
		jl3=new JLabel("性别");
		jl4=new JLabel("年龄");
		jl5=new JLabel("籍贯");
		jl6=new JLabel("系别");
		
		jtf1=new JTextField();
		jtf2=new JTextField();
		jtf3=new JTextField();
		jtf4=new JTextField();
		jtf5=new JTextField();
		jtf6=new JTextField();
		
		jb1=new JButton("添加");
	     //注册监听事件
        jb1.addActionListener(this);
		jb2=new JButton("取消");
		
		jp1=new JPanel();
		jp2=new JPanel();
		jp3=new JPanel();
		
		//设置布局
		jp1.setLayout(new GridLayout(6,1));;
		jp2.setLayout(new GridLayout(6,1));
		
		//添加组件
		jp1.add(jl1);
		jp1.add(jl2);
		jp1.add(jl3);
		jp1.add(jl4);
		jp1.add(jl5);
		jp1.add(jl6);
		jp2.add(jtf1);
		jp2.add(jtf2);
		jp2.add(jtf3);
		jp2.add(jtf4);
		jp2.add(jtf5);
		jp2.add(jtf6);
		
		jp3.add(jb1);
		jp3.add(jb2);
		
        this.add(jp1,BorderLayout.WEST);
        this.add(jp2,BorderLayout.CENTER);
        this.add(jp3,BorderLayout.SOUTH);
        //展现
        this.setSize(300,250);
        //this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
		
		
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO 自动生成的方法存根
		if(e.getSource()==jb1);
		{   
			//希望添加
			StuModel temp=new StuModel();
			String sql="insert into stu values(?,?,?,?,?,?)";
			String []paras={jtf1.getText(),jtf2.getText(),jtf3.getText(),jtf4.getText(),jtf5.getText(),jtf6.getText()};
			if(!temp.updStu(sql, paras))
			{
				//提示
				JOptionPane.showMessageDialog(this, "添加失败");
			}
			//关闭对话框
			this.dispose();
		}
	}
}

StuUpDialog.java

/*
 * 修改学生
 */
package com.test3;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;


public class StuUpDialog extends JDialog implements ActionListener{

	//定义我需要的swing组件
	JLabel jl1,jl2,jl3,jl4,jl5,jl6;
	JButton jb1,jb2;
	JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6;
	JPanel jp1,jp2,jp3;	
	public StuUpDialog(Frame owner,String title,boolean modal,StuModel sm,int rowNums)
	{
		super(owner,title,modal);//调用父类构造函数,达到模式对话框
		jl1=new JLabel("学号");
		jl2=new JLabel("姓名");
		jl3=new JLabel("性别");
		jl4=new JLabel("年龄");
		jl5=new JLabel("籍贯");
		jl6=new JLabel("系别");
		
		jtf1=new JTextField();
		jtf1.setText((String)sm.getValueAt(rowNums, 0));
		jtf1.setEditable(false);
		jtf2=new JTextField();
		jtf2.setText((String)sm.getValueAt(rowNums, 1));
		jtf3=new JTextField();
		jtf3.setText((String)sm.getValueAt(rowNums, 2));
		jtf4=new JTextField();
		jtf4.setText(sm.getValueAt(rowNums, 3).toString());
		jtf5=new JTextField();
		jtf5.setText((String)sm.getValueAt(rowNums, 4));
		jtf6=new JTextField();
		jtf6.setText((String)sm.getValueAt(rowNums, 5));
		
		jb1=new JButton("修改");
	     //注册监听事件
        jb1.addActionListener(this);
		jb2=new JButton("取消");
		
		jp1=new JPanel();
		jp2=new JPanel();
		jp3=new JPanel();
		
		//设置布局
		jp1.setLayout(new GridLayout(6,1));;
		jp2.setLayout(new GridLayout(6,1));
		
		//添加组件
		jp1.add(jl1);
		jp1.add(jl2);
		jp1.add(jl3);
		jp1.add(jl4);
		jp1.add(jl5);
		jp1.add(jl6);
		
		jp2.add(jtf1);
		jp2.add(jtf2);
		jp2.add(jtf3);
		jp2.add(jtf4);
		jp2.add(jtf5);
		jp2.add(jtf6);
		
		jp3.add(jb1);
		jp3.add(jb2);
		
        this.add(jp1,BorderLayout.WEST);
        this.add(jp2,BorderLayout.CENTER);
        this.add(jp3,BorderLayout.SOUTH);
        //展现
        this.setSize(300,250);
        //this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
		
		
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO 自动生成的方法存根
		if(e.getSource()==jb1);
		{   
			//做一个sql
			String sql="update stu set stuName=?,"
					+ "stuSex=?,StuAge=?,stuJg=?,stuDept=? where stuId=?";
			String []paras={jtf2.getText(),jtf3.getText(),
					jtf4.getText(),jtf5.getText(),jtf6.getText(),jtf1.getText(),};
			StuModel temp=new StuModel();
			temp.updStu(sql, paras);
			this.dispose();
		}
	}
}

你可能感兴趣的:(Java项目)