亚洲欧美国产va在线播放频|亚洲禁18人久爽人久爽|性刺激的欧美三级视频中文字幕|欧美久久精品一级黑人c片

    
    

    <dl id="x54l4"></dl>

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

    Python信息系統(tǒng)實(shí)驗(yàn):倉庫管理

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

    Python信息系統(tǒng)實(shí)驗(yàn):倉庫管理

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

    實(shí)驗(yàn)要求

    軟件

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

    倉庫管理實(shí)驗(yàn)

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

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

    數(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)用,但是本文僅僅利用其最簡單的能力完成幾個(gè)頁面和功能之間的切換。

    幾分鐘做個(gè)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
    • 對存儲(chǔ)單元的操縱,主要是列表顯示StorageUnitList、增加StorageUnitAdd和刪除StorageUnitDelete
    • 對存儲(chǔ)記錄的操縱,主要是列表顯示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頁面

    • 如上代碼所隱含,使用了一個(gè)靜態(tài)文件,即about.html;
    • 使用了兩個(gè)模板文件,用于生成檢索數(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)取完整代碼

    推薦閱讀:手機(jī)充電寶品牌排行

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


    • 支持

    • 高興

    • 震驚

    • 憤怒

    • 無聊

    • 無奈

    • 謊言

    • 槍稿

    • 不解

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