界面设计与功能
经过以上的分析及建摸模,已经完成了数据库的后台工作。下面要完成的是
人机交互的界面。本系统分为以下三部分:
(1) 用户登陆;
(2) 系统主体平台;
(3) 通过主体平台调用的功能模块。
接下来即对各部分作详细介绍:
5.2 用户登陆部分
启动系统程序后,首先进入系统登陆界面,在登陆进入主体平台的时候,系统会要求用户输入用户名及密码作为验证信息,为了防止非用户在使用,输入正常信息后便可以使用本系统。
本模块代码如下:
package login;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import wymanagesystem.MainFrame;
/**
*
* @author 召峰
*/
public class LoginFrame extends javax.swing.JFrame {
private String name;
private String pwd;
/** Creates new form LoginFrame */
public LoginFrame() {
super("用户登录");
initComponents();
setSize(375,325);
Dimension screen=getToolkit().getScreenSize();
setLocation((screen.width-getSize().width)/2, (screen.height-getSize().height)/2);
try{
String theLook=UIManager.getSystemLookAndFeelClassName();
UIManager.setLookAndFeel(theLook);
SwingUtilities.updateComponentTreeUI(this);
}
catch(Exception e){
System.err.println("异常:"+e);
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">//GEN-BEGIN:initComponents
private void initComponents() {
inputs = new javax.swing.JPanel();
labels = new javax.swing.JPanel();
nameLabel = new javax.swing.JLabel();
pwdLabel = new javax.swing.JLabel();
texts = new javax.swing.JPanel();
id = new javax.swing.JTextField();
password = new javax.swing.JPasswordField();
buttons = new javax.swing.JPanel();
ok = new javax.swing.JButton();
cancel = new javax.swing.JButton();
jPanel5 = new javax.swing.JPanel();
icon = new javax.swing.JLabel();
getContentPane().setLayout(null);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setName("\u767b\u5f55");
setResizable(false);
inputs.setLayout(null);
inputs.setBorder(new javax.swing.border.EtchedBorder());
labels.setLayout(null);
nameLabel.setText("\u7528\u6237\u540d\uff1a");
labels.add(nameLabel);
nameLabel.setBounds(30, 20, 60, 20);
pwdLabel.setText("\u5bc6\u7801\uff1a");
labels.add(pwdLabel);
pwdLabel.setBounds(30, 70, 50, 15);
inputs.add(labels);
labels.setBounds(10, 10, 100, 110);
texts.setLayout(null);
id.setToolTipText("\u8f93\u5165\u7528\u6237\u540d");
id.setName("");
texts.add(id);
id.setBounds(10, 20, 140, 20);
password.setToolTipText("\u8bf7\u8f93\u5165\u5bc6\u7801");
password.setNextFocusableComponent(ok);
texts.add(password);
password.setBounds(10, 70, 140, 20);
inputs.add(texts);
texts.setBounds(120, 10, 220, 110);
getContentPane().add(inputs);
inputs.setBounds(10, 70, 350, 130);
buttons.setLayout(null);
buttons.setBorder(new javax.swing.border.EtchedBorder());
ok.setText("\u767b\u5f55");
ok.setToolTipText("\u767b\u5f55");
ok.setNextFocusableComponent(ok);
ok.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okActionPerformed(evt);
}
});
buttons.add(ok);
ok.setBounds(50, 20, 70, 23);
cancel.setText("\u53d6\u6d88");
cancel.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cancelActionPerformed(evt);
}
});
buttons.add(cancel);
cancel.setBounds(210, 20, 70, 23);
getContentPane().add(buttons);
buttons.setBounds(10, 210, 350, 60);
jPanel5.setLayout(null);
icon.setFont(new java.awt.Font("华文行楷", 1, 36));
icon.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
icon.setIcon(new javax.swing.ImageIcon("F:\\netbeans\\WyManageSystem\\images\\logo.jpg"));
jPanel5.add(icon);
icon.setBounds(0, 0, 350, 50);
getContentPane().add(jPanel5);
jPanel5.setBounds(10, 10, 350, 50);
}
// </editor-fold>//GEN-END:initComponents
private void okActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okActionPerformed
// TODO 将在此处添加您的处理代码:登录
name=id.getText().trim();//用户名
pwd=new String(password.getPassword());//用户密码
if(name.equals("")||pwd.equals("")){
JOptionPane.showMessageDialog(this,"用户名或密码不能为空","登录",JOptionPane.INFORMATION_MESSAGE);
}
else{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//加载驱动
Connection conn=DriverManager.getConnection("jdbc:odbc:wySystem","admin", "admin");//连接数据库
String sql="select id,password from login where id=?";
PreparedStatement pre=conn.prepareCall(sql);//查询表login的sql语句
pre.clearParameters();
pre.setString(1,name);
ResultSet rs=pre.executeQuery();
if(rs.next()){
String pass=rs.getString("password").trim();
if(pwd.regionMatches(0,pass,0,pass.length())){
this.dispose();
new MainFrame().setVisible(true);
}
else{
JOptionPane.showMessageDialog(this,"密码不正确","登录",JOptionPane.WARNING_MESSAGE);
}
}
else{
JOptionPane.showMessageDialog(this,"用户名不存在","登录",JOptionPane.WARNING_MESSAGE);
}
rs.close();
conn.close();
}
catch(Exception e){
JOptionPane.showMessageDialog(this,"登录异常"+e.toString(),"登录",JOptionPane.WARNING_MESSAGE);
}
}
}//GEN-LAST:event_okActionPerformed
private void cancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelActionPerformed
System.exit(0); //退出登录程序
}//GEN-LAST:event_cancelActionPerformed
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new LoginFrame().setVisible(true);
}
});
}
// 变量声明 - 不进行修改//GEN-BEGIN:variables
private javax.swing.JPanel buttons;
private javax.swing.JButton cancel;
private javax.swing.JLabel icon;
private javax.swing.JTextField id;
private javax.swing.JPanel inputs;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel labels;
private javax.swing.JLabel nameLabel;
private javax.swing.JButton ok;
private javax.swing.JPasswordField password;
private javax.swing.JLabel pwdLabel;
private javax.swing.JPanel texts;
// 变量声明结束//GEN-END:variables
}
5.3 小区住户信息管理模块
住户资料主要是对住户的基本信息如 (住户电话、住户姓名、物业地址、身份证号、入住时间等信息)和另外两个标签的信息进行添加、修改、删除、查询。添加、修改、删除这些操作必须保存后才能生效。当记录较多,通过简单的查询可以方便的找的目标记录,查询结果已表格方式显示。表格显示结果的同时,如果还出现多条记录,可以根据某个字段对记录进行排序,这样可以给用户带来更大的方便和提高查找效率。
本模块代码如下:
package wymanagesystem;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import login.MpassFrame;
import login.AbortFrame;
import resourceInfoManage.*;
import KHSManage.*;
import SFManage.*;
/**
*
* @author 召峰
*/
public class MainFrame extends javax.swing.JFrame {
/** Creates new form MainFrame */
public MainFrame() {
super("小区物业管理系统");
try{
String theLook=UIManager.getSystemLookAndFeelClassName();//更新界面
UIManager.setLookAndFeel(theLook);
SwingUtilities.updateComponentTreeUI(this);
}
catch(Exception e){
System.err.println("异常:"+e);
}
initComponents();
setSize(550,450);
logo.setSize(getSize().width,100);
jControlTab.setSize(getSize().width,jControlPanel.getSize().height);
jControlPanel.setSize(getSize().width,getSize().height-100);
Dimension screen=getToolkit().getScreenSize();
setLocation((screen.width-getSize().width)/2, (screen.height-getSize().height)/2);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">//GEN-BEGIN:initComponents
private void initComponents() {
logo = new javax.swing.JLabel();
jControlPanel = new javax.swing.JPanel();
jControlTab = new javax.swing.JTabbedPane();
jZYM = new javax.swing.JPanel();
jBtn_FC = new javax.swing.JButton();
jBtn_KH = new javax.swing.JButton();
jBtn_SF = new javax.swing.JButton();
jKHSM = new javax.swing.JPanel();
jBtn_TSM = new javax.swing.JButton();
jBtn_WXM = new javax.swing.JButton();
jBtn_TCCM = new javax.swing.JButton();
jSFM = new javax.swing.JPanel();
jBt_SFI = new javax.swing.JButton();
jbt_CH = new javax.swing.JButton();
jbt_CHQ = new javax.swing.JButton();
jSysM = new javax.swing.JPanel();
jSysMUpdate = new javax.swing.JButton();
jSysMAbort = new javax.swing.JButton();
jSysMExit = new javax.swing.JButton();
getContentPane().setLayout(null);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
setResizable(false);
logo.setIcon(new javax.swing.ImageIcon("F:\\netbeans\\WyManageSystem\\images\\nuist.jpg"));
getContentPane().add(logo);
logo.setBounds(0, 0, 650, 100);
jControlPanel.setLayout(null);
jControlPanel.setBorder(new javax.swing.border.EtchedBorder());
jControlTab.setTabPlacement(javax.swing.JTabbedPane.LEFT);
jControlTab.setFont(new java.awt.Font("宋体", 0, 14));
jZYM.setLayout(null);
jBtn_FC.setText("\u623f\u4ea7\u8d44\u6e90");
jBtn_FC.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jBtn_FCActionPerformed(evt);
}
});
jZYM.add(jBtn_FC);
jBtn_FC.setBounds(80, 70, 90, 40);
jBtn_KH.setText("\u4e1a\u4e3b\u4fe1\u606f");
jBtn_KH.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jBtn_KHActionPerformed(evt);
}
});
jZYM.add(jBtn_KH);
jBtn_KH.setBounds(220, 70, 90, 40);
jBtn_SF.setText("\u6536\u8d39\u9879\u76ee");
jBtn_SF.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jBtn_SFActionPerformed(evt);
}
});
jZYM.add(jBtn_SF);
jBtn_SF.setBounds(80, 160, 90, 40);
jControlTab.addTab("\u8d44\u6e90\u4fe1\u606f", jZYM);
jKHSM.setLayout(null);
jBtn_TSM.setText("\u6295\u8bc9\u7ba1\u7406");
jBtn_TSM.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jBtn_TSMActionPerformed(evt);
}
});
jKHSM.add(jBtn_TSM);
jBtn_TSM.setBounds(80, 70, 100, 40);
jBtn_WXM.setText("\u62a5\u4fee\u7ba1\u7406");
jBtn_WXM.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jBtn_WXMActionPerformed(evt);
}
});
jKHSM.add(jBtn_WXM);
jBtn_WXM.setBounds(220, 70, 100, 40);
jBtn_TCCM.setText("\u505c\u8f66\u573a\u7ba1\u7406");
jBtn_TCCM.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jBtn_TCCMActionPerformed(evt);
}
});
jKHSM.add(jBtn_TCCM);
jBtn_TCCM.setBounds(80, 160, 100, 40);
jControlTab.addTab("\u5ba2\u6237\u670d\u52a1", jKHSM);
jSFM.setLayout(null);
jBt_SFI.setText("\u8d39\u7528\u8f93\u5165");
jBt_SFI.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jBt_SFIActionPerformed(evt);
}
});
jSFM.add(jBt_SFI);
jBt_SFI.setBounds(80, 70, 81, 40);
jbt_CH.setText("\u8d39\u7528\u6536\u53d6");
jbt_CH.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbt_CHActionPerformed(evt);
}
});
jSFM.add(jbt_CH);
jbt_CH.setBounds(220, 70, 81, 40);
jbt_CHQ.setText("\u8d39\u7528\u67e5\u8be2");
jbt_CHQ.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbt_CHQActionPerformed(evt);
}
});
jSFM.add(jbt_CHQ);
jbt_CHQ.setBounds(80, 160, 81, 40);
jControlTab.addTab("\u6536\u8d39\u7ba1\u7406", jSFM);
jSysM.setLayout(null);
jSysMUpdate.setText("\u4fee\u6539\u5bc6\u7801");
jSysMUpdate.setActionCommand("\u5bc6\u7801\u8bbe\u7f6e");
jSysMUpdate.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jSysMUpdateActionPerformed(evt);
}
});
jSysM.add(jSysMUpdate);
jSysMUpdate.setBounds(80, 70, 80, 40);
jSysMAbort.setText("\u5173\u4e8e");
jSysMAbort.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jSysMAbortActionPerformed(evt);
}
});
jSysM.add(jSysMAbort);
jSysMAbort.setBounds(220, 70, 80, 40);
jSysMExit.setText("\u9000\u51fa\u7cfb\u7edf");
jSysMExit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jSysMExitActionPerformed(evt);
}
});
jSysM.add(jSysMExit);
jSysMExit.setBounds(80, 160, 80, 40);
jControlTab.addTab("\u7cfb\u7edf\u7ba1\u7406", jSysM);
jControlPanel.add(jControlTab);
jControlTab.setBounds(0, 0, 490, 350);
getContentPane().add(jControlPanel);
jControlPanel.setBounds(0, 100, 490, 350);
pack();
}
// </editor-fold>//GEN-END:initComponents
private void jbt_CHQActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbt_CHQActionPerformed
// TODO 将在此处添加您的处理代码:
new CHQueryJFrame().setVisible(true);
}//GEN-LAST:event_jbt_CHQActionPerformed
private void jbt_CHActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbt_CHActionPerformed
// TODO 将在此处添加您的处理代码:
new CHJFrame().setVisible(true);
}//GEN-LAST:event_jbt_CHActionPerformed
private void jBt_SFIActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBt_SFIActionPerformed
// TODO 将在此处添加您的处理代码:
new SFIJFrame().setVisible(true);
}//GEN-LAST:event_jBt_SFIActionPerformed
private void jBtn_TCCMActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtn_TCCMActionPerformed
// TODO 将在此处添加您的处理代码:
new TCCManage().setVisible(true);
}//GEN-LAST:event_jBtn_TCCMActionPerformed
private void jBtn_WXMActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtn_WXMActionPerformed
// TODO 将在此处添加您的处理代码:
new WXManage().setVisible(true);
}//GEN-LAST:event_jBtn_WXMActionPerformed
private void jBtn_TSMActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtn_TSMActionPerformed
// TODO 将在此处添加您的处理代码:
new TSManage().setVisible(true);
}//GEN-LAST:event_jBtn_TSMActionPerformed
private void jBtn_SFActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtn_SFActionPerformed
// TODO 将在此处添加您的处理代码:
new SFItemJFrame().setVisible(true);
}//GEN-LAST:event_jBtn_SFActionPerformed
private void jBtn_KHActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtn_KHActionPerformed
// TODO 将在此处添加您的处理代码:
new KHJFrame().setVisible(true);
}//GEN-LAST:event_jBtn_KHActionPerformed
private void jBtn_FCActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtn_FCActionPerformed
// TODO 将在此处添加您的处理代码:
new FCJFrame().setVisible(true);
}//GEN-LAST:event_jBtn_FCActionPerformed
private void jSysMExitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jSysMExitActionPerformed
// TODO 将在此处添加您的处理代码:
System.exit(0);
}//GEN-LAST:event_jSysMExitActionPerformed
private void jSysMUpdateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jSysMUpdateActionPerformed
// TODO 将在此处添加您的处理代码:
new MpassFrame().setVisible(true);
}//GEN-LAST:event_jSysMUpdateActionPerformed
private void jSysMAbortActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jSysMAbortActionPerformed
// TODO 将在此处添加您的处理代码:
new AbortFrame().setVisible(true);
}//GEN-LAST:event_jSysMAbortActionPerformed
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MainFrame().setVisible(true);
}
});
}
// 变量声明 - 不进行修改//GEN-BEGIN:variables
private javax.swing.JButton jBt_SFI;
private javax.swing.JButton jBtn_FC;
private javax.swing.JButton jBtn_KH;
private javax.swing.JButton jBtn_SF;
private javax.swing.JButton jBtn_TCCM;
private javax.swing.JButton jBtn_TSM;
private javax.swing.JButton jBtn_WXM;
private javax.swing.JPanel jControlPanel;
private javax.swing.JTabbedPane jControlTab;
private javax.swing.JPanel jKHSM;
private javax.swing.JPanel jSFM;
private javax.swing.JPanel jSysM;
private javax.swing.JButton jSysMAbort;
private javax.swing.JButton jSysMExit;
private javax.swing.JButton jSysMUpdate;
private javax.swing.JPanel jZYM;
private javax.swing.JButton jbt_CH;
private javax.swing.JButton jbt_CHQ;
private javax.swing.JLabel logo;
// 变量声明结束//GEN-END:variables
}
5.4 房屋信息管理模块
房产资料主要是对住户的基本信息如 (物业地址、使用面积、房屋结构、设备、出售信息等信息)的添加、修改、删除、查询及统计记录个数。添加、修改、删除这些操作必须保存后才能生效。当记录较多,通过简单的查询可以方便的找的目标记录,查询结果已表格方式显示。表格显示结果的同时,如果还出现多条记录,可以根据某个字段对记录进行排序,这样可以给用户带来更大的方便和提高查找效率。
界面截图如下:
本模块代码如下:
5.5 物业收费管理模块
物业收费管理用是对小区内物业收费的总管理,主要功能也是对如 (住址、水费、电费、宽带费、物业管理费、收费时间等信息) 的添加、修改、删除、查询及统计记录个数。添加、修改、删除这些操作必须保存后才能生效。记录较多,通过简单的查询可以方便的找的目标记录,查询结果已表格方式显示。表格显示结果的同时,如果还出现多条记录,可以根据某个字段对记录进行排序,这样可以给用户带来更大的方便和提高查找效率。