Java项目开发成绩管理系统(二) 公共模块设计

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40788630/article/details/83185482

一、数据访问层

数据访问层是用来连接数据库及操作数据库中的数据,首先要在eclipse中导入相应的sql驱动包在网上可以下载

创建名为SchoolManager的项目,在src路径下创建aynu.school包,并在其中创建BaseDao类,

package aynu.school;

import java.sql.*;

import com.sun.xml.internal.bind.v2.model.core.ID;

public class BaseDao {          

	public final static String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver.class";//数据库驱动
	public final static String url = "jdbc:sqlserver://localhost: 1433;DataBaseName=school";//url
	public final static String dbname="sa";                   //数据库名
	public final static String dbpass="itcast";               //数据库密码
	
	public Connection getConn() throws ClassNotFoundException,SQLException{//此方法为连接数据库的方法
		Class.forName(driver);                          //注册驱动
		Connection conn = DriverManager.getConnection(url, dbname, dbpass);           //获得数据库连接
		return conn;                    //返回数据库连接
	}
	
	public ResultSet result(String sql,String[] param) {//此方法为获得结果集的方法
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			conn = getConn();              //获得数据库连接
			ps= conn.prepareStatement(sql);           //得到prepareStatement对象
			for(int i=0;i<param.length;i++) {
				ps.setString(i+1,param[i] );
			}
			rs= ps.executeQuery();
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
		}
		return rs;
	}
	
	public void closeAll(Connection conn ,PreparedStatement ps,ResultSet rs) {//关闭数据库,以释放资源
		if(rs != null) {          //如果rs不为空,关闭rs
			try {
				rs.close();
			}catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if(ps != null) {          //如果ps不为空,关闭ps
			try {
				ps.close();
			}catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if(conn != null) {          //如果conn不为空,关闭conn
			try {
				conn.close();
			}catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	
	public boolean executeSQL(String sql,String[] param) {  //用于执行sql的方法
		Connection conn = null;
		PreparedStatement ps = null;
		int num=0;
		boolean ban = true;
		try {
			conn = getConn();//获得数据库连接
			ps = conn.prepareStatement(sql);//获得prepareStatement对象
			if (param != null) {
				for(int i=0;i<param.length;i++) {
					ps.setString(i+1, param[i]);
				}	
			}
			num = ps.executeUpdate();  //执行SQL语句
			if(num!=1) {
				ban=false;
			}else {
				ban=true;
			}
		}catch (ClassNotFoundException e) {
			e.printStackTrace();          //处理ClassNotFoundException异常
		}catch (SQLException e) {
			e.printStackTrace();          //处理SQLException异常
		}finally {
			closeAll(conn, ps, null);     //释放资源
		}
		return ban;
	}
}

二、业务处理层

业务处理层用于相应的业务逻辑处理,他需要引用数据库访问类的数据库操作,例如在系统中对成绩的操作包括查看成绩列表,添加成绩列表、修改和删除成绩列表。对这些数据执行的操作都可以在业务逻辑层进行,业务逻辑层将直接供最终的应用程序使用,

1、创建学生信息管理的业务处理层

创建StudentManager类并使该类继承自抽象类AbstractTableModel,此抽象类为TableModel接口中的大多数方法提供默认实现,同时继承该抽象类也能生成表格组件

package aynu.school;

import java.sql.ResultSet;
import java.util.Vector;
import javax.swing.table.AbstractTableModel;

public class StudentManager extends AbstractTableModel{
	private BaseDao base;
	private ResultSet rs = null;
	private Vector rows,colu;//创建表格相关数据
	//获得表哥中的行数
	public int getRowCount() {
		return this.rows.size();
	}
	public Object getValueAt(int rowIndex,int columnIndex) {
		return ((Vector)this.rows.get(rowIndex)).get(columnIndex);
	}
	
	//获取表格中的列的数量
	public int getColumnCount() {
		return this.colu.size();
	}
	public String getColu(int column) {
		return (String) this.colu.get(column);
	}
	
	public void addStudent(String sql,String[] param) {//获取学生信息的方法
		colu = new Vector();
		//添加到列名
		colu.add("学号");
		colu.add("姓名");
		colu.add("性别");
		colu.add("年龄");
		colu.add("生日");
		colu.add("电话");
		rows=new Vector();
		try {
			base = new BaseDao();
			rs=base.result(sql, param);
			while(rs.next()) {
				Vector row=new Vector<>();
				row.add(rs.getString(1));
				row.add(rs.getString(2));
				row.add(rs.getString(3));
				row.add(rs.getString(4));
				row.add(rs.getString(5));
				row.add(rs.getString(6));
			}
		}catch (Exception e) {
			e.printStackTrace();
		}finally {
			base.closeAll(null, null, null);
		}
	}
	
	public boolean updateStudent(String sql,String[] param) {//创建进行修改、添加、删除、查询的方法
		base=new BaseDao();                     //创建BaseDao类的对象
		return base.executeSQL(sql, param);     //调用executeSQL方法
	}
}

2、创建课程信息管理的业务处理层

创建StudentManager类并使该类继承自抽象类AbstractTableModel,此抽象类为TableModel接口中的大多数方法提供默认实现,同时继承该抽象类也能生成表格组件

package aynu.school;

import java.sql.ResultSet;
import java.util.Vector;
import javax.swing.table.AbstractTableModel;

public class CourseManager extends AbstractTableModel{
	private BaseDao base;
	private ResultSet rs = null;
	private Vector rows,colu;//创建表格相关数据
	//获得表哥中的行数
	public int getRowCount() {
		return this.rows.size();
	}
	public Object getValueAt(int rowIndex,int columnIndex) {
		return ((Vector)this.rows.get(rowIndex)).get(columnIndex);
	}
	
	//获取表格中的列的数量
	public int getColumnCount() {
		return this.colu.size();
	}
	public String getColu(int column) {
		return (String) this.colu.get(column);
	}
	
	public void addCourse(String sql,String[] param) {//获取课程信息的方法
		colu = new Vector();
		//添加到列名
		colu.add("课程号");
		colu.add("课程名称");
		colu.add("课程类型");
		colu.add("课程内容");
		rows=new Vector();
		try {
			base = new BaseDao();
			rs=base.result(sql, param);
			while(rs.next()) {
				Vector row=new Vector<>();
				row.add(rs.getString(1));
				row.add(rs.getString(2));
				row.add(rs.getString(3));
				row.add(rs.getString(4));
			}
		}catch (Exception e) {
			e.printStackTrace();
		}finally {
			base.closeAll(null, null, null);
		}
	}
	
	public boolean updateCourse(String sql,String[] param) {//创建进行修改、添加、删除、查询的方法
		base=new BaseDao();                     //创建BaseDao类的对象
		return base.executeSQL(sql, param);     //调用executeSQL方法
	}
}

3、创建成绩信息管理的业务处理层

创建StudentManager类并使该类继承自抽象类AbstractTableModel,此抽象类为TableModel接口中的大多数方法提供默认实现,同时继承该抽象类也能生成表格组件

package aynu.school;

import java.sql.ResultSet;
import java.util.Vector;
import javax.swing.table.AbstractTableModel;

public class GradeMarager extends AbstractTableModel{
	private BaseDao base;
	private ResultSet rs = null;
	private Vector rows,colu;//创建表格相关数据
	//获得表哥中的行数
	public int getRowCount() {
		return this.rows.size();
	}
	public Object getValueAt(int rowIndex,int columnIndex) {
		return ((Vector)this.rows.get(rowIndex)).get(columnIndex);
	}
	
	//获取表格中的列的数量
	public int getColumnCount() {
		return this.colu.size();
	}
	public String getColu(int column) {
		return (String) this.colu.get(column);
	}
	
	public void addGrade(String sql,String[] param) {//获取成绩信息的方法
		colu = new Vector();
		//添加到列名
		colu.add("学号");
		colu.add("课程号");
		colu.add("成绩");
		colu.add("学期");
		rows=new Vector();
		try {
			base = new BaseDao();
			rs=base.result(sql, param);
			while(rs.next()) {
				Vector row=new Vector<>();
				row.add(rs.getString(1));
				row.add(rs.getString(2));
				row.add(rs.getString(3));
				row.add(rs.getString(4));
			}
		}catch (Exception e) {
			e.printStackTrace();
		}finally {
			base.closeAll(null, null, null);
		}
	}
	
	public boolean updateGrade(String sql,String[] param) {//创建进行修改、添加、删除、查询的方法
		base=new BaseDao();                     //创建BaseDao类的对象
		return base.executeSQL(sql, param);     //调用executeSQL方法
	}
}

猜你喜欢

转载自blog.csdn.net/qq_40788630/article/details/83185482