版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、俱樂部DVD管理系統(tǒng)題目要求 允許俱樂部成員租用DVD。若想成為會員,首先應(yīng)簽約并且可按月繳納費(fèi)用。會員一次可租用三個DVD,沒有時間限制??蔀g覽所有可租用的DVD,能實(shí)現(xiàn)新成員的開戶,會員對其賬戶狀況的查詢以及俱樂部管理者對所有交易情況的查看功能。需求分析DVD信息和俱樂部會員信息用文件存儲,提供文件的輸入輸出操作;注冊新會員,提供文件的添加操作;實(shí)現(xiàn)按月交納費(fèi)用,提供文件的修改操作;瀏覽信息應(yīng)提供顯示操作;實(shí)現(xiàn)查詢則提供文件的查找操作;另外提供鍵盤是選擇菜單以實(shí)現(xiàn)功能選擇??傮w設(shè)計 整體設(shè)計為會員注冊模塊,會員繳費(fèi)模塊,會員租用DVD模塊,會員租用DVD模塊,信息瀏覽模塊和信息查詢模塊等。
2、選擇菜單以實(shí)現(xiàn)功能選擇。如下圖所示。俱樂部管理系統(tǒng)注冊繳費(fèi) 歸還租用瀏覽查詢輸信息修改 詳細(xì)設(shè)計1 主函數(shù)主函數(shù)一般設(shè)計的比較簡單,只提供輸入,處理和輸出部分的函數(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("
3、;tttt 4.DVD Return"); puts("tttt 5.DVD Rent"); puts("tttt 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&q
4、uot;,&n); if(n<1|n>9) /*對輸入的數(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; /*會員注冊模塊*/ case 3:Payment();break; /*會員繳費(fèi)模塊*/ case 4:Reback();break; /*會員歸還DVD模塊*/ case 5:Rent();break; /*會員租用DVD模塊*/ case 6:Brows
5、e();break; /*信息瀏覽模塊*/ case 7:Search();break; /*信息查詢模塊*/ case 8:modify();break; /*信息修改模塊*/ case 9:exit(0); 開 始顯示一系列功能選項輸入n,判斷n是否是1-9根據(jù)n的值調(diào)用各功能模塊函數(shù)結(jié) 束2 各功能模塊設(shè)計 (1)輸入模塊【數(shù)據(jù)結(jié)構(gòu)】原始數(shù)據(jù)有兩類:一是會員信息,二是DVD信息;兩個信息分別保存在兩個文件中。文件名分別為member.txt,dvd.txt。采用結(jié)構(gòu)體的形式把信息作為一個整體來處理。會員的信息用結(jié)構(gòu)體數(shù)組形式表示如下:struct Member char name20;
6、char sex20; int age; char dvd120; char dvd220; char dvd320; int date; /*表示會員該繳費(fèi)的時期*/MemM; /*memberm中每個數(shù)組元素對應(yīng)一個會員的信息*/DVD的信息用結(jié)構(gòu)體數(shù)組表示如下:struct Dvd char num20; char name20; char person20; int yes; /*yes=1表示DVD被借,yes=0表示DVD未被借*/DvdN; /*dvdn中每一個元素對應(yīng)一個dvd的信息*/開 始輸入i選擇想要輸入的信息i=1,調(diào)用函數(shù)enterM()i=2,調(diào)用函數(shù)enterN(
7、)結(jié) 束 void enterM() /*輸入會員信息模塊*/ int i,m; printf(" how many Members ?:"); scanf("%d",&m); printf("n Enter Member data nownn"); for (i=0;i<m;i+) printf("n intput %dth Member record.n ", i+1); printf("name t sex t age t dvd1 t dvd2 t dvd3 t dayn"
8、); 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(); /*一個任務(wù)結(jié)束時讓用戶選擇是繼續(xù)瀏覽還是返回*/void enterD() /*輸入模塊*/ int i,n; printf(" how many DVDs ?:"); scanf("%d",&n); printf("n Enter
9、DVD data nownn"); for (i=0;i<n;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(); /*一個任務(wù)結(jié)束時讓用戶選擇是繼續(xù)瀏覽還是返回*/ void enter()i
10、nt i;printf("what do you want to enter? 1).Member message 2).DVD message bb");scanf("%d",&i);switch(i)case 1:enterM();break;case 2:enterD();break;menu(); /*如果輸入的數(shù)字不是1-2,返回菜單欄*/(2)注冊模塊【需求分析】該模塊的功能是用會員的注冊,從鍵盤輸入并逐條寫到原來的輸入文件中。如圖所示。開 始調(diào)用加載函數(shù)n=load()并計算可以記錄的個數(shù)n輸入用戶要加載的記錄個數(shù)mK=n+m調(diào)用輸
11、入函數(shù)保存追加的記錄結(jié) 束 void Register() /*追加模塊*/ int i,n,m,k; FILE*fp; n=loadM(); /*調(diào)用加載函數(shù)n=load(),并計算可以記錄的個數(shù)*/ printf("How many members are you want to add(0-%d)?:",N-1-n); scanf("%d",&m); /*輸入要追加的記錄個數(shù)*/ k=m+n; /*加載后結(jié)構(gòu)體數(shù)組中元素的個數(shù)*/ if(fp=fopen("member.txt","ab")=NULL
12、) printf("cannot open filen"); for(i=n;i<k;i+) printf("n Input %dth member record.n",i-n+1); input(i); /*調(diào)用輸入函數(shù)*/ fwrite(&Memi,sizeof(struct Member),1,fp); /*載入文件*/ printf("n"); printf_back(); /*一個任務(wù)結(jié)束時讓用戶選擇是繼續(xù)瀏覽還是返回*/(3)繳費(fèi)模塊【需求分析】該模塊的功能是記錄會員的繳費(fèi)情況以及進(jìn)行修改。如下圖所示。開 始
13、輸入日期判斷從0-n需要交費(fèi)的會員j=1,會員繳費(fèi)j!=1,會員未交費(fèi)結(jié) 束 void Payment() /*修改模塊*/int i,n,k,j; n=loadM(); /*調(diào)用加載函數(shù)n=load(),并計算可以記錄的個數(shù)*/ printf("nInput today's day"); scanf("%d",&k);for(i=0;i<=n;i+) if(Memi.date<k)printf("it is time for member %d to pay fee!n",i+1); scanf(&quo
14、t;%d",&j); /*如果會員該繳費(fèi)的日期小于輸入的日期顯示該繳費(fèi)*/ if(j=1)printf("member have paidn"); else printf("member not paidn"); printf_back(); /*一個任務(wù)結(jié)束時讓用戶選擇是繼續(xù)瀏覽還是返回*/注:該函數(shù)的不足之處是顯示會員繳費(fèi)之后不能是文件中會員該繳費(fèi)日期不會變。必須利用修改模塊進(jìn)行修改。(4)歸還模塊【需求分析】該模塊的功能是管理DVD的情況,會員歸還后消除會員記錄和DVD的記錄。如下圖所示。結(jié) 束開 始輸入會員號碼以及要?dú)w還的DVD
15、名判斷會員所借的DVD中等于要?dú)w還的DVD名的 等于,會員對應(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.dv
16、d2=D)strcpy(Memn.dvd2,'0'); Dvdi.yes=0; if(Memn.dvd3=D)strcpy(Memn.dvd3,'0'); Dvdi.yes=0; printf_back(); /*一個任務(wù)結(jié)束時讓用戶選擇是繼續(xù)瀏覽還是返回*/注:該函數(shù)可是算是一個失敗的函數(shù),因?yàn)檩斎霑T的號碼后,程序根本沒有默認(rèn),及歸還會員所借的DVD之后,會員信息里并沒有將原來所借的DVD歸還,并且DVD信息中已歸還的DVD的yes值并不歸零,必須在利用修改模塊進(jìn)行信息的修改。(5)租用模塊【需求分析】該模塊的功能是對會員借用
17、DVD進(jìn)行管理,先判斷該會員能否再借用,可以后記錄會員借用的DVD,同時DVD信息中也會記錄下會員的姓名。如下圖所示。開 始輸入要租用DVD的會員以及要租用的DVD名判斷會員信息中DVD是否有等于零的無,顯示不能租借有,為零的DVD等于要租用的DVD名,DVD信息中person等于會員名結(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 r
18、ent!"); 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);/*表示若dvd1為零,則借用成功*/ else if(strcmp(Memi.dvd2,0)strcpy(Memi.
19、dvd2,D);Dvdj.yes=1;strcpy(Dvdj.person,M); else if(strcmp(Memi.dvd3,0)strcpy(Memi.dvd3,D);Dvdj.yes=1;strcpy(Dvdj.person,M); printf_back(); /*一個任務(wù)結(jié)束時讓用戶選擇是繼續(xù)瀏覽還是返回*/(6)瀏覽操作【需求分析】該模塊的功能是顯示所有會員的記錄信息。開 始調(diào)用加載函數(shù)loadM()并計算個數(shù)輸出全部會員信息調(diào)用加載函數(shù)loadN()并計算個數(shù)輸出全部DVD信息結(jié) 束void Browse()
20、/*瀏覽模塊*/int i,j,n,x,y,z,k; n=loadM(); /*調(diào)用加載函數(shù)n=load(),并計算可以記錄的個數(shù)*/ printf("nt name sex age dvd1 dvd2 dvd3 dayn"); for(i=0;i<n;i+) if(i!=0)&&(i%10=0) printf("nnPass any key to contiunen"); getch(); printf_Mone(i); /*調(diào)用顯示一個會員信息記錄的函數(shù)*/ printf("n"); printf("
21、;ntThere are %d record.n",n); z=loadD(); printf("ntnum name person yesn"); for(i=0;i<z;i+) if(i!=0)&&(i%10=0) printf("nnPass any key to contiune"); getch(); printf_Done(i); /*調(diào)用顯示一個DVD信息記錄的函數(shù)*/ printf("n"); printf("tThere are %d record.n",z); p
22、rintf("nPass any key to back"); getchar(); printf_back(); /*一個任務(wù)結(jié)束時讓用戶選擇是繼續(xù)瀏覽還是返回*/ (7)查詢操作【需求分析】該模塊的功能是根據(jù)輸入的會員的姓名查找對應(yīng)的記錄,找到以后可以進(jìn)行增加,刪除或修改信息的操作。如下圖所示。注:由于查詢會員信息和查詢DVD信息是一樣的,因此流線圖只呈現(xiàn)一種。開 始輸入會員姓名查找該會員記錄找到則顯示信息沒有則提示沒有記錄結(jié) 束 void Search() /*查詢模塊*/int i,n,m,k; struct Member s; struct Dvd t; n=lo
23、adM(); /*調(diào)用加載函數(shù)n=load(),并計算可以記錄的個數(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;i<n;i+) if(strcmp(,M)=0) /*通過字符串比較函數(shù)查找想要查詢的會員*/ printf_Mone(i);break; /*調(diào)用顯示找到會
24、員信息記錄的函數(shù)* m=loadD(); /*調(diào)用加載函數(shù)n=load(),并計算可以記錄的個數(shù)*/ printf("nnEnter DVD name that you want to search! name:"); scanf("%s",); printf("ntnum name person yesn"); for(i=0;i<m;i+) if(strcmp(,D)=0) printf_Done(i);break; printf_back(); /*一個任務(wù)結(jié)束時讓用戶選擇是繼續(xù)瀏覽
25、還是返回*/(8)修改模塊【需求分析】程序要求中并沒有要求有修改模塊,但是在繳費(fèi)模塊中需要用到修改模塊,而且,由于未知原因,租用模塊和歸還模塊不能正常運(yùn)行,也要用到修改模式進(jìn)行修改,才能實(shí)現(xiàn)程序的可用性。同樣在此也只顯示修改會員的信息,修改DVD信息是一樣的。輸入要修改的會員名開 始顯示該會員的記錄輸入新信息新信息覆蓋舊信息結(jié) 束int modify()int i,n,m,k; struct Member s; struct Dvd t; n=loadM(); /*調(diào)用加載函數(shù)n=load(),并計算可以記錄的個數(shù)*/ printf("nnEnter name that you wa
26、nt to search! name:"); scanf("%s",); printf("nt name sex age dvd1 dvd2 dvd3 dayn"); for(i=0;i<n;i+) if(strcmp(,M)=0) /*運(yùn)用查找模塊,找到想要修改的會員的記錄*/ printf_Mone(i); /*利用只顯示一條會員信息函數(shù),顯示找到的會員信息*/ printf("n please enter the member massages:n name sex age dvd1
27、 dvd2 dvd3 daten"); scanf("%s%s%d%s%s%s%d",,s.sex,s.age,s.dvd1,s.dvd2,s.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; /*
28、整型就直接賦值*/ m=loadD(); /*調(diào)用加載函數(shù)n=load(),并計算可以記錄的個數(shù)*/ printf("nnEnter name that you want to search! name:"); scanf("%s",); printf("ntnum name person yesn"); for(i=0;i<m;i+) if(strcmp(,D)=0) printf_Done(i); printf("please enter the dvd massages:n
29、um 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.person); Dvdi.yes=t.yes; printf_back(); /*一個任務(wù)結(jié)束時讓用戶選擇是繼續(xù)瀏覽還是返回*/3 公共函數(shù) 下面介紹一些在每個功能模塊中都有可能會用到的一些公共函數(shù)。 (1)保存函數(shù) save(int n) 【說明】 形參m控制保存的個數(shù)。該模塊的功能
30、是將輸入的信息保存到文件中。saveD(int m) /*保存函數(shù),將m個DVD信息保存到文件中*/FILE *fp; /*定義文件指針*/ int i;if(fp=fopen("dvd.txt","wb")=NULL) /*以只寫方式為輸出打開一個二進(jìn)制文件*/ printf("nCannot open filen"); return NULL; for(i=0;i<m;i+) if(fwrite(&Dvdi,sizeof(struct Dvd),1,fp)!=1) /*表示把一個數(shù)據(jù)項寫入DVD二進(jìn)制文件中,如果fw
31、rite調(diào)用成功,則函數(shù)返回只是count的值,在此就是1,!=1就表示函數(shù)調(diào)用不成功*/ printf("file write errorn");fclose(fp) ;saveM(int m) /*保存函數(shù),將m個數(shù)據(jù)項保存到會員文件中*/FILE *fp; /*定義文件指針*/ int i;if(fp=fopen("member.txt","wb")=NULL) /*以只寫方式為輸出打開一個二進(jìn)制文件*/ printf("nCannot open filen"); return NULL; for(i=0;i
32、<m;i+) if(fwrite(&Memi,sizeof(struct Member),1,fp)!=1) /*表示把一個數(shù)據(jù)項寫入DVD二進(jìn)制文件中,如果fwrite調(diào)用成功,則函數(shù)返回只是count的值,在此就是1,!=1就表示函數(shù)調(diào)用不成功*/ printf("file write errorn");fclose(fp) ; (2)加載函數(shù)load() 【說明】 該函數(shù)可以用來加載所有記錄,并且可以返回所有記錄的個數(shù)。loadM() /*加載并記錄所有會員信息的個數(shù)*/FILE*fp; /*定義文件指針*/ int i; if(fp=fopen(&qu
33、ot;member.txt","rb")=NULL)/*以只寫方式為輸出打開一個二進(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) /*返回記錄的個數(shù)*/;int loadD() /*加載并記錄所有DVD信息個數(shù)*/FILE*fp; /*定義文件指針*/ if(fp=fopen("dvd.txt"
34、,"rb")=NULL) /*以只寫方式為輸出打開一個二進(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); /*返回記錄的個數(shù)*/;(3)輸入輸出函數(shù)該函數(shù)的功能是實(shí)現(xiàn)程序運(yùn)行時一輸出一輸入功能,使程序更加人性化,并且減小了模塊的大小,更清楚易理解。input(int i)printf("name");scan
35、f("%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("dvd3"
36、);scanf("%s",&Memi.dvd3);printf("day");scanf("%d",&Memi.day);(4)只輸入一項紀(jì)錄函數(shù)該函數(shù)的功能是指定輸出想要的記錄。printf_Mone(int i) /*只輸出一項會員記錄函數(shù)*/printf("%11s%5s%2d%10s%10s%10s%5d",M,Memi.sex,Memi.age,Memi.dvd1,Memi.dvd2,Memi.dvd3,Memi.day);printf_Done(int i) /*只輸出一
37、項DVD記錄函數(shù)*/printf("%10s%10s%10s%5d",Dvdi.num,D,Dvdi.person,Dvdi.yes);(5)返回函數(shù)該函數(shù)的功能是一個任務(wù)結(jié)束時讓用戶選擇是繼續(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); i
38、f(w=1)Browse(); /*瀏覽所在模塊運(yùn)行的結(jié)果*/ else menu(); /*返回菜單欄*/ 實(shí)習(xí)感受在為期四天的C語言實(shí)習(xí)過程中,我學(xué)到了很多東西。在平時上課時,我學(xué)到一個程序就是由數(shù)據(jù)結(jié)構(gòu)和算法應(yīng)用一定的結(jié)構(gòu)組合起來的。數(shù)據(jù)結(jié)構(gòu)有整型,實(shí)型和字符型以及變量和常量之分;算法由函數(shù)和語句組合而成;結(jié)構(gòu)有順序,選擇,循環(huán),和模塊結(jié)構(gòu);還學(xué)了結(jié)構(gòu)體,數(shù)組和文件等。對程序有了大概的認(rèn)識。通過實(shí)習(xí),把所學(xué)的東西應(yīng)用起來,親自去邊一個程序的時候,才發(fā)現(xiàn)其中的奧妙,有很多細(xì)節(jié)的東西需要注意,例如在實(shí)習(xí)過程中,由于do···while的循環(huán)順序沒有注意使得運(yùn)行時
39、一直出錯。最后在看書,才發(fā)現(xiàn)是do···while語句的用法出錯了。這只是一個很小的例子,編寫一個程序遠(yuǎn)比讀一個程序要難得多,比如每個語句后一定要加分號,一個大程序如果就少了一個分號很可能無法運(yùn)行。在以前的學(xué)習(xí)中,經(jīng)常有算法思路就可以了,最多就是會編一個小程序,實(shí)現(xiàn)一個數(shù)學(xué)算法而已。本次實(shí)習(xí),要針對實(shí)際問題編一個大的程序,一開始的時候,根本無法下手,看了書上的示例,明白了對于這樣的問題,要劃分成幾個小模塊,一個模塊處理一個功能,也就是說一個模塊就是一個函數(shù),一個函數(shù)完成一個任務(wù),這樣就把一個大的程序分成若干個小程序。于是感覺簡單了許多。同時,我還有一個很大的感受就
40、是在運(yùn)行程序的時候一定要耐心,細(xì)心。因?yàn)榍懊嬉呀?jīng)提到,一個小小的分號就很可能引起系統(tǒng)無法運(yùn)行,因此在運(yùn)行時出現(xiàn)很多錯誤時常有的事情,我又一次出現(xiàn)過二十幾個錯誤,這時候一定不能厭煩放棄,看錯誤提示,常常你把一個關(guān)鍵處改掉之后就可以了。 實(shí)習(xí)之后,我對C語言有了更深的認(rèn)識,當(dāng)然然存在很多問題,希望老師指導(dǎo)。 附錄(源代碼)#define N 100#define M 100#include <dos.h>#include <conio.h>#include <stdio.h>#include <stdlib.h>void menu();void Re
41、gister();void Payment();void Reback();void Rent();void Browse();void Search();void enter();struct Dvd char 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(&qu
42、ot;dvd.txt","wb")=NULL) printf("nCannot open filen"); return NULL; for(i=0;i<m;i+) if(fwrite(&Dvdi,sizeof(struct Dvd),1,fp)!=1) printf("file write errorn");fclose(fp) ;void enterD() int i,n; printf(" how many DVDs ?:"); scanf("%d",&n)
43、; printf("n Enter DVD data nownn"); for (i=0;i<n;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); menu(); saveM(int m)FILE *fp; int i;if(fp=fop
44、en("member.txt","wb")=NULL) printf("nCannot open filen"); return NULL; for(i=0;i<m;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&
45、quot;,&m); printf("n Enter Member data nownn"); for (i=0;i<m;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
46、, &Memi.date); saveM(m); menu(); void enter()int i;printf("what do you want to enter? 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)
47、;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("dvd3");scanf("%s",&Memi
48、.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 Ren
49、t"); puts("tttt 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(n<1|n>9) k=1;getchar(); else
50、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();break; case 8:modify();break; case 9:exit(0); void Register() int i,n,m,k; FILE*fp; n=loadM(); printf("How many me
51、mbers 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;i<k;i+) printf("n Input %dth member record.n",i-n+1); input(i); fwrite(&Memi,sizeof(struct Mem
52、ber),1,fp); printf("n"); printf_back();void Payment()int i,n,k,j; n=loadM(); printf("nInput today's 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)print
53、f("member have paidn"); else printf("member not 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
54、.dvd1,'0'); Dvdi.yes=0; if(Memn.dvd2=D)strcpy(Memn.dvd2,'0'); Dvdi.yes=0; if(Memn.dvd3=D)strcpy(Memn.dvd3,'0'); Dvdi.yes=0; printf_back();void Rent()int i,j; printf("Input the number of member"); scanf("%d",&i); printf("Input the n
55、umber 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(
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026福建泉州石獅市自然資源局招聘編外工作人員1人參考考試題庫附答案解析
- 2026廣東省疾病預(yù)防控制中心招聘項目助理1人參考考試題庫附答案解析
- 2026廣東佛山南海農(nóng)商銀行科技金融專業(yè)人才社會招聘備考考試試題附答案解析
- 2026年上半年黑龍江事業(yè)單位聯(lián)考哈爾濱市招聘592人參考考試試題附答案解析
- 中國生產(chǎn)者責(zé)任延伸制度
- 企業(yè)安全生產(chǎn)制度范本
- 園林綠化生產(chǎn)制度
- 勞動生產(chǎn)現(xiàn)場管理制度
- 汽配生產(chǎn)倉庫管理制度
- 生產(chǎn)助磨劑罰款制度
- 廣東省廣州市海珠區(qū)2026年九年級上學(xué)期期末物理試題附答案
- 2026年春統(tǒng)編版(新教材)小學(xué)道德與法治三年級下冊教學(xué)計劃及進(jìn)度表
- 社區(qū)衛(wèi)生安全生產(chǎn)制度
- 北師大版三年級數(shù)學(xué)(上)期末家長會-三載深耕學(xué)有所成【課件】
- 物理試卷-云南師大附中2026屆高三1月高考適應(yīng)性月考卷(六)
- 教育培訓(xùn)加盟合同協(xié)議
- 2026年高一語文寒假作業(yè)安排(1月31日-3月1日)
- 虛擬電廠的分布式能源協(xié)同調(diào)度與彈性運(yùn)行機(jī)制
- 蘭州水務(wù)冬季安全培訓(xùn)課件
- 陜西交控集團(tuán)招聘筆試題庫2026
- DB36∕T 2141-2025 兒童福利機(jī)構(gòu)兒童檔案管理規(guī)范
評論
0/150
提交評論