【Django】第四课 基于Django超市订单管理系统开发

news2024/11/18 21:46:28

概念

本文在上一文之上,针对管理员,经理,普通员工身份的用户操作订单管理模块功能。

功能实现

该功能也是业务功能模块,管理员不具备操作权限,普通员工需要对超市所合作的供应商进行进货,因此普通员工可以添加订单信息,并且只能查看员工自己的订单信息列表,不能查看其他人的订单信息,而经理具备查看所有普通员工的订单信息,并可以修改订单,删除订单以及支付订单金额等。

管理员操作订单管理模块

管理员不能操作业务功能,因此不允许操作订单管理模块。

普通员工操作订单管理模块

普通员工操作订单管理模块时,只能查看自己的订单信息,发送请求地址 /getBillsByUserId/

服务器需要接收该地址请求

# 接收普通员工查看自己的订单信息地址
    path('getBillsByUserId/',views.getBillsByUserId),

 views.py

# 创建方法,根据当前登录的普通员工查询该员工自己的订单信息
def getBillsByUserId(request):
    # 根据当前登录的员工的id作为查询条件,查询该员工自己的订单信息
    bList=Bill.objects.filter(createdBy=user[0].id).values()
    # 判断当前员工是否有自己的订单
    if bList:
        # 循环遍历每一个订单,通过订单中的供应商id查询供应表,获得供应商名称
        # 添加至当前订单字典中
        for b in bList:
            # 根据当前订单中的供应商id作为条件,查询到该供应商信息
            p=Provider.objects.get(id=b["providerId"])
            # 将该供应商名称存储至当前订单字典中
            b["proName"]=p.proName
    return render(request,"pBillList.html",{"bList":bList,"user":user[0]})

需要显示订单信息涉及多张表的数据,因此这里完成了多表联查的操作,并将查询的数据发送给pBillList.html页面进行显示

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>超市订单管理系统--订单列表</title>
<style type="text/css">
	tr {
	height: 40px;
}
</style>
</head>
<body>
	<div style="width: 1800px;height: 1000px;margin: auto;">
		<div style="width: 100%;height: 160px;background-color:skyblue;">
			<div  style="width: 100%;height: 20px;">

				<div align="left" style="width: 20%;height: 100%;float: left;" >
					&nbsp;<a href="/login/?username={{ user.userName }}&password={{ user.userPassword }}"
                             style="text-decoration: none;">返回首页</a>
				</div>

			<div align="right" style="width: 80%;height: 100%;float: right;">
				<a>欢迎,<span style="color: red;">{{user.userName}}</span></a>
				&nbsp;&nbsp;<a href="/" style="text-decoration: none;">注销</a>&nbsp;
			</div>

			</div>
			<div align="center" style="width: 100%;height: 140px;line-height: 140px;"><h1>超市订单管理系统</h1></div>
		</div>
		<div align="center" style="width: 100%;height: 840px;background-color: pink;overflow: scroll;">
			<div align="left" style="height: 40px;" >
				<a href="/toAddBill/" style="text-decoration: none;
				 text-align:center;  width: 50px;
				 height: 20px;
				 color: white;font-weight: bold;
				 margin-top:20px;margin-left:10px;
				 border-radius: 5px;">添加订单</a>
			</div>
			<!-- 当前普通员工是否有谈下过订单信息,如果没有,显示暂无信息,如果有,展示该员工的所有订单 -->
            {% if bList %}
                <table border="1" style="width: 98%;text-align: center;border-collapse: collapse;">
				<tr>
					<td>主键Id</td>
					<td>账单编码</td>
					<td>商品名称</td>
					<td>商品描述</td>
					<td>商品数量</td>
					<td>商品单位</td>
					<td>商品总额</td>
					<td>是否支付</td>
					<td>供应商名称</td>
					<td>创建时间</td>
				</tr>
                    {% for foo in bList %}
                        <tr>
                            <td >{{ foo.id }}</td>
                            <td>{{ foo.billCode }}</td>
                            <td>{{ foo.productName }}</td>
                            <td>{{ foo.productDesc }}</td>
                            <td>{{ foo.productCount }}</td>
                            <td>{{ foo.productUnit }}</td>
                            <td>{{ foo.totalPrice }}元</td>
                            {% if foo.isPayment == 1 %}
{#                                <td ><a href="">#}
{#                                    <input type="button" value="未支付" style="color: white;#}
{#                                    border: none;background-color: red;border-radius: 5px;font-weight: bold;"></a></td>#}
                                <td style="color:red;">未支付</td>
                            {% elif foo.isPayment == 2%}
                                <td style="color:green;">已支付</td>
                            {% endif %}
                            <td>{{ foo.proName }}</td>
                            <td>{{ foo.creationDate }}</td>
                        </tr>
                    {% endfor %}
			</table>
            {% else %}
                <div style="width: 98%;text-align: center;height: 800px;">
					当前暂无订单信息
				</div>
            {% endif %}
		</div>
	</div>
</body>
</html>

其页面效果如下:

普通员工可以根据超市的进货需要,和以合作的供应商进行签订订单进货合同,等待供应商发货,将订单信息添加至系统中,发送请求地址为  /toAddBill/

服务器定义地址接收该请求

# 接收普通员工添加订单地址
    path('toAddBill/',views.toAddBill),

 views.py

# 创建方法,跳转至添加订单页面之前,需要查询出所有当前供应商名称
def toAddBill(request):
    # 将所有供应商查询出来
    providers=Provider.objects.all().values("id","proName")
    return render(request,"AddBill.html",{"providers":providers,"user":user[0]})

其添加订单界面代码如下

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>超市订单管理系统--添加订单</title>
</head>
<body>
	<div style="width: 1200px;height: 800px;margin: auto;">
		<div style="width: 100%;height: 160px;background-color:skyblue;">
			<div  style="width: 100%;height: 20px;">

				<div align="left" style="width: 20%;height: 100%;float: left;" >
					&nbsp;<a href="/login/?username={{ user.userName }}&password={{ user.userPassword }}"
                             style="text-decoration: none;">返回首页</a>
				</div>

			<div align="right" style="width: 80%;height: 100%;float: right;">
				<a>欢迎,<span style="color: red;">{{user.userName}}</span></a>
				&nbsp;&nbsp;<a href="/" style="text-decoration: none;">注销</a>&nbsp;
			</div>

			</div>
			<div align="center" style="width: 100%;height: 140px;line-height: 140px;"><h1>超市订单管理系统</h1></div>
		</div>
		<div align="center" style="width: 100%;height: 640px;background-color: pink;">
			<form action="/addBill/" method="post">
                {% csrf_token %}
				<div style="padding: 5px 0px">
				<label for="productName">商品名称:</label>&nbsp;
				<input id="productName" name="productName" type="text" placeholder="请输入商品名称" />
				</div>
				<div style="padding: 5px 0px">
				<label >商品描述:</label>
				<input type="text" name="productDesc" placeholder="请输入商品描述信息"></input>
				</div>
				<div style="padding: 5px 0px">
				<label >商品单位:</label>&nbsp;
				<input type="text" name="productUnit" placeholder="请输入商品单位">
				</div>
				<div style="padding: 5px 0px">
				<label >商品数量:</label>&nbsp;
				<input type="number" name="productCount" placeholder="请输入商品数量" >
				</div>
				<div style="padding: 5px 0px">
				<label >商品总额:</label>&nbsp;
				<input type="number" name="totalPrice" placeholder="请输入商品总额" >
				</div>
				<div style="padding: 5px 0px">
				<label >供应商名称:</label>&nbsp;
				<!-- Html5 新增的表单的新用法 -->
				<input type="search" name="proName" placeholder="请输入供应商名称"  list="list">
				<datalist id="list">
					{% for provider in providers %}
					    <option>{{ provider.proName }}</option>
					{% endfor %}
				</datalist>
				{% comment %}<select name="proName">
					{% for provider in providers %}
					    <option>{{ provider.proName }}</option>
					{% endfor %}
				</select>{% endcomment %}
				</div>
				<div style="padding: 5px 0px">
					<input type="submit"
					  value="添加"
					 style="width: 120px;background-color: green;
					 border: none;padding: 5px;border-radius: 5px;
					 color: white;"/>
				</div>
			</form>


		</div>
	</div>
</body>
</html>

其界面效果图如下:

 

当普通员工添加订单后,将数据信息发送给服务器,地址为 /addBill/

服务器接收该地址的订单数据

# 接收普通员工添加订单的数据地址
    path('addBill/',views.addBill),

 views.py,服务器在添加该订单的时候,需要完成对该订单进行自动生成订单编号,因此需要读者仔细理解该添加订单的逻辑思路。

# 创建方法,接收普通员工添加新订单的数据信息
def addBill(request):
    # 商品名称
    productName=request.POST["productName"]
    # 商品描述
    productDesc=request.POST["productDesc"]
    # 商品单位
    productUnit=request.POST["productUnit"]
    # 商品数量
    productCount=request.POST["productCount"]
    # 商品的总金额
    totalPrice=request.POST["totalPrice"]
    # 合作的供应商名称
    proName=request.POST["proName"]
    # 自动生成订单编号
    # 第一种,数据库中不存在今年的任何订单------ BILL+今年的年份+_001
    # 第二种,数据库中存在今年的订单---找到今年的所有订单中最后一个下的订单编号,
    #           下划线分割,加一,就可以生成我们这个订单编号
    # 解题思路:
    # 将数据库中所有订单按订单编号进行降序排列(从大到小排序)
    # BILL2022_004
    new_billCode=Bill.objects.order_by("-billCode").values("billCode")[0]["billCode"]
    # 将获得的最新的订单编号进行下划线分割 BILL2022  004
    infos=str(new_billCode).split("_")
    # 获得当前实时年份
    year = time.strftime("%Y", time.localtime())
    # 判断最新的订单是否是今年的订单
    if year == infos[0][4:]:
        # 最新的订单编号是今年的
        number=int(infos[1])+1
        s=""
        # 小于10,补两个0
        if number<10:
            s="00"+str(number)
        elif number<100:
            # 补一个0
            s = "0" + str(number)
        elif number<1000:
            s = str(number)
        billCode=infos[0]+"_"+s
    else:
        # 最新的订单编号不是今年的,也就是说今年没有产生任何的订单
        billCode="BILL"+year+"_001"
    # 默认未支付
    isPayment=1
    # 普通员工的id
    createdBy=user[0].id
    # 订单的签订的实时时间
    creationDate = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    # 不涉及修改功能
    modifyBy = 0
    modifyDate = ""
    # 根据普通员工选择的供应商名称查询供应商表,获得该供应商的id
    providerId=Provider.objects.get(proName=proName).id
    # 将新订单数据信息添加至订单表
    Bill.objects.create(productName=productName,productDesc=productDesc,productUnit=productUnit,
                        productCount=productCount,totalPrice=totalPrice,billCode=billCode,
                        isPayment=isPayment,createdBy=createdBy,creationDate=creationDate,
                        modifyBy=modifyBy,modifyDate=modifyDate,providerId=providerId)
    return redirect(getBillsByUserId)

当添加成功后,刷新该员工的订单列表页面

经理操作订单管理模块

经理作为领导职责,管理普通员工的工作,因此经理具备查看所有普通员工添加的订单,对于无误的订单进行支付进货金额,对于有误的订单信息进行修改,对于无效订单进行删除等权限。

经理点击订单管理模块时,发出地址请求为: /getBills/

服务器定义地址接收请求

# 接收经理查看所有订单信息的地址
    path('getBills/',views.getBills),

views.py,进行查询订单表,用户表,供应商表将需要展示的订单详情信息显示

# 创建方法,从数据库的订单表查询所有订单
def getBills(request):
    # 从订单表查询所有订单信息
    bList=Bill.objects.all().values()
    # 判断是否存在订单信息,如果存在,循环遍历每一个订单信息
    if bList:
        for b in bList:
            # 通过订单信息中员工id查询员工表的对应的姓名
            userName=User.objects.get(id=b["createdBy"]).userName
            # 通过订单信息中供应商id查询供应商表对应的供应商名称
            proName=Provider.objects.get(id=b["providerId"]).proName
            b["userName"]=userName
            b["proName"]=proName
            b["updateDateLen"]=len(str(b["modifyDate"]))

    return render(request,"jBillList.html",{"bList":bList,"user":user[0]})

将查询出来的所有订单信息显示在页面上

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>超市订单管理系统--订单列表</title>
<style type="text/css">
	tr {
	height: 40px;
}
</style>
    <script type="text/javascript">
        function btn_pay(id) {
            var info=window.confirm("您是否确定要支付这笔费用?");
            if (info){
                location.href="/updatePayment/?id="+id;
            }
        }
    </script>
</head>
<body>
	<div style="width: 1800px;height: 1000px;margin: auto;">
		<div style="width: 100%;height: 160px;background-color:skyblue;">
			<div  style="width: 100%;height: 20px;">

				<div align="left" style="width: 20%;height: 100%;float: left;" >
					&nbsp;<a href="/login/?username={{ user.userName }}&password={{ user.userPassword }}"
                             style="text-decoration: none;">返回首页</a>
				</div>

			<div align="right" style="width: 80%;height: 100%;float: right;">
				<a>欢迎,<span style="color: red;">{{user.userName}}</span></a>
				&nbsp;&nbsp;<a href="/" style="text-decoration: none;">注销</a>&nbsp;
			</div>

			</div>
			<div align="center" style="width: 100%;height: 140px;line-height: 140px;"><h1>超市订单管理系统</h1></div>
		</div>
		<div align="center" style="width: 100%;height: 840px;background-color: pink;overflow: scroll;">
			<!-- 当前普通员工是否有谈下过订单信息,如果没有,显示暂无信息,如果有,展示该员工的所有订单 -->
            {% if bList %}
                <table border="1" style="width: 98%;text-align: center;border-collapse: collapse;">
				<tr>
					<td>主键Id</td>
					<td>账单编码</td>
					<td>商品名称</td>
					<td>商品描述</td>
					<td>商品数量</td>
					<td>商品单位</td>
					<td>商品总额</td>
					<td>是否支付</td>
					<td>员工姓名</td>
					<td>供应商名称</td>
					<td>创建时间</td>
					<td>修改时间</td>
					<td>操作</td>
				</tr>
                    {% for foo in bList %}
                        <tr>
                            <td >{{ foo.id }}</td>
                            <td>{{ foo.billCode }}</td>
                            <td>{{ foo.productName }}</td>
                            <td>{{ foo.productDesc }}</td>
                            <td>{{ foo.productCount }}</td>
                            <td>{{ foo.productUnit }}</td>
                            <td>{{ foo.totalPrice }}元</td>
                            {% if foo.isPayment == 1 %}
                                <td><input type="button" value="未支付" onclick="btn_pay({{ foo.id }})" style="border-width: 0px;
                                background-color: crimson;color: white;padding: 3px;width: 60px;border-radius: 3px;"></td>
                            {% elif foo.isPayment == 2 %}
                                <td style="color:green;">已支付</td>
                            {% endif %}

                            <td>{{ foo.userName }}</td>
                            <td>{{ foo.proName }}</td>
                            <td>{{ foo.creationDate }}</td>
                            {% if foo.updateDateLen == 0 %}
                                <td>暂未修改</td>
                            {% elif foo.updateDateLen > 0 %}
                                <td>{{ foo.modifyDate }}</td>
                            {% endif %}
                            <td>
                            <a href="/getBillByIndex/?id={{ foo.id }}"><input type="button" value="修改"
                                                               style="background-color: green;
                                                               border: none;border-radius: 5px;
                                                               color: white;"></a>
                            <a href="/deleteBill/?id={{ foo.id }}"><input type="button" value="删除"
                                                           style="background-color: red;
                                                           border: none;border-radius: 5px;
                                                           color: white;"></a>
                            </td>
                        </tr>
                    {% endfor %}
			</table>
            {% else %}
                <!-- 当前没有任何的订单信息 -->
                <div style="width: 98%;text-align: center;height: 800px;">
					当前暂无订单信息
				</div>
            {% endif %}


			<!-- 分页页码导航栏 -->
			{% comment %}<br>
			<div align="center">
				<!-- 判断当前页是否存在上一页,不存在则不显示上一页的按钮 -->
				<%if(pi.getPrePage()>0){ %>
				<a href="GetBills.do?ym=<%=pi.getPrePage()%>"><input type="button" value="上一页"/></a>&nbsp;
				<%} %>
				<% for(int i:pi.getNavigatepageNums()){ %>
					<a href="GetBills.do?ym=<%=i%>"><%=i %></a>&nbsp;
				<%} %>
				<!-- 判断当前页是否存在下一页,不存在则不显示下一页的按钮 -->
				<% if(pi.getPageNum()<pi.getLastPage()){ %>
				<a href="GetBills.do?ym=<%=pi.getNextPage()%>"><input type="button" value="下一页"/></a>&nbsp;
				<%} %>
			</div>{% endcomment %}


		</div>
	</div>
</body>
</html>

其界面效果图如下:

当经理检查某一个订单信息无误时,进行点击支付订单金额,请求地址为 

 

其界面效果如下

 当经理确认后,将该订单的主键id发送给服务器

# 接收经理支付订单费用地址
    path('updatePayment/',views.updatePayment),

 views.py

# 创建方法,获得订单id,支付该订单的费用
def updatePayment(request):
    id=request.GET["id"]
    # 当前支付该费用的经理的id
    modifyBy=user[0].id
    # 当前支付该费用的实时时间
    modifyDate=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

    # 根据当前订单id查询订单信息
    b=Bill.objects.filter(id=id)
    # 修改当前订单的支付状态
    b.update(isPayment=2,modifyBy=modifyBy,modifyDate=modifyDate)
    return redirect(getBills)

当支付成功后,刷新订单列表页面

经理可以修改有误的订单信息,点击某个订单的修改按钮将该订单的主键id发送给服务器,地址为 /getBillByIndex/

服务器接收该请求

# 接收经理修改订单信息的地址
    path('getBillByIndex/',views.getBillByIndex),

views.py 根据订单id查询出该订单信息

# 创建方法,根据订单id查询该订单信息,展示在修改页面上
def getBillByIndex(request):
    id=request.GET["id"]
    # 根据id查询订单表 [{"key":value}]
    bill=Bill.objects.filter(id=id).values()
    # 根据订单表中的普通员工的id查询用户表获得用户姓名
    username=User.objects.get(id=bill[0]["createdBy"]).userName
    # 根据订单表中供应商id查询供应商表获得供应商名称
    proName=Provider.objects.get(id=bill[0]["providerId"]).proName
    bb=bill[0]
    bb["userName"]=username
    bb["proName"]=proName
    # 查询所有供应商名称,供经理修改的时候选择
    providers=Provider.objects.all().values("proName")
    # 查询所有普通员工,供经理修改的时候选择
    users=User.objects.filter(userRole=3).values("userName")
    return render(request,"updateBill.html",{"bill":bb,"user":user[0],"providers":providers,"users":users})

并将数据显示在页面上

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>超市订单管理系统--修改订单</title>
</head>
<body>
	<div style="width: 1200px;height: 800px;margin: auto;">
		<div style="width: 100%;height: 160px;background-color:skyblue;">
			<div  style="width: 100%;height: 20px;">

				<div align="left" style="width: 20%;height: 100%;float: left;" >
					&nbsp;<a href="/login/?username={{ user.userName }}&password={{ user.userPassword }}"
                             style="text-decoration: none;">返回首页</a>
				</div>

			<div align="right" style="width: 80%;height: 100%;float: right;">
				<a>欢迎,<span style="color: red;">{{user.userName}}</span></a>
				&nbsp;&nbsp;<a href="/" style="text-decoration: none;">注销</a>&nbsp;
			</div>

			</div>
			<div align="center" style="width: 100%;height: 140px;line-height: 140px;"><h1>超市订单管理系统</h1></div>
		</div>
		<div align="center" style="width: 100%;height: 640px;background-color: pink;">
			<form action="/updateBill/" method="post">
                {% csrf_token %}
				<input type="hidden" name="id" value="{{ bill.id }}">
				<div style="padding: 5px 0px">
				<label for="productName">商品名称:</label>&nbsp;
				<input id="productName" name="productName" value="{{ bill.productName }}" type="text" placeholder="请输入商品名称" />
				</div>
				<div style="padding: 5px 0px">
				<label >商品描述:</label>
				<input type="text" name="productDesc" value="{{ bill.productDesc }}" placeholder="请输入商品描述信息"></input>
				</div>
				<div style="padding: 5px 0px">
				<label >商品单位:</label>&nbsp;
				<input type="text" name="productUnit" value="{{ bill.productUnit }}" placeholder="请输入商品单位">
				</div>
				<div style="padding: 5px 0px">
				<label >商品数量:</label>&nbsp;
				<input type="number" name="productCount" value="{{ bill.productCount }}" placeholder="请输入商品数量" >
				</div>
				<div style="padding: 5px 0px">
				<label >商品总额:</label>&nbsp;
				<input type="number" name="totalPrice" value="{{ bill.totalPrice }}" placeholder="请输入商品总额" >
				</div>
				<div style="padding: 5px 0px">
				<label >员工姓名:</label>&nbsp;
				<input type="search" name="userName" value="{{ bill.userName }}" placeholder="请输入普通员工姓名" list="userList">
                    <datalist id="userList">
					{% for u in users %}
					    <option>{{ u.userName }}</option>
					{% endfor %}
				</datalist>
				</div>
				<div style="padding: 5px 0px">
				<label >供应商名称:</label>&nbsp;
				<!-- Html5 新增的表单的新用法 -->
				<input type="search" name="proName" value="{{ bill.proName }}" placeholder="请输入供应商名称"  list="list">
				<datalist id="list">
					{% for provider in providers %}
					    <option>{{ provider.proName }}</option>
					{% endfor %}
				</datalist>
                </div>
				<div style="padding: 5px 0px">
					<input type="submit"
					  value="修改"
					 style="width: 120px;background-color: green;
					 border: none;padding: 5px;border-radius: 5px;
					 color: white;"/>
				</div>
			</form>


		</div>
	</div>
</body>
</html>

当经理更新后,将更新后的数据提交给服务器,请求地址为 /updateBill/

服务器接收该请求,并获得所有更新的订单信息

# 接收经理修改更新订单后的数据信息地址
    path('updateBill/',views.updateBill),

views.py

# 创建方法,接收经理更新订单信息的数据
def updateBill(request):
    # 主键id
    id=request.POST["id"]
    # 商品名称
    productName = request.POST["productName"]
    # 商品描述
    productDesc = request.POST["productDesc"]
    # 商品单位
    productUnit = request.POST["productUnit"]
    # 商品数量
    productCount = request.POST["productCount"]
    # 商品的总金额
    totalPrice = request.POST["totalPrice"]
    # 合作的供应商名称
    proName = request.POST["proName"]
    # 员工姓名
    userName=request.POST["userName"]
    # 根据员工姓名查询该员工的主键id
    userId=User.objects.get(userName=userName).id
    # 根据供应商的名称查询该供应商id
    providerId=Provider.objects.get(proName=proName).id
    # 修改该订单的经理的id
    modifyBy=user[0].id
    # 修改该订单的实时时间
    modifyDate=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    # 先通过订单id将要修改的订单信息查询出来
    bill=Bill.objects.filter(id=id)
    # 将更新后的订单信息替换旧的订单信息
    bill.update(productName=productName,productDesc=productDesc,productUnit=productUnit,
                productCount=productCount,totalPrice=totalPrice,createdBy=userId,
                providerId=providerId,modifyBy=modifyBy,modifyDate=modifyDate)
    return redirect(getBills)

修改成功后,刷新订单信息列表页面

经理通过点击删除按钮进行删除某一条无效的订单信息,将订单id发送给服务器,请求地址为 /deleteBill/

服务器接收该请求和id参数

# 接收经理删除订单的地址
    path('deleteBill/',views.deleteBill),

views.py

# 创建方法,获得经理要删除的订单的id
def deleteBill(request):
    id=request.GET["id"]
    # 根据订单id删除该订单信息
    bill=Bill.objects.filter(id=id)
    bill.delete()
    return redirect(getBills)

删除成功后刷新订单列表页面

总结

该项目到这里结束了,读者可根据自身的需要进行增加或者修改其中的功能和需求

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

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

相关文章

数据结构与算法——Java实现排序算法(二)

数据结构与算法——Java实现排序算法&#xff08;一&#xff09;_我爱布朗熊的博客-CSDN博客 七、希尔排序&#xff08;自我感觉有点难理解&#xff09; 为了解决直接插入排序所带来的弊端&#xff0c;我们接来下看一下希尔排序 希尔排序也是一种插入排序&#xff0c;简单插入排…

口罩佩戴监测系统 yolo

口罩佩戴监测系统通过yolo网络对现场画面人员口罩佩戴情况进行识别检测。我们使用YOLO(你只看一次)算法进行对象检测。YOLO是一个聪明的卷积神经网络(CNN)&#xff0c;用于实时进行目标检测。该算法将单个神经网络应用于完整的图像&#xff0c;然后将图像划分为多个区域&#x…

科技交流英语(2022秋)Unit 5 test

科技交流英语&#xff08;2022秋&#xff09;Unit 5 test 简介 由电子科技大学组织开设&#xff0c;授课教师为李京南、庞慧、刘兆林等5位老师。 课程介绍 英语广泛用于工程技术领域的国际交流。如何使用简洁的语言清楚地传递信息是工程师在国际舞台上常常面临的问题。本课…

ARM S5PV210 串行通信编程实战

一、串行通信编程实战1 1、整个程序流程分析 (1) 整个串口通信相关程序包含 2 部分&#xff1a;uart_init 负责初始化串口&#xff0c;uart_putc 负责发送一个字节。 2、串口控制器初始化关键步骤 (1) 初始化串口的 Tx 和 Rx 引脚所对应的GPIO&#xff08;查原理图可知 Rx 和…

【数列分段DP】膜拜

P1564 膜拜 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意&#xff1a; 思路&#xff1a; 这是个经典模型&#xff1a;数列分段DP&#xff0c;在其他地方也出现过&#xff1a;(150条消息) 代码源每日一题div1 DP 数组划分_lamentropetion的博客-CSDN博客 这类DP模型核…

_13LeetCode代码随想录算法训练营第十三天-C++二叉树

_13LeetCode代码随想录算法训练营第十三天-C二叉树 题目列表 102.二叉树的层序遍历107.二叉树的层次遍历II199.二叉树的右视图637.二叉树的层平均值429.N叉树的层序遍历515.在每个树行中找最大值116.填充每个节点的下一个右侧节点指针117.填充每个节点的下一个右侧节点指针II…

说话人识别中的数据预处理和数据增强

数据预处理 假设已经采集到一些数据&#xff0c;在进行训练之前&#xff0c;需要先对数据做以下预处理&#xff1a; 数据清洗语音检测&#xff08;Voice Activity Detection&#xff0c;VAD&#xff0c;也叫Speech Detection&#xff0c;或Silence Suppression&#xff0c;静音…

ICMP V6(计算机网络-网络层)

IPv6 使用的 ICMP IETF 制定的与IPv6配套使用的ICMP新版本&#xff0c;即ICMPv6 ICMPv6报文作为IPv6分组有效载荷进行传输&#xff0c;对应的IPv6“下一个首部字段”的值为58 ICMPv6 的报文格式和 IPv4 使用的 ICMP 的相似&#xff0c;即前 4 个字节的字段名称都是一样的&…

Linux下进程及其相关概念理解

目录 何为进程&#xff1f; task_struct 中存储了什么进程信息&#xff1f; 如何查看进程&#xff1f; 如何获取进程pid&#xff1f; 如何创建子进程&#xff1f; 为什么返回值如此呢&#xff1f; 为什么有两个返回值&#xff1f; 进程状态 进程的一般状态 运行态 终…

18-JavaSE基础巩固练习:正则表达式练习

正则表达式基本练习 一、练习1 1、需求 请编写正则表达式验证用户输入的手机号码是否满足要求。请编写正则表达式验证用户输入的邮箱号是否满足要求。请编写正则表达式验证用户输入的电话号码是否满足要求。 2、思路&#xff1a; 心得&#xff1a; 拿着一个正确的数据&…

SAP UI5 Smart Chart 功能介绍

笔者已经写过一篇详细的文章介绍 SAP UI5 Smart Chart 的使用方法&#xff1a; SAP UI5 应用开发教程之一百五十三 - 使用 SAP UI5 Smart Chart 控件轻松绘制十数种不同类型的专业图表 本文泛泛地介绍 Smart Chart 提供的一些其他功能。 工具栏右侧的按钮可用于选择图表类型…

Zookeeper 1 初识 Zookeeper 1.1 Zookeeper 概念

Zookeeper 【黑马程序员Zookeeper视频教程&#xff0c;快速入门zookeeper技术】 文章目录Zookeeper1 初识 Zookeeper1.1 Zookeeper 概念1.1.1 Zookeeper 概念1 初识 Zookeeper 1.1 Zookeeper 概念 1.1.1 Zookeeper 概念 Zookeeper 是 Apache Hadoop 项目下的一个子项目&…

3、前端笔记-JS-变量

1、什么是变量 变量是用于存放数据的容器&#xff0c;可以通过变量名获取数据 本质&#xff1a;变量是程序在内存中申请的一块用来存放数据的空间 2、变量的使用 2.1 声明变量和赋值 1、声明变量 2、给变量赋值 var:JS关键字&#xff0c;用来声明变量。使用这个关键字后&a…

(二)计算机组成原理——计算机的基本组成

目录 冯诺依曼计算机的特点 计算机硬件框图 系统复杂性管理的方法&#xff08;3’Y&#xff09; 计算机的工作步骤 上机前的准备 计算机的工作过程 存储器的基本组成 运算器的基本组成及操作过程 控制器 计算机组成原理课程笔记。 冯诺依曼计算机的特点 冯诺依曼计算…

sandbox启动未加载repeater的问题

背景 通过官方提供的 repeater 的下载链接&#xff0c;并不能够在sandbox启动时&#xff0c;加载进行&#xff0c;我们可以看下sandbox的日志截图 但是如果通过源码的repeater进行安装后&#xff0c;就能够成功加载到repeater。 分析 这是个很奇怪的问题&#xff0c;想要分析…

Sentinel的规则

四.Sentinel的规则 1.流控规则 1.1流控规则有哪些? 流量控制有以下几个角度: 资源的调用关系&#xff0c;例如资源的调用链路&#xff0c;资源和资源之间的关系&#xff1b;运行指标&#xff0c;例如 QPS&#xff08;每秒查询率&#xff09;、线程池、系统负载等&#xff…

深度学习时数据量过大的一个解决思路:将零散的数据集中化

问题描述 最近笔者在做一个kaggle上的树叶分类的题目&#xff08;https://www.kaggle.com/competitions/classify-leaves&#xff09;&#xff0c;这个题目要求根据一张树叶的图片给出这片树叶的类别&#xff0c;这个题目也是沐神的《动手深度学习》课程里的一个课程竞赛题目。…

编译原理笔记03

第四章 语义分析 语义分析也称为类型检查&#xff0c;上下文相关分析&#xff0c;主要负责检查程序的上下文相关的属性&#xff0c;例如变量使用前要声明&#xff0c;函数调用要与声明一致等。 1.语义规则 通常来说&#xff0c;程序设计语言都采用自然语言来表达程序语言的语义…

JMeter分布式压测

一、Jmeter4.0分布式压测准备工作 压测注意事项 the firewalls on the systems are turned off or correct ports are opened. 系统上的防火墙被关闭或正确的端口被打开。 all the clients are on the same subnet. 所有的客户端都在同一…

数据科学与工程理论基础复习提纲

一、Sketch 1.1 简单抽样算法 1.1.1 核心思想 对于到达的元素aia_iai​&#xff0c;以概率pM/mpM/mpM/m对该元素的频数加1。 MMM&#xff1a;抽样后的数据流大小mmm&#xff1a;原始数据流大小 1.1.2 操作 更新&#xff1a;当元素aia_iai​到达时&#xff0c;以ppp的概率更…