版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、俱樂(lè)部DVD管理系統(tǒng)題目要求 允許俱樂(lè)部成員租用DVD。若想成為會(huì)員,首先應(yīng)簽約并且可按月繳納費(fèi)用。會(huì)員一次可租用三個(gè)DVD,沒(méi)有時(shí)間限制??蔀g覽所有可租用的DVD,能實(shí)現(xiàn)新成員的開(kāi)戶,會(huì)員對(duì)其賬戶狀況的查詢以及俱樂(lè)部管理者對(duì)所有交易情況的查看功能。需求分析DVD信息和俱樂(lè)部會(huì)員信息用文件存儲(chǔ),提供文件的輸入輸出操作;注冊(cè)新會(huì)員,提供文件的添加操作;實(shí)現(xiàn)按月交納費(fèi)用,提供文件的修改操作;瀏覽信息應(yīng)提供顯示操作;實(shí)現(xiàn)查詢則提供文件的查找操作;另外提供鍵盤是選擇菜單以實(shí)現(xiàn)功能選擇??傮w設(shè)計(jì) 整體設(shè)計(jì)為會(huì)員注冊(cè)模塊,會(huì)員繳費(fèi)模塊,會(huì)員租用DVD模塊,會(huì)員租用DVD模塊,信息瀏覽模塊和信息查詢模塊等。
2、選擇菜單以實(shí)現(xiàn)功能選擇。如下圖所示。俱樂(lè)部管理系統(tǒng)注冊(cè)繳費(fèi) 歸還租用瀏覽查詢輸信息修改 詳細(xì)設(shè)計(jì)1 主函數(shù)主函數(shù)一般設(shè)計(jì)的比較簡(jiǎn)單,只提供輸入,處理和輸出部分的函數(shù)調(diào)用。其中各功能模塊用菜單方式選擇。如下圖所示。 void menu() /*實(shí)現(xiàn)鍵盤選擇式菜單*/ int n,k; do puts(tt*MENU*nn); puts(tttt 1.enter); puts(tttt 2.Member Register); puts(tttt 3.Member Payment); puts(tttt 4.DVD Return); puts(tttt 5.DVD Rent); puts(tttt
3、6.Message Browse); puts(tttt 7.Message Search); puts(tttt 8.modify); puts(tttt 9.Exit); puts(nntt*nn); printf(Choice your number(1-9): bb); scanf(%d,&n); if(n9) /*對(duì)輸入的數(shù)字做判斷*/ k=1;getchar(); else k=0; while(k=1); switch(n) /*switch函數(shù)實(shí)現(xiàn)功能選擇*/ case 1:enter();break; /*輸入信息模塊*/ case 2:Register();break; /
4、*會(huì)員注冊(cè)模塊*/ case 3:Payment();break; /*會(huì)員繳費(fèi)模塊*/ case 4:Reback();break; /*會(huì)員歸還DVD模塊*/ case 5:Rent();break; /*會(huì)員租用DVD模塊*/ case 6:Browse();break; /*信息瀏覽模塊*/ case 7:Search();break; /*信息查詢模塊*/ case 8:modify();break; /*信息修改模塊*/ case 9:exit(0); 開(kāi) 始顯示一系列功能選項(xiàng)輸入n,判斷n是否是1-9根據(jù)n的值調(diào)用各功能模塊函數(shù)結(jié) 束2 各功能模塊設(shè)計(jì) (1)輸入模塊【數(shù)據(jù)結(jié)構(gòu)】
5、原始數(shù)據(jù)有兩類:一是會(huì)員信息,二是DVD信息;兩個(gè)信息分別保存在兩個(gè)文件中。文件名分別為member.txt,dvd.txt。采用結(jié)構(gòu)體的形式把信息作為一個(gè)整體來(lái)處理。會(huì)員的信息用結(jié)構(gòu)體數(shù)組形式表示如下:struct Member char name20; char sex20; int age; char dvd120; char dvd220; char dvd320; int date; /*表示會(huì)員該繳費(fèi)的時(shí)期*/MemM; /*memberm中每個(gè)數(shù)組元素對(duì)應(yīng)一個(gè)會(huì)員的信息*/DVD的信息用結(jié)構(gòu)體數(shù)組表示如下:struct Dvd char num20; char name20; c
6、har person20; int yes; /*yes=1表示DVD被借,yes=0表示DVD未被借*/DvdN; /*dvdn中每一個(gè)元素對(duì)應(yīng)一個(gè)dvd的信息*/開(kāi) 始輸入i選擇想要輸入的信息i=1,調(diào)用函數(shù)enterM()i=2,調(diào)用函數(shù)enterN()結(jié) 束 void enterM() /*輸入會(huì)員信息模塊*/ int i,m; printf( how many Members ?:); scanf(%d,&m); printf(n Enter Member data nownn); for (i=0;im;i+) printf(n intput %dth Member record.
7、n , i+1); printf(name t sex t age t dvd1 t dvd2 t dvd3 t dayn); scanf(%s%s%d%s%s%s%d,M,Memi.sex,&Memi.age,Memi.dvd1,Memi.dvd2,Memi.dvd3, &Memi.date); saveM(m); /*調(diào)用保存函數(shù)*/ printf_back(); /*一個(gè)任務(wù)結(jié)束時(shí)讓用戶選擇是繼續(xù)瀏覽還是返回*/void enterD() /*輸入模塊*/ int i,n; printf( how many DVDs ?:); scanf(%d,&n); printf(n
8、 Enter DVD data nownn); for (i=0;in;i+) printf(n intput %dth DVD record.n , i+1); printf(number t name t person t yesn); scanf(%s%s%s%d,Dvdi.num, D, Dvdi.person, &Dvdi.yes); saveD(n); /*調(diào)用保存函數(shù)*/ printf_back(); /*一個(gè)任務(wù)結(jié)束時(shí)讓用戶選擇是繼續(xù)瀏覽還是返回*/ void enter()int i;printf(what do you want to enter? 1).M
9、ember message 2).DVD message bb);scanf(%d,&i);switch(i)case 1:enterM();break;case 2:enterD();break;menu(); /*如果輸入的數(shù)字不是1-2,返回菜單欄*/(2)注冊(cè)模塊【需求分析】該模塊的功能是用會(huì)員的注冊(cè),從鍵盤輸入并逐條寫到原來(lái)的輸入文件中。如圖所示。開(kāi) 始調(diào)用加載函數(shù)n=load()并計(jì)算可以記錄的個(gè)數(shù)n輸入用戶要加載的記錄個(gè)數(shù)mK=n+m調(diào)用輸入函數(shù)保存追加的記錄結(jié) 束 void Register() /*追加模塊*/ int i,n,m,k; FILE*fp; n=loadM();
10、 /*調(diào)用加載函數(shù)n=load(),并計(jì)算可以記錄的個(gè)數(shù)*/ printf(How many members are you want to add(0-%d)?:,N-1-n); scanf(%d,&m); /*輸入要追加的記錄個(gè)數(shù)*/ k=m+n; /*加載后結(jié)構(gòu)體數(shù)組中元素的個(gè)數(shù)*/ if(fp=fopen(member.txt,ab)=NULL) printf(cannot open filen); for(i=n;ik;i+) printf(n Input %dth member record.n,i-n+1); input(i); /*調(diào)用輸入函數(shù)*/ fwrite(&Memi,s
11、izeof(struct Member),1,fp); /*載入文件*/ printf(n); printf_back(); /*一個(gè)任務(wù)結(jié)束時(shí)讓用戶選擇是繼續(xù)瀏覽還是返回*/(3)繳費(fèi)模塊【需求分析】該模塊的功能是記錄會(huì)員的繳費(fèi)情況以及進(jìn)行修改。如下圖所示。開(kāi) 始輸入日期判斷從0-n需要交費(fèi)的會(huì)員j=1,會(huì)員繳費(fèi)j!=1,會(huì)員未交費(fèi)結(jié) 束 void Payment() /*修改模塊*/int i,n,k,j; n=loadM(); /*調(diào)用加載函數(shù)n=load(),并計(jì)算可以記錄的個(gè)數(shù)*/ printf(nInput todays day); scanf(%d,&k);for(i=0;i=n
12、;i+) if(Memi.datek)printf(it is time for member %d to pay fee!n,i+1); scanf(%d,&j); /*如果會(huì)員該繳費(fèi)的日期小于輸入的日期顯示該繳費(fèi)*/ if(j=1)printf(member have paidn); else printf(member not paidn); printf_back(); /*一個(gè)任務(wù)結(jié)束時(shí)讓用戶選擇是繼續(xù)瀏覽還是返回*/注:該函數(shù)的不足之處是顯示會(huì)員繳費(fèi)之后不能是文件中會(huì)員該繳費(fèi)日期不會(huì)變。必須利用修改模塊進(jìn)行修改。(4)歸還模塊【需求分析】該模塊的功能是管理DVD的情況,會(huì)員歸還后消
13、除會(huì)員記錄和DVD的記錄。如下圖所示。結(jié) 束開(kāi) 始輸入會(huì)員號(hào)碼以及要?dú)w還的DVD名判斷會(huì)員所借的DVD中等于要?dú)w還的DVD名的 等于,會(huì)員對(duì)應(yīng)的DVD=0,DVD信息中yes=0void Reback()int i,n; printf(Input the number of member); scanf(%d,&n); printf(Input the number of DVD); scanf(%d,&i); if(Memn.dvd1=D)strcpy(Memn.dvd1,0); Dvdi.yes=0; if(Memn.dvd2=D)strcpy(Memn.d
14、vd2,0); Dvdi.yes=0; if(Memn.dvd3=D)strcpy(Memn.dvd3,0); Dvdi.yes=0; printf_back(); /*一個(gè)任務(wù)結(jié)束時(shí)讓用戶選擇是繼續(xù)瀏覽還是返回*/注:該函數(shù)可是算是一個(gè)失敗的函數(shù),因?yàn)檩斎霑?huì)員的號(hào)碼后,程序根本沒(méi)有默認(rèn),及歸還會(huì)員所借的DVD之后,會(huì)員信息里并沒(méi)有將原來(lái)所借的DVD歸還,并且DVD信息中已歸還的DVD的yes值并不歸零,必須在利用修改模塊進(jìn)行信息的修改。(5)租用模塊【需求分析】該模塊的功能是對(duì)會(huì)員借用DVD進(jìn)行管理,先判斷該會(huì)員能否再借用,可以后記錄會(huì)員借用的DVD,同時(shí)DVD信息中也會(huì)記錄
15、下會(huì)員的姓名。如下圖所示。開(kāi) 始輸入要租用DVD的會(huì)員以及要租用的DVD名判斷會(huì)員信息中DVD是否有等于零的無(wú),顯示不能租借有,為零的DVD等于要租用的DVD名,DVD信息中person等于會(huì)員名結(jié) 束void Rent()int i,j; printf(Input the number of member); scanf(%d,&i); printf(Input the number of DVD what you want to rent!); scanf(%d,&j); if(Memi.dvd1!=0|Memi.dvd2!=0|Memi.dvd3!=0) printf(can not r
16、ent any more!);/*判斷該會(huì)員是否還可以借*/ else if(strcmp(Memi.dvd1,0)strcpy(Memi.dvd1,D);Dvdj.yes=1;strcpy(Dvdj.person,M);/*表示若dvd1為零,則借用成功*/ else if(strcmp(Memi.dvd2,0)strcpy(Memi.dvd2,D);Dvdj.yes=1;strcpy(Dvdj.person,M); else if(strcmp(Memi.dvd3,0)strcpy(Memi.dvd3,D);D
17、vdj.yes=1;strcpy(Dvdj.person,M); printf_back(); /*一個(gè)任務(wù)結(jié)束時(shí)讓用戶選擇是繼續(xù)瀏覽還是返回*/(6)瀏覽操作【需求分析】該模塊的功能是顯示所有會(huì)員的記錄信息。開(kāi) 始調(diào)用加載函數(shù)loadM()并計(jì)算個(gè)數(shù)輸出全部會(huì)員信息調(diào)用加載函數(shù)loadN()并計(jì)算個(gè)數(shù)輸出全部DVD信息結(jié) 束void Browse() /*瀏覽模塊*/int i,j,n,x,y,z,k; n=loadM(); /*調(diào)用加載函數(shù)n=load(),并計(jì)算可以記錄的個(gè)數(shù)*/ printf(nt name sex age dvd1 dvd2 dvd3 dayn); f
18、or(i=0;in;i+) if(i!=0)&(i%10=0) printf(nnPass any key to contiunen); getch(); printf_Mone(i); /*調(diào)用顯示一個(gè)會(huì)員信息記錄的函數(shù)*/ printf(n); printf(ntThere are %d record.n,n); z=loadD(); printf(ntnum name person yesn); for(i=0;iz;i+) if(i!=0)&(i%10=0) printf(nnPass any key to contiune); getch(); printf_Done(i); /*調(diào)
19、用顯示一個(gè)DVD信息記錄的函數(shù)*/ printf(n); printf(tThere are %d record.n,z); printf(nPass any key to back); getchar(); printf_back(); /*一個(gè)任務(wù)結(jié)束時(shí)讓用戶選擇是繼續(xù)瀏覽還是返回*/ (7)查詢操作【需求分析】該模塊的功能是根據(jù)輸入的會(huì)員的姓名查找對(duì)應(yīng)的記錄,找到以后可以進(jìn)行增加,刪除或修改信息的操作。如下圖所示。注:由于查詢會(huì)員信息和查詢DVD信息是一樣的,因此流線圖只呈現(xiàn)一種。開(kāi) 始輸入會(huì)員姓名查找該會(huì)員記錄找到則顯示信息沒(méi)有則提示沒(méi)有記錄結(jié) 束 void Search() /*查詢
20、模塊*/int i,n,m,k; struct Member s; struct Dvd t; n=loadM(); /*調(diào)用加載函數(shù)n=load(),并計(jì)算可以記錄的個(gè)數(shù)*/ printf(nnEnter member name that you want to search! name:); scanf(%s,); printf(nt name sex age dvd1 dvd2 dvd3 dayn); for(i=0;in;i+) if(strcmp(,M)=0) /*通過(guò)字符串比較函數(shù)查找想要查詢的會(huì)員*/ printf_Mone(i);brea
21、k; /*調(diào)用顯示找到會(huì)員信息記錄的函數(shù)* m=loadD(); /*調(diào)用加載函數(shù)n=load(),并計(jì)算可以記錄的個(gè)數(shù)*/ printf(nnEnter DVD name that you want to search! name:); scanf(%s,); printf(ntnum name person yesn); for(i=0;im;i+) if(strcmp(,D)=0) printf_Done(i);break; printf_back(); /*一個(gè)任務(wù)結(jié)束時(shí)讓用戶選擇是繼續(xù)瀏覽還是返回*/(8)修改模塊【需求分析】程序要求中并沒(méi)有要
22、求有修改模塊,但是在繳費(fèi)模塊中需要用到修改模塊,而且,由于未知原因,租用模塊和歸還模塊不能正常運(yùn)行,也要用到修改模式進(jìn)行修改,才能實(shí)現(xiàn)程序的可用性。同樣在此也只顯示修改會(huì)員的信息,修改DVD信息是一樣的。輸入要修改的會(huì)員名開(kāi) 始顯示該會(huì)員的記錄輸入新信息新信息覆蓋舊信息結(jié) 束int modify()int i,n,m,k; struct Member s; struct Dvd t; n=loadM(); /*調(diào)用加載函數(shù)n=load(),并計(jì)算可以記錄的個(gè)數(shù)*/ printf(nnEnter name that you want to search! name:); scanf(%s,s.n
23、ame); printf(nt name sex age dvd1 dvd2 dvd3 dayn); for(i=0;in;i+) if(strcmp(,M)=0) /*運(yùn)用查找模塊,找到想要修改的會(huì)員的記錄*/ printf_Mone(i); /*利用只顯示一條會(huì)員信息函數(shù),顯示找到的會(huì)員信息*/ printf(n please enter the member massages:n name sex age dvd1 dvd2 dvd3 daten); scanf(%s%s%d%s%s%s%d,,s.sex,s.age,s.dvd1,s.dvd2,s
24、.dvd3,s.date); /*輸入新的信息*/ strcpy(M,); strcpy(Memi.sex,s.sex); strcpy(Memi.dvd1,s.dvd1); strcpy(Memi.dvd2,s.dvd2); strcpy(Memi.dvd3,s.dvd3); /*利用字符串復(fù)制將新信息載入文件*/ Memi.age=s.age; Memi.day=s.day; /*整型就直接賦值*/ m=loadD(); /*調(diào)用加載函數(shù)n=load(),并計(jì)算可以記錄的個(gè)數(shù)*/ printf(nnEnter name that you want to sear
25、ch! name:); scanf(%s,); printf(ntnum name person yesn); for(i=0;im;i+) if(strcmp(,D)=0) printf_Done(i); printf(please enter the dvd massages:num name person yesn); scanf(%s%s%s%d,t.num,,t.person,t.yes); strcpy(Dvdi.num,t.num); strcpy(D,); strcpy(Dvdi.person,t.
26、person); Dvdi.yes=t.yes; printf_back(); /*一個(gè)任務(wù)結(jié)束時(shí)讓用戶選擇是繼續(xù)瀏覽還是返回*/3 公共函數(shù) 下面介紹一些在每個(gè)功能模塊中都有可能會(huì)用到的一些公共函數(shù)。 (1)保存函數(shù) save(int n) 【說(shuō)明】 形參m控制保存的個(gè)數(shù)。該模塊的功能是將輸入的信息保存到文件中。saveD(int m) /*保存函數(shù),將m個(gè)DVD信息保存到文件中*/FILE *fp; /*定義文件指針*/ int i;if(fp=fopen(dvd.txt,wb)=NULL) /*以只寫方式為輸出打開(kāi)一個(gè)二進(jìn)制文件*/ printf(nCannot open filen);
27、 return NULL; for(i=0;im;i+) if(fwrite(&Dvdi,sizeof(struct Dvd),1,fp)!=1) /*表示把一個(gè)數(shù)據(jù)項(xiàng)寫入DVD二進(jìn)制文件中,如果fwrite調(diào)用成功,則函數(shù)返回只是count的值,在此就是1,!=1就表示函數(shù)調(diào)用不成功*/ printf(file write errorn);fclose(fp) ;saveM(int m) /*保存函數(shù),將m個(gè)數(shù)據(jù)項(xiàng)保存到會(huì)員文件中*/FILE *fp; /*定義文件指針*/ int i;if(fp=fopen(member.txt,wb)=NULL) /*以只寫方式為輸出打開(kāi)一個(gè)二進(jìn)制文件*
28、/ printf(nCannot open filen); return NULL; for(i=0;im;i+) if(fwrite(&Memi,sizeof(struct Member),1,fp)!=1) /*表示把一個(gè)數(shù)據(jù)項(xiàng)寫入DVD二進(jìn)制文件中,如果fwrite調(diào)用成功,則函數(shù)返回只是count的值,在此就是1,!=1就表示函數(shù)調(diào)用不成功*/ printf(file write errorn);fclose(fp) ; (2)加載函數(shù)load() 【說(shuō)明】 該函數(shù)可以用來(lái)加載所有記錄,并且可以返回所有記錄的個(gè)數(shù)。loadM() /*加載并記錄所有會(huì)員信息的個(gè)數(shù)*/FILE*fp; /
29、*定義文件指針*/ int i; if(fp=fopen(member.txt,rb)=NULL)/*以只寫方式為輸出打開(kāi)一個(gè)二進(jìn)制文件*/ printf(nCan not open filen); return NULL; for(i=0;!feof(fp);i+)fread(&Memi,sizeof(struct Member),1,fp); fclose(fp); return(i-1) /*返回記錄的個(gè)數(shù)*/;int loadD() /*加載并記錄所有DVD信息個(gè)數(shù)*/FILE*fp; /*定義文件指針*/ if(fp=fopen(dvd.txt,rb)=NULL) /*以只寫方式為輸
30、出打開(kāi)一個(gè)二進(jìn)制文件*/ printf(nCan not open filen); return NULL; for(i=0;!feof(fp);i+) fread(&Dvdi,sizeof(struct Dvd),1,fp); fclose(fp); return(i-1); /*返回記錄的個(gè)數(shù)*/;(3)輸入輸出函數(shù)該函數(shù)的功能是實(shí)現(xiàn)程序運(yùn)行時(shí)一輸出一輸入功能,使程序更加人性化,并且減小了模塊的大小,更清楚易理解。input(int i)printf(name);scanf(%s,&M);printf(sex);scanf(%s,&Memi.sex);printf(age)
31、;scanf(%d,&Memi.age);printf(dvd1);scanf(%s,&Memi.dvd1);printf(dvd2);scanf(%s,&Memi.dvd2);printf(dvd3);scanf(%s,&Memi.dvd3);printf(day);scanf(%d,&Memi.day);(4)只輸入一項(xiàng)紀(jì)錄函數(shù)該函數(shù)的功能是指定輸出想要的記錄。printf_Mone(int i) /*只輸出一項(xiàng)會(huì)員記錄函數(shù)*/printf(%11s%5s%2d%10s%10s%10s%5d,M,Memi.sex,Memi.age,Memi.dvd1,Memi.dvd2,M
32、emi.dvd3,Memi.day);printf_Done(int i) /*只輸出一項(xiàng)DVD記錄函數(shù)*/printf(%10s%10s%10s%5d,Dvdi.num,D,Dvdi.person,Dvdi.yes);(5)返回函數(shù)該函數(shù)的功能是一個(gè)任務(wù)結(jié)束時(shí)讓用戶選擇是繼續(xù)瀏覽還是返回。printf_back()int k,w; printf(nntSuccessful.nn); printf(What do you want to do?nnt1).Browse all nowt2).Back: bb); /*菜單選擇式*/ scanf(%d,&w); if(w=1)Br
33、owse(); /*瀏覽所在模塊運(yùn)行的結(jié)果*/ else menu(); /*返回菜單欄*/ 實(shí)習(xí)感受在為期四天的C語(yǔ)言實(shí)習(xí)過(guò)程中,我學(xué)到了很多東西。在平時(shí)上課時(shí),我學(xué)到一個(gè)程序就是由數(shù)據(jù)結(jié)構(gòu)和算法應(yīng)用一定的結(jié)構(gòu)組合起來(lái)的。數(shù)據(jù)結(jié)構(gòu)有整型,實(shí)型和字符型以及變量和常量之分;算法由函數(shù)和語(yǔ)句組合而成;結(jié)構(gòu)有順序,選擇,循環(huán),和模塊結(jié)構(gòu);還學(xué)了結(jié)構(gòu)體,數(shù)組和文件等。對(duì)程序有了大概的認(rèn)識(shí)。通過(guò)實(shí)習(xí),把所學(xué)的東西應(yīng)用起來(lái),親自去邊一個(gè)程序的時(shí)候,才發(fā)現(xiàn)其中的奧妙,有很多細(xì)節(jié)的東西需要注意,例如在實(shí)習(xí)過(guò)程中,由于dowhile的循環(huán)順序沒(méi)有注意使得運(yùn)行時(shí)一直出錯(cuò)。最后在看書,才發(fā)現(xiàn)是dowhile語(yǔ)句的用
34、法出錯(cuò)了。這只是一個(gè)很小的例子,編寫一個(gè)程序遠(yuǎn)比讀一個(gè)程序要難得多,比如每個(gè)語(yǔ)句后一定要加分號(hào),一個(gè)大程序如果就少了一個(gè)分號(hào)很可能無(wú)法運(yùn)行。在以前的學(xué)習(xí)中,經(jīng)常有算法思路就可以了,最多就是會(huì)編一個(gè)小程序,實(shí)現(xiàn)一個(gè)數(shù)學(xué)算法而已。本次實(shí)習(xí),要針對(duì)實(shí)際問(wèn)題編一個(gè)大的程序,一開(kāi)始的時(shí)候,根本無(wú)法下手,看了書上的示例,明白了對(duì)于這樣的問(wèn)題,要?jiǎng)澐殖蓭讉€(gè)小模塊,一個(gè)模塊處理一個(gè)功能,也就是說(shuō)一個(gè)模塊就是一個(gè)函數(shù),一個(gè)函數(shù)完成一個(gè)任務(wù),這樣就把一個(gè)大的程序分成若干個(gè)小程序。于是感覺(jué)簡(jiǎn)單了許多。同時(shí),我還有一個(gè)很大的感受就是在運(yùn)行程序的時(shí)候一定要耐心,細(xì)心。因?yàn)榍懊嬉呀?jīng)提到,一個(gè)小小的分號(hào)就很可能引起系統(tǒng)無(wú)法
35、運(yùn)行,因此在運(yùn)行時(shí)出現(xiàn)很多錯(cuò)誤時(shí)常有的事情,我又一次出現(xiàn)過(guò)二十幾個(gè)錯(cuò)誤,這時(shí)候一定不能厭煩放棄,看錯(cuò)誤提示,常常你把一個(gè)關(guān)鍵處改掉之后就可以了。 實(shí)習(xí)之后,我對(duì)C語(yǔ)言有了更深的認(rèn)識(shí),當(dāng)然然存在很多問(wèn)題,希望老師指導(dǎo)。 附錄(源代碼)#define N 100#define M 100#include #include #include #include void menu();void Register();void Payment();void Reback();void Rent();void Browse();void Search();void enter();struct Dvd c
36、har num20; char name20; char person20; int yes;DvdN;struct Member char name20; char sex20; int age; char dvd120; char dvd220; char dvd320; int date;MemM; saveD(int m)FILE *fp; int i;if(fp=fopen(dvd.txt,wb)=NULL) printf(nCannot open filen); return NULL; for(i=0;im;i+) if(fwrite(&Dvdi,sizeof(struct Dv
37、d),1,fp)!=1) printf(file write errorn);fclose(fp) ;void enterD() int i,n; printf( how many DVDs ?:); scanf(%d,&n); printf(n Enter DVD data nownn); for (i=0;in;i+) printf(n intput %dth DVD record.n , i+1); printf(number t name t person t yesn); scanf(%s%s%s%d,Dvdi.num,D,Dvdi.person,&Dvdi.yes)
38、; saveD(n); menu(); saveM(int m)FILE *fp; int i;if(fp=fopen(member.txt,wb)=NULL) printf(nCannot open filen); return NULL; for(i=0;im;i+)if(fwrite(&Memi,sizeof(struct Member),1,fp)!=1)printf(file write errorn);fclose(fp) ;void enterM() int i,m; printf( how many Members ?:); scanf(%d,&m); printf(n Ent
39、er Member data nownn); for (i=0;im;i+) printf(n intput %dth Member record.n , i+1); printf(name t sex t age t dvd1 t dvd2 t dvd3 t dayn); scanf(%s%s%d%s%s%s%d,M,Memi.sex,&Memi.age,Memi.dvd1,Memi.dvd2,Memi.dvd3, &Memi.date); saveM(m); menu(); void enter()int i;printf(what do you want to enter
40、? 1).Member message 2).DVD message bb);scanf(%d,&i);switch(i)case 1:enterM();break;case 2:enterD();break;menu();input(int i)printf(name);scanf(%s,&M);printf(sex);scanf(%s,&Memi.sex);printf(age);scanf(%d,&Memi.age);printf(dvd1);scanf(%s,&Memi.dvd1);printf(dvd2);scanf(%s,&Memi.dvd2);printf(dvd
41、3);scanf(%s,&Memi.dvd3);printf(date);scanf(%d,&Memi.date);void menu() int n,k; do puts(tt*MENU*nn); puts(tttt 1.enter); puts(tttt 2.Member Register); puts(tttt 3.Member Payment); puts(tttt 4.DVD Return); puts(tttt 5.DVD Rent); puts(tttt 6.Message Browse); puts(tttt 7.Message Search); puts(tttt 8.mod
42、ify); puts(tttt 9.Exit); puts(nntt*nn); printf(Choice your number(1-9): bb); scanf(%d,&n); if(n9) k=1;getchar(); else k=0; while(k=1); switch(n) case 1:enter();break; case 2:Register();break; case 3:Payment();break; case 4:Reback();break; case 5:Rent();break; case 6:Browse();break; case 7:Search();b
43、reak; case 8:modify();break; case 9:exit(0); void Register() int i,n,m,k; FILE*fp; n=loadM(); printf(How many members are you want to add(0-%d)?:,N-1-n); scanf(%d,&m); k=m+n; if(fp=fopen(member.txt,ab)=NULL) printf(cannot open filen); for(i=n;ik;i+) printf(n Input %dth member record.n,i-n+1); input(
44、i); fwrite(&Memi,sizeof(struct Member),1,fp); printf(n); printf_back();void Payment()int i,n,k,j; n=loadM(); printf(nInput todays day); scanf(%d,&k);for(i=0;i=n;i+) if(Memi.day!=k)printf(it is time for member %d to pay fee!n,i+1); scanf(%d,&j); if(j=1)printf(member have paidn); else printf(member no
45、t paidn); printf_back();void Reback()int i,n; printf(Input the number of member); scanf(%d,&n); printf(Input the number of DVD); scanf(%d,&i); if(Memn.dvd1=D)strcpy(Memn.dvd1,0); Dvdi.yes=0; if(Memn.dvd2=D)strcpy(Memn.dvd2,0); Dvdi.yes=0; if(Memn.dvd3=D)strcpy(Memn.dvd3,0); D
46、vdi.yes=0; printf_back();void Rent()int i,j; printf(Input the number of member); scanf(%d,&i); printf(Input the number of DVD what you want to rent!); scanf(%d,&j); if(Memi.dvd1!=0|Memi.dvd2!=0|Memi.dvd3!=0) printf(can not rent any more!); else if(strcmp(Memi.dvd1,0)strcpy(Memi.dvd1,D);Dvdj.yes=1;strcpy(Dvdj.person,M); else if(strcmp(Memi.dvd2,0)strcpy(Memi.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 盲文印刷員發(fā)展趨勢(shì)強(qiáng)化考核試卷含答案
- 間苯二酚裝置操作工崗前技術(shù)創(chuàng)新考核試卷含答案
- 熱帶作物初制工崗前評(píng)審考核試卷含答案
- 護(hù)林員班組協(xié)作測(cè)試考核試卷含答案
- 隔離層制備工安全生產(chǎn)知識(shí)測(cè)試考核試卷含答案
- 船舶氣焊工風(fēng)險(xiǎn)識(shí)別測(cè)試考核試卷含答案
- 2024年浮山縣選聘縣直事業(yè)單位工作人員真題匯編附答案
- 2024年湖北汽車工業(yè)學(xué)院科技學(xué)院輔導(dǎo)員考試參考題庫(kù)附答案
- 超市運(yùn)營(yíng)管理操作手冊(cè)
- 2024年焦作職工醫(yī)學(xué)院輔導(dǎo)員考試參考題庫(kù)附答案
- 蘇州高新區(qū)(虎丘區(qū))市場(chǎng)監(jiān)督管理局公益性崗位招聘1人考試參考題庫(kù)及答案解析
- 北京通州產(chǎn)業(yè)服務(wù)有限公司招聘參考題庫(kù)完美版
- 企業(yè)安全隱患排查課件
- 2025版《煤礦安全規(guī)程》宣貫解讀課件(電氣、監(jiān)控與通信)
- 2025年國(guó)家開(kāi)放大學(xué)《管理學(xué)基礎(chǔ)》期末機(jī)考題庫(kù)附答案
- 2025年人民網(wǎng)河南頻道招聘?jìng)淇碱}庫(kù)參考答案詳解
- ESHRE子宮內(nèi)膜異位癥的診斷與治療指南(2025年)
- 急驚風(fēng)中醫(yī)護(hù)理查房
- 基于視頻圖像的大型戶外場(chǎng)景三維重建算法:挑戰(zhàn)、創(chuàng)新與實(shí)踐
- 2025年四川省高職單招模擬試題語(yǔ)數(shù)外全科及答案
- 2025年江蘇事業(yè)單位教師招聘體育學(xué)科專業(yè)知識(shí)考試試卷含答案
評(píng)論
0/150
提交評(píng)論