• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于PyQt5+MySQL航班座位自動分配系統(tǒng)設計與實現

    2021-10-29 06:26:32劉秋蘭
    中文信息 2021年9期
    關鍵詞:座位旅客分配

    張 靜 劉秋蘭

    (山東電子職業(yè)技術學院計算機與軟件工程系,山東 濟南 250200)

    目前民航旅客在預定航班后,一般都可以提前自助選擇座位。如果不提前選擇座位,旅客到達機場后,在柜臺值機或自助設備上值機時,可以選擇一個座位,或者由后臺系統(tǒng)隨機分配一個座位。如何正確選座,哪個區(qū)域最好,相信這是很多想乘坐飛機的人,都曾苦惱過的問題。因為飛機座位沒選好,可能整個出行的計劃就被打亂。然而,乘坐飛機出行前選好座位很多問題就可以避免。

    因此,本系統(tǒng)利用Python3.6+Pycharm 2017.3+PyQt5+MySQL5.0平臺,基于大數據平臺,進行個人喜好數據分析,采用自搜索算法、動態(tài)求解算法、隨機分配算法,實現了航班自動分配座位的功能。系統(tǒng)實現的主要目標如下所示。

    第一,采用自搜索算法及隨機分配算法,實現了對單一座位的自動分配。第二,采用動態(tài)求解算法、自搜索算法、隨機分配算法,實現了以“組”為單位的座位以及整機座位自動分配。第三,實現查看座位分配時間與實際分配情況、分配座位的布局、導出分配結果。

    一、系統(tǒng)整體概述

    1.系統(tǒng)總體設計

    結合實際生活場景應用,本系統(tǒng)實現的主要功能可劃分為:選擇航班信息、加載數據文件、開始自動分配座位、查看分配結果、導出報表、查看座位布局。兩種角色:普通用戶、管理員。兩者的不同在于管理員的權限可以對用戶進行有效管理,如添加用戶、刪除用戶、修改用戶等功能。

    2.系統(tǒng)代碼架構

    系統(tǒng)代碼架構主要分為三層:用戶層、中間層、數據層。用戶層主要提供數據展示和用戶操作界面;中間層用于銜接用戶層與數據層之間的數據傳輸;數據層用于存儲數據,將數據存于數據庫中、Json格式的文件中,具體流程如圖1所示。

    圖1 系統(tǒng)代碼架構圖

    3.系統(tǒng)性能需求

    該系統(tǒng)主要從效率性、安全性、穩(wěn)定性、兼容性等方面考慮了性能需求[1],具體包括:效率性:單一座位分配的處理時間不超過1秒,整機旅客重新分配座位的處理時間不超過10秒。安全性:該系統(tǒng)有較強的安全性,能對數據和顧客相關信息進行數據加密處理,能對數據進行有效防護,有較強的安全性。

    二、系統(tǒng)詳細設計

    本系統(tǒng)主要包括系統(tǒng)登錄模塊、座位自動分配模塊、用戶管理模塊。

    1.系統(tǒng)登錄模塊

    本模塊屬于系統(tǒng)的入口界面,通過輸入用戶名和密碼進入座位自動分配系統(tǒng)。在登錄界面中,可以以普通用戶或管理員用戶兩種方式進行登錄界面。

    2.座位自動分配模塊

    該模塊主要實現的功能包括:切換航班號功能,查看航班相關信息功能;航班座位自動分配功能;查看分配結果功能;導出報表功能;查看座位布局功能。模塊界面設計如圖2所示。在該界面中,查看座位布局界面設計,如圖3所示。單擊“查看座位布局”按鈕,將會顯示出該航班座位的具體分配情況,藍色表示未分配的座位,帶小鎖的表示已分配的座位,橙色的表示未滿足旅客需求的座位。同時,將鼠標移到某個座位上,將會顯示出該座位的所有屬性。最后,還可以把這個分配結果以Json格式的文件導出,單擊“導出報表”按鈕,選擇文件存儲位置,輸入文件名,單擊保存即可完成。

    圖2 座位自動分配界面

    圖3 查看座位布局界面

    3.用戶管理模塊

    對于普通用戶,僅允許該用戶修改自己的密碼;對于管理員用戶,可以實現修改所有用戶的密碼和權限、增加用戶、刪除用戶、清空普通用戶等操作。

    三、座位自動分配算法

    座位自動分配流程如下:

    第一,選擇需要分配的Json格式報表文件,該文件存儲的是旅客歷史購票信息。第二,對報表文件進行預處理,具體方法如下:①將旅客信息按照旅客數量進行分類,將旅客數量大于1的旅客放到一個旅客信息表1中;將其他旅客信息放到另外一個旅客信息表2中;②將旅客信息表1里的旅客信息按照旅客數量從大到小的順序排序;③將旅客信息表2里的旅客信息按照座位屬性值的個數從大到小排序。第三,采用動態(tài)優(yōu)化算法,按照旅客信息表1里提供的座位屬性實現自動分配,同時,將已分配到的座位從座位信息列表里刪除。此時,將旅客相關信息存入旅客座位列表中。對于未滿足需求的旅客信息放到變量旅客信息表2里。第四,采用自搜索算法,根據旅客信息表2里的旅客座位屬性實現自動分配,同時,將已分配到的座位從座位信息列表里刪除。此時,將旅客相關信息存入旅客座位列表中。將未滿足需求的旅客信息放入臨時變量tmp_passenger_info_dict內。第五,采用隨機分配算法分配剩余旅客座位,同時,將已分配到的座位從座位信息列表里刪除。此時,將旅客相關信息存入旅客座位列表。將該變量的信息寫入旅客信息列表,同時更新座位屬性表里的座位預定狀態(tài)。第六,給出提示信息,座位自動分配完成。采用兩組數據進行測試,第一組測試數據是單一座位的數據,其中80個靠窗的、80個靠過道的、20個無屬性的、2個VIP的。第二組測試數據是支持以組為單位的座位數據,其中包含40組,30個單一靠窗、30個單一靠過道、10個單一無任何屬性的。

    一是單一座位的自動分配:首先單擊“加載數據報表”按鈕,選擇第1組測試數據(這里僅支持加載Json格式的數據文件);然后,單擊“開始分配座位”按鈕,就實現自動分配座位的功能,同時可以查看分配座位所用的時間。單擊“查看分配結果”按鈕,查看本次座位分配的情況,在分配結果表格中,第一列表示用戶ID(此處用的是按照順序排列的),第二列是座位號,第三列是旅客所需座位數(如果座位數等于1,表示單個分配;如果座位數大于1,表示以組的形式進行分配的),最后一列表示是否滿足旅客需求。二是以組為單位的自動分配:首先清空數據庫中的數據,執(zhí)行database.py。然后單擊“加載數據報表”按鈕,選擇第2組測試數據;再單擊“開始分配座位”按鈕,就實現自動分配座位的功能,同時,可以查看分配座位所用的時間。

    結語

    本系統(tǒng)體現的創(chuàng)新特色之處,包括:動態(tài)處理座位屬性表,提高程序效率;座位屬性值采用一個整型值來存儲,目的是為了減少內存存儲和比較次數;支持加載Json格式的模擬數據報表文件;該系統(tǒng)不僅適用于航班座位自動分配,而且還適用于其他類型的座位自動分配,如火車、電影院等。

    猜你喜歡
    座位旅客分配
    換座位
    哈哈畫報(2022年5期)2022-07-11 05:57:42
    非常旅客意見簿
    應答器THR和TFFR分配及SIL等級探討
    遺產的分配
    一種分配十分不均的財富
    巴士上的座位
    績效考核分配的實踐與思考
    我是人
    故事大王(2018年3期)2018-05-03 09:55:52
    換座位
    給小旅客的禮物
    空中之家(2016年1期)2016-05-17 04:47:43
    茶陵县| 城步| 遂宁市| 繁峙县| 苏尼特左旗| 永和县| 措勤县| 陵川县| 潞城市| 莲花县| 高要市| 惠安县| 富顺县| 阿勒泰市| 永兴县| 信宜市| 乌兰察布市| 瑞金市| 莱西市| 昌图县| 绥德县| 峡江县| 沛县| 鄢陵县| 正镶白旗| 玉龙| 宁陵县| 永城市| 博兴县| 正安县| 清镇市| 梅州市| 宿州市| 滁州市| 钟祥市| 扶绥县| 新化县| 富源县| 周宁县| 石嘴山市| 女性|