韩顺平学生管理系统源代码

发布时间:2019-10-31 22:13:12   来源:文档文库   
字号:

(一)主界面的设计

创建一个类StuManage,该类主要提供给用户一个界面,可以使用户很好的操作学生信息管理系统。该主界面主要实现了界面的美化,为用户提供各种按钮,实现各种监听事件,具体步骤如下代码。

package com.test2;

import javax.swing.*;

import java.util.*;

import java.awt.*;

import java.awt.event.*;

public class Test3 extends JFrame implements ActionListener {

//定义一些控件

JPane1 jp1,jp2;

JLabel jl1

JButton jb1,jb2,jb3,jb4;

JTable jt;

JScrollpane jsp;

JTextField jtf;

StuModel sm;

ublic static void main(String[] args){

Text3 text=new Test3();}

public Test3 (){

jp1=new JPane1();

jtf=new JTextField(10);

jb1=new JButton("查询");

jb1.addactionListener(this);

jl1=new JLabel("请输入名字");

//把各个空间加入到jpl

jp1.add(jl1);

jp1.add(jtf);

jp1.add(jbl);

jp2=new JPane1 ();

jp2=new JButton("添加");

jb2.addActionListener( this);

jp3=new JButton("修改");

jb3.addActionListener( this); jp4=new JButton("删除");

jb2.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);

//初始化JTable

jt=new JTable(sm)

//初始化jsp JScrollPane

jsp=new JScrollpane(jt);

//jsp放入到jframe

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 * fromstu where stuName=?";

String paras[]={name};

//构建新的数据模型类,并更新

StuModel 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(arg.getSource()==jb3){

//用户希望修改

int rowNum=this.jt.getSelectedRow();

if (rowNum==-1) {

//提示

JOptionPane.showMessageDialog(this,"请选择一行")

return }

//显示修改对话框

new StuUpdDialog(this,"修改学生",true,sm,rowNum);

// 构建新的数据模型,并更新

sm=new StuModel();

String [] paras2={"1"};

sm.queryStu("select * from stu where 1=?",paras2);

// 更新JTable

jt.setModel(sm) }

else if(arg.getSource()==jb4){

//说明用户希望删除记录1、得到该学生的id

//getSelectedRow会返回用户中的行如果该用户一行都没有,就返回-1

int rowNum=this.jt.getSelectedRow();

if (rowNum==-1){

//提示

JOptionPane.showMessageDialog(this,"请选择一行")

return }

//得到学生编号

String stuId=(String)sm.getValueAt(rowNum,0);

//创建一个aql语句

String sql="delete from stu where stuid=?";

String[]paras={stuId};

StuModel temp=new StuModel();

temp.updStu(aql,paras);

//更新数据模型

// 构建新的数据模型,并更新

sm=new StuModel();

String [] paras2={"1"};

sm.queryStu("select * from stu where 1=?",paras2);

// 更新JTable

jt.setModel(sm);}}

() 数据模型设计

创建一个SqlHelper类,数据模型是把所有对表的操作都封装到里面,有很高的代码使用性,比如说具体代码如下。

/ / 这是一个对数据库进行操作的类(SqlHelper

package com.test2;

//@author Administrator

public class SqlHelper {

// 定义操作数据库需要的东西

PreparedStatement ps=null;

Connection ct=null;

ResultSet rs=null;

String url="jdbc:microsoft:sqlserver://127.0.0.1;1433;databaseName=spdb1";

String user="sa";

String passwd="";

String dirver="com.microsoft.jdbc.sqlserver.SQLServerDriver";

//关闭数据库资源

public void close ()

{

// 关闭

try {

if(rs!=null) rs.close();

if(ps!=null) rs.close();

if(ct!=null) rs.close();

}catch (Exception e) {

e.printStackTrace();

}

}

public ResultSet queryExecute(string sql)

{

try {

// 1加载驱动

Class.forName(dirver);

//2得到连接

ct=DriverManager.getConnection(url,user,passwd);

//3创建ps

ps=ct.prepareStatement(sql);

rs=ps.executeQuery();

}catch (Exception e){

e.printStackTrace();

}finally{

//关闭资源

}

return rs;

//查询数据库操作

public ResultSet queryExectue(String aql,String []paras)

{

try {

// 1加载驱动

Class.forName(dirver);

//2得到连接

ct=DriverManager.getConnection(url,user,passwd);

//3创建ps

ps=ct.prepareStatement(sql);

//ps的问号赋值

for (int i=0;i

{

ps.setString(i+1,paras[i]);

}

rs=ps.executeQuery();

}catch (Exception e){

e.printStackTrace();

}finally{

//关闭资源

}return rs;}

//把增删改合在一起

public boolean updExecute(String sql,String []paras)

{

boolean b=true;

try {

//1加载驱动

Class.forName(dirver);

//2得到连接

ct=DriverManager.getConnection(url,user,passwd);

//3创建ps

ps=ct.prepareStatement(sql);

//ps的问号赋值

for (int i=0;i

{ ps.setString(i+1,paras[i]); }

//4执行操作

if(ps.executeUpdate()!=1)

{ b=false; }

} catch (Exception e) {

b=false;

e.printStackTrace();

} finally { this.close() ; }

return b;}}

(三)建立学生表模型

创建一个类Stumodel,该类主要是建立学生表的模型,使其界面清晰。上下都是控件,中间是学生表。

代码如下:

//这是我的一个stu表的模型

package com.test1;

import java.util.Vector;

import javax.swing.table.*;;

public class StuModel extends AbstractTableModel{

// rowData用来存放行数据columnNames存放列名

Vector rowData,columnNames;

//添加学生(增,删,改)

public boollean updStu(String sql,String []paras){

//创建SqlHelper

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.queryExectue(sql,paras);

while (rs.next()){

// rowdata 可以存放多行

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

} finally {

SqlHelper.close();}

//得到共有多少列

public int getRowCount() {

// TODO Auto-generated method stub

return this.columnNames.size();}

//得到共有多少行

public int getColumnCount() {

// TODO Auto-generated method stub

return this.rowData.size();}

//得到某行名列的数据

public Object getValueAt(int row, int column) {

// TODO Auto-generated method stub

return ((Vector)this.rowData.get(row)).get(column); }

@Override

public String getColumnName(int arg0) {

// TODO Auto-generated method stub

return (string)this.columnNames.get(arg0);}}

(四)学生表信息添加

创建类StuAddDialog,代码如下:

package com.test2;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

import javax.swing.JDialog;

public class StuAddDialog extends JDialog implements ActionListener{

//定义我需要的swing组件

JLable jl1,jl2,jl3,jl4,jl5jl6; JButton jb1,jb2;

JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6; JPanel jp1,jp2,jp3;

//owne 它的父窗口

//rtitle窗口名

//model指定是模式窗口,还是非模式的窗口

public StuAddDialog(frame owner,string title,boolean model){

super(owner,title,model);

jl1=new JLable("学号"); jl2=new JLable("姓名");

jl3=new JLable("性别"); jl4=new JLable("年龄");

jl5=new JLable("籍贯"); jl6=new JLable("系别");

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

public void actionPerformed(ActionEvent e){

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

(五)学生表的修改

代码如下:

//修改学生表

package com.test2;

import java.awt.event.ActionEvent;

import java.awt.event. ActionListener;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

import javax.swing.JDialog;

public class StuUpdDialog extends JDialog implements ActionListener{

//定义我需要的swing组件

JLable jl1,jl2,jl3,jl4,jl5jl6;

JButton jb1,jb2;

JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6;

JPanel jp1,jp2,jp3;

//owne 它的父窗口

//rtitle窗口名

//model指定是模式窗口,还是非模式的窗口

public StuUpdDialog(frame owner,string title,boolean modelStuModel smint rowNums){

super(owner,title,model);

jl1=new JLable("学号"); jl2=new JLable("姓名");

jl3=new JLable("性别"); jl4=new JLable("年龄");

jl5=new JLable("籍贯"); jl6=new JLable("系别");

jtf1=new JTextField();

//初始化数据

jtf1.setText((String)sm.getValueAt( rowNums,0) );

//jtf1不能修改

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

public void actionPerformed(ActionEvent e){

if(e.getSource()==jb1){

//做一个sql

//与编译语句对象

String str ="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(str,paras);

this.dispose();

}

}

}

本文来源:https://www.2haoxitong.net/k/doc/f30eea6d27d3240c8447ef81.html

《韩顺平学生管理系统源代码.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式