📄 studentmanagement2.java
字号:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.sql.*;
public class StudentManagement2 extends JFrame implements ActionListener{
JTabbedPane dbTabPane;
JPanel inputPanel;//录入面板;
JPanel viewPanel;//浏览面板;
JPanel updatePanel;//更新面板;
JPanel deletePanel;//删除面板;
JButton inputBtn;
StudentPanel inputInnerPanel;
JTextArea viewArea;
JButton viewBtn;
StudentPanel updateInnerPanel;
JLabel updateInputLbl;
JTextField updateInputText;
JButton updateBtn;
StudentPanel deleteInnerPanel;
JLabel inputNoLable;
JTextField inputNoField;
JButton deleteBtn;
Connection conn;
Statement stmt;
public StudentManagement2() {
super("信息管理学生基本信息管理");
setGUIComponent();
}
public void setGUIComponent(){
Container c=getContentPane();
c.setLayout(new BorderLayout());
dbTabPane=new JTabbedPane();
//定义录入面板
inputPanel=new JPanel();
inputPanel.setLayout(new FlowLayout());
inputBtn=new JButton("录入");
inputBtn.addActionListener(this);
inputInnerPanel=new StudentPanel();
inputPanel.add(inputInnerPanel);
inputPanel.add(inputBtn);
dbTabPane.add("录入记录",inputPanel);
//定义浏览面板
viewPanel=new JPanel();
viewPanel.setLayout(new BorderLayout());
viewArea=new JTextArea(6,35);
viewBtn=new JButton("浏览");
viewPanel.add(new JScrollPane(viewArea),BorderLayout.CENTER);
viewPanel.add(viewBtn,BorderLayout.SOUTH);
viewBtn.addActionListener(this);
dbTabPane.add("浏览记录",viewPanel);
//定义更新面板
updateInnerPanel=new StudentPanel();
updateInputLbl=new JLabel("输入学号:");
updateInputText=new JTextField(10);
updateInputText.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
connection();
try{
ResultSet rs=stmt.executeQuery("SELECT * from student where 学号='"+updateInputText.getText()+"'");
rs.next();
updateInnerPanel.setNo(rs.getString(1));
updateInnerPanel.setNames(rs.getString(2));
updateInnerPanel.setGendar(rs.getString(3));
updateInnerPanel.setBirth(rs.getString(4));
updateInnerPanel.setAddress(rs.getString(5));
updateInnerPanel.setTel(rs.getString(6));
}
catch(SQLException ex){
System.err.println("更新错误");
}
}
//将更新面板的显示内容清除;
});
updateBtn=new JButton("修改");
updateBtn.addActionListener(this);
updatePanel=new JPanel();
updatePanel.add(updateInnerPanel);
updatePanel.add(updateInputLbl);
updatePanel.add(updateInputText);
updatePanel.add(updateBtn);
dbTabPane.add("修改记录",updatePanel);
//定义删除面板
deleteInnerPanel=new StudentPanel();
inputNoLable=new JLabel("输入学号:");
inputNoField=new JTextField(10);
inputNoField.addActionListener(new ActionListener(){ // 程序段2 //将删除面板的显示内容清除;
public void actionPerformed(ActionEvent e){
connection();
try{
ResultSet rs=stmt.executeQuery("SELECT * from student where 学号="+inputNoField.getText()+";");
while(rs.next()){
for(int i=1;i<=6;i++){
deleteInnerPanel.setNo(rs.getString(1));
deleteInnerPanel.setNames(rs.getString(2));
deleteInnerPanel.setGendar(rs.getString(3));
deleteInnerPanel.setBirth(rs.getString(4));
deleteInnerPanel.setAddress(rs.getString(5));
deleteInnerPanel.setTel(rs.getString(6));
}
}
}
catch(SQLException ex){
System.err.println("删除成功");
}
}
});
deleteBtn=new JButton("删除");
deleteBtn.addActionListener(this);
deletePanel=new JPanel();
deletePanel.add(deleteInnerPanel);
deletePanel.add(inputNoLable);
deletePanel.add(inputNoField);
deletePanel.add(deleteBtn);
dbTabPane.add("删除记录",deletePanel);
c.add(BorderLayout.NORTH,dbTabPane);
}
public void connection(){//连接数据库;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//装载驱动程序;
conn=DriverManager.getConnection("jdbc:odbc:student");//连接ODBC数据源studentManager
stmt=conn.createStatement() ;//获得执行语句对象stmt;
}catch(ClassNotFoundException e1){
System.err.println("驱动程序装载失败!");
}catch(SQLException e2){
e2.getSQLState();
e2.getMessage();
}
}//end of connection method;
//略,同程序清单17-3的connection方法定义
public void close(){//关闭数据连接
try{
if (stmt != null) stmt.close();
if (conn != null) conn.close();
}catch(SQLException e2){
System.err.println("不能正常关闭");
}
}
//略,同程序清单17-3的close方法定义
public void inputRecords(){//录入学生记录
String no=inputInnerPanel.getNo();//获得学号
String name=inputInnerPanel.getNames();//获得姓名
String gendar=inputInnerPanel.getGendar();//获得性别
String birth=inputInnerPanel.getBirth();//获得出生年月
String address=inputInnerPanel.getAddress();//获得家庭地址
String tel=inputInnerPanel.getTel();//获得联系电话;
StudentPanel inputInnerPanel;
try{
connection();
String InsSQL;
InsSQL="INSERT INTO student (学号,姓名,性别,出生年月,家庭住址,联系电话)"+
"VALUES("+"'"+no+"',"+"'"+name+"',"+"'"+gendar+"',"+"'"+birth+"',"+"'"+address+"',"+"'"+tel+"');";//定制插入SQL语句字符串
stmt.executeUpdate(InsSQL);//执行将新记录插入到数据表student中;
}catch(SQLException e1){
System.err.println("数据错误");
System.err.println(e1.getSQLState());
}
finally{
close();//关闭数据库
}
}
//略,同程序清单17-3的inputRecords方法定义
public void viewARecord(String no,StudentPanel p){
//在显示面板p中,显示学号为no的学生信息
try{
String viewString="";
connection();
ResultSet rs=stmt.executeQuery("SELECT * from student where 学号="+no+";");
ResultSetMetaData rsMeta=rs.getMetaData();
int nums=rsMeta.getColumnCount();
//获得字段名称;
for(int i=1;i<=nums;i++){
viewString+=rsMeta.getColumnName(i)+"\t";
}
viewString+="\n";
//获得数据表student的记录;
while(rs.next()){
for(int i=1;i<=nums;i++){
viewString+=rs.getString(i)+"\t";
}
viewString+="\n";
viewArea.setText(viewString);
}
}catch(SQLException e1){
System.err.println("操作失败");
System.err.println(e1.getSQLState()+e1.getMessage());
}
finally{
close();
}
}
public void viewRecords(){//浏览该班所有学生的记录;
try{
String viewString="";
connection();
ResultSet rs=stmt.executeQuery("SELECT * from student");
ResultSetMetaData rsMeta=rs.getMetaData();
int nums=rsMeta.getColumnCount();
//获得字段名称;
for(int i=1;i<=nums;i++){
viewString+=rsMeta.getColumnName(i)+"\t";
}
viewString+="\n";
//获得数据表student的记录;
while(rs.next()){
for(int i=1;i<=nums;i++){
viewString+=rs.getString(i)+"\t";
}
viewString+="\n";
viewArea.setText(viewString);
}
}catch(SQLException e1){
System.err.println("浏览学生记录失败");
System.err.println(e1.getSQLState()+e1.getMessage());
}
finally{
close();
}
}
public void updateRecord(String no){//修改学号为no学生的记录;
try{
String name=updateInnerPanel.getNames();//获得姓名
String gendar=updateInnerPanel.getGendar();//获得性别
String birth=updateInnerPanel.getBirth();//获得出生年月
String address=updateInnerPanel.getAddress();//获得家庭地址
String tel=updateInnerPanel.getTel();//获得联系电话;
//String viewString="";
connection();
stmt.executeUpdate("UPDATE student set 姓名='"+name+"',性别='"+gendar+"',出生年月='"+birth+"',家庭住址='"+address+"',联系电话='"+tel+"' where 学号='"+ no +"';");
}catch(SQLException e1){
System.err.println("数据错误");
System.err.println(e1.getSQLState()+e1.getMessage());
}finally{
close();
}
}
public void deleteRecord(String no){//删除学号为no学生的记录;
try{
connection();
stmt.executeUpdate("delete from student WHERE 学号='"+no+"'");
}catch(SQLException e1){
System.err.println("操作失败");
System.err.println(e1.getSQLState()+e1.getMessage());
}
finally{
close();
}
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==inputBtn){
inputRecords();
}
else if(e.getSource()==viewBtn){
viewRecords();
}
else if(e.getSource()==updateBtn){
updateRecord(updateInnerPanel.getNo());
}
else if(e.getSource()==deleteBtn){
deleteRecord(inputNoField.getText());
deleteInnerPanel.clearContent();
}
}
public static void main(String[] args) {
StudentManagement2 sm = new StudentManagement2();
sm.setSize(500,250);
sm.setVisible(true);
sm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -