本科毕业论文(设计)开题报告

论文(设计)题目:基于大数据的汽车推荐系统的设计与实现

学院

专业

计算机科学与技术(大数据)

年级

2019级

学生姓名

指导教师

学号

职称

讲师

  • 选题的目的和意义

本课题研究的目的在于使用户更好的了解市场上的汽车信息,便于用户选择出适合自己的智能汽车。另外通过此次基于大数据的汽车推荐系统的设计与实现,了解了系统设计的框架原理,掌握了基本程序框架的设计与实现,巩固对Java框架和MySQL的了解以及它们在使用方面知识的学习和掌握。掌握汽车推荐系统的开发过程,熟练掌握SQL数据库的运用。该系统中,应用数据库管理,SQL语言原理,采用成熟java框架设计。根据对大数据的分析与讨论,实现汽车推荐管理,提供与用户的交互界面,完成汽车推荐管理系统的设计和开发,开发出来的汽车推荐系统能展示出它所具备的功能并能应用到现实中。

随着当下智能汽车的不断普及,人们对用车的需求也在不断地扩大,但人们对于购车的范围渠道依旧局限于传统的方式。而网上的车评信息也非常多,让人无从辨别。国内的大型汽车信息平台,如懂车帝,汽车之家等,也有许多车评信息,但他们是汽车信息与服务平台,做的是全面的汽车信息服务,最大的劣势也在于信息数据展示的不平衡,而大数据汽车推荐系统,可以基于网络数据,以人们日常生活用车需求,在网络大数据背景下通过系统算法分析计算,给予相应的汽车推荐,并在详情页显示汽车的全方位的信息,做到信息全透明,包括汽车优势与不足、当下价格优惠、网上热评车评信息、4S店信息等。做到全面的切合日常生活信息服务,具有现实意义。

二、相关文献综述

随着智能汽车的不断发展与人们对汽车的不断依赖,汽车在日常生活中起着不可或缺的重要作用。本系统在对传统汽车选购的方式上,结合现有的信息,进行汇总,给予用户最优推荐,摒弃单方面选购过程中出现的信息不对称,信息不完善,信息隐瞒等,使用户在更短的时间内选择出适合自己的汽车。

由于本次研究涉及的知识点范围广泛,为了更好的完成本次毕业设计工作,在研发本系统之前做好相应的知识储备,由此借鉴参考文献如下:

(1)在协同过滤算法方面主要参考文献:[1]、[2]、[3]、[4]、[5]、[6]、[7]、[8]。

在本系统中主要的技术难关即产品的协同过滤,在国内智能汽车领域,各个厂商都在不断发展自家的汽车,而汽车的种类也在短时间内迎来了几何式的增长,但其中也有许多类似的款式,虽然各个厂商的各款汽车都有着许多的不同,但因其数量众多,不符合最优推荐,所以需要对其进行过滤,而通过这几篇协同过滤的相关文献的阅读借鉴,对其相关算法的学习了解,掌握用户遗忘曲线、用户访问权、用户模型算法、协同过滤算法,掌握其概述、分类、算法内容。对其协同过滤算法的学习,加入到整个系统框架中,完善系统功能。

(3)在推荐算法方面的主要参考文献:[9]、[10]。

通过对推荐算法相关两本著作的借鉴阅读,对推荐算法进行深入的学习,对其算法在框架中的具体实现和应用有了进一步的掌握。主要包括基于内容的推荐算法、基于用户的协同过滤、基于物品的协同过滤推荐算支、基于矩阵分解的协同过滤推荐算法、基于深度学习的推荐算法、混合推荐算法,以及推荐算法的评估。

(4)参考其他大数据方向的系统设计文献:[11]、[12]。

[13]、[14]两篇文献主要参考在大数据方向上用户个性化需求对推荐系统的作用以及相关技术操作指导。完善在大数据时代下,通过互联网对庞大的数据信息进行数据挖掘、计算、分析。例如,实时热搜推荐、实时行情价格推荐、实时车评信息推荐等。在用户进行需求选择的同时,提供更加便捷、全面的信息服务。而在大数据记录下,用户的数据形式的多样化,信息的全面化,都可以通过用户日志数据进行分析挖掘,充分发挥数据所具有的价值。

(5)参考其他行业系统设计的主要参考文献:[13]、[14]、[15]。

[15]、[16] 、[17]借鉴另一推荐系统的框架设计,在其推荐系统中,各个模块的架构设计、相关技术操作指示、相关算法设计与实现、系统的架构设计、流程设计、部署设计、数据库设计等进行一定的参考,以及在其推荐算法方面,推荐矩阵,相似度矩阵,实时推荐,推荐优先级,排序方法等等相关技术也有进一步的实践了解。

三、研究内容

(一)研究内容

拟设计一款基于大数据信息技术下的汽车推荐系统,解决当下智能汽车的选购问题。根据一些算法设计,并通过大数据技术对信息数据进行分析处理,在首页进行个性化推荐。系统可以分为用户端,销售端和管理员端。用户端的用户可以进行需求选择、查看汽车信息、沟通销售、预约看车等;销售端的销售可以通过登录,查看用户预约与沟通信息;管理员端的管理员可以在管理界面操作更多功能。

(二)论文提纲

引论

1 关键技术

1.1 协同过滤介绍

1.2 推荐算法介绍

1.3 MySQL数据库

1.4后台框架

2 系统分析

2.1 业务流程图

2.2 系统可行性分析

2.3 技术可行性分析

2.4 系统功能需求分析

2.5 非功能性需求分析

3 系统设计

   3.1 角色分析

   3.2 用户端结构设计

   3.3 销售端结构设计

   3.4 管理员端结构设计

   3.5 数据库设计

   3.6 界面设计

4 系统实现

   4.1 登录模块

4.2 用户端管理模块

4.3 销售端管理模块

4.4 管理员端管理模块

     5 系统测试

5.1 系统测试原则以及测试方法概述

5.2 系统测试环境

5.3 测试结果与缺陷解决方案

5.4 系统测试主要测试用例举例

6 结语

7 参考文献

致谢

附录

四、研究方法、步骤及措施等

(一)研究方法

1. 文献分析法

利用图书馆和网络资源查询资料,查找相关文献,为项目的设计,论文的写作提供相应的理论知识和技术支持。

2. 理论和实验相结合法

先查询资料,确定该毕业设计的可行性,并通过对深度学习和协同过滤的研究学习,借鉴前人的方法,通过自己的实践结合,进行系统的设计与测试,测试成功后在进行最后调试,完成汽车推荐系统的实现。

(二)研究步骤和措施

1.知识储备阶段

通过文献检索、资料查阅、分析同类别系统设计思路,将所要涉及的理论知识点陈列出来并加以学习,做好自己的笔记。为项目的设计、论文的写作提供相应的理论准备和数据支撑。

2.调研和需求设计阶段

通过对近几年汽车市场需求的调研与分析,以及对其他推荐系统的学习,建立分析模型,拟定毕业设计研究内容和功能的实现,确定论文写作大纲,撰写开题报告。

3.初步设计阶段

针对需求,结合自己所掌握的大数据知识初步研发本系统,初步设计出整体需求所需要完成的功能,以及对数据库的概要和详细设计,遇到难题及时与指导老师联系解决。

4.完善设计和论文初稿形成阶段

在初步设计和难题解决的基础之上,完善系统整体功能,调试个功能,基本形成较完善的系统,从而进行系统相关功能的编码与实现,论文初稿的形成。

5.成文和评审阶段

对系统整体功能模块进行测试并完善,将系统和论文定稿提交指导老师评审。

6.毕业论文(设计)答辩

  • 进度安排

序号

起止日期

工作内容

1

2022.10.31—2022.11.27

查阅资料、撰写开题报告

2

2022.11.28—2023.1.15

初步设计、拟定论文框架

3

2023.1.16—2023.3.5

完成设计、撰写论文

4

2023.3.6—2023.3.12

中期检查

5

2023.3.13—2023.4.9

完善设计、论文定稿

6

2023.4.10—2023.4.21

成果验收与评审

7

2023.4.22—2023.4.30

毕业论文(设计)答辩

8

2023.5.1—2023.5.28

材料整理、归档

六、主要参考文献

[1] 王建芳,韩鹏飞,苗艳玲,司马海峰.一种基于用户兴趣联合相似度的协同过滤算[J].河南理工大学学报(自然科学版),2019,38(05):118-123.

[2] 褚宏林.一种改进的协同过滤推荐算法及其并行算法研究[D].烟台大学,2021.

[3] 张雨豪.基于协同过滤与启发式关联规则的混合推荐系统[D].南京邮电大学,2021.

[4] 王佳斐,范伊红,宋永旗,王帅杰,付炳威.基于协同过滤算法的个性化影视推荐系统[J].电脑知识与技术,2022,18(23):12-13+18.

[5] 葛林博.基于协同过滤的推荐算法研究与应用[D].西安电子科技大学,2021.

[6] 何泽灵.基于协同过滤的推荐算法研究[D].重庆邮电大学,2020.

[7] 薛亮,徐慧,冯尊磊,贾俊铖.一种改进的协同过滤的商品推荐方法[J].计算机技术与发展,2022,32(07):201-207.

[8] 董立岩,修冠宇,马佳奇.基于权重调节和用户偏好的协同过滤算法[J].吉林大学学报(理学版),2020,58(03):599-604.

[9] 高华玲.推荐算法及应用[M].北京:北京邮电大学出版社, 2021.01.

[10] 黄美灵著.推荐算法实践[M].北京:电子工业出版社, 2019.08.

[11] 张如云.基于大数据和搜索的关联推荐系统的设计与实现探析[J].办公自动化,2018,23(07):34-36.

[12] 刘中林,郑凯东.基于大数据技术的购房推荐系统的设计与实现[J].信息与电脑(理论版),2022,34(07):190-193.

[13] 朱本瑞.基于Spark的离线与实时的电影推荐系统设计与实现[D].南京信息工程大学,2022.

[14] Zhao Junqing and Tie Pengfei. Design and Implementation of Energy-Saving Logistics Management System for Route Optimization[J].Wireless Communications and Mobile Computing, 2022.

[15] Qi liang SUN. Design and Implementation of Personnel Management Information System Based on SSM[C].2021.

[16] 

[17] 

七、指导教师意见

指导教师签名:   

     

 年   月   日

   

八、系(教研室)审查意见(请在相应栏目打“√”)

1.同意开题           2.不同意开题

系(教研室)主任签名:  

       

                                                               年   月   日

  • 学院审核意见(请在相应栏目打“√”)

1.同意开题           2.不同意开题

学院院长签名:    

    

年   月   日    

核心算法代码分享如下:

def init_data():
    print("==========开始采集车辆信息================")

    # 定义一个相对路径
    folder_path = 'photo'  # 注释8
    if os.path.exists(folder_path) == False:  # 注释9
        os.makedirs(folder_path)  # 注释10

    db = DBHelper()
    for pageNumber in range(1, 20):
        _jsonStr = __get_car_list_data(pageNumber, '北京')
        print(_jsonStr)
        _jsonObject = json.loads(_jsonStr)
        print(_jsonObject["data"]['series'])
        cars = _jsonObject["data"]['series'];
        for car in cars:
            print("id:" + str(car['id']))
            print("concern_id:" + str(car['concern_id']))
            print("outter_name:" + car['outter_name'])
            print("dealer_max_price:" + car['dealer_max_price'])
            print("dealer_min_price:" + car['dealer_min_price'])
            print("max_price:" + str(car['max_price']))
            print("min_price:" + str(car['min_price']))
            print("dealer_price:" + car['dealer_price'])
            print("cover_url:" + car['cover_url'])

            concern_id = car['concern_id']
            car_name = car['outter_name']
            dealer_max_price = car['dealer_max_price']
            dealer_min_price = car['dealer_min_price']
            max_price = car['max_price']
            min_price = car['min_price']
            dealer_price = car['dealer_price']
            cover_img = car['cover_url']

            # 遍历车辆详细信息
            print("==========获取车辆详细信息=============")
            _car_detail = __get_car_detail_data(car['concern_id'])
            # 转为json对象
            _json_car_detail = json.loads(_car_detail)
            print("评价人数:" + str(_json_car_detail["data"]['review_count_info']['total']))
            print("评价结果:" + _json_car_detail["data"]['review_count_info']['total_review'])
            score_infos = _json_car_detail["data"]['score_info']
            for score_info in score_infos:
                print(score_info['name'] + ":" + score_info['value'])
            print("rank_tips:" + _json_car_detail["data"]['series_info']['rank_tips'])
            print("score:" + _json_car_detail["data"]['series_info']['score'])

            comment_num = _json_car_detail["data"]['review_count_info']['total']
            comment_result = _json_car_detail["data"]['review_count_info']['total_review']
            # 综合得分
            score = _json_car_detail["data"]['series_info']['score']
            # 排名提醒
            rank_tips = _json_car_detail["data"]['series_info']['rank_tips']
            wg_score = score_infos[0]['value']
            ns_score = score_infos[1]['value']
            pz_score = score_infos[2]['value']
            kj_score = score_infos[3]['value']
            ck_score = score_infos[4]['value']
            dl_score = score_infos[5]['value']

            # 开始存储车辆信息
            car_list = []  # 空列表
            car_list.extend([concern_id, car_name.strip(), dealer_max_price,
                                dealer_min_price, max_price,
                                min_price, dealer_price.strip(), cover_img.strip(),comment_num,
                             comment_result.strip(),score,rank_tips.strip(),wg_score,ns_score,
                             pz_score,kj_score,ck_score,dl_score])
            db.add_car(car_list)
        else:
            print("没有循环数据!")
        print("==================第-%d-页采集完毕=====================" % pageNumber)
    print("==========数据全部采集完成完成================")
    db.close_db()

class DBHelper(object):
    # 数据库地址
    url = "localhost"
    # 数据库用户名
    username = "root"
    # 数据库密码
    password = "123456"
    # 数据库名称
    database = "car"

    connect = None

    def __init__(self):
        # 打开数据库连接
        if (self.connect == None):
            # self.connect = pymysql.connect(self.url, self.username, self.password, self.database)
            # host="localhost", user="root", password="xxx", database="xxxx"
            self.connect = pymysql.connect(host=self.url,port=3396, user=self.username,
                                           password=self.password, database=self.database)

    '''
    # 添加档案信息
    '''

    def add_car(self, data):

        # 使用 cursor() 方法创建一个游标对象 cursor
        cursor = self.connect.cursor()

        # SQL 语句
        _sql = """insert into t_car (concern_id,car_name,dealer_max_price,dealer_min_price,
                                        max_price,min_price,dealer_price,cover_img,comment_num,
                                        comment_result,score,rank_tips,wg_score,ns_score,pz_score,kj_score,
                                        ck_score,dl_score) 
                    values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"""
        try:
            # 执行SQL语句
            # print(match_sql)
            cursor.execute(_sql, data)
            # 提交事务
            self.connect.commit()

        except Exception as e:
            self.connect.rollback()  # 事务回滚
            print("Error: 添加信息失败", e)

    '''
    #关闭数据库
    '''

    def close_db(self):
        if (self.connect.close == False):
            self.connect.close()
            self.connect = None

'''
执行采集数据的方法,并存储到数据
'''

if __name__ == '__main__':
    init_data()

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐