分享
 
 
 

用java实现一个简单的房屋管理程序。

王朝java/jsp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

最近学习《软件工程导论》(清华大学出版)

再需求分析中有一个关于住房管理系统的实现。

于是用java写了一个原型系统。(很简陋)

主要是为了学习jdbc的一些特性。

这把部分程序列出,和大家分享。

问题可参看上面所说的书。

由于时间有限,说明不太准确。今后我会不断修改的。

/*

住户房屋申请表

*/

public class ApplicationInfo {

private String name = null;

private String age = null;

private String length_service = null;

private String head_name = null;

private String post = null;

private String population = null ;

private String grade = null;

private String apply_type = null;

public ApplicationInfo(){

}

/*

用数组保存用户的申请信息。

*/

public void setAllAttribute(String result[]){

name = result[0];

age = result[1];

length_service = result[2];

head_name = result[3];

post = result[4];

population = result[5];

grade = result[6];

apply_type = result[7];

}

/*

获得用户的各种申请信息,

包括姓名,年龄,工龄,职位,职称,家庭人口等

信息。

*/

public String getApplyType(){

return apply_type;

}

public String getName(){

return name;

}

public String getAge(){

return age;

}

public String getLengthService(){

return length_service;

}

public String getPost(){

return post;

}

public String getHeadName(){

return head_name;

}

public String getPopulation(){

return population;

}

public String getGrade(){

return grade;

}

}

////////////////////////////////////////////////////////

/*

用来显示空房,

住房,

总共的房屋数的统计信息。

作的很粗糙。

*/

import java.awt.*;

import java.awt.event.*;

import java.awt.geom.*;

import javax.swing.*;

public class BarChartInfo extends JPanel {

private static final int SCALE = 2;

private static final int CHARTCOUNT = 3;

private static final int BARSPACING = 20;

private static final String CHARTTITEL = "HouseNumberGraphics";

private static final Font CURRENTFONT= new Font("Courier",Font.BOLD,12);

private static FontMetrics cfm ;

private static int MAXLABELWIDTH = 0;

private static int BARWIDTH = 0;

private static int MAX = 0;

private int values[];

private Color colors[];

private String labels[];

public BarChartInfo (int valueInfo[]){

cfm = getFontMetrics(CURRENTFONT);

values = new int[CHARTCOUNT];

colors = new Color[CHARTCOUNT];

labels = new String[CHARTCOUNT];

colors[0] = Color.red;

colors[1] = Color.green;

colors[2] = Color.blue;

for (int i=0;i<CHARTCOUNT; i++){

values[i] = valueInfo[i];

if (values[i]> MAX) {

MAX = values[i];

}

labels[0] = "RemainHouseNumber:";

labels[1] = "DistributeHouseNumber:";

labels[2] = "AllHouseNumber:";

MAXLABELWIDTH = Math.max(cfm.stringWidth(labels[i]),

MAXLABELWIDTH);

}

BARWIDTH = CURRENTFONT.getSize();

setSize(Math.max((MAX*SCALE),

cfm.stringWidth(CHARTTITEL))+MAXLABELWIDTH+5,

(CHARTCOUNT*(BARWIDTH+BARSPACING))+CURRENTFONT.getSize()+10);

}

public void update(Graphics g){

g.clearRect(0,0,getWidth(),getHeight());

paintComponent(g);

}

public void paintComponent(Graphics g){

super.paintComponent(g);

Graphics2D g2D = (Graphics2D)g;

g2D.setFont(CURRENTFONT);

g2D.setColor(Color.black);

int i,cx,cy;

i = cfm.stringWidth(CHARTTITEL);

for (i = 0;i < CHARTCOUNT ; i++) {

cy = ((BARWIDTH + BARSPACING) * i) + BARSPACING;

cx = MAXLABELWIDTH + 1;

cx += Math.max((getWidth()-(MAXLABELWIDTH + 1 +(MAX*SCALE)))/2,0);

g2D.setColor(Color.black);

g2D.drawString(labels[i],cx -MAXLABELWIDTH-1,

cy + cfm.getAscent());

g2D.fillRect(cx+3,cy+5,(values[i]*SCALE),BARWIDTH);

g2D.setColor(colors[i]);

g2D.fillRect(cx,cy,(values[i]*SCALE),BARWIDTH);

g2D.drawString(""+values[i],cx+(values[i]*SCALE)+3,

cy + cfm.getAscent());

}

}

}

///////////////////////////////////////////

/*

把用户的申请信息,写入分房文件中,

一个月后由系统读出信息,然后进行分房。

*/

import java.io.*;

public class CreateApplyQueueFile extends Thread {

private boolean isOver;

private StringBuffer buffer;

public CreateApplyQueueFile(StringBuffer buffer){

isOver = false;

this.buffer = buffer;

}

public void run(){

try {

PrintWriter out= new PrintWriter(

new BufferedWriter(

new FileWriter("house.tmp",true)),true);

out.println(buffer);

out.close();

}

catch(Exception e){e.printStackTrace();}

isOver = true;

}

public boolean isOver(){

return isOver;

}

}

/////////////////////////////////////

/*

进行分房。

*/

import java.io.*;

import java.sql.*;

import java.util.*;

import javax.swing.*;

public class DistributeHouse extends Thread {

private Vector houseInfoVector ;

private Vector applyVector ;

private Connection connection;

private StringBuffer resultBuffer;

private JTextArea textArea;

public DistributeHouse(Connection connection,JTextArea textArea){

resultBuffer = new StringBuffer();

houseInfoVector = new Vector();

applyVector = new Vector();

this.connection = connection;

this.textArea = textArea;

}

public void run(){

LoadApplyQueueFile();

distributeHouse();

}

/*

从分房文件中读出申请者的信息,并加入到向量中,备分房时使用。

*/

private synchronized void LoadApplyQueueFile(){

try { BufferedReader reader = new BufferedReader(

new FileReader("house.tmp"));

String s = null;

while((s = reader.readLine())!=null){

ApplicationInfo applyInfo = new ApplicationInfo();

StringTokenizer stk = new StringTokenizer(s);

String result[] = new String[8];

int i=0;

while(stk.hasMoreElements()){

result[i] = stk.nextToken("*");

i++;

}

applyInfo.setAllAttribute(result);

applyVector.addElement(applyInfo);

}

reader.close();

}

catch(Exception e){e.printStackTrace();}

}

/*

分房完毕后更新分房文件为空文件。

备下批分房使用。

*/

private synchronized void DeleteApplyQueueFile(){

try{

FileOutputStream fos = new FileOutputStream("house.tmp");

fos.close();

}

catch(Exception e){e.printStackTrace();}

}

/*

从向量中随机读出申请者等级,连接数据库,进行相关的查询及更新。

*/

private synchronized void distributeHouse(){

VacantHouseInfo info = null;

while(!applyVector.isEmpty()){

ApplicationInfo applyInfo = (ApplicationInfo)applyVector.elementAt(0);

String grade = getGrade(applyInfo);

int accordHouseNum = getVacantHouseInfo(grade);

int randomIndex = (int)(accordHouseNum*Math.random());

info = (VacantHouseInfo)houseInfoVector.elementAt(randomIndex);

updateRentFile(info,applyInfo);

updateLodgingHouseFile(info,applyInfo);

updateVacantHouseFile(info);

displayResult(info,applyInfo);

applyVector.remove(0);

houseInfoVector.removeAllElements();

}

DeleteApplyQueueFile();

}

/*

获得空房等级。空房等级假设和申请者的年龄,工龄,职务等

有关。这里没有给出函数关系,可以在程序中设置为3,或5等。

*/

private synchronized int getVacantHouseInfo(String houseGrade){

int value = -1;

try{

PreparedStatement Stmt = connection.prepareStatement(

"SELECT * FROM 空房文件 WHERE 房屋等级 = '"+

houseGrade + "'");

ResultSet result = Stmt.executeQuery();

ResultSetMetaData metadata = result.getMetaData();

String houseInfo[] = new String[5];

while (result.next()) {

for(int i=1;i<=metadata.getColumnCount();i++){

houseInfo[i-1] = result.getString(i);

}

VacantHouseInfo vacantHouseInfo = new VacantHouseInfo();

vacantHouseInfo.setAllAttribute(houseInfo);

houseInfoVector.addElement(vacantHouseInfo);

value = houseInfoVector.size();

}

Stmt.close();

}

catch(Exception e){e.printStackTrace();}

return value;

}

/*

把分得房屋的用户写入住房文件中。

*/

private synchronized void updateLodgingHouseFile(VacantHouseInfo info,ApplicationInfo applyInfo){

try { PreparedStatement Stmt = connection.prepareStatement("INSERT INTO 住房文件 VALUES(?,?,?,?,?,?)");

Stmt.setString(1,info.getHouseNumber());

Stmt.setString(2,applyInfo.getName());

Stmt.setString(3,info.getHouseGrade());

Stmt.setString(4,info.getHouseRent());

Stmt.setString(5,info.getHouseArea());

Stmt.setString(6,info.getHouseStructure());

Stmt.executeUpdate();

Stmt.close();

}

catch (Exception e) {e.printStackTrace();}

}

/*

算出房租写入房租文件中。

*/

private synchronized void updateRentFile(VacantHouseInfo info,ApplicationInfo applyInfo){

try { String s = caculateRent(info);

PreparedStatement Stmt = connection.prepareStatement("INSERT INTO 房租文件 VALUES(?,?,?,?)");

Stmt.setString(1,info.getHouseNumber());

Stmt.setString(2,applyInfo.getName());

Stmt.setString(3,info.getHouseGrade());

Stmt.setString(4,s);

Stmt.executeUpdate();

Stmt.close();

}

catch (Exception e) {e.printStackTrace();}

}

/*

删除空房文件中以分配了的房屋信息。

*/

private synchronized void updateVacantHouseFile(VacantHouseInfo info){

try { Statement Stmt = connection.createStatement();

Stmt.execute("DELETE FROM 空房文件 WHERE 房号 = "+"'"+

info.getHouseNumber()+"'");

Stmt.execute("DELETE FROM 空房文件 WHERE 房号 = "+"'"+

info.getHouseNumber()+"'");

Stmt.close();

}

catch (Exception e) {e.printStackTrace();}

}

/*

*/

private synchronized int getInteger(String s){

StringBuffer buffer = new StringBuffer();

for(int i=0;i<s.length();i++){

if((int)s.charAt(i)>=48&&(int)s.charAt(i)<=57){

buffer.append(s.charAt(i));

}

}

return Integer.parseInt(buffer.toString());

}

/*

计算房租。

*/

private synchronized String caculateRent(VacantHouseInfo info){

int area = getInteger(info.getHouseArea());

int rent = getInteger(info.getHouseRent());

int sum = area*rent;

Integer integer = null;

if(sum>0)integer =new Integer(sum);

String s = integer.toString()+"元";

return s;

}

/*

获得房屋等级。

*/

private synchronized String getGrade(ApplicationInfo applyInfo){

return applyInfo.getGrade();

}

/*

显示结果。

*/

private synchronized void displayResult(VacantHouseInfo info ,ApplicationInfo applyInfo){

String rent = caculateRent(info);

String number = info.getHouseNumber();

String name = applyInfo.getName();

String grade = info.getHouseGrade();

String perRent = info.getHouseRent();

String area = info.getHouseArea();

String structure = info.getHouseStructure();

resultBuffer.append("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"+"\n");

resultBuffer.append("姓名 :"+name+"\n");

resultBuffer.append("分配房屋号码 :"+number+"\n");

resultBuffer.append("分配房屋等级 :"+grade+"\n");

resultBuffer.append("分配房屋面积(平方米) :"+area+"\n");

resultBuffer.append("分配房屋的结构 :"+structure+"\n");

resultBuffer.append("分配房屋房租(每平方米/元) :"+perRent+"\n");

resultBuffer.append("本月应缴房租(元) :"+rent+"\n");

resultBuffer.append("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"+"\n");

textArea.append(resultBuffer.toString());

resultBuffer.setLength(0);

}

}

///////////////////////////////////

/*

管理员对房屋的管理。

*/

import java.sql.*;

public class MasterHouseInfo {

private Connection connection;

private int valueInfo[] = new int[3];

public MasterHouseInfo(Connection connection){

this.connection = connection;

}

public int[] execute(){

valueInfo[0] = getVacantResultCount();

valueInfo[1] = getHouseResultCount();

valueInfo[2] = valueInfo[0]+valueInfo[1];

return valueInfo;

}

private synchronized int getVacantResultCount(){

int Count = 0 ;

try{

PreparedStatement Stmt = connection.prepareStatement("SELECT COUNT(*) FROM 空房文件");

ResultSet result = Stmt.executeQuery();

ResultSetMetaData metadata = result.getMetaData();

while (result.next()) {

Count = result.getInt(1);

}

Stmt.close();

}

catch(Exception e){e.printStackTrace();}

return Count ;

}

private synchronized int getHouseResultCount(){

int Count = 0;

try{

PreparedStatement Stmt = connection.prepareStatement("SELECT COUNT(*) FROM 住房文件");

ResultSet result = Stmt.executeQuery();

ResultSetMetaData metadata = result.getMetaData();

while (result.next()) {

Count = result.getInt(1);

}

Stmt.close();

}

catch(Exception e){e.printStackTrace();}

return Count ;

}

}

///////////////////////////////////////

/*

住户申请调房,先退房,再分房的原则。

这里没有给出最好的实现。

*/

import java.sql.*;

import javax.swing.*;

public class PrepareHouse extends Thread {

private Connection connection;

private String houseNumber = null;

private JTextArea textArea;

public PrepareHouse(Connection connection,String houseNumber,

JTextArea textArea){

this.connection = connection;

this.houseNumber = houseNumber;

this.textArea = textArea;

}

public void run(){

prepareHouse();

}

public void prepareHouse(){

new DistributeHouse(connection,textArea).start();

new QuiteHouse(connection,houseNumber,textArea).start();

textArea.append("**********调房成功!************");

}

}

/////////////////////////////////

/*

查询房屋信息。

*/

import java.sql.*;

import javax.swing.*;

public class QueryHouseInfo extends Thread {

private Connection connection;

private StringBuffer resultBuffer;

private String query ;

private JTextArea textArea;

private String info[];

public QueryHouseInfo(Connection connection,String query,

String info[],JTextArea textArea){

this.query = query;

resultBuffer = new StringBuffer();

this.connection = connection;

this.textArea = textArea;

this.info = info ;

}

public void run(){

if(info == null)

queryHouseInfo(query);

else

queryHouseInfo();

displayResult(resultBuffer);

}

/*

查询房屋所有的信息。

*/

private synchronized void queryHouseInfo(String tableName){

try{

PreparedStatement Stmt = connection.prepareStatement("SELECT * FROM "+tableName);

ResultSet result = Stmt.executeQuery();

ResultSetMetaData metadata = result.getMetaData();

while (result.next()) {

for(int i=1;i<=metadata.getColumnCount();i++){

String label = metadata.getColumnLabel(i);

String info = result.getString(i);

resultBuffer.append(label+":"+info+"\n");

}

resultBuffer.append("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"+"\n");

}

Stmt.close();

}

catch(Exception e){e.printStackTrace();}

}

/*

以房屋号查询相关信息。

*/

private synchronized void queryHouseInfo(){

try{

PreparedStatement Stmt = connection.prepareStatement(

"SELECT "+query+" FROM "+info[2]+" WHERE "+

info[0]+"='"+

info[1]+"'");

ResultSet result = Stmt.executeQuery();

ResultSetMetaData metadata = result.getMetaData();

while (result.next()) {

for(int i=1;i<=metadata.getColumnCount();i++){

String label = metadata.getColumnLabel(i);

String info = result.getString(i);

resultBuffer.append(label+":"+info+"\n");

}

resultBuffer.append("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"+"\n");

}

Stmt.close();

}

catch(Exception e){e.printStackTrace();}

}

private synchronized String getGrade(ApplicationInfo applyInfo){

return applyInfo.getGrade();

}

private synchronized void displayResult(StringBuffer tmp){

StringBuffer buffer = new StringBuffer();

buffer.append(tmp.toString());

textArea.append(buffer.toString());

resultBuffer.setLength(0);

}

}

///////////////////////////////////////

/*

用户申请退房。

*/

import java.sql.*;

import java.util.*;

import javax.swing.*;

public class QuiteHouse extends Thread {

private Connection connection;

private String houseNumber = null;

private StringBuffer resultBuffer;

private JTextArea textArea;

private String name = null;

public QuiteHouse(Connection connection,String houseNumber,

JTextArea textArea){

this.connection = connection;

this.houseNumber = houseNumber;

resultBuffer = new StringBuffer();

this.textArea = textArea;;

}

public void run(){

VacantHouseInfo info = getQuiteHouseInfo();

updateVacantHouseFile(info);

updateLodgingHouseFile(info);

updateRentFile(info);

displayResult(info);

}

/*

获得所退房屋得相关信息。

*/

public synchronized VacantHouseInfo getQuiteHouseInfo(){

VacantHouseInfo vacantHouseInfo = null;

try{

Statement Stmt = connection.createStatement();

ResultSet result = Stmt.executeQuery("SELECT * FROM 住房文件 WHERE 房号 = '"+

houseNumber+"'");

ResultSetMetaData metadata = result.getMetaData();

String houseInfo[] = new String[5];

while (result.next()) {

for(int i=3;i<= metadata.getColumnCount();i++){

houseInfo[i-2] = result.getString(i);

}

name = result.getString(2);

}

houseInfo[0] = houseNumber;

vacantHouseInfo = new VacantHouseInfo();

vacantHouseInfo.setAllAttribute(houseInfo);

Stmt.close();

}

catch(Exception e){e.printStackTrace();}

return vacantHouseInfo ;

}

/*

从房租文件中删除要退房屋。

*/

private synchronized void updateRentFile(VacantHouseInfo info){

try { Statement Stmt = connection.createStatement();

Stmt.execute("DELETE FROM 房租文件 WHERE 房号 = "+"'"+

info.getHouseNumber()+"'");

Stmt.execute("DELETE FROM 房租文件 WHERE 房号 = "+"'"+

info.getHouseNumber()+"'");

Stmt.close();

}

catch (Exception e) {e.printStackTrace();}

}

/*

把以退房屋重新写入空房文件中。

*/

private synchronized void updateVacantHouseFile(VacantHouseInfo info){

try { PreparedStatement Stmt = connection.prepareStatement("INSERT INTO 空房文件 VALUES(?,?,?,?,?)");

Stmt.setString(1,info.getHouseNumber());

Stmt.setString(2,info.getHouseGrade());

Stmt.setString(3,info.getHouseRent());

Stmt.setString(4,info.getHouseArea());

Stmt.setString(5,info.getHouseStructure());

Stmt.executeUpdate();

Stmt.close();

}

catch (Exception e) {e.printStackTrace();}

}

/*

从住房文件中删除退房信息。

*/

private synchronized void updateLodgingHouseFile(final VacantHouseInfo info){

try{ Statement Stmt = connection.createStatement();

Stmt.execute("DELETE FROM 住房文件 WHERE 房号 = "+"'"+

info.getHouseNumber()+"'");

Stmt.execute("DELETE FROM 住房文件 WHERE 房号 = "+"'"+

info.getHouseNumber()+"'");

Stmt.close();

}

catch (Exception e) {e.printStackTrace();}

}

/*

显示退房结果。

*/

private synchronized void displayResult(VacantHouseInfo info){

String number = info.getHouseNumber();

String grade = info.getHouseGrade();

String perRent = info.getHouseRent();

String area = info.getHouseArea();

String structure = info.getHouseStructure();

resultBuffer.append("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"+"\n");

resultBuffer.append("退屋者姓名:"+name+"\n");

resultBuffer.append("所退房屋号码:"+number+"\n");

resultBuffer.append("所退房屋等级:"+grade+"\n");

resultBuffer.append("所退房屋面积(平方米):"+area+"\n");

resultBuffer.append("所退房屋结构:"+structure+"\n");

resultBuffer.append("所退房屋单位面积房租(每平方米/元):"+perRent+"\n");

resultBuffer.append(name+"退屋成功!"+"\n");

resultBuffer.append("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"+"\n");

textArea.append(resultBuffer.toString());

resultBuffer.setLength(0);

}

}

/////////////////////////////////////////

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.border.*;

import java.sql.*;

public class UpdateHouseInfoPanel extends JFrame {

private JButton referButton = new JButton("提及更新信息");

private JButton reEditButton = new JButton("重填更新信息");

private JButton updateButton = new JButton("执行更新");

private JCheckBox grade = new JCheckBox("房屋等级");

private JCheckBox area = new JCheckBox("房屋面积");

private JCheckBox rent = new JCheckBox("单位面积房租");

private JCheckBox structure = new JCheckBox("房屋结构");

private JTextField textfiled = new JTextField();

private JTextField gradeinfo = new JTextField();

private JTextField areainfo = new JTextField();

private JTextField rentinfo = new JTextField();

private JTextField structureinfo = new JTextField();

private JTextArea textArea ;

private JComboBox comBox = new JComboBox();

private String itemText ;

private StringBuffer buffer;

private Connection connection;

public UpdateHouseInfoPanel(Connection connection){

super("管理员更改房屋信息演示");

buffer = new StringBuffer();

this.connection = connection;

getContentPane().setLayout(new BorderLayout());

getContentPane().add(createPanel(),BorderLayout.CENTER);

setSize(500,520);

center(this);

pack();

setResizable(false);

setVisible(true);

}

public void center(Component C) {

Dimension SS = C.getToolkit().getScreenSize();

C.setLocation ((SS.width - 750) / 2,(SS.height - 500) / 2);

}

private JPanel createPanel(){

JPanel mainPanel = new JPanel();

mainPanel.setLayout(new GridLayout(2,0,5,5));

JPanel p = new JPanel(new DialogLayout2(100,5));

JPanel rl = new JPanel(new GridLayout(0,2,5,5));

JPanel pr = new JPanel();

pr.setLayout(new DialogLayout2(100,5));

pr.add(new DialogSeparator("用户查询信息表"));

JPanel panel = new JPanel(new GridLayout(0,4));

comBox.addItem("房号");

comBox.addItem("房屋等级");

panel.add(new JLabel("选择更新条件:"));

panel.add(comBox);

panel.add(new JLabel("房号/等级:"));

panel.add(textfiled);

pr.add(panel);

pr.add(new JLabel("更改房屋等级为:"));

pr.add(gradeinfo);

pr.add(new JLabel("更改房屋面级为:"));

pr.add(areainfo);

pr.add(new JLabel("更改单位房租为:"));

pr.add(rentinfo);

pr.add(new JLabel("更改房屋结构为:"));

pr.add(structureinfo);

JPanel pl = new JPanel();

pl.setBorder(new TitledBorder(new EtchedBorder(),"选择需要查询的信息"));

JPanel checkPanel = new JPanel();

checkPanel.add(grade);

checkPanel.add(area);

checkPanel.add(rent);

checkPanel.add(structure);

pl.add(checkPanel);

rl.add(pr);

rl.add(pl);

p.add(rl);

p.add(new DialogSeparator("操作"));

p.add(referButton);

p.add(reEditButton);

p.add(updateButton);

textArea = new JTextArea();

JScrollPane sp = new JScrollPane( textArea );

mainPanel.add(p);

mainPanel.add(sp);

gradeinfo.setEditable(false);

areainfo.setEditable(false);

rentinfo.setEditable(false);

structureinfo.setEditable(false);

ButtonListener listener = new ButtonListener() ;

referButton.addActionListener(listener);

reEditButton.addActionListener(listener);

updateButton.addActionListener(listener);

CheckBoxListener checklistener = new CheckBoxListener();

grade.addActionListener(checklistener);

area.addActionListener(checklistener);

rent.addActionListener(checklistener);

structure.addActionListener(checklistener);

comBox.addActionListener(new ComboBoxListener());

return mainPanel;

}

private void getUpdateInfo(){

if(grade.isSelected()){

buffer.append("房屋等级=");

buffer.append("'"+gradeinfo.getText()+"'"+",");

}

if(area.isSelected()){

buffer.append("房屋面积=");

buffer.append("'"+areainfo.getText()+"'"+",");

}

if(rent.isSelected()){

buffer.append("单位面积房租=");

buffer.append("'"+rentinfo.getText()+"'"+",");

}

if(structure.isSelected()){

buffer.append("房屋结构=");

buffer.append("'"+structureinfo.getText()+"'"+",");

}

}

private void reEditApplyType(){

gradeinfo.setText(null);

areainfo.setText(null);

rentinfo.setText(null);

structureinfo.setText(null);

textfiled.setText(null);

itemText = null;

gradeinfo.setEditable(false);

areainfo.setEditable(false);

rentinfo.setEditable(false);

structureinfo.setEditable(false);

grade.setSelected(false);

area.setSelected(false);

rent.setSelected(false);

structure.setSelected(false);

buffer.setLength(0);

}

class ButtonListener implements ActionListener {

public void actionPerformed (ActionEvent ae) {

Object obj = ae.getSource();

if (obj == updateButton) {

SwingUtilities.invokeLater(new Runnable() {

public void run() {

buffer.deleteCharAt(buffer.length()-1) ;

new UpdateHouseInfo(buffer.toString()).start();

}

});

}

else if (obj == referButton) {

SwingUtilities.invokeLater(new Runnable() {

public void run() {

getUpdateInfo();

}

});

}

else if (obj == reEditButton){

SwingUtilities.invokeLater(new Runnable() {

public void run() {

reEditApplyType();

}

});

}

}

}

class CheckBoxListener implements ActionListener {

public void actionPerformed (ActionEvent ae) {

Object obj = ae.getSource();

if (obj == grade) {

if(grade.isSelected())

gradeinfo.setEditable(true);

else

gradeinfo.setEditable(false);

}

else if (obj == area){

if(area.isSelected())

areainfo.setEditable(true);

else

areainfo.setEditable(false);

}

else if (obj == rent){

if(rent.isSelected())

rentinfo.setEditable(true);

else

rentinfo.setEditable(false);

}

else if (obj == structure){

if(structure.isSelected())

structureinfo.setEditable(true);

else

structureinfo.setEditable(false);

}

}

}

class ComboBoxListener implements ActionListener {

public void actionPerformed (ActionEvent ae) {

itemText = comBox.getSelectedItem().toString();

}

}

class UpdateHouseInfo extends Thread {

private String query ;

public UpdateHouseInfo(String query){

this.query = query;

}

public void run(){

updateHouseInfo();

}

private void updateHouseInfo(){

StringBuffer resultBuffer = new StringBuffer();

try{

Statement Stmt = connection.createStatement();

Stmt.executeUpdate("UPDATE 空房文件 SET "+query+" WHERE "+itemText+"='"+

textfiled.getText()+"'");

ResultSet result = Stmt.executeQuery("SELECT * "+"FROM 空房文件 WHERE "+itemText+"='"+

textfiled.getText()+"'");

ResultSetMetaData metadata = result.getMetaData();

while (result.next()) {

for(int i=1;i<=metadata.getColumnCount();i++){

String label = metadata.getColumnLabel(i);

String info = result.getString(i);

resultBuffer.append(label+":"+info+"\n");

}

}

resultBuffer.append("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"+"\n");

textArea.append("更新成功!!"+"\n");

textArea.append(resultBuffer.toString());

Stmt.close();

}

catch(Exception e){e.printStackTrace();}

}

}

}

//////////////////////////////////

/*

包含房屋得相关信息。

*/

public class VacantHouseInfo {

private String house_number = null;

private String house_grade = null;

private String house_area = null;

private String house_rent = null;

private String house_structure = null;

public VacantHouseInfo(){

}

public void setAllAttribute(String houseInfo[]){

house_number = houseInfo[0];

house_grade = houseInfo[1];

house_area = houseInfo[2];

house_rent = houseInfo[3];

house_structure = houseInfo[4];

}

public String getHouseNumber(){

return house_number;

}

public String getHouseGrade(){

return house_grade;

}

public String getHouseArea(){

return house_area;

}

public String getHouseRent(){

return house_rent;

}

public String getHouseStructure(){

return house_structure;

}

}

/////////////////////

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.sql.*;

import java.util.*;

import java.io.*;

import java.awt.image.*;

import com.sun.image.codec.jpeg.* ;

public class TrySql extends JFrame {

private static Connection connection ;

public TrySql() {

initializeDemo();

}

public static void initConnection(){

try{

connection = getConnection();

}

catch(Exception e){e.printStackTrace();}

}

public void disConnection(){

try{

connection.close();

}

catch(Exception e){e.printStackTrace();}

clearMemory();

}

public void initializeDemo(){

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){

disConnection();

System.exit(0);

}

});

JMenu fileMenu = new JMenu("文件");

JMenuItem exitItem = new JMenuItem("退出");

fileMenu.add(exitItem);

exitItem.addActionListener(new exitMenuHandler());

JMenu helpMenu = new JMenu("帮助");

JMenuItem aboutItem = new JMenuItem("关于");

helpMenu.add(aboutItem);

aboutItem.addActionListener(new aboutMenuHandler());

JMenuBar menuBar = new JMenuBar();

menuBar.add(fileMenu);

menuBar.add(helpMenu);

setJMenuBar(menuBar);

getContentPane().setLayout(new BorderLayout());

JTabbedPane tabbedpane = new JTabbedPane();

tabbedpane.add(new DistributeHousePanel(connection),"用户分房申请演示");

tabbedpane.add(new QuiteHousePanel(connection),"用户退房申请演示");

tabbedpane.add(new PrepareHousePanel(connection),"用户调房申请演示");

tabbedpane.add(new QueryHouseInfoPanel(connection),"用户查询信息演示");

tabbedpane.add(new MasterHouseInfoPanel(connection),"住房管理科管理演示");

getContentPane().add(tabbedpane, BorderLayout.CENTER);

setSize(750,560);

setTitle("住房管理系统演示");

setResizable(false);

center(this);

pack();

setVisible(true);

}

/*

把主窗口置于屏幕中间。

*/

public void center(Component C) {

Dimension SS = C.getToolkit().getScreenSize();

Dimension CS = C.getSize();

C.setLocation ((SS.width - CS.width) / 2,(SS.height - CS.height) / 2);

}

/*

连接到数据库

*/

public static Connection getConnection()throws SQLException {

try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

}

catch(Exception e){e.printStackTrace();}

String url = "jdbc:odbc:住房管理系统";

String username = "PUBLIC";

String password = "PUBLIC";

return

DriverManager.getConnection(url, username, password);

}

public static void main(String args[]){

initConnection();

Locale.setDefault(Locale.US);

new TrySql();

}

public static void clearMemory(){

connection = null;

}

/*

退出数据库。

*/

class exitMenuHandler implements ActionListener {

public void actionPerformed( ActionEvent ae ) {

disConnection();

System.exit(0);

}

}

/*

显示帮助文件。

*/

class aboutMenuHandler implements ActionListener {

public void actionPerformed( ActionEvent ae ) {

new JDialog().setVisible(true);

}

}

}

//////////////////////

以上程序只是主要部分的代码。

如果需要所有代码可bootcool@163.net和我联系

请各位前辈多多指教。

谢谢。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有