房产管理系统1
房产信息管理系统(50分)
1、项目需求:
某房产公司,欲开发一个房产信息管理系统,其主要功能描述如下:
(1)公司销售的房产,房产信息包括,房产编号(唯一性)、房产证明,地址,建造年份,建造面积,销售报价,房产照片以及销售状态 (在售,待售,意向,售出,停售)等信息。
2. 公司雇佣了多名房产经纪,负责销售房产,系统中需要存储房产经纪的基本信息,包括:姓名,家庭住址,联系电话等等。一套房产同一时间仅由一名房产经纪负责销售,
3.系统用户包括顾客、房产经纪、系统管理员,顾客需经过系统身份验证之后,才能登录系统,可以浏览、查询、购买相应房产。房产经纪登录系统之后,可以浏览负责销售的房产信息,但需要经过系统管理员的审批授权。
4.系统管理员可以从系统中导出所有房产的信息列表,系统管理员定期将信息和销售的房产,进行归纳,若公司确定不再销售某套房产,系统管理员将房产信息从系统中删除。
2.系统要求与评分标准:
2.1 页面要求
(1)系统可以通过浏览器直接访问;(1分)
(2)各个功能页面整体风格统一;
(3)首页为用户登录页面,系统管理员、房产经纪、顾客三种角色用户登录后,进入相应的功能页,只能看到角色允许访问功能模块,用户登录界面包含用户、密码两个文本框,以及登录和注册两个按钮;(3分)
(4)顾客注册:点击用户登录页面的注册按钮,顾客进入用户注册页面,注册信息包括身份证号、姓名、性别、手机号码、家庭住址。(4分)
(6)顾客功能页:共包括查看个人信息、修改个人密码、浏览房产信息,查询房产,购买房产五项功能模块。
(7)房产经纪功能页:包括查看个人信息、浏览房产信息、房产交易、查询房产、修改个人密码五项功能模块;
图1 房产信息管理系统功能结构图
(8)系统管理员功能页:新添房产信息、房产授权、停售房产、查询房产信息,顾客审核、新增房产经纪人,密码重置七项功能模块。
2.2 功能要求
(1)新增房产信息:房产编号(唯一性)(编码规则:年月日(登记入库时间)+四位顺序号,例如:202012200001)、户型(单选项:选项内容包括以下六项:四室两厅、四室一厅、三室两厅、三室一厅、两室两厅、两室一厅),房产地址(地址格式:XX省XX市XX区(县)XX街道XX小区XX号楼XX单元XXX门牌),建造年份,建造面积,销售报价,销售状态(在售,待售,意向,售出,停售,缺省为“在售”)。(5分)
(2)新增房产经纪人信息:房产经纪人基本信息包括:工号(八位数字:年份+四位序号),姓名,家庭住址,手机。(2分)
(3)顾客注册:点击用户登录页面的“注册”按钮,顾客进入用户注册页面,注册信息包括身份证号(判断条件18位,最后一位可以是字母“X”)、姓名、性别(男或女单选)、手机号码(11位数字)、家庭住址(地址格式:XX省XX市XX区(县)XX街道XX小区XX号楼XX单元XXX门牌)。(4分)
(4)顾客审核:顾客注册后,系统管理员后台可以以列表形式查看顾客基本信息, 点击顾客姓名,可以查看顾客详细信息,在顾客详细信息页面点击通过按钮,可以通过审核。通过审核的顾客才可以在前台登录界面登录主页面。(3分)
(5)查看个人信息:房产经纪或者顾客登录后,可以查看个人的详细信息。(2分)
(6)浏览房产信息:顾客登录后,可以查看所有在售房产信息;房产经纪人登录后,只能查看系统管理员授权的房产信息;系统管理员登录后可以查看全部房产信息(四种房产状态)。(3分)
(7)查询房产信息:可以按照户型、地址、建造年份、建造面积,销售报价五个条件进行综合查询,查询结果以列表形式显示,显示结果信息包括序号、地址、销售报价,点击地址,可以查看该套房产的详细信息;顾客可以看到的结果为所有在售的房产,房产经纪人看到的结果为所有授权给自己销售的房产信息,系统管理员可以查询所有房产信息。(6分)
(8)购买房产:顾客在浏览房产信息后,点击查看房产详细信息界面时,可以点击“交易”按钮,该房产状态信息改为 “意向”状态。(3分)
(9)房产交易:房产经纪人以列表形式显示待售房产信息和顾客名称,显示列表包括序号、地址、售价、顾客名称,房产经纪人点击地址可以查看房产和顾客详细信息,单击“交易”按钮,该房产状态信息改为“售出”状态。(3分)
(10)房产授权:系统管理员登录后可以浏览所有的在售房产信息,显示结果信息包括序号、地址、销售报价,点击地址,可以查看该套房产的详细信息,输入房产经纪人姓名,如果房产经纪人信息不存在,提示错误信息,不允许授权;如果正确,点击“授权”按钮,该房产状态信息改为“待售”状态。(3分)
(11)停售房产:系统管理员登录后可以浏览所有的在售房产信息,显示结果信息包括序号、地址、销售报价,点击地址,可以查看该套房产的详细信息,,点击“停售”按钮,该房产状态信息改为“停售”状态。(3分)
(12)个人密码修改:顾客或者房产经纪人登录后,可以输入旧密码、新密码、新密码确认修改个人密码,需要判断旧密码是否正确,新密码和新密码确认是否一致;(2分)
(13)重置密码:管理员可以修改房产经纪人的个人密码,先按照房产经纪人工号查询,显示出基本信息后,点击密码重置,将房产经纪人密码统一修改为“123456”。(2分)
(14)数据库评分标准:按照题目要求创建房产基本信息表、房产经纪人基本信息表、顾客记录表,(3分),实现数据库连接正常(2分)。
数据表结构样式参考下表所示:
表1房产基本信息表
序 号 |
字段名称 |
中文含义 |
1 |
HouseID |
房产编号(唯一性) |
2 |
RoomType |
户型 |
3 |
Address |
房产地址 |
4 |
Year |
建造年份 |
5 |
Area |
建造面积 |
6 |
Sales |
销售报价 |
7 |
Status |
销售状态 |
8 |
AgentID |
房产经纪人ID |
9 |
UserID |
顾客ID |
表2房产经纪人基本信息表
序 号 |
字段名称 |
中文含义 |
1 |
AgentID |
工号(房产经纪人ID) |
2 |
AgentName |
房产经纪人姓名 |
3 |
AgentAddress |
家庭住址 |
4 |
Phone |
手机 |
表3顾客基本信息表
序 号 |
字段名称 |
中文含义 |
1 |
UserID |
顾客ID |
2 |
UserName |
姓名 |
3 |
sex |
性别 |
4 |
IdNumber |
身份证号 |
5 |
Phone |
手机 |
6 |
User |
家庭住址 |
Bean层
agent
package Bean; public class agent { private int id; private String AgentID;//工号 private String AgentName;//房产经纪人姓名 private String AgentAddress;//家庭住址 private String Phone;//手机 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getAgentID() { return AgentID; } public void setAgentID(String agentID) { AgentID = agentID; } public String getAgentName() { return AgentName; } public void setAgentName(String agentName) { AgentName = agentName; } public String getAgentAddress() { return AgentAddress; } public void setAgentAddress(String agentAddress) { AgentAddress = agentAddress; } public String getPhone() { return Phone; } public void setPhone(String phone) { Phone = phone; } }
house
package Bean; import sun.security.krb5.internal.APRep; public class house { private int id; private String HouseID;//房产编号 private String RoomType;//户型 private String Address;//房产地址 private String Year;//建造年份 private String Area;//建造面积 private String Sales;//销售报价 private String Status;//销售状态 private String AgentID;//房产经纪人ID private String UserID;//顾客ID public int getId() { return id; } public void setId(int id) { this.id = id; } public String getHouseID() { return HouseID; } public void setHouseID(String houseID) { HouseID = houseID; } public String getRoomType() { return RoomType; } public void setRoomType(String roomType) { RoomType = roomType; } public String getAddress() { return Address; } public void setAddress(String address) { Address = address; } public String getYear() { return Year; } public void setYear(String year) { Year = year; } public String getArea() { return Area; } public void setArea(String area) { Area = area; } public String getSales() { return Sales; } public void setSales(String sales) { Sales = sales; } public String getStatus() { return Status; } public void setStatus(String status) { Status = status; } public String getAgentID() { return AgentID; } public void setAgentID(String agentID) { AgentID = agentID; } public String getUserID() { return UserID; } public void setUserID(String userID) { UserID = userID; } }
user
package Bean; public class user { private int id; private String UserID;//顾客ID private String UserName;//姓名 private String sex;//性别 private String IdNumber;//身份证号 private String Phone;//手机 private String Address;//家庭住址 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUserID() { return UserID; } public void setUserID(String userID) { UserID = userID; } public String getUserName() { return UserName; } public void setUserName(String userName) { UserName = userName; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getIdNumber() { return IdNumber; } public void setIdNumber(String idNumber) { IdNumber = idNumber; } public String getPhone() { return Phone; } public void setPhone(String phone) { Phone = phone; } public String getAddress() { return Address; } public void setAddress(String address) { Address = address; } }
dao(还不全,后续再添加)修改后dao层地址:暂时为空
package Dao; import java.sql.*; public class dao { public Connection sjk() { Connection connect; try { connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/fangchan?&useSSL=false&serverTimezone=UTC","root","123456"); return connect; }catch(Exception e) { e.printStackTrace(); } return null; } public boolean queryEmpty(String sfnum,String name,String sex,String sjnum,String home,String mima) { boolean flag=false; if(sfnum==null||"".equals((sfnum))&&name==null||"".equals(name)&&sex==null||"".equals(sex)&&sjnum==null||"".equals(sjnum)&&home==null||"".equals(home)&&mima==null||"".equals(mima)) { flag=true; } return flag; } public Connection sj() { Connection connect; try { connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/fangchan?&useSSL=false&serverTimezone=UTC","root","123456"); return connect; }catch(Exception e) { e.printStackTrace(); } return null; } public boolean queryEmpty2(String gonghao,String jjname,String jjhome,String sjhm) { boolean flag=false; if(gonghao==null||"".equals((gonghao))&&jjname==null||"".equals(jjname)&&jjhome==null||"".equals(jjhome)&&sjhm==null||"".equals(sjhm)) { flag=true; } return flag; } public boolean pinji(String sfnum,String sjnum) { boolean flag=true; try { double a=Integer.valueOf(sfnum); double b=Integer.valueOf(sjnum); if(a%1==0&&b%1==0) { flag=false; } return flag; } catch (Exception e) { return flag; } } public boolean queryTeacherxiu(String mima)//查空 { boolean flag=false; if(mima==null||"".equals((mima))) { flag=true; } return flag; } //修改顾客密码 public void mimaxiugai(String mima) { try { PreparedStatement preparedStatement=null; Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/fangchan?&useSSL=false&serverTimezone=UTC","root","123456"); preparedStatement=connect.prepareStatement("Update guke set mima=?, "); preparedStatement.setString(6,mima); preparedStatement.executeUpdate(); preparedStatement.execute(); connect.close(); }catch(SQLException e){ e.printStackTrace(); } } //录入顾客input() public void input(String sfnum,String name,String sex,String sjnum,String home,String mima) { try { PreparedStatement preparedStatement=null; Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/fangchan?&useSSL=false&serverTimezone=UTC","root","123456"); preparedStatement=connect.prepareStatement("insert into guke (sfnum,name,sex,sjnum,home,mima) values (?,?,?,?,?,?)"); preparedStatement.setString(1,sfnum); preparedStatement.setString(2,name); preparedStatement.setString(3,sex); preparedStatement.setString(4,sjnum); preparedStatement.setString(5,home); preparedStatement.setString(6,mima); preparedStatement.executeUpdate(); connect.close(); preparedStatement.close(); }catch(SQLException e){ e.printStackTrace(); } } //录入经纪人 input1() public void input1(String gonghao,String jjname,String jjhome,String sjhm) { try { PreparedStatement preparedStatement=null; Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/fangchan?&useSSL=false&serverTimezone=UTC","root","123456"); preparedStatement=connect.prepareStatement("insert into jingji (gonghao,jjname,jjhome,sjhm) values (?,?,?,?)"); preparedStatement.setString(1,gonghao); preparedStatement.setString(2,jjname); preparedStatement.setString(3,jjhome); preparedStatement.setString(4,sjhm); preparedStatement.executeUpdate(); connect.close(); preparedStatement.close(); }catch(SQLException e){ e.printStackTrace(); } } //录入房产信息input2() public void input2(String houseid ,String room,String address,String year,String area,String sales,String status){ try { PreparedStatement preparedStatement=null; Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/fangchan?serverTimezone=GMT%2B8","root","123456"); preparedStatement=connect.prepareStatement("insert into house (houseid,room,address,year,area,sales,status) values (?,?,?,?,?,?,?)"); preparedStatement.setString(1,houseid); preparedStatement.setString(2,room); preparedStatement.setString(3,address); preparedStatement.setString(4,year); preparedStatement.setString(5,area); preparedStatement.setString(6,sales); preparedStatement.setString(7,status); preparedStatement.executeUpdate(); connect.close(); preparedStatement.close(); }catch(SQLException e){ e.printStackTrace(); } } //修改顾客信息 xiugai() public void xiugai(String sfnum,String name,String sex,String sjnum,String home,String mima,String sf1) { try { PreparedStatement preparedStatement=null; Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/fangchan?&useSSL=false&serverTimezone=UTC","root","123456"); preparedStatement=connect.prepareStatement("Update guke set sfnum=?,name=?,sex=?,sjnum=?,home=?,miam=? where sfnum=?"); preparedStatement.setString(1,sfnum); preparedStatement.setString(2,name); preparedStatement.setString(3,sex); preparedStatement.setString(4,sjnum); preparedStatement.setString(5,home); preparedStatement.setString(6,mima); preparedStatement.setString(7,sf1); preparedStatement.executeUpdate(); preparedStatement.execute(); connect.close(); }catch(SQLException e){ e.printStackTrace(); } } //删除顾客信息deletedata() public void deletedata(String sfnum) { try { PreparedStatement preparedStatement=null; Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/fangchan?&useSSL=false&serverTimezone=UTC","root","123456"); preparedStatement=connect.prepareStatement("delete from guke where sfnum = ?"); preparedStatement.setString(1,sfnum); preparedStatement.executeUpdate(); connect.close(); preparedStatement.close(); }catch(SQLException e){ e.printStackTrace(); } } public boolean queryEmpty1(String name) { boolean flag=false; if(name==null||"".equals((name))) { flag=true; } return flag; } //判断顾客登录信息是否正确judgeguk() public boolean judgeguke(String name,String mima) { boolean flag=false; try { Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/fangchan?&useSSL=false&serverTimezone=UTC","root","123456"); Statement stmt = connect.createStatement(); ResultSet rs = stmt.executeQuery("select * from guke"); while(rs.next()) { if((name.equals(rs.getString("name")))&& (mima.equals(rs.getString("mima")))) { flag=true; } } rs.close(); connect.close(); stmt.close(); }catch (SQLException e) { e.printStackTrace(); } return flag; } //判断经纪人登录信息是否正确judgejingji() public boolean judgejingji(String name,String mima) { boolean flag=false; try { Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/fangchan?&useSSL=false&serverTimezone=UTC","root","123456"); Statement stmt = connect.createStatement(); ResultSet rs = stmt.executeQuery("select * from jingji"); while(rs.next()) { if((name.equals(rs.getString("jjname")))&& (mima.equals(rs.getString("gonghao")))) { flag=true; } } rs.close(); connect.close(); stmt.close(); }catch (SQLException e) { e.printStackTrace(); } return flag; } //判断管理员登录信息是否正确judgeguanli() public boolean judgeguanli(String name,String mima){ boolean flag=false; if (("administer".equals(name))&&("123456".equals(mima))){ flag = true; } return flag; } //查重身份证号 public boolean chachong(String sfnum) { boolean flag=false; try { Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/fangchan?&useSSL=false&serverTimezone=UTC","root","123456"); Statement stmt = connect.createStatement(); ResultSet rs = stmt.executeQuery("select * from guke"); while(rs.next()) { if(sfnum.equals(rs.getString("sfnum"))) { flag=true; } } rs.close(); connect.close(); stmt.close(); }catch (SQLException e) { e.printStackTrace(); } return flag; } //判断身份证号码 public boolean sfzhm(String sfnum) { boolean flag=true; if(sfnum.length()==18) { for(int i=0;i<sfnum.length()-1;i++) { char k=sfnum.charAt(i); if(k=='0'||k=='1'||k=='2'||k=='3'||k=='4'||k=='5'||k=='6'||k=='7'||k=='8'||k=='9') { } else return flag; } char k=sfnum.charAt(sfnum.length()-1); if(k=='0'||k=='1'||k=='2'||k=='3'||k=='4'||k=='5'||k=='6'||k=='7'||k=='8'||k=='9'||k=='X') flag=false; } return flag; } public static void main(String[] args) { dao dao=new dao(); } }
Util
package Util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Util { private static String mysqlname = "fangchan"; private static Connection con; private static Statement sta; private static ResultSet re; private static String coursename = "com.mysql.cj.jdbc.Driver"; private static String url = "jdbc:mysql://localhost:3306/" + mysqlname + " ?serverTimezone=GMT%2B8"; public static Connection getConnection() { try { Class.forName(coursename); System.out.println("连接成功"); } catch (ClassNotFoundException e) { e.printStackTrace(); } try { con = DriverManager.getConnection(url, "root", "123456"); System.out.println("LIANJIE"); } catch (Exception e) { e.printStackTrace(); con = null; } return con; } public static void close(Statement state, Connection conn) { if (state != null) { try { state.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void close(ResultSet rs, Statement state, Connection conn) { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (state != null) { try { state.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }