期末考试
2019 级《JAVA 语言程序设计》
上机考试试题
2020.12.20考试要求
一、本试卷为 2019 级《JAVA 语言程序设计》上机考试
试卷;
二. 注意编程规范:
(1) 通过 Eclipse 添加类的方式建立类;
(2) 程序开头部分注释班级、作者、学号、日期;
(3) 注意程序代码中必要的空格与缩进;
(4) 注意类、变量、方法的命名原则;
三. 考试结束后,将整个项目工程文件夹中的文件源代
码和数据库备份文件放入文件夹,以“班级学号姓名”
方式命名,并压缩成同名的压缩包文件,考试结束后提
交给课代表统一上交。
第 1 页 共 5 页房产信息管理系统(50分)
1、项目需求:
某房产公司,欲开发一个房产信息管理系统,其主要功能描述如下:
(1)公司销售的房产,房产信息包括,房产编号(唯一性)、房产证明,地址,
建造年份,建造面积,销售报价,房产照片以及销售状态 (在售,待售,意向,售
出,停售)等信息。
2. 公司雇佣了多名房产经纪,负责销售房产,系统中需要存储房产经纪的基本
信息,包括:姓名,家庭住址,联系电话等等。一套房产同一时间仅由一名房产经
纪负责销售,
3.系统用户包括顾客、房产经纪、系统管理员,顾客需经过系统身份验证之后,
才能登录系统,可以浏览、查询、购买相应房产。房产经纪登录系统之后,可以浏
览负责销售的房产信息,但需要经过系统管理员的审批授权。
4.系统管理员可以从系统中导出所有房产的信息列表,系统管理员定期将信息
和销售的房产,进行归纳,若公司确定不再销售某套房产,系统管理员将房产信息
从系统中删除。
2.系统要求与评分标准:
2.1 页面要求
(1)系统可以通过浏览器直接访问;(1 分)
(2)各个功能页面整体风格统一;
(3)首页为用户登录页面,系统管理员、房产经纪、顾客三种角色用户登录后,
进入相应的功能页,只能看到角色允许访问功能模块,用户登录界面包含用户、密
码两个文本框,以及登录和注册两个按钮;(3 分)
(4)顾客注册:点击用户登录页面的注册按钮,顾客进入用户注册页面,注册
信息包括身份证号、姓名、性别、手机号码、家庭住址。(4 分)
(6)顾客功能页:共包括查看个人信息、修改个人密码、浏览房产信息,查询
房产,购买房产五项功能模块。
(7)房产经纪功能页:包括查看个人信息、浏览房产信息、房产交易、查询房
第 2 页 共 5 页第 3 页 共 5 页
产、修改个人密码五项功能模块;
图 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 分)。
第 4 页 共 5 页第 5 页 共 5 页
数据表结构样式参考下表所示:
表 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
家庭住址
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>用户登录</title> </head> <form id="1" action ="denlv.jsp" method="get"> <p style="text-align:center;color:black;font-family:楷体; font-size:20px"> <br> 身份: <select size ="1"name="calss"> <option value ="顾客" selected>顾客</option> <option value ="房产经纪" >房产经纪</option> <option value ="系统管理员" >系统管理员</option> </select> <br><br> 用户: <input type="text" name="num"size="15"/> <br><br> 密码: <input type="password" name="pass"size="16"/> <br><br> <br><br> <input type="button" value="登录" onclick="location.href='gongneng.jsp'" /> <input type="button" value="注册" onclick="location.href='zhuce.jsp'" /> </p> </form> </html> <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>录入</title> </head> <form id="1" action ="zhuce-backstage.jsp" method="get"> <p style="text-align:center;color:black;font-family:楷体; font-size:20px"> <br> 身份证号码: <input type="text" name="sfnum"size="15"/> <br><br> 姓名: <input type="text" name="name"size="3"/> <br><br> 性别: <input type="radio" name="sex" value="男" />男 <input type="radio" name="sex" value="女" />女 手机号码: <input type="text" name="sjnum"size="10"/> <br><br> 家庭住址: <input type="text" name="home"size="10"/> <br><br> 密码: <input type="text" name="home"size="10"/> <br><br> <input type="submit" value="登记"/> <input type="reset" value="重置"/> </p> </form> </body> </html> <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>处理</title> </head> <body> <jsp:useBean id="util" class="jb.AbbC"/> <% String sfnum= request.getParameter("sfnum"); String name= request.getParameter("name"); String sex= request.getParameter("sex"); String sjnum= request.getParameter("sjnum"); String home= request.getParameter("home"); String mima= request.getParameter("mima"); if(util.queryEmpty(sfnum,name,sex,sjnum,home,mima)){ out.print("<script language ='javaScript'> alert('输入不能为空,请完成填写');window.history.back(-1); </script>"); }else if(util.sfzhm(sfnum)){ out.print("<script language ='javaScript'> alert('身份证必须为18位,且只能最后一位为X或数字');window.history.back(-1); </script>"); }else if(util.chachong(sfnum)){ out.print("<script language ='javaScript'> alert('录入身份证号码重复');window.history.back(-1); </script>"); }else{ util.input(sfnum,name,sex,sjnum,home,mima); out.print("<script language='javaScript'> alert('录入成功');</script>"); response.setHeader("refresh", "0;url=main.jsp"); } %> </body> </html> <%@ page language="java" import="java.sql.*" pageEncoding="utf-8"%> <html> <head> <title>修改</title> </head> <body> <table border="1"style="text-align:center"> <caption>修改密码</caption> <tr> <td align="center" width=4%>密码</td> </tr> <jsp:useBean id="util" class="jb.AbbC" scope="page" /> <% String num=session.getAttribute("num").toString(); try{ Connection connect = util.sjk(); Statement stmt = connect.createStatement(); ResultSet rs = stmt.executeQuery("select * from guke"); while(rs.next()){ if(num.equals(rs.getObject(2).toString())) { %> <tr> <td width=4% align="center"><%=rs.getObject(6) %></td> </tr> <% } } rs.close(); connect.close(); stmt.close(); }catch (SQLException e) { e.printStackTrace(); } %> </table> </body> <form id="1" action ="teacher-reviseback.jsp" method="get"> <p style="text-align:center;color:black;font-family:楷体; font-size:20px"> <br> 密码: <input type="text" name="mima"size="10"/> <br><br> <input type="button" value="返回上一页" onclick="location.href='gongneng.jsp" /> <br><br> <input type="submit" value="修改"/> <input type="reset" value="重置"/> </p> </form> </html> <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>修改密码</title> </head> <body> <jsp:useBean id="util" class="jb.AbbC" scope="page" /> <% String mima=session.getAttribute("mima").toString(); if(util.queryTeacherxiu(mima)){ out.print("<script language ='javaScript'> alert('输入不能为空');window.history.back(-1); </script>"); }else{ util.teacherXiugai(mima); out.print("<script language='javaScript'> alert('修改成功');</script>"); response.setHeader("refresh", "0;url=teacher.jsp"); } %> </body> </html>> <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>房产经纪</title> <body background="BACKGROUNG/1.jpg"> </head> <p style="text-align:center;color:black;font-family:宋体,serif; font-size:20px"> <br> <input type="button" value="查看个人信息" onclick="location.href='watchjinngji.jsp'" /> <br><br> <input type="button" value="修改个人密码" onclick="location.href='revisejingji.jsp'" /> <br><br> <input type="button" value="浏览房产信息" onclick="location.href='watchhouse.jsp'" /> <br><br> <input type="button" value="查询房产" onclick="location.href='wacthfang.jsp'" /> <br><br> <input type="button" value="房产交易" onclick="location.href='buyhouse1.jsp'" /> <br><br> <input type="button" value="主页面" onclick="location.href='main.jsp'" /> </p> </html> <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>录入</title> </head> <form id="1" action ="jjzhuce-backstage.jsp" method="get"> <p style="text-align:center;color:black;font-family:楷体; font-size:20px"> <br> 工号: <input type="text" name="gonghao"size="15"/> <br><br> 姓名: <input type="text" name="jjname"size="3"/> <br><br> 家庭住址: <input type="text" name="jjhome"size="10"/> <br><br> 手机号码: <input type="text" name="sjhm"size="10"/> <br><br> <input type="submit" value="登记"/> <input type="reset" value="重置"/> </p> </form> </body> </html>ml> <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>处理</title> </head> <body> <jsp:useBean id="util" class="jb.AbbC"/> <% String gonghao= request.getParameter("gonghao"); String jjname= request.getParameter("jjname"); String jjhome= request.getParameter("jjhome"); String sjhm= request.getParameter("sjhm"); if(util.queryEmpty2(gonghao,jjname,jjhome,sjhm)){ out.print("<script language ='javaScript'> alert('输入不能为空,请完成填写');window.history.back(-1); </script>"); }else{ util.input1(gonghao,jjname,jjhome,sjhm); out.print("<script language='javaScript'> alert('录入成功');</script>"); response.setHeader("refresh", "0;url=main.jsp"); } %> </body> </html> ADDC package jb; import java.sql.*; public class AbbC { public Connection sjk() { Connection connect; try { connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?&useSSL=false&serverTimezone=UTC","root","root"); 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/test?&useSSL=false&serverTimezone=UTC","root","root"); 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 teacherXiugai(String mima) { try { PreparedStatement preparedStatement=null; Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?&useSSL=false&serverTimezone=UTC","root","root"); preparedStatement=connect.prepareStatement("Update guke set mima=?, "); preparedStatement.setString(6,mima); preparedStatement.executeUpdate(); preparedStatement.execute(); connect.close(); }catch(SQLException e){ e.printStackTrace(); } } 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/test?&useSSL=false&serverTimezone=UTC","root","root"); 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(); } } public void input1(String gonghao,String jjname,String jjhome,String sjhm) { try { PreparedStatement preparedStatement=null; Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?&useSSL=false&serverTimezone=UTC","root","root"); 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(); } } 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/test?&useSSL=false&serverTimezone=UTC","root","root"); 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(); } } public void deletedata(String sfnum) { try { PreparedStatement preparedStatement=null; Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?&useSSL=false&serverTimezone=UTC","root","root"); 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; } public boolean inquiryCurriculum(String name) { boolean flag=true; try { Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?&useSSL=false&serverTimezone=UTC","root","root"); Statement stmt = connect.createStatement(); ResultSet rs = stmt.executeQuery("select * from guke"); while(rs.next()) { if(name.equals(rs.getString("name"))) { flag=false; } } rs.close(); connect.close(); stmt.close(); }catch (SQLException e) { e.printStackTrace(); } return flag; } public boolean chachong(String sfnum) { boolean flag=false; try { Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?&useSSL=false&serverTimezone=UTC","root","root"); 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') continue; 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) { AbbC a=new AbbC(); } }