程序語言設計課程設計郭永濤酒店住房信樣本_第1頁
程序語言設計課程設計郭永濤酒店住房信樣本_第2頁
程序語言設計課程設計郭永濤酒店住房信樣本_第3頁
程序語言設計課程設計郭永濤酒店住房信樣本_第4頁
程序語言設計課程設計郭永濤酒店住房信樣本_第5頁
已閱讀5頁,還剩36頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

一、題目(問題)描述模仿酒店住房信息管理系統(tǒng)程序,進入系統(tǒng),目錄有登記入住,查詢房間入住,查詢當前費用,結(jié)賬退房,協(xié)助闡明,關(guān)于,保存當前信息,退出系統(tǒng)。系統(tǒng)中涉及各種信息,程序運營成果對的,操作以便,邏輯層次清晰。如圖1解:圖1酒店住房信息管理系統(tǒng)二、功能分析通過體驗并分析后得出酒店住房信息管理系統(tǒng)重要功能涉及:1.登記入住;2.查詢房間入??;3.查詢當前費用;4.結(jié)賬退房;5.協(xié)助闡明;6.關(guān)于;0.退出.三、系統(tǒng)設計1.程序總體構(gòu)造程序中由主模塊負責協(xié)調(diào)各功能模塊工作。進入程序后,依照輸入操作,執(zhí)行相應讀入、查詢、排序、增長、刪除、顯示當前信息、保存、顯示平均成績、退出等功能,并在屏幕上輸出。酒店信息管理系統(tǒng)酒店信息管理系統(tǒng)登記入住查詢當前費用查詢房間入住結(jié)賬退房協(xié)助闡明關(guān)于退出圖2酒店住房信息管理系統(tǒng)總體構(gòu)造圖2.界面設計如圖3,下面Choose:表達通過選取1、2、3、4、5、6、0等來進入各項功能,從而實現(xiàn)程序?qū)π畔⒐芾?。圖3管理信息界面3.輸入方式設計此程序為dos下程序,因而簡化為鍵盤控制。1、2、3、4、5、6、0分別表達各項功能?;剀嚤磉_確認進入各個程程序;主頁面開始之后,鍵入:1.登記入?。?.查詢房間入住;3.查詢當前費用;4.結(jié)賬退房;5.協(xié)助闡明;6.關(guān)于;0.退出.4.重要數(shù)據(jù)數(shù)據(jù)構(gòu)造設計酒店住房信息管理系統(tǒng)構(gòu)造typedefstructtmtm;/*structtm命名為tm*/typedefstructnode/*把struct命名為node*/{void*elem;/*無類型指針類型成員*/structnode*next;/*指針類型成員存儲*/}node_t;/*指針地址*/typedefstructroom/*房間構(gòu)造*/{introom_number;/*房間號*/Boolroom_is_used;/*房間已使用*/Typeroom_kind;/*房間種類*/charguest_name[20];/*客人姓名*/charguest_Id[19];/*省份證號*/doubleroom_price;/*房間價格*/tm*start_time;/*入住時間*/tm*end_time;/*退房時間*/doubletotal_cost;/*共計消費金額*/}room_t;5.函數(shù)設計文獻中函數(shù)功能如下:文獻名函數(shù)原型函數(shù)功能“filemenu.c”voidwelcome()顯示歡迎頁面voidmenu()主菜單頁面voidlocateposition();定位光標voidanimal();顯示一種小動畫voidanimation();顯示另一動畫voidmenu();菜單項voidgoodbai()完畢時退出程序voidpriceinfo()顯示房間價格四、核心技術(shù)、難點及其解決辦法此程序核心是與否有保存功能,并且是保存把信息保存到文獻中后退出程序,當再次進入程序是與否能查找到上次登陸是錄入信息,尚有就是當系統(tǒng)要查找、刪除信息是如何擬定程序中與否有你要查找、刪除信息,來驗證系統(tǒng)中與否存在所要信息。五、測試辦法1.按鍵測試。檢核對的輸入時,與否界面對的體現(xiàn);錯誤輸入時,與否無效。2.程序運營測試。對的運營,觀測與否異常;運營時中斷,程序與否對的退出。六、總結(jié)通過這次課程設計,使我受到了一次用專業(yè)知識、專業(yè)技能分析和解決問題全面系統(tǒng)鍛煉。對某些基本知識有了更規(guī)范結(jié)識。讓我理解到構(gòu)造化設計有關(guān)知識在實際方面應用操作,讓我更深刻理解“自頂向下,逐漸細化”思想;模塊設計,各種函數(shù)并用;代碼重要性及注釋核心性。使我在綜合知識選用方面,在應用軟件開發(fā)基本思想、辦法方面,以及在慣用編程設計思路技巧掌握方面都能向前邁了一大步。此外,我深深地體現(xiàn)到進行軟件開發(fā)不是一件簡樸事情,它需要設計者具備全面專業(yè)知識、縝密思維、嚴謹工作態(tài)度以及較高分析問題、解決問題能力,而我在諸多方面尚有欠缺。最后,我要衷心感謝教師在我設計過程中予以我極大協(xié)助,使我可以及時、順利地完畢本次課程設計。同步,也要感謝我指引教師和同窗們在本系統(tǒng)設計過程中予以我支持和協(xié)助。附1、使用闡明:1.功能闡明.此程序分為7個選項,分別是登記入住、查詢房間入住、查詢當前費用、查詢當前費用、結(jié)賬退房、協(xié)助闡明、關(guān)于、退出等功能,當選1時是進入登記入住功能,2是進入查詢房間入住功能,3是進入查詢當前費用功能,4是結(jié)賬退房功能、5是顯示協(xié)助闡明功能、6是顯示關(guān)于信息功能,0是退出系統(tǒng)功能。2.顧客手冊..顯示主菜單后鍵入數(shù)字: 1.登記入??;2.查詢房間入住;3.查詢當前費用;4.結(jié)賬退房;5.協(xié)助闡明;6.關(guān)于;0.退出.附2、代碼清單*****************************************************************“filemenu,c”******************************************************************#include<stdio.h>#include<stdlib.h>#include<time.h>#include<math.h>#include<conio.h>#include<ctype.h>#include<string.h>#include<windows.h>#defineROOM_MAX100#defineTYPE_NUM4#defineWIDTH80#defineHIGH25typedefstructtmtm;typedefenum{False,True}Bool;typedefenum{Single,Standard,Vip,President}Type;typedefstructnode{void*elem;structnode*next;}node_t;/*房間構(gòu)造*/typedefstructroom{introom_number;Boolroom_is_used;Typeroom_kind;charguest_name[20];charguest_Id[19];doubleroom_price;tm*start_time;tm*end_time;doubletotal_cost;}room_t;voidwelcome();voidmenu();voidlocate_position();voidanimal();voidanimation(intx);voidgoodbye();node_t*list_init();node_t*list_add(node_t*head,void*elem);node_t*list_del(node_t*head,node_t*dest);node_t*list_for_each(node_t*head,void*(*func)(node_t*head,node_t*cur,void*arg),void*arg);node_t*list_reverse(node_t*head);voidlist_destory(node_t*head);void*mprint(node_t*head,node_t*cur,void*arg);void*madd(node_t*head,node_t*cur,void*arg);void*mdel(node_t*head,node_t*cur,void*arg);voidroom_add(node_t*head,room_thotal[TYPE_NUM][ROOM_MAX]);voidroom_del(node_t*head);voidprice_info();intincrease_two(inti);doubleprice_of_room(Typekind);char*Type_to_string(Typekind);char*Bool_to_string(Bool_bool_);room_t*get_first_room(room_thotal[ROOM_MAX],Typekind);/***increase_two**@i要自增數(shù)*調(diào)用一次增長2*/intincrease_two(inti){returni+2;}/***price_of_room**@kind房間類型*依照房間類型得到房間單價*/doubleprice_of_room(Typekind){returnpow(2,(int)kind)*100;}/***定位光標*@x要定位列數(shù)*@y要定位行數(shù)*無返回值**調(diào)用API,定位光標位置,比用空格,Tab,回車定位以便許多*/voidlocate_position(intx,inty){COORDC;C.X=x;C.Y=y;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),C);}/***welcome*顯示歡迎界面(總菜單界面大某些內(nèi)容)*列出顧客可進行操作*每次任務完畢后,再次調(diào)用些界面*/voidwelcome(){intposition=4;locate_position(25,3);printf("酒店房間登記與計費管理系統(tǒng)");locate_position(30,position=increase_two(position));printf("1:登記入住");locate_position(30,position=increase_two(position));printf("2:查詢房間入住");locate_position(30,position=increase_two(position));printf("3:查詢當前費用");locate_position(30,position=increase_two(position));printf("4:結(jié)賬退房");locate_position(30,position=increase_two(position));printf("5:協(xié)助闡明");locate_position(30,position=increase_two(position));printf("6:關(guān)于");locate_position(30,position=increase_two(position));printf("0:退出");locate_position(27,position=increase_two(position));printf("請選取要辦理業(yè)務\n");}voidgoodbye(){charis_leave='i';charstr[15]="color0";charstr_color[2];intcolor;time_ttTime;tm*tBlock;locate_position(33,10);printf("確認退出(Y/N)?");while(is_leave!='Y'&&is_leave!='N'){is_leave=kbhit()?toupper(getch()):'m';animal(1);animation(6);animal(18);animation(19);animal(20);animation(21);animal(22);animation(23);strcpy(str,"color0");color=rand()%8+8;itoa(color,str_color,16);strcat(str,str_color);system(str);locate_position(29,4);tTime=time(NULL);tBlock=localtime(&tTime);printf("%s%2d:%02d:%02d",__DATE__,tBlock->tm_hour,tBlock->tm_min,tBlock->tm_sec);locate_position(33,10);printf("確認退出(Y/N)?");_sleep(1000);}if(toupper(is_leave)=='Y'){locate_position(30,13);printf("謝謝使用,歡迎下次來訪!");locate_position(0,0);getch();exit(0);}else{system("cls");menu();}}/***price_info**無參數(shù),顯示房間價格*/voidprice_info(){intposition=1;intweidth=20;printf("\n----------------房間收費如下------------------");locate_position(weidth,position=increase_two(position));printf("1:%-20s[單間]%10.2f",Type_to_string((Type)0),price_of_room((Type)0));locate_position(weidth,position=increase_two(position));printf("2:%-20s[標準間]%10.2f",Type_to_string((Type)1),price_of_room((Type)1));locate_position(weidth,position=increase_two(position));printf("3:%-20s[VIP房間]%10.2f",Type_to_string((Type)2),price_of_room((Type)2));locate_position(weidth,position=increase_two(position));printf("4:%-20s[總統(tǒng)套房]%10.2f",Type_to_string((Type)3),price_of_room((Type)3));locate_position(weidth+6,position=increase_two(position));printf("從中午十二點到第二天中午十二點算一天\n");locate_position(weidth+12,position=increase_two(position));printf("局限性一天按一天算");_sleep(3000);}/***animation*展示一種小動畫*@x在第幾行展示*其中隨著時間流逝,>>>>>>>不斷向右移動*/voidanimation(intx){staticinti=1;locate_position(1,x);printf("=============================================================================");locate_position(i%(WIDTH-5),x);printf(">>>>>");i+=3;if(i>WIDTH-5){i=1;}}/***和上面函數(shù)相似,這次是向左*/voidanimal(intx){staticinti=74;locate_position(1,x);printf("-----------------------------------------------------------------------------");locate_position(i%(WIDTH-5),x);printf("<<<<<");i-=5;if(i<0){i=WIDTH-6;}}/***menu*菜單項**沒有參數(shù),顯示菜單界面*依照不同選項,進入不同子模塊*/voidmenu(){intcolor;inti=0,j;charstr[15];charstr_color[2];charch='m';time_ttTime;tm*tBlock;room_thotal[TYPE_NUM][ROOM_MAX];node_t*head=list_init();memset(&hotal,0,sizeof(room_t)*TYPE_NUM*ROOM_MAX);/*初始化房間信息*/for(i=0;i<TYPE_NUM;i++){for(j=0;j<ROOM_MAX;j++){hotal[i][j].room_number=(i+1)*100+j;hotal[i][j].room_kind=(Type)i;hotal[i][j].room_price=price_of_room((Type)i);if(i*i+j==12){hotal[i][j].room_is_used=True;list_add(head,&hotal[i][j]);}}}srand((unsigned)time(NULL));system("title酒店房間登記與計費管理系統(tǒng)");while(ch!='0'){ch=kbhit()?getch():'m';switch(ch){case'1':system("cls");room_add(head,hotal);system("pause");system("cls");break;case'2':system("cls");printf("\n----------------所有顧客信息如下---------------\n\n");printf("房間號房間類型顧客名顧客證件單價\n");printf("------|----------|-----------|--------------------------|-----------------------\n");list_for_each(head,mprint,NULL);system("pause");system("cls");break;case'3':system("cls");price_info();system("pause");system("cls");break;case'4':system("cls");room_del(head);system("pause");system("cls");break;case'5':system("cls");printf("(1)如下是主頁:請按提示輸入所需服務;(2)輸入提示數(shù)值:1,2,3,4,5,6,0!\n");break;case'6':system("cls");printf("(1)系統(tǒng)時間為機器時間,請調(diào)節(jié)精確時間;(2)存盤為系統(tǒng)存盤;(3)注意輸入格式要有效.\n");break;case'0':system("cls");goodbye();break;default:break;}/*顯示動畫效果*/animal(22);animation(1);animation(23);strcpy(str,"color0");color=rand()%8+8;itoa(color,str_color,16);strcat(str,str_color);system(str);welcome();locate_position(29,4);tTime=time(NULL);tBlock=localtime(&tTime);printf("%s%2d:%02d:%02d",__DATE__,tBlock->tm_hour,tBlock->tm_min,tBlock->tm_sec);locate_position(48,20);_sleep(1000);}}/***list_init*初始化鏈表,這個鏈表為循環(huán)鏈表,有頭結(jié)點*/node_t*list_init(){node_t*head=(node_t*)malloc(sizeof(node_t));head->elem=NULL;head->next=head;returnhead;}/***list_add*向鏈表里面添加結(jié)點**@head鏈表頭結(jié)點*@elem結(jié)點中數(shù)據(jù)*此列表為尾插法*/node_t*list_add(node_t*head,void*elem){node_t*new_node=(node_t*)malloc(sizeof(node_t));new_node->elem=elem;new_node->next=head->next;head->next=new_node;returnnew_node;}/***list_del*刪除列表中元素**@head列表頭結(jié)點*@dest要刪除結(jié)點*給出要刪除結(jié)點,從頭結(jié)點開始找到要刪除結(jié)點,然后刪除*表頭元素不能刪除*/node_t*list_del(node_t*head,node_t*dest){node_t*pre=head;node_t*cur=pre->next;while(cur!=dest){if(cur!=head){pre=pre->next;cur=cur->next;}else{returnhead;}}pre->next=cur->next;/*釋放指針后直接賦值為NULL,防止野指針*free(cur);*cur=NULL;*但是這個地方不能free了,由于它元素包具有房間數(shù)組*而房間還是要用。因此就不能消了。*/returnpre->next;}/***list_for_each*遍歷鏈表**@head鏈表頭結(jié)點*@func函數(shù)指針,對不同遍歷進行不同操作*@arg參數(shù),有時候可以不用,重要是為了向func所指向函數(shù)傳遞參數(shù)*/node_t*list_for_each(node_t*head,void*(*func)(node_t*head,node_t*cur,void*arg),void*arg){node_t*cur=head->next;while(cur!=head){func(head,cur,arg);cur=cur->next;}returnhead;}/***list_reverse*反轉(zhuǎn)鏈表**@head要轉(zhuǎn)鏈表表頭結(jié)點*鏈表調(diào)換過來,本來表頭當前為表尾,但是對于循環(huán)鏈表來說這個操作很簡樸*/node_t*list_reverse(node_t*head){node_t*pre=head;node_t*cur=pre->next;node_t*nxt=cur->next;while(cur!=head){cur->next=pre;pre=cur;cur=nxt;nxt=nxt->next;}cur->next=pre;returnhead;}/***list_destory*銷毀鏈表**@head要銷毀鏈表表頭結(jié)點*程序退出前可以把鏈表銷毀*/voidlist_destory(node_t*head){node_t*cur=head->next;while(cur!=head){head->next=cur->next;free(cur);cur=cur->next;}free(head);}/***mprint*打印結(jié)點內(nèi)容**@head鏈表頭結(jié)點本函數(shù)不用,為了給list_for_each調(diào)用*@cur要打印當前結(jié)點*@arg占位*/void*mprint(node_t*head,node_t*cur,void*arg){printf("%d\t%-15s%-10s%-20s\t\t%4.2f(元/天)\n",((room_t*)(cur->elem))->room_number,Type_to_string(((room_t*)(cur->elem))->room_kind),((room_t*)(cur->elem))->guest_name,((room_t*)(cur->elem))->guest_Id,((room_t*)(cur->elem))->room_price);returnNULL;}/***mdel*刪除給定元素內(nèi)容結(jié)點**@head鏈表頭結(jié)點*@cur要刪除結(jié)點*@arg要刪除結(jié)點中一項內(nèi)容*通過arg,找到要刪除結(jié)點,再調(diào)用list_del刪除結(jié)點*/void*mdel(node_t*head,node_t*cur,void*arg){if(((room_t*)(cur->elem))->room_number==*(int*)arg){list_del(head,cur);}returnNULL;}/***Bool_to_string**@_bool_將給定Bool類型變量返回String值用于輸出*/char*Bool_to_string(Bool_bool_){switch(_bool_){caseFalse:return"False";caseTrue:return"True";default:returnNULL;}}/***Type_to_string**@kind將給定Type類型變量返回String值用于輸出*/char*Type_to_string(Typekind){switch(kind){caseSingle:return"Single";caseStandard:return"Standard";caseVip:return"Vip";casePresident:return"President";default:returnNULL;}}/***get_first_room*得到第一種為空房間**@hotal房間數(shù)組*@kind哪一種類型房間*/room_t*get_first_room(room_thotal[ROOM_MAX],Typekind){inti;for(i=0;i<ROOM_MAX;i++,hotal++){if(!hotal->room_is_used){returnhotal;}}returnNULL;}/***room_add*將要住處房間添加到房間鏈表里面。**@hoad鏈表頭*@hotal整個酒店房間**一方面由房客擬定要居住房間類型*依照類型,調(diào)用get_first_room得到第一種沒有居住房間*再把房間信息填完整,最后加入到房間鏈表里面。*/voidroom_add(node_t*head,room_thotal[TYPE_NUM][ROOM_MAX]){intposition=1;Typekind;time_ttimer=time(NULL);room_t*room_dest;locate_position(30,position=increase_two(position));printf("一共有四種類型房間\n\n");locate_position(25,position=increase_two(position));printf("1:Single[單間]");locate_position(25,position=increase_two(position));printf("2:Standard[標準間]");locate_position(25,position=increase_two(position));printf("3:Vip[VIP房間]");locate_position(25,position=increase_two(position));printf("4:President[總統(tǒng)套房]");locate_position(25,position=increas

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論