Django学习记录08——图表及文件上传案例

1.图表Echarts的应用

Apache ECharts

1.1 使用方法

引用echarts.js即可到官方文档中查询使用

1.2 常用图标的使用

图表展示页面的部署(主要展示折线图、柱状图、饼图)

{% block content %}<div class="container"><div class="panel panel-default"><div class="panel-heading"><h3 class="panel-title">折线图</h3></div><div class="panel-body"><div id="m1" style="width: 100%;height:500px;"></div></div></div><div class="row"><div class="col-sm-8"><div class="panel panel-default"><div class="panel-heading"><h3 class="panel-title">柱状图</h3></div><div class="panel-body"><div id="m2" style="width: 100%;height:400px;"></div></div></div></div><div class="col-sm-4"><div class="panel panel-default"><div class="panel-heading"><h3 class="panel-title">饼图</h3></div><div class="panel-body"><div id="m3" style="width: 100%;height:400px;"></div></div></div></div></div></div>
{% endblock %}

使用方法

var myChart = echarts.init(document.getElementById('m1')); 基于准备好的dom,初始化echarts实例 根据id获取展示的位置

option = {官方文档获取 }; 指定图表的配置项和数据

myChart.setOption(option); 使用刚指定的配置项和数据显示图表。

1.2.1 折线图

  • 官方文档代码

在这里插入图片描述

option = {title: {text: 'Stacked Line'},tooltip: {trigger: 'axis'},legend: {data: ['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine']},grid: {left: '3%',right: '4%',bottom: '3%',containLabel: true},toolbox: {feature: {saveAsImage: {}}},xAxis: {type: 'category',boundaryGap: false,data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']},yAxis: {type: 'value'},series: [{name: 'Email',type: 'line',stack: 'Total',data: [120, 132, 101, 134, 90, 230, 210]},{name: 'Union Ads',type: 'line',stack: 'Total',data: [220, 182, 191, 234, 290, 330, 310]},{name: 'Video Ads',type: 'line',stack: 'Total',data: [150, 232, 201, 154, 190, 330, 410]},{name: 'Direct',type: 'line',stack: 'Total',data: [320, 332, 301, 334, 390, 330, 320]},{name: 'Search Engine',type: 'line',stack: 'Total',data: [820, 932, 901, 934, 1290, 1330, 1320]}]
};
  • 使用

在html中id为m1的标签,展示折线图

    <script type="text/javascript">$(function () {initLine();})//初始化折线图function initLine() {// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('m1'));// 指定图表的配置项和数据var option = {title: {text: '分公司上半年业绩'},tooltip: {trigger: 'axis'},legend: {data: [数据]},grid: {left: '3%',right: '4%',bottom: '3%',containLabel: true},toolbox: {feature: {saveAsImage: {}}},xAxis: {type: 'category',boundaryGap: false,data: [数据]//待后端传来的数据},yAxis: {type: 'value'},series: [数据]//待后端传来的数据};//使用ajax请求从后台获取数据$.ajax({url: '/chart/line',type: 'get',dataType: 'json',success: function (res) {//在此对图标的x轴,y轴,图例等进行赋值if (res.status) {//重新赋值option.legend.data = res.data.legend_data;option.xAxis.data = res.data.x_data;option.series = res.data.series;// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);}}})}</script>
  • 基本属性

title 图表标题的相关属性

legend 图例的相关属性

xAxis x轴的相关属性

series y轴展示内容的属性

  • 数据的获取

对于option{}中各属性的数据内容可从后端的视图函数(视图函数从数据库)中获取\

使用Aajx请求获取后台数据,并传给option

chart.py视图函数

def chart_line(request):"""构造折线图"""# 模拟从数据库获取数据legend_data = ['公司1', '公司2', '公司3', '公司4', '公司5']x_data = ['1月份', '2月份', '3月份', '4月份', '5月份', '6月份']series = [{'name': '公司1','type': 'line','stack': 'Total','data': [120, 1322, 1201, 134, 920, 2320, 210]},{'name': '公司2','type': 'line','stack': 'Total','data': [220, 1832, 191, 2324, 290, 3230, 310]},{'name': '公司3','type': 'line','stack': 'Total','data': [1510, 2232, 201, 1524, 190, 330, 410]},{'name': '公司4','type': 'line','stack': 'Total','data': [3230, 332, 3021, 334, 3930, 330, 320]},{'name': '公司5','type': 'line','stack': 'Total','data': [820, 932, 901, 934, 1290, 1330, 1320]}]data_dict = {'status': True,'data': {'legend_data':legend_data,'x_data': x_data,'series': series,}}return JsonResponse(data_dict)

以上在视图函数中模拟数据库数据传到前端中

数据传输到前端后,Ajax请求对option的各个属性进行赋值

option.legend.data = res.data.legend_data;
option.xAxis.data = res.data.x_data;
option.series = res.data.series;

1.2.2 柱状图

  • 官方文档代码

在这里插入图片描述

option = {xAxis: {type: 'category',data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']},yAxis: {type: 'value'},series: [{data: [120, 200, 150, 80, 70, 110, 130],type: 'bar'}]
};
  • 使用

在html中id为m2的标签,展示柱状图

    <script type="text/javascript">$(function () {initBar();})//初始化柱状图function initBar() {// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('m2'));// 指定图表的配置项和数据var option = {title: {text: '员工业绩',left: 'center',},tooltip: {},//图例legend: {data: [数据],//待后端传来的数据bottom: 0,},//x轴xAxis: {data: []  //待后端传来的数据},//y轴yAxis: {},series: []  //待后端传来的数据};//使用ajax请求从后台获取数据$.ajax({url: '/chart/bar',type: 'get',dataType: 'json',success: function (res) {//在此对图标的x轴,y轴,图例等进行赋值if (res.status) {//重新赋值option.legend.data = res.data.legend;option.xAxis.data = res.data.x_data;option.series = res.data.series;// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);}}})}</script>
  • 基本属性

title 图表标题的相关属性

legend 图例的相关属性

xAxis x轴的相关属性

series y轴展示内容的属性

  • 数据的获取

对于option{}中各属性的数据内容可从后端的视图函数(视图函数从数据库)中获取\

使用Aajx请求获取后台数据,并传给option

chart.py视图函数

def chart_bar(request):# 模拟数据库获取图表数据   以下可使用数据库获取legend = ['YQY', 'WYT']x_data = ['1月', '2月', '3月', '4月', '5月', '6月']series = [{'name': 'YQY','type': 'bar','data': [5, 20, 36, 10, 10, 20],},{'name': 'WYT','type': 'bar','data': [15, 40, 86, 90, 22, 88]}]data_dict = {'status': True,'data': {'legend': legend,'x_data': x_data,'series': series,}}return JsonResponse(data_dict)

以上在视图函数中模拟数据库数据传到前端中

数据传输到前端后,Ajax请求对option的各个属性进行赋值

option.legend.data = res.data.legend;
option.xAxis.data = res.data.x_data;
option.series = res.data.series;

1.2.2 饼状图

  • 官方文档代码

在这里插入图片描述

option = {title: {text: 'Referer of a Website',subtext: 'Fake Data',left: 'center'},tooltip: {trigger: 'item'},legend: {orient: 'vertical',left: 'left'},series: [{name: 'Access From',type: 'pie',radius: '50%',data: [{ value: 1048, name: 'Search Engine' },{ value: 735, name: 'Direct' },{ value: 580, name: 'Email' },{ value: 484, name: 'Union Ads' },{ value: 300, name: 'Video Ads' }],emphasis: {itemStyle: {shadowBlur: 10,shadowOffsetX: 0,shadowColor: 'rgba(0, 0, 0, 0.5)'}}}]
};
  • 使用

在html中id为m3的标签,展示饼状图

    <script type="text/javascript">$(function () {initPie();})//初始化饼状图function initPie() {// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('m3'));// 指定图表的配置项和数据var option = {title: {text: '部门预算',subtext: '副标题',left: 'center'},tooltip: {trigger: 'item'},legend: {orient: 'vertical',left: 'left',bottom: 0,},series: [{name: '预算',type: 'pie',radius: '50%',data: [], //待后端传来的数据emphasis: {itemStyle: {shadowBlur: 10,shadowOffsetX: 0,shadowColor: 'rgba(0, 0, 0, 0.5)'}}}]};//使用ajax请求从后台获取数据$.ajax({url: '/chart/pie',type: 'get',dataType: 'json',success: function (res) {//在此对图标的x轴,y轴,图例等进行赋值if (res.status) {//重新赋值/*series: [{name: '预算',type: 'pie',radius: '50%',data: [],}]series 是一个仅有一个字典元素的列表,series[0]取列表第一个元素,也就是这个字典series 为仅含有一个字典元素的列表,series[0].data表示取出series列表的第一个字典元素的data键*/option.series[0].data = res.data;// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);}}})}</script>
  • 基本属性

title 图表标题的相关属性

legend 图例的相关属性

xAxis x轴的相关属性

series y轴展示内容的属性

  • 数据的获取

对于option{}中各属性的数据内容可从后端的视图函数(视图函数从数据库)中获取\

使用Aajx请求获取后台数据,并传给option

chart.py视图函数

def chart_pie(request):'''构造饼图数据'''# 模拟从数据库获取数据series_data = [{'value': 1048, 'name': 'IT部门'},{'value': 735, 'name': '销售部'},{'value': 580, 'name': '宣传部'},]data_dict = {'status': True,'data': series_data,}return JsonResponse(data_dict)

以上在视图函数中模拟数据库数据传到前端中

数据传输到前端后,Ajax请求对option的各个属性进行赋值

option.series[0].data = res.data;

2.文件的上传

2.1 基础操作

html上传页面

<form method="post" enctype="multipart/form-data">{% csrf_token %}<input type="text" name="username"><input type="file" name="avatar"><input type="submit" value="提交">
</form>
def upload_file(request):if request.method == 'GET':return render(request, 'upload_file.html')file_object = request.FILES['photo']  # 获取文件对象print(file_object.name)  # 获取文件名称# 生成文件名为file_object.name的文件f = open(file_object.name, mode='wb')# 由于文件在内存一块一块的存储,利用循环遍历每一块,写入f中for chunk in file_object.chunks():  # chunks()读取文件对象的内容f.write(chunk)f.close()return HttpResponse('上传成功')

request.POST 返回所有数据的组成的数据对象
request.FILES返回所有文件组成的数据对象

enctype="multipart/form-data"   
form标签中若不加此字段,上传的文件以文件名的形式通过request.POST传过来:
<QueryDict: {'csrfmiddlewaretoken': ['6oGNXjBGaHzqFGywRFd7JQWXrY7fQwB6cEURubTTxemKDA789nRjb3Kv5MEgYnOE'], 'username': ['123'], 'photo': ['20220829_20471734.jpg']}>form标签加上此字段,上传的文件以文件的形式通过request.FILES传过来
<MultiValueDict: {}>

file_object = request.FILES['photo'] 获取文件对象(input框中name为photo的输入数据)
file_object.name 获取文件名称

f = open(file_object.name, mode='wb') 生成文件名为file_object.name的文件

# 由于文件在内存一块一块的存储,利用循环遍历每一块,写入f中
for chunk in file_object.chunks():  # chunks()读取文件对象的内容f.write(chunk)
f.close()

选择上传的图片后,点击提交按钮,图片会以post的方式传入视图函数,通过file_object = request.FILES['photo']获取文件对象,并且chunks()读取文件对象的内容,最终将图片下载到项目目录中

2.2通过文件批量上传数据

将excel中存在部门批量添加到部门列表中

在这里插入图片描述

部门页面增加批量上传按钮

<form method="post" enctype="multipart/form-data" action="/depart/multi">{% csrf_token %}<div class="form-group"><input type="file" name="exc"></div><input type="submit" value="上传" class="btn-primary btn-sm">
</form>
def depart_multi(request):"""批量添加excel文件内的数据"""# 1.获取上传的文件对象file_object = request.FILES.get("exc")print(file_object)# 2.对象传递给openpyxl,有openpyxl读取文件内容wb = load_workbook(file_object)sheet = wb.worksheets[0] # 获取表print(sheet) #<Worksheet "Sheet1">print(sheet.cell(2,1).value) #部门1# 3.循环获取每一个数据# 遍历sheet的每一行,从第二行开始for row in sheet.iter_rows(min_row=2):# 获取每行第一列的值title = row[0].value# 先判断部门是否存在flag = models.Department.objects.filter(title=title).exists()if not flag:models.Department.objects.create(title=title)return redirect('/depart/list')

file_object = request.FILES.get("exc") 获取上传的文件对象

wb = load_workbook(file_object)对象传递给openpyxl,有openpyxl读取文件内容

sheet = wb.worksheets[0] 获取表

sheet.iter_rows(min_row=2) 遍历sheet的每一行,从第二行开始

2.3 ModelForm实现文件上传

2.3.1 media的应用

  • static,存放静态文件的路径,包括:CSS、JS、项目图片。
  • media,用户在前端上传的数据的目录(文件均存在此文件的子文件中)。

media的启用

url.py中配置

from django.urls import path, re_path
from django.views.static import serve
from django.conf import settingsurlpatterns = [re_path(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}, name='media'),]

settings.py中配置

import osMEDIA_ROOT = os.path.join(BASE_DIR, "media")
MEDIA_URL = "/media/"

完成操作后,可以通过http://localhost:8000/media/xxx 来访问文件(xxx表示文件相对media的位置)

2.3.2 ModelForm实现city展示案例

models.py

class City(models.Model):"""城市"""name = models.CharField(max_length=32,verbose_name="名称")count = models.IntegerField(verbose_name="人口")# 虽是FileField,但是本质上还是charFieldimg = models.FileField(verbose_name="Logo",max_length=128,upload_to="city/")

img = models.FileField(verbose_name="Logo",max_length=128,upload_to="city/")

**upload_to = xxx 上传到 media/xxx目录中(不写默认上传到media目录) **

此时上传的图片自动存储到media/city/1.png

ModelForm定义

class UpMoldelForm(BootStrapModelForm):bootstrap_exclude_fields = ['img']class Meta:model = models.Cityfields = ['name', 'count', 'img']

bootstrap_exclude_fields = ['img'] img字段不使用BootStrapModelForm的输入框样式

city_add.html

{% extends 'layout.html' %}{% block content %}<div class="panel panel-default"><div class="panel-heading">{{ title }}</div><div class="panel-body"><form class="form" method="post" enctype="multipart/form-data" novalidate>{% csrf_token %}{% for field in form %}<div class="form-group"><label>{{ field.label }}</label>{{ field }}<span style="color: red">{{ field.errors.0 }}</span>{#                        field.errors.0显示第一条错误即可#}</div>{% endfor %}<input type="submit" class="btn btn-success" value="提交"></form></div></div>
{% endblock %}

视图函数city_add()

def upload_ModelForm(request):""" 上传文件和数据"""if request.method == 'GET':# 构造添加输入框form = UpMoldelForm()context = {'form': form,'title': 'ModelForm',}return render(request, 'upload_ModelForm.html', context)form = UpMoldelForm(data=request.POST, files=request.FILES)if form.is_valid():# 对于文件来说,自动保存定义时的路径位置  默认在media下  (media/city)# 保存文件的路径和名称   img:city/blog.pngform.save()return redirect("/upload/city_list")context = {'form': form,'title': 'ModelForm',}return render(request, 'upload_ModelForm.html', context)

form = UpMoldelForm(data=request.POST, files=request.FILES) 获取前端的数据及文件

form.save() 在ModelForm中直接使用此语句进行保存数据到数据库**(数据库文件字段保存文件的路径和名称 img:city/blog.png)**

对于文件来说,自动保存定义时的路径位置 默认在media下 (media/city)

city_list.html

{% extends 'layout.html' %}{% block content %}<div style="margin-bottom: 10px"><a type="button" class="btn btn-success" href="/upload/ModelForm"><span class="glyphicon glyphicon-plus-sign"aria-hidden="true"></span> 添加城市</a></div><div class="panel panel-default"><div class="panel-heading">城市列表</div><div class="bs-example" data-example-id="hoverable-table"><table class="table table-hover"><thead><tr><th>ID</th><th>名称</th><th>人口</th><th>Logo</th></tr></thead><tbody>{% for obj in queryset %}<tr><td>{{ obj.id }}</td><td>{{ obj.name }}</td><td>{{ obj.count }}</td><td>{# obj.img图片相对于media的路径 #}<img src="/media/{{ obj.img }}" style="height: 40px"></td></tr>{% endfor %}</tbody></table></div></div>
{% endblock %}

city_list()的视图函数

def city_list(request):queryset = models.City.objects.all()return render(request, "city_list.html", {'queryset': queryset})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/724699.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker安装MySQL镜像实战分享

今天我们对Docker安装MySQL镜像进行实战分享&#xff0c;以更深入的了解容器的使用场景。我们在云付服务器Ubuntu环境上已经安装好了Docker&#xff0c;接下来我们开始安装mysql5.7版本&#xff0c;安装mysql有两种思路&#xff0c;直接拉取mysql镜像和自己做mysql镜像&#xf…

对猫毛过敏还想养猫怎么办?除毛好的宠物空气净化器品牌推荐

许多朋友喜欢猫咪&#xff0c;但与猫咪相处一段时间后&#xff0c;他们可能会出现鼻塞、打喷嚏和眼泪不断的情况。让我们来科普一下如何让那些容易过敏的家人与猫咪更好地相处吧。为什么会过敏呢&#xff1f;因为猫咪的唾液中含有一种叫做Fel d1的蛋白质&#xff0c;通过舔毛散…

GEE 依照范围裁剪 下载Sentinel-2数据

0. GEE介绍 Google Earth Engine&#xff08;GEE&#xff09; 是由Google开发的一种云端平台&#xff0c;旨在提供强大的地理空间数据处理和分析工具。GEE集成了大量的遥感影像数据和地理空间数据集&#xff0c;以及高性能的计算资源&#xff0c;使用户能够在云端高效地进行大规…

GDB调试入门笔记

文章目录 What&#xff1f;WhyHow安装GDB安装命令查看是否安装成功调试简单的程序预备一个程序调试 使用breakinfolistnextprintstep一些小技巧在gdb前shell日志功能watch point| catch point 调试core调试一个运行的程序 What&#xff1f; GDB是什么&#xff1f; 全称GNU sym…

1、MQ_介绍、优缺点、类型等

MQ介绍 1. MQ概述 MQ&#xff08;Message Queue&#xff09;&#xff1a;消息队列&#xff0c;是基础数据结构中FIFO&#xff08;first in first out&#xff09;的一种数据结构。一般用来解决流量削峰、应用解耦、异步处理等问题&#xff0c;实现高性能&#xff0c;高可用&a…

鸿蒙实战开发:数据交互【RPC连接】

概述 本示例展示了同一设备中前后台的数据交互&#xff0c;用户前台选择相应的商品与数目&#xff0c;后台计算出结果&#xff0c;回传给前台展示。 样例展示 基础信息 RPC连接 介绍 本示例使用[ohos.rpc]相关接口&#xff0c;实现了一个前台选择商品和数目&#xff0c;后台…

【大数据】-- 创建 Paimon 外部表

如今&#xff0c;在数据湖三剑客&#xff08;delta lake、hudi、iceberg&#xff09;之上&#xff0c;又新出一派&#xff1a; apache paimon。我们恰好在工作中遇到&#xff0c;以下介绍在 dataworks 上&#xff0c;使用 maxcompute odps sql 创建 apache paimon 外部表的一些…

Claude3深夜震撼发布!模型特点分析,附使用教程

Claude3深夜震撼发布&#xff01;模型特点分析&#xff0c;附使用教程 引言 最新发布的Claude3引起了广泛关注&#xff0c;这次发布一举推出了三个不同类型的模型&#xff0c;分别是Claude 3 Haiku、Claude 3 Sonnet和Claude 3 Opus。每个模型都具有独特的特点和能力&#xff…

深色系可视化界面看腻了,来点浅色系?安排,20页来了。

只要不放在大屏上展示&#xff0c;贝格前端工场还是非常推崇浅色系的可视化界面&#xff0c;把它作为配色的首选 。浅色系可视化界面具有以下几个优势&#xff1a; 清晰明了 浅色系界面通常使用明亮的颜色&#xff0c;如白色、浅灰色等&#xff0c;使界面元素更加清晰可见。这…

Python 开发图形界面程序

用 Python 语言开发图形界面的程序&#xff0c;有2种选择&#xff1a; Tkinter 基于Tk的Python库&#xff0c;这是Python官方采用的标准库&#xff0c;优点是作为Python标准库、稳定、发布程序较小&#xff0c;缺点是控件相对较少。 PySide2/PySide6 基于Qt 的Python库&#x…

机器学习-面经(part7、无监督学习)

机器学习面经系列的其他部分如下所示&#xff1a; 机器学习-面经&#xff08;part1&#xff09; 机器学习-面经(part2)-交叉验证、超参数优化、评价指标等内容 机器学习-面经(part3)-正则化、特征工程面试问题与解答合集机器学习-面经(part4)-决策树共5000字的面试问题与解答…

【ArcGIS超级工具】基于ArcPy的矢量数据批量自动化入库工具

最近&#xff0c;有很多做规划的朋友私信我&#xff0c;想让我帮忙开发一款ArcGIS自动化脚本工具&#xff0c;实现点、线、面的自动化入库操作&#xff0c;帮他们在平时的内业数据处理工作中减少机械式重复性的工作&#xff0c;提高工作效率。为此&#xff0c;我详细了解了下目…

这本书太好了!150页就能让你上手大模型应用开发

如果问个问题&#xff1a;有哪些产品曾经创造了伟大的奇迹&#xff1f;ChatGPT 应该会当之无愧入选。仅仅发布 5 天&#xff0c;ChatGPT 就吸引了 100 万用户——当然&#xff0c;数据不是关键&#xff0c;关键是其背后的技术开启了新的 AI 狂潮&#xff0c;成为技术变革的点火…

数据结构与算法学习【算法思想之二分法基础】

文章目录 数据结构与算法学习【算法思想之二分查找基础】本文学习目标或巩固的知识点 最基础的二分查找&#x1f7e2;通过题目可知题解结果验证 数据结构与算法学习【算法思想之二分查找基础】 本文学习目标或巩固的知识点 学习二分法类题目 巩固基础的二分法 提前说明&#…

Jmeter之Ramp-up Period(in seconds)

1、Ramp-up Period概念 &#xff08;in seconds&#xff09;–并发用户启动周期&#xff0c;告知JMeter 要在多长时间内启动全部Vuser用户。 2、为什么需要有“ramp-up period”&#xff0c;立即启动所有的并发用户数不是更好&#xff1f; 对于绝大多数的网址或应用&#xf…

【数据结构】堆的TopK问题

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解堆的TopK问题&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 一. 前言二. TopK三. 代码 一. 前言 TOP-K问题&#xff1a;即求数据结合中前K个最大的元…

【Docker】技术架构演变

【Docker】技术架构演变 目录 【Docker】技术架构演变架构中的概念架构演进单机架构相关软件 应用数据分离架构应用服务集群架构相关软件 读写分离/主从分离架构相关软件 引入缓存——冷热分离架构相关软件 垂直分库&#xff08;分布式数据库架构&#xff09;相关软件 业务拆分…

Day14:单元测试、Junit单元测试框架、反射、注解

单元测试 针对最小的功能单元&#xff08;方法&#xff09;进行正确性测试编写正规的单元测试框架传统的无法执行自动化测试&#xff0c;且无法得到测试报告 Junit单元测试框架 Junit的作用&#xff1a; 具体步骤 测试类取名&#xff1a;原类名Test&#xff08;大驼峰&#…

蓝桥杯备战刷题four(自用)

1.砝码称重 #include <iostream> #include <vector> using namespace std; const int N110; const int M100010; int w[N]; int n; int f[N][M]; int m; int ans; //f[i][j]表示到第i个砝码进行放置时的称得的重量为j的方案数 int main() {cin>>n;for(int i1…

DbSchema导出HTML/PDF版表结构

一、连接数据库 登录成功默认显示当前用户的所有资源&#xff08;表、视图、序列、方法、触发器等&#xff09;&#xff0c;如果不操作将导出此用户的全部信息。 至此连接数据库完成 二、表结构导出 本次不想给用户全部导出&#xff0c;只给导出几张&#xff0c;选择需要…