只设计了一部分 全部的太多了。会慢慢更新增加。
学生信息管理包括添加,删除,修改,查询,显示全部等
具体结构如图
在SQL Server 2005数据库上实现数据操作。使用纯面向对象的java语言作为开发语言
在sql server 2005新建一个名为Student的数据库,在下面新建一个名为stu的表
再新建一个名为login的表 存贮账号 密码
当然 列名你可以随便写 当然 要有个学号啊。我的修改等等都是根据学号的。
这是登录界面入口
package 学生信息管理系统; import java.sql.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.Color; public class 学生信息管理系统 { public static void main(String[] args) { new loginFrame(); } } class loginFrame extends JFrame implements ActionListener{ Box box1,box2,baseBox; JLabel userName,userPwd,tubiao; JTextField nameField; JPasswordField pwdField; JButton button; JTabbedPane choose; JPanel panel1,panel2; loginFrame(){ setBackground(Color.green); tubiao=new JLabel(new ImageIcon("image/4.png")); add(tubiao,BorderLayout.NORTH); userName=new JLabel("账号",JLabel.CENTER); userPwd=new JLabel("密码",JLabel.CENTER); nameField=new JTextField(8); pwdField=new JPasswordField(8); panel1=new JPanel(); panel2=new JPanel(); choose=new JTabbedPane(); choose.add("教师登陆",panel1); choose.add("学生登陆",panel2); panel1.setLayout(new GridLayout(2,2)); panel1.add(userName);panel1.add(nameField); panel1.add(userPwd);panel1.add(pwdField); add(choose,BorderLayout.CENTER); button=new JButton("登陆"); add(button,BorderLayout.SOUTH); button.addActionListener(this); ImageIcon tubiao=new ImageIcon("image/3.png"); setIconImage(tubiao.getImage()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); setBounds(400,150,300,250); setTitle("登陆"); validate(); } public void actionPerformed(ActionEvent e){ String name,pwd; name=nameField.getText(); pwd=pwdField.getText(); try{ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); } catch(ClassNotFoundException ex){ System.out.println(ex); } try{ Connection con; Statement sql; ResultSet rs; String url,userName,userPwd; url="jdbc:sqlserver://localhost:1433;DatabaseName=Student"; userName="sa"; userPwd="aaascx"; con=DriverManager.getConnection(url,userName,userPwd); sql=con.createStatement(); rs=sql.executeQuery("select * from login where name ='"+name+"' and pwd='"+pwd+"'"); int q=0; while(rs.next()){ q++; } if(q>0){ JOptionPane.showMessageDialog(this, "登陆成功!","消息对话框",JOptionPane.WARNING_MESSAGE); this.dispose(); new CommFrame(); } else JOptionPane.showMessageDialog(this, "账号或者密码错误!","消息对话框",JOptionPane.WARNING_MESSAGE); } catch(SQLException exp){ System.out.println(exp); } } }
登陆成功后 点击确定 登陆界面会消失 出现学生信息界面 。我的初始密码是12345 12345
你也可以随便设置。
还有我只设置了教师登陆的界面,学生登陆的界面没有设置。
然后就是一个集合所有窗口的卡片式布局,称为CommFrame
package 学生信息管理系统; import javax.swing.*; import java.awt.color.*; import java.awt.*; import java.awt.event.*; public class CommFrame extends JFrame implements ActionListener{ JMenuBar bar; JMenu menu; JMenuItem scanItem,deleteItem,updateItem,insertItem,searchItem; Scan_stu scan;//查看所有学生信息 Delete_stu delete;//删除学生信息 Update_stu update;//更新学生信息 Insert_stu insert;//插入学生信息 Search_stu search;//查找学生信息 CardLayout card=null; JPanel pCenter; CommFrame(){ setLayout(new FlowLayout()); scanItem=new JMenuItem("浏览"); deleteItem=new JMenuItem("删除"); updateItem=new JMenuItem("修改"); insertItem =new JMenuItem("添加"); searchItem=new JMenuItem("查找"); bar=new JMenuBar(); menu=new JMenu("菜单"); menu.add(scanItem); menu.add(deleteItem); menu.add(updateItem); menu.add(insertItem); menu.add(searchItem); bar.add(menu); setJMenuBar(bar); scanItem.addActionListener(this); deleteItem.addActionListener(this); updateItem.addActionListener(this); insertItem.addActionListener(this); searchItem.addActionListener(this); scan=new Scan_stu(); update=new Update_stu(); delete=new Delete_stu(); insert=new Insert_stu(); search=new Search_stu(); card=new CardLayout(); pCenter=new JPanel(); pCenter.setLayout(card); pCenter.add("scanItem", scan); pCenter.add("deleteItem",delete); pCenter.add("updateItem",update); pCenter.add("insertItem",insert); pCenter.add("searchItem",search); add(pCenter,BorderLayout.SOUTH); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); setBounds(400,150,550,400); setTitle("学生信息管理系统"); validate(); } public void actionPerformed(ActionEvent e){ if(e.getSource()==scanItem) card.show(pCenter, "scanItem"); else if(e.getSource()==deleteItem) card.show(pCenter, "deleteItem"); else if(e.getSource()==updateItem) card.show(pCenter, "updateItem"); else if(e.getSource()==insertItem) card.show(pCenter, "insertItem"); else if(e.getSource()==searchItem) card.show(pCenter, "searchItem"); } }这里是浏览所有学生信息:Scan_stu
package 学生信息管理系统; import java.awt.*; import javax.swing.JFrame; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; public class Scan_stu extends JPanel implements ActionListener{ DefaultTableModel update_table; JTable table; Query query; JButton button; Object a[][]; String b[]; Scan_stu(){ setLayout(new FlowLayout()); setBackground(Color.green); query=new Query(); query.setTableName("stu"); a=query.getRecord(); b=query.getField(); update_table=new DefaultTableModel(a, b); table=new JTable(update_table); button=new JButton("更新"); button.addActionListener(this); JScrollPane scrollPane = new JScrollPane(table); scrollPane.setBounds(0,0,550,380); table.setPreferredSize(new Dimension(scrollPane.getWidth() - 50, scrollPane.getHeight()*2));//使表格出现滑动条 add(scrollPane); add(button); } public void actionPerformed(ActionEvent e){ a=null;b=null; query=new Query(); query.setTableName("stu"); a=query.getRecord(); b=query.getField(); update_table.setDataVector(a, b); } }这里是界面
再加上Scan_stu调用的Query查找函数
package 学生信息管理系统; import java.sql.*; public class Query { Object a[][]=null; String b[]=null; String tableName=""; int 字段个数; public Query(){ try{ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); } catch(ClassNotFoundException e){ System.out.println(e); } } public Object[][] getRecord(){//求表格的内容 a=null; b=null; Connection con; Statement sql; ResultSet rs; try{ String url,userName,userPwd; url="jdbc:sqlserver://localhost:1433;DatabaseName=Student"; userName="sa"; userPwd="aaascx"; con=DriverManager.getConnection(url,userName,userPwd); int 字段个数=getZiDuan(); int n=getAmount(); a=new Object[n][字段个数]; sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); rs=sql.executeQuery("select * from "+tableName); int m=0; while(rs.next()){ for(int k=1;k<=字段个数;k++){ a[m][k-1]=rs.getString(k); } System.out.println(); m++; } con.close(); } catch(SQLException e){ System.out.println("请输入正确的表名"+e); } return a; } public int getAmount(){//求表内容有多少行 Connection con; Statement sql; ResultSet rs; try{ String url,userName,userPwd; url="jdbc:sqlserver://localhost:1433;DatabaseName=Student"; userName="sa"; userPwd="aaascx"; con=DriverManager.getConnection(url,userName,userPwd); sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); rs=sql.executeQuery("select * from "+tableName); rs.last(); int rows=rs.getRow(); return rows; } catch(SQLException exp){ System.out.println(""+exp); return 0; } } public String[] getField(){//求字段名称 Connection con; try{ String url,userName,userPwd; url="jdbc:sqlserver://localhost:1433;DatabaseName=Student"; userName="sa"; userPwd="aaascx"; con=DriverManager.getConnection(url,userName,userPwd); DatabaseMetaData metadata=con.getMetaData(); ResultSet rs1=metadata.getColumns(null, null, tableName, null); int 字段个数=getZiDuan(); b=new String[字段个数]; int k=0; while(rs1.next()){ b[k]=rs1.getString(4); k++; } con.close(); } catch(SQLException e){ System.out.println(e); } return b; } public void setTableName(String s){//初试表名 tableName=s.trim(); } public int getZiDuan(){//求字段个数 Connection con; PreparedStatement sql; ResultSet rs; try{ String url,userName,userPwd; url="jdbc:sqlserver://localhost:1433;DatabaseName=Student"; userName="sa"; userPwd="aaascx"; con=DriverManager.getConnection(url,userName,userPwd); DatabaseMetaData metadata=con.getMetaData(); ResultSet rs1=metadata.getColumns(null, null, tableName, null); 字段个数=0; while(rs1.next()) 字段个数++; } catch(SQLException e){ System.out.println(e); } return 字段个数; } }
然后是删除学生信息函数
Delete_stu
package 学生信息管理系统; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.color.*; import java.sql.*; public class Delete_stu extends JPanel implements ActionListener{ Box box1,box2,baseBox; Query query; JButton button; JTextField field[]=null; String a[]=null; int n,mark; Delete delete; String tableName; Delete_stu(){ query=new Query(); setBackground(Color.green); query.setTableName("stu"); a=query.getField(); box1=Box.createVerticalBox(); box2=Box.createVerticalBox(); n=a.length; field =new JTextField[n]; for(int i=0;i<n;i++){ field[i]=new JTextField(10); if(a[i].equals("学号")==true) box1.add(new JLabel("* "+a[i])); else box1.add(new JLabel(" "+a[i])); box1.add(Box.createVerticalStrut(8)); box2.add(field[i]); box2.add(Box.createVerticalStrut(8)); } box1.add(new JLabel(" 单击删除")); button=new JButton("删除"); button.addActionListener(this); box2.add(button); baseBox=Box.createHorizontalBox(); baseBox.add(box1); baseBox.add(Box.createHorizontalStrut(8)); baseBox.add(box2); add(baseBox); } public void actionPerformed(ActionEvent e){ if(field[mark].getText().toString().equals("")==true) JOptionPane.showMessageDialog(this, "带*号为必填内容","消息对话框",JOptionPane.WARNING_MESSAGE); else { Delete delete=new Delete(); delete.setTableName("stu"); delete.setField(field); delete.setA(a); delete.Execute_Delete(mark); } } }
这是调用的删除函数:Delete
package 学生信息管理系统; import javax.swing.*; import java.sql.*; import java.awt.*; import java.awt.event.*; public class Delete extends JFrame{ String tableName; JTextField field[]=null; String a[]=null; public void setTableName(String s){ tableName=s.trim(); } public void setField(JTextField s[]){ field=s; } public void setA(String e[]){ a=e; } public Delete(){ } public void Execute_Delete(int n){ String SQL=""; Connection con; Statement sql; SQL="delete from "+tableName+" where "+a[n]+" ='"+field[n].getText().toString()+"'"; try{ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); } catch(ClassNotFoundException exp){ System.out.println(exp); } try{ String url,userName,userPwd; url="jdbc:sqlserver://localhost:1433;DatabaseName=Student"; userName="sa"; userPwd="aaascx"; con=DriverManager.getConnection(url,userName,userPwd); sql=con.createStatement(); sql.executeUpdate(SQL); con.close(); JOptionPane.showMessageDialog(this, "删除成功","消息对话框",JOptionPane.WARNING_MESSAGE); for(int i=0;i<field.length;i++) field[i].setText(null);; } catch(SQLException ex){ System.out.println(ex); } } }然后是修改学生信息的Update_stu函数
package 学生信息管理系统; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.color.*; import java.sql.*; public class Update_stu extends JPanel implements ActionListener{ Box box1,box2,baseBox; Query query; JButton button; JTextField field[]=null; String a[]=null; int n,mark; Update update; String tableName; Update_stu(){ query=new Query(); setBackground(Color.green); query.setTableName("stu"); a=query.getField(); box1=Box.createVerticalBox(); box2=Box.createVerticalBox(); n=a.length; field =new JTextField[n]; for(int i=0;i<n;i++){ field[i]=new JTextField(10); if(a[i].equals("学号")==true) box1.add(new JLabel("* "+a[i])); else box1.add(new JLabel(" "+a[i])); box1.add(Box.createVerticalStrut(8)); box2.add(field[i]); box2.add(Box.createVerticalStrut(8)); } box1.add(new JLabel(" 单击修改")); button=new JButton("修改"); button.addActionListener(this); box2.add(button); baseBox=Box.createHorizontalBox(); baseBox.add(box1); baseBox.add(Box.createHorizontalStrut(8)); baseBox.add(box2); add(baseBox); } public void actionPerformed(ActionEvent e){ int i; for(i=0;i<n;i++){ if(a[i].equals("学号")==true&&field[i].getText().toString().equals("")==true){ mark=i; JOptionPane.showMessageDialog(this, "带*必须填写!!!","消息对话框",JOptionPane.WARNING_MESSAGE); break; } } if(i==n){ int choose=JOptionPane.showConfirmDialog(this, "请确保你的学号是正确的,否则会更新失败!!!如果学号错误" + "请先删除再添加","消息对话框",JOptionPane.WARNING_MESSAGE); if(choose==JOptionPane.YES_OPTION){ Update update=new Update(); update.setTableName("stu"); update.setField(field); update.setA(a); update.Execute_Update(mark); JOptionPane.showMessageDialog(this, "更新成功!!!","消息对话框",JOptionPane.WARNING_MESSAGE); } } } }
这是调用的修改函数Update
package 学生信息管理系统; import javax.swing.*; import java.sql.*; import java.awt.*; import java.awt.event.*; public class Update extends JFrame{ String tableName; JTextField field[]=null; String a[]=null; public void setTableName(String s){ tableName=s.trim(); } public void setField(JTextField s[]){ field=s; } public void setA(String e[]){ a=e; } public Update(){ } public void Execute_Update(int mark){ String SQL[]=new String [a.length]; Connection con; Statement sql; for(int i=0;i<a.length;i++) { if(i!=mark) SQL[i]="update "+tableName+" set "+a[i]+" ='"+field[i].getText().toString()+"' where "+a[mark]+" ='"+field[mark].getText().toString()+"'"; } try{ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); } catch(ClassNotFoundException exp){ System.out.println(exp); } try{ String url,userName,userPwd; url="jdbc:sqlserver://localhost:1433;DatabaseName=Student"; userName="sa"; userPwd="aaascx"; con=DriverManager.getConnection(url,userName,userPwd); sql=con.createStatement(); for(int i=0;i<field.length;i++) if(i!=mark&&field[i].getText().toString().equals("")==false) sql.executeUpdate(SQL[i]); con.close(); for(int i=0;i<field.length;i++) field[i].setText(null); } catch(SQLException ex){ System.out.println(ex); } } }
package 学生信息管理系统; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.color.*; import java.sql.*; public class Insert_stu extends JPanel implements ActionListener{ Box box1,box2,baseBox; Query query; JButton button; JTextField field[]=null; String a[]=null; int n,mark; Insert insert; String tableName; Insert_stu(){ query=new Query(); setBackground(Color.green); query.setTableName("stu"); a=query.getField(); box1=Box.createVerticalBox(); box2=Box.createVerticalBox(); n=a.length; field =new JTextField[n]; for(int i=0;i<n;i++){ field[i]=new JTextField(10); if(a[i].equals("学号")==true) box1.add(new JLabel("* "+a[i])); else box1.add(new JLabel(" "+a[i])); box1.add(Box.createVerticalStrut(8)); box2.add(field[i]); box2.add(Box.createVerticalStrut(8)); } box1.add(new JLabel(" 单击添加")); button=new JButton("添加"); button.addActionListener(this); box2.add(button); baseBox=Box.createHorizontalBox(); baseBox.add(box1); baseBox.add(Box.createHorizontalStrut(8)); baseBox.add(box2); add(baseBox); } public void actionPerformed(ActionEvent e){ int i; for(i=0;i<n;i++){ if(field[i].getText().toString().equals("")==true){ JOptionPane.showMessageDialog(this, "必须全部填写","消息对话框",JOptionPane.WARNING_MESSAGE); break; } if(a[i].equals("学号")==true){ mark=i; } } if(i==n){ Insert insert=new Insert(); insert.setTableName("stu"); insert.setField(field); insert.setA(a); insert.Execute_Insert(mark); } } }
调用的添加函数Insert
package 学生信息管理系统; import javax.swing.*; import java.sql.*; import java.awt.*; import java.awt.event.*; public class Insert extends JFrame{ String tableName; JTextField field[]=null; String a[]=null; Update update; public void setTableName(String s){ tableName=s.trim(); } public void setField(JTextField s[]){ field=s; } public void setA(String e[]){ a=e; } public Insert(){ } public void Execute_Insert(int mark){ String SQL; Connection con; Statement sql; try{ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); } catch(ClassNotFoundException exp){ System.out.println(exp); } try{ String url,userName,userPwd; url="jdbc:sqlserver://localhost:1433;DatabaseName=Student"; userName="sa"; userPwd="aaascx"; SQL="insert "+tableName+"("+a[mark]+") values ('"+field[mark].getText().toString()+"')"; con=DriverManager.getConnection(url,userName,userPwd); sql=con.createStatement(); sql.execute(SQL); con.close(); update =new Update(); update.setTableName(tableName); update.setField(field); update.setA(a); update.Execute_Update(mark); JOptionPane.showMessageDialog(this, "添加成功!!!","消息对话框",JOptionPane.WARNING_MESSAGE); for(int i=0;i<field.length;i++) field[i].setText(null);; } catch(SQLException ex){ System.out.println(ex); } } }
package 学生信息管理系统; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.DefaultTableModel; import java.awt.color.*; import java.sql.*; public class Search_stu extends JPanel implements ActionListener{ Box box[],baseBox; Query query; JButton button; JTextField field[]=null; String a[]=null; int n,mark,m; Search search; String tableName; DefaultTableModel search_table; Object object[][]; String b[]; Search_stu(){ setLayout(new FlowLayout()); query=new Query(); setBackground(Color.green); query.setTableName("stu"); a=query.getField(); n=a.length; box=new Box [n+1]; field =new JTextField[n]; for(int i=0;i<n;i++){ box[i]=Box.createHorizontalBox(); field[i]=new JTextField(10); if(a[i].equals("学号")==true){ box[i].add(new JLabel(" "+a[i])); box[i].add(Box.createHorizontalStrut(8)); box[i].add(field[i]); } else{ box[i].add(new JLabel(" "+a[i])); box[i].add(Box.createHorizontalStrut(8)); box[i].add(field[i]); } } object =new Object[0][0]; search_table=new DefaultTableModel(object, a); JTable table=new JTable(search_table); button=new JButton("查找"); button.addActionListener(this); box[n-1].add(new JLabel(" 单击查找")); box[n-1].add(Box.createHorizontalStrut(8)); box[n-1].add(button); baseBox=Box.createVerticalBox(); for(int i=0;i<n;i++){ baseBox.add(box[i]); baseBox.add(Box.createVerticalStrut(8)); } JScrollPane scrollPane=new JScrollPane(table); scrollPane.setBounds(0,0,550,380); table.setPreferredSize(new Dimension(scrollPane.getWidth() - 50, scrollPane.getHeight()*2)); baseBox.add(scrollPane); add(baseBox); table.revalidate(); } public void actionPerformed(ActionEvent e){ int i,sum=0; for(i=0;i<n;i++){ if(field[i].getText().toString().equals("")==true) sum++; } System.out.println(sum); if(sum==n) JOptionPane.showMessageDialog(this, "你未输入任何内容,请重新输入!","消息对话框",JOptionPane.WARNING_MESSAGE); else{ Search search=new Search(); search.setTableName("stu"); search.setField(field); search.setA(a); search.Execute_Search(); object=null;b=null; query=new Query(); query.setTableName("stu"); object=search.getRecord(); search_table.setDataVector(object, a); } } }
然后是查找函数:
package 学生信息管理系统; import javax.swing.*; import java.sql.*; import java.awt.*; import java.awt.event.*; public class Search extends JFrame{ String tableName; JTextField field[]=null; String a[]=null; Object object[][]; String b[]; public void setTableName(String s){ tableName=s.trim(); } public void setField(JTextField s[]){ field=s; } public void setA(String e[]){ a=e; } public Search(){ } public void Execute_Search(){ String SQL="select * from "+tableName+" where "; Connection con; Statement sql; ResultSet rs; int sum=0; for(int i=0;i<a.length;i++) { if(field[i].getText().toString().equals("")==false){ if(sum==0) SQL=SQL+a[i]+" = '"+field[i].getText().toString()+"'"; else SQL=SQL+" and "+a[i]+" = '"+field[i].getText().toString()+"'"; sum++; } } try{ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); } catch(ClassNotFoundException exp){ System.out.println(exp); } try{ String url,userName,userPwd; url="jdbc:sqlserver://localhost:1433;DatabaseName=Student"; userName="sa"; userPwd="aaascx"; con=DriverManager.getConnection(url,userName,userPwd); sql=con.createStatement(); sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); rs=sql.executeQuery(SQL); rs.last(); object =new Object[rs.getRow()][a.length]; rs.beforeFirst(); int ncase=0; while(rs.next()){ for(int i=1;i<=a.length;i++){ object[ncase][i-1]=rs.getString(i); } ncase++; } con.close(); for(int i=0;i<field.length;i++) field[i].setText(null); } catch(SQLException ex){ System.out.println(ex); } } public Object[][] getRecord(){ return object; } }
比如写完一个更新操作 把里面的sql语句改改 不就是删除操作吗。。内容看着多 其实都一样。一起加油吧!