**作者简介:**Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企业讲师以及同行交流合作
**主要内容:**Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能与大数据、单片机开发、物联网设计与开发设计、简历模板、学习资料、面试题库、技术互助、就业指导等
业务范围: 免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文降重、长期答辩答疑辅导、腾讯会议一对一专业讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路等**。**
收藏点赞不迷路 关注作者有好处
文末获取源码
项目编号:BS-BD-007
一,环境介绍
语言环境:Python3.8
数据库:Mysql: mysql5.7
WEB框架:Django
开发工具:IDEA或PyCharm
二,项目简介
随着老龄化社会的加速发展,社会上的老年人的医疗支出越来越多,通过对老年病的医疗数据的分析与统计,可以了解哪些老年病是最常见的,哪些病医疗支出较高,包括患者的年龄、性别统计等等。这些数据的统计与分析,可以较好的为当局者提供相应的参考数据样式,辅助进行行决策。
本研究基于Python语言和Django框架,MySQL数据库,构建了老年病医疗数据分析系统。同时系统采用数据采集技术,收集老年病的医疗数据,在此基础上进行数据分析,数据存储和统计。在进行数据展示时,采用Echart可视化报表进行数据展示,直观形象的展示了各类统计数据。系统整体采用三层架构设计,前端采用Vue框架开发实现。系统前端主要实现了健康知识学习、在线互动交流、公告信息查看、在线评论、AI智能问答等功能。后台主要实现了用户管理、医疗数据管理、知识管理、互动管理、数据可视化分析等相关功能模块。
系统整体设计灵活,采用接口开发的方式有效提升了系统的灵活性和可扩展性。经过最终的测试表明,系统的功能设计达到了预期目标
。
三,系统展示








四,核心代码展示
python
# coding:utf-8
__author__ = "ila"
import logging, os, json, configparser
import time
import numbers
import requests
from werkzeug.utils import redirect
from flask import request, jsonify,session
from sqlalchemy.sql import func,and_,or_,case
from sqlalchemy import cast, Integer,Float
from api.models.brush_model import *
from . import main_bp
from utils.codes import *
from utils.jwt_auth import Auth
from configs import configs
from utils.helper import *
import random
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
from email.header import Header
from utils.baidubce_api import BaiDuBce
from api.models.config_model import config
# 注册接口
@main_bp.route("/python7516963l/forum/register", methods=['POST'])
def python7516963l_forum_register():
if request.method == 'POST':#post请求
msg = {'code': normal_code, 'message': 'success', 'data': [{}]}
req_dict = session.get("req_dict")
#创建新用户数据
error = forum.createbyreq(forum, forum, req_dict)
if error!=None and error is Exception:
msg['code'] = crud_error_code
msg['msg'] = "注册用户已存在"
else:
msg['data'] = error
#返回结果
return jsonify(msg)
# 登录接口
@main_bp.route("/python7516963l/forum/login", methods=['GET','POST'])
def python7516963l_forum_login():
if request.method == 'GET' or request.method == 'POST':#get、post请求
msg = {"code": normal_code, "msg": "success", "data": {}}
#获取用户名和密码参数
req_dict = session.get("req_dict")
req_model = session.get("req_dict")
try:
del req_model['role']
except:
pass
#根据用户名获取用户数据
datas = forum.getbyparams(forum, forum, req_model)
if not datas:#如果为空则代表账号密码错误或用户不存在
msg['code'] = password_error_code
msg['msg']='密码错误或用户不存在'
return jsonify(msg)
req_dict['id'] = datas[0].get('id')
try:
del req_dict['mima']
except:
pass
#新建用户缓存数据并返回结果
return Auth.authenticate(Auth, forum, req_dict)
# 登出接口
@main_bp.route("/python7516963l/forum/logout", methods=['POST'])
def python7516963l_forum_logout():
if request.method == 'POST':#post请求
msg = {
"msg": "退出成功",
"code": 0
}
req_dict = session.get("req_dict")
return jsonify(msg)
# 重置密码接口
@main_bp.route("/python7516963l/forum/resetPass", methods=['POST'])
def python7516963l_forum_resetpass():
if request.method == 'POST':#post请求
msg = {"code": normal_code, "msg": "success"}
#获取传递的参数
req_dict = session.get("req_dict")
if req_dict.get('mima') != None:
req_dict['mima'] = '123456'
#更新重置后的密码
error = forum.updatebyparams(forum, forum, req_dict)
if error != None:
msg['code'] = crud_error_code
msg['msg'] = error
else:
msg['msg'] = '密码已重置为:123456'
return jsonify(msg)
# 获取会话信息接口
@main_bp.route("/python7516963l/forum/session", methods=['GET'])
def python7516963l_forum_session():
if request.method == 'GET':#get请求
msg = {"code": normal_code, "data": {}}
#获取token里的id,查找对应的用户数据返回
req_dict={"id":session.get('params').get("id")}
msg['data'] = forum.getbyparams(forum, forum, req_dict)[0]
return jsonify(msg)
# 分类接口(后端)
@main_bp.route("/python7516963l/forum/page", methods=['GET'])
def python7516963l_forum_page():
if request.method == 'GET':#get请求
msg = {"code": normal_code, "msg": "success", "data":{"currPage":1,"totalPage":1,"total":1,"pageSize":10,"list":[]}}
#获取传递的参数
req_dict = session.get("req_dict")
userinfo = session.get("params")
try:#判断是否有消息
__hasMessage__=forum.__hasMessage__
except:
__hasMessage__=None
if __hasMessage__ and __hasMessage__!="否":
tablename=session.get("tablename")
if tablename!="users" and session.get("params")!=None and forum!='chat':
req_dict["userid"]=session.get("params").get("id")
tablename=session.get("tablename")
#非管理员账号则需要判断用户的相应权限
if tablename!="users" :
mapping_str_to_object = {}
for model in Base_model._decl_class_registry.values():
if hasattr(model, '__tablename__'):
mapping_str_to_object[model.__tablename__] = model
try:#是否有管理员权限
__isAdmin__=mapping_str_to_object[tablename].__isAdmin__
except:
__isAdmin__=None
try:#是否有用户权限
__authSeparate__ =mapping_str_to_object[tablename].__authSeparate__
except:
__authSeparate__ = None
if __isAdmin__!="是" and __authSeparate__ == "是" and session.get("params")!=None:
req_dict["userid"]=session.get("params").get("id")
else:
try:
del req_dict["userid"]
except:
pass
# 当前表也是有管理员权限的表
if __isAdmin__ == "是" and 'forum' != 'forum':
if req_dict.get("userid") and 'forum' != 'chat':
del req_dict["userid"]
else:
#非管理员权限的表,判断当前表字段名是否有userid
if tablename!="users" and 'forum'[:7]!='discuss'and "userid" in forum.getallcolumn(forum,forum):
req_dict["userid"] = session.get("params").get("id")
clause_args = []
or_clauses = or_(*clause_args)
#查询列表数据
msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \
msg['data']['pageSize'] = forum.page(forum, forum, req_dict, or_clauses)
return jsonify(msg)
# 排序接口
@main_bp.route("/python7516963l/forum/autoSort", methods=['GET'])
def python7516963l_forum_autosort():
if request.method == 'GET':#get请求
msg = {"code": normal_code, "msg": "success", "data":{"currPage":1,"totalPage":1,"total":1,"pageSize":10,"list":[]}}
#获取传递的参数
req_dict = session.get("req_dict")
req_dict['sort']='clicktime'
req_dict['order']='desc'
try:#获取需要排序的内容
__browseClick__= forum.__browseClick__
except:
__browseClick__=None
#根据排序字段进行排序
if __browseClick__ =='是':
req_dict['sort']='clicknum'
elif __browseClick__ =='时长':
req_dict['sort']='browseduration'
else:
req_dict['sort']='clicktime'
#获取排序内容
msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \
msg['data']['pageSize'] = forum.page(forum, forum, req_dict)
return jsonify(msg)
#查询单条数据
@main_bp.route("/python7516963l/forum/query", methods=['GET'])
def python7516963l_forum_query():
if request.method == 'GET':#get请求
msg = {"code": normal_code, "msg": "success", "data":{}}
#获取传递的参数,根据参数获取单条结果
req_dict = session.get("req_dict")
query = db.session.query(forum)
for key, value in req_dict.items():
query = query.filter(getattr(forum, key) == value)
query_result = query.first()
query_result.__dict__.pop('_sa_instance_state', None)
msg['data'] = query_result.__dict__
return jsonify(msg)
# 分页接口(前端)
@main_bp.route("/python7516963l/forum/list", methods=['GET'])
def python7516963l_forum_list():
if request.method == 'GET':#get请求
msg = {"code": normal_code, "msg": "success", "data":{"currPage":1,"totalPage":1,"total":1,"pageSize":10,"list":[]}}
#获取传递的参数
req_dict = session.get("req_dict")
if req_dict.__contains__('vipread'):
del req_dict['vipread']
userinfo = session.get("params")
try:#判断是否有列表权限
__foreEndListAuth__=forum.__foreEndListAuth__
except:
__foreEndListAuth__=None
#不需要权限判断就去掉userid
if __foreEndListAuth__ and __foreEndListAuth__!="否":
tablename=session.get("tablename")
if tablename!="users" and session.get("params")!=None:
req_dict['userid']=session.get("params").get("id")
tablename=session.get("tablename")
if 'luntan' in 'forum':
if 'userid' in req_dict.keys():
del req_dict["userid"]
if 'discuss' in 'forum':
if 'userid' in req_dict.keys():
del req_dict["userid"]
#根据封装的req_dict字典去筛选获取列表数据
msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \
msg['data']['pageSize'] = forum.page(forum, forum, req_dict)
return jsonify(msg)
# 保存接口(后端)
@main_bp.route("/python7516963l/forum/save", methods=['POST'])
def python7516963l_forum_save():
if request.method == 'POST':#post请求
msg = {"code": normal_code, "msg": "success", "data": {}}
#获取传递的参数
req_dict = session.get("req_dict")
for key in req_dict:#将空值转为None
if req_dict[key] == '':
req_dict[key] = None
#保存数据
error= forum.createbyreq(forum, forum, req_dict)
if error!=None and error is Exception:
msg['code'] = crud_error_code
msg['msg'] = error
else:
msg['data'] = error
return jsonify(msg)
# 添加接口(前端)
@main_bp.route("/python7516963l/forum/add", methods=['POST'])
def python7516963l_forum_add():
if request.method == 'POST':#post请求
msg = {"code": normal_code, "msg": "success", "data": {}}
#获取参数
req_dict = session.get("req_dict")
#判断用户权限
try:
__foreEndListAuth__=forum.__foreEndListAuth__
except:
__foreEndListAuth__=None
#不需要权限则去掉userid
if __foreEndListAuth__ and __foreEndListAuth__!="否":
tablename=session.get("tablename")
if tablename!="users":
req_dict['userid']=session.get("params").get("id")
#保存数据
error= forum.createbyreq(forum, forum, req_dict)
if error!=None and error is Exception:
msg['code'] = crud_error_code
msg['msg'] = error
return jsonify(msg)
else:
msg['data'] = error
return jsonify(msg)
# 踩、赞接口
@main_bp.route("/python7516963l/forum/thumbsup/<id_>", methods=['GET'])
def python7516963l_forum_thumbsup(id_):
if request.method == 'GET':#get请求
msg = {"code": normal_code, "msg": "success", "data": {}}
req_dict = session.get("req_dict")
id_=int(id_)
type_=int(req_dict.get("type",0))
#获取要踩赞的记录
rets=forum.getbyid(forum, forum,id_)
update_dict={
"id":id_,
}
#加减数据
if type_==1:#赞
update_dict["thumbsupnum"]=int(rets[0].get('thumbsupnum'))+1
elif type_==2:#踩
update_dict["crazilynum"]=int(rets[0].get('crazilynum'))+1
#更新记录
error = forum.updatebyparams(forum, forum, update_dict)
if error!=None:
msg['code'] = crud_error_code
msg['msg'] = error
return jsonify(msg)
# 获取详情信息(后端)
@main_bp.route("/python7516963l/forum/info/<id_>", methods=['GET'])
def python7516963l_forum_info(id_):
if request.method == 'GET':#get请求
msg = {"code": normal_code, "msg": "success", "data": {}}
#根据id获取对应记录
data = forum.getbyid(forum, forum, int(id_))
if len(data)>0:
msg['data']=data[0]
#浏览点击次数
try:
__browseClick__= forum.__browseClick__
except:
__browseClick__=None
if __browseClick__ and "clicknum" in forum.__table__.columns:
click_dict={"id":int(id_),"clicknum":str(int(data[0].get("clicknum") or 0)+1)}#增加点击次数
ret=forum.updatebyparams(forum,forum,click_dict)#更新记录
if ret!=None:
msg['code'] = crud_error_code
msg['msg'] = ret
return jsonify(msg)
# 获取详情信息(前端)
@main_bp.route("/python7516963l/forum/detail/<id_>", methods=['GET'])
def python7516963l_forum_detail(id_):
if request.method == 'GET':#get请求
msg = {"code": normal_code, "msg": "success", "data": {}}
#根据id获取对应记录
data = forum.getbyid(forum, forum, int(id_))
if len(data)>0:
msg['data']=data[0]
#浏览点击次数
try:
__browseClick__= forum.__browseClick__
except:
__browseClick__=None
if __browseClick__ and "clicknum" in forum.__table__.columns:
click_dict={"id":int(id_),"clicknum":str(int(data[0].get("clicknum") or 0)+1)}#增加点击次数
ret=forum.updatebyparams(forum,forum,click_dict)#更新记录
if ret!=None:
msg['code'] = crud_error_code
msg['msg'] = ret
return jsonify(msg)
# 更新接口
@main_bp.route("/python7516963l/forum/update", methods=['POST'])
def python7516963l_forum_update():
if request.method == 'POST':#post请求
msg = {"code": normal_code, "msg": "success", "data": {}}
req_dict = session.get("req_dict")
#如果存在密码或点击次数则不更新
if req_dict.get("mima") and "mima" not in forum.__table__.columns :
del req_dict["mima"]
if req_dict.get("password") and "password" not in forum.__table__.columns :
del req_dict["password"]
try:
del req_dict["clicknum"]
except:
pass
#更新记录
error = forum.updatebyparams(forum, forum, req_dict)
if error!=None:
msg['code'] = crud_error_code
msg['msg'] = error
return jsonify(msg)
# 删除接口
@main_bp.route("/python7516963l/forum/delete", methods=['POST'])
def python7516963l_forum_delete():
if request.method == 'POST':#post请求
msg = {"code": normal_code, "msg": "success", "data": {}}
req_dict = session.get("req_dict")
#删除记录
error=forum.delete(
forum,
req_dict
)
if error!=None:
msg['code'] = crud_error_code
msg['msg'] = error
return jsonify(msg)
# 投票接口
@main_bp.route("/python7516963l/forum/vote/<int:id_>", methods=['POST'])
def python7516963l_forum_vote(id_):
if request.method == 'POST':#post请求
msg = {"code": normal_code, "msg": "success"}
#根据id获取记录
data= forum.getbyid(forum, forum, int(id_))
for i in data:
#增加投票数并更新记录
votenum=i.get('votenum')
if votenum!=None:
params={"id":int(id_),"votenum":votenum+1}
error=forum.updatebyparams(forum,forum,params)
if error!=None:
msg['code'] = crud_error_code
msg['msg'] = error
return jsonify(msg)
#查看所有开放的帖列表(无需登录)
@main_bp.route("/python7516963l/forum/flist", methods=['GET'])
def python7516963l_forum_flist():
if request.method == 'GET':#get接口
msg = {"code": normal_code, "msg": "success", "data":{"currPage":1,"totalPage":1,"total":1,"pageSize":10,"list":[]}}
req_dict = session.get("req_dict")
#获取列表记录
msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \
msg['data']['pageSize'] = forum.page(forum, forum, req_dict)
return jsonify(msg)
#根据ID查看主贴和所有回帖内容(无需登录)
@main_bp.route("/python7516963l/forum/list/<id_>", methods=['GET'])
def python7516963l_forum_list_id(id_):
if request.method == 'GET':#get请求
msg = {"code": normal_code, "msg": "success", "data": {"currPage":1,"totalPage":1,"total":1,"pageSize":10,"childs":[]}}
params = {"id":int(id_)}
datas = forum.retrieve(forum, forum)
current_id=0#当前id,也就是parent_id,找到了下一级,把下一级id赋值给current_id,当做下下一级id的paretn_id
for i in datas:
if i.get('id')==params.get('id'):
current_id=i.get('id')
msg['data'].update(i)
for i in datas:
if i.get('parentid')==current_id:
#二级回复
childs =[]
for child in datas:
if child.get('parentid')==i.get('id'):
childs.append(child)
print("childs:",childs)
i['childs']=childs#赋值
msg['data']["childs"].append(i)
return jsonify(msg)
#获取所有记录列表
@main_bp.route("/python7516963l/forum/lists", methods=['GET'])
def python7516963l_forum_lists():
if request.method == 'GET':#get请求
msg = {"code": normal_code, "msg": "success", "data": []}
list,_,_,_,_ = forum.page(forum,forum,{})
msg['data'] = list
return jsonify(msg)
五,相关作品展示
基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目
基于Nodejs、Vue等前端技术开发的前端实战项目
基于微信小程序和安卓APP应用开发的相关作品
基于51单片机等嵌入式物联网开发应用
基于各类算法实现的AI智能应用
基于大数据实现的各类数据管理和推荐系统



