您所在的位置: 首页>>读书频道>>设计开发>>数据库开发>>

7.9.6 基本信息数据查询模块设计

http://book.51cto.com  2008-06-16 10:24  明日科技/王国辉/吕海涛/李钟尉/编著  人民邮电出版社  我要评论(0)

7.9.6  基本信息数据查询模块设计

基本信息数据查询包括对学生信息查询和教师信息查询两部分,单击菜单“系统查询”/“基本信息”选项,进入该模块,界面运行结果如图7.16所示。

 
(点击查看大图)图7.16  基本信息数据查询效果图

1.界面设计

(1)在view包下建立文件JF_view_query_jbqk.java,该文件继承轻量组件JInternal Frame,打开UI设计器设置this的layout属性为BorderLayout类型,其name属性采用默认值borderlayout1,在borderlayout1上放置1个滚动面板组件JScrollPanel和一个面板组件JPanel,其name属性采用系统默认值jScrollPanel1、jPanel1,其中jSplitPanel1的constraints属性为Center,jPanel1的constraints属性为north方向。在jScrollPanel1上添加一个JTable表格组件,用来显示班级数据,其name采用系统默认值jTable1,用来显示检索出来的数据信息。

(2)设置jPanel1的layout属性为FlowLayOut类型,其默认值为flowlayout1,其alignment属性为center,在flowlayout1上放置4个JLabel标签组件、1个JTextField文本组件和3个JComboBox列表框组件。其中设置标签组件的text属性为运行结果图上的文本名字,JTextField组件和JComboBox组件的name属性采用默认值,然后按照调整好组件之间位置。

 String tabname = null;
String zdname = null;
String ysfname = null;
String[] jTname = null;

至此,基本信息数据查询模块的界面设置已经完成,这里给出UI设计器中的组建结构图,如图7.17所示,读者可以参考此图进行界面设计。

2.代码设计

(1)用户首先选择查询类型,也就是选择查询什么信息,然后根据系统提供的查询参数进行条件选择,输入查询数值之后,单击“确定”按钮,进行满足条件的数据查询。单击source页打开文件源代码,导入程序所需要的类包,定义不同的String类型变量,定义一个私有方法initsize()用来初始化列表框中的数据,以供用户选择条件参数,代码如下:

 
图7.17  JF_view_query_jbqk的UI
组件结构图
/*******************************例程7-36  JF_view_query_jbqk.java************************/
public class JF_view_query_jbqk extends JInternalFrame {
String tabname = null;
String zdname = null;
String ysfname = null;
String[] jTname = null;
private void initsize(){
jComboBox1.addItem("学生信息");
jComboBox1.addItem("教师信息");
jComboBox3.addItem("like");
jComboBox3.addItem(">");
jComboBox3.addItem("=");
jComboBox3.addItem("<");
jComboBox3.addItem(">=");
jComboBox3.addItem("<=");
}
}
(2)用户选择不同的查询类型系统时为查询字段列表框进行字段赋值,在公共方法jComboBox1_itemStateChanged()中实现这个功能,详细代码如下:
/********************************例程7-37  JF_view_query_jbqk.java***********************/
public void jComboBox1_itemStateChanged(ItemEvent itemEvent) {
if (jComboBox1.getSelectedIndex() == 0){
this.tabname = "SELECT s.stuid, c.className,
s.stuname, s.sex, s.age, s.addr, s.phone FROM tb_studentinfo s ,
tb_classinfo c where s.classID = c.classID";
String[] name = {"学生编号","班级名称","学生姓名","
性别","年龄","家庭住址","联系电话"};
jTname = name;
jComboBox2.removeAllItems();
jComboBox2.addItem("学生编号");
jComboBox2.addItem("班级编号");
}if(jComboBox1.getSelectedIndex() == 1){
this.tabname = "SELECT t.teaid, c.className,
t.teaname, t.sex, t.knowledge, t.knowlevel FROM tb_teacher t
INNER JOIN tb_classinfo c ON c .classID = t.classID";
String[] name = {"教师编号","班级名称","教师姓名","性别","
教师职称","教师等级"};
jTname = name;
jComboBox2.removeAllItems();
jComboBox2.addItem("教师编号");
jComboBox2.addItem("班级编号");
}
}

(3)用户选择不同的查询字段之后,程序为实例变量zdname进行赋值,其公共方法jComboBox2_itemStateChanged()的关键代码为:

/********************************例程7-38  JF_view_query_jbqk.java***********************/
public void jComboBox2_itemStateChanged(ItemEvent itemEvent) {
if (jComboBox1.getSelectedIndex() = = 0){
if (jComboBox2.getSelectedIndex() = = 0) this.zdname = "s.stuid";
if (jComboBox2.getSelectedIndex() = = 1) this.zdname = "s.classID";
}if(jComboBox1.getSelectedIndex() = = 1){
if (jComboBox2.getSelectedIndex() = = 0) this.zdname = "t.teaid";
if (jComboBox2.getSelectedIndex() = = 1) this.zdname = "t.classID";
}
}

(4)同样,当用户选择不同的运算符之后程序为实例变量ysfname进行赋值,其公共方法jComboBox3_itemStateChanged()的代码如下:

/********************************例程7-39  JF_view_query_jbqk.java***********************/
. public void jComboBox3_itemStateChanged(ItemEvent itemEvent) {
this.ysfname = String.valueOf(jComboBox3.getSelectedItem());
}

(5)用户输入检索数值之后,单击“确定”按钮,进行条件查询操作。在公共方法jByes_actionPerformed()中,定义两个String类型局部变量sqlSelect与whereSql,用来生成查询条件语句。通过公共类RetrieveObject的getTableModel()方法,进行查询操作,其参数为sqlSelect和whereSql,其详细代码如下:

/********************************例程7-40  JF_view_query_jbqk.java***********************/
public void jByes_actionPerformed(ActionEvent e) {
String sqlSelect = null,whereSql = null;
String valueStr = jTextField1.getText().trim();
sqlSelect =  this.tabname;    
if (ysfname == "like" ){
whereSql = " and " + this.zdname + " " + this.ysfname + " '%" +  valueStr + "%'";
}else{
whereSql = " and " + this.zdname + " " + this.ysfname + " '" +  valueStr + "'";
}
appstu.util.RetrieveObject retrieve = new appstu.util.RetrieveObject();
javax.swing.table.DefaultTableModel defaultmodel = null;
defaultmodel = retrieve.getTableModel(jTname,sqlSelect + whereSql);
jTable1.setModel(defaultmodel);
if (jTable1.getRowCount() <= 0 ){
JOptionPane.showMessageDialog(null,"没有找到满足条件的数据!!!","
系统提示",JOptionPane.INFORMATION_MESSAGE);
}
jTable1.setRowHeight(24);
jLabel5.setText("共有数据【" + String.valueOf(jTable1.getRowCount())+ "】条");
}
【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   下一节
Sun以10亿美元并购开源数据库厂商MySQL
Java实用开发全集
Oracle数据库开发之PL/SQL基础应用
Oracle数据库开发基础教程
Java类的基础教程专题
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有