日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

【课程设计】数据库:火车票管理系统

發布時間:2024/1/18 windows 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【课程设计】数据库:火车票管理系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【課程設計】數據庫:火車票管理系統

摘要:本文主要介紹了火車票管理系統,其中包括其選題功能概述,對該系統的方案方法設計,以及過程實現等內容。由于系統的代碼量較大,因此將會較為抽象地對思想進行介紹,在必要時會舉出一些實例,還會附上成果展示以及安裝方法。最后補充一下這次團伙作案的心得體會,也是非常寶貴的財富。


文章目錄

  • 【課程設計】數據庫:火車票管理系統
    • 引言——起因與動力
    • 一、選題背景
    • 二、方案論證(設計理念)
      • 2.1 運行和開發環境
      • 2.2 面向對象編程
      • 2.3 前后端分離
      • 2.4 數據庫設計思路
        • 2.4.1 需求分析
        • 2.4.2 概念結構設計
        • 2.4.3 邏輯結構設計
      • 2.5 軟件框架與流程
      • 2.6 前端設計
    • 三、過程論述
      • 3.1 任務分工
      • 3.2 整體框架
      • 3.3 前端開發
      • 3.4 圖表繪制
      • 3.5 前后端交互
      • 3.6 應用層接口
      • 3.7 數據庫編程
    • 四、成果展示(部分)
      • 4.1 登錄界面
      • 4.2 注冊界面
      • 4.3 車次信息展示界面(與其他信息展示界面基本一致)
      • 4.4 營收報表界面
      • 4.5 售票員業績界面
    • 五、系統使用及測試用例(重要)
    • 六、心得體會
      • 6.1 小組協同
      • 6.2 數據庫設計
      • 6.3 框架設計

引言——起因與動力

本系統是由五位華工學子(劉同學、陳同學、羅同學、魯同學、盧同學)在課余時間中對數據庫課程設計進行的一次嘗試。起因在于,雖然我們都有部分項目經驗,然而一般情況下,都是由導師為我們所引導安排去實施任務的,因此在此課程出來后,我們就商量著體驗一次,從零開始的自主實現項目過程。這次課設為對我們自身的提升有很大的幫助,為此希望通過這篇文章分享出來。

對于該課設,對于我們的要求就是認真執行,定期開展組會與項目驗收。在開發過程中,嘗試了新的語言、開發工具以及開發模式等。其中最為印象深刻的是項目的集體討論設計的過程、語雀gitee等協同開發工具、函數接口的注釋標準化等細節內容、前端開發等初嘗試。這些都是以往淺淺嘗試過的內容,在本次課設中有了更豐富的知識獲取。

當然,由于是第一次做如此大的工程,也遇到了一些困難的地方,比如在最初的數據庫設定完成后,課設開展了一段時間,卻發現設計內容需要修改,此時修改工程量較大,難免會出現一些煩躁情緒,當工作周期長時,也會出現部分拖沓懈怠,在小組之間的鼓勵與監督下,完成讓課設繼續進行。可惜的是對于本系統由于時間較短,其實是開發并不完整的,而且存在并發性以及部分插入的等問題,但是這次課設體驗非常難得,學到了許多課堂需不到的內容。

一、選題背景

本課題是實現對火車票售票的管理系統,具有售票系統、系統管理、綜合查詢等功能。該系統分為三大板塊,分別為售票系統、系統管理和營收結算。以下是每個模塊詳細介紹。

  • 售票管理:本系統主要功能包括:售當日票、預售票、退票、廢票、選座位、站點班次查詢、售票統計等。設計了多種售票模式,售票員可輸入自定義站點編碼或站點拼音代碼,即可顯示經過該站點的所有可售班次,班次車輛的座位狀態實時、直觀地顯示并完成售票操作。對于售票員來說,可同時售數張相同或不同站點,相同或不同票種(全票、半票、優惠票)的車票,可以實現累加本次售票款,直至下次新售票開始。同時提供用戶端,乘客也可以通過互聯網購票。
  • 系統管理:用戶管理、線路設置、站點設置、退票參數、預售票參數、票價設置等。該系統主要分為四大部分,分別為用戶、車票、車次和路線板塊,每個板塊可以進行查詢與修改操作。
  • 營收管理:售票員結算、匯總報表。對營收繳款進行管理,可以實時掌握車站營收情況,方便財務監督。能夠快速、準確地生成各種營收結算報表,顯著地提高了營收結算的工作質量和效率。

二、方案論證(設計理念)

2.1 運行和開發環境

  • 操作系統:Windows10
  • 數據庫:mysql
  • 集成開發環境:Pycharm
  • Python版本:3.9
  • 前端模塊:pyqt5
  • 數據庫模塊:pymysql
  • 輔助工具:qtDesigner
  • Git:https://gitee.com/youyouxingyuandao/database-course-design

2.2 面向對象編程

面向對象編程的優勢在于易維護、開發效率高和易擴展等,對于易維護,只需維護局部模塊,維護起來是非常方便和成本較低;對于開發效率高,在軟件開發時,根據設計的需要對現實世界的事物進行抽象,產生類,通過對類的封裝,對其的使用開發的效率和質量;易擴展由于繼承、封裝、多態的特性,自然設計出高內聚、低耦合的系統結構,使得系統更靈活、更容易擴展,而且成本較低。

前端面向對象編程體現于,每個界面的每個組件都設計為一個類,比如在管理端的用戶信息展示窗口中,首先對分頁器、用戶信息欄、搜索框進行父類封裝,在繼承后,通過多態的編程思想,進行再封裝,最后組裝在一起。

后端面向對象編程體現于,對于數據庫通過邏輯結構設計后,可以分析出各個實體類,進行面對對象的編程。不僅如此,由于設計部分工具操作,還額外定義了工具類,作為前端的輔助工具接口類。

2.3 前后端分離

對于前后端分離,可以提高工作效率,分工更加明確。兩端開發可以同時進行,只需通過接口完成連接,雙方互不干擾。可是為了在該次大作業中提高每位成員的參與度,因此在任務分配上,每個人都會有對前后端的工作安排。

2.4 數據庫設計思路

2.4.1 需求分析

  • 用戶登錄注冊:用戶包括工作人員和乘客,有管理員、售票員、乘客3類用戶;普通人可以通過注冊功能成為新用戶,用戶通過登錄可以使用系統提供的相應功能,如添加乘客,購買車票,查詢訂單等等。

  • 系統需要提供查詢列車詳細信息的功能:用戶根據始發站和終點站,查詢可以滿足自己行程要求并且正常運行的列車,并且可以進一步查看開車時間,到達時間以及列車剩余座位的數量和票價;用戶可以搜索具體的某一趟車次,可以得到該車次的具體路線信息以及發車時間。

  • 系統需要提供售票功能:售票員輸入站點即可顯示經過該站點的所有可售班次以及班次車輛的座位狀態;一個售票員可同時售數張相同或不同站點,相同或不同票種(一等、二等、站票)的車票,可以實現累加本次售票款,直至下次新售票開始;還應實現輔助提示應找款以及退票的功能,售票員可以查詢當天售票帳單,乘客也可以通過互聯網購票。

  • 系統需要提供管理功能:包括用戶管理、線路設置、站點設置、票價設置等。該系統主要分為四大部分,分別為用戶、車票、車次和路線板塊,每個板塊可以進行查詢與修改操作,管理員可以添加、修改和刪除用戶信息、線路信息、車票信息以及車次信息。

  • 系統需要提供營收結算功能:包括售票員結算、匯總報表。對營收繳款進行管理,可以實時掌握車站營收情況,方便財務監督。能夠快速、準確地生成各種營收結算報表。匯總報表主要包括:根據用戶選擇或者輸入的各種條件(包括:時間,售票員,票號等)匯總車站運營數據,包括:售票匯總,退票匯總,預售票匯總,廢票匯總,綜合匯總,財務匯總,售票員結算單等等。

  • 系統需要提供綜合查詢功能:包括:匯總線路、站點、班線、班次等各種基礎數據;統計營運數據,生成日報表、月報表和任意時段報表;以匯總表形式,顯示出售票張數、售票金額以及售票情況。

  • 2.4.2 概念結構設計

  • admin管理員、user用戶、sellers售票員實體:在該實體中,用戶id為主鍵,用來作為每一個用戶的唯一標識,同時也作為登陸系統的用戶名使用;身份屬性用于區分用戶的類型,1為普通用戶,2為管理員,3為售票員;每個用戶都有唯一的身份證號和電話號碼。
  • route路線實體:在該實體中,路線id為主鍵,用來作為每一條路線的唯一標識,另外還記錄了該路線途徑的每一站以及到達該站的時刻。
  • train車次實體:在該實體中,車次id為主鍵,用來作為每一個車次的唯一標識;不同車次的列車擁有自己的一等座數量、二等座數量和三等座數量;路線id作為該實體的外鍵與路線表相聯系,該車次的一等座、二等座以及三等座的價格也通過對應路線的歷時和價格參數計算出來。
  • ticket車票實體:在該實體中,車次id和發車日期作為聯合主鍵,車次id作為外鍵與車次表相關聯;一等座、二等座以及三等座剩余數量分別記錄了某一車次某一日期當天的不同車票類型的剩余數量。
  • orders用戶訂單實體:在該實體中,訂單id作為主鍵,用來作為每一份訂單的唯一標識;對于每一份獨立的訂單,記錄著用戶購買某一張車票的所有信息:包括用戶身份證號、購買車次id、車票類型(一等座、二等座和三等座)、該車票的價格、下單時間、起始站、終點站、出發時間、賬單id以及是否發生退票行為(1為發生了退票 2為未發生退票);其中車次id作為該實體類型的外鍵與車次表相關聯,可以對應到相關車次的具體信息。
  • bill用戶賬單實體:在該實體中,賬單id作為主鍵,用來作為每一份賬單的唯一標識;售票員id作為外鍵與用戶表相關聯,且該用戶身份屬性的值為3,代表著該賬單對應的某一個售票員;訂單id作為外鍵與訂單表相關聯,用于記錄該訂單屬于某一賬單,一份賬單可以對應到多份訂單;此外該實體還包括應付金額和實付金額這兩個屬性,通過這兩個屬性可以計算出找零金額。
  • 整體E-R圖

    • 每個用戶可以添加多個乘客
    • 每個用戶可以擁有多個訂單
    • 每個訂單屬于一個乘客
    • 每個訂單擁有一條車次的信息
    • 每個賬單擁有多個訂單
    • 每個車次信息對應多條車票
    • 每個列車有一條對應的路線
  • 2.4.3 邏輯結構設計

  • 實體轉化為關系模式

    用戶信息(用戶id,電話號碼,密碼,身份證號,真實姓名,用戶類型,性別,注冊日期)

    路線信息(路線id,出發時間,到達時間,出發站,目的站,中間站1,中間站2,中間站3,中間站4,中間站5,中間站6,中間站7,中間站8,到達時間1,到達時間2,到達時間3,到達時間4,到達時間5,到達時間6,到達時間7,到達時間8)

    車次信息(車次id,路線id,一等座數量,二等座數量,三等座數量,一等票價格,二等票價格,三等票價格)

    車票信息(車次id,發車日期,一等座剩余數量,二等座剩余數量,三等座剩余數量)

    訂單信息(訂單id,用戶身份證號,賬單id,車次id,車票類型,價格,下單時間,發車時間,出發地,目的地,是否退票)

    賬單信息(賬單id,訂單id,售票員id,實付金額,應付金額)

  • 聯系轉化為關系模式

    用戶擁有訂單(用戶身份證號,訂單編號)

    訂單擁有車次(訂單編號,車次編號)

    列車擁有路線信息(車次編號,路線編號)

    賬單擁有訂單(賬單編號,訂單編號)

    賬單對應售票員(賬單編號,售票員編號)

    車票擁有車次(車次編號,發車日期)

  • 實體與聯系進行合并

    User表設計如下:

    Route表設計如下:

    Train表設計如下:

    Ticket表設計如下:

    Orders表設計如下:

    Bill表設計如下:

  • 2.5 軟件框架與流程

    該大作業的軟件框架分為三層,為表現層、應用層與數據層表現層主要功能為數據修飾及展示、獲取用戶信息、發送數據訪問請求;應用層主要功能為相應訪問請求、提供數據訪問接口、嵌入式數據庫編程、數據封裝修改;數據層主要功能為數據庫設計、數據初始化、儲存、增刪查改。工具箱為整個創建開發過程提供相應工具,便于開發進行。

    程序流程設置為從登陸界面進入,可以從登陸界面中選擇打開注冊界面完成注冊,還可以選擇身份,完成登陸操作,進入用戶界面、售票員界面以及管理員界面。其中管理員界面可以打開匯總界面,查看銷售情況。對于用戶界面、售票員界面以及管理員界面,都是采取訪問應答的方式獲取數據并完成數據整理展示到前端,而匯總界面,這是根據當天的售票情況,獲取相應數據并完成整理與展示。

    2.6 前端設計

    管理員界面:分為三大板塊,分別為標題區、功能選擇區以及顯示區,標題區會對軟件的信息和圖標進行展示,并提供用戶的基本信息;功能選擇區將會對管理層的功能進行分類,并通過標簽顯示,由鼠標單擊來確定數據顯示界面;顯示區則是對后端數據傳入后,對數據完成整理并進行展示。

    售票員界面:分為三大板塊,分別為標題區、售票區以及賬單提交區,標題區會對軟件的信息和圖標進行展示,并提供售票員的基本信息;售票區可以由售票員輸入目的站和終點站對符合條件的車次信息進行查找并顯示;賬單提交區則是對售票員處理的一系列訂單進行提交操作。

    用戶界面:該界面與售票員界面相似,分為三大板塊,分別為標題區、售票區以及賬單提交區,標題區會對軟件的信息和圖標進行展示,并提供售票員的基本信息;售票區可以由售票員輸入目的站和終點站對符合條件的車次信息進行查找并顯示;賬單提交區則是對售票員處理的一系列訂單進行提交操作。

    三、過程論述

    由于系統內容較大,因此在此介紹過程論述的大體思路,必要時進行具體示例的說明。而更詳細的內容會可以通過分工,具體查看每位成員的實驗報告,里面包括了具體的代碼實現方式。

    3.1 任務分工

    前端

    • 劉弘韜:登錄界面、注冊界面、車次顯示界面
    • 羅信:用戶顯示界面、車票顯示界面
    • 盧梓鋒:管理員界面框架,營收報表顯示界面,售票員界面,用戶界面
    • 陳遠生:分頁器,路線顯示界面
    • 魯逸風:管理用戶界面,詳細信息界面,搜索框,管理員界面(部分)

    后端

    • 劉弘韜:數據庫搭建、數據庫部分操作(范圍查找、分頁查找)、應用層部分接口(用戶層接口)
    • 羅信:數據庫數據插入(爬取12306車票以及路線數據,生成uesr、train、ticket以及route的數據)、連接車票界面設計與后端數據庫
    • 盧梓鋒:售票員及用戶界面的數據庫函數(查找線路,訂單賬單,購票,退票)
    • 陳遠生:路線界面的增刪查改,部分售票員連接數據庫操作
    • 魯逸風:部分查找數據庫函數(查找路線)

    3.2 整體框架

    設置為從登陸界面進入,可以從登陸界面中選擇打開注冊界面完成注冊,還可以選擇身份,完成登陸操作,進入用戶界面、售票員界面以及管理員界面。其中管理員界面可以打開匯總界面,查看銷售情況。對于用戶界面、售票員界面以及管理員界面,都是采取訪問應答的方式獲取數據并完成數據整理展示到前端,而匯總界面,這是根據當天的售票情況,獲取相應數據并完成整理與展示。

    3.3 前端開發

    • 生成UI界面:安裝模塊pyqt5與其工具,使用qtDesigner工具,進行對ui界面的繪制,完成對ui代碼生成的生成,非常方便
    • 轉換.py代碼:通過pyqt5-tools的工具PyUic5,可以將ui代碼進行轉換為python代碼
    • 封裝完善:對于生成好的代碼,進行再次封裝,進行更改文本內容,控件狀態等處理,同時連接信號與槽函數
    • 繼承多態:對封裝好的基本組件進行繼承,并根據自身要求進行修改,最后實現的具體功能應用
    • 界面整合:每個組件封裝好后,根據要求進行界面整合,達到最后的開發目標

    示例:此處例舉車次信息查看窗口,該窗口由分頁器、搜索框以及信息展示三個組件進行構成。其中分頁器是直接通過ui生成代碼,再通過編譯器完成封裝,直接使用的。對于搜索框與信息展示欄,我們通過ui生成后,進行父類封裝,再繼承父類內容,完成多態封裝,在此形成符合火車信息查看的組件要求。再通過布局將各個組件組合起來。

    3.4 圖表繪制

    具體實現方法:

    • 鼠標獲取圖表詳細信息:利用pychart庫,建立一個自己的chart類,繼承pychart對應的圖表,重寫mouseMovement()函數來獲取鼠標在圖表上位置,將絕對位置換算成圖表坐標軸的值,根據這個值來判斷鼠標位置在圖表中的那個點,顯示對應的具體信息。
    • 橫坐標日期均分問題:橫坐標為日期,如果設置的x軸分隔數不對,就會造成橫坐標與日期對不上問題。我們找到日期的最大整除數,再設置x軸的分隔數即可,實現日期均分。

    3.5 前后端交互

    需求功能實現方式:首先在ui界面中查看是否數據非法或填寫信息不完全,其次應用層從數據層獲取數據進行處理,再與前端數據比較或交互等操作,最后完成業務功能。

    在此進行一個示例說明:在前端發送獲取報表信息的請求后,前端會對信息進行檢查,如果正確會傳入到后端中,通過服務層進行數據的計算處理與封裝,最后傳回給前端。可能在過程中使用了工具系列的其他方法,當發生錯誤時,將會對錯誤信息進行報錯。

    3.6 應用層接口

    應用功能實現方式:從數據層中獲取對應數據,其次應用層從數據層獲取數據進行處理,對數據進行計算統計與整理判斷數據生成是否成功,進行相應的提示,并傳輸生成后的數據。

    具體示例為:在統計前五名的售票員銷量時,首先在數據層獲取數據并進行相應的整理,在到應用層中處理數據,最后將數據返回,并提示對應信息

    3.7 數據庫編程

    數據庫連接操作:此處使用了json文件進行配置,其中補充了關于數據庫連接的各種信息,具體代碼如下:

    數據庫的接口整體框架:首先會判斷傳入參數的正確性,比如長度與非法字符等其次通過字符串拼接的方式,將mysql語句完成拼接,成后通過游標進行執行如果成功則打印提示信息,如果失敗將會拋出異常,同時進行數據庫的回滾操作。

    四、成果展示(部分)

    4.1 登錄界面

    登錄界面ui圖

    檢驗填入信息合法性

    權限不足提示

    4.2 注冊界面

    注冊ui截面圖

    檢驗填入信息合法性

    注冊成功提醒

    注冊失敗提醒

    顯示按鈕實現

    4.3 車次信息展示界面(與其他信息展示界面基本一致)

    車次信息界面首頁

    搜索車次

    搜索車次失敗提示

    搜索路線

    搜索路線失敗提示

    查看按鈕功能展示

    修改操作與確認操作

    修改成功提示

    刷新界面展示

    刪除功能展示

    刪除成功提示

    刪除后進行查詢

    分頁查詢上一頁

    分頁查詢下一頁

    分頁查詢首頁查詢

    分頁查詢尾頁查詢

    分頁查詢任意頁查詢

    4.4 營收報表界面

    營收報表數據統計(按日)

    營收報表數據統計(按月)

    4.5 售票員業績界面

    售票員(用戶)界面

    用戶界面與其類似,只是沒有退票功能,今日賬單變成歷史賬單

    五、系統使用及測試用例(重要)

    使用提示

    在分享的可執行文件中是無法正常打開的,因為對于數據庫的配置我們進行了修改,需要各位在壓縮包中解壓各個數據庫腳本,建立數據庫dbhomework_12307,并插入各種數據庫腳本,具體可參考詳細講解Mysql Workbench 的數據導入和導出兩種方式,過程如下:

    而可執行文件的使用過程如下:打開可文件下的可執行文件下的目錄,可以查看為mainfun文件。點擊打開后,運行其中的可執行程序mainfun.exe即可使用該系統。

    如果需要運行源代碼,也是需要對代碼中的json文件進行相應的配置的,配置內容和可執行文件使用的json文件內容一致。

    登錄范例信息

    • 管理員范例——禹亨

      手機號碼:13329841132

      密碼:ehtdi1

    • 售票員范例——壽荷

      手機號碼:13890172838

      密碼:AQwvbB

    • 用戶范例——曾莎

      手機號碼:13578881547

      密碼:u98mWt

    六、心得體會

    6.1 小組協同

    本次作業采取了小組合作的形式,體驗了團隊合作的力量。在效率上各位成員都認真負責,按時按量的完成任務,在配合上使用了gitee語雀等軟件進行合作,效率得到大大提升。同樣采取前后端分離的策略,使得分工明確任務具體。

    在本次作業中,還git使用上有了更新的認識,在以往學習的過程中,只會使用到commit push pull等基本操作,而如今對git的使用有更豐富的理解,比如分支的切換與合并,沖突解決等,以及對分支的定義與分類操作。在如今的集成開發環境中,對git的插件嵌入做的非常完整,此次也是首次使用pycharm的git 插件,在開始使用的不太習慣,到后續逐漸適應。

    6.2 數據庫設計

    將課堂上的理論知識轉換為了實際操作,在學習過的分析步驟(需求分析、概念結構、邏輯結構),轉換為了實際應用,并完成了對象的建立和實現。

    此次數據庫的嵌入式編程有了較大的提升,與以往只會書寫簡單的sql語句,與單一不健壯的語句實現方法,在此次作業中建立了嚴謹的sql語句書寫框架,進行了對語句方法的報錯封裝、錯誤回滾等內。更細致的體現了數據庫嵌入式編程的要求。不僅如此,還學習了許多關于數據庫腳本的運用,完成了數據的許多插入操作。

    當然我們也遇到了部分問題,在數據庫設計方面,小組在初始時只考慮到了管理端的各種信息,而忽略了對于售票窗口和管理窗口的實體設計,因此在最初的考慮分析過程中忽略了這一部分,到管理層的內容完成后,對其他板塊進行開發,才發現該問題,最后對其進行了修改。

    6.3 框架設計

    在框架的搭建過程中,對軟件的初次認識并不到位,其中開始只是設置了前端ui界面和后端數據庫調用層次,如此進行項目實現,對于業務實現的封裝非常復雜,因此在此之間添加了應用層,專門封裝業務邏輯的方法,使結構更清晰。其中還貫穿了個工具類,其中包含了各種工具,方便開發這的使用。

    在軟件設計之初,我們對前端后端只是進行了分層處理,但是直接調用后端接口,會使得在前端使用業務層應用代碼時,代碼復雜。為此我們小組進行了修改,增添了業務層DBService,直接連接數據庫函數封裝業務層代碼,便于前端直接調用。


    補充:

  • 代碼將會放到:火車售票管理系統 ,歡迎查看!
  • 下載鏈接:火車售票管理系統
  • 歡迎各位點贊、評論、收藏與關注,大家的支持是我更新的動力,我會繼續不斷地分享更多的知識!
  • 總結

    以上是生活随笔為你收集整理的【课程设计】数据库:火车票管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。