package school_manage;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.*;
public class 修改学籍功能 {
public static void main(String[] args) {
new txgxj();
}
}
class txgxj{
JFrame jf;
JLabel l1,l2,l3,l4,l5,l6,l7;
JTextField f1,f2,f3,f4,f5,f6,f7;
JButton jb1,jb2,jb3;
public txgxj(){
jf = new JFrame("修改学籍");
jf.setSize(320,500);//设置窗体大小
jf.setLocationRelativeTo(null);//设置窗口每次启动都显示在屏幕正中央
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setLayout(null);
Font font = new Font("仿宋", Font.BOLD, 20);//设置统一的字体,让代码更加整洁美观
l1 = new JLabel("学 号:");
l1.setBounds(10,10,100,40);
l1.setFont(font);
f1 = new JTextField(null,20);
f1.setBounds(90,15,180,30);
f1.setFont(font);
l2 = new JLabel("姓 名:");
l2.setBounds(8, 50, 100, 40);
l2.setFont(font);
f2=new JTextField(null,20);
f2.setBounds(90,55,180,30);
f2.setFont(font);
l3 = new JLabel("姓 别:");
l3.setBounds(8, 90, 100, 40);
l3.setFont(font);
f3=new JTextField(null,20);
f3.setBounds(90,95,180,30);
f3.setFont(font);
l4 = new JLabel("出生日期:");
l4.setBounds(8, 130, 140, 40);
l4.setFont(font);
f4=new JTextField(null,20);
f4.setBounds(90,135,180,30);
f4.setFont(font);
l5 = new JLabel("籍 贯:");
l5.setBounds(8, 170, 130, 40);
l5.setFont(font);
f5=new JTextField(null,20);
f5.setBounds(90,175,180,30);
f5.setFont(font);
l6 = new JLabel("班级编号:");
l6.setBounds(8, 210, 140, 40);
l6.setFont(font);
f6=new JTextField(null,20);
f6.setBounds(90,215,180,30);
f6.setFont(font);
l7 = new JLabel("学院名称:");
l7.setBounds(8, 250, 140, 40);
l7.setFont(font);
f7=new JTextField(null,20);
f7.setBounds(90,255,180,30);
f7.setFont(font);
jb1 = new JButton("修改学籍信息");
jb1.setBounds(65, 300, 180, 40);
jb1.setFont(font);
jb1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
PreparedStatement ps = null;//PreparedStatement==>表示预编译的SQL语句的对象。
// SQL语句已预编译并存储在PreparedStatement对象中。
Connection con = null;//Connection==>与特定数据库的连接
Statement st=null;
ResultSet rs=null;
try {
//注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//这里的3306/后跟的是数据库名
//获取数据库连接
String url = "jdbc:mysql://localhost:3306/school_manage?serverTimezone=GMT%2B8";
//通过DriverManager完成注册
con = DriverManager.getConnection(url, "root", "123456");
//执行SQL语句
String sql2="update 学生表 set 姓名=?,性别=?,出生日期=?,籍贯=?,学院名称=? where 班级编号=? and 学号=?";
ps = con.prepareStatement(sql2);
String sql = "select * from 学生表";
st=con.createStatement();
rs=st.executeQuery(sql);
int flag=0;
while (rs.next()){
if(rs.getString("班级编号").equals(f6.getText())&&rs.getString("学号").equals(f1.getText())){
ps.setString(1,f2.getText());
ps.setString(2,f3.getText());
ps.setString(3,f4.getText());
ps.setString(4,f5.getText());
ps.setString(5,f7.getText());
ps.setString(6,f6.getText());
ps.setString(7,f1.getText());
flag++;
}
}
if(flag==0){
JOptionPane.showMessageDialog(null, "没有找到相应的班级和学生!");
}
if(f1.getText().length()!=0&&f2.getText().length()!=0&&f3.getText().length()!=0
&&f4.getText().length()!=0&&f5.getText().length()!=0 && flag!=0
&&f6.getText().length()!=0 && flag!=0&&f7.getText().length()!=0 && flag!=0){
JOptionPane.showMessageDialog(null, "修改成功!");
f1.setText(null);
f2.setText(null);
f3.setText(null);
f4.setText(null);
f5.setText(null);
f6.setText(null);
f7.setText(null);
try {
int i = ps.executeUpdate();//将注册的账户存储到数据库中
} catch (SQLException ex) {
ex.printStackTrace();
}
}else{
JOptionPane.showMessageDialog(null, "信息填写不完整,修改失败!");
}
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
} catch (SQLException ex) {
ex.printStackTrace();
}
if (f1.getText().length() != 0 && f2.getText().length() != 0 && f3.getText().length() != 0
&& f4.getText().length() != 0&& f5.getText().length() != 0
&& f6.getText().length() != 0&& f7.getText().length() != 0) {//如果所有信息都填写了,便添加成功
JOptionPane.showMessageDialog(null, "修改成功!");
f1.setText(null);
f2.setText(null);
f3.setText(null);
f4.setText(null);
f5.setText(null);
f6.setText(null);
f7.setText(null);
try {
int i = ps.executeUpdate();//将数据存储到数据库中
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
});
jb2 = new JButton("返回");
jb2.setBounds(35, 350, 80, 40);
jb2.setFont(font);
jb2.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
//返回到教师学籍管理页面
new txj();
jf.dispose();//关闭窗体,释放所有资源
}
});
jb3 = new JButton("退出");
jb3.setBounds(190, 350, 80, 40);
jb3.setFont(font);
jb3.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
JOptionPane.showMessageDialog(null, "退出成功!");
//系统退出
System.exit(0);
}
});
jf.add(l1);
jf.add(f1);
jf.add(l2);
jf.add(f2);
jf.add(l3);
jf.add(f3);
jf.add(l4);
jf.add(f4);
jf.add(l5);
jf.add(f5);
jf.add(l6);
jf.add(f6);
jf.add(l7);
jf.add(f7);
jf.add(jb1);
jf.add(jb2);
jf.add(jb3);
jf.setVisible(true);
}
}
数据库课设-学籍管理系统MySQL8.0.31
需积分: 0 11 浏览量
更新于2022-12-14
1
收藏 2.95MB ZIP 举报
【数据库课设-学籍管理系统MySQL8.0.31】是一个基于MySQL 8.0.31版本的学籍管理系统的项目,旨在通过数据库设计和编程实现对学校学籍信息的有效管理和操作。这个项目涵盖了数据库设计、SQL语句编写、Java编程等多个IT领域的知识点。
关于数据库设计,它通常包含需求分析、概念模型设计、逻辑模型设计和物理模型设计四个阶段。在本项目中,`school_manage.sql`文件很可能包含了创建表、定义字段、设置约束等SQL脚本,用于构建学籍管理数据库。可能包括学生表(Student)、课程表(Course)、成绩表(Grade)等,涉及学生ID、姓名、班级、学号、课程ID、课程名称、分数等相关字段。关系模型的建立是确保数据完整性和一致性的重要步骤。
Visio图通常用于绘制ER(实体关系)图,这是数据库设计中的可视化工具,用来展示不同实体之间的关联。在"Visio图"目录下,可能包含了这些图表,帮助我们理解各个实体间的一对多、一对一或多对多的关系。例如,一个学生可以选修多门课程,而一门课程可以被多个学生选修,这在ER图中会用到连线来表示。
再者,Java程序部分可能实现了对数据库的CRUD(创建、读取、更新、删除)操作。Java的JDBC(Java Database Connectivity)API用于连接MySQL数据库,执行SQL查询和事务处理。通过编写Java类,如StudentService、CourseService等,可以实现学籍信息的增删改查功能,同时考虑到性能和安全性,可能还涉及到了预编译的PreparedStatement、事务控制和异常处理。
在实际应用中,数据库连接池(如C3P0、HikariCP)的使用能够提高数据库操作的效率,而DAO(Data Access Object)模式则能将数据访问层与业务逻辑层分离,增强代码的可维护性。此外,如果项目采用MVC(Model-View-Controller)架构,那么Java程序可能还包括了Controller类来处理HTTP请求,Model类来封装数据,以及View类来呈现结果。
这个课设项目涵盖了数据库设计的基本理论,SQL语言的实践运用,以及Java后端开发的关键技术,是一个全面了解和学习IT领域数据库管理和后端开发的实战案例。通过完成这样的项目,学生可以深入理解数据存储与处理的过程,提升编程和问题解决能力。
Macerofe
- 粉丝: 0
- 资源: 1
最新资源
- 华为OD+真题及解析+智能驾驶
- jQuery信息提示插件
- 基于stm32的通信系统,sim800c与服务器通信,无线通信监测,远程定位,服务器通信系统,gps,sim800c,心率,温度,stm32 由STM32F103ZET6单片机核心板电路、DS18B2
- 充电器检测9-YOLO(v5至v11)、COCO、Create充电器检测9L、Paligemma、TFRecord、VOC数据集合集.rar
- 华为OD+考试真题+实现过程
- 保险箱检测51-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 五相电机邻近四矢量SVPWM模型-MATLAB-Simulink仿真模型包括: (1)原理说明文档(重要):包括扇区判断、矢量作用时间计算、矢量作用顺序及切时间计算、PWM波的生成; (2)输出部分仿
- 一对一MybatisProgram.zip
- 时变动态分位数CoVaR、delta-CoVaR,分位数回归 △CoVaR测度 溢出效应 动态 Adrian2016基于分位数回归方法计算动态条件在险价值 R语言代码,代码更数据就能用,需要修改的
- 人物检测37-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar