package 功能实现;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import 功能实现.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
public class JTable_Test1 extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
//定义组件
JPanel jp1,jp2;
JLabel jl1;
JButton jb1,jb2,jb3,jb4,jb5,jb6;
JTable jt;
JScrollPane jsp;
JTextField jtf;
StuModel sm;
//定义操作数据库所需要的组件
PreparedStatement ps =null ;
Connection ct= null;
ResultSet rs=null;
//构造函数
public JTable_Test1(){
jp1=new JPanel();
jtf=new JTextField(10);
jb1=new JButton("查询");
jb1.addActionListener(this);
jl1=new JLabel("请输入学号");
//把各个空间加入列
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);
jb5=new JButton("刷新");
jb5.addActionListener(this);
jb6=new JButton("退出");
jb6.addActionListener(this);
//把各个按钮加入到jp2中
jp2.add(jb2);
jp2.add(jb3);
jp2.add(jb4);
jp2.add(jb5);
jp2.add(jb6);
//创建一个数据模型对象
sm=new StuModel();
//初始化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(500, 400);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
// 查询学生信息
if(e.getSource()==jb1){
String sno=this.jtf.getText();
// 如果查询为空,则查询全部学生信息
if(sno==""||sno.equals(null)){
JOptionPane.showMessageDialog(this, "查询条件不能为空","提示",JOptionPane.INFORMATION_MESSAGE);
return;
}
else{
//写一个SQL语句
String sql="select * from s where sno='"+sno+"'";
//构建新的数据模型类,并更新
sm=new StuModel(sql);
//更新JTable
jt.setModel(sm);
}
}
// 添加学生信息
if(e.getSource()==jb2){
PreparedStatement ps=null;
Connection ct=null;
ResultSet rs=null;
String sql = "select * from ss";
String[] hang = new String[50];
//加载驱动,进行数据库连接
try {
//加载驱动,进行数据库连接
Class.forName("com.mysql.cj.jdbc.Driver");
String url ="jdbc:mysql://localhost:3306/jxgl?characterEncoding=utf8&useSSL=true";
ct = (Connection) DriverManager.getConnection(url, "root", "123456");
ps=(PreparedStatement) ct.prepareStatement(sql);
rs=ps.executeQuery();
int k = 0;
// 添加信息进入容器中
while(rs.next()){
hang[k] = rs.getString(1);
k += 1;
hang[k] = rs.getString(2);
k += 1;
}
}
catch (Exception e1) {
e1.printStackTrace();
}finally{
try {
if(rs!=null){
rs.close();
}
if(ps!=null){
ps.close();
}
if(ct!=null){
ct.close();
}
} catch (SQLException e1) {
e1.printStackTrace();
}
}
StuAddDialog sa =new StuAddDialog(this, "添加学生", true, hang);
//重新再获得新的数据模型
//构建新的数据模型类,并更新
sm=new StuModel();
//更新JTable
jt.setModel(sm);
}
// 选中进行修改信息
if(e.getSource()==jb3){
int rowNum=this.jt.getSelectedRow();
if(rowNum==-1){
//提示
JOptionPane.showMessageDialog(this, "请选择一行", "提示", JOptionPane.INFORMATION_MESSAGE);
return;
}
StuUpdDialog sa =new StuUpdDialog(this, "修改信息", true, sm, rowNum);
sm=new StuModel();
jt.setModel(sm);
}
// 选中进行删除信息
if(e.getSource()==jb4){
int rowNum = this.jt.getSelectedRow();
if(rowNum==-1){
//提示
JOptionPane.showMessageDialog(this, "请选择一行", "提示", JOptionPane.INFORMATION_MESSAGE);
return;
}
String sno = (String) sm.getValueAt(rowNum, 0);
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url ="jdbc:mysql://localhost:3306/jxgl?characterEncoding=utf8&useSSL=true";
ct = (Connection) DriverManager.getConnection(url, "root","123456");
String sql="delete from s where sno=? ";
ps =(PreparedStatement) ct.prepareStatement(sql);
ps.setString(1, sno);
int i =ps.executeUpdate();
if(i == 1)
{
JOptionPane.showMessageDialog(null, "删除成功!");
}
else
{
JOptionPane.showMessageDialog(null, "删除失败!");
}
}
catch (Exception e2) {
e2.printStackTrace();
}
finally{
try {
if(ps!=null)
{
ps.close();
}
if(ct!=null){
ct.close();
}
}
catch (SQLException e3) {
e3.printStackTrace();
}
}
}
// 刷新
if(e.getSource()==jb5){
//写一个SQL语句
String sql="select * from s";
//构建新的数据模型类,并更新
sm=new StuModel(sql);
//更新JTable
jt.setModel(sm);
}
// 退出按钮
if(e.getSource()==jb6){
setVisible(false);
}
}
public static void main(String[] args) {
try {
// 将当前窗体外观设置为所在操作系统的外观
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
new JTable_Test1();
}
}
学生信息管理系.....
需积分: 10 106 浏览量
2022-09-12
15:13:55
上传
评论
收藏 2.35MB ZIP 举报
![avatar](https://profile-avatar.csdnimg.cn/7e23a3eb558f4e9fba6ef287a6d81c6e_qq_51167531.jpg!1)
寂ღ᭄秋࿐
- 粉丝: 215
- 资源: 1
最新资源
- 前端面试题之Html相关题集.zip
- Python智能推荐系统案例介绍: 基于用户行为数据和机器学习算法,设计一个个性化推荐系统,如电影推荐、音乐推荐等
- Animation engine for explanatory math videos 用于解释数学视频的动画引擎
- Python自然语言处理应用案例介绍: 开发一个能够进行文本情感分析、语义理解或机器翻译等任务的自然语言处理应用
- Python基于深度学习的图像识别系统案例介绍: 利用深度学习技术,设计一个能够识别物体、人脸或文字等图像内容的系统
- 海信智能电视刷机数据 LED43K300U(0000) 生产用软件数据 务必确认机编一致 强制刷机 整机USB升级程序
- zookeeper-api基础.docx
- matplotlib是一个用于绘制图表和可视化数据的 Python 库.docx
- comfyui 提示词 参考;来源GitHub
- 一款零配置、无骨架、极小化的Hyperf发行版,通过Nano可以让您仅仅通过1个PHP文件即可快速搭建一个Hyperf应用
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
评论0