中文字幕在线中文乱码不卡24_国产在线网站_国产精品扒开腿做爽爽爽的事情_亚洲男人A∨资源网

<ruby id="hpp6e"></ruby>

    <address id="hpp6e"><var id="hpp6e"></var></address>
    <address id="hpp6e"><nav id="hpp6e"><center id="hpp6e"></center></nav></address>

    1. 資訊財經(jīng)娛樂科技汽車時尚企業(yè)游戲商訊消費購物微商

      Python信息系統(tǒng)實驗:倉庫管理

      2020-03-30 07:47:02 來源: 閱讀:-

      Python信息系統(tǒng)實驗:倉庫管理

      這是給物流管理專業(yè)設(shè)計的倉庫信息管理實驗。盡量采用基本的方式組織數(shù)據(jù)、模塊與實驗。同時體現(xiàn)Browser-Application Server-Database 的三層邏輯。

      實驗要求

      軟件

      • 開發(fā)工具:Python+ Flask+HTML
      • 數(shù)據(jù)庫:SQLite
      • 架構(gòu):三層架構(gòu)(Browser+Application Servier+Database)

      倉庫管理實驗

      模擬一個簡單的倉庫的以下基本管理過程:

      • 1)庫位查詢:查詢庫位編碼及其容量
      • 2)增加庫位
      • 3)刪除庫位
      • 4)入庫:商品編碼、庫位
      • 5)出庫:商品編碼
      • 6)商品庫位查詢:根據(jù)商品編碼找?guī)煳?/li>
      • 7)庫位統(tǒng)計

      數(shù)據(jù)庫表格

      • StorageUnit: scode text, ssize int;
      • Storage: scode text, ccode text, cname text, status text (=in, out)

      Web Flask

      關(guān)于Flask請參考前文。Flask可以做很復(fù)雜的應(yīng)用,但是本文僅僅利用其最簡單的能力完成幾個頁面和功能之間的切換。

      幾分鐘做個Web應(yīng)用

      from flask import Flask
      from flask import session, redirect, url_for, request
      from flask import render_template

      數(shù)據(jù)訪問接口

      關(guān)于數(shù)據(jù)庫及其訪問接口,請參考前文。

      Python數(shù)據(jù)庫

      from Data import Data

      導(dǎo)航

      采用三組菜單導(dǎo)航

      • 基本功能組:主頁index、關(guān)于about、登錄login
      • 對存儲單元的操縱,主要是列表顯示StorageUnitList、增加StorageUnitAdd和刪除StorageUnitDelete
      • 對存儲記錄的操縱,主要是列表顯示StorageList、增加StorageAdd和刪除StorageDelete
      • 對于Add和Delete這兩類Action,生成表單Form和執(zhí)行更新分開來,,例如StorageAdd生成Form,而StorageAddExe執(zhí)行
      • 在login,StorageUnitAddExe,StorageUnitDeleteExe,StorageAddExe,StorageDeleteExe中,通過session或request操縱交互數(shù)據(jù)。
      app = Flask(__name__)

      @app.route(&#39;/&#39;)
      def index():
      if &#39;username&#39; in session:
      return redirect(url_for(&#39;StorageUnitList&#39;))
      else:
      return redirect(url_for(&#39;login&#39;))

      @app.route(&#39;/about&#39;)
      def about():
      return render_template(&#39;about.html&#39;, name=&#39;Flask&#39;)

      @app.route(&#39;/login&#39;, methods=[&#39;GET&#39;, &#39;POST&#39;])
      def login():
      if request.method == &#39;POST&#39;:
      u = request.form[&#39;username&#39;]
      if u is None or len(u)==0:
      return redirect(url_for(&#39;login&#39;))
      session[&#39;username&#39;] = u
      return redirect(url_for(&#39;StorageUnitList&#39;))
      return &#39;&#39;&#39;
      &lt;center&gt;
      Warehouse management&lt;br&gt;&lt;br&gt;
      &lt;table border=1&gt;
      &lt;form action=&#34;&#34; method=&#34;post&#34;&gt;
      &lt;tr&gt;
      &lt;td&gt;user name&lt;/td&gt;
      &lt;td&gt;&lt;input type=text name=username&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;input type=submit value=Login&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;/form&gt;
      &lt;/table&gt;
      &lt;/center&gt;
      &#39;&#39;&#39;

      @app.route(&#39;/StorageUnitList&#39;)
      def StorageUnitList():
      db = Data()
      db.createDatabase()
      d = db.selectStorageUnit()
      return render_template(&#39;StorageUnitList.html&#39;, data=d)

      @app.route(&#39;/StorageUnitAdd&#39;, methods=[&#39;GET&#39;, &#39;POST&#39;])
      def StorageUnitAdd():
      return &#39;&#39;&#39;
      &lt;center&gt;
      Warehouse management --&gt; add a Storage Unit&lt;br&gt;&lt;br&gt;
      &lt;table border=1&gt;
      &lt;form action=&#34;StorageUnitAddExe&#34; method=&#34;post&#34;&gt;
      &lt;tr&gt;
      &lt;td&gt;code&lt;/td&gt;
      &lt;td&gt;&lt;input type=text name=scode&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;size&lt;/td&gt;
      &lt;td&gt;&lt;input type=text name=ssize&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;input type=submit value=OK&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;/form&gt;
      &lt;/table&gt;
      &lt;/center&gt;
      &#39;&#39;&#39;

      @app.route(&#39;/StorageUnitAddExe&#39;, methods=[&#39;GET&#39;, &#39;POST&#39;])
      def StorageUnitAddExe():
      scode = request.form[&#39;scode&#39;]
      ssize = request.form[&#39;ssize&#39;]
      if scode is not None and len(scode)&gt;0 and \
      ssize is not None and len(ssize)&gt;0:
      db = Data()
      db.createDatabase()
      db.insertStorageUnit(scode,ssize);
      return redirect(url_for(&#39;StorageUnitList&#39;))

      @app.route(&#39;/StorageUnitDelete&#39;, methods=[&#39;GET&#39;, &#39;POST&#39;])
      def StorageUnitDelete():
      return &#39;&#39;&#39;
      &lt;center&gt;
      Warehouse management --&gt; delete a Storage Unit&lt;br&gt;&lt;br&gt;
      &lt;table border=1&gt;
      &lt;form action=&#34;StorageUnitDeleteExe&#34; method=&#34;post&#34;&gt;
      &lt;tr&gt;
      &lt;td&gt;code&lt;/td&gt;
      &lt;td&gt;&lt;input type=text name=scode&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;input type=submit value=OK&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;/form&gt;
      &lt;/table&gt;
      &lt;/center&gt;
      &#39;&#39;&#39;

      @app.route(&#39;/StorageUnitDeleteExe&#39;, methods=[&#39;GET&#39;, &#39;POST&#39;])
      def StorageUnitDeleteExe():
      scode = request.form[&#39;scode&#39;]
      if scode is not None and len(scode)&gt;0:
      db = Data()
      db.createDatabase()
      db.deleteStorageUnit(scode);
      return redirect(url_for(&#39;StorageUnitList&#39;))



      @app.route(&#39;/StorageList&#39;)
      def StorageList():
      db = Data()
      db.createDatabase()
      d = db.selectStorage()
      return render_template(&#39;StorageList.html&#39;, data=d)

      @app.route(&#39;/StorageAdd&#39;, methods=[&#39;GET&#39;, &#39;POST&#39;])
      def StorageAdd():
      return &#39;&#39;&#39;
      &lt;center&gt;
      Warehouse management --&gt; add a Storage&lt;br&gt;&lt;br&gt;
      &lt;table border=1&gt;
      &lt;form action=&#34;StorageAddExe&#34; method=&#34;post&#34;&gt;
      &lt;tr&gt;
      &lt;td&gt;storage unit code &lt;/td&gt;
      &lt;td&gt;&lt;input type=text name=scode&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;goods code &lt;/td&gt;
      &lt;td&gt;&lt;input type=text name=ccode&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;goods name &lt;/td&gt;
      &lt;td&gt;&lt;input type=text name=cname&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;status &lt;/td&gt;
      &lt;td&gt;&lt;input type=text name=status&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;input type=submit value=OK&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;/form&gt;
      &lt;/table&gt;
      &lt;/center&gt;
      &#39;&#39;&#39;

      @app.route(&#39;/StorageAddExe&#39;, methods=[&#39;GET&#39;, &#39;POST&#39;])
      def StorageAddExe():
      scode = request.form[&#39;scode&#39;]
      ccode = request.form[&#39;ccode&#39;]
      cname = request.form[&#39;cname&#39;]
      status = request.form[&#39;status&#39;]
      if scode is not None and len(scode)&gt;0 and ccode is not None and \
      len(ccode)&gt;0 and cname is not None and \
      len(cname)&gt;0 and status is not None and len(status)&gt;0:
      db = Data()
      db.createDatabase()
      if len(db.selectStorageUnitBy(scode))&gt;0:
      db.insertStorage(scode,ccode,cname,status);
      return redirect(url_for(&#39;StorageList&#39;))

      @app.route(&#39;/StorageDelete&#39;, methods=[&#39;GET&#39;, &#39;POST&#39;])
      def StorageDelete():
      return &#39;&#39;&#39;
      &lt;center&gt;
      Warehouse management --&gt; delete a Storage Unit&lt;br&gt;&lt;br&gt;
      &lt;table border=1&gt;
      &lt;form action=&#34;StorageDeleteExe&#34; method=&#34;post&#34;&gt;
      &lt;tr&gt;
      &lt;td&gt;storage unit code&lt;/td&gt;
      &lt;td&gt;&lt;input type=text name=scode&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;goods code&lt;/td&gt;
      &lt;td&gt;&lt;input type=text name=ccode&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;&lt;/td&gt;
      &lt;td&gt;&lt;input type=submit value=OK&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;/form&gt;
      &lt;/table&gt;
      &lt;/center&gt;
      &#39;&#39;&#39;

      @app.route(&#39;/StorageDeleteExe&#39;, methods=[&#39;GET&#39;, &#39;POST&#39;])
      def StorageDeleteExe():
      scode = request.form[&#39;scode&#39;]
      ccode = request.form[&#39;ccode&#39;]
      if scode is not None and len(scode)&gt;0 and \
      ccode is not None and len(ccode)&gt;0:
      db = Data()
      db.createDatabase()
      db.deleteStorage(scode, ccode);
      return redirect(url_for(&#39;StorageList&#39;))

      # set the secret key:
      app.secret_key = &#39;A0Zr98j/3yX R~XHH!jmN]LWX/,?RT**^4&#39;

      if __name__ == &#39;__main__&#39;:
      app.run()

      # Flask:
      # http://docs.jinkan.org/docs/flask/index.html
      # Template:
      # http://docs.jinkan.org/docs/jinja2/

      Web頁面

      • 如上代碼所隱含,使用了一個靜態(tài)文件,即about.html;
      • 使用了兩個模板文件,用于生成檢索數(shù)據(jù)庫表生成的列表,即StorageList.html和StorageUnitList.html;
      • 注意在login,StorageUnitAdd,StorageUnitDelete,StorageAdd,StorageDelete中都生成了Form,這些內(nèi)容是在瀏覽器前端顯示的。

      about.html

      &lt;html&gt;
      &lt;body&gt;
      &lt;center&gt;
      Warehouse management: this is just a test application for demonstrating logistics information systems.&lt;br&gt;
      &lt;br&gt;
      &lt;table border=1&gt;
      &lt;tr&gt;
      &lt;td colspan=4&gt;Menu&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;Storage Unit&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;/StorageUnitList&#39;&gt;list&lt;/a&gt;]&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;/StorageUnitAdd&#39;&gt;add&lt;/a&gt;]&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;/StorageUnitDelete&#39;&gt;delete&lt;/a&gt;]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;Storage&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;/StorageList&#39;&gt;list&lt;/a&gt;]&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;/StorageAdd&#39;&gt;add&lt;/a&gt;]&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;/StorageDelete&#39;&gt;delete&lt;/a&gt;]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;System&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;about&#39;&gt;about&lt;/a&gt;]&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;login&#39;&gt;login&lt;/a&gt;]&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;/&#39;&gt;index&lt;/a&gt;]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;table&gt;
      &lt;/center&gt;
      &lt;/body&gt;
      &lt;/html&gt;

      StorageList.html

      &lt;html&gt;
      &lt;body&gt;
      &lt;center&gt;
      Warehouse management -&gt; Storage&lt;br&gt;
      &lt;br&gt;
      &lt;table border=1&gt;
      &lt;tr&gt;
      &lt;td colspan=4&gt;Menu&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;Storage Unit&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;/StorageUnitList&#39;&gt;list&lt;/a&gt;]&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;/StorageUnitAdd&#39;&gt;add&lt;/a&gt;]&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;/StorageUnitDelete&#39;&gt;delete&lt;/a&gt;]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;Storage&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;/StorageList&#39;&gt;list&lt;/a&gt;]&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;/StorageAdd&#39;&gt;add&lt;/a&gt;]&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;/StorageDelete&#39;&gt;delete&lt;/a&gt;]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;System&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;about&#39;&gt;about&lt;/a&gt;]&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;login&#39;&gt;login&lt;/a&gt;]&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;/&#39;&gt;index&lt;/a&gt;]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;table&gt;

      &lt;br&gt;
      &lt;table border=1&gt;
      &lt;tr&gt;
      &lt;td&gt;Storage Unit Code&lt;/td&gt;
      &lt;td&gt;Goods Code&lt;/td&gt;
      &lt;td&gt;Goods Name&lt;/td&gt;
      &lt;td&gt;Status&lt;/td&gt;
      &lt;tr&gt;
      {% for a in data %}
      &lt;tr&gt;
      &lt;td&gt;{{ a[0] }}&lt;/td&gt;
      &lt;td&gt;{{ a[1] }}&lt;/td&gt;
      &lt;td&gt;{{ a[2] }}&lt;/td&gt;
      &lt;td&gt;{{ a[3] }}&lt;/td&gt;
      &lt;/tr&gt;
      {% endfor %}
      &lt;table&gt;
      &lt;/center&gt;
      &lt;/body&gt;
      &lt;/html&gt;

      StorageUnitList.html

      &lt;html&gt;
      &lt;body&gt;
      &lt;center&gt;
      Warehouse management -&gt; Storage Units&lt;br&gt;
      &lt;br&gt;
      &lt;table border=1&gt;
      &lt;tr&gt;
      &lt;td colspan=4&gt;Menu&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;Storage Unit&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;/StorageUnitList&#39;&gt;list&lt;/a&gt;]&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;/StorageUnitAdd&#39;&gt;add&lt;/a&gt;]&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;/StorageUnitDelete&#39;&gt;delete&lt;/a&gt;]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;Storage&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;/StorageList&#39;&gt;list&lt;/a&gt;]&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;/StorageAdd&#39;&gt;add&lt;/a&gt;]&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;/StorageDelete&#39;&gt;delete&lt;/a&gt;]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
      &lt;td&gt;System&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;about&#39;&gt;about&lt;/a&gt;]&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;login&#39;&gt;login&lt;/a&gt;]&lt;/td&gt;
      &lt;td&gt;[&lt;a href=&#39;/&#39;&gt;index&lt;/a&gt;]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;table&gt;

      &lt;br&gt;
      &lt;table border=1&gt;
      &lt;tr&gt;&lt;td&gt;Code&lt;/td&gt;&lt;td&gt;Size&lt;/td&gt;&lt;tr&gt;
      {% for a in data %}
      &lt;tr&gt;
      &lt;td&gt;{{ a[0] }}&lt;/td&gt;
      &lt;td&gt;{{ a[1] }}&lt;/td&gt;
      &lt;/tr&gt;
      {% endfor %}
      &lt;table&gt;
      &lt;/center&gt;
      &lt;/body&gt;
      &lt;/html&gt;

      測試

      在Anaconda Spyder中執(zhí)行index.py,得到:

       * Serving Flask app &#34;index&#34; (lazy loading)
      * Environment: production
      WARNING: This is a development server. Do not use it in a production deployment.
      Use a production WSGI server instead.
      * Debug mode: off
      * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

      在瀏覽器輸入以下網(wǎng)址測試: http://127.0.0.1:5000/

      Login

      Storage Unit: List

      Storage Unit: Add

      Storage Unit: Delete

      Storage: List

      Storage: Add

      Storage: Delete

      私信小編01 領(lǐng)取完整代碼

      推薦閱讀:手機充電寶品牌排行

      查看心情排行你看到此篇文章的感受是:


      • 支持

      • 高興

      • 震驚

      • 憤怒

      • 無聊

      • 無奈

      • 謊言

      • 槍稿

      • 不解

      • 標(biāo)題黨
      要聞排行
      精彩推薦