资源描述
学生信息的增删改查
———————————————————————————————— 作者:
———————————————————————————————— 日期:
10
个人收集整理 勿做商业用途
学生信息管理系统
1 引言
对学生的根本信息进展简单操作,可按学号进展查询、修改、删除操作
注意:此处用到的是access数据库。
系统实现:
package example;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.sql.*;
import java.util.Vector;
class myrandom extends JFrame implements ActionListener{
//这个程序的数据是没有写入文件的
JFrame f1,f2;
JButton b1,b2,b3,b4,modify,direction;
JLabel a1;
JTextField t1,t2,t3,t4;
JTable table;
myrandom〔){
ﻩtable=new JTable〔);
f1=new JFrame("学生信息系统");
f1.setVisible(true);//设置窗体可见
a1=new JLabel("输入学号:");
t1=new JTextField(100);
ﻩt2=new JTextField(100〕;
ﻩb1=new JButton("查姓名:"〕;
b2=new JButton("插入信息");
b3=new JButton〔"查看数据");
b4=new JButton("删除");
t3=new JTextField(100);
modify=new JButton("修改");
direction=new JButton〔"操作说明"〕;
t4=new JTextField(100〕;
f1.setLayout(new GridLayout(6,2));//设置窗体的分布为四行二列
ﻩ
f1.add(a1);f1.add(t1);//参加窗体
ﻩf1.add〔b1);f1.add(t2);
f1.add(b2);f1.add〔b3〕;
ﻩf1.add(b4);f1.add〔t3);
ﻩf1.add(modify);f1.add(t4);
ﻩf1.add(direction);
ﻩf1.setSize(200,200);//设置窗体大小
b1.addActionListener(this);
b2.addActionListener(this);//设置按钮事件
ﻩb3.addActionListener(this);
b4.addActionListener(this);
modify.addActionListener(this);ﻩ
ﻩdirection.addActionListener(this〕;
}
ﻩpublic void actionPerformed(ActionEvent e) {
ﻩf1.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//关闭窗体后释放资源,假设不写这条语句,
ﻩ //那么虽然关闭了窗体,但进程还在运行。
ﻩtry{//这个try是在整个action中的,用于捕获建立连接异常
ﻩ Class.forName〔"sun.jdbc.odbc.JdbcOdbcDriver");
ﻩString dburl="jdbc:odbc:mydb"; //mydb是我建立的access数据源
ﻩ Connection conn=DriverManager.getConnection(dburl〕;//这四条语句是用来在整个action事件中建立连接的
Statement stml=conn.createStatement(); //也就不用在每一个button事件〔b1,b2,b3,b4)中重复写这四条语句
ﻩ
ﻩ//以上四条语句也可以改写为下面这四条语句:
ﻩ//ﻩString dburl="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=C:\\db1.mdb";
ﻩﻩ//ﻩClass.forName("sun.jdbc.odbc.JdbcOdbcDriver");
ﻩﻩ//ﻩConnection conn = DriverManager.getConnection(dburl);
ﻩ // Statement stml = conn.createStatement〔);
ﻩ if(e.getSource()==b3){//查看数据〔查看数据库中student表的所有信息
ﻩﻩﻩ
ﻩf2=new JFrame("显示信息"〕;
ﻩﻩf2.setVisible(true〕;//设置窗体可见
f2.setSize(200,200);//设置窗体大小
ﻩﻩ Vector rows = new Vector(〕;//用于存储数据库中的行信息
ﻩ Vector columnHeads = new Vector〔〕; //用于存储数据库中的列标题
ﻩ try{
ﻩ ﻩResultSet rs=stml.executeQuery("select * from student"〕;
ﻩ boolean moreRecords = rs.next〔); // 定位到达第一条记录,这句话一定要写
ﻩﻩ
ﻩ ﻩ ResultSetMetaData rsmd = rs.getMetaData(); // 获得rs结果集中列属性信息
ﻩ for (int i = 1; i <= rsmd.getColumnCount(); ++i)
ﻩ columnHeads.addElement(rsmd.getColumnName(i)〕; // 获得列名〔将列名存放至向量columnHeads)
do
{
rows.addElement(getNextRow〔rs, rsmd)); //获取下一行记录
}
ﻩ while (rs.next〔)); // 利用循环获得所有记录
ﻩ JTable jTable = new JTable(rows, columnHeads); // 将获得的行列数据信息作为参数重新构造表格视图
jTable.setSize(new Dimension(383, 81));
JScrollPane scroller = new JScrollPane(jTable〕;// 创立带有滚动条的面板,并将表格视图参加
ﻩ f2.add(scroller, BorderLayout.CENTER〕; // 将面板重新参加溶器中
ﻩ f2.validate(); // 验证此容器及其所有子组件
ﻩﻩﻩﻩwhile(rs.next()){
ﻩ String ss=rs.getString〔"id"〕;//显示输出结果
ﻩﻩﻩﻩﻩString s2=rs.getString("name");
ﻩ ﻩSystem.out.println(ss+s2);
ﻩ ﻩ}
ﻩ rs.close〔〕;
ﻩﻩ stml.close();
ﻩﻩﻩﻩconn.close(); //使用完后要记得关闭所有连接
ﻩﻩﻩ}catch〔Exception ee〕{System.out.println(ee);}
ﻩﻩ}
ﻩ
ﻩﻩelse if(e.getSource(〕==b2)//插入信息〔在t1文本框中输入要插入的学号,
ﻩ { //在t2文本框中输入要插入的姓名,然后点击插入信息
ﻩﻩﻩtry{
stml.executeUpdate〔"insert into student values('"+t1.getText()+"','"+t2.getText〔)+"')");
//excute的返回值是boolean型的,excuteUpdate的返回值是int型的,executeQuery的返回值是ResultSet型的
stml.close();
conn.close();ﻩﻩ
ﻩﻩﻩ}catch(Exception e1〕{System.out.println〔e1);}
ﻩﻩSystem.out.println("Insert successfully!"〕;
ﻩJOptionPane.showMessageDialog(f1,"插入成功!"〕;
ﻩﻩ}
ﻩﻩ
else if(e.getSource〔)==b1〕//查姓名〔在t1文本框中输入学号,
ﻩ { //在t2文本框中显示相应的姓名
ﻩﻩ t3.setText〔"");
ﻩ t4.setText(""〕;
ﻩ try{
ﻩﻩﻩSystem.out.println〔"hi");
ﻩﻩ String mysql="select name from student where id='"+t1.getText()+"'";
ﻩ ﻩ//ResultSet rs=stml.executeQuery("select name from student where id='"+t1.getText〔)+"'"〕;
ﻩ
ﻩResultSet rs=stml.executeQuery〔mysql);
ﻩ ﻩString sn="";
ﻩﻩ while(rs.next(〕) //此处while语句用于逐条查询
ﻩ ﻩ{
ﻩ ﻩ
ﻩ sn=rs.getString("name");
ﻩﻩ System.out.println〔"学号为:"+t1.getText()+" 姓名是:"+sn);
ﻩ
ﻩ }
ﻩ if(sn==""〕 //如果没有找到该学生的姓名
ﻩ ﻩﻩJOptionPane.showMessageDialog(f1,"没有该学生!");
ﻩ else
ﻩ t2.setText(sn);
ﻩ
ﻩ rs.close(〕;
ﻩﻩstml.close();
ﻩﻩ conn.close(〕;
ﻩ ﻩ}catch(Exception ee){System.out.println(ee);}
ﻩﻩ}
ﻩ
ﻩ else if(e.getSource(〕==b4〕 { //按学号删除记录〔删除学号和姓名〕
ﻩ ﻩtry{ //在t3文本框中输入要删除的学号
ﻩ ﻩﻩt1.setText(""〕;
ﻩﻩ ﻩt2.setText("");
ﻩ t4.setText("");
ﻩﻩﻩSystem.out.println("hi");
ﻩﻩﻩﻩString yy="";
String mmsql="select * from student where id='"+t3.getText〔〕+"'";
ﻩString mysql="delete from student where id='"+t3.getText(〕+"'";
ﻩﻩ ﻩResultSet rs=stml.executeQuery(mmsql);
ﻩwhile〔rs.next()〕{
ﻩﻩﻩﻩyy=rs.getString("name");ﻩ
ﻩﻩ ﻩ}
ﻩﻩ if(yy==""){
ﻩ ﻩﻩJOptionPane.showMessageDialog〔f1,"删除失败,没有该学生!");
ﻩ ﻩrs.close();
ﻩﻩ }
ﻩﻩﻩ else{
ﻩﻩ stml.executeUpdate(mysql);
JOptionPane.showMessageDialog(f1,"删除成功!");
ﻩ ﻩ }
ﻩﻩﻩﻩstml.close〔〕;
ﻩ ﻩ conn.close(〕;
}catch(Exception ee){System.out.println(ee);}
ﻩSystem.out.println("success to delete!");
ﻩ}
ﻩ
ﻩﻩelse if〔e.getSource()==modify){//修改姓名:在t1文本框中输入要修改的学号,
ﻩtry{ // 在t4文本框中输入修改后的名字
//JOptionPane.showMessageDialog(f1,"请在输入学号后面输入修改前的学号,在修改后面输入修改后该学号的姓名!");
ﻩﻩ t2.setText("");
t3.setText(""〕;
ﻩ ﻩString mm="";
ﻩ ﻩString mmsql="select * from student where id='"+t1.getText()+"'";
ﻩﻩ String mysql="update student set name='"+t4.getText(〕+"' where id='"+t1.getText()+"'";
ﻩ ResultSet rs=stml.executeQuery(mmsql);
ﻩﻩﻩwhile〔rs.next(〕){
ﻩﻩﻩmm=rs.getString("name");
ﻩﻩﻩ}
if〔mm==""){
JOptionPane.showMessageDialog(f1,"修改失败,没有该学生!");
ﻩ rs.close();}
ﻩﻩelse{
ﻩﻩﻩstml.executeUpdate(mysql〕;
ﻩ ﻩJOptionPane.showMessageDialog(f1,"修改成功!");
ﻩﻩ}
ﻩﻩ stml.close();
conn.close();
ﻩﻩ}catch(Exception eee){System.out.println(eee〕;}
ﻩ System.out.println〔"Congratulations!modify success!");
ﻩﻩ}
ﻩﻩelse {
ﻩ try{JOptionPane.showMessageDialog(f1,"1假设要修改:请在输入学号后面输入修改前的学号," +"\\\n"+
ﻩ ﻩ "在修改后面输入修改后该学号的姓名,然后点击'修改';"+"\\\n "+"2假设要删除,请在删除后面出入要删学生的学号,然后点击'删除';" +
ﻩﻩﻩ "\\\n"+"3假设要插入信息,请在输入学号后面输入学号,在查姓名后面输入姓名,然后点击'插入信息';" +
ﻩ "\\\n"+" 4假设要假设要查询数据,直接点击'查看数据';" +
ﻩﻩﻩ "\\\n"+" 5输入学生的学号,再点击'查姓名'可以查找该学号学生的姓名。"
ﻩ ﻩﻩﻩ〕;
ﻩﻩﻩﻩ
}catch(Exception e2){System.out.println〔e2);}
}
ﻩﻩ
ﻩﻩ
}catch(Exception ee){System.out.println(ee〕;}
ﻩ
}
ﻩ
ﻩpublic static void main〔String[] args){
ﻩ new myrandom〔);
}
public Vector getNextRow(ResultSet rs, ResultSetMetaData rsmd)throws SQLException //该方法获取下一行记录
ﻩ{
Vector currentRow = new Vector(); // 定义一个向量,用于存放记录
for (int i = 1; i <= rsmd.getColumnCount〔); ++i)
ﻩ currentRow.addElement(rs.getString(i〕); // 获取记录
ﻩ return currentRow; // 返回记录
}
运行后效果如图:
}
展开阅读全文