Java+Mysql+学生管理系统
最近正在学java和数据库,想起以前写的学生管理系统,都是从网上下载,敷衍了事。闲来无事,也就自己写了一个,不过功能实现的不是很多。
开发语言:java; 开发环境:Mysql, java; 开发工具:eclipse
开发此案例,首先得在电脑上有java开发环境和Mysql, java开发环境与Mysql的搭建,就不再叙述了,如果需要,请联系我最下面的联系方式:dingyelf@aliyun.com
此次系统比较简易:数据库中只有一个表:stu;功能:能够对学生增加、删除、修改。
开发步骤:
1.在数据库中建表:
create table stu(
stuId String,
stuName String,
stuSex String,
stuAge int,
stuJG String,
stuDept Sring
);
2.java 代码主要由四个类组成:
Test3包含主函数;StuModel用来刷新、呈现数据库;StuAddDiag用来实现增添读者功能;StuUpDiag是修改学生信息。具体代码如下:
Test3.java:
import javax.swing.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement; public class Test3 extends JFrame implements ActionListener {
//定义一些控件
JPanel jp1,jp2;
JLabel jl1,jl2;
JButton jb1,jb2,jb3,jb4;
JTable jt;
JScrollPane jsp;
JTextField jtf;
StuModel sm;
//定义连接数据库的变量
Statement stat = null;
PreparedStatement ps;
Connection ct = null;
ResultSet rs = null; public static void main(String[] args){
Test3 test3 = new Test3();
}
//构造函数
public Test3(){
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); jb2 = new JButton("添加");
jb2.addActionListener(this);
jb3 = new JButton("修改");
jb3.addActionListener(this);
jb4 = new JButton("删除");
jb4.addActionListener(this); jp2 = new JPanel();
jp2.add(jb2);
jp2.add(jb3);
jp2.add(jb4); //创建模型对象
sm = new StuModel(); //初始化
jt = new JTable(sm); jsp = new JScrollPane(jt); //将jsp放入到jframe中
this.add(jsp);
this.add(jp1,"North");
this.add(jp2,"South");
this.setSize(600, 400);
//this.setLocation(300, 200);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true); }
public void actionPerformed(ActionEvent arg0) {
//判断是哪个按钮被点击
if(arg0.getSource() == jb1){
System.out.println("用户希望被查询...");
//因为把对表的数据封装到StuModel中,可以比较简单的完成查询
String name = this.jtf.getText().trim();
//写一个sql语句
String sql = "select * from stu where stuName = '"+name+"' ";
//构建一个数据模型类,并更新
sm = new StuModel(sql);
//更新jtable
jt.setModel(sm); } //一、弹出添加界面
else if(arg0.getSource() == jb2){
System.out.println("添加...");
StuAddDiag sa = new StuAddDiag(this,"添加学生",true); //重新再获得新的数据模型,
sm = new StuModel();
jt.setModel(sm);
}else if(arg0.getSource() == jb4){
//二、删除记录
//1.得到学生的ID
int rowNum = this.jt.getSelectedRow();//getSelectedRow会返回给用户点中的行
//如果该用户一行都没有选,就返回-1
if(rowNum == -1){
//提示
JOptionPane.showMessageDialog(this, "请选中一行");
return ;
}
//得到学术ID
String stuId = (String)sm.getValueAt(rowNum, 0);
System.out.println("Id: "+stuId); //连接数据库,完成删除任务
try{
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.连接数据库
String url = "jdbc:mysql://localhost:3306/spdb1";
String user = "root";
String passwd = "lfdy"; ct = DriverManager.getConnection(url, user, passwd);
System.out.println("连接成功");
ps = ct.prepareStatement("delete from stu where stuId = ?");
ps.setString(1,stuId);
ps.executeUpdate(); }catch(Exception e){
e.printStackTrace();
}finally{
try{
if(rs!= null){
rs.close();
rs = null; }
if(ps!= null){
ps.close();
ps = null;
}
if(ct != null){
ct.close();
ct = null;
}
} catch(Exception e){
e.printStackTrace();
}
}
sm = new StuModel();
//更新jtable
jt.setModel(sm);
}else if(arg0.getSource() == jb3){
System.out.println("11111");
//三、用户希望修改
int rowNum = this.jt.getSelectedRow();
if(rowNum == -1){
//提示
JOptionPane.showMessageDialog(this, "请选择一行");
return ;
}
//显示对话框
System.out.println( "12435");
StuUpDiag su = new StuUpDiag(this, "修改学术", true, sm, rowNum);
sm = new StuModel();
jt.setModel(sm);
}
}
}
StuModel.java:
/*
* 这是我的一个stu表的模型
* 可以把对学生表的操作全都封装到这个类
*/
package com.test2; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Vector;
import javax.swing.table.*; public class StuModel extends AbstractTableModel{ //rowData存放行数据,columnNames存放列名
Vector rowData,columnNames; //定义连接数据库的变量
Statement stat = null;
Connection ct = null;
ResultSet rs = null; //初始化
public void init(String sql){
if(sql.equals("")){
sql = "select * from stu";
}
//中间
//设置列名
columnNames = new Vector();
columnNames.add("学号");
columnNames.add("名字");
columnNames.add("性别");
columnNames.add("年龄");
columnNames.add("籍贯");
columnNames.add("门派"); //rowData存放多行
rowData = new Vector(); try{
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
System.out.println("加载成功");
//2.连接数据库
//定义几个常量
String url = "jdbc:mysql://localhost:3306/spdb1";
String user = "root";
String passwd = "lfdy"; ct = DriverManager.getConnection(url,user,passwd);
stat = ct.createStatement();//创建stat对象
rs = stat.executeQuery(sql);//查询结果 while(rs.next()){
Vector hang = new Vector();
hang.add(rs.getString(1));
hang.add(rs.getString(2));
hang.add(rs.getString(3));
hang.add(rs.getInt(4));
hang.add(rs.getString(5));
hang.add(rs.getString(6));
//加入到rowData中
rowData.add(hang); } }catch(Exception e){
e.printStackTrace();
}finally{
try{
if(rs!=null){
rs.close();
rs = null;
}
if(stat != null){
stat.close();
stat = null;
}
if(ct != null){
ct.close();
ct = null;
}
}catch(Exception e){
e.printStackTrace();
}
}
} //增加学生函数
public void addStu(String sql){
//根据用户输入的sql语句,完成添加任务 } //第二个构造函数,通过传递的sql语句来获得数据模型
public StuModel(String sql){
this.init(sql);
} //构造函数,用于初始化我的数据模型(表)
public StuModel(){
this.init("");
} //得到共有多少行
public int getRowCount() {
// TODO Auto-generated method stub
return this.rowData.size();
} //得到共有多少列
public int getColumnCount() {
// TODO Auto-generated method stub
return this.columnNames.size();
} //得到某行某列的数据
public Object getValueAt(int row, int column) {
// TODO Auto-generated method stub
return ((Vector)(this.rowData.get(row))).get(column);
} //得到属性名字
public String getColumnName(int column) {
// TODO Auto-generated method stub
return (String)this.columnNames.get(column);
}
}
StuAddDiag.java:
package com.test2; import javax.swing.JDialog;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.*; public class StuAddDiag extends JDialog implements ActionListener {
//定义我需要的swing组件
JLabel jl1,jl2,jl3,jl4,jl5,jl6;
JTextField jf1,jf2,jf3,jf4,jf5,jf6;
JPanel jp1,jp2,jp3;
JButton jb1,jb2;
//owner代笔父窗口,title是窗口的名字,modal指定是模式窗口()或者非模式窗口
public StuAddDiag(Frame owner,String title, boolean modal){
//调用父类方法
super(owner,title,modal); jl1 = new JLabel("学号");
jl2 = new JLabel("名字");
jl3 = new JLabel("性别");
jl4 = new JLabel("年龄");
jl5 = new JLabel("籍贯");
jl6 = new JLabel("门派"); jf1 = new JTextField(10);
jf2 = new JTextField(10);
jf3 = new JTextField(10);
jf4 = new JTextField(10);
jf5 = new JTextField(10);
jf6 = new JTextField(10); jb1 = new JButton("添加");
jb1.addActionListener(this);
jb2 = new JButton("取消"); jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel(); //设置布局
jp1.setLayout(new GridLayout(6,1));
jp2.setLayout(new GridLayout(6,1)); jp3.add(jb1);
jp3.add(jb2); jp1.add(jl1);
jp1.add(jl2);
jp1.add(jl3);
jp1.add(jl4);
jp1.add(jl5);
jp1.add(jl6); jp2.add(jf1);
jp2.add(jf2);
jp2.add(jf3);
jp2.add(jf4);
jp2.add(jf5);
jp2.add(jf6); this.add(jp1, BorderLayout.WEST);
this.add(jp2, BorderLayout.CENTER);
this.add(jp3, BorderLayout.SOUTH); this.setSize(300,200);
this.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource() == jb1){
Connection ct = null;
PreparedStatement pstmt = null;
ResultSet rs = null; try{
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
System.out.println("加载成功");
//2.连接数据库
//定义几个常量
String url = "jdbc:mysql://localhost:3306/spdb1";
String user = "root";
String passwd = "lfdy";
ct = DriverManager.getConnection(url,user,passwd); //与编译语句对象 String strsql = "insert into stu values(?,?,?,?,?,?)";
pstmt = ct.prepareStatement(strsql); //给对象赋值
pstmt.setString(1,jf1.getText());
pstmt.setString(2,jf2.getText());
pstmt.setString(3,jf3.getText());
pstmt.setString(4,jf4.getText());
pstmt.setString(5,jf5.getText());
pstmt.setString(6,jf6.getText()); pstmt.executeUpdate(); this.dispose();//关闭学生对话框 }catch(Exception arg1){
arg1.printStackTrace();
}finally{
try{
if(rs!=null){
rs.close();
rs = null;
}
if(pstmt != null){
pstmt.close();
pstmt = null;
}
if(ct != null){
ct.close();
ct = null;
}
}catch(Exception arg2){
arg2.printStackTrace();
}
} } } }
StuUpDiag.java:
package com.test2;
/*
* 修改学生
*/
import javax.swing.JDialog;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.*; public class StuUpDiag extends JDialog implements ActionListener {
//定义我需要的swing组件
JLabel jl1,jl2,jl3,jl4,jl5,jl6;
JTextField jf1,jf2,jf3,jf4,jf5,jf6;
JPanel jp1,jp2,jp3;
JButton jb1,jb2;
//owner代笔父窗口,title是窗口的名字,modal指定是模式窗口()或者非模式窗口
public StuUpDiag(Frame owner,String title, boolean modal,StuModel sm,int rowNum){
//调用父类方法
super(owner,title,modal); jl1 = new JLabel("学号"); jl2 = new JLabel("名字"); jl3 = new JLabel("性别");
jl4 = new JLabel("年龄");
jl5 = new JLabel("籍贯"); jl6 = new JLabel("门派"); jf1 = new JTextField(10);jf1.setText((sm.getValueAt(rowNum, 0)).toString());
jf2 = new JTextField(10);jf2.setText((String)sm.getValueAt(rowNum, 1));
jf3 = new JTextField(10);jf3.setText(sm.getValueAt(rowNum, 2).toString());
jf4 = new JTextField(10);jf4.setText((sm.getValueAt(rowNum, 3)).toString());
jf5 = new JTextField(10);jf5.setText((String)sm.getValueAt(rowNum, 4));
jf6 = new JTextField(10);jf6.setText((String)sm.getValueAt(rowNum, 5)); jb1 = new JButton("修改");
jb1.addActionListener(this);
jb2 = new JButton("取消"); jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel(); //设置布局
jp1.setLayout(new GridLayout(6,1));
jp2.setLayout(new GridLayout(6,1)); jp3.add(jb1);
jp3.add(jb2); jp1.add(jl1);
jp1.add(jl2);
jp1.add(jl3);
jp1.add(jl4);
jp1.add(jl5);
jp1.add(jl6); jp2.add(jf1);
jp2.add(jf2);
jp2.add(jf3);
jp2.add(jf4);
jp2.add(jf5);
jp2.add(jf6); this.add(jp1, BorderLayout.WEST);
this.add(jp2, BorderLayout.CENTER);
this.add(jp3, BorderLayout.SOUTH); this.setSize(300,200);
this.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource() == jb1){
Connection ct = null;
PreparedStatement pstmt = null;
ResultSet rs = null; try{
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
System.out.println("加载成功");
//2.连接数据库
//定义几个常量
String url = "jdbc:mysql://localhost:3306/spdb1";
String user = "root";
String passwd = "lfdy";
ct = DriverManager.getConnection(url,user,passwd); //与编译语句对象 String strsql = "insert into stu values(?,?,?,?,?,?)";
pstmt = ct.prepareStatement(strsql); //给对象赋值
pstmt.setString(1,jf1.getText());
pstmt.setString(2,jf2.getText());
pstmt.setString(3,jf3.getText());
pstmt.setString(4,jf4.getText());
pstmt.setString(5,jf5.getText());
pstmt.setString(6,jf6.getText()); pstmt.executeUpdate(); this.dispose();//关闭学生对话框 }catch(Exception arg1){
arg1.printStackTrace();
}finally{
try{
if(rs!=null){
rs.close();
rs = null;
}
if(pstmt != null){
pstmt.close();
pstmt = null;
}
if(ct != null){
ct.close();
ct = null;
}
}catch(Exception arg2){
arg2.printStackTrace();
}
} } } }
开发与测试结果:
1.系统主界面:
2.按名字查询:
3.选中一行,删除:
4.选中一行修改:
5.点击添加按钮,进行添加:
后续此系统将继续完善,有疑问和技术交流的,可联系本人:dingyelf@aliyun.com
Java+Mysql+学生管理系统的更多相关文章
- java构建学生管理系统(一)
用java搭建学生管理系统,重要还是对数据库的操作,诸如增删改查等. 1.基本的功能: 老师完成对学生信息的查看和修改,完成对班级的信息的概览. 学生可以看自己的成绩和对自己信息的修改. 学生和老师有 ...
- Java开发学生管理系统
Java 学生管理系统 使用JDBC了链接本地MySQL 数据库,因此在没有建立好数据库的情况下没法成功运行 (数据库部分, Java界面部分, JDBC部分) 资源下载: http://downlo ...
- Java 小型学生管理系统心得
这个学生管理系统相对来说比较简单,主要就是复习下java怎么连接数据库,然后你怎么来实现这个功能,我简单的说下思路吧. 首先你要构思好这个界面,他包括增删查改这些基本功能,然后你去分析这些功能都能怎么 ...
- Java 简化版学生管理系统(IO版)
Student management system 学生管理系统IO版 详细知识点可参考一下几篇文章 常用API Java 之ArrayList集合及应用 Java 之IO流及应用 Compreh ...
- Java写学生管理系统
package Homework08;/*调试了一上午,收获:学会了昨天的debug的使用吸取教训:Student stus[]=new Student[2]; for (int i=0;i<s ...
- Java案例——学生管理系统
简单完整的学生管理系统 学生类 public class Student { private String id; private String age; private String name; p ...
- Mysql学生管理系统:表的建立,外键一对多,多对多关系,中间关联表的建立
学生管理系统 管理员注册/登录/注销 注册班级(班级详细信息) 注册学生信息 查看班级信息/查看老师资料 教师注册/注销 查看教师资料 查看学生资料 根据名称/班级/ 查看学生详细信息--支持模 ...
- Java & Mysql 餐饮管理系统 过程心得记录
------------------------------------------Have a Good Day~---------------------------------- 准备国赛和AC ...
- java集合学生管理系统
//student.java package com.sran.www; import java.util.Arrays; import java.util.Scanner; public class ...
随机推荐
- Keil C51基本数据类型
- spring-mvc整合freemarker并在ftl模版中显示服务端校验的错误信息,JSR303或者JSR349
写法有多种,应该可以任意组合,最重要的是要引入spring.ftl 1.Bean里面的就不再多写了,来个简单就可以了 @NotEmpty(message="用户密码码不可为空") ...
- [Angular 2] *ngFor
heros.ts: import {Component} from "@angular/core"; const HEROES = [ {id: 1, name:'Superman ...
- python 源码解读2
http://www.jianshu.com/users/4d4a2f26740b/latest_articles http://blog.csdn.net/ssjhust123/article/ca ...
- Xcode无法设置视图的 autosizing control原因
转自:Xcode无法设置视图的 autosizing control原因 学习Xcode的iOS编程时,可能会发现Autosizing Control不见了,其原因很简单,因为你在设置中选择了Auto ...
- 乐在其中设计模式(C#) - 代理模式(Proxy Pattern)【转】
介绍 为其他对象提供一个代理以控制对这个对象的访问. 示例 有一个Message实体类,某对象对它的操作有Insert()和Get()方法,用一个代理来控制对这个对象的访问. MessageModel ...
- SSIS 学习(7):包配置(下)【转】
经过前面几个章节的学习,我们开发的ETL包算已经完成一大半了,但是还不够完美,正如一场足球比赛,前面大家打得很辛苦,传接得也很漂亮,但 是临门一脚的技术不过关,进不了球,一切都是白搭.今天我们就来为大 ...
- Objective-C ,ios,iphone开发基础:使用GDataXML解析XML文档,(libxml/tree.h not found 错误解决方案)
使用GDataXML解析XML文档 在IOS平台上进行XML文档的解析有很多种方法,在SDK里面有自带的解析方法,但是大多情况下都倾向于用第三方的库,原因是解析效率更高.使用上更方便 这里主要介绍一下 ...
- 在windows2003系统上安装两个版本的oracle
想试试oracle11g都有什么变化,于是在机器上又安装了oracle11.1.7版本的.安装很简单,只是安装后如何让两个数据库同时跑起来,需要稍微设置下.1.将11goracle的监听换一个端口,比 ...
- 核心概念 —— 服务容器
1.简介 Laravel 服务容器是一个用于管理类依赖和执行依赖注入的强大工具.依赖注入听上去很花哨,其实质是通过构造函数或者某些情况下通过 set 方法将类依赖注入到类中. 让我们看一个简单的例子: ...