




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、課程設計報告課程名稱:C 語言程序設計課設項目名稱:飯卡管理系統(tǒng)學 院:專業(yè):姓 名:學號:指導教師:成績:1目錄第 1部分 課程設計題目與要求 錯誤! 未定義書簽1問題描述 錯誤!未定義書簽。2功能要求 錯誤!未定義書簽。3任務分工 錯誤!未定義書簽。第 2部分 飯卡管理系統(tǒng)的設計與功能實現(xiàn) 錯誤! 未定義書簽1總體設計 錯誤! 未定義書簽。2數(shù)據(jù)結構 錯誤! 未定義書簽。3. 算法設計 錯誤! 未定義書簽。4程序代碼設計 錯誤! 未定義書簽。5測試與調(diào)試 錯誤! 未定義書簽。第 3部分 課程設計總結 錯誤! 未定義書簽個人總結 錯誤! 未定義書簽。個人總結 錯誤! 未定義書簽。結束語 錯誤
2、! 未定義書簽。附錄I程序清單 錯誤!未定義書簽附錄U用戶使用說明書 錯誤!未定義書簽參考文獻 錯誤!未定義書簽請輸入選項編號 (0 7):1 建立飯卡文 件2買飯3 續(xù)錢4 添加新飯卡5 注銷舊飯卡6 設置與解除 掛失7 創(chuàng)新功能0退出系統(tǒng)在主菜單中選擇在主菜單中選擇在主菜單中選擇 信息。在主菜單中選擇在主菜單中選擇 按任意鍵退出本系統(tǒng)。第1部分 課程設計題目與要求1 .問題描述學校等大單位集體食堂買飯時間非常集中,這時如果食堂使用飯票賣飯, 大家就得排長隊等候,而且還要經(jīng)過先去買飯票等麻煩的經(jīng)歷。因此食堂提出使用 計算機進行管理,食堂用飯卡賣飯,不僅提高賣飯速度,還 易于管理,減少不必要的
3、麻煩,同時減輕管理人員的工作負 擔。2.功能要求重復顯示如圖所示的主菜單,在主菜單中選擇任意一 項,均實現(xiàn)相應功能。在主菜單中選擇1,建立名為的文件,并在其中添加若 干人的飯卡號、姓名、金額、掛失信息,要求飯卡號是唯一 的。在主菜單中選擇2,要求用戶輸入飯卡號、飯費,然后系統(tǒng)自動從該人的飯卡 中減去飯錢,并分別顯示買飯前后的金額,如果原來飯卡中的金額不足5元,則不能買飯,而且顯示“金額不足夠,請續(xù)錢!”,如果掛失信息為真,則顯示“本卡 已凍結! ”。4,添加新飯卡,這時要求新飯卡號和已有的飯卡號不能重號。5, 注銷舊飯卡。6, 要求用戶輸入飯卡號和掛失信息,然后更新該飯卡的掛失7,0,顯示“感
4、謝使用本軟件!已正常退出,按任意鍵結束。”8第2部分 飯卡管理系統(tǒng)的設計與功能實現(xiàn)1 .總體設計主模塊建立飯卡文件買飯續(xù)錢添加新飯卡注銷舊飯卡設置與解除掛失創(chuàng)新功能圖i初始的主模塊圖2細分后的主模塊圖2.數(shù)據(jù)結構例如:struct card char n ame10, num10; float yu,sum; int guashi; num10表示學號放在一維數(shù)組中,name10表示姓名放在一維數(shù)組中,yu表示余額,sum表示消費金額的累積,guashi表示掛失的情況。3.算法設計圖3主函數(shù)流程圖圖4建立飯卡模塊流程圖入口打開文件結束記錄寫入文件1F關閉文件1出口打開成功?F輸入卡號卡號不存在
5、?此卡掛失?假卡號重復?輸入金額1/顯示消費情況圖5買飯模塊流程圖按任意鍵返 回主菜單打開文件結束假打開成功?輸入卡號是否存在?結束輸入金額顯示用戶信息記錄寫入文件1關閉文件1出口圖6續(xù)錢模塊流程圖10圖7添加新飯卡模塊流程圖11假入口圖8注銷舊飯卡模塊流程圖12真Temp.guashi=1記錄寫入文件關閉文件圖9設置與解除掛失模塊流程圖14關閉文件圖10創(chuàng)新功能模塊流程圖154程序代碼設計采用模塊化的思想,按照“自頂向下,逐步細化”的原則設計算法。( 1)菜單的設計1, 本例需要輸出主菜單選擇界面,簡單菜單的制作可利用printf 函數(shù)實現(xiàn)。用 printf 函數(shù)將菜單項逐一打印到屏幕上,界
6、面中的邊框可以通過多個 printf 函數(shù)輸出的“ | ”和“- ”拼接起來。2, 菜單應根據(jù)用戶的選擇做出不同的反應, 因此需要使用分支結構實現(xiàn)選 擇選項的功能。根據(jù)題意,主菜單含有 8 個菜單選項,屬于多分支條件判斷, 使用帶 break 和 switch 語句最為合適。3, 因為本例具有重復選擇主菜單選項的功能, 因此需要使用循環(huán)結構。 在 本例中菜單至少要顯示一次,隨后才判斷是否繼續(xù)選擇主菜單,所以使用 do-while 循壞比較好,因為 do-while 循壞是先執(zhí)行循環(huán)體, 然后再判斷表達式。4,作為菜單,應該給用戶一個正常的出口,即滿足一定條件時退出程序。為 了給用戶提供方便,我
7、們采用人機對話形式,當用戶選擇某一菜單項后,系統(tǒng)立即 完成相應的功能,然后詢問用戶是否需要繼續(xù)選擇,只要用戶繼續(xù)選擇(輸入 y 或 Y),主菜單就會在屏幕上反復出現(xiàn),只有當用戶不再選擇(輸入 N或n),才可退 出主菜單。除此之外,為了使用方便,在主菜單中還特設 0 選項,選擇它也能正常 退出程序。為了實現(xiàn)上述功能,有關語句都應放在 do-while 循環(huán)體中。選擇選項的程序段可設計成如下形式:choose=getchar();switch(choose)case 1:mycreat();break;case 2:mybuy();break;case 3:myaddyu();break;case
8、 4:myaddcard();break;case 5:myzhuxiao();break;case 6:mysetguashi();break;case 7:mynew();break;case 0:printf(n 非 常 感 謝 使 用 本 軟 件 ! n 已 正 常 退 出 , 按 任 意 鍵 結 束 );exit(0);break;default :printf(n 該選項非法 !);break;( 2 ) 設計各模塊的算法,這是逐步細化的過程。1, 建立飯卡模塊,函數(shù)名 mycreat 。 在該模塊中輸入學生的卡號,姓名,充值錢數(shù),并將它們存放在文件中;每輸 入一組數(shù)據(jù),記錄數(shù)增
9、1。建立飯卡的程序設計如下:void mycreat()int i=1;struct card temp=0;FILE *fp=NULL;char yes_no=0;=0;=0;system(cls);飯卡管理系統(tǒng) files,a);if(fp=NULL) printf(nn 飯 卡 文 件 丟 失 ! 按 任 意 鍵 繼 續(xù).);getchar();exit(0);elsefclose(fp);doprintf(n請輸入第 d個記錄:nn,i);printf( 卡號 :);scanf(%s,&;if(myexist!=1)飯卡管理系統(tǒng) files,a);printf( 姓名 :);scanf
10、(%s,&;printf( 充值錢數(shù) :); scanf(%f,&;fprintf(fp,%10s%10s%20.2f%4d%20.2fn,; fclose(fp);i+;else printf( 卡號重復 !n); printf(n 請問您要繼續(xù)嗎 ); doyes_no=getchar(); while(yes_no!=Y&yes_no!=y&yes_no!=N&yes_no!=n);while(yes_no=Y|yes_no=y); 在文件夾中尋找已輸入的卡號用函數(shù) myexist 系統(tǒng)自動用循環(huán)將文件中讀入 的學 號一一做比較。用飯卡管理系統(tǒng) files,a); 追加打開文件,輸入學生
11、的姓名,充值錢數(shù),并將它們存放在文件中;每輸入一組數(shù)據(jù),記錄數(shù)增1。用 do-while 語句實現(xiàn)人機對話的功能,機器問用戶是否繼續(xù),如果繼續(xù)就 接著建立新飯卡,否則返回主菜單。2, 買飯設計模塊,函數(shù)名 mybuy.void mybuy()system(cls);飯卡管理系統(tǒng) files,r);while(feof(fp)=0) fscanf(fp,%s%s%f%d%f,tempi.num,,&tempi.yu,&tempi.guashi, &tempi.sum);i+;fclose(fp);printf(n 請輸入卡號 :);scanf(%s,num_temp); if
12、(myexist(num_temp)=-1) printf(n卡號不存在! );else if(myguashi(num_temp)=1) printf(n本卡已凍結! );else if(myyu(num_temp)=0) printf(n余額不夠,請續(xù)費! );else for(j=0;ji;j+)if(strcmp(num_temp,tempj.num)=0) break;printf(n請輸入消費金額 :);scanf(%f,&money);printf(n卡號姓名余額 n);printf(n消費、八前:%-10s%-10s%-10.2fn,tempj.num,,t
13、empj.yu);printf(n消費后:%-10s%-10s%-10.2fn,tempj.num,,tempj.yu-money);tempj.yu=tempj.yu-money; tempj.sum=tempj.sum+money;飯卡管理系統(tǒng) files,w); for(j=0;ji-1;j+) fprintf(fp,%10s%10s%20.2f%4d%20.2fn,tempj.num,,tempj.yu,tempj.guashi,tempj.sum);fclose(fp);printf(nn 此次消費成功!按任意鍵返回主菜單 );getch();
14、return;printf(nn 此次消費失?。“慈我怄I返回主菜單.);getch();判斷卡號存在模塊:函數(shù)名 myexist 。系統(tǒng)自動用循環(huán)將文件中讀入的學號一 一做比較。判斷卡號掛失情況模塊:函數(shù)名myguashi。系統(tǒng)自動用if-else語句判斷掛失情況。判斷卡號余額情況模塊:函數(shù)名myyu。系統(tǒng)自動用if-else語句分別判斷卡號余額是否充足。3, 續(xù)錢設計模塊,函數(shù)名 myaddyu。void myaddyu()system(cls);飯卡管理系統(tǒng) files,r);while(feof(fp)=0) fscanf(fp,%s%s%f%d%fn,tempi.num,tempi.n
15、ame,&tempi.yu,&tempi.guash i,&tempi.sum);i+;fclose(fp);printf(nn 請輸入卡號 :);scanf(%s,&num_temp); if(myexist(num_temp)=1&myguashi(num_temp)=0) for(j=0;ji;j+) if(strcmp(num_temp,tempj.num)=0) printf(n 請輸入續(xù)費金額 :);scanf(%f,&money); printf(n 卡號 姓名 余額 n);printf(前 :%-10s %-10s %-10.2fnn,tempj.num,,
16、tempj.yu);printf(后 :%-10s %-10s %-10.2fn,tempj.num,,tempj.yu+money);tempj.yu=tempj.yu+money;飯卡管理系統(tǒng) files,w);for(k=0;ki;k+)fprintf(fp,%10s%10s%20.2f%4d%20.2fn,tempk.num,,tempk.yu,tem pk.guashi,tempk.sum);fclose(fp);printf(nn 續(xù)費成功!按任意鍵返回主菜單 );elseprintf(nn 卡號不存在或已掛失!按任意鍵返回主菜單.);get
17、char();判斷卡號存在情況:函數(shù)名 myexist 。系統(tǒng)自動用循環(huán)將文件中讀入的學號一 一做比較。判斷掛失情況:函數(shù)名 myguashi。系統(tǒng)自動用if-else語句判斷掛失情況用 for 循環(huán)結構找尋對應的學號,并輸入續(xù)費金額,使續(xù)費成功。備注:以下函數(shù)為續(xù)錢設計模塊的子函數(shù):飯卡管理系統(tǒng) files,r);while(feof(fp)=0) fscanf(fp,%s%s%f%d%fn,tempk.num,,&tempk.yu,&tempk.guash i,&tempk.sum);k+;fclose(fp);for(i=0;ik;i+) if(strcmp(num,
18、tempi.num)=0) flag=1;break;return flag;4, 添加新飯卡模塊,函數(shù)名 myaddcard。 在該模塊中輸入學生的卡號,姓名,充值錢數(shù),并將它們存放在文件中;每輸 入一組數(shù)據(jù),記錄數(shù)增 1。添加飯卡模塊設計程序如下:void myaddcard int i=0;struct card temp=0;FILE *fp=NULL;char yes_no=0;=0;=0; system(cls);飯卡管理系統(tǒng) files,r);if(fp=NULL) printf(n 飯卡文件丟失 !);getch();exit(0); fclose(fp);do printf(
19、n 請輸入第 c個記錄:nn,i+1);printf( 卡號 :);scanf(%s,&; if(myexist!=1) printf( 姓名 :);scanf(%s,&;printf( 充值錢數(shù) :); scanf(%f,&;飯卡管理系統(tǒng) files,a); fprintf(fp,%10s%10s%20.2f%4d%20.2fn,; fclose(fp);i+;else printf(n卡號重復 !n);printf(nn要繼續(xù)嗎 );doyes_no=getch(); while(yes_no!=Y&yes_no!=y&yes_no!=N&yes_no!=n); while(yes_no=
20、Y|yes_no=y);在文件夾中尋找已輸入的卡號用函數(shù) myexist 系統(tǒng)自動用循環(huán)將文件中讀入 的學號一一做比較。 沒有找到,符合條件并輸入學生的姓名,充值錢數(shù),并將它們存放在文件中; 每輸入一組數(shù)據(jù),記錄數(shù)增 1。5, 注銷舊飯卡模塊,函數(shù)名 myzhuxiao。 system(cls);飯卡管理系統(tǒng) files,r);if(fp=NULL) printf(n 飯卡文件丟失 !);exit(0); while(feof(fp)=0) fscanf(fp,%s%s%f%d%fn,tempi.num,,&tempi.yu,&tempi.guash i,&tempi.su
21、m);i+;fclose(fp);printf(nn 請輸入卡號 :);scanf(%s,num_temp); if(myexist(num_temp)=1) for(j=0;ji;j+)if(strcmp(num_temp,tempj.num)=0)break;for(k=j;ki;k+)tempk=tempk+1;飯卡管理系統(tǒng) files,w);for(k=0;ki-1;k+) fprintf(fp,%10s%10s%20.2f%4d%20.2fn,tempk.num,,tempk.yu,tem pk.guashi,tempk.sum);fclose(fp);print
22、f(n 注銷成功!按任意鍵返回主菜單 );elseprintf(n %s 不存在!按任意鍵返回主菜單 ,num_temp);getch();查找學生飯卡卡號用比較函數(shù) strcmp(num_temp,tempj.num)=0 。 用 for 循環(huán)語句利用數(shù)組的替換使學生飯卡被注銷。6, 設置與解除掛失模塊,函數(shù)名 mysetguashisystem(cls);printf(n);printf( |*|n);29printf( |請輸入選項編號(02)|n);printf( |*|n);printf( |1-設置掛失|n);printf( |printf( |2-printf( |n);解除掛失
23、|n);|n);printf( |0-返回 |n);printf( |*|n);printf(n 請輸入操作編號 );飯卡管理系統(tǒng) files,r);if(fp=NULL) printf(n飯卡文件丟失 !);exit(0);while(feof(fp)=0) fscanf(fp,%s%s%f%d%fn,tempi.num,,&tempi.yu,&tempi.guashi,&tempi.sum); i+; fclose(fp); choose=getchar(); if(choose=1) printf(nn 請輸入卡號 :);scanf(%s,&num_temp);if(
24、myexist(num_temp)=1) for(j=0;ji;j+)if(strcmp(num_temp,tempj.num)=0) break;tempj.guashi=1;飯卡管理系統(tǒng) files,w);for(k=0;ki;k+)fprintf(fp,%10s%10s%20.2f%4d%20.2fn,tempk.num,,tempk.yu,tem pk.guashi,tempk.sum);fclose(fp);printf(n 設置成功!按任意鍵返回主菜單 );getch();return;else printf(n此卡不存在!按任意鍵返回主菜單 );getch()
25、;return;else if(choose=2) printf(nn請輸入卡號 :);scanf(%s,&num_temp);printf(n);if(myexist(num_temp)=1) for(j=0;ji;j+)if(strcmp(num_temp,tempj.num)=0) break;tempj.guashi=0;飯卡管理系統(tǒng) files,w);for(k=0;ki;k+)fprintf(fp,%10s%10s%20.2f%4d%20.2f%n,tempk.num,,tempk.yu,te mpk.guashi,tempk.sum);fclose(fp);e
26、lse printf(此卡不存在!按任意鍵返回主菜單 );getch();用 if-else語句分別選擇設置和解除掛失功能。備注:以下函數(shù)為設置與解除掛失的子函數(shù):int myguashi(char num10) FILE *fp=NULL;struct card tempN=0;int i=0,j;飯卡管理系統(tǒng) files,r); while(feof(fp)=0) fscanf(fp,%s%s%f%d%fn,tempi.num,,&tempi.yu,&tempi.guash i,&tempi.sum);i+; fclose(fp);for(j=0;ji;j+) if(s
27、trcmp(num,tempj.num)=0) break; if(tempj.guashi=1) return 1;elsereturn 0;7, 創(chuàng)新功能模塊,函數(shù)名 mynew。 do飯卡管理系統(tǒng) files,r);if(fp=NULL) printf(n打開文件失敗 !n);return;while(feof(fp)=0)fscanf(fp,%s%s%f%d%fn,tempk.num,,&tempk.yu,&tempk.guashi ,&tempk.sum);k+;fclose(fp); system(cls);printf( 請輸入卡號 :); scanf(%s,
28、num_temp);for(i=0;i=50) tempi.yu=tempi.sum/50+tempi.yu; tempi.sum=(int)tempi.sum%50; printf( 余額為 %f,tempi.yu);else printf( 您的消費金額不足 50);飯卡管理系統(tǒng) files,w);for(j=0;jk;j+)fprintf(fp,%10s%10s%20.2f%4d%20.2f%n,tempj.num,,tempj.yu,t empj.guashi,tempj.sum);fclose(fp);printf(n 請問您要繼續(xù)嗎 );doyes_no=get
29、char(); while(yes_no!=Y&yes_no!=y&yes_no!=N&yes_no!=n); while(yes_no=Y|yes_no=y);用 if-else 語句判斷消費金額是否大于 50 元。如果大于五十元用到 tempi.yu , tempi.sum 計算出返回金錢。8, 界面設計模塊,函數(shù)名 myprint void myprint() system(cls);printf(nn);printf( |*|n);printf( |請輸入選項編號(07)|n);printf( |1-建立飯卡文件|n);printf( |2-買飯|n);printf( |3-續(xù)錢|n)
30、;printf( |4-添加新飯卡|n);printf( |5-注銷舊飯卡|n);printf( |6-設置與解除掛失|n);printf( |7-創(chuàng)新功能|n);printf( |0-退出系統(tǒng)|n);printf( |*|n);printf( |*|n);利用 myprint 函數(shù)實現(xiàn)主菜單的顯示功能備注以下為查找學生飯卡卡號的子函數(shù):int myexist(char num10)FILE *fp=NULL;struct card tempN=0;i nt i=0,flag=-1,k=0;f飯卡管理系統(tǒng) files,r);while(feof(fp)=0)f scanf(fp,%s%s%f%
31、d%fn,tempk.num,,&tempk.yu,&tempk.guashi ,&tempk.sum);k+;f close(fp);f or(i=0;ik;i+)if(strcmp(num,tempi.num)=0) flag=1;break; r eturn flag;5.測試與調(diào)試測試數(shù)據(jù)類 型測試數(shù)據(jù)預期結果實例結果合法數(shù)據(jù)1建立1-10個學生飯卡,1-5輸入金額50元以下,6-10輸入金額50以上。查看檔案,存在 與剛才對應的十條記 錄。查看檔案,存在 與剛才對應的十條記 錄。2對卡號1-10卡號中任選一個進行買 飯,輸入消費金額20 丿元。顯示飯卡余額的 信息
32、,并且相應的扣 除金額20元。顯示飯卡余額的 信息,并且相應的扣 除金額20元。3從1-10個卡號中任選一個進行續(xù) 錢,續(xù)錢金額為100 丿元。該學號對應的余 額增加100元。該學號對應的余 額增加100元。4添加新飯卡,卡 號為11,續(xù)費金額為200 元。查看檔案,多了 一個卡號為11的記 錄,且信息與對應的 輸入信息相等。查看檔案,多了 一個卡號為11的記 錄,且信息與對應的 輸入信息相等。5改變卡號為5的 檔案,使其消費累計 金額為200元,之后 進行返值操作該用戶消費后的 余額增加2元。該用戶消費后的 余額增加2元。6輸入用戶須知對 應的選項號。屏幕上出現(xiàn)用戶 須知的內(nèi)容。屏幕上出現(xiàn)用
33、戶 須知的內(nèi)容。7選擇卡號為6進行掛失操作,選擇設 置掛失查看檔案,卡號 為6的用戶飯卡已掛 失。查看檔案,卡號 為6的用戶飯卡已掛 失。8把學號為11的 用戶進行注銷操作。查看檔案,卡號 為11的用戶的相關 記錄消失。查看檔案,卡號 為11的用戶的相關 記錄消失。9選擇卡號為6進行掛失操作,選擇解 除掛失查看檔案,卡號 為6的用戶飯卡已解 除掛失。查看檔案,卡號 為6的用戶飯卡已解 除掛失。10用戶輸入0屏幕顯示退出的 相關提示信息,之后 再按任何鍵時,能夠 退出。屏幕顯示退出的 相關提示信息,之后 再按任何鍵時,能夠 退出。非法數(shù)據(jù)1對卡號為1的用 戶進行添加飯卡。顯示學號重復相 關的錯誤
34、信息。顯示學號重復相 關的錯誤信息。2對學號為2的用顯示消費金額不顯示消費金額不戶進行買飯操作。對卡號為3的用戶進行兩次注銷。足相關的錯誤信息。 在第二次注銷 時,顯示卡號不存在。足相關的錯誤信息。 在第二次注銷 時,顯示卡號不存在。對卡號為1的用 戶進行飯卡建立操 作。顯示卡號重復相 關的錯誤信息。顯示卡號重復相 關的錯誤信息。對卡號為4的用 戶進行續(xù)錢操作把卡號為5的用 戶進行返值的操作用戶在主界面輸入任何0-7以外的信息顯示學號不存在 相關信息。顯示消費金額不 足的錯誤信息。顯示學號不存在 相關信息。顯示消費金額不 足的錯誤信息。屏幕上顯示選 項非法錯誤。屏幕上顯示選 項非法錯誤。附錄I
35、程序清單#in clude#in clude#in clude#in clude#defi ne N 100struct card char name10, nu m10;float yu,sum;int guashi;void myprint();void mycreat();void mybuy();int myexist(char num10);int myguashi(char num10);int myyu(char num10);void myaddyu();void myaddcard();void myzhuxiao();void mysetguashi();void myne
36、w();main()char choose=0;char yes_no=0;domyprint();printf(n 請選擇操作編號: ); choose=getch();switch(choose)case 1:mycreat();break;case 2:mybuy();break;case 3:myaddyu();break;case 4:myaddcard();break;case 5:myzhuxiao();break;case 6:mysetguashi();break;case 7:mynew();break;case 0:printf(n 非常感謝使用本軟件! n 已正常退出,
37、按任意鍵結 束 );exit(0);break;default :printf(n 該選項非法 !);break;printf(n 請問您要繼續(xù)嗎 );do yes_no=getchar();while(yes_no!=Y&yes_no!=y&yes_no!=N&yes_no!=n); while(yes_no=Y|yes_no=y);void myprint() system(cls); printf(nn);printf( |*|n);printf( |請輸入選項編號(07)|n);printf( |*|n);printf( |1-建立飯卡文件|n);printf( |2-買飯|n);pr
38、intf( |3-續(xù)錢|n);printf( |4-添加新飯卡|n);printf( |5-注銷舊飯卡|n);printf( |6-設置與解除掛失|n);printf( |7-創(chuàng)新功能|n);printf( |0-退出系統(tǒng)|n);printf( |*|n);void mycreat()i nt i=1;struct card temp=0;FILE *fp=NULL;char yes_no=0;=0;=0;system(cls);f p=fopen(D:,w);i f(fp=NULL) printf(nn 飯卡文件丟失 ! 按任意鍵繼續(xù) .);getchar();exit(0); elsefc
39、lose(fp);doprintf(n請輸入第 d個記錄:nn,i);printf(卡號 :);scanf(%s,&;if(myexist!=1)fp=fopen(D:,w);printf(姓名 :);scanf(%s,&;printf(充值錢數(shù) :);scanf(%f,&;fprintf(fp,%10s%10s%20.2f%4d%20.2fn,;fclose(fp);i+;else printf( 卡號重復 !n);printf(n 請問您要繼續(xù)嗎 );doyes_no=getchar(); while(yes_no!=Y&yes_no!=y&yes_no!=N&yes_no!=n);whi
40、le(yes_no=Y|yes_no=y);void mybuy()FILE *fp=NULL;struct card tempN=0;i nt i=0,j;char num_temp10=0;f loat money;system(cls);f 飯卡管理系統(tǒng) files,r);while(feof(fp)=0)fscanf(fp,%s%s%f%d%f,tempi.num,,&tempi.yu,&tempi.guashi,& tempi.sum);i+;f close(fp);printf(n 請輸入卡號 :);scanf(%s,num_temp);i f(myexist(
41、num_temp)=-1) printf(n卡號不存在! );else if(myguashi(num_temp)=1) printf(n 本卡已凍結! );else if(myyu(num_temp)=0) printf(n 余額不夠,請續(xù)費! );elsefor(j=0;ji;j+) if(strcmp(num_temp,tempj.num)=0) break; printf(n 請輸入消費金額 :);scanf(%f,&money); printf(n 卡號 姓名余額 n);printf(n消前 :%-10s %-10s %-10.2fn,tempj.num,,tem
42、pj.yu);printf(n消后 :%-10s %-10s %-10.2fn,tempj.num,,tempj.yu-money); tempj.yu=tempj.yu-money; tempj.sum=tempj.sum+money;飯卡管理系統(tǒng) files,w); for(j=0;ji-1;j+)fprintf(fp,%10s%10s%20.2f%4d%20.2fn,tempj.num,,tempj.yu,te mpj.guashi,tempj.sum);fclose(fp); printf(nn 此次消費成功!按任意鍵返回主菜單 );getcha
43、r();return;printf(nn 此次消費失??!按任意鍵返回主菜單.);getchar(); return;int myexist(char num10)FILE *fp=NULL;struct card tempN=0;i nt i=0,flag=-1,k=0;f 飯卡管理系統(tǒng) files,r); while(feof(fp)=0)fscanf(fp,%s%s%f%d%fn,tempk.num,,&tempk.yu,&tempk.guashi ,&tempk.sum);k+;f close(fp);f or(i=0;ik;i+) if(strcmp(num,tem
44、pi.num)=0) flag=1;break; r eturn flag;int myguashi(char num10)FILE *fp=NULL;struct card tempN=0;i nt i=0,j;f 飯卡管理系統(tǒng) files,r); while(feof(fp)=0)fscanf(fp,%s%s%f%d%fn,tempi.num,,&tempi.yu,&tempi.guashi,&tempi.sum);i+;f close(fp);f or(j=0;ji;j+) if(strcmp(num,tempj.num)=0)break;i f(tempj.guas
45、hi=1)return 1;else return 0;int myyu(char num10)FILE *fp=NULL;struct card tempN=0;i nt i=0,j;f 飯卡管理系統(tǒng) files,r);while(feof(fp)=0)fscanf(fp,%s%s%f%d%fn,tempi.num,,&tempi.yu,&tempi.guashi ,&tempi.sum);i+;f close(fp);f or(j=0;ji;j+) if(strcmp(num,tempj.num)=0) break;i f(tempj.yureturn 0;else return 1;void myaddyu()FILE *fp=NULL;struct card tempN=0;i nt i=0,j,k;c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 員工保密協(xié)議合同
- 礦權轉(zhuǎn)讓居間合同
- 房產(chǎn)出售委托協(xié)議書
- 旅游服務合作協(xié)議
- 公路工程投資合伙協(xié)議
- 人教版五年級下冊數(shù)學求最大公因數(shù)練習300題及答案
- 鐵肩中學門衛(wèi)合同8篇
- 第1課 殖民地人民的反抗斗爭(教學設計) 九年級歷史下冊同步高效課堂(部編版)
- 第十章 第4節(jié) 跨學科實踐:制作微型密度計(教學設計)2024-2025學年度人教版(2024)物理八年級下冊
- 房屋健康監(jiān)測設備安裝協(xié)議
- 2024年河南鄭州二七區(qū)侯寨中心衛(wèi)生院招聘筆試真題
- 數(shù)學-山東省天一大聯(lián)考齊魯名校教研共同體2024-2025學年(下)高三開學質(zhì)量檢測聯(lián)考試題和答案
- 2025-2030年中國電解鋁市場需求規(guī)模分析及前景趨勢預測報告
- 閩教版(2020)小學信息技術三年級上冊第2課《人工智能在身邊》說課稿及反思
- 正面上手發(fā)球技術 說課稿-2023-2024學年高一上學期體育與健康人教版必修第一冊
- 2025年上海寶冶集團限公司招聘歷年高頻重點提升(共500題)附帶答案詳解
- 佛山市普通高中2025屆高三下學期一模考試數(shù)學試題含解析
- 人教 一年級 數(shù)學 下冊 第6單元 100以內(nèi)的加法和減法(一)《兩位數(shù)加一位數(shù)(不進位)、整十數(shù)》課件
- 事故隱患排查治理情況月統(tǒng)計分析表
- 救護車掛靠私立醫(yī)院協(xié)議書(2篇)
- 《血透患教》課件
評論
0/150
提交評論