📄 inquest.java
字号:
//package myprojects.main;
import java.sql.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class Inquest extends JDialog
{
private Connection queryconnection;
private Statement querystatement;
private ResultSet queryresultSet;
private ResultSetMetaData rsMetaData;
//GUI变量定义
private JFrame parent;
private JPanel labelPanel, tablePanel;//定义两块面板对象
//labelPanel用来放标签,fieldsPanel用来放文本区
private String labels;
private JTable commoditytable;
private JButton submitQuery;
private JButton cancelQuery;
JTextField 文字输入栏;
String 窗口标题,query;
public Inquest(int select)
{ submitQuery = new JButton( "查 询" );
/*----------------------------select=1为查询已经选上的课程---------------------------*/
if(select==1)
{
labels=new String("请输入课程号");
窗口标题= new String("已选课程查询窗口");
query =new String("SELECT 成绩表.课程号,课程名,学时,学分,学期,教师,分数 FROM 课程信息表,成绩表 WHERE 课程信息表.课程号=成绩表.课程号");
query = query+" AND 学号='"+LoginFrame.userNameTextField.getText()+"'";
}
/*----------------------------select=2为选课申请---------------------------*/
else if(select==2)
{
labels=new String("请输入课程号");
窗口标题= new String("选课申请窗口");
submitQuery.setText("申请");
query =new String("SELECT * FROM 课程信息表");
}
/*----------------------------select=3成绩查询---------------------------*/
else if(select==3)
{
labels=new String("请输入课程号");
窗口标题= new String("成绩查询窗口");
query =new String("SELECT 成绩表.课程号,课程名,学分,学期,教师,分数 FROM 成绩表,课程信息表 WHERE 成绩表.课程号=课程信息表.课程号");
query=query+" AND 学号='"+LoginFrame.userNameTextField.getText()+"'";
}
/*----------------------------select=4选课名单(教师查询)---------------------------*/
else if(select==4)
{
labels=new String("请输入课程号");
窗口标题= new String("选课名单查询窗口");
query =new String("SELECT 成绩表.学号,姓名,成绩表.课程号,课程名 "
+" FROM 学生基本信息表,成绩表,课程信息表,教师表 "
+" WHERE 成绩表.学号=学生基本信息表.学号 "
+" AND 成绩表.课程号=课程信息表.课程号 ");
query=query+" AND 登陆帐号='"+LoginFrame.userNameTextField.getText()
+"' AND 课程信息表.教师=教师表.教师 ";
}
/*-----------------------------------------------------------------------*/
pack();
submitQuery.setPreferredSize(new Dimension(120, 25));
submitQuery.addActionListener(new ActionLis(select));
cancelQuery = new JButton( "返 回" );
cancelQuery.setPreferredSize(new Dimension(120, 25));
cancelQuery.addActionListener(
new ActionListener()
{
public void actionPerformed( ActionEvent e )
{
setVisible(false);
dispose();
}
}
);
Box box = Box.createHorizontalBox();
文字输入栏 = new JTextField(8);
box.add( new JLabel(labels));
box.add( 文字输入栏 );
box.add( submitQuery );
box.add( Box.createHorizontalStrut(2));
box.add( cancelQuery );
box.add(Box.createGlue());
labelPanel = new JPanel();
labelPanel.add(box);
commoditytable = new JTable();
JScrollPane commodityscroller = new JScrollPane( commoditytable );
commodityscroller.setPreferredSize(new Dimension(100, 50));
tablePanel = new JPanel();
tablePanel.setLayout( new BorderLayout() );
tablePanel.setPreferredSize(new Dimension(100, 20));
tablePanel.setBorder(BorderFactory.createEtchedBorder());
tablePanel.add( commodityscroller ,BorderLayout.CENTER);
Container c = getContentPane();
setTitle(窗口标题);
c.setLayout( new BorderLayout() );//布局管理器
//将"topPanel"编辑框布置到 "NORTH"
//c.add( new JScrollPane( labelPanel ),BorderLayout.NORTH );
c.add( labelPanel ,BorderLayout.NORTH);
c.add( new JScrollPane( tablePanel ),BorderLayout.CENTER );
getTable(query);
setSize( 420,300 );
setResizable(false);
setLocation(280,180);
}
/*------------------------自定义ActionLis类------------------------*/
class ActionLis implements ActionListener
{
int select;
public ActionLis(int select)
{
this.select = select;
}
public void actionPerformed(ActionEvent e)
{
switch(select)
{
/*--------------------select=1为查询已经选上的课程----------------------*/
case 1:query = "SELECT 成绩表.课程号,课程名,学时,学分,学期,教师,分数 FROM 成绩表,课程信息表"
+" WHERE 成绩表.课程号=课程信息表.课程号 AND 学号='"
+LoginFrame.userNameTextField.getText()
+"' AND 成绩表.课程号="+文字输入栏.getText();
break;
/*--------------------select=2为选课申请---------------------------*/
case 2:String commodityquery = "SELECT * FROM 课程信息表 WHERE 课程号="+
文字输入栏.getText()+"";
appendInfo(commodityquery);
break;
/*-------------------select=3为查询成绩---------------------------*/
case 3:query = "SELECT 成绩表.课程号,课程名,学分,学期,教师,分数 FROM 成绩表,课程信息表 WHERE 成绩表.课程号=课程信息表.课程号 AND 学号='"
+LoginFrame.userNameTextField.getText()
+"' AND 成绩表.课程号="+文字输入栏.getText();
break;
/*-------------------select=4为选课名单查询---------------------------*/
case 4:query = "SELECT 课程名,成绩表.学号,姓名 FROM 学生基本信息表,成绩表,课程信息表,教师表 WHERE 成绩表.学号=学生基本信息表.学号 AND 成绩表.课程号=课程信息表.课程号 AND 课程信息表.教师=教师表.教师 AND 登陆帐号='"
+LoginFrame.userNameTextField.getText()
+"' AND 成绩表.课程号="+文字输入栏.getText();
break;
}
getTable(query);
}
}
/*----------------------------getTable-------------------------------*/
private void getTable(String commodityquery)
{
String url = "jdbc:odbc:java";
String username = "sa";
String password = "";
//加载驱动程序以连接数据库
try
{
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
queryconnection = DriverManager.getConnection( url, username, password );
}
//捕获加载驱动程序异常
catch ( ClassNotFoundException cnfex )
{
System.err.println("装载 JDBC/ODBC 驱动程序失败。" );
cnfex.printStackTrace();
JOptionPane.showMessageDialog ( this ,cnfex ,
"学生选课管理系统",JOptionPane.WARNING_MESSAGE );
System.exit( 1 ); // terminate program
}
//捕获连接数据库异常
catch ( SQLException sqlex )
{
System.err.println( "无法连接数据库" );
sqlex.printStackTrace();
JOptionPane.showMessageDialog ( this ,sqlex ,
"学生选课管理系统",JOptionPane.WARNING_MESSAGE );
System.exit( 1 ); // terminate program
}
try
{
//执行SQL语句
querystatement = queryconnection.createStatement();
queryresultSet = querystatement.executeQuery( commodityquery );
//在表格中显示查询结果
displayResultSet( queryresultSet);
}
catch ( SQLException sqlex ) {
sqlex.printStackTrace();
JOptionPane.showMessageDialog ( this ,sqlex ,
"学生选课管理系统",JOptionPane.WARNING_MESSAGE );
}
}
/*---------------------------displayResultSet--------------------------------*/
private void displayResultSet( ResultSet commodityrs )
throws SQLException
{
//定位到达第一条记录
boolean commoditymoreRecords = commodityrs.next();
//如果没有记录,则提示一条消息
if ( ! commoditymoreRecords )
{
JOptionPane.showMessageDialog( this,"无此记录" );
//setTitle( "无记录显示" );
return ;
}
Vector commoditycolumnHeads = new Vector();
Vector commodityrows = new Vector();
try
{
//获取字段的名称
ResultSetMetaData rsmd = commodityrs.getMetaData();
for ( int i = 1; i <= rsmd.getColumnCount(); ++i )
{
commoditycolumnHeads.addElement( rsmd.getColumnName( i ) );
}
//获取记录集
do
{
commodityrows.addElement( getNextRow( commodityrs, rsmd ) );
} while ( commodityrs.next() );
ResultSetMetaData commodityrsmd = commodityrs.getMetaData();
//在表格中显示查询结果
commoditytable = new JTable( commodityrows, commoditycolumnHeads );
JScrollPane scroller = new JScrollPane( commoditytable );
scroller.setSize(800, 20);
Container c = getContentPane();
c.remove(1);
tablePanel = new JPanel();
tablePanel.setLayout( new BorderLayout() );
tablePanel.add( scroller, BorderLayout.CENTER );
c.add(tablePanel,BorderLayout.CENTER);
//刷新Table
c.validate();
}
catch ( SQLException sqlex )
{
JOptionPane.showMessageDialog ( this ,sqlex ,
"学生选课管理系统",JOptionPane.WARNING_MESSAGE );
}
}
/*-----------------------------getNextRow---------------------------------*/
private Vector getNextRow( ResultSet rs, ResultSetMetaData rsmd )throws SQLException
{
Vector currentRow = new Vector();
for ( int i = 1; i <= rsmd.getColumnCount(); ++i )
switch( rsmd.getColumnType( i ) ) //判断数据类型
{
case Types.CHAR:
case Types.VARCHAR:
case Types.LONGVARCHAR: currentRow.addElement( rs.getString( i ) );
break;
case Types.DECIMAL: currentRow.addElement( rs.getBigDecimal( i ) );
break;
case Types.DATE: currentRow.addElement( rs.getDate( i ) );
break;
case Types.SMALLINT:
case Types.INTEGER: currentRow.addElement(new Integer( rs.getInt( i ) ) );
break;
default: System.out.println( "Type was: " +rsmd.getColumnTypeName( i ) );
}//end_Switch
return currentRow;//返回当前行
}
/*--------------------------appendInfo添加信息----------------------------*/
private void appendInfo(String commodityquery)
{
try
{
String InsertInput = "INSERT INTO 成绩表 VALUES('"+LoginFrame.userNameTextField.getText()+"','"+文字输入栏.getText()+"',"+null+")";
querystatement = queryconnection.createStatement();
queryresultSet = querystatement.executeQuery( commodityquery );
boolean moreRecords = queryresultSet.next();
if ( !moreRecords )
{
JOptionPane.showMessageDialog( this,"对不起,此课程没有开课,请重新输入" );
//setTitle( "无记录显示" );
//queryconnection.close();
return;
}
int insert = querystatement.executeUpdate( InsertInput );//executeUpdate返回一个整型值
if (insert == 1)
{
JOptionPane.showMessageDialog( this,"选课申请成功!" );
}
}
catch ( SQLException sqlex )
{
//sqlex.printStackTrace();
JOptionPane.showMessageDialog ( this ,sqlex ,
"学生选课管理系统",JOptionPane.WARNING_MESSAGE );
文字输入栏.setText("");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -