# python期末项目
**Repository Path**: gaogaolo/python-final-project
## Basic Information
- **Project Name**: python期末项目
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-01-12
- **Last Updated**: 2021-01-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Python期末项目
撰写人:高智浩
撰写日期:2021-01-19
----
## 项目名称
### “高高咯服务系统”——多功能服务系统
### 项目意义
本项目通过Python和高德API以及azure API中的搜索POI和天气实时检测以及远程图像分析,将三种不同的API功能集成添加到项目中,旨在解决人们的三大问题:
- 1.了解某一地区附近的某一类型的地理信息;
- 2.实时检测广州的天气;
- 3.快速准确的获取图片的分析信息。

## 问题表述
本Python项目主要调用了高德API中搜索POI和天气检测以及azure API中的远程图片分析,将三种不同的功能服务集成在一起以在线网站形式呈现,通过网站的功能来解决诸如人们需要快速准确的了解广州实时天气的问题,以及去某一目的地前快速了解目的地附近感兴趣的地理信息的问题,同样包括对快速获取对某一图片的描述问题。
## 解决方案
### 整体项目规划
* 在进行这次的python项目规划的时候,由于不想只做一个单一功能的项目,所以便策划做成一个**集成多个不同服务功能的服务系统**。做一个可以公开使用的服务系统首先要做的便是一个**注册登录系统**当中就需要调用到Mysql数据库,项目中加入mysql数据库后,用户不仅可以用到原本数据库内的账号密码登录,还可以自行注册属于自己的账户密码来登录服务系统。
| 步骤 | 步骤描述 | Python基础知识点 |
| --- | --- | --- |
| 第一步 | 调用高德API和azure API | API的调用 |
| 第二步 | 通过Flask架构网站,呈现网站页面和实现网站功能 | Flask的使用和函数 |
| 第三步 | 通过MySQL数据库进行对注册和登陆信息的录入和读取 | MySQL数据库的调用 |
| 第四步 | 对调用出的API所返回的参数进行选择和呈现 | 列表和字典取值 |
| 第五步 | 实现日志的读取和页面呈现 | 日志 |
| 第六步 | 修改样式,优化网站 | HTML、CSS |
| 第七步 | 进行云端部署 | Pythonanywhere |
### 编程功能基本描述
1. API的调用
整个项目的第一步去寻找适合的的API并进行调用,在这里我选择调用高德API和azure API,通过获取他们的秘钥以及终结点,并阅读API文档,将搜索POI和天气检测以及远程图片分析的服务代码放置到我的webtest.py文件中,增删或修改一些代码,解决bug,使网站功能得以初步实现。
- API的调用占整个项目工作的15%,API的学习成本大约为20天。
2. Flask的使用
项目第二步是将调用好的API通过Python的Flask模块进行网站架构,通过python的函数将API的功能实现在前端页面中,并把设计编写好的HTML和网站的CSS样式连接入网站,并通过一步步对代码以及样式的修改,使整个项目网站得以在web中呈现。
- Flask的使用占整个项目工作的35%,Flask的学习成本大约为30天。
3. MySQL数据库的调用
项目第三步是往基本架构好的网站中添加MySQL数据库,让用户可以进行注册和登陆,注册信息会实时录入MySQL数据库当中,系统通过数据库读取可以进行登陆,整个网站得到进一步完善并更加像一个成熟的产品。首先,应先通过MySQL数据库建立自己的一个数据库,并通过connect函数将我们建立好的数据库导入我们的webtest.py文件中,将其置放于我们的登陆和注册页面的中,牢记数据库连接时需要的**host、port、user、password、db**。
- MySQL数据库的调用占整个项目工作的10%,MySQL的学习成本大约为12天。
4. 选择需要的API返回参数并呈现
项目第四步即是将API功能成功实现后所返回的众多参数进行选择,通过列表和字典取值等方式,将我们所需的参数进行选择并呈现在页面中,将其可视化处理,方便用户观看和获取信息。
- 列表和字典取值占整个项目工作的10%,列表和字典取值的学习成本大约为7天。
5. 日志的读取和呈现
项目第五步便是建立云端日志记录系统,将整个网站的数据调用记录进日志以及通过浏览日志表格的形式给呈现在网站中,具备独立的后台日志管理文件。
- 日志占整个项目工作的10%,日志的学习成本大约为2天。
6. 网站的优化和样式的修改
项目第六步在网站建立好后,功能得以成功调用实现。接下来便是对网站的外观和布局进行调整。这其中便涉及了HTML和CSS的内容,通过对样式的修改和各部件的显示位置的修改,使得网站更为美观,也让用户在使用的时候更加具有体验感。
- HTML和CSS占整个项目工作的10%,HTML和CSS的学习成本大约为20天。
7. 云端部署
项目第七步即是在云端部署网站,使网站可以通过网站的形式在不同的设备上方便使用,这里使用Pythonanywhere进行云端部署,完成Python网站项目。
- Pythonanywhere占整个项目工作的10%,Pythonanywhere的学习成本大约为30分钟。
### 云端项目部署基本描述
1.Pythonanywhere所有页面链接(除base页面外别的页面需要根据流程才能打开)
* [python anywhere主页base](http://gaogaolo.pythonanywhere.com/base)
* [python anywhere登录页login](http://gaogaolo.pythonanywhere.com/login)
* [python anywhere注册页zhuce](http://gaogaolo.pythonanywhere.com/zhuce)
* [python anywhere注册成功页zhuce2](http://gaogaolo.pythonanywhere.com/zhuce2)
* [python anywhere选择服务页xuanze](http://gaogaolo.pythonanywhere.com/xuanze)
* [python anywhere搜索POI搜索页addlogin](http://gaogaolo.pythonanywhere.com/addlogin)
* [python anywhere搜索POI结果页search](http://gaogaolo.pythonanywhere.com/search)
* [python anywhere云端日志页viewlog?](http://gaogaolo.pythonanywhere.com/viewlog?)
* [python anywhere广州天气实时检测页tianqi](http://gaogaolo.pythonanywhere.com/tianqi)
* [python anywhere远程图片分析页intopic?](http://gaogaolo.pythonanywhere.com/intopic?)
2. 页面结构与功能介绍图

3. 云端功能和部署心得
- > 云端功能:可以直接在云端上传或修改文件,在不同的设备上可以快捷简单的运行部署好的python项目,而不需要传送代码包才能运行。
- > 部署心得:第一步先在Pythonanywhere官网上进行注册,并且要反馈给客服证明自己不是机器人。在注册好pythonanywhere后,将项目压缩包(zip格式)上传到pythonanywhere,通过控制台的代码命令对压缩包进行解压处理,然后再通过代码讲解压后的文件移动到到创建好的mysite文件夹中。然后打开控制台进行部署操作,在创建一个云端数据库后可以导入自己的mysql数据内容,修改Pythonanywhere默认的数据库用户名和密码,更新云端部署。复制部署好的网站地址在网页打开,检测是否部署成功。总的来说pythonanywhere云端部署步骤并不算繁琐,在掌握了方式和结构后,部署一个python项目是比较方便快捷的。
## 学习/实践心得总结及感谢
### 心得总结
在python期末项目开发过程中,我深刻的意识到了自己代码能力的不足,常常会导致项目当中出现bug且花费大量的时间也难以解决。也经常会遇到当想要编写某一个程序功能的时候由于代码练习不足认知不足,导致常常会出现无从下手的情况。而且在很多时候,由于敲代码的时候不够细致细心,一两个小小的低级中英文符号书写错误导致的程序运行失败最后也会导致我要重新花费大量的时间和精力去排查去解决。但是在这些不断的挫折和失败当中,通过一次又一次的排查解决还有向老师和同学们的请教以及在网上搜寻资料教学,在这一项目的完成过程中也让我学习和体会良多,不仅使得我的代码能力有了挺大程度的进步,也让我了解到了在学习代码的过程当中最重要的事情就是多练习,多求知。只有通过大量的练习以及跟他人,跟资料的学习,才能使自己的代码能力能够得到提升。在当今时代,互联网确实为我们学习编程提供了丰富的海量资源,便于我们的代码答疑,我们要善于利用和学习这些宝贵的资源,让自己得到更好的提升。最后,在这次的期末项目开发过程中,经历的挫折和思考也让我的编程思维有了充足的改变,从看待代码方式的转变再到逻辑思维方式的提升,都对我在本次的项目当中有着莫大的好处和帮助。很感谢这次期末项目给我带来的思考和挑战,让我在这些一步步的学习和解决当中得到了充足的提升。
### 感谢
- 感谢高德API提供的web服务
> [搜索poi技术文档](https://lbs.amap.com/api/webservice/guide/api/search)
> [天气查询技术文档](https://lbs.amap.com/api/webservice/guide/api/weatherinfo)
- 感谢微软azure API提供的web服务
> [远程图片分析](https://dev.cognitive.azure.cn/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e1fa)
- 感谢Pythonanywhere提供免费的云端部署服务
> [pythonanywhere官网](https://www.pythonanywhere.com)
- 感谢CSDN技术社区中的博客们提供的技术支持
> [pythonanywhere部署教程](https://blog.csdn.net/qq_15260769/article/details/83182185)
> [python flask搭建教程](https://blog.csdn.net/u012734441/article/details/62036503?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161107378716780264054741%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161107378716780264054741&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-62036503.first_rank_v2_pc_rank_v29&utm_term=python%20flask&spm=1018.2226.3001.4187)
> [mysql安装与使用教程](https://blog.csdn.net/ypluo/article/details/104392387?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161107525416780266248659%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161107525416780266248659&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-2-104392387.first_rank_v2_pc_rank_v29&utm_term=mysql%E4%BD%BF%E7%94%A8&spm=1018.2226.3001.4187)
> [python日志系统](https://blog.csdn.net/qq_19691995/article/details/104292033?ops_request_misc=&request_id=&biz_id=102&utm_term=python%E6%97%A5%E5%BF%97%E8%AE%B0%E5%BD%95%E7%B3%BB%E7%BB%9F&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-104292033.first_rank_v2_pc_rank_v29&spm=1018.2226.3001.4187)
- 感谢菜鸟教程提供的HTML、CSS和Python3教程
> [HTML 元素](https://www.runoob.com/html/html-elements.html)
> [HTML 颜色名](https://www.runoob.com/html/html-colornames.html)
> [HTML 属性](https://www.runoob.com/html/html-attributes.html)
> [HTML CSS](https://www.runoob.com/html/html-css.html)
> [HTML 区块](https://www.runoob.com/html/html-blocks.html)
> [CSS 语法](https://www.runoob.com/css/css-syntax.html)
> [CSS 背景](https://www.runoob.com/css/css-background.html)
> [CSS 圆角](https://www.runoob.com/css3/css3-border-radius.html)
> [CSS 按钮](https://www.runoob.com/css3/css3-buttons.html)
> [Python3 内置函数](https://www.runoob.com/python3/python3-built-in-functions.html)
> [Python3 错误和异常](https://www.runoob.com/python3/python3-errors-execptions.html)
> [Python3 JSON 数据解析](https://www.runoob.com/python3/python3-json.html)
最后衷心感谢游鸽老师和智超老师,在一次次细致的教学和答疑当中帮我解决了不少项目当中的困难和让我学会了更多的知识;同时也感谢网新的同学们,大家在互帮互助相互交流解决代码问题的同时,不仅帮助了项目的完成,更是一次相互学习和提高的过程。