1、俱乐部DVD管理系统题目要求 允许俱乐部成员租用DVD。若想成为会员,首先应签约并且可按月缴纳费用。会员一次可租用三个DVD,没有时间限制。可浏览所有可租用的DVD,能实现新成员的开户,会员对其账户状况的查询以及俱乐部管理者对所有交易情况的查看功能。需求分析DVD信息和俱乐部会员信息用文件存储,提供文件的输入输出操作;注册新会员,提供文件的添加操作;实现按月交纳费用,提供文件的修改操作;浏览信息应提供显示操作;实现查询则提供文件的查找操作;另外提供键盘是选择菜单以实现功能选择。总体设计 整体设计为会员注册模块,会员缴费模块,会员租用DVD模块,会员租用DVD模块,信息浏览模块和信息查询模块等。
2、选择菜单以实现功能选择。如下图所示。俱乐部管理系统注册缴费 归还租用浏览查询输信息修改 详细设计1 主函数主函数一般设计的比较简单,只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。如下图所示。 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
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) /*对输入的数字做判断*/ k=1;getchar(); else k=0; while(k=1); switch(n) /*switch函数实现功能选择*/ case 1:enter();break; /*输入信息模块*/ case 2:Register();break; /
4、*会员注册模块*/ case 3:Payment();break; /*会员缴费模块*/ case 4:Reback();break; /*会员归还DVD模块*/ case 5:Rent();break; /*会员租用DVD模块*/ case 6:Browse();break; /*信息浏览模块*/ case 7:Search();break; /*信息查询模块*/ case 8:modify();break; /*信息修改模块*/ case 9:exit(0); 开 始显示一系列功能选项输入n,判断n是否是1-9根据n的值调用各功能模块函数结 束2 各功能模块设计 (1)输入模块【数据结构】
5、原始数据有两类:一是会员信息,二是DVD信息;两个信息分别保存在两个文件中。文件名分别为member.txt,dvd.txt。采用结构体的形式把信息作为一个整体来处理。会员的信息用结构体数组形式表示如下:struct Member char name20; char sex20; int age; char dvd120; char dvd220; char dvd320; int date; /*表示会员该缴费的时期*/MemM; /*memberm中每个数组元素对应一个会员的信息*/DVD的信息用结构体数组表示如下:struct Dvd char num20; char name20; c
6、har person20; int yes; /*yes=1表示DVD被借,yes=0表示DVD未被借*/DvdN; /*dvdn中每一个元素对应一个dvd的信息*/开 始输入i选择想要输入的信息i=1,调用函数enterM()i=2,调用函数enterN()结 束 void enterM() /*输入会员信息模块*/ 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,Memi.name,Memi.sex,&Memi.age,Memi.dvd1,Memi.dvd2,Memi.dvd3, &Memi.date); saveM(m); /*调用保存函数*/ printf_back(); /*一个任务结束时让用户选择是继续浏览还是返回*/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, Dvdi.name, Dvdi.person, &Dvdi.yes); saveD(n); /*调用保存函数*/ printf_back(); /*一个任务结束时让用户选择是继续浏览还是返回*/ 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(); /*如果输入的数字不是1-2,返回菜单栏*/(2)注册模块【需求分析】该模块的功能是用会员的注册,从键盘输入并逐条写到原来的输入文件中。如图所示。开 始调用加载函数n=load()并计算可以记录的个数n输入用户要加载的记录个数mK=n+m调用输入函数保存追加的记录结 束 void Register() /*追加模块*/ int i,n,m,k; FILE*fp; n=loadM();
10、 /*调用加载函数n=load(),并计算可以记录的个数*/ 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(i); /*调用输入函数*/ fwrite(&Memi,s
11、izeof(struct Member),1,fp); /*载入文件*/ printf(n); printf_back(); /*一个任务结束时让用户选择是继续浏览还是返回*/(3)缴费模块【需求分析】该模块的功能是记录会员的缴费情况以及进行修改。如下图所示。开 始输入日期判断从0-n需要交费的会员j=1,会员缴费j!=1,会员未交费结 束 void Payment() /*修改模块*/int i,n,k,j; n=loadM(); /*调用加载函数n=load(),并计算可以记录的个数*/ 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); /*如果会员该缴费的日期小于输入的日期显示该缴费*/ if(j=1)printf(member have paidn); else printf(member not paidn); printf_back(); /*一个任务结束时让用户选择是继续浏览还是返回*/注:该函数的不足之处是显示会员缴费之后不能是文件中会员该缴费日期不会变。必须利用修改模块进行修改。(4)归还模块【需求分析】该模块的功能是管理DVD的情况,会员归还后消除会员记录和DVD的记录。如下图所示。结 束开 始输入会员号码以及要归还的DVD名判断会员所借的DVD中等于要归还的DVD名的 等于,会员对应的DVD=0,DVD信息中yes=0void Reback()int i,n; printf(Input the number of member); scanf(
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1