【菜鸟学编程】第一个小程序,学生管理系统。欢迎跟我一样的新手与我交流,共同学习,共同进步。

Mallen_2016 2016-08-24 05:11:53
菜鸟一枚,终于做出了第一个java小程序:学生管理系统。欢迎跟我一样的新手与我交流,共同学习,共同进步。
1、主界面 
package com.meng;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;
import javax.swing.*;

import java.awt.event.*;

public class StuMan extends JFrame implements ActionListener {

/**
* 1、与mysql数据库交互实现信息展示功能。 2、增加增删改查按钮。3、实现监听(查询功能)。
*/

Vector rowData, columnNames, row;

JScrollPane jsp = null;

JTable jt = null;

JPanel jp1, jp2;
JLabel jl1;
JTextField jtf1;
JButton jb1, jb2, jb3, jb4;

Model sm = null;

// 定义连接数据库所需元素
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
// String url = “jdbc:mysql://127.0.0.1:3306/stu”;
// String username = “root”;
// String password = “”;

public static void main(String[] args) {
// TODO 自动生成的方法存根

StuMan stu5 = new StuMan();
}

public StuMan() {

columnNames = new Vector();

// 设置列名
columnNames.add("学号");
columnNames.add("姓名");
columnNames.add("年龄");

// 初始化按钮,设置按钮名称
jb1 = new JButton("查询");
jb2 = new JButton("添加");
jb3 = new JButton("修改");
jb4 = new JButton("删除");

// 初始化标签
jl1 = new JLabel("请输入要查询的姓名:");

// 初始化文本域
jtf1 = new JTextField(5);

// 讲jb1,jtf1,jb1放入jp1中,放入之前要newjp
jp1 = new JPanel();
jp1.add(jl1);
jp1.add(jtf1);
jp1.add(jb1);

// 讲jb2,jb3,jb4放入jp2中,放入之前要newjp
jp2 = new JPanel();
jp2.add(jb2);
jp2.add(jb3);
jp2.add(jb4);

// 初始化columnsName。
// columnsName = new Vector();
// columnsName.add(“学号”);
// columnsName.add(“姓名”);
// columnsName.add(“年龄”);

rowData = new Vector();
SqlHelper sh = new SqlHelper();

ResultSet rs=sh.query("select * from stuInfo", null);

try {
while(rs.next()){

row = new Vector();
row.add(rs.getInt(1));
row.add(rs.getString(2));
row.add(rs.getInt(3));

rowData.add(row);
}
} catch (SQLException e) {
// TODO 自动生成的 catch块
e.printStackTrace();
}

// //初始化JTable
jt = new JTable(rowData, columnNames);
// 初始化JSrollPane。
jsp = new JScrollPane(jt);

// 讲JScrollPane放入JFrame中
this.add(jsp);

// 讲jp1,jp2放入JFrame中
this.add(jp1, BorderLayout.NORTH);
this.add(jp2, BorderLayout.SOUTH);

// 添加监听事件
// jb1.setActionCommand("查询");
jb1.addActionListener(this);
jb2.setActionCommand("添加");
jb2.addActionListener(this);
jb3.setActionCommand("修改");
jb3.addActionListener(this);
jb4.setActionCommand("删除");
jb4.addActionListener(this);

this.setTitle("学生管理系统V1.0");
this.setSize(300, 400);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public void updateSModel() {
sm = new Model();
sm.queryStu("select * from stuInfo", null);
//jt.setModel(sm);
}

@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
// if (e.getActionCommand().equals("查询")) {
// System.out.println("查询按钮被按下!");
//
// } 或者下面一种方式:
if (e.getSource() == jb1) {
System.out.println("查询按钮被按下!");



// 执行查询操作
String sql = "";
// 1、获取文本框中的姓名值
String s = jtf1.getText().trim();
String[] name = {s};
//
//
// 2、判断匹配
if (s.length() != 0) {
sql = “select * from stuInfo where stuName=?”;
//System.out.println(“Test”);

} else {
sql = "select * from stuInfo";
name=null;
}
// sm = new Stu5Model();
// //sm.queryStu(sql, name);
// sm.queryStu(“select * from stuInfo”, name);

System.out.print("aa");
//jt.setModel(sm);
SqlHelper sh1 = new SqlHelper();
rs = sh1.query(sql, name);
try {
while(rs.next()){

row = new Vector();
row.add(rs.getInt(1));
row.add(rs.getString(2));
row.add(rs.getInt(3));

rowData.add(row);
}


} catch (SQLException ee) {
// TODO 自动生成的 catch块
ee.printStackTrace();
}
jt=new JTable(rowData,columnNames);
jsp.add(jt);
this.add(jsp);
jtf1.setText("");

}
if (e.getSource()==jb2) {
System.out.println("添加按钮被按下!");
boolean flag = false;
//确定是否添加新的学生
int i = JOptionPane.showConfirmDialog(this, "是否添加学生?","",JOptionPane.YES_NO_OPTION);

if(i!=JOptionPane.NO_OPTION){
flag=true;
}
while(flag){
StuAdd sa = new StuAdd(this, "添加新学生", true);

//更新数据模型
this.updateSModel();


}
}
if (e.getActionCommand().equals("修改")) {
System.out.println("修改按钮被按下!");

if(jt.getSelectedRow()==-1){
JOptionPane.showMessageDialog(this, "请先选择一行数据");
return;
}else {
int i = jt.getSelectedRow();
sm=new Model();
sm.queryStu("select * from stuinfo", null);
StuUpdate su = new StuUpdate(this, "修改学生信息", true, sm, i);

}

}
if (e.getActionCommand().equals("删除")) {
System.out.println("删除按钮被按下!");
if(jt.getSelectedRow()==-1){
JOptionPane.showMessageDialog(this, "请先选择一行数据");
return;
} else {
int selectId = jt.getSelectedRow();
String[] stuId = {jt.getValueAt(selectId, 0).toString()};
String sql = "delete from stuInfo where stuNo=?";

sm=new Model();
sm.updateStu(sql, stuId);

this.updateSModel();

}
}
}
}
2、数据库操作类 SqlHelper
/*
* 数据库操作模型
*/
package com.meng;

import java.sql.*;

public class SqlHelper {

public static final String DRIVER = "com.mysql.jdbc.Driver";//Driver,D必须大写!
public static final String URL = "jdbc:mysql://127.0.0.1:3306/stu";
public static final String USERNAME = "root";
public static final String PASSWORD = "";

// 定义连接数据库的元素(组件)
Connection conn;
PreparedStatement ps;
ResultSet rs;

// 构造函数
public SqlHelper() {

// 连接数据库
try {
Class.forName(DRIVER);
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}

}

// 对数据库进行增删改操作。
public boolean upSql(String sql, String[] args) {
boolean b = true;

try {
ps = conn.prepareStatement(sql);
for (int i = 0; i < args.length; i++) {
ps.setString(i + 1, args[i]);

}
ps.executeUpdate();
} catch (SQLException e) {
// TODO 自动生成的 catch块
e.printStackTrace();
}

return b;
}

// 对数据库进行查询操作。
public ResultSet query(String sql, String[] args) {

try {
ps = conn.prepareStatement(sql);
if (args == null) {
rs = ps.executeQuery();

} else {
for (int i = 0; i < args.length; i++) {

ps.setString(i + 1, args[i]);
rs = ps.executeQuery();

}
}
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}

return rs;
}

// 关闭资源

public void close() {

try {
if (rs != null)
rs.close();
if (ps != null)
ps.close();
if (conn != null)
conn.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}

}
}


...全文
507 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mallen_2016 2016-08-25
  • 打赏
  • 举报
回复
引用 5 楼 tangwwip 的回复:
[quote=引用 3 楼 qq_32607521 的回复:] [quote=引用 2 楼 tangwwip 的回复:] 记得当年我在学校做这个系统的时候把所以代码都写在一个类里面,然后答辩的时候老师说让他看下项目架构 接着就
这是我写出来的第一个小项目,写完之后很欣慰,希望我能坚持下来。[/quote] 恩恩,加油吧 少年[/quote]谢谢,我会的
Mallen_2016 2016-08-25
  • 打赏
  • 举报
回复
引用 4 楼 zycxnanwang 的回复:
楼主,加油!
谢谢,我会的
tangwwip 2016-08-25
  • 打赏
  • 举报
回复
引用 3 楼 qq_32607521 的回复:
[quote=引用 2 楼 tangwwip 的回复:] 记得当年我在学校做这个系统的时候把所以代码都写在一个类里面,然后答辩的时候老师说让他看下项目架构 接着就
这是我写出来的第一个小项目,写完之后很欣慰,希望我能坚持下来。[/quote] 恩恩,加油吧 少年
zycxnanwang 2016-08-24
  • 打赏
  • 举报
回复
楼主,加油!
Mallen_2016 2016-08-24
  • 打赏
  • 举报
回复
引用 2 楼 tangwwip 的回复:
记得当年我在学校做这个系统的时候把所以代码都写在一个类里面,然后答辩的时候老师说让他看下项目架构 接着就
这是我写出来的第一个小项目,写完之后很欣慰,希望我能坚持下来。
tangwwip 2016-08-24
  • 打赏
  • 举报
回复
记得当年我在学校做这个系统的时候把所以代码都写在一个类里面,然后答辩的时候老师说让他看下项目架构 接着就
Mallen_2016 2016-08-24
  • 打赏
  • 举报
回复
3、模式model类 
package com.meng;

import java.util.Vector; 
import java.sql.*;

import javax.swing.event.TableModelListener; 
import javax.swing.table.TableModel;

public class Model implements TableModel {

/**
 * @Model
 */

Vector rowData, columnsName, row;
SqlHelper sh;
ResultSet rs;

/*
 * 查询数据
 */
public void queryStu(String sql, String[] args) {
    // 初始化columnsName。
// columnsName = new Vector(); 
// columnsName.add(“学号”); 
// columnsName.add(“姓名”); 
// columnsName.add(“年龄”);

    rowData = new Vector();
    sh = new SqlHelper();

    rs=sh.query(sql, args);

    try {
        while(rs.next()){

            row = new Vector();
            row.add(rs.getInt(1));
            row.add(rs.getString(2));
            row.add(rs.getInt(3));

            rowData.add(row);
        }
    } catch (SQLException e) {
        // TODO 自动生成的 catch块
        e.printStackTrace();
    } 
    sh.close();

}

/*
 * 增删改操作
 */
public boolean updateStu(String sql,String[] args){
    boolean b = false;

    sh=new SqlHelper();
    b=sh.upSql(sql, args);

    return b;
}

//得到共有多少列
// public int getColumnCount(){ 
// return this.columnsName.size(); 
// }

//得到共有多少行
public int getRowCount(){
    return this.rowData.size();
}

//得到某行某列的值
public Object getValueAt(int rowIndex,int columnIndex){
    //return this.rowData.get(rowIndex);
    return ((Vector) this.rowData.get(rowIndex)).get(columnIndex);

}
public String getColumnName(int index) {
    // TODO Auto-generated method stub
    return this.columnsName.get(index).toString();
}

@Override
public void addTableModelListener(TableModelListener arg0) {
    // TODO 自动生成的方法存根

}

@Override
public Class<?> getColumnClass(int arg0) {
    // TODO 自动生成的方法存根
    return null;
}

@Override
public boolean isCellEditable(int arg0, int arg1) {
    // TODO 自动生成的方法存根
    return false;
}

@Override
public void removeTableModelListener(TableModelListener arg0) {
    // TODO 自动生成的方法存根

}

@Override
public void setValueAt(Object arg0, int arg1, int arg2) {
    // TODO 自动生成的方法存根

}

@Override
public int getColumnCount() {
    // TODO 自动生成的方法存根
    return this.columnsName.size();
}
} 
4、添加功能 StuAdd 
package com.meng;

import java.awt.BorderLayout; 
import java.awt.GridLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent;

import javax.swing.JButton; 
import javax.swing.JDialog; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField;

public class StuAdd extends JDialog implements ActionListener {

JPanel jp1, jp2, jp3;
JLabel jlNo, jlName, jlAge;
JTextField jtfNo, jtfName, jtfAge;
JButton jbsave, jbcancel;

Model sm = null;
// public static void main(String[] args) { 
// 
// JFrame owner = null; 
// Stu5Add sm5 = new Stu5Add(owner, “hehe”, true); 
// 
// }

// 构造函数
public StuAdd(JFrame owner, String title, boolean model) {

    super(owner, "title", true);

    // 创建组件
    jp1 = new JPanel(new GridLayout(5, 1));
    jp2 = new JPanel(new GridLayout(5, 1));
    jp3 = new JPanel(new GridLayout(5, 1));

    jlNo = new JLabel("学号", JLabel.CENTER);
    jlName = new JLabel("姓名", JLabel.CENTER);
    jlAge = new JLabel("年龄", JLabel.CENTER);

    jtfNo = new JTextField(15);
    jtfName = new JTextField(15);
    jtfAge = new JTextField(15);

    jbsave = new JButton("保存");
    jbcancel = new JButton("取消");

    jp1.add(jlNo, BorderLayout.NORTH);
    jp1.add(jlName, BorderLayout.CENTER);
    jp1.add(jlAge, BorderLayout.SOUTH);

    jp2.add(jtfNo);
    jp2.add(jtfName);
    jp2.add(jtfAge);

    jp3.add(jbsave, BorderLayout.WEST);
    jp3.add(jbcancel, BorderLayout.EAST);

    this.add(jp1, BorderLayout.WEST);
    this.add(jp2, BorderLayout.EAST);
    this.add(jp3, BorderLayout.SOUTH);

    jbcancel.addActionListener(this);
    jbsave.addActionListener(this);

    this.setSize(400, 300);
    this.setLocation(100, 300);
    this.setVisible(true);
    // this.dispose();


}

@Override
public void actionPerformed(ActionEvent e) {
    // TODO 自动生成的方法存根
    if (e.getSource() == jbsave) {
        String[] values = { jtfNo.getText().trim(),
                jtfName.getText().trim(), jtfAge.getText().trim() };
        String sql = "insert into stuinfo values(?,?,?)";
        sm = new Model();
        System.out.println("保存按钮被按下!");
        System.out.println(values[1]);

        sm.updateStu("insert into stuinfo values(?,?,?)", values);
        this.dispose();
    }
    if (e.getSource() == jbcancel) {
        System.out.print("取消按钮被按下!");
        this.dispose();
        //this.setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);
// this.addWindowListener(new WindowAdapter() { 
// public void windowClosing(WindowEvent e) { 
// dispose(); 
// System.out.print(“qqq!”); 
// } 
// }); 
} 
} 
} 
5、更新类(删除、修改) update 
package com.meng;

import java.awt.BorderLayout; 
import java.awt.GridLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent;

import javax.swing.JButton; 
import javax.swing.JDialog; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField;

public class StuUpdate extends JDialog implements ActionListener {

JPanel jp1, jp2, jp3;
JLabel jlNo, jlName, jlAge;
JTextField jtfNo, jtfName, jtfAge;
JButton jbsave, jbcancel;

Model sm = null;

// public static void main(String[] args) {
//
// JFrame owner = null;
// Stu5Up sm5 = new Stu5Up(owner, "hehe",sm,1);
//
// }

// 构造函数
public StuUpdate(JFrame owner, String title, boolean model, Model sm,
        int idValue) {

    super(owner, title, model);

    // 创建组件
    jp1 = new JPanel(new GridLayout(5, 1));
    jp2 = new JPanel(new GridLayout(5, 1));
    jp3 = new JPanel(new GridLayout(5, 1));

    jlNo = new JLabel("学号", JLabel.CENTER);
    jlName = new JLabel("姓名", JLabel.CENTER);
    jlAge = new JLabel("年龄", JLabel.CENTER);

    jtfNo = new JTextField(15);
    jtfNo.setText(sm.getValueAt(idValue, 0).toString());
    jtfNo.setEditable(false);

    jtfName = new JTextField(15);
    jtfName.setText(sm.getValueAt(idValue, 1).toString());
    // jtfName.setEditable(false);

    jtfAge = new JTextField(15);
    jtfAge.setText(sm.getValueAt(idValue, 2).toString());
    // jtfAge.setEditable(false);

    jbsave = new JButton("保存");
    jbcancel = new JButton("取消");

    jp1.add(jlNo, BorderLayout.NORTH);
    jp1.add(jlName, BorderLayout.CENTER);
    jp1.add(jlAge, BorderLayout.SOUTH);

    jp2.add(jtfNo);
    jp2.add(jtfName);
    jp2.add(jtfAge);

    jp3.add(jbsave, BorderLayout.WEST);
    jp3.add(jbcancel, BorderLayout.EAST);

    this.add(jp1, BorderLayout.WEST);
    this.add(jp2, BorderLayout.EAST);
    this.add(jp3, BorderLayout.SOUTH);

    jbcancel.addActionListener(this);
    jbsave.addActionListener(this);

    this.setSize(400, 300);
    this.setLocation(100, 300);
    this.setVisible(true);
    // this.dispose();

}

@Override
public void actionPerformed(ActionEvent e) {
    // TODO 自动生成的方法存根
    if (e.getSource() == jbsave) {
        String[] values = { jtfName.getText().trim(),
                jtfAge.getText().trim(), jtfNo.getText().trim() };
        String sql = "update stuinfo set stuName=?,stuAge=? where stuNo=?";
        sm = new Model();
        System.out.println("保存按钮被按下!");
        System.out.println(values[1]);

        sm.updateStu(sql, values);
        this.dispose();
    }
    if (e.getSource() == jbcancel) {
        System.out.print("取消按钮被按下!");
        this.dispose();

    }
}
}

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧