本文介绍的租房管理软件,是基于Java编写的主界面,采用访问数据库的方式,实现增加、删除、及保存信息等功能,因为是租房管理软件,所以点睛之笔是可以实现到期提醒功能。界面如下:

租房网java框架怎么查询 基于java的租房管理系统_数据库

租房网java框架怎么查询 基于java的租房管理系统_开发语言_02

 

租房网java框架怎么查询 基于java的租房管理系统_java_03

 

程序实现主要有三个子程序:

1. DBcon.java用于访问数据库,我用的是mysql,比sql server相对简单一点,不了解的同学自行搜索一下,网上教程很多。

2. 登录界面login.java,代码我也不贴了,网上也有好多教程。

3. 功能界面fangchan.java,我把代码贴出来给大家参考,在到期提醒功能中,我踩过坑,研究了好久,现在把成功的代码放上来。

package fangzhushou;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Vector;
import java.util.Date;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.JTextField;
import javax.swing.Timer;
import javax.swing.JLabel;

import java.text.DateFormat;
import java.text.SimpleDateFormat;

public class fangchan extends JFrame{
	
	DefaultTableModel tableModel;		// 默认显示的表格
	JButton add,del,exit,save,alarm;		// 各处理按钮
	JTable table;		// 表格
	JPanel panelUP,panelUP1;	//增加信息的面板
	JLabel rq;
	JLabel tm;
	
	// 构造函数
	public fangchan(){
	    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
	    this.setSize(d);
		this.setTitle("房助手");		// 设置窗体名称
		this.setLayout(new BorderLayout());	// 设置窗体的布局方式
				
		// 新建各按钮组件
		add = new JButton("增加");
		del = new JButton("删除");
		save = new JButton("保存");
		exit = new JButton("退出");
		alarm= new JButton("到期提醒");
		tm = new JLabel();
		rq=new JLabel("日期:");
		panelUP = new JPanel();		// 新建按钮组件面板
		panelUP.setLayout(new FlowLayout(FlowLayout.LEFT));	// 设置面板的布局方式
		panelUP1 = new JPanel();		// 新建按钮组件面板
		panelUP1.setLayout(new FlowLayout(FlowLayout.RIGHT));	// 设置面板的布局方式
		
		
		// 将各按钮组件依次添加到面板中
		panelUP.add(add);
		panelUP.add(del);
		panelUP.add(save);
		panelUP.add(exit);
		panelUP.add(alarm);
		panelUP1.add(rq);
		panelUP1.add(tm);
	
        //时间
		Date Now=new Date();
		SimpleDateFormat t = new SimpleDateFormat ("yyyy-MM-dd");//格式化时间,把时间格式化为年月日
		tm.setText(t.format(Now));//给标签添加内容,即时间
		
		// 取得haha数据库的aa表的各行数据
		Vector rowData = DBcon.getRows();
		// 取得haha数据库的aa表的表头数据
		Vector columnNames = DBcon.getHead();
		
		
		// 新建表格
		tableModel = new DefaultTableModel(rowData,columnNames);	
		table = new JTable(tableModel);
		
		JScrollPane s = new JScrollPane(table);
		
		// 将面板和表格分别添加到窗体中
		this.add(panelUP,BorderLayout.NORTH);
		this.add(panelUP1,BorderLayout.SOUTH);
		this.add(s);
		
		// 事件处理
		MyEvent();
		
		this.setVisible(true);		// 显示窗体
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		 // 设置窗体可关闭
		this.setResizable(true); //设置大小可变
		this.setBackground(Color.WHITE); //设置窗口背景
	}
	// 事件处理
	public void MyEvent(){
		
		// 增加
		add.addActionListener(new ActionListener(){
 
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// 增加一行空白区域
				tableModel.addRow(new Vector());
			}
			
		});
		
		// 删除
		del.addActionListener(new ActionListener(){
 
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				// 删除指定行
				int rowcount = table.getSelectedRow();
				if(rowcount >= 0){
					tableModel.removeRow(rowcount);
				}
			}
			
		});
		
		/**
		 * 保存
		 * 我的解决办法是直接将aa表中的全部数据删除,
		 * 将表格中的所有内容获取到,
		 * 然后将表格数据重新写入aa表
		 */
		save.addActionListener(new ActionListener(){
 
			@Override
			public void actionPerformed(ActionEvent e) {	
				int column = table.getColumnCount();		// 表格列数
				int row = table.getRowCount();		// 表格行数
				
				// value数组存放表格中的所有数据
				String[][] value1 = new String[row][column];
				
				for(int i = 0; i < row; i++){
					for(int j = 0; j < column; j++){
						value1[i][j] = table.getValueAt(i, j).toString();
					}
				}
				
				// 以下均为对数据库的操作
				String sql_url = "jdbc:mysql://localhost:3306/haha";	//数据库路径(一般都是这样写),haha是数据库名称
				String name = "root";		//用户名
				String password = "123456";	//密码
				Connection conn;
				PreparedStatement preparedStatement = null;
 
				try {
					Class.forName("com.mysql.jdbc.Driver");		//连接驱动
					conn = DriverManager.getConnection(sql_url, name, password);	//连接数据库
					if(!conn.isClosed())
						System.out.println("成功连接数据库");
					
					// 删除aa表中所有数据
					preparedStatement = conn.prepareStatement("delete from aa where true");
					preparedStatement.executeUpdate();
					
					// 将value数组中的数据依次存放到aa表中
					for(int i = 0; i < row; i++){
					preparedStatement = conn.prepareStatement("insert into aa values(" + Integer.parseInt(value1[i][0]) + ",'" + value1[i][1] + "','" + value1[i][2] + "'," +  Integer.parseInt(value1[i][3]) + ",'" + value1[i][4]+ "', '"+ value1[i][5] + "')");
					preparedStatement.executeUpdate();
				}
					
				} catch (ClassNotFoundException e1) {
					// TODO Auto-generated catch block
					System.out.println("未成功加载驱动。");
					e1.printStackTrace();
				} catch (SQLException e1) {
					// TODO Auto-generated catch block
					System.out.println("未成功打开数据库。");
					e1.printStackTrace();
				}
			}
		});
		
		// 退出
		exit.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
				System.exit(0);
			}
				
		});
		
		//到期提醒
		alarm.addActionListener(new ActionListener(){
			 
			@Override
			public void actionPerformed(ActionEvent arg0) {	
				int column = table.getColumnCount();		// 表格列数
				int row = table.getRowCount();		// 表格行数
				
				// value数组存放表格中的所有数据
				String[][] value2 = new String[row][column];
				
				for(int i = 0; i < row; i++){
					for(int j = 0; j < column; j++){
						value2[i][j] = table.getValueAt(i, j).toString();
					}
				}
				DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
				for(int i = 0; i < row; i++){
						value2[i][5] = table.getValueAt(i, 5).toString();
					try{	
						Date dt1=df.parse(value2[i][5]);
						Date dt2=df.parse(tm.getText());
						if(dt1.getTime()>dt2.getTime()){
							JOptionPane.showMessageDialog(null, value2[i][1]+"已超期");
						}else{	
						}
						   
				    } catch (Exception exception) {
				    	exception.printStackTrace();
				    	
				    }
				    }
			}
		});
				
	}
	
	// 主函数
	public static void main(String[] args){
		new fangchan();
	}
}

 总结

基于Java编写的主界面也可以做的很好看,当时只为了完成相关功能,没有在细节上把控。

如果各位需要完整代码,可以到主页下载。