栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

计算机软件技术实习 项目四 学生信息管理系统

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

计算机软件技术实习 项目四 学生信息管理系统

一、实验内容和目的  

该项目主要实现的是为用户提供一个友好的交互界面,并对学生信息管理系统的增删改查。用到的开发工具有java-IDEA和SQL-service。在数据库软件里建立一张表,通过java语言来操作表里的内容。

(1)设计一个简单的学生信息管理的程序,教学管理人员能够使用该程序对学生基本信息、课程信息进行管理,包括数据的添加、修改删除和浏览;能够对学生选课进行管理,包括添加学生选课信息、录入成绩;能使用查询功能,快速查看到指定学生的选课信息;能够对学生选课情况进行简单的统计,包括所选的总的课程数、总学分数及平均成绩。

(2)在添加学生基本信息、课程基本信息相关数据时,学号和课程号不能重复;在添加学生选课信息时,要求该学生和课程必须是存在的,而且不能添加重复的选课信息。

(3)应用程序提供操作界面,可以方便用户进行功能选择,实现 信息的管理和查询,并可以清晰地显示相关信息

二、语言、数据结构、算法

java swing mySQL 

三、平台

eclipse mysql

四、源代码
AdminDo类

public class AdminDo {
    private Integer id;
    private String userName;
    private String pwd;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
}
 

AdminService类

public interface AdminService {
    boolean validataAdmin(AdminDo adminDo);

}
 

AdminServiceImpl类

 public boolean validataAdmin(AdminDo adminDo) {
        String sql = "select pwd from manager where user_name=?";
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet resultSet=null;
        try {
            conn = DBUtil.getConn();
            if (conn==null){
                return false;
            }
            ps = conn.prepareStatement(sql);
            ps.setString(1, adminDo.getUserName());
            resultSet = ps.executeQuery();
            while (resultSet.next()) {
                String pwd = resultSet.getString(1);
                if (adminDo.getPwd().equals(pwd)) {
                    return true;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            DBUtil.closeRs(resultSet);
            DBUtil.closeConn(conn);
            DBUtil.closePs(ps);
        }
        return false;
    }
}
App类

public class App {
    public static void main(String[] args) {
        new LoginView();
    }
}
 DBUtil类

import java.sql.*;

public class DBUtil {
    private static final String URL="jdbc:mysql://localhost:3306/student?serverTimezone=Asia/Shanghai";
    private static final String DRIVER="com.mysql.cj.jdbc.Driver";
    private static final String USER_NAME="root";
    private static final String PWD="010620";
    Connection conn = null;  // 连接
    static {
        try {
            //com.mysql.jdbc.Driver 静态代码块
            Class.forName(DRIVER);          
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    public static Connection getConn(){
        try {
            return DriverManager.getConnection(URL,USER_NAME,PWD);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
    //获取数据库连接
    public static void closeConn(Connection connection){
        if (connection!=null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    public static  void closePs(PreparedStatement ps){
        if (ps!=null){
            try {
                ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    public static  void closeRs(ResultSet rs){
        if (rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}
DimensionUtil类

import javax.swing.*;
import java.awt.*;

public class DimensionUtil {
    public static Rectangle getBounds(){
        Dimension soreenSize=Toolkit.getDefaultToolkit().getScreenSize();
        //保证主界面不会覆盖电脑任务栏
        Insets screenInsets =Toolkit.getDefaultToolkit().getScreenInsets(new Jframe().getGraphicsConfiguration());
        Rectangle rectangle= new Rectangle(screenInsets.left,screenInsets.top,soreenSize.width-screenInsets.left-screenInsets.right,
                soreenSize.height-screenInsets.top-screenInsets.bottom);
        return rectangle;
    }
}
JtableDemo类

import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.util.Vector;

public class JtableDemo extends Jframe {
    public JtableDemo(){
        super("测试jtable");

        Vector> data=new Vector<>();

        Vector rowVector1=new Vector<>();
        rowVector1.addElement("1");
        rowVector1.addElement("张三");
        rowVector1.addElement("计算机");
        rowVector1.addElement("物联网");
        rowVector1.addElement("一班");

        Vector rowVector2=new Vector<>();
        rowVector2.addElement("2");
        rowVector2.addElement("李四");
        rowVector2.addElement("计算机");
        rowVector2.addElement("物联网");
        rowVector2.addElement("一班");

        Vector rowVector3=new Vector<>();
        rowVector3.addElement("3");
        rowVector3.addElement("王五");
        rowVector3.addElement("计算机");
        rowVector3.addElement("物联网");
        rowVector3.addElement("一班");

        data.addElement(rowVector1);
        data.addElement(rowVector2);
        data.addElement(rowVector3);

        //tablemodel和jtable关联后,只需要更新model就能把数据的变化反应到jtable中
        StudentTableModel studentTableModel=StudentTableModel.assembleModel(data);
       
        //jtable和table关联
        JTable jTable=new JTable(studentTableModel);
        //设置表头
        JTableHeader tableHeader=jTable.getTableHeader();
        tableHeader.setFont(new Font(null,Font.BOLD,16));
        tableHeader.setForeground(Color.RED);
        //设置表格体
        jTable.setFont(new Font(null,Font.PLAIN,14));
        jTable.setForeground(Color.BLACK);
        jTable.setGridColor(Color.BLACK);
        jTable.setRowHeight(30);
        //设置多行选择
        jTable.getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

        //设置表格列的渲染方式
        Vector columns=StudentTableModel.getColumns();
        StudentCellRender render=new StudentCellRender();
        for (int i = 0; i < columns.size(); i++) {
            TableColumn column =jTable.getColumn(columns.get(i));
            column.setCellRenderer(render);
            if (i==0){
                column.setPreferredWidth(50);
                column.setMaxWidth(50);
                column.setResizable(false);
            }
        }

        Container contentPan =getContentPane();
        //jtable放在jpanel上的话,默认是不展示列头的,需要特殊设置,放在jScrollPane上面
        //默认是展示列头的
        JScrollPane jScrollPane=new JScrollPane(jTable);
        contentPan.add(jScrollPane);

        setSize(600,400);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setResizable(false);
        setVisible(true);
    }

    public static void main(String[] args) {
        new JtableDemo();
    }
}
class StudentCellRender extends DefaultTableCellRenderer{
    //在每一行的每一列显示之前都会调用,隔行换色,居中
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        if (row%2==0){
            setBackground(Color.LIGHT_GRAY);
        }else {
            setBackground(Color.WHITE);
        }
        setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
        return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    }
}

//自定义tablemodel
class StudentTableModel extends DefaultTableModel{

    static Vector columns=new Vector<>();
    static {
        columns.addElement("学号");
        columns.addElement("姓名");
        columns.addElement("学院");
        columns.addElement("专业");
        columns.addElement("班级");
    }
    private StudentTableModel(){
        super(null,columns);
    }
    private static StudentTableModel studentTableModel=new StudentTableModel();

    public static StudentTableModel assembleModel(Vector> data){
        studentTableModel.setDataVector(data,columns);
        return studentTableModel;
    }

    public static Vector getColumns() {
        return columns;
    }

    @Override
    public boolean isCellEditable(int row, int column) {
        return false;
    }
}

LoginHandler类

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.JButton;
import javax.swing.JOptionPane;

public class LoginHandler extends KeyAdapter implements ActionListener {

    private final LoginView loginView;
    public LoginHandler(LoginView loginView){
        this.loginView=loginView;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        JButton jButton=(JButton) e.getSource();
        String text=jButton.getText();
        if ("重置".equals(text)){
            loginView.getUserTxt().setText("");
            loginView.getPwdField().setText("");
        }else if ("登录".equals(text)){
            extracted();
        }
    }


    private void extracted() {
        String user= loginView.getUserTxt().getText();
        char[] chars=loginView.getPwdField().getPassword();
        if (user==null||"".equals(user.trim())||chars==null){
            JOptionPane.showMessageDialog(loginView,"用户名密码必填");
            return;
        }
        String pwd=new String(chars);
        System.out.println(user+":"+pwd);
        //查询db,当数据库里也有相应的用户名和密码时才能登陆

        AdminService adminService=new AdminServiceImpl();
        AdminDo adminDo=new AdminDo();
        adminDo.setUserName(user);
        adminDo.setPwd(pwd);
        boolean flag=adminService.validataAdmin(adminDo);
     //boolean flag=true;
        //跳转到主界面并销毁登录界面
        new MainView();
        loginView.dispose();
    }

    @Override
    public void keyPressed(KeyEvent e) {
        if (KeyEvent.VK_ENTER==e.getKeyCode()){
            extracted();
        }
    }
}
LoginView类

import javax.swing.*;
import java.awt.*;
import java.net.URL;

public class LoginView extends Jframe {
    JLabel nameLabel=new JLabel("学生信息管理系统",JLabel.CENTER);

    SpringLayout springLayout=new SpringLayout();
    JPanel centerPanel=new JPanel(springLayout);
    JLabel userNameLabel=new JLabel("用户名:");
    JTextField userTxt=new JTextField();
    JLabel pwdLabel=new JLabel("密码:");
    JPasswordField pwdField=new JPasswordField();
    JButton loginBtn=new JButton("登录");
    JButton resetBtn=new JButton("重置");

    SystemTray systemTray;
    TrayIcon trayIcon;
    LoginHandler loginHandler;

    public LoginView(){
        super("学生管理系统");

        loginHandler=new LoginHandler(this);
        Container contentPan=getContentPane();

        nameLabel.setFont(new Font("宋体",Font.PLAIN,30));
        nameLabel.setPreferredSize(new Dimension(0,80));

        Font centerFont=new Font("楷体",Font.PLAIN,20);
        userNameLabel.setFont(centerFont);
        userTxt.setPreferredSize(new Dimension(200,30));
        pwdLabel.setFont(centerFont);
        pwdField.setPreferredSize(new Dimension(200,30));
        loginBtn.setFont(centerFont);
        resetBtn.setFont(centerFont);
        //把组件加到面板
        centerPanel.add(userNameLabel);
        centerPanel.add(userTxt);
        centerPanel.add(pwdLabel);
        centerPanel.add(pwdField);
        loginBtn.addActionListener(loginHandler);
        //增加按键事件,回车可登录
        loginBtn.addKeyListener(loginHandler);
        centerPanel.add(loginBtn);
        resetBtn.addActionListener(loginHandler);
        centerPanel.add(resetBtn);

        //弹簧布局
        extracted();

        contentPan.add(nameLabel,BorderLayout.NORTH);
        contentPan.add(centerPanel,BorderLayout.CENTER);

     

        //设置loginBtn为默认按钮
        getRootPane().setDefaultButton(loginBtn);
        //图片
       
        //自定义图标
        setSize(600,400);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setResizable(false);
        setVisible(true);
    }

    private void extracted() {
        //布局userNameLabel
        Spring childwidth=Spring.sum(Spring.sum(Spring.width(userNameLabel),Spring.width(userTxt)),Spring.constant(20));
        int offsetX=childwidth.getValue()/2;
        springLayout.putConstraint(SpringLayout.WEST,userNameLabel,-offsetX,
                SpringLayout.HORIZONTAL_CENTER,centerPanel);
        springLayout.putConstraint(SpringLayout.NORTH,userNameLabel,20,SpringLayout.NORTH,centerPanel);
        //userTxt
        springLayout.putConstraint(SpringLayout.WEST,userTxt,20,SpringLayout.EAST,userNameLabel);
        springLayout.putConstraint(SpringLayout.NORTH,userTxt,0,SpringLayout.NORTH,userNameLabel);
        //pwdLabel
        springLayout.putConstraint(SpringLayout.EAST,pwdLabel,0,SpringLayout.EAST,userNameLabel);
        springLayout.putConstraint(SpringLayout.NORTH,pwdLabel,20,SpringLayout.SOUTH,userNameLabel);
        //pwdField
        springLayout.putConstraint(SpringLayout.WEST,pwdField,20,SpringLayout.EAST,pwdLabel);
        springLayout.putConstraint(SpringLayout.NORTH,pwdField,0,SpringLayout.NORTH,pwdLabel);
        //loginBtn
        springLayout.putConstraint(SpringLayout.WEST,loginBtn,50,SpringLayout.WEST,pwdLabel);
        springLayout.putConstraint(SpringLayout.NORTH,loginBtn,20,SpringLayout.SOUTH,pwdLabel);
        //resetBtn
        springLayout.putConstraint(SpringLayout.WEST,resetBtn,120,SpringLayout.WEST,loginBtn);
        springLayout.putConstraint(SpringLayout.NORTH,resetBtn,0,SpringLayout.NORTH,loginBtn);
    }

    public static void main(String[] args) {
        new LoginView();
    }

    public JTextField getUserTxt() {//文本框返回用户的信息
        return userTxt;
    }

    public JPasswordField getPwdField() {
        return pwdField;
    }

}

MainView类

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.Jframe;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

public class MainView extends Jframe {
    JPanel northPanel=new JPanel(new FlowLayout(FlowLayout.LEFT));
    JButton addBtn=new JButton("增加");
    JButton updateBtn=new JButton("修改");
    JButton delBtn=new JButton("删除");
    JTextField searchTxt=new JTextField(15);
    JButton searchBtn=new JButton("查询");

    JPanel southPanel=new JPanel(new FlowLayout(FlowLayout.RIGHT));
    JButton perBtn=new JButton("上一页");
    JButton nextBtn=new JButton("下一页");

    MainViewTable mainViewTable=new MainViewTable();
    private int pageNow=1;//当前是第几页
    private int pageSize=10;//一页显示多少条记录
    MainviewHandler mainviewHandler;
    public MainView (){
        super("学生信息管理系统主界面");
        Container contentPane = getContentPane();
        mainviewHandler =new MainviewHandler(this);

        //放置在北边的组件
        extracted(contentPane);
        //设置中间的jtable
        extracted2(contentPane);

        //放置在南边的组件
        extracted1(contentPane);


        //根据屏幕大小设置界面大小
        setBounds(DimensionUtil.getBounds());
        //设置窗体充满整个屏幕
        setExtendedState(Jframe.MAXIMIZED_BOTH);

        //自定义图标
        //setSize(600, 400);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setResizable(true);
        setVisible(true);
    }

    private void extracted2(Container contentPane){
        TableDTO dto =getTableDTo();

        //Vector> data=getVe();

        Vector rowVector1=new Vector<>();
        rowVector1.addElement("1");
        rowVector1.addElement("张三");
        rowVector1.addElement("计算机");
        rowVector1.addElement("物联网");
        rowVector1.addElement("一班");

        Vector rowVector2=new Vector<>();
        rowVector2.addElement("2");
        rowVector2.addElement("李四");
        rowVector2.addElement("计算机");
        rowVector2.addElement("物联网");
        rowVector2.addElement("一班");

        Vector rowVector3=new Vector<>();
        rowVector3.addElement("3");
        rowVector3.addElement("王五");
        rowVector3.addElement("计算机");
        rowVector3.addElement("物联网");
        rowVector3.addElement("一班");

        //data.addElement(rowVector1);
        //data.addElement(rowVector2);
        //data.addElement(rowVector3);

        MainViewTableModel mainViewTableModel=MainViewTableModel.assembleModel(dto.getData());
        mainViewTable.setModel(mainViewTableModel);
        mainViewTable.renderRule();
        JScrollPane jScrollPane=new JScrollPane(mainViewTable);
        contentPane.add(jScrollPane,BorderLayout.CENTER);
        showPreNext(dto.getTotalCount());
    }

    private TableDTO getTableDTo(){
        StudentService studentService=new StudentServiceImpl();
        StudentRequest request =new StudentRequest();
        request.setPageNow(pageNow);
        request.setPageSize(pageSize);
        request.setSearchKey(searchTxt.getText().trim());
        TableDTO tableDTO=studentService.retrieveStudents(request);
        return tableDTO;
    }
    private void extracted1(Container contentPane) {
        perBtn.addActionListener(mainviewHandler);
        nextBtn.addActionListener(mainviewHandler);
        southPanel.add(perBtn);
        southPanel.add(nextBtn);
        contentPane.add(southPanel,BorderLayout.SOUTH);
    }
    //设置上一页下一页是否可见
private void showPreNext(int totalCount){
        if(pageNow==1){
            perBtn.setVisible(false);
        }
        else {
            perBtn.setVisible(true);
        }
        int pageCount=0;//总共有多少页
        if(totalCount%pageSize==0){
            pageCount=totalCount/pageSize;
        }
        else{
            pageCount=totalCount/pageSize+1;
        }
        if(pageNow==pageCount){
            nextBtn.setVisible(false);
        }else {
            nextBtn.setVisible(true);
        }
}
    private void extracted(Container contentPane) {
        addBtn.addActionListener(mainviewHandler);
        updateBtn.addActionListener(mainviewHandler);
        searchBtn.addActionListener(mainviewHandler);
        delBtn.addActionListener(mainviewHandler);
        northPanel.add(addBtn);
        northPanel.add(updateBtn);
        northPanel.add(delBtn);
        northPanel.add(searchTxt);
        northPanel.add(searchBtn);
        contentPane.add(northPanel,BorderLayout.NORTH);
    }

    public static void main(String[] args) {
        new MainView();
    }
    public void setPageNow (int pageNow){
        this.pageNow=pageNow;
    }
    public int getPageNow(){
        return pageNow;
    }
    public void reloadTable(){
        TableDTO dto=getTableDTo();
        StudentService studentService=new StudentServiceImpl();
        StudentRequest request =new StudentRequest();
        request.setPageNow(pageNow);
        request.setPageSize(pageSize);
        request.setSearchKey(searchTxt.getText().trim());
        Vector> data=new Vector<>();
        MainViewTableModel.updatebleModel(dto.getData());
        mainViewTable.renderRule();//隔行变色
    }
}
MainViewCellRender类

import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import java.awt.*;

public class MainViewCellRender extends DefaultTableCellRenderer {
    //在每一行的每一列显示之前都会调用,隔行换色,居中
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        if (row%2==0){
            setBackground(Color.LIGHT_GRAY);
        }else {
            setBackground(Color.WHITE);
        }
        setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
        return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    }
}

MainviewHandler类

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class MainviewHandler  implements ActionListener {

    private  MainView mainView ;
    public MainviewHandler(MainView mainView){
        this.mainView=mainView;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        JButton jButton=(JButton) e.getSource();
        String text=jButton.getText();
        if ("增加".equals(text)){

        }else if ("修改".equals(text)){

        }else if ("删除".equals(text)){

        }else if ("查询".equals(text)){
            mainView.setPageNow(1);
            mainView.reloadTable();


        }else if ("上一页".equals(text)){
            mainView.setPageNow(mainView.getPageNow()-1);
            mainView.reloadTable();

        }else if ("下一页".equals(text)){
            mainView.setPageNow(mainView.getPageNow()+1);
            mainView.reloadTable();

        }
    }

}
MainViewTable类

import javax.swing.*;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumn;
import java.awt.*;
import java.util.Vector;

public class MainViewTable extends JTable {

    public MainViewTable(){
        JTableHeader tableHeader=getTableHeader();
        tableHeader.setFont(new Font(null,Font.BOLD,16));
        tableHeader.setForeground(Color.RED);
        //设置表格体
        setFont(new Font(null,Font.PLAIN,14));
        setForeground(Color.BLACK);
        setGridColor(Color.BLACK);
        setRowHeight(30);
        //设置多行选择
        getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
    }
   
    public void renderRule(){
        //设置表格列的渲染方式
        Vector columns= MainViewTableModel.getColumns();
        MainViewCellRender render=new MainViewCellRender();
        for (int i = 0; i < columns.size(); i++) {
            TableColumn column =getColumn(columns.get(i));
            column.setCellRenderer(render);
            if (i==0){
                column.setPreferredWidth(50);
                column.setMaxWidth(50);
                column.setResizable(false);
            }
        }
    }
}
MainViewTableModel类

import javax.swing.table.DefaultTableModel;
import java.util.Vector;

public class MainViewTableModel extends DefaultTableModel {

    static Vector columns=new Vector<>();
    static {
        columns.addElement("学号");
        columns.addElement("姓名");
        columns.addElement("学院");
        columns.addElement("专业");
        columns.addElement("班级");
    }
    private MainViewTableModel(){
        super(null,columns);
    }
    private static MainViewTableModel mainViewTableModel=new MainViewTableModel();

    public static MainViewTableModel assembleModel(Vector> data){
        mainViewTableModel.setDataVector(data,columns);
        return mainViewTableModel;
    }
    public static void updatebleModel(Vector> data){
        mainViewTableModel.setDataVector(data,columns);

    }
    public static Vector getColumns() {
        return columns;
    }

    @Override
    public boolean isCellEditable(int row, int column) {
        return false;
    }
}

StudentRequest类

public class StudentRequest {
    private int pageNow;
    private int pageSize;
    private int start;
    //查询词
    private String searchKey;

    public int getPageNow() {
        return pageNow;
    }

    public void setPageNow(int pageNow) {
        this.pageNow = pageNow;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getStart() {
        return (pageNow-1)*pageSize;
    }

    public void setStart(int start) {
        this.start = start;
    }

    public String getSearchKey() {
        return searchKey;
    }

    public void setSearchKey(String searchKey) {
        this.searchKey = searchKey;
    }
}
StudentService类


public interface StudentService {
    TableDTO  retrieveStudents(StudentRequest studentRequest);
}
StudentServiceImpl类

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

public class StudentServiceImpl implements StudentService {
    @Override
    public TableDTO retrieveStudents(StudentRequest request) {
        StringBuilder sql=new StringBuilder();
        sql.append("select*from student ");
        if(request.getSearchKey()!=null&&!"".equals(request.getSearchKey().trim())) {
            sql.append("where name like '% ").append(request.getSearchKey().trim()).append("%'");
        }
        sql.append("order by id desc limit").append(request.getStart()).append(",").append(request.getPageSize());
        Connection conn=null;
        PreparedStatement ps=null;
        ResultSet rs=null;
        TableDTO returnDTO=new TableDTO();
        try {
            conn=DBUtil.getConn();
            assert conn != null;
            ps=conn.prepareStatement(sql.toString());
            rs=ps.executeQuery();
            //查询记录
            returnDTO.setData(extracted(rs));

            sql.setLength(0);
            sql.append("select count(*) from student");
            if(request.getSearchKey()!=null&&!"".equals(request.getSearchKey().trim())) {
                sql.append("where name like '% ").append(request.getSearchKey().trim()).append("%'");
            }
            ps=conn.prepareStatement(sql.toString());
            rs= ps.executeQuery();
            while (rs.next()) {
                int count=rs.getInt(1);
                returnDTO.setTotalCount(count);
            }
            return returnDTO;
        }catch(Exception e){

        }finally {
            DBUtil.closeRs(rs);
            DBUtil.closePs(ps);
            DBUtil.closeConn(conn);
        }
        return null;
    }

    private Vector> extracted(ResultSet rs) throws SQLException {
        Vector> data=new Vector<>();
        while (rs.next()){
            //处理查出的每一条记录
            Vector oneRecord=new Vector<>();
            int id= rs.getInt("id");
            oneRecord.addElement(id);
        }
        return data;
    }
}

TableDTO类

import java.util.Vector;

public class TableDTO {
    private Vector> data;
    private int totalCount;

    public Vector> getData() {
        return data;
    }

    public void setData(Vector> data) {
        this.data = data;
    }

    public int getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(int totalCount) {
        this.totalCount = totalCount;
    }
}
 

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号