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

正文內(nèi)容

基于linux餐廳點菜系統(tǒng)的設(shè)計與開發(fā)畢業(yè)論文(編輯修改稿)

2025-07-15 17:46 本頁面
 

【文章內(nèi)容簡介】 退菜。細分功能如圖34所示。詢問刪菜做完接收菜單后廚管理模塊圖34 后廚終端模塊5.數(shù)據(jù)庫管理:數(shù)據(jù)庫管理管理菜單數(shù)據(jù)庫信息,包括刪除菜單列表、添加菜單列表,查詢菜單等功能。細分數(shù)據(jù)庫管理功能模塊如圖35所示。刪除菜單列表功能是將刪除不做的菜肴信息。添加菜單列表功能是允許可以添加新的菜肴信息。查詢菜單功能是查詢是否有哪道菜肴信息。數(shù)據(jù)庫管理模塊查詢菜譜信息添加菜譜信息刪除菜譜信息圖35 數(shù)據(jù)庫管理模塊3. 4數(shù)據(jù)庫結(jié)構(gòu)設(shè)計 根據(jù)對本系統(tǒng)數(shù)據(jù)的分析,系統(tǒng)的數(shù)據(jù)庫設(shè)計了一個表:菜肴信息表。該表用于存放菜肴的信息,包括菜肴的名字、菜肴的類別、菜肴的價格、菜肴的描述。本章主要對該系統(tǒng)設(shè)計進行了需求分析、功能分析,最后做出詳細設(shè)計方案。設(shè)計中主要將餐廳點菜系統(tǒng)分為五個模塊,每個模塊的需求和實現(xiàn)的功能進行了闡述和詳細設(shè)計過程分析。第4章 軟件設(shè)計軟件采用面向?qū)ο竦脑O(shè)計方法,考慮到對計算效率的要求,采用C++編程語言,開發(fā)環(huán)境為Linux RedHat 企業(yè)版5,服務(wù)器編譯工具為gcc,其余編程工具為g++編譯器,采用C++標準庫函數(shù)和QT類庫。 數(shù)據(jù)庫表結(jié)構(gòu)設(shè)計本系統(tǒng)數(shù)據(jù)庫中建立了一張菜單信息表,該表詳細結(jié)構(gòu)如圖表41所示。表41 菜單信息表名稱類型(長度)空屬性Idvarchar(20)nouniqueIddvarchar(20)yesNamevarchar(20)yesPricevarchar(20)yesImagepathvarchar(20)yesAboutvarchar(20)yes 各功能模塊的詳細設(shè)計本系統(tǒng)有五個模塊組成,分別為server(服務(wù)器),前臺管理模塊,顧客點菜管理模塊,后廚管理模塊,數(shù)據(jù)庫管理模塊等。 服務(wù)器管理模塊服務(wù)器模塊主要是用C語言編寫的,主要是為其他模塊間的通信。其中主要運用到TCP/IP協(xié)議通信的。運用到了TCP/IP協(xié)議函數(shù),首先socket()函數(shù)獲得套接字描述符,然后用bind()函數(shù)將描述符捆綁到IP上,監(jiān)聽listen()函數(shù),其中可以設(shè)置客戶端的個數(shù)。然后就是等待客戶端的請求連接用accept()函數(shù),其中運用到了線程,創(chuàng)建線程函數(shù)pthread_create()用來處理客戶的的請求。主要實現(xiàn)代碼如下: if((sockfd = socket(AF_INET,SOCK_STREAM,0)) == 1){perror(Socket error!)。exit(0)。}/* 服務(wù)器端填充 sockaddr_in結(jié)構(gòu) */bzero(amp。server_addr,sizeof(server_addr))。 = AF_INET。 = inet_addr()。 = htons(portnumber)。/* 捆綁sockfd描述符到IP地址 */if(bind(sockfd,(struct sockaddr*)amp。server_addr,sizeof(server_addr)) == 1){perror(Bind error!)。exit(0)。}/* 設(shè)置允許連接的最大客戶端數(shù) */if(listen(sockfd,10) == 1){perror(Listen error!)。exit(0)。}address_size = sizeof(client_addr)。while(1){int i=0。/* 服務(wù)器阻塞,等待客戶程序建立連接 */if((accefd = accept(sockfd,(struct sockaddr*)amp。client_addr,amp。address_size)) == 1){perror(Accept error!)。exit(0)。}sock_accept[i] =accefd。i++。/*創(chuàng)建線程,處理客戶端請求*/pthread_t tid。pthread_create(amp。tid,0,run,amp。accefd)。/*服務(wù)器主程序返回繼續(xù)等待下一次客戶端連接*/}close(sockfd)。 前臺管理模塊 前臺管理模塊主要查看餐臺空閑信息,和打印賬單兩部分組成。餐臺空閑信息主要是根據(jù)Button組件文本顯示判斷的是否是空閑狀態(tài),空閑時,當顧客來時如空閑點擊按鈕就connect()觸發(fā)了槽函數(shù)table1(),其中槽函數(shù)中用到Button類的成員函數(shù)setText(),將button的文本信息設(shè)置為“1號有人”。同樣,當顧客結(jié)賬時點擊按鈕觸發(fā)槽函數(shù)打印賬單給顧客查看,同時將Button的文本信息設(shè)置為“2人桌”,賬單是用QListWidget類來顯示。主要實現(xiàn)代碼如下:void foregroundDialog::table1(){ QTextCodec::setCodecForTr(QTextCodec::codecForName(utf8))。static bool a = true。if(a){button1setText(tr(1號有人))。a = false。}else//結(jié)帳{shou()。int i=0。double sum=0。//將客人消費情況添加到賬單列表QListWidget *list = new QListWidget。QString str1 = QString(tr(菜名 價格 數(shù)量))。listinsertItem(0,str1)。while(menu1[i].num!=0){char a[50]。memset(a,0,sizeof(a))。sprintf(a,%d %d ,menu1[i].price,menu1[i].num)。listinsertItem(i+1,QString(tr(menu1[i].name)+tr( )+tr(a)))。sum+=menu1[i].price*menu1[i].num。i++。}QString a。char af[10]。sprintf(af,%d,menu1[0].buff[1])。(QString(%1).arg(sum))。QString str2 = QString(tr(桌號:)+tr(af)+tr(共計))。listinsertItem(i+1,str2+a)。listshow()。//添加當前時間到賬單time_t lt。lt =time(NULL)。char aa[80]。memset(aa,0,sizeof(aa))。sprintf(aa,%s,ctime(amp。lt))。listinsertItem(i+2,QString(tr(aa)))。button1setText(tr(1號(2人桌)))。a = true。} 顧客點菜端管理模塊點菜端是顧客從前臺獲知該餐桌空閑,則開臺,并開始點菜,點菜界面可以根據(jù)菜譜信息點擊選擇按鈕,如果需要刪除可以點擊刪除按鈕,當確認后點擊提交按鈕就將顧客點菜信息發(fā)送到服務(wù)器,服務(wù)器并發(fā)送到后廚。首先創(chuàng)建套接字描述符Socket()函數(shù),然后連接服務(wù)器connect()。主要代碼實現(xiàn)如下:/* 客戶程序建立 sockfd描述符 */if((sockfd=socket(AF_INET,SOCK_STREAM,0)) == 1)/* 客戶程序填充服務(wù)端的資料 */bzero(amp。server_addr,sizeof(server_addr))。 = AF_INET。 = inet_addr()。 = htons(portnumber)。/* 客戶程序發(fā)起連接請求 */if(connect(sockfd,(struct sockaddr *)amp。server_addr,sizeof(struct sockaddr)) == 1)開臺界面有兩個選擇都是用QComboBox類,可以選擇現(xiàn)在是幾號桌和人數(shù),點擊開臺Button同樣觸發(fā)槽函數(shù)slotOkButton()的發(fā)生,會讓點菜界面顯示用到QWidget類中的成員show()函數(shù)。再send()將開臺信息發(fā)送到服務(wù)器。點擊主要實現(xiàn)代碼如下:void weleDialog::slotOkButton() //開臺{ if(star==true) { QString st=numberComboBoxcurrentText()。 tableNumber=()。 diancaiDialog *dianc = new diancaiDialog。 diancshow()。 SeleteList[0].buffer[0]=1。 SeleteList[0].buffer[1]=tableNumber。 send(sockfd,SeleteList,sizeof(SeleteList),0)。 star=false。 } else {。}}菜單列表是從數(shù)據(jù)庫列表中獲取的,首先用QSqlDatabase類中的addDatabase()成員函數(shù)加載數(shù)據(jù)庫驅(qū)動,然后用setDatabaseName()成員函數(shù)指明的數(shù)據(jù)庫名稱,在用open()成員函數(shù)打開并獲取菜單信息用QLable類組件顯示。主要實現(xiàn)代碼如下:QSqlDatabase data = QSqlDatabase::addDatabase(QSQLITE)。//加載數(shù)據(jù)庫驅(qū)動 (database)。 //指明數(shù)據(jù)庫名稱 //打開數(shù)據(jù)庫if(!()){ QMessageBox::critical(0, QObject::tr(Datebase error), ().text())。}QSqlQuery query。(select *from menubook)。點菜功能實現(xiàn)主要是當選擇按鈕按下時,觸發(fā)的槽函數(shù)slotImButton(),實現(xiàn)菜品選擇功能,將選擇菜的信息添加入已選列表,并存入SeleteList中,分為提交前選菜和提交后加菜兩部分。主要代碼實現(xiàn)如下: void diancaiDialog::slotImButton() //選擇{ static int n=0。 QString listText =imLabeltext()。 QString listText1 =im1Labeltext()。 QString listText2=spinBoxtext()。 QString text。 text =listText1+listText。 text +=\t。 text +=listText2。 okListinsertItem(n,text)。 spinBoxsetValue(1)。 okListsetCurrentRow(0)。 int s =okListcount()1。 //遍歷MenuBook,查找與宣傳顯示相同名稱的菜,并將其信息存入 SeleteList或additem for(int j=0。jm。j++) { if(listText==MenuBook[j].Name) { QByteArray ba=MenuBook[j].()。 strcpy(SeleteList[s].nam,())。 SeleteList[s].num=()。 SeleteList[s].pric=MenuBook[j].Price。 printf(add: %s \n,SeleteList[s].nam)。 if(pro==false) //加菜 { static int ss=0。 strcpy(additem[ss].addnam,())。 additem[ss].addnum=()。 additem[ss].addpric=MenuBook[j].Price。 printf(name:%s num: %d \n,additem[ss].addnam,additem[ss].addnum)。 ss++。 } } }}當刪除按鈕按下時,觸發(fā)的槽函數(shù)slotDelete(),實現(xiàn)提交前從已選列表及SeleteList中刪除,提交后刪菜功能。主要實現(xiàn)代碼如下:void diancaiDialog::slotDelete() //刪除{ if(okListcount()==0) del=false。 else del=true。 if(del==true) { QString text =okListcurrentItem()text()。 int cou =okListcount()。 int row =okListcurrentRow()。 //獲取當前選擇項目,并將其從已選列表和SeleteList中刪除 QListWidgetItem *item =okListtakeItem(okListcurrentRow())。 delete item。 int f。 for(f=cou
點擊復制文檔內(nèi)容
教學教案相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1