版權(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)教師: 成 績: 目 錄第1部分 課程設(shè)計(jì)題目與要求21問題描述22功能要求23任務(wù)分工2第2部分 飯卡管理系統(tǒng)的設(shè)計(jì)與功能實(shí)現(xiàn)31總體設(shè)計(jì)32數(shù)據(jù)結(jié)構(gòu)33.算法設(shè)計(jì)44程序代碼設(shè)計(jì)125測(cè)試與調(diào)試22第3部分 課程設(shè)計(jì)總結(jié)24個(gè)人總結(jié)24個(gè)人總結(jié)26結(jié)束語27附錄 程序清單28附錄 用戶使用說明書39參考文獻(xiàn)39第 35 頁 共 36 頁第1部分 課程設(shè)計(jì)題目與要求1 問題描述請(qǐng)輸入選項(xiàng)編號(hào)(07):1 建立飯卡文件2 買飯3 續(xù)錢4 添加新飯卡5 注銷舊飯卡6 設(shè)置與解除掛失7
2、 創(chuàng)新功能0退出系統(tǒng) 學(xué)校等大單位集體食堂買飯時(shí)間非常集中,這時(shí)如果食堂使用飯票賣飯,大家就得排長隊(duì)等候,而且還要經(jīng)過先去買飯票等麻煩的經(jīng)歷。因此食堂提出使用計(jì)算機(jī)進(jìn)行管理,食堂用飯卡賣飯,不僅提高賣飯速度,還易于管理,減少不必要的麻煩,同時(shí)減輕管理人員的工作負(fù)擔(dān)。2 功能要求重復(fù)顯示如圖所示的主菜單,在主菜單中選擇任意一項(xiàng),均實(shí)現(xiàn)相應(yīng)功能。在主菜單中選擇1,建立名為card.dat的文件,并在其中添加若干人的飯卡號(hào)、姓名、金額、掛失信息,要求飯卡號(hào)是唯一的。 在主菜單中選擇2,要求用戶輸入飯卡號(hào)、飯費(fèi),然后系統(tǒng)自動(dòng)從該人的飯卡中減去飯錢,并分別顯示買飯前后的金額,如果原來飯卡中的金額不足5元
3、,則不能買飯,而且顯示“金額不足夠,請(qǐng)續(xù)錢!”,如果掛失信息為真,則顯示“本卡已凍結(jié)!”。 在主菜單中選擇4,添加新飯卡,這時(shí)要求新飯卡號(hào)和已有的飯卡號(hào)不能重號(hào)。 在主菜單中選擇5,注銷舊飯卡。 在主菜單中選擇6,要求用戶輸入飯卡號(hào)和掛失信息,然后更新該飯卡的掛失信息。 在主菜單中選擇7, 在主菜單中選擇0,顯示“感謝使用本軟件!已正常退出,按任意鍵結(jié)束。”按任意鍵退出本系統(tǒng)。第2部分 飯卡管理系統(tǒng)的設(shè)計(jì)與功能實(shí)現(xiàn)1總體設(shè)計(jì) 圖1初始的主模塊圖2細(xì)分后的主模塊圖2數(shù)據(jù)結(jié)構(gòu)例如:struct card char name10,num10; float yu,sum; int guashi; ;
4、num10表示學(xué)號(hào)放在一維數(shù)組中,name10表示姓名放在一維數(shù)組中,yu表示余額,sum表示消費(fèi)金額的累積,guashi表示掛失的情況。3. 算法設(shè)計(jì)圖3主函數(shù)流程圖圖4 建立飯卡模塊流程圖圖5 買飯模塊流程圖圖6 續(xù)錢模塊流程圖圖7 添加新飯卡模塊流程圖圖8 注銷舊飯卡模塊流程圖圖9 設(shè)置與解除掛失模塊流程圖圖10 創(chuàng)新功能模塊流程圖4程序代碼設(shè)計(jì)采用模塊化的思想,按照“自頂向下,逐步細(xì)化”的原則設(shè)計(jì)算法。(1) 菜單的設(shè)計(jì)1, 本例需要輸出主菜單選擇界面,簡(jiǎn)單菜單的制作可利用printf函數(shù)實(shí)現(xiàn)。用printf函數(shù)將菜單項(xiàng)逐一打印到屏幕上,界面中的邊框可以通過多個(gè)printf函數(shù)輸出的“
5、|”和“-”拼接起來。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)閐o-while循壞是先執(zhí)行循環(huán)體,然后再判斷表達(dá)式。4,作為菜單,應(yīng)該給用戶一個(gè)正常的出口,即滿足一定條件時(shí)退出程序。為了給用戶提供方便,我們采用人機(jī)對(duì)話形式,當(dāng)用戶選擇某一菜單項(xiàng)后,系統(tǒng)立即完成相應(yīng)的功能,然后詢問用戶是否需要繼續(xù)
6、選擇,只要用戶繼續(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 '4':myaddcard
7、();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),
8、姓名,充值錢數(shù),并將它們存放在文件中;每輸入一組數(shù)據(jù),記錄數(shù)增1。建立飯卡的程序設(shè)計(jì)如下:void mycreat() int i=1;struct card temp=0;FILE *fp=NULL;char yes_no='0'temp.guashi=0; temp.sum=0;system("cls"); fp=fopen("D:飯卡管理系統(tǒng)filescard.dat","a"); if(fp=NULL) printf("nn 飯卡文件丟失!按任意鍵繼續(xù).");getchar();exit(0
9、); else fclose(fp); do printf("n 請(qǐng)輸入第%d個(gè)記錄:nn",i); printf(" 卡號(hào):");scanf("%s",&temp.num); if(myexist(temp.num)!=1) fp=fopen("D:飯卡管理系統(tǒng)filescard.dat","a"); printf(" 姓名:"); scanf("%s",&);printf(" 充值錢數(shù):"); sc
10、anf("%f",&temp.yu);fprintf(fp,"%10s%10s%20.2f%4d%20.2fn",temp.num,,temp.yu,temp.guashi,temp.sum); fclose(fp); i+; else printf(" 卡號(hào)重復(fù)!n");printf("n 請(qǐng)問您要繼續(xù)嗎?");do yes_no=getchar(); while(yes_no!='Y'&&yes_no!='y'&&yes_
11、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)一一做比較。用fp=fopen("D:飯卡管理系統(tǒng)filescard.dat","a");追加打開文件,輸入學(xué)生的姓名,充值錢數(shù),并將它們存放在文件中;每輸入一組數(shù)據(jù),記錄數(shù)增1。用do-while語句實(shí)現(xiàn)人機(jī)對(duì)話的功能,機(jī)器問用戶是否繼續(xù),如果繼續(xù)就接著建立新飯卡,否則返回主菜單。2,買飯
12、設(shè)計(jì)模塊,函數(shù)名mybuy.void mybuy() system("cls"); fp=fopen("D:飯卡管理系統(tǒng)filescard.dat","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",nu
13、m_temp); if(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;j<i;j+) if(strcmp(num_temp,tempj.num)=0) break; printf("n 請(qǐng)輸入消費(fèi)金額:");scanf("%f",&
14、amp;money); printf("n 卡號(hào) 姓名 余額n"); printf("n 消費(fèi)前: %-10s %-10s %-10.2fn",tempj.num,,tempj.yu); printf("n 消費(fèi)后: %-10s %-10s %-10.2fn",tempj.num,,tempj.yu-money); tempj.yu=tempj.yu-money; tempj.sum=tempj.sum+money; fp=fopen("D:飯卡管理系統(tǒng)filescard.dat&qu
15、ot;,"w"); for(j=0;j<i-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();return; printf("nn 此次消費(fèi)失敗!按任意鍵返回主菜單.");getch(); 判斷卡號(hào)存在模塊:函數(shù)名myexist。系統(tǒng)自動(dòng)用循環(huán)將文件中讀入的學(xué)號(hào)一
16、一做比較。判斷卡號(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"); fp=fopen("D:飯卡管理系統(tǒng)filescard.dat","r"); while(feof(fp)=0) fscanf(fp,"%s%s%f%d%fn",tempi.num,,&tempi.yu
17、,&tempi.guashi,&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;j<i;j+) if(strcmp(num_temp,tempj.num)=0) printf("n 請(qǐng)輸入續(xù)費(fèi)金額:");scanf("%f",&money); printf(&qu
18、ot;n 卡號(hào) 姓名 余額n"); printf(" 續(xù)費(fèi)前:%-10s %-10s %-10.2fnn",tempj.num,,tempj.yu); printf(" 續(xù)費(fèi)后:%-10s %-10s %-10.2fn",tempj.num,,tempj.yu+money); tempj.yu=tempj.yu+money; fp=fopen("D:飯卡管理系統(tǒng)filescard.dat","w"); for(k=0;k<i;k+) fprintf(fp,&q
19、uot;%10s%10s%20.2f%4d%20.2fn",tempk.num,,tempk.yu,tempk.guashi,tempk.sum); fclose(fp); printf("nn 續(xù)費(fèi)成功!按任意鍵返回主菜單."); else printf("nn 卡號(hào)不存在或已掛失!按任意鍵返回主菜單."); getchar(); 判斷卡號(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)
20、,并輸入續(xù)費(fèi)金額,使續(xù)費(fèi)成功。備注:以下函數(shù)為續(xù)錢設(shè)計(jì)模塊的子函數(shù):fp=fopen("D:飯卡管理系統(tǒng)filescard.dat","r"); while(feof(fp)=0) fscanf(fp,"%s%s%f%d%fn",tempk.num,,&tempk.yu,&tempk.guashi,&tempk.sum); k+; fclose(fp); for(i=0;i<k;i+) if(strcmp(num,tempi.num)=0) flag=1; break; return
21、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' temp.guashi=0; temp.sum=0; system("cls"); fp=fopen("D:飯卡管理系統(tǒng)filescard.dat","r"); if(fp=NULL) printf
22、("n 飯卡文件丟失!");getch();exit(0); fclose(fp); do printf("n 請(qǐng)輸入第%d個(gè)記錄:nn",i+1); printf(" 卡號(hào):");scanf("%s",&temp.num); if(myexist(temp.num)!=1) printf(" 姓名:"); scanf("%s",&); printf(" 充值錢數(shù):"); scanf("%f",&
23、;temp.yu); fp=fopen("D:飯卡管理系統(tǒng)filescard.dat","a"); fprintf(fp,"%10s%10s%20.2f%4d%20.2fn",temp.num,,temp.yu,temp.guashi,temp.sum); fclose(fp); i+; else printf("n 卡號(hào)重復(fù)!n"); printf("nn 要繼續(xù)嗎?"); doyes_no=getch(); while(yes_no!='Y'&&am
24、p;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)一一做比較。沒有找到,符合條件并輸入學(xué)生的姓名,充值錢數(shù),并將它們存放在文件中;每輸入一組數(shù)據(jù),記錄數(shù)增1。5,注銷舊飯卡模塊,函數(shù)名myzhuxiao。system("cls"); fp=fopen("D:飯卡管理系統(tǒng)filesc
25、ard.dat","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); printf("nn 請(qǐng)輸入卡號(hào):");scanf("%s",num_temp); if(myexist(num_temp
26、)=1) for(j=0;j<i;j+) if(strcmp(num_temp,tempj.num)=0) break; for(k=j;k<i;k+) tempk=tempk+1; fp=fopen("D:飯卡管理系統(tǒng)filescard.dat","w"); for(k=0;k<i-1;k+) fprintf(fp,"%10s%10s%20.2f%4d%20.2fn",tempk.num,,tempk.yu,tempk.guashi,tempk.sum); fclose(fp); printf(
27、"n 注銷成功!按任意鍵返回主菜單."); else printf("n %s不存在!按任意鍵返回主菜單.",num_temp); getch(); 查找學(xué)生飯卡卡號(hào)用比較函數(shù) strcmp(num_temp,tempj.num)=0。用for循環(huán)語句利用數(shù)組的替換使學(xué)生飯卡被注銷。6,設(shè)置與解除掛失模塊,函數(shù)名mysetguashi。system("cls"); printf("n"); printf(" |*|n"); printf(" | 請(qǐng)輸入選項(xiàng)編號(hào)(02) |n"
28、); printf(" |*|n"); printf(" | 1-設(shè)置掛失 |n"); printf(" | |n"); printf(" | 2-解除掛失 |n"); printf(" | |n"); printf(" | 0-返回 |n"); printf(" |*|n"); printf("n 請(qǐng)輸入操作編號(hào)"); fp=fopen("D:飯卡管理系統(tǒng)filescard.dat","r");
29、 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
30、(myexist(num_temp)=1) for(j=0;j<i;j+) if(strcmp(num_temp,tempj.num)=0) break; tempj.guashi=1; fp=fopen("D:飯卡管理系統(tǒng)filescard.dat","w"); for(k=0;k<i;k+) fprintf(fp,"%10s%10s%20.2f%4d%20.2fn",tempk.num,,tempk.yu,tempk.guashi,tempk.sum); fclose(fp); printf(&qu
31、ot;n 設(shè)置成功!按任意鍵返回主菜單.");getch();return; else printf("n 此卡不存在!按任意鍵返回主菜單.");getch();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;j<i;j+) if(strcmp(num_temp,tempj.num)=0) bre
32、ak; tempj.guashi=0; fp=fopen("D:飯卡管理系統(tǒng)filescard.dat","w"); for(k=0;k<i;k+) fprintf(fp,"%10s%10s%20.2f%4d%20.2f%n",tempk.num,,tempk.yu,tempk.guashi,tempk.sum); fclose(fp); else printf(" 此卡不存在!按任意鍵返回主菜單.");getch(); 用if-else語句分別選擇設(shè)置和解除掛失功能。備注:以下函數(shù)為設(shè)置
33、與解除掛失的子函數(shù):int myguashi(char num10) FILE *fp=NULL; struct card tempN=0; int i=0,j; fp=fopen("D:飯卡管理系統(tǒng)filescard.dat","r"); while(feof(fp)=0) fscanf(fp,"%s%s%f%d%fn",tempi.num,,&tempi.yu,&tempi.guashi,&tempi.sum); i+; fclose(fp); for(j=0;j<i;j+) if
34、(strcmp(num,tempj.num)=0) break; if(tempj.guashi=1) return 1; else return 0; 7,創(chuàng)新功能模塊,函數(shù)名mynew。dofp=fopen("D:飯卡管理系統(tǒng)filescard.dat","r");if(fp=NULL) printf("n 打開文件失敗!n");return; while(feof(fp)=0) fscanf(fp,"%s%s%f%d%fn",tempk.num,,&tempk.yu,&te
35、mpk.guashi,&tempk.sum); k+; fclose(fp); system("cls");printf("請(qǐng)輸入卡號(hào):");scanf("%s",num_temp);for(i=0;i<k;i+) if(strcmp(num_temp,tempi.num)=0) break;if(tempi.sum>=50) tempi.yu=tempi.sum/50+tempi.yu;tempi.sum=(int)tempi.sum%50;printf("余額為%f",tempi.yu);e
36、lse printf("您的消費(fèi)金額不足50");fp=fopen("D:飯卡管理系統(tǒng)filescard.dat","w"); for(j=0;j<k;j+) fprintf(fp,"%10s%10s%20.2f%4d%20.2f%n",tempj.num,,tempj.yu,tempj.guashi,tempj.sum);fclose(fp);printf("n 請(qǐng)問您要繼續(xù)嗎?"); do yes_no=getchar(); while(yes_no!='Y
37、'&&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(" |*|
38、n"); printf(" | 請(qǐng)輸入選項(xiàng)編號(hào)(07) |n"); printf(" |*|n"); printf(" | 1-建立飯卡文件 |n"); printf(" | 2-買飯 |n"); printf(" | 3-續(xù)錢 |n"); printf(" | 4-添加新飯卡 |n"); printf(" | 5-注銷舊飯卡 |n"); printf(" | 6-設(shè)置與解除掛失 |n"); printf(" | 7
39、-創(chuàng)新功能 |n"); printf(" | 0-退出系統(tǒng) |n"); printf(" |*|n"); 利用myprint函數(shù)實(shí)現(xiàn)主菜單的顯示功能。 備注以下為查找學(xué)生飯卡卡號(hào)的子函數(shù):int myexist(char num10) FILE *fp=NULL; struct card tempN=0; int i=0,flag=-1,k=0;fp=fopen("D:飯卡管理系統(tǒng)filescard.dat","r"); while(feof(fp)=0) fscanf(fp,"%s%s%f%d
40、%fn",tempk.num,,&tempk.yu,&tempk.guashi,&tempk.sum);k+;fclose(fp); for(i=0;i<k;i+) if(strcmp(num,tempi.num)=0) flag=1;break; return 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元
41、。顯示飯卡余額的信息,并且相應(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)用戶須知的內(nèi)容。7選擇卡號(hào)為
42、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ò)誤信息。顯示學(xué)號(hào)重復(fù)相關(guān)的錯(cuò)誤信息。2對(duì)學(xué)號(hào)為2的用戶進(jìn)行買飯操作。顯示消費(fèi)
43、金額不足相關(guān)的錯(cuò)誤信息。顯示消費(fèi)金額不足相關(guān)的錯(cuò)誤信息。3對(duì)卡號(hào)為3的用戶進(jìn)行兩次注銷。在第二次注銷時(shí),顯示卡號(hào)不存在。在第二次注銷時(shí),顯示卡號(hào)不存在。4對(duì)卡號(hào)為1的用戶進(jìn)行飯卡建立操作。顯示卡號(hào)重復(fù)相關(guān)的錯(cuò)誤信息。顯示卡號(hào)重復(fù)相關(guān)的錯(cuò)誤信息。5對(duì)卡號(hào)為4的用戶進(jìn)行續(xù)錢操作顯示學(xué)號(hào)不存在相關(guān)信息。顯示學(xué)號(hào)不存在相關(guān)信息。6把卡號(hào)為5的用戶進(jìn)行返值的操作顯示消費(fèi)金額不足的錯(cuò)誤信息。顯示消費(fèi)金額不足的錯(cuò)誤信息。7用戶在主界面輸入任何0-7以外的信息屏幕上顯示選項(xiàng)非法錯(cuò)誤。屏幕上顯示選項(xiàng)非法錯(cuò)誤。 附錄 程序清單#include<stdio.h> #include<stdlib.h
44、> #include<conio.h> #include<string.h> #define N 100 struct card char name10,num10; 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(); vo
45、id mysetguashi(); void mynew(); main() char choose='0' char yes_no='0' do myprint();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; cas
46、e '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; printf("n 請(qǐng)問您要繼續(xù)嗎?"); do yes_no=getchar();while(yes_no!='Y
47、'&&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");print
48、f(" | 1-建立飯卡文件 |n");printf(" | 2-買飯 |n");printf(" | 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 my
49、creat() int i=1;struct card temp=0;FILE *fp=NULL;char yes_no='0'temp.guashi=0; temp.sum=0;system("cls"); fp=fopen("D:card.dat","w"); if(fp=NULL) printf("nn 飯卡文件丟失!按任意鍵繼續(xù).");getchar();exit(0); else fclose(fp); do printf("n 請(qǐng)輸入第%d個(gè)記錄:nn",i); pr
50、intf(" 卡號(hào):");scanf("%s",&temp.num); if(myexist(temp.num)!=1) fp=fopen("D:card.dat","w"); printf(" 姓名:"); scanf("%s",&);printf(" 充值錢數(shù):"); scanf("%f",&temp.yu);fprintf(fp,"%10s%10s%20.2f%4d%20.2fn
51、",temp.num,,temp.yu,temp.guashi,temp.sum); fclose(fp); i+; else printf(" 卡號(hào)重復(fù)!n");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'|ye
52、s_no='y'); void mybuy() FILE *fp=NULL;struct card tempN=0;int i=0,j;char num_temp10=0;float money;system("cls");fp=fopen("D:飯卡管理系統(tǒng)filescard.dat","r"); while(feof(fp)=0)fscanf(fp,"%s%s%f%d%f",tempi.num,,&tempi.yu,&tempi.guashi,&tem
53、pi.sum); i+; fclose(fp); printf("n 請(qǐng)輸入卡號(hào):");scanf("%s",num_temp); if(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;j<i;j+) if(strcmp(num_tem
54、p,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,,tempj.yu); printf("n 消費(fèi)后:%-10s %-10s %-10.2fn",tempj.num,,tempj.yu-money);tempj.yu=tempj.yu-mo
55、ney;tempj.sum=tempj.sum+money;fp=fopen("D:飯卡管理系統(tǒng)filescard.dat","w");for(j=0;j<i-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)成功!按任意鍵返回主菜單.");getchar();return; printf("nn 此次消費(fèi)失敗!按任意鍵返回主菜單.");getchar()
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高新技術(shù)產(chǎn)品銷售合同管理規(guī)定2篇
- 2025版醫(yī)療器械融資委托擔(dān)保合同樣本3篇
- 個(gè)體資金借入合同:固定期限還款合同版
- 2025版企事業(yè)單位食堂承包與設(shè)備租賃合同范本3篇
- 二零二五版民用爆破工程爆破作業(yè)安全生產(chǎn)應(yīng)急演練合同4篇
- 2025年度別墅租賃管理服務(wù)合同規(guī)范4篇
- 世紀(jì)不動(dòng)產(chǎn)2024年度存量房購買合同
- 2025年航空器維修保障合同4篇
- 2025年牛場(chǎng)租賃與養(yǎng)殖一體化項(xiàng)目合同范本3篇
- 個(gè)人信用貸款合同2024年度樣本
- 圖像識(shí)別領(lǐng)域自適應(yīng)技術(shù)-洞察分析
- 個(gè)體戶店鋪?zhàn)赓U合同
- 新概念英語第二冊(cè)考評(píng)試卷含答案(第49-56課)
- 【奧運(yùn)會(huì)獎(jiǎng)牌榜預(yù)測(cè)建模實(shí)證探析12000字(論文)】
- 保安部工作計(jì)劃
- 2023痛風(fēng)診療規(guī)范(完整版)
- (完整word版)企業(yè)對(duì)賬函模板
- 土力學(xué)與地基基礎(chǔ)(課件)
- 主要負(fù)責(zé)人重大隱患帶隊(duì)檢查表
- 魯濱遜漂流記人物形象分析
- 危險(xiǎn)廢物貯存?zhèn)}庫建設(shè)標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論