期末项目最终实现

5.29blog:

(一)数据库设计部分:

创建数据库hourse:

1:关注表

CREATE TABLE `guanzhu` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `uid` int(11) DEFAULT NULL,

  `hid` int(11) DEFAULT NULL,

  `time` datetime DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

2:历史表

CREATE TABLE `history` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `uid` int(11) DEFAULT NULL,

  `uname` varchar(65) DEFAULT NULL,

  `createtime` datetime DEFAULT NULL,

  `hid` int(11) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=133 DEFAULT CHARSET=utf8;

3:房屋信息表

CREATE TABLE `hourse` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `uname` varchar(255) DEFAULT NULL COMMENT '房东名字',

  `uid` int(11) DEFAULT NULL,

  `image` varchar(255) DEFAULT NULL COMMENT '主视图',

  `image1` varchar(255) DEFAULT NULL,

  `image2` varchar(255) DEFAULT NULL,

  `area` int(11) DEFAULT NULL COMMENT '面积',

  `address` varchar(255) DEFAULT NULL COMMENT '地址',

  `rent_type` int(11) DEFAULT NULL COMMENT '0 日租 1月租',

  `day_price` double DEFAULT NULL COMMENT '日租金',

  `month_price` double DEFAULT NULL COMMENT '月租金',

  `hourse_type` int(66) unsigned DEFAULT NULL COMMENT '1一室一厅2两室一厅3三室一厅',

  `state` int(11) DEFAULT '0' COMMENT '0可申请 1已申请 2已审核 3已入组 4已退房',

  `fabu_state` int(11) DEFAULT '0' COMMENT '0 未审核 自己房屋审核情况',

  `name` varchar(64) DEFAULT NULL COMMENT '名字',

  `xiaoqv` varchar(64) DEFAULT NULL COMMENT '归属小区',

  `introduce` varchar(4000) DEFAULT NULL COMMENT '房子介绍',

  `xqintrodece` varchar(4000) DEFAULT NULL COMMENT '小区介绍',

  `createtime` datetime DEFAULT NULL COMMENT '发布时间',

  `tel` varchar(64) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;

4:订单房屋表

CREATE TABLE `hourse_order` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `hid` int(11) DEFAULT NULL COMMENT '房子ID',

  `in_time` datetime DEFAULT NULL COMMENT '入住时间',

  `pay_type` int(11) DEFAULT NULL COMMENT '支付方式',

  `out_time` datetime DEFAULT NULL COMMENT '退房时间',

  `price` double DEFAULT NULL COMMENT '总价',

  `state` int(11) DEFAULT NULL COMMENT '申请状态',

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

5:留言实体表

CREATE TABLE `message` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `content` varchar(2000) DEFAULT NULL COMMENT '留言内容',

  `uid` int(11) DEFAULT NULL COMMENT '留言人',

  `hid` int(11) DEFAULT NULL COMMENT '被留言房屋',

  `rank` int(11) DEFAULT NULL COMMENT '评分',

  `time` datetime DEFAULT NULL COMMENT '评论时间',

  `uname` varchar(64) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

6:CREATE TABLE `my_hource` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `hid` int(11) DEFAULT NULL,

  `time` datetime DEFAULT NULL,

  `uid` int(11) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

7:申请表

CREATE TABLE `shenqing` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `uid` int(11) DEFAULT NULL COMMENT '申请人id',

  `hid` int(11) DEFAULT NULL COMMENT '房子ID',

  `time` datetime DEFAULT NULL COMMENT '申请时间',

  `uname` varchar(64) DEFAULT NULL COMMENT '房东姓名',

  `state` int(11) DEFAULT NULL COMMENT '申请状态',

  `intime` varchar(64) DEFAULT NULL COMMENT '入住时间',

  `renttype` int(11) DEFAULT NULL COMMENT '租住类型',

  `price` double DEFAULT NULL COMMENT '价格',

  `hname` varchar(64) DEFAULT NULL COMMENT '房子姓名',

  `huid` int(11) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

8:用户表

CREATE TABLE `user` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `username` varchar(255) DEFAULT NULL,

  `password` varchar(255) DEFAULT NULL,

  `realname` varchar(255) DEFAULT NULL,

  `role` varchar(32) DEFAULT 's' COMMENT 'admin guest',

  `image` varchar(64) DEFAULT NULL COMMENT 'u图片',

  `address` varchar(255) DEFAULT NULL COMMENT '收货地址',

  `phone` varchar(64) DEFAULT NULL,

  `idnumber` varchar(65) DEFAULT NULL COMMENT '身份证号',

  `tel` varchar(64) DEFAULT NULL,

  `sex` int(11) DEFAULT '0',

  `pay` int(11) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

(二)典型代码展示部分:(代码不知道贴什么,所以详细设计与系统实现还是见文档吧)

import java.util.*;

import java.util.Map.Entry;

 

/**

 * 基于用户的协同过滤推荐算法实现

A a b d

B a c

C b e

D c d e

 * @author Administrator

 *

 */

public class UserCF {

 

 

       /**

        *

        * @param userList 用户喜好集合

        * @param recommendUser 需要的用户

        * @return

        */

       public List<Integer> recoment(List<RecommentUser> userList,Integer recommendUser){

              List<Sorf> sorfList = new ArrayList<>();

              int[][] sparseMatrix = new int[userList.size()][userList.size()];//建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】

              Map<Integer, Integer> userItemLength = new HashMap<>();//存储每一个用户对应的不同物品总数  eg: A 3

              Map<Integer, Set<Integer>> itemUserCollection = new HashMap<>();//建立物品到用户的倒排表 eg: a A B

              Set<Integer> items = new HashSet<>();//辅助存储物品集合

              Map<Integer, Integer> userID = new HashMap<>();//辅助存储每一个用户的用户ID映射

              Map<Integer, Integer> idUser = new HashMap<>();//辅助存储每一个ID对应的用户映射

              System.out.println("Input user--items maping infermation:<eg:A a b d>");

 

              for(int i = 0; i < userList.size() ; i++){//依次处理N个用户 输入数据  以空格间隔

                     RecommentUser user = userList.get(i);

                     int uid = userList.get(i).getId();

                     int size = userList.get(i).getLikeList().size();

                     userItemLength.put(uid, size);//eg: A 3

                     userID.put(uid, i);//用户ID与稀疏矩阵建立对应关系

                     idUser.put(i, uid);

                     //建立物品--用户倒排表

                     for(int j = 0; j < size; j ++){

                            if(items.contains(user.getLikeList().get(j))){//如果已经包含对应的物品--用户映射,直接添加对应的用户

                                  itemUserCollection.get(user.getLikeList().get(j)).add(uid);

                            }else{//否则创建对应物品--用户集合映射

                                   items.add(user.getLikeList().get(j));

                                   itemUserCollection.put(user.getLikeList().get(j), new HashSet<Integer>());//创建物品--用户倒排关系

                                  itemUserCollection.get(user.getLikeList().get(j)).add(uid);

                            }

                     }

              }

 

 

              System.out.println(itemUserCollection.toString());

              //计算相似度矩阵【稀疏】

              Set<Entry<Integer, Set<Integer>>> entrySet = itemUserCollection.entrySet();

              Iterator<Entry<Integer, Set<Integer>>> iterator = entrySet.iterator();

              while(iterator.hasNext()){

                     Set<Integer> commonUsers = iterator.next().getValue();

                     for (Integer user_u : commonUsers) {

                            for (Integer user_v : commonUsers) {

                                   if(user_u.equals(user_v)){

                                          continue;

                                   }

                                   sparseMatrix[userID.get(user_u)][userID.get(user_v)] += 1;//计算用户u与用户v都有正反馈的物品总数

                            }

                     }

              }

 

              for (int i = 0; i < userList.size(); i++) {

                     System.out.println("用户" + userList.get(i).getId() + ":" + userList.get(i).getLikeList().toString());

              }

              //计算用户之间的相似度【余弦相似性】

              int recommendUserId = userID.get(recommendUser);

              for (int j = 0;j < sparseMatrix.length; j++) {

                     if(j != recommendUserId){

                            System.out.println(idUser.get(recommendUserId)+"--"+idUser.get(j)+"相似度:"+sparseMatrix[recommendUserId][j]/Math.sqrt(userItemLength.get(idUser.get(recommendUserId))*userItemLength.get(idUser.get(j))));

                     }

              }

 

              //计算指定用户recommendUser的物品推荐度

              for(Integer item: items){//遍历每一件物品

                     Set<Integer> users = itemUserCollection.get(item);//得到购买当前物品的所有用户集合

                     if(!users.contains(recommendUser)){//如果被推荐用户没有购买当前物品

                            // 则进行推荐度计算

                            double itemRecommendDegree = 0.0;

                            for(Integer user: users){

                                   itemRecommendDegree += sparseMatrix[userID.get(recommendUser)][userID.get(user)]/Math.sqrt(userItemLength.get(recommendUser)*userItemLength.get(user));//推荐度计算

                            }

                            System.out.println("商品"+item+" 对用户 "+recommendUser +"'推荐度:"+itemRecommendDegree);

                            Sorf sorf = new Sorf(item,itemRecommendDegree);

                            sorfList.add(sorf);

                     }

              }

              Collections.sort(sorfList);

              int size = 0;

              if(sorfList.size() <5){

                     size = sorfList.size();

              }else {

                     size = 4;

              }

              List<Integer> ids = new ArrayList<>();

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

                     ids.add(sorfList.get(i).getKey());

              }

              return ids;

       }

}

 

6.19blog:

(一)测试:

单元测试:

 

黑盒测试:

 

(二)部署过程:

第一步:服务器的环境部署

1:安装jdk8

2:安装MySQL5.7 可以按照这个链接进行安装:https://www.cnblogs.com/chancy/p/9444187.html

3:在服务器上安装tomcat,安装完成过后开启服务,在自己电脑浏览器地址栏输入IP:8080

4:可以用Xftp将已经打包好的项目.war发送到服务器webapps目录下,并改名为ROOT.war(记得将原来的ROOT删除)

5:然后浏览器输入IP:8080/就出现了我们的项目了

 

 

 

 

 

 

 

(三)项目访问地址以及需注意的相关事项说明:

浏览器地址栏输入:http://148.70.249.79:8080/

一些事项说明:

1:管理员登录也是通过该页面进行登录,有个管理员账号,然后便可以进入后台管理系统。

 

 

 

下图即为后台管理界面:

 

 

 

 

 

 

 

 

2:发布房屋上传图片后,该页面没有什么明显显示,但是你将光标移到上传处就会显示你的图片名字,即成功上传。

3:项目可能还存在一些bu

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本套大数据热门技术Spark+机器学习+贝叶斯算法系列课程,历经5年沉淀,调研企业上百家,通过上万学员汇总,保留较为完整的知识体系的同时,让每个模块看起来小而精,碎而不散。在本课程中基于大量案例实战,深度剖析和讲解Spark2.4原理和新特性,且会包含完全从企业真实业务需求中抽取出的案例实战。内容涵盖Spark核心编程、Spark SQL和Spark Streaming、Spark内核以及源码剖析、推荐系统、Kafka消费机制、Spark机器学习、朴素贝叶斯算法、企业级实战案例等。通过理论和实际的紧密结合,可以使学员对大数据Spark技术栈有充分的认识和理解,在项目实战中对Spark和流式处理应用的场景、以及大数据开发有更深刻的认识;并且通过对流处理原理的学习和与批处理架构的对比,可以对大数据处理架构有更全面的了解,为日后成长为架构师打下基础。本套教程可以让学员熟练掌握Spark技术栈,提升自己的职场竞争力,实现更好的升职或者跳槽,或者从J2EE等传统软件开发工程师转型为Spark大数据开发工程师,或是对于正在从事Hadoop大数据开发的朋友可以拓宽自己的技术能力栈,提升自己的价值。Spark应用场景Yahoo将Spark用在Audience Expansion中的应用,进行点击预测和即席查询等。淘宝技术团队使用了Spark来解决多次迭代的机器学习算法、高计算复杂度的算法等。应用于内容推荐、社区发现等。腾讯大数据精准推荐借助Spark快速迭代的优势,实现了在“数据实时采集、算法实时训练、系统实时预测”的全流程实时并行高维算法,最终成功应用于广点通pCTR投放系统上。优酷土豆将Spark应用于视频推荐(图计算)、广告业务,主要实现机器学习、图计算等迭代计算。本套大数据热门技术Spark+机器学习+贝叶斯算法共计13季,本套为第11季。
### 回答1: 安卓项目期末作业是指在安卓开发课程中,学生需要完成一个具体的实践项目,以展示在课堂所学知识的运用能力。期末作业通常是一个完整的应用程序,包含了界面设计、功能实现和数据交互等方面的内容。 完成安卓项目期末作业需要首先明确项目的要求和目标,然后进行项目的计划和设计。在设计阶段,需要确定应用的界面风格、功能模块、数据结构等方面的内容。接下来,就是根据设计进行具体的编码实现工作,包括编写代码、调试代码以及测试应用等。最后,完成实现后需要对应用进行优化和美化,以提高用户体验。 完成安卓项目期末作业后会生成一个apk文件,这是安卓应用程序的可执行文件。apk文件可以在安卓设备上进行安装和运行。学生可以将apk文件分享给其他人,让他们体验和使用自己开发的应用。同时,也可以将apk文件提交给教师作为期末作业的成果。 通过完成安卓项目期末作业以及生成apk文件,学生不仅能够巩固所学的知识,还能够锻炼自己的开发能力和解决问题的能力。同时,这也为学生将来在工作中应用所学知识打下了基础,提供了宝贵的实践经验。在这个过程中,学生还能够体会到软件开发的乐趣,提高自我学习和团队合作的能力。 ### 回答2: 安卓项目期末作业是指在学习安卓开发课程的过程中,经过一学期的学习与实践,完成的最终任务或作品。这个作业通常基于安卓平台,通过使用Java编程语言和安卓开发工具,按照特定的需求和要求进行设计、开发和实现。这个作业通常涉及到安卓应用程序的开发和实现,包括了界面设计、功能实现、数据处理等方面。 在完成安卓项目期末作业后,通常需要将安卓应用程序打包成一个APK文件。APK是Android PacKage的缩写,它是安卓应用程序的一种安装包格式。APK文件可以通过安装到安卓设备上,使得用户能够使用和体验我们所开发的安卓应用程序。 通过将安卓项目期末作业打包成APK文件,在实际使用和部署时,我们可以将APK文件直接安装在支持安卓系统的设备中,让用户方便地使用我们开发的应用程序。APK文件一般包含了安卓应用程序的资源文件、代码文件等。通过将APK文件发送给用户,或者通过应用商店等发布和分享,用户可以通过点击APK文件进行安装,从而获得他们所需要的安卓应用程序。 总而言之,安卓项目期末作业是学习安卓开发过程中的最终任务或作品,而APK文件则是将作业打包成安卓应用程序的一种格式,方便在支持安卓系统的设备上安装和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值