1.StuManager.java文件(实现查询任务,添加学生信息和删除学生信息的功能)

/*** 完成学生管理系统* 1.查询任务* 2.添加一个学生* 3.删除一个学生 */
package com.test1;
import javax.swing.*;import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class StuManager extends JFrame implements ActionListener {//定义一些组件JPanel jp1,jp2;JLabel jl1;JButton jb1,jb2,jb3,jb4;JTable jt;JScrollPane jsp;JTextField jtf;StuModel sm;//定义操作数据库需要的东西PreparedStatement ps = null;Connection ct = null;ResultSet rs = null;public static void main(String[] args) {StuManager test3 = new StuManager();}//构造函数public StuManager() {//1.上面的界jp1 = new JPanel();jtf = new JTextField(10);jb1 = new JButton("查询");jb1.addActionListener(this);jl1 = new JLabel("请输入名字:");//把各个空间加入到jp1jp1.add(jl1);jp1.add(jtf);jp1.add(jb1);//2.下面的界jp2 = new JPanel();jb2 = new JButton("添加");jb2.addActionListener(this);jb3 = new JButton("修改");jb3.addActionListener(this);jb4 = new JButton("删除");jb4.addActionListener(this);//把各个空间加入到jp2中jp2.add(jb2);jp2.add(jb3);jp2.add(jb4);//创建一个数据模型对象StuModel sm = new StuModel();//初始化JTablejt = new JTable(sm);//初始化jsp JScrollPanejsp = new JScrollPane(jt);//把jsp放入到jframethis.add(jsp);this.add(jp1,"North");this.add(jp2,"South");//给窗口设置一个标题this.setTitle("学生管理系统");//给窗口设置一个大小this.setSize(500, 500);//禁止用户改变窗口的大小//this.setResizable(false);//设置窗口的初始位置this.setLocationRelativeTo(null);//this.setLocation(300, 300);//设置当关闭窗口时,保证JVM也关闭this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//显示this.setVisible(true);}//对查询按钮响应public void actionPerformed(ActionEvent e) {//判断哪个按钮被点击if(e.getSource()==jb1) {System.out.println("用户希望查询");//因 为把对表的数据封装到模型里。我们就可以简单完成查询String name = this.jtf.getText().trim();//写一个SQL语句String sql = "select * from stu where stuName='"+name+"'";//构建新的数据模型类,并更新sm = new StuModel(sql);//更新JTablejt.setModel(sm);}//当用户点击添加else if(e.getSource()==jb2) {StuAdddialog sa = new StuAdddialog(this, "添加学生", true);//构建新的数据模型类,并更新sm = new StuModel();//更新JTablejt.setModel(sm);System.out.println("成功添加一位新同学");}else if(e.getSource()==jb3) {StuModel sm=new StuModel();int rownum =this.jt.getSelectedRow(); if(rownum==-1) { //提示 JOptionPane. showMessageDialog (this, "请选择一行");return;//代表不要再往下面走了,谁调用就返回给谁 } //显示修改对话框
}new StuUpdDialog(this,"修改学生信息",true,sm,rownum);//构建新的数据模型类,并更新sm = new StuModel();//更新JTablejt.setModel(sm);}else if(e.getSource()==jb4) {//用户删除记录//1.得到学生的ID号//getSelectedRow会返回用户点中的行//如果该 用户一行都没选择,则返回-1int rowNum = this.jt.getSelectedRow();if(rowNum==-1){//提示JOptionPane.showMessageDialog(this, "请选择一行");return;}//得到学生的编号//没String会返回一个object需要用String强转sm = new StuModel();String stuId=(String)sm.getValueAt(rowNum, 0); //连接数据库,完成删除任务//定义操作数据库需要的东西try {Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");ct = DriverManager.getConnection("jdbc:sqlserver://本机的ID;databaseName=XueSheng","sa","123456");ps=ct.prepareStatement("delete from stu where stuId=?");ps.setString(1, stuId);ps.executeUpdate();} catch (Exception e2) {e2.printStackTrace();}finally {//关闭资源try {if(rs!=null) rs.close();if(ps!=null) ps.close();if(ct!=null) ct.close();} catch (Exception e3) {e3.printStackTrace();}}//更新数据模型//构建新的数据模型类,并更新sm = new StuModel();//更新JTablejt.setModel(sm);System.out.println("成功删除一名学生信息");}}}

2.StuAdddialog.java文件(增添功能的具体实现)

/*** 增添功能*/
package com.test1;import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;public class StuAdddialog extends JDialog implements ActionListener {//定义我需要的swing组件JLabel jl1,jl2,jl3,jl4,jl5,jl6;JButton jb1,jb2;JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6;JPanel jp1,jp2,jp3;//owner它的父窗口;title窗口名;model指定是模态窗口,还是非模态public StuAdddialog(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("系别");//文本框jtf1=new JTextField();jtf2=new JTextField();jtf3=new JTextField();jtf4=new JTextField();jtf5=new JTextField();jtf6=new JTextField();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));//添加组件jp1.add(jl1);jp1.add(jl2);jp1.add(jl3);jp1.add(jl4);jp1.add(jl5);jp1.add(jl6);jp2.add(jtf1);jp2.add(jtf2);jp2.add(jtf3);jp2.add(jtf4);jp2.add(jtf5);jp2.add(jtf6);jp3.add(jb1);jp3.add(jb2);this.add(jp1,BorderLayout.WEST);this.add(jp2,BorderLayout.CENTER);this.add(jp3,BorderLayout.SOUTH);//jb2.addActionListener(this);//展现this.setSize(300, 250);this.setVisible(true);}@Overridepublic void actionPerformed(ActionEvent e) {//用户点击添加按钮后的响应动作if(e.getSource()==jb1){//连接数据库Connection conn=null;Statement stmt=null;ResultSet rs=null;PreparedStatement ps=null;//连接数据库try {//1、加载驱动Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");System.out.println("加载驱动成功");//2.创建连接对象:String url = "jdbc:sqlserver://本机的ID;databaseName=XueSheng";//注册驱动程序,打开连接对象conn = DriverManager.getConnection(url,"sa","123456");System.out.println("数据库连接成功");//与编译语句对象String strsql="insert into stu values(?,?,?,?,?,?)";ps=conn.prepareStatement(strsql);//给参数赋值ps.setString(1,jtf1.getText());ps.setString(2,jtf2.getText());ps.setString(3,jtf3.getText());ps.setInt(4,Integer.parseInt(jtf4.getText()));ps.setString(5,jtf5.getText());ps.setString(6,jtf6.getText());//4.执行操作ps.executeUpdate();//关闭添加学生的对话框:this.dispose();} catch (Exception e2) {e2.printStackTrace();}finally{try {if(ps!=null){ps.close();}if(conn!=null){conn.close();}} catch (SQLException e1) {e1.printStackTrace();}}}else if(e.getSource()==jb2){this.dispose();}}}

3.StuModel.java文件(学生模型)

/*** 这是我的一个stu表的模型* 可以把对student表的各种操作封装的该模型*/
package com.test1;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;import javax.swing.table.*;public class StuModel extends AbstractTableModel{//JTable里的用法Vector//rowData用来存放行数据//columnNames存放列名Vector rowData, columnNames;//定义操作数据库需要的东西PreparedStatement ps = 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 = new Vector();//从数据库中提取信息try {//1.加载驱动Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");System.out.println("加载驱动成功");//2.得到连接ct = DriverManager.getConnection("jdbc:sqlserver://本机的ID;databaseName=XueSheng","sa","123456");System.out.println("数据库连接成功");//3.发送sql语句ps=ct.prepareStatement(sql);//4.执行rs=ps.executeQuery();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));//加入到rowDatarowData.add(hang);}} catch (Exception e) {e.printStackTrace();}finally {//关闭try {if(rs!=null) rs.close();if(ps!=null) ps.close();if(ct!=null) ct.close();} catch (Exception e2) {// TODO: handle exception}}}   //通过传过的SQL语句来获得数据模型public StuModel(String sql){this.init(sql);}//构造函数,用于初始化我们的数据模型public StuModel() {this.init("");        }       //得到共有多少列public int getColumnCount() {// TODO Auto-generated method stubreturn this.columnNames.size();}public String getColumnName(int arg0) {// TODO Auto-generated method stubreturn (String)this.columnNames.get(arg0);}//得到共有多少行public int getRowCount() {// TODO Auto-generated method stubreturn this.rowData.size();}//得到某行某列的数据public Object getValueAt(int rowIndex, int columnIndex) {// TODO Auto-generated method stubreturn ((Vector)this.rowData.get(rowIndex)).get(columnIndex);}}

4.StuUpdDialog.java(修改学生信息任务)

package com.test1;
/** 修改已经存在的学生信息* */
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.event.*;
import java.sql.*;
public class StuUpdDialog extends JDialog implements ActionListener{
//定义我需要的swing组件JLabel jl1, jl2,jl3, jl4, jl5 ,jl6; JButton jb1,jb2; JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6; JPanel jp1,jp2,jp3;//构造函数 Frame 代表父窗口口,title 代表窗口的名字,model指定是模式窗口,还是非模式的窗口 public StuUpdDialog(Frame owner,String title,boolean model,StuModel sm,int rownum) { super(owner,title, model); //调用父类构造 方法,达到模式对话框效果jl1=new JLabel("学号"); jl2=new JLabel("姓名"); jl3=new JLabel("性别"); jl4=new JLabel("年龄"); jl5=new JLabel("籍贯"); jl6=new JLabel("系别");jtf1=new JTextField();//初始化数据jtf1.setText((String)sm.getValueAt(rownum, 0));//让jtf1不能修改jtf1.setEditable(false);jtf2=new JTextField();jtf2.setText((String)sm.getValueAt(rownum, 1));jtf3=new JTextField();jtf3.setText((String)sm.getValueAt(rownum, 2));jtf4=new JTextField();jtf4.setText(sm.getValueAt(rownum, 3).toString());jtf5=new JTextField();jtf5.setText((String)sm.getValueAt(rownum, 4));jtf6=new JTextField();jtf6.setText((String)sm.getValueAt(rownum, 5));jb1=new JButton ("修改"); jb2=new JButton ("取消");jp1=new JPanel(); jp2=new JPanel(); jp3=new JPanel();//设置布局jp1.setLayout(new GridLayout(6,1));jp2.setLayout(new GridLayout(6,1));//添加组件 jp1.add(jl1); jp1.add(jl2);jp1.add(jl3); jp1.add(jl4); jp1.add(jl5);jp1.add(jl6);jp2.add(jtf1);jp2.add(jtf2); jp2.add(jtf3); jp2.add(jtf4); jp2.add(jtf5); jp2.add(jtf6);jp3.add(jb1);jp3.add(jb2);this.add(jp1,BorderLayout.WEST); this.add(jp2,BorderLayout.CENTER); this.add(jp3,BorderLayout.SOUTH);//注册监听jb1.addActionListener(this);jb2.addActionListener(this); //展现 this.setSize(400,300); //this.setLocation(200,150); this.setVisible(true);}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif(e.getSource()==jb1) { //对用户点击添加按钮后的响应动作 //连接数据库 Connection ct =null; PreparedStatement ps =null;try {//加载驱动
//                Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//                String url="jdbc:sqlserver://localhost:1433;databaseName=HIRO"; Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");String url="jdbc:sqlserver://本机的ID;databaseName=XueSheng";ct=DriverManager.getConnection(url,"sa","123456");//预编译的都是通过添加参数的方式来赋值System.out.println("已连接数据库");ps=ct.prepareStatement("update stu set stuName=?,stuSex=?,stuAge=?,stuJg=?,stuDept =? where stuId=?");ps.setString(1, this.jtf2.getText()); ps.setString(2, this.jtf3.getText()); ps.setString(3, this.jtf4.getText()); // ps.setInt(3,Integer.parseInt(this.jtf4.getText())); ps.setString(4, this.jtf5.getText());ps.setString(5, this.jtf6.getText()); ps.setString(6, this.jtf1.getText());int i=ps.executeUpdate(); if(i==1) { System.out.print("修改成功ok"); } else { System.out.print("修改失败"); }} catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace();} finally { try { ps.close(); ct.close(); } catch (SQLException e1) {// TODO Auto-generated catch block e1.printStackTrace(); }} //关闭对话框,关闭添加对话框this.dispose();} else if(e.getSource() == jb2) {dispose();}}
}

5.SQL Server2012代码块:

--创建学生表
create table stu
(
stuId varchar(30) primary key,
stuName nvarchar(50) not null,
stuSex nchar(2) check (stuSex in('男','女')) default '男',
stuAge int check(stuAge>1),
stuJg nvarchar(30),
stuDept nvarchar(40)
)insert into stu values('sp001','张三','男',20,'山西省','计算机系')
insert into stu values('sp002','李四','男',22,'深圳市','土木工程系')
insert into stu values('sp003','王五','男',26,'天津市','信息工程系')
insert into stu values('sp004','小孟鱼','男',18,'北京市','软件工程系')--检查插入到表中的数据
select * from stu

备注:在进行java语言与数据库连接的时候需要注意以下问题:

  1. 在源代码上已用红色标注,要用到本机的ID
  2. 数据库操作需用管理员的身份操作,需要有自己独立的用户名个密码(我的用户名是:“sa”密码:“123456”)

java-学生管理系统源代码相关推荐

  1. java学生信息管理系统排序_JAVA学生管理系统源代码(最新整理)

    <JAVA学生管理系统源代码(最新整理)>由会员分享,可在线阅读,更多相关<JAVA学生管理系统源代码(最新整理)(10页珍藏版)>请在人人文库网上搜索. 1.JAVA 学生管 ...

  2. 计算机毕业设计Java汽车配件管理系统(源代码+数据库+系统+lw文档)

    计算机毕业设计Java汽车配件管理系统(源代码+数据库+系统+lw文档) 计算机毕业设计Java汽车配件管理系统(源代码+数据库+系统+lw文档) 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

  3. java学生管理系统(简易)(三)---教师端的登录主页面

    教师端的登录界面就比较清晰了...可能就我自己认为,以为前面写的太乱了...蒙圈 // 学会了先布局,在完善部分代码,嘤嘤嘤...之前那个学生的感觉凉凉啊~ // 有些代码中可能有main函数,有些没 ...

  4. c语言实现学生管理系统,C语言学生管理系统源代码

    <C语言学生管理系统源代码>由会员分享,可在线阅读,更多相关<C语言学生管理系统源代码(12页珍藏版)>请在人人文库网上搜索. 1.C语言学生成绩管理系统源代码,保证能用#in ...

  5. java考勤管理系统源码java学生考勤请假系统java学生考勤管理系统 java考勤系统java学生信息管理系统java学生管理系统

    java考勤管理系统源码java学生考勤请假系统java学生考勤管理系统 java考勤系统java学生信息管理系统java学生管理系统 public Swingtest002() {// 设置标题se ...

  6. java学生管理系统代码_java学生信息管理系统(附源码)

    一:   介绍 1:实现登录界面 2:实现主界面 有两种操作 一种是按钮操作  另外一种是SQL语句. 3:连接SQL server 2008 数据库 用到的软件及环境SQLserver2008,ec ...

  7. c语言编程学生管理系统的代码,C语言学生管理系统源代码.doc

    C语言学生成绩管理系统源代码,保证能用-- #include "malloc.h" #include "stdio.h" #include "stdl ...

  8. 第一篇博客,java学生管理系统(挑战全网最全)

    java学生信息管理系统,(课设必备),附有源码和简版链接 博主虽然技术不高,但是系统写的真的是没话说,留着开学java课设用了. 直接转载链接了,查看系统入口 https://blog.csdn.n ...

  9. Java—学生管理系统使用文件永久存储

    学生管理系统 上一次使用的集合只能对学生信息进行临时存储,关闭程序时数据就会消失,这次新增了文件存储,达到对学生信息的永久记录,首先在上次代码的基础上,增加了两个方法,一个是从学生文件读取信息到集合中 ...

  10. java学生管理系统(swing) (没用数据库,附源码)

    如果有需要带数据库的,请小伙伴移步至:java+mysql学生管理系统(附源码,无套路) 事先声明: 程序简易,只是为了记录学习过程,大佬们勿喷,要实在忍不住,麻烦各位大佬轻点喷就是! 但是如果有任何 ...

最新文章

  1. 缓存穿透、并发和雪崩那些事
  2. lisp xy轴不等比缩放_UV的详细解释,不懂得赶紧看过来!
  3. spring environment_SpringBoot实战8-Spring基础-应用环境
  4. CNN中的权重维度解析以及卷积核中的数值是怎么确定的
  5. 名词解释 算法的有限性_数据结构与算法期中考试卷(含答案)
  6. html等待图片全部加载,imgLoad等待图片资源加载完成后执行函数(图片预加载)...
  7. 苹果中国大出血! AirPods 2免费送了
  8. 记录几条简单的正则表达式
  9. 从零开始学_JavaScript_系列(六)——CSS的padding、margin、border属性超详细解释(图文)...
  10. 第9章 互相作用的圆球 (《Python趣味创意编程》教学视频)
  11. matlab costas环,MATLAB写COSTAS环的问题。
  12. 常见电脑病毒及解决措施
  13. 超详细的CentOS7的下载安装配置教程
  14. QCon校友会之柴锋:10次QCon之旅
  15. python画五角星代码_如何用python画一个五角星_python绘制五角形教程
  16. 墨天轮沙龙 | 东方通张唐:东方通中间件助力信创发展
  17. 从Jdk8到Jdk12的Java虚拟机垃圾回收(垃圾收集)相关论文和官方网站集锦
  18. TensorFlow 从入门到精通(13)—— NLP初探:电影评论感情分析
  19. 关于物流管理的软件测试项目经验,物流软件自动化测试用例管理和执行调度的设计与实现...
  20. GraphQL的认识与使用

热门文章

  1. spring-cloud 出现 No instances available for xxx的问题
  2. java微信服务通知
  3. 网页设计期末作品_平面、网页、UI设计师该如何做作品集?
  4. 双因素方差分析和单因素方差分析
  5. html打印去掉页码和日期,PPT打印讲义时如何去掉日期页码?
  6. 南京大学计算机学硕博士,2019年南京大学计算机软件研究所招收研究生说明
  7. 如何删除PPT中自带的切换动画?
  8. “00后”消费数据分析,一文教你撩动“00后”购物欲
  9. 2020-10-28-Requests及爬虫清单
  10. 大数据平台核心架构图鉴,建议收藏