




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課程設(shè)計(jì)報(bào)告課程名稱:C 語言程序設(shè)計(jì)課設(shè)項(xiàng)目名稱:飯卡管理系統(tǒng)學(xué) 院:專業(yè):姓 名:學(xué)號(hào):指導(dǎo)教師:成績(jī):1目錄第 1部分 課程設(shè)計(jì)題目與要求 錯(cuò)誤! 未定義書簽1問題描述 錯(cuò)誤!未定義書簽。2功能要求 錯(cuò)誤!未定義書簽。3任務(wù)分工 錯(cuò)誤!未定義書簽。第 2部分 飯卡管理系統(tǒng)的設(shè)計(jì)與功能實(shí)現(xiàn) 錯(cuò)誤! 未定義書簽1總體設(shè)計(jì) 錯(cuò)誤! 未定義書簽。2數(shù)據(jù)結(jié)構(gòu) 錯(cuò)誤! 未定義書簽。3. 算法設(shè)計(jì) 錯(cuò)誤! 未定義書簽。4程序代碼設(shè)計(jì) 錯(cuò)誤! 未定義書簽。5測(cè)試與調(diào)試 錯(cuò)誤! 未定義書簽。第 3部分 課程設(shè)計(jì)總結(jié) 錯(cuò)誤! 未定義書簽個(gè)人總結(jié) 錯(cuò)誤! 未定義書簽。個(gè)人總結(jié) 錯(cuò)誤! 未定義書簽。結(jié)束語 錯(cuò)誤
2、! 未定義書簽。附錄I程序清單 錯(cuò)誤!未定義書簽附錄U用戶使用說明書 錯(cuò)誤!未定義書簽參考文獻(xiàn) 錯(cuò)誤!未定義書簽請(qǐng)輸入選項(xiàng)編號(hào) (0 7):1 建立飯卡文 件2買飯3 續(xù)錢4 添加新飯卡5 注銷舊飯卡6 設(shè)置與解除 掛失7 創(chuàng)新功能0退出系統(tǒng)在主菜單中選擇在主菜單中選擇在主菜單中選擇 信息。在主菜單中選擇在主菜單中選擇 按任意鍵退出本系統(tǒng)。第1部分 課程設(shè)計(jì)題目與要求1 .問題描述學(xué)校等大單位集體食堂買飯時(shí)間非常集中,這時(shí)如果食堂使用飯票賣飯, 大家就得排長(zhǎng)隊(duì)等候,而且還要經(jīng)過先去買飯票等麻煩的經(jīng)歷。因此食堂提出使用 計(jì)算機(jī)進(jìn)行管理,食堂用飯卡賣飯,不僅提高賣飯速度,還 易于管理,減少不必要的
3、麻煩,同時(shí)減輕管理人員的工作負(fù) 擔(dān)。2.功能要求重復(fù)顯示如圖所示的主菜單,在主菜單中選擇任意一 項(xiàng),均實(shí)現(xiàn)相應(yīng)功能。在主菜單中選擇1,建立名為的文件,并在其中添加若 干人的飯卡號(hào)、姓名、金額、掛失信息,要求飯卡號(hào)是唯一 的。在主菜單中選擇2,要求用戶輸入飯卡號(hào)、飯費(fèi),然后系統(tǒng)自動(dòng)從該人的飯卡 中減去飯錢,并分別顯示買飯前后的金額,如果原來飯卡中的金額不足5元,則不能買飯,而且顯示“金額不足夠,請(qǐng)續(xù)錢!”,如果掛失信息為真,則顯示“本卡 已凍結(jié)! ”。4,添加新飯卡,這時(shí)要求新飯卡號(hào)和已有的飯卡號(hào)不能重號(hào)。5, 注銷舊飯卡。6, 要求用戶輸入飯卡號(hào)和掛失信息,然后更新該飯卡的掛失7,0,顯示“感
4、謝使用本軟件!已正常退出,按任意鍵結(jié)束?!?第2部分 飯卡管理系統(tǒng)的設(shè)計(jì)與功能實(shí)現(xiàn)1 .總體設(shè)計(jì)主模塊建立飯卡文件買飯續(xù)錢添加新飯卡注銷舊飯卡設(shè)置與解除掛失創(chuàng)新功能圖i初始的主模塊圖2細(xì)分后的主模塊圖2.數(shù)據(jù)結(jié)構(gòu)例如:struct card char n ame10, num10; float yu,sum; int guashi; num10表示學(xué)號(hào)放在一維數(shù)組中,name10表示姓名放在一維數(shù)組中,yu表示余額,sum表示消費(fèi)金額的累積,guashi表示掛失的情況。3.算法設(shè)計(jì)圖3主函數(shù)流程圖圖4建立飯卡模塊流程圖入口打開文件結(jié)束記錄寫入文件1F關(guān)閉文件1出口打開成功?F輸入卡號(hào)卡號(hào)不存在
5、?此卡掛失?假卡號(hào)重復(fù)?輸入金額1/顯示消費(fèi)情況圖5買飯模塊流程圖按任意鍵返 回主菜單打開文件結(jié)束假打開成功?輸入卡號(hào)是否存在?結(jié)束輸入金額顯示用戶信息記錄寫入文件1關(guān)閉文件1出口圖6續(xù)錢模塊流程圖10圖7添加新飯卡模塊流程圖11假入口圖8注銷舊飯卡模塊流程圖12真Temp.guashi=1記錄寫入文件關(guān)閉文件圖9設(shè)置與解除掛失模塊流程圖14關(guān)閉文件圖10創(chuàng)新功能模塊流程圖154程序代碼設(shè)計(jì)采用模塊化的思想,按照“自頂向下,逐步細(xì)化”的原則設(shè)計(jì)算法。( 1)菜單的設(shè)計(jì)1, 本例需要輸出主菜單選擇界面,簡(jiǎn)單菜單的制作可利用printf 函數(shù)實(shí)現(xiàn)。用 printf 函數(shù)將菜單項(xiàng)逐一打印到屏幕上,界
6、面中的邊框可以通過多個(gè) printf 函數(shù)輸出的“ | ”和“- ”拼接起來。2, 菜單應(yīng)根據(jù)用戶的選擇做出不同的反應(yīng), 因此需要使用分支結(jié)構(gòu)實(shí)現(xiàn)選 擇選項(xiàng)的功能。根據(jù)題意,主菜單含有 8 個(gè)菜單選項(xiàng),屬于多分支條件判斷, 使用帶 break 和 switch 語句最為合適。3, 因?yàn)楸纠哂兄貜?fù)選擇主菜單選項(xiàng)的功能, 因此需要使用循環(huán)結(jié)構(gòu)。 在 本例中菜單至少要顯示一次,隨后才判斷是否繼續(xù)選擇主菜單,所以使用 do-while 循壞比較好,因?yàn)?do-while 循壞是先執(zhí)行循環(huán)體, 然后再判斷表達(dá)式。4,作為菜單,應(yīng)該給用戶一個(gè)正常的出口,即滿足一定條件時(shí)退出程序。為 了給用戶提供方便,我
7、們采用人機(jī)對(duì)話形式,當(dāng)用戶選擇某一菜單項(xiàng)后,系統(tǒng)立即 完成相應(yīng)的功能,然后詢問用戶是否需要繼續(xù)選擇,只要用戶繼續(xù)選擇(輸入 y 或 Y),主菜單就會(huì)在屏幕上反復(fù)出現(xiàn),只有當(dāng)用戶不再選擇(輸入 N或n),才可退 出主菜單。除此之外,為了使用方便,在主菜單中還特設(shè) 0 選項(xiàng),選擇它也能正常 退出程序。為了實(shí)現(xiàn)上述功能,有關(guān)語句都應(yīng)放在 do-while 循環(huán)體中。選擇選項(xiàng)的程序段可設(shè)計(jì)成如下形式: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 已 正 常 退 出 , 按 任 意 鍵 結(jié) 束 );exit(0);break;default :printf(n 該選項(xiàng)非法 !);break;( 2 ) 設(shè)計(jì)各模塊的算法,這是逐步細(xì)化的過程。1, 建立飯卡模塊,函數(shù)名 mycreat 。 在該模塊中輸入學(xué)生的卡號(hào),姓名,充值錢數(shù),并將它們存放在文件中;每輸 入一組數(shù)據(jù),記錄數(shù)增
9、1。建立飯卡的程序設(shè)計(jì)如下: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請(qǐng)輸入第 d個(gè)記錄:nn,i);printf( 卡號(hào) :);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( 卡號(hào)重復(fù) !n); printf(n 請(qǐng)問您要繼續(xù)嗎 ); doyes_no=getchar(); while(yes_no!=Y&yes_no!=y&yes_no!=N&yes_no!=n);while(yes_no=Y|yes_no=y); 在文件夾中尋找已輸入的卡號(hào)用函數(shù) myexist 系統(tǒng)自動(dòng)用循環(huán)將文件中讀入 的學(xué) 號(hào)一一做比較。用飯卡管理系統(tǒng) files,a); 追加打開文件,輸入學(xué)生
11、的姓名,充值錢數(shù),并將它們存放在文件中;每輸入一組數(shù)據(jù),記錄數(shù)增1。用 do-while 語句實(shí)現(xiàn)人機(jī)對(duì)話的功能,機(jī)器問用戶是否繼續(xù),如果繼續(xù)就 接著建立新飯卡,否則返回主菜單。2, 買飯?jiān)O(shè)計(jì)模塊,函數(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 請(qǐng)輸入卡號(hào) :);scanf(%s,num_temp); if
12、(myexist(num_temp)=-1) printf(n卡號(hào)不存在! );else if(myguashi(num_temp)=1) printf(n本卡已凍結(jié)! );else if(myyu(num_temp)=0) printf(n余額不夠,請(qǐng)續(xù)費(fèi)! );else for(j=0;ji;j+)if(strcmp(num_temp,tempj.num)=0) break;printf(n請(qǐng)輸入消費(fèi)金額 :);scanf(%f,&money);printf(n卡號(hào)姓名余額 n);printf(n消費(fèi)、八前:%-10s%-10s%-10.2fn,tempj.num,,t
13、empj.yu);printf(n消費(fèi)后:%-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 此次消費(fèi)成功!按任意鍵返回主菜單 );getch();
14、return;printf(nn 此次消費(fèi)失敗!按任意鍵返回主菜單.);getch();判斷卡號(hào)存在模塊:函數(shù)名 myexist 。系統(tǒng)自動(dòng)用循環(huán)將文件中讀入的學(xué)號(hào)一 一做比較。判斷卡號(hào)掛失情況模塊:函數(shù)名myguashi。系統(tǒng)自動(dòng)用if-else語句判斷掛失情況。判斷卡號(hào)余額情況模塊:函數(shù)名myyu。系統(tǒng)自動(dòng)用if-else語句分別判斷卡號(hào)余額是否充足。3, 續(xù)錢設(shè)計(jì)模塊,函數(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 請(qǐng)輸入卡號(hào) :);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 請(qǐng)輸入續(xù)費(fèi)金額 :);scanf(%f,&money); printf(n 卡號(hào) 姓名 余額 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ù)費(fèi)成功!按任意鍵返回主菜單 );elseprintf(nn 卡號(hào)不存在或已掛失!按任意鍵返回主菜單.);get
17、char();判斷卡號(hào)存在情況:函數(shù)名 myexist 。系統(tǒng)自動(dòng)用循環(huán)將文件中讀入的學(xué)號(hào)一 一做比較。判斷掛失情況:函數(shù)名 myguashi。系統(tǒng)自動(dòng)用if-else語句判斷掛失情況用 for 循環(huán)結(jié)構(gòu)找尋對(duì)應(yīng)的學(xué)號(hào),并輸入續(xù)費(fèi)金額,使續(xù)費(fèi)成功。備注:以下函數(shù)為續(xù)錢設(shè)計(jì)模塊的子函數(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。 在該模塊中輸入學(xué)生的卡號(hào),姓名,充值錢數(shù),并將它們存放在文件中;每輸 入一組數(shù)據(jù),記錄數(shù)增 1。添加飯卡模塊設(shè)計(jì)程序如下: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 請(qǐng)輸入第 c個(gè)記錄:nn,i+1);printf( 卡號(hào) :);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卡號(hào)重復(fù) !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);在文件夾中尋找已輸入的卡號(hào)用函數(shù) myexist 系統(tǒng)自動(dòng)用循環(huán)將文件中讀入 的學(xué)號(hào)一一做比較。 沒有找到,符合條件并輸入學(xué)生的姓名,充值錢數(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 請(qǐng)輸入卡號(hào) :);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();查找學(xué)生飯卡卡號(hào)用比較函數(shù) strcmp(num_temp,tempj.num)=0 。 用 for 循環(huán)語句利用數(shù)組的替換使學(xué)生飯卡被注銷。6, 設(shè)置與解除掛失模塊,函數(shù)名 mysetguashisystem(cls);printf(n);printf( |*|n);29printf( |請(qǐng)輸入選項(xiàng)編號(hào)(02)|n);printf( |*|n);printf( |1-設(shè)置掛失|n);printf( |printf( |2-printf( |n);解除掛失
23、|n);|n);printf( |0-返回 |n);printf( |*|n);printf(n 請(qǐng)輸入操作編號(hào) );飯卡管理系統(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 請(qǐng)輸入卡號(hào) :);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 設(shè)置成功!按任意鍵返回主菜單 );getch();return;else printf(n此卡不存在!按任意鍵返回主菜單 );getch()
25、;return;else if(choose=2) printf(nn請(qǐng)輸入卡號(hào) :);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ù)為設(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( 請(qǐng)輸入卡號(hào) :); 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( 您的消費(fèi)金額不足 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 請(qǐng)問您要繼續(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 語句判斷消費(fèi)金額是否大于 50 元。如果大于五十元用到 tempi.yu , tempi.sum 計(jì)算出返回金錢。8, 界面設(shè)計(jì)模塊,函數(shù)名 myprint void myprint() system(cls);printf(nn);printf( |*|n);printf( |請(qǐng)輸入選項(xiàng)編號(hào)(07)|n);printf( |1-建立飯卡文件|n);printf( |2-買飯|n);printf( |3-續(xù)錢|n)
30、;printf( |4-添加新飯卡|n);printf( |5-注銷舊飯卡|n);printf( |6-設(shè)置與解除掛失|n);printf( |7-創(chuàng)新功能|n);printf( |0-退出系統(tǒng)|n);printf( |*|n);printf( |*|n);利用 myprint 函數(shù)實(shí)現(xiàn)主菜單的顯示功能備注以下為查找學(xué)生飯卡卡號(hào)的子函數(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.測(cè)試與調(diào)試測(cè)試數(shù)據(jù)類 型測(cè)試數(shù)據(jù)預(yù)期結(jié)果實(shí)例結(jié)果合法數(shù)據(jù)1建立1-10個(gè)學(xué)生飯卡,1-5輸入金額50元以下,6-10輸入金額50以上。查看檔案,存在 與剛才對(duì)應(yīng)的十條記 錄。查看檔案,存在 與剛才對(duì)應(yīng)的十條記 錄。2對(duì)卡號(hào)1-10卡號(hào)中任選一個(gè)進(jìn)行買 飯,輸入消費(fèi)金額20 丿元。顯示飯卡余額的 信息
32、,并且相應(yīng)的扣 除金額20元。顯示飯卡余額的 信息,并且相應(yīng)的扣 除金額20元。3從1-10個(gè)卡號(hào)中任選一個(gè)進(jìn)行續(xù) 錢,續(xù)錢金額為100 丿元。該學(xué)號(hào)對(duì)應(yīng)的余 額增加100元。該學(xué)號(hào)對(duì)應(yīng)的余 額增加100元。4添加新飯卡,卡 號(hào)為11,續(xù)費(fèi)金額為200 元。查看檔案,多了 一個(gè)卡號(hào)為11的記 錄,且信息與對(duì)應(yīng)的 輸入信息相等。查看檔案,多了 一個(gè)卡號(hào)為11的記 錄,且信息與對(duì)應(yīng)的 輸入信息相等。5改變卡號(hào)為5的 檔案,使其消費(fèi)累計(jì) 金額為200元,之后 進(jìn)行返值操作該用戶消費(fèi)后的 余額增加2元。該用戶消費(fèi)后的 余額增加2元。6輸入用戶須知對(duì) 應(yīng)的選項(xiàng)號(hào)。屏幕上出現(xiàn)用戶 須知的內(nèi)容。屏幕上出現(xiàn)用
33、戶 須知的內(nèi)容。7選擇卡號(hào)為6進(jìn)行掛失操作,選擇設(shè) 置掛失查看檔案,卡號(hào) 為6的用戶飯卡已掛 失。查看檔案,卡號(hào) 為6的用戶飯卡已掛 失。8把學(xué)號(hào)為11的 用戶進(jìn)行注銷操作。查看檔案,卡號(hào) 為11的用戶的相關(guān) 記錄消失。查看檔案,卡號(hào) 為11的用戶的相關(guān) 記錄消失。9選擇卡號(hào)為6進(jìn)行掛失操作,選擇解 除掛失查看檔案,卡號(hào) 為6的用戶飯卡已解 除掛失。查看檔案,卡號(hào) 為6的用戶飯卡已解 除掛失。10用戶輸入0屏幕顯示退出的 相關(guān)提示信息,之后 再按任何鍵時(shí),能夠 退出。屏幕顯示退出的 相關(guān)提示信息,之后 再按任何鍵時(shí),能夠 退出。非法數(shù)據(jù)1對(duì)卡號(hào)為1的用 戶進(jìn)行添加飯卡。顯示學(xué)號(hào)重復(fù)相 關(guān)的錯(cuò)誤
34、信息。顯示學(xué)號(hào)重復(fù)相 關(guān)的錯(cuò)誤信息。2對(duì)學(xué)號(hào)為2的用顯示消費(fèi)金額不顯示消費(fèi)金額不戶進(jìn)行買飯操作。對(duì)卡號(hào)為3的用戶進(jìn)行兩次注銷。足相關(guān)的錯(cuò)誤信息。 在第二次注銷 時(shí),顯示卡號(hào)不存在。足相關(guān)的錯(cuò)誤信息。 在第二次注銷 時(shí),顯示卡號(hào)不存在。對(duì)卡號(hào)為1的用 戶進(jìn)行飯卡建立操 作。顯示卡號(hào)重復(fù)相 關(guān)的錯(cuò)誤信息。顯示卡號(hào)重復(fù)相 關(guān)的錯(cuò)誤信息。對(duì)卡號(hào)為4的用 戶進(jìn)行續(xù)錢操作把卡號(hào)為5的用 戶進(jìn)行返值的操作用戶在主界面輸入任何0-7以外的信息顯示學(xué)號(hào)不存在 相關(guān)信息。顯示消費(fèi)金額不 足的錯(cuò)誤信息。顯示學(xué)號(hào)不存在 相關(guān)信息。顯示消費(fèi)金額不 足的錯(cuò)誤信息。屏幕上顯示選 項(xiàng)非法錯(cuò)誤。屏幕上顯示選 項(xiàng)非法錯(cuò)誤。附錄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 請(qǐng)選擇操作編號(hào): ); 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、按任意鍵結(jié) 束 );exit(0);break;default :printf(n 該選項(xiàng)非法 !);break;printf(n 請(qǐng)問您要繼續(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( |請(qǐng)輸入選項(xiàng)編號(hào)(07)|n);printf( |*|n);printf( |1-建立飯卡文件|n);printf( |2-買飯|n);pr
38、intf( |3-續(xù)錢|n);printf( |4-添加新飯卡|n);printf( |5-注銷舊飯卡|n);printf( |6-設(shè)置與解除掛失|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請(qǐng)輸入第 d個(gè)記錄:nn,i);printf(卡號(hào) :);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( 卡號(hào)重復(fù) !n);printf(n 請(qǐng)問您要繼續(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 請(qǐng)輸入卡號(hào) :);scanf(%s,num_temp);i f(myexist(
41、num_temp)=-1) printf(n卡號(hào)不存在! );else if(myguashi(num_temp)=1) printf(n 本卡已凍結(jié)! );else if(myyu(num_temp)=0) printf(n 余額不夠,請(qǐng)續(xù)費(fèi)! );elsefor(j=0;ji;j+) if(strcmp(num_temp,tempj.num)=0) break; printf(n 請(qǐng)輸入消費(fèi)金額 :);scanf(%f,&money); printf(n 卡號(hào) 姓名余額 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 此次消費(fèi)成功!按任意鍵返回主菜單 );getcha
43、r();return;printf(nn 此次消費(fèi)失??!按任意鍵返回主菜單.);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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高效能固態(tài)電池電解質(zhì)大宗采購年度協(xié)議
- 旅游交通服務(wù)合作經(jīng)營管理協(xié)議
- 教育類音頻內(nèi)容版權(quán)收益分成合同
- 非煤礦山開采工程安全責(zé)任承包合同
- 財(cái)政風(fēng)險(xiǎn)評(píng)估補(bǔ)充協(xié)議
- 美團(tuán)民宿房源精細(xì)化托管與營銷合作協(xié)議
- 美妝品牌購物中心美妝專區(qū)委托經(jīng)營與品牌孵化合同
- 教師教育質(zhì)量監(jiān)控與改進(jìn)協(xié)議
- 綠色住宅認(rèn)證文件審核執(zhí)行合同
- 梭梭種植項(xiàng)協(xié)議書
- 江蘇省南通市海門市海門中學(xué)2025屆高考物理四模試卷含解析
- 2025年中考物理模擬考試卷(帶答案)
- 希沃白板5培訓(xùn)知識(shí)點(diǎn)
- deepseek的使用技巧與實(shí)際應(yīng)用培訓(xùn)課件
- 污水處理站設(shè)備采購及配套方案(技術(shù)標(biāo))
- 攪拌站申請(qǐng)書
- 抖店運(yùn)營流程
- 印刷廠印刷安全事故應(yīng)急預(yù)案
- 《西安市建筑工程安全生產(chǎn)標(biāo)準(zhǔn)化圖冊(cè)(2023版)》
- 光伏發(fā)電監(jiān)理規(guī)劃
- 《譫妄護(hù)理查房》課件
評(píng)論
0/150
提交評(píng)論