CC語言程序報告課程設計.doc_第1頁
CC語言程序報告課程設計.doc_第2頁
CC語言程序報告課程設計.doc_第3頁
CC語言程序報告課程設計.doc_第4頁
CC語言程序報告課程設計.doc_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

湖北汽車工業(yè)學院電氣與信息工程學院 語言程序設計 C 語言程序設計 實訓報告 實訓題目: 實訓題目: 酒店房間登記與計費管理 專業(yè): 專業(yè): 班級: 班級: 姓名: 姓名: 成績: 成績: 計算機科學與技術 T9231 T9231 李洋 吳卿 一,需求分析 1,問題 根據需求,該系統(tǒng)所應包含的信息有以下一些: 酒店房間登記與計費管理基本信息 客戶姓名,身份證,入住時間,離開時間,房間號,房間價格 根據需求,該系統(tǒng)所應實現的功能有以下一些: 各種基本數據的錄入.如:客戶基本信息錄入. 基于各種數據的查詢.例如輸入客戶信息,然后查詢. 2,系統(tǒng) 采用 C 語言實現,開發(fā)環(huán)境為 VC,可以運行在操作系統(tǒng) windows98 及以上皆可. 3,運行要求 能不受限制的錄入通訊錄信息 界面友好,操作方便,例如刪除前需要提示用戶是否刪除 容錯性強,例如數據導出時,如果文件不存在需要提示用戶. 二,總體設計 1,系統(tǒng)流程設計 根據系統(tǒng)要求,設計如下的系統(tǒng)流程菜單顯示 用戶輸入操作 退出 判斷用戶選擇的操作 執(zhí)行相應的操作 退出 2,系統(tǒng)模塊設計 根據系統(tǒng)的功能設計,如下模塊 酒店管理與登記 主界面模塊:完成系統(tǒng)菜單的顯示 主 界 面 顯 示 擇 選 能 功 入 客輸 戶入 信客 息戶 錄信 息 況 客 客 戶 戶 入 入 住 住 情 情 況 入 客 戶 信 息 導 功能選擇模塊:根據用戶的選擇,完成其相應的功能 客戶信息錄入界面輸入客戶信息,保存入系統(tǒng)的功能 客戶住宿情況:判別客戶能否入住 三,詳細設計 1,數據結構設計 根據系統(tǒng)要求,系統(tǒng)中需要保存的數據有通訊錄的信息,其結構如下: 數據項名稱 姓名 身份證 入住(退房)時間 費用 數據項系統(tǒng)表示 name Id date Expensive 數據類型 字符串 Double 型 整型 整型 數據長度 20 18 10 6 備注 所住時間 房間價格 房間序號 time Price Number 字符型 整形 整形 10 6 6 2,界面設計 主界面: 在每個菜單前顯示該菜單項對應的數字 用戶輸入菜單項前面的數字,主菜單消失,進入該模塊的相應界面,進行相應的操作,完成后,回到 主界面. 運行此程序后得到此界面: 主界面 輸入所要進行的操作: (所輸入的選擇為 1) 輸 入 2 : 按提示執(zhí)行: 沒有其他的客戶入住,則按 0 即可根據提示退出. 返回主界面: 按 3 后 : 根據提示后返回,到達主界面: 后 按 4 : 輸 入 2010 后 得 到 此 界 面 : 根據提示進行操作即可退出 以進行以后的操作: /*當輸入錯誤時*/ (01) 身份證錯誤 所出現的界面 (02) 時間輸入錯誤 所出現的界面 (03) 房間號輸入錯誤 所出現的界面 (4) 房間號輸入錯誤 所出現的界面 3,模塊實現 主界面實現:調用 printf()函數,在屏幕上打印需要顯示的字符信息,需 功能選擇模塊實現: 接受從鍵盤輸入的菜單選擇,判斷并調用相應的功能函數,完成其對應的功能.實現功能選擇. 客戶信息錄入模塊實現: 模塊說明:從鍵盤接收輸入的客戶信息,在動態(tài)存儲區(qū)中創(chuàng)建通訊錄的節(jié)點,遍歷鏈表,將其插入 到通訊錄鏈表的最后位置. 模塊流程: 清屏 遍歷鏈表 找到最后一個節(jié)點 創(chuàng)建一個新節(jié)點 從鍵盤給新節(jié)點賦值 將新節(jié)點連接到鏈表 的最后一個節(jié)點上 模塊流程: 清屏 輸入需要修改的姓名 遍歷鏈表 將每個節(jié)點與輸入的姓名比較相等 顯示該節(jié)點信息 輸入新信息給該節(jié)點 改變標識變量 判斷標識,顯示是否 修改成功客戶信息輸入模塊實現: 模塊說明:略 模塊流程:略 對應的鏈表:struct kehu_information *creat() 客戶費用查詢: 模塊說明:略 模塊流程:略 對應函數:void allprice(int number,struct time begin,struct time end,struct kehu_information *head) 客戶信息查詢模塊實現: 模塊說明:略 模塊流程:略 對應函數: 四,測試結果 1,錄入通訊錄測試 測試數據: 輸入張三 1234567890123456789 01 90 2010-03-12 測試結果: 程序運行出現錯誤,如下 測試數據: 輸入張三 測試結果: 程序運行正常,正確的插入到鏈表的最后位置 測試數據: 輸入:張三 測試結果: 程序運行不正常,可以將張三 1234567889901234546 012 90 入 1234567889901234546 012 90 1234567889901234546 012 90 五,實訓總結 實訓感想 對系統(tǒng)開發(fā)的總結(設計亮點,存在的不足,需要改進的地方 對系統(tǒng)開發(fā)的總結(設計亮點,存在的不足,需要改進的地方) 這是第一次非常正式的接觸大程序,并且以合作的方式編寫大程序,開始的時候接觸它, 這是第一次非常正式的接觸大程序,并且以合作的方式編寫大程序,開始的時候接觸它,面對如此大 式的接觸大程序 的一個程序(題目很長,提示也很長) 有膽怯和畏懼的心理,真不知道從何處下手.然而, ,有膽怯和畏懼的心理 的一個程序(題目很長,提示也很長) 有膽怯和畏懼的心理,真不知道從何處下手.然而,在第 13 周的 , 星期二,經過張吳波老師的講解后有一點點的信心,知道了首先應該寫出整體的構思和框架圖, 星期二,經過張吳波老師的講解后有一點點的信心,知道了首先應該寫出整體的構思和框架圖,于是和同 伴一起分析,思考,論證.當然其間也遇到了不少的困難和小小的阻力,卻得到了老師們的講解和引導, 伴一起分析,思考,論證.當然其間也遇到了不少的困難和小小的阻力,卻得到了老師們的講解和引導, 困難和小小的阻力 和引導 在此感謝老師. 第十四到第十六周去編寫程序時 首先,我們的方法是先編寫小的程序段, 在此感謝老師.在第十四到第十六周去編寫程序時,首先,我們的方法是先編寫小的程序段,后將這些小 到第十六 的方法是先編寫小的程序段 的程序加以整合,構成一個大的程序,最后系統(tǒng)的構成一個大的程序(既符合題目要求的程序段) 的程序加以整合,構成一個大的程序,最后系統(tǒng)的構成一個大的程序(既符合題目要求的程序段) 這算 的程序 目要求的程序段 . 是一個編寫大的實訓的基本的經過吧! 是一個編寫大的實訓的基本的經過吧! 通過此次和伙伴一起編寫大的程序,收獲頗多,感想也是頗多,獲益同樣是頗多. 通過此次和伙伴一起編寫大的程序,收獲頗多,感想也是頗多,獲益同樣是頗多.首先我們基本上可 以說將以前的知識進行了又一次的復習和回味,將書本再過了一遍.第二, 以說將以前的知識進行了又一次的復習和回味,將書本再過了一遍.第二,我們從此次的編寫大程序中明 白了編寫大的程序的過程和一些基本的流程先分析后編程-最后檢驗.第三, 白了編寫大的程序的過程和一些基本的流程先分析后編程-最后檢驗.第三,從此 先分析后編程-最后檢驗 次實際的編寫中我們也發(fā)現了自身的一些問題-知識上的一些缺乏,打字速度的緩慢, 次實際的編寫中我們也發(fā)現了自身的一些問題-知識上的一些缺乏,打字速度的緩慢,分析錯誤和修改 -知識上的一些缺乏 錯誤的能力的局限性. 錯誤的能力的局限性. 在編寫大的程序的時候,總會遇到一些困難和阻力的,首先要正視它,然后在藐視它,不應該懼怕它, 在編寫大的程序的時候,總會遇到一些困難和阻力的,首先要正視它,然后在藐視它,不應該懼怕它, 最重要的是編寫大的程序要注意和伙伴的緊密的配合.另外要注意當程序出現錯誤,后修改程序的方法 最重要的是編寫大的程序要注意和伙伴的緊密的配合.另外要注意當程序出現錯誤,后修改程序的方法 先看出錯的位置,加以修改,若正確則表明修改正確,若未出現所希望得到的程序, 先看出錯的位置,加以修改,若正確則表明修改正確,若未出現所希望得到的程序,則需要用調試 先看出錯的位置 則表明修改正確 的方法加以分析,歸納,在加以判斷修改.當然修改程序的時間花的較長,也較為枯燥,需要忍耐, 的方法加以分析,歸納,在加以判斷修改.當然修改程序的時間花的較長,也較為枯燥,需要忍耐,在此 謝謝伙伴的支持與陪伴. 謝謝伙伴的支持與陪伴. 希望以后還有這樣的機會和時間, 和同伴一起編寫程序, 以此對這類題目加深對這類題目熟悉與熟練, 希望以后還有這樣的機會和時間, 和同伴一起編寫程序, 以此對這類題目加深對這類題目熟悉與熟練, 語言代碼. 能在以后能快速而熟練的編寫此類的 C 語言代碼. 六,附錄 程序源代碼 #include #include #include #include struct hotel_list int number; int price; room10= 2001,60,2002,65, 2003,70,2004,75, 2005,80,2006,85, 2007,90,2008,95, 2009,100,2010,105 ; struct struct time int year; int month; int day; ; struct kehu_information char name20; char ID20; struct time begin; struct time end; int num; int daytime; int price; int expense; struct kehu_information * next; ; /*定義一個結構體保存客戶的信息*/ /*定義一個結構體保存客戶的信息*/ 定義一個結構體保存客戶的信息 /定義日期結構 /定義日期結構 /定義房間結構并賦除值 /定義房間結構并賦除值 int menu_show(); 單顯示*/ 單顯示*/ struct /*創(chuàng)建鏈表,輸入客戶信息*/ /*創(chuàng)建鏈表,輸入客戶信息*/ 創(chuàng)建鏈表 void check(int number,struct kehu_information kehu_information kehu_information /*菜 /*菜 *creat(); *head); /*查詢房間入住情況*/ /*查詢房間入住情況*/ 查詢房間入住情況 void allprice(int number,struct time begin,struct time end,struct kehu_information *head); end,struct 統(tǒng)計客戶所付的總費用*/ 統(tǒng)計客戶所付的總費用*/ int tiannum(struct time begin); 詢某月份的具體天數*/ 詢某月份的具體天數*/ int yanzheng(struct kehu_information *p,struct kehu_information *head); /*求 /*求 /*驗證該房間是否有人住*/ /*驗證該房間是否有人住*/ int yue(struct time p); 某月份的天數*/ 某月份的天數*/ xianshi()/*顯示房間號和價格 void xianshi()/*顯示房間號和價格 */ int i; printf( 房間信息); printf(n 房間信息); printf( printf(n for(i=0;i10;i+) printf( /主函數 /主函數 main() /*定義鏈表的頭節(jié)點 定義鏈表的頭節(jié)點*/ struct kehu_information * head=NULL; /*定義鏈表的頭節(jié)點*/ int i,num,chioce; char c1,c2,c3,c4; struct time p1,p2; system(cls); system(cls); /*清屏*/ /*清屏*/ 清屏 %4d %6d %6dn,roomi.number,roomi.price); 房間號 房間價格 房間價格n); /*查 /*查 /* /*無限循環(huán) 無限循環(huán)*/ while(1) /*無限循環(huán)*/ chioce=menu_show(); switch(chioce) case 1: system(cls); xianshi(); break; case 2: system(cls); head=creat(); break; case 3: system(cls); system(cls); printf( 查詢房間信息); printf(n 查詢房間信息); printf( 請輸入要查詢的房間號: printf(n 請輸入要查詢的房間號: ); scanf(%d,&num); for(i=0;i0&n9) n=n/10; i+; return i; begin)/*計算天數 計算天數*/ int tian(struct time begin)/*計算天數*/ int k,leap1,day1; int tab213= 0,31,28,31,30,31,30,31,31,30,31,30,31, 0,31,28,31,30,31,30,31,31,30,31,30,31, 0,31,29,31,30,31,30,31,31,30,31,30,31 ; leap1=(begin.year)%4=0&(begin.year)%100!=0|(begin.year)%400=0); day1=begin.day; for(k=1;k(begin.month);k+) day1=day1+tableap1k; return day1; int yue(struct time p) int i,leap,n; int tab213= 0,31,28,31,30,31,30,31,31,30,31,30,31, 0,31,29,31,30,31,30,31,31,30,31,30,31 ; leap=(p.year)%4=0&(p.year)%100!=0|(p.year)%400=0); if(leap=1) for(i=1;i13;i+) if(p.month=i) if(p.month=i) n=tab1i; else for(i=1;iname,name); printf(n 請輸入客戶的身份證號: ); rintf( 請輸入客戶的身份證號: scanf(%s,s); n=strlen(s); while(n!=15&n!=18) printf(身份證號輸入有誤! 請重新輸入: printf(身份證號輸入有誤!n 請重新輸入: ); 身份證號輸入有誤 scanf(%s,s); n=strlen(s); strcpy(pstrcpy(p-ID,s); printf(請輸入客戶的開始入住時間: printf(請輸入客戶的開始入住時間: ); 請輸入客戶的開始入住時間 scanf(%d%c%d%c%d,&m1.year,&e1,&m1.month,&f1,&m1.day); scanf(%d%c%d%c%d,&m1.year,&e1,&m1.month,&f1,&m1.day); n=len(m1.year)+len(m1.month)+len(m1.day)+2; while(n!=10)|(e1!=while(n!=10)|(e1!=-) printf(輸入開始時間格式有誤! 請重新輸入: printf(輸入開始時間格式有誤!n 請重新輸入: ); 輸入開始時間格式有誤 scanf(%d%c%d%c%d,&m1.year,&e1,&m1.month,&f1,&m1.day); n=len(m1.year)+len(m1.month)+len(m1.day)+2; while(m1.dayyue(m1)|m1.dayyue(m1)|m1.daybegin=m1; printf(請輸入客戶的退房時間: printf(請輸入客戶的退房時間: ); 請輸入客戶的退房時間 scanf(%d%c%d%c%d,&m2.year,&e2,&m2.month,&f2,&m2.day); n=len(m2.year)+len(m2.month)+len(m2.day)+2; n=len(m2.year)+len(m2.month)+len(m2.day)+2; while(n!=10)|(e2!=while(n!=10)|(e2!=-) printf(輸入結束時間格式有誤! 請重新輸入: printf(輸入結束時間格式有誤!n 請重新輸入: ); 輸入結束時間格式有誤 scanf(%d%c%d%c%d,&m2.year,&e2,&m2.month,&f2,&m2.day); n=len(m2.year)+len(m2.month)+len(m2.day)+2; while(m2.dayyue(m2)|m2.dayend=m2; printf(請輸入客戶的入住房間號: printf(請輸入客戶的入住房間號: ); 請輸入客戶的入住房間號 scanf(%d,&num); while(num2010) printf(輸入房間號有誤! 請重新輸入: printf(輸入房間號有誤!n 請重新輸入: ); 輸入房間號有誤 scanf(%d,&num); p-num=num; if(yanzheng(p,head)=1) printf(該房間在此段時間內沒人住! printf(該房間在此段時間內沒人住!n); 該房間在此段時間內沒人住 else while(yanzheng(p,head)!=1) printf(對不起,該房間在此段時間內有人住! 請重新輸入: printf(對不起,該房間在此段時間內有人住!n 請重新輸入: ); 對不起 scanf(%d,&num); p-num=num; printf(該房間在此段時間內沒人住! printf(該房間在此段時間內沒人住!n); 該房間在此段時間內沒人住 for(i=0;iprice=roomi.price; p-daytime=(tian(p-end)-tian(p-begin); daytime=(tian(p-end)-tian(pn=pn=p-daytime; i=pi=p-price; num=n*i; p-expense=num; p-next=NULL; if(head=NULL) head=p; head=p; else tail=p; printf( 該客戶入住成功! printf(n 該客戶入住成功!n); printf( 請輸入客戶的姓名: printf(n 請輸入客戶的姓名: ); scanf(%s,name); return head; void check(int number,struct kehu_information *head) struct kehu_information *ptr; int n1,n2,n=0; if(head=NULL) printf(該房間沒人住! printf(該房間沒人住!n); 該房間沒人住 return; for(ptr=head;ptr;ptr=ptrfor(ptr=head;ptr;ptr=ptr-next) if(number=ptrif(number=ptr-num) break; if(ptr=NULL) printf(該房間沒人住! printf(該房間沒人住!n); 該房間沒人住 return; else for(ptr=head;ptr;ptr=ptrfor(ptr=head;ptr;ptr=ptr-next) if(number=ptrif(number=ptr-num) printf(該房間入住的客人是: %sn,ptrprintf(該房間入住的客人是: %sn,ptr-name); 該房間入住的客人是 printf(客人的身份證號是: %sn,ptrprintf(客人的身份證號是: %sn,ptr-ID); 客人的身份證號是 printf( printf( 客 客 人 人 的 開 的 始 結 入 束 住 時 時 間 間 %d-%d-%dn,ptr-begin.year,ptr-begin.month,ptr是: %d-%d-%dn,ptr-begin.year,ptr-begin.month,ptr-begin.day); %d-%d-%dn,ptr-end.year,ptr-end.month,ptr是: %d-%d-%dn,ptr-end.year,ptr-end.month,ptr-end.day); n1=tian(ptrn1=tian(ptr-begin); n2=tian(ptrn2=tian(ptr-end); printf(客人入住天數為: %dn,n2printf(客人入住天數為: %dn,n2-n1); 客人入住天數為 printf(客人入住房間價格為: %dn,ptrprintf(客人入住房間價格為: %dn,ptr-price); 客人入住房間價格為 /*實現指針的掛鏈*/ /*實現指針的掛鏈*/ 實現指針的掛鏈 tailtail-next=p; printf(客人入住總費用為是: %d n,ptrprintf(客人入住總費用為是: %dnn,ptr-expense); 客人入住總費用為是 n+; printf(共查詢到%d 條記錄! printf(共查詢到%d 條記錄!n,n); 共查詢到 number,struct void allprice(int number,struct time begin,struct time end,struct kehu_information *head) struct kehu_information *ptr; int i,n1,n2,n3,n4,sum,price,sum2=0; n1=tian(begin); n2=tian(end); for(i=0;inext) if(number=ptrif(number=ptr-num) n3=tian(ptrn3=tian(ptr-begin); n4=tian(ptrn4=tian(ptr-end); if(n1n4|n2n3) sum=0; else if(n2=n3) sum=price*(n2sum=price*(n2-n1); if(n2=n4&n1=n4&n1=n3) sum=price*(n4sum=price*(n4-n3); else if(n1=n3&n2begin); n2=tian(pn2=tian(p-end); if(head=NULL) result=1; else for(ptr2=head;ptr2;ptr2=ptr2for(ptr2=head;ptr2;ptr2=ptr2-next) if(p-num=ptr2if(p-num=ptr2-num) break; if(ptr2=p) if(ptr2=p) result=1; else for(ptr2=head;ptr2;ptr2=ptr2for(ptr2=head;ptr2;ptr2=ptr2-next) if(p-num=ptr2if(p-num=ptr2-num) n3=tian(ptr2n3=tian(ptr2-begin); n4=tian(ptr2n4=tian(ptr2-end); if(n3n2)|(n1n4) result=1; continue; else result=0; break; return result; 問題描述 已知在酒店中有 10 個房間, 每個房間的信息包括房間號, 每天住宿價格, 設計一程序, 完成以下功能: 1) 從鍵盤輸入客戶的入住信息(包括:客戶姓名,身份證號,開始入住時間,退房

溫馨提示

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

評論

0/150

提交評論