package First;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import First.Window;
public class Change extends JFrame {
String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
String DB_URL = "jdbc:mysql://localhost:3306/student?useSSL=false&serverTimezone=UTC";
String USER = "root";
String PASS = "l1551abcde0asdwx";
JLabel jlnumber = new JLabel("学号:");
JLabel jlname = new JLabel("姓名:");
JLabel jlage = new JLabel("\u51FA\u751F\u65F6\u95F4\uFF1A");
JLabel jlsex = new JLabel("性别:");
JLabel jlmath = new JLabel("数学成绩:");
JLabel jlenglish = new JLabel("\u82F1\u8BED\u6210\u7EE9\uFF1A");
JLabel jldata = new JLabel("\u6570\u636E\u7ED3\u6784\u6210\u7EE9\uFF1A");
JTextField jtnumber = new JTextField("", 20);
JTextField jtname = new JTextField("", 20);
JTextField jtage = new JTextField("", 20);
JTextField jtsex = new JTextField("", 20);
JTextField jtmath = new JTextField("", 20);
JTextField jtenglish = new JTextField();
JTextField jtdata = new JTextField();
JButton buttonchange = new JButton("修改");
JButton buttonreturn = new JButton("返回");
JPanel jpenglish = new JPanel();
JPanel jpdata = new JPanel();
public Change() {
jtdata.setBounds(169, 7, 113, 21);
jtdata.setColumns(10);
jtenglish.setBounds(174, 7, 115, 21);
jtenglish.setColumns(10);
JPanel jpnumber = new JPanel();
jpnumber.setBounds(0, 1, 336, 29);
JPanel jpname = new JPanel();
jpname.setBounds(0, 30, 336, 29);
JPanel jpage = new JPanel();
jpage.setBounds(0, 59, 336, 29);
JPanel jpsex = new JPanel();
jpsex.setBounds(0, 88, 336, 29);
JPanel jpmath = new JPanel();
jpmath.setBounds(0, 117, 336, 29);
jpnumber.add(jlnumber);
jpnumber.add(jtnumber);
jpname.add(jlname);
jpname.add(jtname);
jpage.add(jlage);
jpage.add(jtage);
jpsex.add(jlsex);
jpsex.add(jtsex);
jpmath.add(jlmath);
jpmath.add(jtmath);
jpenglish.add(jlenglish);
jpenglish.add(jtenglish);
jpdata.add(jldata);
jpdata.add(jtdata);
this.setTitle("修改学生信息");
getContentPane().setLayout(null);
getContentPane().add(jpnumber);
getContentPane().add(jpname);
getContentPane().add(jpage);
getContentPane().add(jpsex);
getContentPane().add(jpmath);
buttonchange.setBounds(0, 224, 168, 29);
getContentPane().add(buttonchange);
buttonreturn.setBounds(168, 224, 168, 29);
getContentPane().add(buttonreturn);
jpenglish.setBounds(0, 146, 336, 29);
getContentPane().add(jpenglish);
jpenglish.setLayout(null);
jlenglish.setBounds(73, 10, 67, 15);
jpenglish.add(jlenglish);
jpenglish.add(jtenglish);
jpdata.setBounds(0, 173, 336, 29);
getContentPane().add(jpdata);
jpdata.setLayout(null);
jldata.setBounds(68, 10, 91, 15);
jpdata.add(jldata);
jpdata.add(jtdata);
buttonreturn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});
buttonchange.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String sno = jtnumber.getText();
String name = jtname.getText();
String age = jtage.getText();
String sex = jtsex.getText();
String math = jtmath.getText();
String english = jtenglish.getText();
String data = jtdata.getText();
Connection conn = null;
ResultSet res = null;
Statement stat = null;
String sql = "SELECT sno,name,age,sex,math,english,data FROM student;";
try {
Class.forName(JDBC_DRIVER);
} catch (Exception d) {
System.out.println("连接失败");
d.printStackTrace();
}
try {
conn = DriverManager.getConnection(DB_URL, USER, PASS);
stat = conn.createStatement();
res = stat.executeQuery(sql);
while (res.next()) {
// change
if (res.getString(1).equals(jtnumber.getText())) {
try {
Class.forName(JDBC_DRIVER);
} catch (Exception d) {
System.out.println("连接失败");
d.printStackTrace();
}
String sql2 = "UPDATE student SET name='" + name + "' WHERE sno='" + jtnumber.getText()
+ "'";
String sql3 = "UPDATE student SET age='" + age + "' WHERE sno='" + jtnumber.getText()
+ "'";
String sql4 = "UPDATE student SET sex='" + sex + "' WHERE sno='" + jtnumber.getText()
+ "'";
String sql5 = "UPDATE student SET math='" + math + "' WHERE sno='" + jtnumber.getText()
+ "'";
String sql6 = "UPDATE student SET english='" + english + "' WHERE sno='"
+ jtnumber.getText() + "'";
String sql7 = "UPDATE student SET data='" + data + "' WHERE sno='" + jtnumber.getText()
+ "'";
try {
conn = DriverManager.getConnection(DB_URL, USER, PASS);
stat = conn.createStatement();
stat.executeUpdate(sql2);
stat.executeUpdate(sql3);
stat.executeUpdate(sql4);
stat.executeUpdate(sql5);
stat.executeUpdate(sql6);
stat.executeUpdate(sql7);
} catch (SQLException g) {
// TODO Auto-generated catch block
g.printStackTrace();
}
try {
stat.close();
conn.close();
} catch (SQLException ar) {
ar.printStackTrace();
}
break;
}
// change end
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException ar) {
ar.printStackTrace();
}
}
}
});
this.setLocation(400, 300);
this.setSize(350, 300);
this.setVisible(true);
}
}
学生信息管理系统Demo(GUI:Java-Swing、数据库:Mysql)
需积分: 0 3 浏览量
更新于2023-07-18
2
收藏 2.14MB ZIP 举报
《学生信息管理系统Demo:Java-Swing与MySQL的融合应用》
在信息技术日益发达的今天,学生信息管理系统的存在显得尤为重要,它能有效地整理和管理大量的学籍数据,提高工作效率。本项目“学生信息管理系统Demo”就是一个这样的实例,它通过集成Java的Swing图形用户界面(GUI)技术和MySQL数据库,实现了学生信息的高效管理。
我们来看看Java的Swing组件。Swing是Java Standard Edition (Java SE)的一部分,提供了一套丰富的组件库,用于创建桌面应用程序的用户界面。在这个Demo中,Swing被用来构建GUI,使得用户可以通过直观的窗口、按钮、文本框等元素进行交互,完成对学生的添加、删除、修改和查询等操作。Swing的优势在于其灵活性和可定制性,开发者可以根据需求自由设计UI布局,提供友好的用户体验。
接着,我们关注数据库部分,系统采用了MySQL作为后台数据库。MySQL是一款开源、免费的关系型数据库管理系统,因其高性能、高可靠性而广受欢迎。在这个Demo中,MySQL用于存储学生的基本信息,如姓名、学号、班级等。通过JDBC(Java Database Connectivity)接口,Java程序可以直接与MySQL数据库进行通信,执行SQL语句,实现数据的存取操作。DAO(Data Access Object)层则在此过程中起到了桥梁作用,将业务逻辑与数据库操作解耦,使得代码更加模块化和易于维护。
具体实现上,DAO层的每个方法对应一个数据库操作,例如,"addStudent()"方法用于插入新学生信息,"deleteStudent()"方法负责删除指定学生,"updateStudent()"用于更新学生信息,而"queryStudent()"则实现了对学生信息的查询功能。这些方法封装了SQL语句,通过JDBC的Connection、Statement或PreparedStatement对象执行,确保了数据的安全性和一致性。
此外,为了保证数据的一致性和完整性,系统可能还采用了事务处理。在进行多个数据库操作时,如果其中一个操作失败,事务可以回滚到初始状态,避免了数据的不一致。同时,为了防止SQL注入攻击,系统可能还进行了参数化查询,有效提升了系统的安全性。
总结来说,这个“学生信息管理系统Demo”结合了Java Swing的GUI设计和MySQL数据库的强大功能,提供了学生信息管理的完整解决方案。通过学习和理解这个Demo,开发者不仅可以掌握Java GUI编程和数据库操作,还能了解到软件架构设计中的DAO模式和事务处理等核心概念,对于提升个人的软件开发技能具有积极的促进作用。
HaibaraAiii
- 粉丝: 25
- 资源: 2
最新资源
- 基于Springboot+Vue的疗养院管理系统的设计与实现-毕业源码案例设计(源码+项目说明+演示视频).zip
- 基于Springboot+Vue的旅游推荐系统设计与实现-毕业源码案例设计(高分毕业设计).zip
- 11种概率分布的拟合与ks检验,可用于概率分析,可靠度计算等领域 案例中提供11种概率分布,具体包括:gev、logistic、gaussian、tLocationScale、Rayleigh、Log
- 基于Springboot+Vue的贸易行业crm系统-毕业源码案例设计(95分以上).zip
- 基于Springboot+Vue的秒杀系统设计与实现-毕业源码案例设计(高分项目).zip
- 西门子1200和三菱FXU通讯程序
- 基于Springboot+Vue的名城小区物业管理系统-毕业源码案例设计(高分毕业设计).zip
- 欧美风格, 节日主题模板
- 基于Springboot+Vue的民族婚纱预定系统的设计与实现-毕业源码案例设计(高分毕业设计).zip
- 基于Springboot+Vue的农商订单跟踪售后交流对接系统-毕业源码案例设计(源码+数据库).zip
- 海面目标检测跟踪数据集.zip
- 基于Springboot+vue的人力资源管理系统-毕业源码案例设计(高分毕业设计).zip
- 基于Springboot+Vue的商业辅助决策系统的设计与实现-毕业源码案例设计(95分以上).zip
- 基于Springboot+Vue的企业资产管理系统-毕业源码案例设计(源码+论文).zip
- 准Z源光伏并网系统MATLAB仿真模型,采用了三次谐波注入法SPWM调制,具有更高的电压利用效率 并网部分采用了电压外环电流内环 电池部分采用了扰动观察法,PO Z源并网和逆变器研究方向的同学可
- 基于Springboot+Vue的实习管理系统-毕业源码案例设计(高分项目).zip