freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計論文—基于linux系統(tǒng)下開發(fā)的餐廳點菜系統(tǒng)-閱讀頁

2024-09-16 09:18本頁面
  

【正文】 通信子網(wǎng)(網(wǎng)絡(luò)接口層)采用已有的或是將來有的各種協(xié)議,所以這個層次中沒有提供專門的協(xié)議。 TCP/IP 協(xié)議的具有以下 3 個特點: 數(shù)據(jù)可靠性的要求:對數(shù)據(jù)要求高可靠性的應(yīng)用需選擇 TCP 協(xié)議,如驗證、密碼字段的傳送都是不允許出錯的,而對數(shù)據(jù)的可靠性要求不那么高的應(yīng)用可選擇 UDP 傳送。使用 TCP 協(xié)議會有較大的時延,因此不適合對實時性要求較高的應(yīng)用,如 VOIP、視頻監(jiān)控等。 :由于 TCP 協(xié)議的提出主要是解決網(wǎng)絡(luò)的可靠性問題,它通過各種機制來減少錯誤發(fā)生的概率。 TCP/IP 協(xié)議的運作機制是 IP 層負責接收由更低層(網(wǎng)絡(luò)接口層例如以太網(wǎng)設(shè)備驅(qū)動程序)發(fā)來的數(shù)據(jù)包,并把該數(shù)據(jù)包發(fā)送到更高層 TCP 層,相反, IP 層也把從 TCP 層接收來的數(shù)據(jù)包傳送到更低層。 IP 數(shù)據(jù)包中含有發(fā)送它的主機的地址(源地址)和接收它的主機的地址(目的地址)。也可以這樣說,IP 地址形成了許多服務(wù)的認證基礎(chǔ),這些服務(wù)相信數(shù)據(jù)包是從一個有效的主機發(fā)送來的。對于一些 TCP 和 UDP 的服務(wù)來說,使用了該選項的 IP 包好像是從路徑上的最后一個系統(tǒng)傳遞過來的,而不是來自于它的真實地點。許多依靠 IP 源地址做確認的服務(wù)哈爾濱遠東理工學(xué)院學(xué)士學(xué)位論文 7 將產(chǎn)生問題并且會被 非法入侵。 TCP 提供的是一種可靠的數(shù)據(jù)流服務(wù),采用 ―帶重傳的肯定確認 ‖技術(shù)來實現(xiàn)傳輸?shù)目煽啃浴? 如果 IP 數(shù)據(jù)包中有已經(jīng)封好的 TCP 數(shù)據(jù)包,那么 IP 將把它們向上傳送到 TCP 層。 TCP 數(shù)據(jù)包中包括序號和確認,所以未按照順序收到的包 可以被排序,而損壞的包可以被重傳。應(yīng)用程序輪流將信息送回 TCP 層, TCP層便將它們向下傳送到 IP 層,設(shè)備驅(qū)動程序和物理介質(zhì),最后到接收方。 DNS 在某些情況下使用 TCP(發(fā)送和接收域名數(shù)據(jù)庫),但使用 UDP 傳送有關(guān)單個主機的信息 。 TCP/IP 協(xié)議的實現(xiàn)的流程圖如下圖 21 所示。 哈爾濱遠東理工學(xué)院學(xué)士學(xué)位論文 9 第 3 章 系統(tǒng)分析及設(shè)計 系統(tǒng)需求分析 隨著局域網(wǎng)技術(shù)與電子商務(wù)的深入發(fā)展,餐廳自助點菜系統(tǒng)也在國內(nèi)外蓬勃發(fā)展,并日益深入到人們的生活當中。餐廳每日消費人數(shù)的巨大,自助點菜是一種必不可少的工具,而國內(nèi)的點菜系統(tǒng)還不成熟 ,所以本課題將設(shè)計實現(xiàn)一個 餐廳自助 點菜系統(tǒng)。 功能需求 用戶在客戶端點菜,通過局域網(wǎng)傳送到服務(wù)器,后廚接受從服務(wù)器接受到菜單信息,客戶在前臺結(jié)賬。根據(jù)系統(tǒng)功能的需求,分析了所需要的系統(tǒng)總功能結(jié)構(gòu)如表 31 所示。 1.系統(tǒng)處理的準確性和及時性: 系統(tǒng)處理的準確性和及時性是系統(tǒng)的必要性能。 由于餐廳自助點菜系統(tǒng)客戶端的點菜對于整個系統(tǒng)的功能和性能完成舉足輕重。在系開發(fā)過程中,必須保證系統(tǒng)的準確性。例如新增菜品,會員充值等。而要實現(xiàn)這一點,應(yīng)通過系統(tǒng)的開放性來完成。這就要求系統(tǒng)能夠提供良好的用戶接口,易用的人機交互界面。 4.系統(tǒng)的標準性: 系統(tǒng)在設(shè)計開發(fā)使用過程中都要涉及到很多計算機硬件、軟件。例如在開發(fā)中使用的操作系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)、開發(fā)工具都必須符合通用標準。 5.系統(tǒng)的先進性: 目前計算系統(tǒng)的技術(shù)發(fā)展相當快,做為餐廳管理系統(tǒng)工程,應(yīng)該在系統(tǒng)的生命周期盡量做到系統(tǒng)的先進。另一方面,在系統(tǒng)設(shè)計和開發(fā)的過程中,應(yīng)在考慮成本的基礎(chǔ)上盡量采用當前主流并先進且有良好發(fā)展前途的工具。 Linux 系統(tǒng) 采用了可視化的程序設(shè)計,具有面向?qū)ο蟮目梢暬O(shè)計工具,結(jié)構(gòu)化的程序設(shè)計語言,提供了易學(xué)易用的應(yīng)用程序集成開發(fā)環(huán)境,支持多種數(shù)據(jù)庫系統(tǒng)的訪問, Linux 系統(tǒng)中的 Qt 提供了可視化的界面。 系統(tǒng)總體功能模塊 根據(jù)對餐廳點菜系統(tǒng)需要實現(xiàn)的功能進行需求分析,將本系統(tǒng)的前臺劃分為前臺管理,點菜管理,后廚管理,數(shù)據(jù)庫管理,服務(wù)器五個功能模塊;系統(tǒng)功能模塊如圖 31 所示。 表 32 功能模塊描述表 名稱 功能 服務(wù)器 負責前臺,點菜終端,后廚終端間的通信; 前臺終端 負責查詢餐臺空閑信息,顧客結(jié)賬,并打印賬單信息; 點菜終端 設(shè)置基礎(chǔ)信息,更新菜譜,點菜 ,加菜,刪菜; 后廚終端 接收顧客點菜的菜單信息進行做菜; 數(shù)據(jù)庫管理 負責管理數(shù)據(jù)庫的菜菜品信息; 1.服務(wù)器功能:服務(wù)器功能是整個系統(tǒng)的傳輸通道,是系統(tǒng)的重中之重。后廚和服務(wù)器連接后,可以將做完的菜發(fā)送到服務(wù)器,服務(wù)器將信息發(fā)送到點菜客戶端和前臺。本模塊可以查詢當前餐臺的空閑信息、接收服務(wù)器發(fā)送過來顧客點菜的消費菜單信息,并打印菜單給客戶。 圖 32 前臺終端模塊 3.點菜終端:點菜終端是本系統(tǒng)給顧客的使用的,是本系統(tǒng)的重要組成部分。細分的功能模塊如圖 33所示。 點菜信息發(fā)送功能是將用戶點菜信息以結(jié)構(gòu)體的形式發(fā)送到服務(wù)器,并添加到相應(yīng)的數(shù)據(jù)庫中。細分功能如圖 34 所示。細分 數(shù)據(jù)庫管理功能模塊 如圖 35 所示。 添加菜單列表功能是允許可以添加新的菜肴信息。 圖 35 數(shù)據(jù)庫管理模塊 3. 4 數(shù)據(jù)庫結(jié)構(gòu)設(shè)計 根據(jù)對本系統(tǒng)數(shù)據(jù)的分析 ,系統(tǒng)的數(shù)據(jù)庫設(shè)計了一個表:菜肴信息表。 本章小結(jié) 本章主要對該系統(tǒng)設(shè)計進行了需求分析、功能分析,最后做出詳細設(shè)計方案。 詢問刪菜 做 完 接收菜單 后廚管理模塊 刪除菜譜信息 數(shù)據(jù)庫管理模塊 添加菜譜信息 查詢菜譜信息 哈爾濱遠東理工學(xué)院學(xué)士學(xué)位論文 13 第 4 章 軟件設(shè)計 軟件采用面向?qū)ο竦脑O(shè)計方法,考慮到對計算效率的要求,采用 C++編程語言,開發(fā)環(huán)境為 Linux RedHat 企業(yè)版 5,服務(wù)器編譯工具為 gcc,其余編程工具為 g++編譯器,采用 C++標準庫函數(shù)和 QT 類庫。 表 41 菜單信息表 名稱 類型 (長度 ) 空 屬性 Id varchar(20) no unique Idd varchar(20) yes Name varchar(20) yes Price varchar(20) yes Imagepath varchar(20) yes About varchar(20) yes 各功能模塊的詳細設(shè)計 本系統(tǒng)有五個模塊組成,分別為 server(服務(wù)器),前臺管理模塊,顧客點菜管理模塊,后廚管理模塊,數(shù)據(jù)庫管理模塊等。其中主要運用到TCP/IP 協(xié)議通信的。然后就是等待客戶端的請求連接用 accept()函數(shù),其中運用到了線程,創(chuàng)建線程函數(shù)pthread_create()用來處理客戶的的請求。 exit(0)。server_addr,sizeof(server_addr))。 = i_addr()。 /* 捆綁 sockfd 描述符到 IP 地址 */ if(bind(sockfd,(struct sockaddr*)amp。 哈爾濱遠東理工學(xué)院學(xué)士學(xué)位論文 14 exit(0)。 exit(0)。 while(1) { int i=0。client_addr, amp。 exit(0)。 i++。 pthread_create(amp。accefd)。 前臺管理模塊 前臺管理模塊主要查看餐臺空閑信息,和打印賬單兩部分組成。同樣,當顧客結(jié)賬時點擊按鈕觸發(fā)槽函數(shù)打印賬單給顧客查看,同時將 Button 的文本信息設(shè)置為“ 2 人桌”,賬單是用 QListWidget 類來顯示。 static bool a = true。 a = false。 int i=0。 //將客人消費情況添加到賬單列表 QListWidget *list = new QListWidget。 listinsertItem(0,str1)。 memset(a,0,sizeof(a))。 listinsertItem(i+1,QString(tr(menu1[i].name)+tr( )+tr(a)))。 i++。 char af[10]。 (QString(%1).arg(sum))。 listinsertItem(i+1,str2+a)。 //添加當前時間到賬單 time_t lt。 char aa[80]。 sprintf(aa,%s,ctime(amp。 listinsertItem(i+2,QString(tr(aa)))。 a = true。 首先創(chuàng)建套接字描述符 Socket()函數(shù),然后連接服務(wù)器 connect()。server_addr,sizeof(server_addr))。 = i_addr()。 /* 客戶程序發(fā)起連接請求 */ if(connect(sockfd,(struct sockaddr *)amp。再 send()將開臺信息發(fā)送到服務(wù)器。 tableNumber=()。 diancshow()。 SeleteList[0].buffer[1]=tableNumber。 star=false。} } 菜單列表是從數(shù)據(jù)庫列表中獲取的,首先用 QSqlDatabase 類中的 addDatabase()成員函數(shù)加載數(shù)據(jù)庫驅(qū)動,然后用 setDatabaseName()成員函數(shù)指明的數(shù)據(jù)庫名稱, 在用 open()成員函數(shù)打開并獲取菜單信息用 QLable 類組件顯示。//加載數(shù)據(jù)庫驅(qū)動 (database)。 } QSqlQuery query。 點菜功能實現(xiàn)主要是當選擇按鈕按下時,觸發(fā)的槽函數(shù) slotImButton(),實現(xiàn)菜品選擇功能,將選擇菜的信息添加入已選列表,并存入 SeleteList 中,分為提交前選菜和提交后加菜兩部分。 QString listText =imLabeltext()。 QString listText2=spinBoxtext()。 text =listText1+listText。 text +=listText2。 spinBoxsetValue(1)。 int s =okListcount()1。jm。 strcpy(SeleteList[s].nam,())。 SeleteList[s].pric=MenuBook[j].Price。 if(pro==false) //加菜 { static int ss=0。 additem[ss].addnum=()。 printf(name:%s num: %d \n,additem[ss].addnam,additem[ss].addnum)。 } } } } 當刪除按鈕按下時,觸發(fā)的槽函數(shù) slotDelete(),實現(xiàn)提交前從已選列表及 SeleteList中刪除,提交后刪菜功能。 else del=true。 int cou =okListcount()。 //獲取當前選擇項目,并將其從已選列表和 SeleteList 中刪除 QListWidgetItem *item =okListtakeItem(okListcurrentRow())。 int f。fcou。 memset(SeleteList[cou].nam,0,sizeof(SeleteList[cou].nam))。 ipric=SeleteList[cou].num*SeleteList[cou].pric。 ipric=0。mokListcount()。 printf(ipric:%d \n,ipric)。 strcpy(additem[0].addnam,())。 additem[0].bufer[1]=tableNumber。 for(m=0。m++) additem[0].addnam[m]=39。 send(sockfd,additem,sizeof(additem),0)。} } 當提交按鈕按下時,觸發(fā)的槽函數(shù) on_listOkButton_clicked(),實現(xiàn)將選擇的菜品信息seletelist 結(jié)構(gòu)體 send()發(fā)送至服務(wù)器的功能。 //將選擇的菜發(fā)送至服務(wù)器 if(pro==true) { SeleteList[0].buffer[0]=2。 send(sockfd,SeleteList,sizeof(SeleteList),0)。 additem[0].bufer[1]=tableNumber。 int ii=0。additem[ii].addnum!=0。 memset(additem,0,sizeof(additem))。 ipric=0。mokListcount()。 QMessageBox::about(this,ok,tr(提交完成 ))。 } 當結(jié)賬按鈕按下時,觸發(fā)此槽函數(shù) on_listPayButton_clicked(),結(jié)算清單, send()發(fā)送至服務(wù)器。} else { //建立消息框 QDi
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1