项目源代码分享
使用的软件安装及配置
Java的安装 java.jdk 3.8 安装Eclipse
MySQL的安装 Navicat (测试使用的是 11. 1.13)
先了解整体流程再学具体代码,附件中代码都有注释
数据库的连接
数据准备
提前导入jar包 在工程下先新建一个 lib文件夹 把jar包复制进去然后右键构建路径 ,点击添加至构建路径,如图所示。
文件结构如图
Java 连接 MySQL 需要驱动包,官网下载地址为MySQL驱动包官网下载
已上传的项目中也有 jar 包如果发现版本不对等情况也可以自己下载
先在数据库中创建一些数据
使用表 | 表的用途 |
---|---|
student表 | 用于数据的增删改查 |
user表 | 用于登录数据库 (相当于QQ登录的账号和密码) |
建立如图所示的数据库
user表中设置表结构和数据(登录教务系统账号和密码) 如下图
student表数据的存储结构
手动输入如下数据
先执行 Connect 类连接数据库
package weixin_52593633;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Connect {
Connection con=null;
Statement st;
ResultSet res=null;
String sql;
//stu s=new stu();
public void Open() throws Exception{
//连接数据库
try {
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/weixin_52593633?characterEncoding=utf8&useSSL=false";
String username="XXXX"; //自己创建数据库的名称 默认 root
String password="XXXXX"; //MySQL使用的密码
con=DriverManager.getConnection(url,username,password);
}catch(Exception e) {
System.out.println("数据库连接"+e.getMessage());
e.printStackTrace();
}
}
public void closestate() { //关闭statement对象
try {
st.close();
}catch (SQLException e) {
// TODO: handle exception
System.err.format("error: %s\n", sql);
e.printStackTrace();
}
}
public void closecon() { //关闭数据库连接
try {
con.close();
}catch (Exception e) {
// TODO: handle exception
System.out.println("关闭数据库失败"+e.getMessage());
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
// TODO 自动生成的方法存根
Connect con=new Connect();
con.Open();
//con.closestate();
con.closecon();
}
}
实现登录窗口
package weixin_52593633;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class Login extends JFrame implements ActionListener {
//准备好相关的组件
JLabel l1=new JLabel("账号:");
JLabel l2=new JLabel("密码:");
JButton b1=new JButton("登录");
JButton b2=new JButton("取消");
JTextField f1=new JTextField(20);
JPasswordField f2=new JPasswordField(20);
Login(){
setTitle("登录界面");
setSize(500, 200);
setVisible(true);
setLocation(500,300);
setLayout(new GridLayout(3, 1));
JPanel p1 = new JPanel(); JPanel p2 = new JPanel(); JPanel p3 = new JPanel();
p1.add(l1);p1.add(f1);
p2.add(l2);p2.add(f2);
p3.add(b1); p3.add(b2);
add(p1); add(p2); add(p3);
b1.addActionListener(this);
b2.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO 自动生成的方法存根
Object obj=arg0.getSource();
if(obj==b1) {
String id=f1.getText();
String password=f2.getText();
//System.out.println(id+" "+password);
int res=-1;
try {
res=new Connect().value(id, password);
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
if(res==1) {
// 打开一个新的界面 教务管理系统 Date()
new Data(); //同样是一个类用来显示系统页面叫 Data
dispose(); //意思是在关闭JFrame时,自动调用dispose方法释放资源
}
else if(res==0) {
f1.setText("");
//f2.setText("");
JOptionPane.showMessageDialog(null, "您输入的账号为空或有误","错误",0);
//(Fram,输出字符串,弹窗名称,图片(0,1,2,3))
}
else
{
//f1.setText("");
f2.setText("");
JOptionPane.showMessageDialog(null, "您输入的密码为空或有误","错误",2);
//(Fram,输出字符串,弹窗名称,图片(0,1,2,3))
}
}
else
dispose();
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
Login login=new Login();
login.setVisible(true);
}
}
①账号错误时
②密码错误时
③成功登录时显示学生管理界面
对数据实现增删改查
查数据
(这里默认对学号唯一查找) 在学号框中输入学号 1 ,点击查询 按钮
添加数据
在相应的框中写入数据 点击添加按钮 在点击系统管理 刷新页面
这里插入两条数据
修改数据
按学号查找对第一条数据 成绩修改为 66 点击修改后点击系统管理的刷新
删除数据
输入学号之后点击删除按钮后刷新即可
对于每行数据可以点击使用排序
按成绩升序降序排名