电影俱乐部管理系统(C语言报告)_第1页
电影俱乐部管理系统(C语言报告)_第2页
电影俱乐部管理系统(C语言报告)_第3页
电影俱乐部管理系统(C语言报告)_第4页
电影俱乐部管理系统(C语言报告)_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、哈尔滨学院软件学院课程设计说明书题目: 电影俱乐部 院(系)软件学院专 业软件工程年 级2013级姓 名袁祯阳学 号指导教师杨玲职 称2014年 7月 22 日目 录摘 要3第一章 需求分析41.1 系统目的41.2 系统功能图4第二章 概要设计52.1 整体设计5第三章 详细设计6第五章 系统测试运行205.1 测试目的205.2 测试方案205.3 测试内容20总 结21摘 要C语言是一种编译型程序设计语言,编程设计是学习该语言的一个重要环节。通过温习已学的知识,在上机实践中熟悉C语言的编程环境,进而达到能够编写较复杂程序并将其实际应用的程度。在实际编程中不断地深入学习数据结构、算法、编译

2、原理、操作系统原理、软件工程等知识,加深对C语言的理解,切实提高编程水平,这是C语言课程设计的主要目的。关键词:C语言,课程设计第一章 需求分析1.1 系统目的 DVD信息和俱乐部会员信息用文件存储,因而要提供文件的输入输出操作;要注册新会员,因而要提供文件的添加操作;实现缴纳费用,因而要提供文件的修改操作;要浏览信息因而要提供显示操作;要实现查询则要提供文件的查找操作;另外要提供键盘式选择菜单以实现功能选择。1.2 系统功能图第二章 概要设计2.1 整体设计整体设计为登录模块、会员模块、管理员模块。会员模块包括会员注册模块、会员充值模块、会员租用DVD模块、会员归还DVD模块、DVD浏览模块

3、、会员信息模块。修改模块搜索模块排序模块修改模块搜索模块添加模块会员管理模块DVD管理模块注册模块充值模块信息模块租用模块浏览模块归还模块会员模块登陆模块管理员模块电影俱乐部管理模块包括会员管理模块、DVD管理模块。采用文件管理信息,建立两个文件:DVD信息文件和会员信息文件。(实际还有管理员文件,但应不做过多要求所以其功能如修改管理员密码有所忽略,但代码有保留,可以随时添加)数据结构采用结构体:/DVD信息结构体Struct DVDInfo Char No10; /DVD编号 Char name10; /DVD名字 Int state; /DVD状态:0表示已借出,1表示可出借Dvd200;

4、/会员信息结构体Struct MemberInfo Char No10; /会员编号 Char name10; /会员姓名Char password20; /会员密码 Float balance; /账户余额 DI borrowDVD3; /所借DVD信息; Int state; /表示租用DVD的数目,取值为0-3Mem200;2.2 模块设计2.2.1登陆模块登录管理员登陆会员登陆输入管理员账号打开“member.txt”读取会员信息否有无此帐号?是否继续登陆输入会员名是输入密码有无此会员?密码正确?错误密码次数3?输入密码是密码正确?退出系统否进入管理员模块进入会员模块2.2.2会员模块

5、会员登陆成功选择租借模块充值模块信息模块归还模块浏览模块注册模块打开“member.txt”读取会员信息打开“dvd.txt”读取会员信息打开会员和DVD文件打开会员和DVD文件打开“member.txt”读取会员信息打开“member.txt”读取会员信息输入归还数输入充值数输入编号输入租借的DVD编号充值浏览该会员信息显示所有DVD信息修改会员信息输入归还DVD编号显示DVD信息保存文件查重修改用户名修改密码输入会员其他信息修改会员及DVD状态信息修改会员及DVD状态信息保存文件保存文件保存文件保存文件保存文件是否继续?返回相应界面2.2.3管理员模块管理员登陆成功按编号查找返回相应界面是

6、否继续?保存文件输入其他信息查重修改状态修改名称是否修改保存文件修改编号修改该会员全部信息保存文件是否修改按会员名查找搜索显示所有会员信息排序按余额排序按编号排序输入编号按编号搜索DVD会员管理添加DVDDVD管理打开“dvd.txt”读取会员信息打开“member.txt”读取会员信息第3章 详细设计3.1登陆模块3.11会员登陆int Login1()struct Member a;int i,n,b,k,t=0; fflush(stdin); system(cls);n=loadM() ;printf(*欢迎使用DVD信息管理系统*n); printf(n请输入会员名:); scanf(

7、%s,); for(i=0;i=n;i+) if(strcmp(,M)=0) t=1;printf(n请输入会员密码:);scanf(%s,a.password); if(strcmp(a.password,Memi.password)=0) menu1(i); else printf(密码错误); printf(请选择n1.继续登录n2.返回n); doscanf(%d,&b);if(b2) k=1;printf(输入编号错误,请再次输入n); else k=0; while(k=1);if(b=1)Login1();elsemain();if(t=0

8、)printf( 会员名输入错误n); printf(请选择n1.继续登录n2.返回n);doscanf(%d,&b);if(b2) k=1;printf(输入编号错误,请再次输入n); else k=0; while(k=1);if(b=1)Login1();elsemain();return 0; 3.12 管理员登陆int Login2() uifo info; char pw100=0, pw_confirm100=0; int wt = 0; system(cls);memset(&info, 0, sizeof info); read_data(&info); printf(*欢迎

9、进入电影俱乐部*n); while(1) printf(请输入管理员账号n); scanf(%s, pw); if(strcmp(pw, ) != 0) printf(无此管理员n); continue; printf(请输入密码n); scanf(%s, pw); if(strcmp(pw, info.pw) != 0) printf(密码错误n); else menu2(); wt +; if(wt = 3) printf(3 times password error, exit!n); return -1; 3.2 会员模块3.21 会员注册模块提示输入用户信息:会员编

10、号(昵称),会员姓名,密码。将把新的会员信息添加到会员信息文件中,并把账户余额初始化为0,所借DVD信息初始化为空。 int Register() int a,i,n,j,b,k;struct Member s;system(cls); fflush(stdin); printf(请输入增加会员档案的个数:); scanf(%d,&a);n=loadM();for(i=n;in+a;i+) k=0;if(n=0)printf(请输入会员编号:);scanf(%s,Memi.No);elsewhile(k=0)printf(请输入会员编号:); /调用加载函数 n=load()scanf(%s,

11、s.No);for(j=0;ji;j+) if(strcmp(s.No,Memj.No)=0)printf(会员编号已存在n);k=0;break; elsestrcpy(Memi.No,s.No);k=1; printf(请输入会员名: ); scanf(%s,M); printf(请输入会员密码); scanf(%s,Memi.password); Memi.balance=0;Memi.dvd1=Memi.dvd2=Memi.dvd3=0;Memi.state=0; saveM(n+a);printf(nn); printf(请选择n1.继续注册n2.返回n);dosca

12、nf(%d,&b);if(b2) k=1;printf(输入编号错误,请再次输入n); else k=0; while(k=1);if(b=1)Register();elsemain();3.22会员充值模块提示输入交费金额,则在会员信息文件中修改其账户余额。void Payment(int i)/充值模块int n,b,j;float k;system(cls); n=loadM(); printf(请输入充值数);scanf(%f,&k); Memi.balance=k+Memi.balance; saveM(n); printf(请选择n1.继续充值n2.返回n);doscanf(%d,

13、&b);if(b2) k=1;printf(输入编号错误,请再次输入n); else k=0; while(k=1);if(b=1)Payment(i);else menu1(i);3.23会员租用DVD模块可以通过菜单选择。浏览DVD信息调用信息浏览模块,租用则首先查看自己的余额,如果0,则查看状态,如果state3,则允许出借,提示输入租用的DVD编号,在会员信息文件中加入该DVD信息,state+。并在DVD信息文件中把该DVD状态改为已借出。void Rent(int i)/DVD租借模块int j,b,n,d,k=0; struct Dvd t;fflush(stdin);syste

14、m(cls);n=loadM();d=loadD();if(Memi.balance=0)printf(余额不足或已欠费请充值);printf(是否充值1.是 2.返回);doscanf(%d,&b);if(b2) k=1;printf(输入编号错误,请再次输入n); else k=0; while(k=1);if(b=1)Payment(i);elsemenu1(i);if(Memi.state=3)printf(借取已满或编号错误,请尝试先归还DVD);elseprintf(Input the No of DVD what you want to rent!);scanf(%d,&t.No

15、); printf(ntnum name staten);/t水平制表 for(j=0;jd;j+) if(t.No=Dvdj.No) printf_Done(j);break; printf(是否租借该DVD?1.是 2.否并继续租借 3.返回);doscanf(%d,&b);if(b3) k=1;printf(输入编号错误,请再次输入n); else k=0; while(k=1);if(b=2)Rent(i);if(b=3)menu1(i);elseif(Memi.dvd1=0)Memi.dvd1=Dvdj.No;Dvdj.state=1;Memi.state+=1;k+=2; else

16、 if(Memi.dvd2=0)Memi.dvd2=Dvdj.No;Dvdj.state=1;Memi.state+=1;k+=2; else if(Memi.dvd3=0)Memi.dvd3=Dvdj.No;Dvdj.state=1;Memi.state+=1;k+=2; Memi.balance=Memi.balance-k;saveM(n);saveD(d); printf(请选择n1.继续租借n2.返回n);doscanf(%d,&b);if(b2) k=1;printf(输入编号错误,请再次输入n); else k=0; while(k=1);if(b=1)Rent(i);else

17、menu1(i);/一个任务结束时的选择浏览还是返回3.24会员归还DVD模块 提示用户输入要归还的DVD编号,把该用户记录的该DVD信息初始化为空,state-。同时在DVD信息文件中把其状态改为可供出借。void Reback(int i)/DVD返还模块int n,l,t,s,j,b,k,m,o;system(cls);t=loadD(); n=loadM(); printf(请输入归还数量(最大为3); doscanf(%d,&s); if(s2) o=1; else o=0; while(o=1);for(l=0;ls;l+)printf(Input the number of DV

18、D); scanf(%d,&m); for(j=0;jt;j+) if(Dvdj.No=m) if(m=Memi.dvd1&Dvdj.state=1) Dvdj.state=0;Memi.dvd1=0;Memi.state-=1;break; if(m=Memi.dvd2&Dvdj.state=1) Dvdj.state=0;Memi.dvd2=0;Memi.state-=1;break; if(m=Memi.dvd3&Dvdj.state=1) Dvdj.state=0;Memi.dvd3=0;Memi.state-=1;break; else printf(未借出此DVD或编号错误); s

19、aveM(n); saveD(t); printf(请选择n1.继续归还n2.返回n);doscanf(%d,&b);if(b2) k=1;printf(输入编号错误,请再次输入n); else k=0; while(k=1);if(b=1)Reback(i);else menu1(i);3.25信息浏览模块 浏览DVD信息,则采用fread从DVD信息文件中读记录。void BrowseD(int i)/浏览模块,输出所有信息int z,j,k,b;system(cls);z=loadD(); if(z=0) printf(无DVD信息 ); else printf(tNo name sta

20、ten); for(j=0;jz;j+)printf_Done(j); printf(n);printf(请选择n1.继续浏览n2.返回n);doscanf(%d,&b);if(b2) k=1;printf(输入编号错误,请再次输入n); else k=0; while(k=1);if(b=1)BrowseD(i);elsemenu1(i); 3.26会员信息查询及修改模块 会员对自己账户状况的查询,则输出其账户信息即可(登录时在会员信息文件中找到自身信息,事先读到临时变量中),可选择会员名和会员密码的修改。3.26-1信息查询3.26-2 信息修改void menu11(int i) int

21、 n,k; system(cls); do puts(nntt*会员信息*); puts(tt|-|); puts(tt|-|); puts(tt|* 1.显示会员信息 *|);/会员付费 puts(tt|* 2.会员信息修改 *|);/信息修改 puts(tt|* 3.返回 *|);/退出 puts(tt|-|); puts(tt|-|); puts(tt*nnn); printf( 请选择你要进行的操作1-3: bb); scanf(%d,&n); if(n3) k=1;printf(输入编号错误n); else k=0; while(k=1); switch(n) case 1:mems

22、(i);break; case 2:modifyM(i);break; case 7:menu1(i);break;default: printf(输入编号错误n); void mems(int i)int b,k,n;printf(ntNo name balance dvd1 dvd2 dvd3 staten);n=loadM();printf_Mone(i);printf(请选择n1.修改n2.返回n);doscanf(%d,&b);if(b2) k=1; else k=0; while(k=1);if(b=1)modifyM(i);else menu1(i);int modifyM(in

23、t i)/修改信息模块int n,k,b;system(cls); do puts(nntt*信息修改*); puts(tt|-|); puts(tt|-|); puts(tt|* 1.修改会员名 *|);/会员付费 puts(tt|* 2.修改密码 *|);/DVD返还 puts(tt|* 3.返回 *|);/退出 puts(tt|-|); puts(tt|-|); puts(tt*nnn); printf( 请选择你要进行的操作: bb); scanf(%d,&n); if(n3) k=1;getchar(); else k=0; while(k=1); switch(n) case 1:

24、modifyM1(i);break; case 2:modifyM2(i);break; case 3:menu1(i);default: printf(输入编号错误n);printf(请选择n1.继续修改n2.返回n);doscanf(%d,&b);if(b3) k=1; else k=0; while(k=1);if(b=1)modifyM(i);else menu1(i); int modifyM1(int i)/修改信息模块int n,b,k; struct Member s; n=loadM();printf(n please enter the member massages:n

25、name :n);scanf(%s,); strcpy(M,);/复制 saveM(n);printf(请选择n1.继续修改n2.返回n);doscanf(%d,&b);if(b2) k=1;printf(输入编号错误,请再次输入n); else k=0; while(k=1);if(b=1)modifyM(i);else menu11(i);int modifyM2(int i)/修改信息模块int n,b,k; struct Member s; n=loadM();printf(n please enter the member massages:n

26、 password: n);scanf(%s,s.password);strcpy(Memi.password,s.password); saveM(n);printf(请选择n1.继续修改n2.返回n);doscanf(%d,&b);if(b2) k=1;printf(输入编号错误,请再次输入n); else k=0; while(k=1);if(b=1)modifyM(i);else menu11(i);3.3 管理员模块3.31 DVD管理模块添加DVD,搜索并选择修改已存DVD编号、DVD名和其状态。3.31-1 添加模块通会员注册一样,进行DVD信息的添加,并防止编号重复。int a

27、dd()int a,i,n,j,b,k;struct Dvd t;char c;fflush(stdin);system(cls); printf(请输入增加DVD的个数:); scanf(%d,&a);n=loadD();for(i=n;i(n+a);i+) k=0;if(n=0)printf(请输入DVD编号:);scanf(%d,&Dvdi.No);else while(k=0)printf(请输入DVD编号:);scanf(%d,&t.No);for(j=0;ji;j+)if(t.No=Dvdj.No)printf(DVD编号已存在n);k=0;break;elseDvdi.No=t.

28、No;k=1; fflush(stdin); printf(请输入DVD名: ); scanf(%s,D); fflush(stdin);Dvdi.state=0;saveD(n+a); printf(请选择n1.继续添加n2.返回n);doscanf(%d,&b);if(b2) k=1;printf(输入编号错误,请再次输入n); else k=0; while(k=1);if(b=1)add();elsemenu2();3.31-2搜索模块按编号查找void SearchD()/搜索模块int i,m,b,k; struct Dvd t;fflush(stdin); m=l

29、oadD(); printf(nnEnter DVD name that you want to search! No); scanf(%d,&t.No); printf(ntnum name staten);/t水平制表 for(i=0;im;i+) if(t.No=Dvdi.No) printf_Done(i);break; printf(请选择n1.继续搜索n2.修改n3.返回n);doscanf(%d,&b);if(b3) k=1;printf(输入编号错误,请再次输入n); else k=0; while(k=1);if(b=1)SearchD();if(b=2)modifyD(i)

30、;else dvd();/一个任务结束时的选择浏览还是返回 3.31-3 修改模块选择DVD编号、DVD名、DVD状态进行修改。等int modifyD(int i)/修改信息模块int n,k;system(cls); do puts(nntt*信息修改*); puts(tt|-|); puts(tt|-|); puts(tt|* 1.修改DVD编号 *|);/会员付费 puts(tt|* 2.修改DVD名 *|);/DVD返还 puts(tt|* 3.修改DVD状态 *|); puts(tt|* 4.返回 *|); puts(tt|-|); puts(tt|-|); puts(tt*nnn

31、); printf( 请选择你要进行的操作1-4: bb); scanf(%d,&n); if(n3) k=1;getchar(); else k=0; while(k=1); switch(n) case 1:modifyD1(i);break; case 2:modifyD2(i);break; case 3:modifyD3(i);break; case 4:dvd();default: printf(输入编号错误n); return 0;int modifyD1(int i)/修改信息模块int m,k,b; struct Dvd t; m=loadD(); printf(please

32、 enter the dvd massages:No:n); scanf(%d,&t.No); Dvdi.No=t.No; saveD(m);printf(请选择n1.继续修改n2.返回);doscanf(%d,&b);if(b2) k=1; else k=0; while(k=1);if(b=1)modifyD(i);elsedvd();return 0;int modifyD2(int i)/修改信息模块int m,k,b; struct Dvd t; m=loadD(); printf(please enter the dvd massages:namen); scanf(%s,t.na

33、me); strcpy(D,); saveD(m);printf(请选择n1.继续修改n2.返回);doscanf(%d,&b);if(b2) k=1; else k=0; while(k=1);if(b=1)modifyD(i);elsedvd();return 0;int modifyD3(int i)/修改信息模块int m,k,b; struct Dvd t; m=loadD(); printf(please enter the dvd massages:staten); scanf(%d,&t.state); Dvdi.state=t.state; sav

34、eD(m);printf(请选择n1.继续修改n2.返回);doscanf(%d,&b);if(b2) k=1; else k=0; while(k=1);if(b=1)modifyD(i);else dvd();return 0;3.32 会员管理模块3.32-1排序模块将会员信息按照编号或余额排序,并浏览。void BrowseM()/浏览模块,输出所有信息int a,k,i=0;system(cls); do printf(*浏览会员信息*n); printf(请输入对应操作编号进行选择,以回车键结束); printf(n 1. 按编号排序n); printf(n 2. 按余额排序n);

35、 printf(n 3. 返回n); printf(n请选择编号:); scanf(%d,&a); if(a3) k=1;printf(输入编号错误,请再次输入n); else k=0; while(k=1); switch(a) case 1: BrowseM1(); case 2: BrowseM2();case 3:menu2(); default: printf(输入编号错误n); void BrowseM1()/浏览模块,输出所有信息int i,n,k,b,j;struct Member temp; n=loadM();/调用加载函数 n=load() for(i=0;in;i+)

36、for(j=0;j0) temp=Memj; Memj=Memj+1; Memj+1=temp; printf(ntNo name balance dvd1 dvd2 dvd3 staten); for(i=0;in;i+) printf_Mone(i); printf(n); printf(ntThere are %d record.n,n);printf(请选择n1.继续浏览n2.返回n);doscanf(%d,&b);if(b2) k=1;printf(输入编号错误,请再次输入n); else k=0; while(k=1);if(b=1)BrowseM();else mem();voi

37、d BrowseM2()/浏览模块,输出所有信息int i,n,j,b,k;struct Member temp; n=loadM();/调用加载函数 n=load() for(i=0;in-1;i+) for(j=0;jMemj+1.balance) temp=Memj; Memj=Memj+1; Memj+1=temp; printf(ntNo name balance dvd1 dvd2 dvd3 staten);for(i=0;in;i+)printf_Mone(i); printf(n); printf(ntThere are %d record.n,n); printf(请选择n1

38、.继续浏览n2.返回n);doscanf(%d,&b);if(b2) k=1;printf(输入编号错误,请再次输入n); else k=0; while(k=1);if(b=1)BrowseM();else mem();3.32-2 搜索模块按会员名或会员编号搜索int SearchM()/搜索模块int a;system(cls); printf(*欢迎进入电影俱乐部*n); printf(请输入对应操作编号进行选择,以回车键结束); printf(n 1. 按会员名搜索n); printf(n 2. 按会员编号搜索n); printf(n 3. 退出n); printf(n请选择编号:)

39、; scanf(%d,&a); switch(a) case 1: Search1();break; case 2: Search2(); break;case 3:exit(0); default: printf(输入编号错误n); SearchM(); return 0;void Search1()/搜索模块struct Member s;int i,n,b,k; n=loadM();/调用加载函数 n=load() printf(nnEnter member name that you want to search! name:); fflush(stdin); scanf(%s,s.n

40、ame); for(i=0;in;i+) if(strcmp(,M)=0)/比较两字符串 printf(nt name sex age dvd1 dvd2 dvd3 dayn); printf_Mone(i);break; printf(请选择n1.继续搜索n2.修改n3.返回n);doscanf(%d,&b);if(b3) k=1;printf(输入编号错误,请再次输入n); else k=0; while(k=1);if(b=1)SearchM();if(b=2)modifyAM(i);else menu2();/一个任务结束时的选择浏览还是返回void Search2()/搜索模块int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论