住宿結(jié)帳管理系統(tǒng)--C語言課程設(shè)計_第1頁
住宿結(jié)帳管理系統(tǒng)--C語言課程設(shè)計_第2頁
住宿結(jié)帳管理系統(tǒng)--C語言課程設(shè)計_第3頁
住宿結(jié)帳管理系統(tǒng)--C語言課程設(shè)計_第4頁
住宿結(jié)帳管理系統(tǒng)--C語言課程設(shè)計_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C語言課程設(shè)計設(shè)計題目: 住宿結(jié)帳管理系統(tǒng)專 業(yè) 計算機(jī)科學(xué)與技術(shù)、軟件工程 班 級 計053、軟件051、軟件052 學(xué) 生 郭凌瑞 張亮 方宇 指導(dǎo)教師 王曉帆 2005-2006 年 2 學(xué)期 設(shè)計任務(wù): 試設(shè)計一個住宿結(jié)帳管理系統(tǒng),住宿結(jié)帳管理信息包括:顧客姓名、入住時間、住宿房間、顧客數(shù)量、每日價格、住宿天數(shù)、折扣率、實收金額。系統(tǒng)包括以下功能:住宿信息的錄入、修改、刪除功能;住宿信息的排序、瀏覽功能;按住宿天數(shù)查詢、按住宿房間號碼查詢;住宿信息的統(tǒng)計:總?cè)藬?shù)、總收入、空房數(shù)。建議:一人負(fù)責(zé)信息的錄入、修改、刪除;一人負(fù)責(zé)文件的讀取與寫入操作;一人負(fù)責(zé)排序、查詢。教師評語:目錄1、試

2、驗?zāi)康募皟?nèi)容32、系統(tǒng)總體模塊圖33、小組任務(wù)分工44、子系統(tǒng)設(shè)計方案4(1) 信息的錄入、修改、刪除;4(2) 文件的讀取與寫入、統(tǒng)計、主函數(shù);4(3) 信息的排序、瀏覽、查詢;45、子系統(tǒng)主要程序流程圖4(1) 信息讀取模塊流程圖5(2) 信息修改模塊流程圖6(3) 信息修改模塊流程圖 7(4) 按住宿時間查詢模塊流程圖8(5) 按房間號碼查詢模塊流程圖96、個人設(shè)計小結(jié)與心得體會107、小組設(shè)計總結(jié)118、系統(tǒng)源代碼12試驗?zāi)康模海?)加深對C語言的理解,將在書本上掌握的知識點運用到實際的系統(tǒng)編程中去,為以后的學(xué)習(xí)打下基礎(chǔ)。(2)通過簡單的系統(tǒng)設(shè)計,增強(qiáng)面對復(fù)雜問題的處理能力,為以后實際

3、中解決問題打下基礎(chǔ)。實驗內(nèi)容:試設(shè)計一個住宿結(jié)帳管理系統(tǒng),住宿結(jié)帳管理信息包括:顧客姓名、入住時間、住宿房間、顧客數(shù)量、每日價格、住宿天數(shù)、折扣率、實收金額。系統(tǒng)包括以下功能:住宿信息的錄入修改、刪除功能;住宿信息的排序瀏覽功能;按住宿天數(shù)查詢、按住宿房間號碼查詢;住宿信息的統(tǒng)計:總?cè)藬?shù)、總收入、空房數(shù)。系統(tǒng)總體模塊圖:住宿結(jié)帳管理系統(tǒng)主程序模塊 信息保存模塊按住宿房間號碼查詢模塊按住宿天數(shù)查詢模塊按住宿天數(shù)瀏覽模塊信息統(tǒng)計模塊信息刪除模塊信息修改模塊信息讀取模塊信息錄入模塊按住房間號碼瀏覽模塊 按房間號碼排序模塊按住宿天數(shù)排序模塊小組任務(wù)分工(1) 由郭凌瑞負(fù)責(zé)住宿信息的錄入、修改、刪除功能

4、;(2) 由張亮負(fù)責(zé)文件的讀取與寫入操作,統(tǒng)計及主函數(shù);(3) 由方宇負(fù)責(zé)排序、瀏覽、查詢功能;子系統(tǒng)設(shè)計方案:(1) 信息的錄入、修改、刪除; 信息的錄入、修改與刪除通過對信息的標(biāo)志的判斷與修改,執(zhí)行信息錄入的地址、修改的目標(biāo)及刪除功能的實現(xiàn)。(2) 文件的讀取與寫入、統(tǒng)計、主函數(shù); 文件的讀取與寫入可用已知的庫函數(shù)來完成,統(tǒng)計工作可由已有信息通過計算獲得,主函數(shù)可由swith語句來達(dá)到菜單選折功能的目的。 (3) 信息的排序、瀏覽、查詢; 排序功能可通過冒泡法來實現(xiàn),瀏覽實現(xiàn)排序然后顯示即可,查詢時,根據(jù)“=”來達(dá)到找到匹配信息的目的。子系統(tǒng)主要程序流程圖N為所有房間數(shù),NN為非空房間數(shù)信

5、息讀取模塊流程圖開始0=>i i+1=>ii < N ? N YPi.flang= =1? Y N輸入一個信息Pi1=>P i.flangNN+1=>NNi+1=>i i= =N-1? Y N“y”or “n” Y N i= =N-1? N Y輸入信息房間已滿 結(jié)束信息修改模塊流程圖開始輸出所有住宿信息輸入修改的房間號n 0=>i, NN=>jn = =0? Y N i < N ? Ni+1=>i N YPi.flang= =1? Nj - - Y Y Pi.Rome= =n ? N Y“y”or “n” N Y重新輸入該信息Pi“y

6、”or “n”i= =N-1?i= =N-1?i= =N-1? j = =0? N Y 未找到要修改的信息 “y”or “n” 輸入修改的房間號n輸入一個信息Pi輸入一個信息Pi輸入一個信息Pi輸入一個信息Pi輸入一個信息Pi 輸入一個信息Pi輸入一個信息Pi結(jié)束信息刪除模塊流程圖開始輸出所有住宿信息輸入要刪除的房間號n0=>i, NN=>jn = =0? Yi < N ? Ni+1=>i YPi.flang= =1? Nj - -Pi.Rome= =n ? Y N“y”or “n” Y N Y1=>Pi.flangj = =0? N Y未找到要刪除的信息輸入刪除

7、的房間號n結(jié)束 按住宿時間查詢模塊開始輸出所有住宿信息 輸入要查詢的日期(年月日)0=>i, NN=>ji<N? Ni+1=>i YPi.flang= =1? Nj - - Yi+1=>i 日期是否相等 N Y輸出要查詢的信息Pi j= =0? Y N Y未找到要查詢的信息結(jié)束按房間號碼查詢模塊開始 輸出所有住宿信息輸入要查詢房間號碼 no 0=>i, NN=>ji<N? Ni+1=>i YPi.flang= =1? Nj - - Yi+1=>i房間號碼是否相等 N Y輸出要查詢的信息Pij= =0? N Y未找到要查詢的信息結(jié)束0=

8、>i, NN=>j0=>i, NN=>j個人設(shè)計小結(jié)及心得體會: (1)在我設(shè)計的子系統(tǒng)部分,包含很多細(xì)節(jié)問題,如果稍有不慎,往往導(dǎo)致模塊無法運行,在設(shè)計中,我嘗試了很多方法,對思維能力有了很大鍛煉,提高了解決復(fù)雜問題的能力,同時,也很大程度上鍛煉了耐心,做到不急不棄是系統(tǒng)最終成功的保證。 計053 郭凌瑞(2)我的工作比較簡單,但在書寫代碼時,發(fā)現(xiàn)了自己的問題:文件無法順利操作!文件是很重要的一個知識點,很興慶在這次實踐中我及時彌補(bǔ)了以前的缺憾,為以后的繼續(xù)學(xué)習(xí)和面對復(fù)雜問題打下了堅實的基礎(chǔ),問題在實踐中才能被更好地發(fā)現(xiàn)和解決,在今后的學(xué)習(xí)中要更加重視實踐的作用! 軟

9、051 張亮(3)在我設(shè)計的模塊中,主要是對已有信息的處理,對排序算法有了一個新的認(rèn)識,從深層次理解了排序函數(shù)的思想,突破了以前是似而非的局限。查詢模塊的書寫,注意了很多細(xì)節(jié),使模塊在整體上有了很大優(yōu)化,給了用戶一個人性化的界面。 軟052 方宇小組設(shè)計總結(jié): 本次課程設(shè)計,我們做了一個簡單管理系統(tǒng),系統(tǒng)的功能較以前的小程序有了很大加強(qiáng),對個人及團(tuán)隊的能力有了更大的要求,事實上,在本次課設(shè)中的確出現(xiàn)了很多以前沒有遇到的問題,這是一次自我提高的過程,從中我們彌補(bǔ)了以前遺漏的很多東西,使自己的知識結(jié)構(gòu)更加完善和牢固;同時,這也是一次實踐的機(jī)會,是增加面對復(fù)雜問題處理經(jīng)驗的機(jī)會,對以后做一些比較大的

10、系統(tǒng)有一定的借鑒。在本次試驗的整個過程中,組員之間的合作起到了很大作用,共同解決了很多關(guān)鍵性難題,最終,在我們的共同努力下,我們的第一個系統(tǒng)正常運行了,巨大成就感促使我們有一種挑戰(zhàn)更高目標(biāo)的欲望! #include<stdio.h>#include<string.h>#define N 3 /總房間數(shù)int NN=0; /非空房間數(shù)/類定義區(qū)struct Date /入住時間int year;int month;int day;struct Payroll /顧客信息列表int flang; /用來標(biāo)志該顧客信息是否存在char Name15; /顧客姓名Date da

11、te; /入住時間int Rome; /房間號int Number; /顧客數(shù)量 int Price; /每日價格 int Days; /住宿天數(shù) float Discountrate; /折扣率float Money; /實收金額;/子函數(shù)聲名區(qū)void Imput(Payroll P,FILE *fp); /結(jié)帳信息的錄入void Read(Payroll P,FILE *fp); /結(jié)賬信息的讀取void Save(Payroll P,FILE *fp); /信息保存為文件void Reput(Payroll P,FILE *fp); /結(jié)賬信息的修改void Delete(Payrol

12、l P,FILE *fp); /結(jié)賬信息的刪除void Stat(Payroll P,FILE *fp); /信息統(tǒng)計void Timeread(Payroll P,FILE *fp); /按住宿天數(shù)瀏覽void Romenumber(Payroll P,FILE *fp); /按住宿房間瀏覽void Time(Payroll P,FILE *fp); /按住宿天數(shù)查詢void Rome(Payroll P,FILE *fp); /按住宿房間查詢 void DAY(Payroll P,FILE *fp); /按住宿天數(shù)排序void ROME(Payroll P,FILE *fp); /按房間號

13、碼排序/以下為主函數(shù)void main()FILE *fp; struct Payroll PN; fp=fopen("accout.dat","ab+");int select;Read(P,fp); /從文件中讀取結(jié)賬信息printf("*住宿結(jié)賬管理系統(tǒng)*nn");printf("歡迎使用本系統(tǒng)!nn"); printf("=菜單=n" "請選擇:n" "1-添加新信息n" "2-修改信息n" "3-刪除信息n"

14、; "4-統(tǒng)計信息n" "5-按住宿天數(shù)瀏覽n" "6-按住宿天數(shù)查詢n" "7-按放房間號碼瀏覽n" "8-按房間號碼查詢n" "9-退出n"); scanf("%d",&select); while(select!=9) /沒有退出本系統(tǒng)時,循環(huán)提示操作 switch(select) case 1:Imput(P,fp); /信息錄入 break; case 2:Reput(P,fp); /修改信息 break; case 3:Delete(P

15、,fp); /刪除信息 break; case 4:Stat(P,fp); /統(tǒng)計信息 break; case 5:Timeread(P,fp); /按住宿天數(shù)瀏覽 break; case 6:Time(P,fp); /按住宿天數(shù)查詢 break; case 7:Romenumber(P,fp); /按放房間號碼瀏覽 break; case 8:Rome(P,fp); /按房間號碼查詢 break; printf("nn"); printf("請選擇要進(jìn)行的操作:n" /每完成一次操作選折下一次操作 "1-添加新信息n" "

16、2-修改信息n" "3-刪除信息n" "4-統(tǒng)計信息n" "5-按住宿天數(shù)瀏覽n" "6-按住宿天數(shù)查詢n" "7-按放房間號碼瀏覽n" "8-按房間號碼查詢n" "9-退出n"); scanf("%d",&select); Save(P,fp); /將本次系統(tǒng)運行結(jié)果保存為文件 printf("謝謝使用,再見!n");/子函數(shù)定義區(qū)void Imput(Payroll P,FILE *fp) /結(jié)

17、帳信息的錄入int i; char ch; printf("姓名 入住時間 房間 顧客數(shù)量 每日價格 住宿天數(shù) 折扣率n");printf("=n"); for(i=0;i<N;i+) if(Pi.flang!=1) /避免覆蓋已有信息 scanf("%s%d%d%d%d%d%d%d%f",Pi.Name,&Pi.date.year,&Pi.date.month,&Pi.date.day,&Pi.Rome,&Pi.Number,&Pi.Price,&Pi.Days,&

18、;Pi.Discountrate); Pi.flang=1; /標(biāo)示已存信息 NN+; Pi.Money=Pi.Days*Pi.Discountrate*Pi.Price; if(i=N-1) break; printf("是否繼續(xù)錄入?(y or n) "); getchar(); ch=getchar();if(ch!='n') printf("姓名 入住時間 房間 顧客數(shù)量 每日價格住宿天數(shù) 折扣率n");printf("=n"); elsebreak; if(i=N-1) printf("抱歉,所有房

19、間已滿!nn");void Save(Payroll P,FILE *fp) /信息保存為文件 int i;for(i=0;i<N;i+) if(Pi.flang=1) fwrite(&Pi,sizeof(struct Payroll),1,fp);fclose(fp);void Read(Payroll P,FILE *fp) /結(jié)賬信息的讀取 int i; for(i=0;i<N;i+) fread(&Pi,sizeof(struct Payroll),1,fp);void Reput(Payroll P,FILE *fp) /結(jié)賬信息的修改 int

20、i;int n,j=NN;char ch;printf(" 姓名 住宿時間 房間 顧客數(shù)量 每日價格 住宿天數(shù) 折扣率 實收金額n");printf("=n");for(i=0;i<N;i+)if(Pi.flang=1)printf("%8s%6d%3d%3d%10d%8d%8d%8d%8.2f%8.2fn",Pi.Name,Pi.date.year,Pi.date.month,Pi.date.day,Pi.Rome,Pi.Number,Pi.Price,Pi.Days,Pi.Discountrate,Pi.Money);pri

21、ntf("請輸入要修改的房間號(輸入零結(jié)束修改?。?n");scanf("%d",&n); while(n!=0) for(i=0;i<N;i+) if(Pi.flang=1) if(Pi.Rome=n) printf("確認(rèn)要修改嗎?(y or n) "); getchar(); ch=getchar(); if(ch='y') printf("請重新輸入該信息:n"); printf("姓名 入住時間 房間 顧客數(shù)量 每日價格 住宿天數(shù) 折扣率n");print

22、f("=n"); scanf("%s%d%d%d%d%d%d%d%f",Pi.Name,&Pi.date.year,&Pi.date.month,&Pi.date.day,&Pi.Rome,&Pi.Number,&Pi.Price,&Pi.Days,&Pi.Discountrate); Pi.Money=Pi.Days*Pi.Discountrate*Pi.Price; else continue; else j-; else continue; if(j=0) printf("沒

23、有找到要修改的內(nèi)容!請確認(rèn)后再輸入!n"); printf("請輸入要修改的房間號(輸入零結(jié)束修改!):n"); scanf("%d",&n);void Delete(Payroll P,FILE *fp) /住宿信息的刪除 int i,n;int k=NN,j=NN;int NO=NN;char ch; printf(" 姓名 入住時間 房間 顧客數(shù)量 每日價格 住宿天數(shù) 折扣率 實收金額n");printf("=n");for(i=0;i<N;i+) if(Pi.flang=1) pri

24、ntf("%8s%6d%3d%3d%10d%6d%8d%8d%8.2f%8.2fn",Pi.Name,Pi.date.year,Pi.date.month,Pi.date.day,Pi.Rome,Pi.Number,Pi.Price,Pi.Days,Pi.Discountrate,Pi.Money);printf("請輸入要刪除的房間號(輸入零結(jié)束刪除!):n");scanf("%d",&n);while(n!=0) for(i=0;i<N;i+) if(Pi.flang=1) if(Pi.Rome=n) printf(

25、"確認(rèn)要刪除嗎?(y or n) "); getchar(); ch=getchar(); if(ch='y') if(k=1) /此時刪除所有住宿信息 for(i=0;i<N;i+) Pi.flang=0; NO-; Pi.flang=0; /刪除該項內(nèi)容 k-; else continue; else j-; if(k=0) break; if(j=0) printf("沒有找到要刪除的內(nèi)容,請確認(rèn)!n"); printf("請輸入要刪除的房間號(輸入零結(jié)束刪除?。?n"); scanf("%d&q

26、uot;,&n); NN=NO;void Timeread(Payroll P,FILE *fp) /按天數(shù)瀏覽 int i;/Read(P,fp);DAY(P,fp); printf(" 姓名 入住時間 房間 顧客數(shù)量 每日價格 住宿天數(shù) 折扣率 實收金額n");printf("=n"); for(i=0;i<N;i+)if(Pi.flang=1) printf("%8s%6d%3d%3d%10d%6d%8d%8d%8.2f%8.2fn",Pi.Name,Pi.date.year,Pi.date.month,Pi.da

27、te.day,Pi.Rome,Pi.Number,Pi.Price,Pi.Days,Pi.Discountrate,Pi.Money);printf("nn");void Romenumber(Payroll P,FILE *fp) /按住宿房間瀏覽 int i,j=NN; ROME(P,fp);printf(" 姓名 入住時間 房間 顧客數(shù)量 每日價格 住宿天數(shù) 折扣率 實收金額n");printf("=n"); for(i=0;i<N;i+)if(Pi.flang=1) printf("%8s%6d%3d%3d%8

28、d%6d%8d%8d%8.2f%8.2fn",Pi.Name,Pi.date.year,Pi.date.month,Pi.date.day,Pi.Rome,Pi.Number,Pi.Price,Pi.Days,Pi.Discountrate,Pi.Money); printf("nn"); void Stat(Payroll P,FILE *fp) /信息統(tǒng)計 int i,n=N;int Sumperson=0; /總?cè)藬?shù) float Sum=0; /總收入struct Payroll t; /Read(P,fp);for(i=0;i<N;i+) if(Pi

29、.flang=1) Sumperson+=Pi.Number; Sum+=Pi.Money; n-; printf("入住總?cè)藬?shù):%dn空房數(shù):%dn總收入:%.2fnnn",Sumperson,n,Sum); void Time(Payroll P,FILE *fp) /按住宿時間查詢 Date time;int i,j=NN; / Read(P,fp);printf("請輸入要查詢的日期(年、月、日):n");scanf("%d%d%d",&time.year,&time.month,&time.day);printf(" 姓名 入住時間 房間 顧客數(shù)量 每日價格 住宿天數(shù) 折扣率 實收金額n");printf("=n");for(i=0;i<NN;i+) if(Pi.flang=1) if(Pi.date.year=time.year&&Pi.date.month=time.month&&Pi.date.day=time.day) printf("%8s%6d%3d%3d%10d%6d%8d%8d%8.2f%8.2fn",Pi.Name,Pi.date.year,Pi.dat

溫馨提示

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

評論

0/150

提交評論