博主介绍:✌全网粉丝50W+,前互联网大厂软件研发、集结硕博英豪成立软件开发工作室,专注于计算机相关专业项目实战6年之久,累计开发项目作品上万套。凭借丰富的经验与专业实力,已帮助成千上万的学生顺利毕业,选择我们,就是选择放心、选择安心毕业✌
> 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与我联系了。🍅🍅**感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。**🍅
1、毕业设计:2026年计算机专业毕业设计选题汇总(建议收藏)✅
1、项目介绍
技术栈
Python、Django/Flask、Neo4j图数据库、深度学习模型(如BERT)、ECharts数据可视化、Py2neo驱动。
功能模块
· 系统首页模块(数据统计与折线图可视化)
· Neo4j知识图谱可视化模块
· 智能问答聊天模块(对话式交互)
· 问答记录管理模块(列表展示、搜索、分页、删除)
· 用户个人信息模块
· 登录与注册模块
· 后台运维管理模块(问答与用户数据管理)
整个项目介绍
该系统基于知识图谱与深度学习技术,构建医疗智能问答平台。后端利用Neo4j存储疾病、药品、症状等实体及其关联关系,并通过前端图形化界面直观展示知识结构。用户可在对话窗口输入问题,系统返回知识图谱支撑的专业解答。平台提供问答记录管理、用户信息查看及后台数据运维功能,同时以折线图展示每日问答量等核心统计指标,实现医疗知识交互、数据可视化与全流程管理。
2、项目界面
基于知识图谱的医疗问答系统首页
该页面展示系统核心统计数据,以折线图可视化呈现每日问答数量变化趋势,帮助管理员直观了解系统用户活跃度与问答业务的运行情况。

基于知识图谱的医疗问答系统数据库可视化界面
该界面为Neo4j数据库管理页面,通过节点与关系图谱直观展示医疗知识图谱中的实体及关联,支持Cypher查询,可可视化查看疾病、症状、药物等实体及其相互关系,辅助医疗知识的构建与分析。

基于知识图谱的医疗问答系统医疗问答界面
该界面提供对话式交互窗口,用户可在输入框中提交医疗问题,通过发送按钮与系统进行问答,系统会返回基于知识图谱的专业解答,实现医疗知识的智能交互查询。

基于知识图谱的医疗问答系统问答管理界面
该界面以列表形式展示用户的医疗问答记录,包含问题、回答、提问人及创建时间,支持搜索、分页和删除操作,方便管理员查看与管理系统中的历史问答数据。

基于知识图谱的医疗问答系统医疗问答界面
该界面为对话式交互窗口,用户可在输入框中提交医疗问题,系统会返回基于知识图谱的专业解答,支持发送与清空操作,实现医疗知识的智能问答交互。

基于知识图谱的医疗问答系统个人信息界面
该界面以表格形式展示用户的个人信息,包含ID、姓名、联系方式、角色、创建时间及最后修改时间,用于用户查看与管理自身账号的基础信息。

用户登录界面
该界面为系统登录入口,提供账户、密码和验证码输入框,支持用户完成身份验证并登录系统,同时设有注册入口,方便新用户创建账号。

后台管理系统界面
该界面为系统后台管理中心,提供问答信息表、用户管理及认证和权限等模块,支持对相关数据进行增加和修改操作,方便管理员维护系统数据与用户权限。

基于知识图谱的医疗问答系统知识图谱可视化界面
该界面为Neo4j数据库可视化页面,以节点和关系图谱的形式直观展示医疗知识图谱中的实体及关联,可清晰呈现疾病、症状、药物等不同类型实体间的相互关系,辅助医疗知识的构建与分析。

3、项目说明
一、技术栈简要说明
本系统后端采用Python语言开发,结合Django或Flask框架构建Web服务。数据层使用Neo4j图数据库存储医疗实体及其关联关系,通过Py2neo驱动实现Python与数据库的交互。智能问答模块引入深度学习模型BERT进行语义理解与意图识别。前端使用ECharts实现数据可视化图表,知识图谱展示部分调用Neo4j自带的可视化组件。
二、功能模块详细介绍
· 系统首页模块(数据统计与折线图可视化)
该模块展示系统收录用户数、问答总数等核心统计数据,并通过折线图呈现每日问答量的变化趋势。管理员可以直观了解系统活跃度与问答业务运行情况,为运营决策提供数据支撑。
· Neo4j知识图谱可视化模块
该模块以节点和关系图谱形式展示医疗知识图谱中的实体及关联。疾病、药品、症状等不同类型实体以多色节点区分,支持Cypher查询,可清晰呈现感冒等疾病与药品、食物之间的相互关系,辅助医疗知识的构建与分析。
· 智能问答聊天模块(对话式交互)
该模块提供对话式交互窗口,用户可在输入框中提交医疗问题,支持发送和清空操作。系统接收问题后基于知识图谱返回专业解答,实现医疗知识的智能问答交互,提升用户咨询体验。
· 问答记录管理模块(列表展示、搜索、分页、删除)
该模块以列表形式展示用户的医疗问答记录,包含问题内容、系统回答、提问人及创建时间等信息。支持按关键词搜索历史记录、分页浏览以及单条或多条删除操作,方便管理员管理系统的历史问答数据。
· 用户个人信息模块
该模块以表格形式展示用户的个人信息,包括用户ID、姓名、联系方式、角色、创建时间及最后修改时间。用户可在此查看与管理自身账号的基础资料,保障个人信息的准确性与安全性。
· 登录与注册模块
该模块作为系统身份验证入口,提供账户、密码和验证码输入框,支持用户完成登录。同时设有注册入口,方便新用户创建账号,保障系统的访问安全与用户管理规范性。
· 后台运维管理模块(问答与用户数据管理)
该模块为后台管理系统核心,提供问答信息表和用户管理等功能入口。管理员可对问答内容进行修改、批量操作,对用户数据进行增删改查及权限配置,实现系统数据的全流程运维管理。
三、项目总结
本系统基于知识图谱与深度学习技术,构建了一套完整的医疗智能问答平台。后端利用Neo4j存储疾病、药品、症状等实体及其关联关系,通过前端图形化界面直观展示知识结构。用户可在对话窗口输入问题,系统调用BERT模型进行语义解析并返回知识图谱支撑的专业解答。平台提供问答记录管理、用户信息查看及后台数据运维功能,同时以折线图展示每日问答量等核心统计指标。系统涵盖登录注册、首页统计、知识图谱可视化、智能问答、问答管理、个人信息及后台运维等完整功能模块,实现了医疗知识智能交互、数据可视化与全流程管理,具备良好的实用性与可扩展性。
4、核心代码
python
import datetime
from django.core.paginator import Paginator
from django.http import HttpResponseRedirect, HttpResponse, HttpResponseForbidden, JsonResponse
from django.shortcuts import render
from user.models import User
from .models import Medical
from .knowledge.chatbot_graph import main
def login(req):
"""
跳转登录
:param req:
:return:
"""
return render(req, 'login.html')
def day_get():
d = datetime.datetime.now()
# 通过for 循环得到天数,如果想得到两周的时间,只需要把8改成15就可以了。
for i in range(0, 7): # 1,8
oneday = datetime.timedelta(days=i)
day = d - oneday
date_to = datetime.datetime(day.year, day.month, day.day)
yield str(date_to)[0:10]
def get_recent_seven_day():
"""
获取最近的七天日期
@return:
"""
qq = day_get()
day_list = []
for obj in qq:
day_list.append(obj)
list_week_day = day_list[::-1]
return list_week_day
def register(req):
"""
跳转注册
:param req:
:return:
"""
return render(req, 'register.html')
def index(req):
"""
跳转首页
:param req:
:return:
"""
username = req.session['username']
total_user = len(User.objects.all())
total_wd = Medical.objects.count()
date = datetime.datetime.today()
month = date.month
year = date.year
seven_days = get_recent_seven_day()
seven_data_dict = dict.fromkeys(seven_days, 0)
for i in seven_days:
d = datetime.timedelta
r = Medical.objects.filter(create_time=i).all()
if r:
seven_data_dict[i] = r.count()
seven_count_list = [seven_data_dict[x] for x in seven_days]
return render(req, 'index.html', locals())
def login_out(req):
"""
注销登录
:param req:
:return:
"""
del req.session['username']
return HttpResponseRedirect('/')
def personal(req):
username = req.session['username']
role_id = req.session['role']
user = User.objects.filter(name=username).first()
return render(req, 'personal.html', locals())
def wechat(req):
username = req.session.get('username','admin')
return render(req, 'wechat.html', locals())
def qa(request):
text = request.POST.get('text')
print(text)
result = main(text)
username = request.POST.get('username','admin')
Medical.objects.create(
question=text,
answer=result,
owner=username,
create_time=str(datetime.datetime.now().strftime("%Y-%m-%d"))
)
return JsonResponse({'result':result})
def wdgl(request):
username = request.session.get('username', 'admin')
return render(request, 'wdgl.html', locals())
def get_wd(request):
"""
获取用户列表信息 | 模糊查询
:param request:
:return:
"""
keyword = request.GET.get('name')
page = request.GET.get("page", '')
limit = request.GET.get("limit", '')
role_id = request.GET.get('position','')
response_data = {}
response_data['code'] = 0
response_data['msg'] = ''
data = []
if keyword is None:
results_obj = Medical.objects.all()
else:
results_obj = Medical.objects.filter(question__contains=keyword).all()
paginator = Paginator(results_obj, limit)
results = paginator.page(page)
if results:
for result in results:
record = {
"id": result.id,
"question": result.question,
"answer": result.answer,
"owner": result.owner,
'create_time': result.create_time,
}
data.append(record)
response_data['count'] = len(results_obj)
response_data['data'] = data
return JsonResponse(response_data)
def delete_wd(request):
"""
删除
"""
user_id = request.POST.get('id')
result = Medical.objects.filter(id=user_id).first()
try:
if not result:
response_data = {'error': '删除失败!', 'message': '找不到id为%s' % user_id}
return JsonResponse(response_data, status=403)
result.delete()
response_data = {'message': '删除成功!'}
return JsonResponse(response_data, status=201)
except Exception as e:
response_data = {'message': '删除失败!'}
return JsonResponse(response_data, status=403)