需求分析-需求分析

需求分析-需求分析

ID:44676827

大小:362.39 KB

页数:22页

时间:2019-10-24

上传者:U-7604
需求分析-需求分析_第1页
需求分析-需求分析_第2页
需求分析-需求分析_第3页
需求分析-需求分析_第4页
需求分析-需求分析_第5页
资源描述:

《需求分析-需求分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

不賀片衣遂TALYVANTNTVERH1TYQVTECHNOLOGY《程序设计》课程设计姓名:李抱朴学号:2012006232班级:软件工程1205班指导教师:宋春花成绩: 2014年6月 目录保龄球计分1)需求分析12)概要设计13)详细设计34)调试分析55)用户使用说明56)测试结果67)附录6统计数字1)需求分析2)概要设计3)详细设计4)调试分析5)用八使用说明6)测试结果错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。7)附录错误!未定义书签。背包问题1)需求分析2)概要设计3)详细设计4)调试分析5)用户使用说明6)测试结果错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。7)附录错误!未定义书签。 保龄球计分题目:设计一个保龄球计分程序1)需求分析此次课程设计的主要内容是模拟保龄球计分系统。打保龄球是用一个滚球去撞击10个站立的瓶,将瓶击倒。一局分10轮,每轮可滚球1次或2次,以击到的瓶数为依据计分。一局得分为10轮得分之和,而每轮的得分不仅与本轮的滚球情况有关,还口J能与后一轮或后两轮的滚球情况有关,即:某轮某次滚球击倒的瓶数不仅要计入本轮得分,述可能会计入前一轮或两轮得分。计分规则如下:①若某一轮的第一次滚球就击倒全部10个瓶,则本轮不再滚球(若是第十轮还需加2次滚球),该轮得分为木次击倒瓶数10与以后2次滚球所击倒瓶数之和;②若某一轮的第一次滚球未击倒全部10个瓶,则对剩下未倒的瓶再滚球一次,如果这2次滚球击倒全部10个瓶,则木轮不再滚球(若是第十轮还需加1次滚球),该轮得分为这2次击倒瓶数10与以后1次滚球所击倒瓶数Z和;③若某一轮2次滚球未击倒全部10个瓶,则本轮不在滚球,该轮得分为这2次滚球所击倒瓶数之和。测试数据:(5,5),(3,6),(8,9),(0,9),(8,7),(10,),(0,10),(2,2),(2,3),(4,5)错误数据:(1,12)2)概要设计类抽象数据类型的定义:typedefunsignedcharMKByte;#dcfincSUCCESS0/*Noerror*/#defineMFAILED1/*Generalfailure*/#defineMNOMEMORY2/*Outofmemory*/确保初始化:#dcfincDcclarcTwoDAiTay(ATYPE,inamc)ATYPE**inamc=NULL〃定义口己的malloc和free,确保内存止确操作#defineMKMALLOC(nsize)malloc(nsize)#defineMKFREE(name)if(NULL!=namc)free(name); name=NULL实现:intMKCreatArray(intnsize,intX,intY,void***parray){void**tdarray=NULL;MKByte*tmparray=NULL;inti=0;*parray=NULL;分配指针数组讦(!(tdarray=(void**)MKMALLOC(sizeof(MK_Byte*)*Y))){returnMNOMEMORY;}〃分配实际数组空间if(!(tmparray=(MK_Byte*)MKMALLOC(nsize*(X*Y)))){MKFREE(tdarray);returnMNOMEMORY;}初始化内存memset(tmparray?0x00,nsize*(X*Y));指针数组赋值for(i=0;i #include主函数main()intx[ll][4],j,i,a[4][H];for(i=O;ix[9][2]+x[8][3];for(i=0;i<10;i++)for{j=0;j<4;j++)aU][i]=x[i][j];/*数组转换*/a[0][10]=x[10][0];a[l][10]=x[10][l]; for(j=0;j<2;j++)严输出每局第一二次得分*/严输出毎轮得分与累积分*/{fbr(i=O;i#includemain() fbr(i=O;ii)fast(i,y-l);}调用fast函数对数据进行快速排序。j=l;a[n+l]=-l;for(i=l;i<=n;i++)if(a[i]==a[i+l])j++;对快速排序后的数组进行重复统计else{printf(n%ld%ld H,a[i],j);>1;}system(npausen);}按照自然数从小到大的顺序输岀。每行输出两个整数,分別是自然数和该数出现的次数,其间用一个空格隔开。 4)调试分析本程序算法设计上不算复朵,运用简单的调用函数对输入的数据进行排序,使得在对数据进行重复统计的时候所需的算法变得简单。虽然程序不算复杂,但是仍需一丝不苟的编写,每编错一个地方就很有可能使程序变得无法运行。5)用户使用说明1.进入程序后,用户按照提示分别输入日然数个数和收集到的白然数数据。2.在输入自然数数据时,按照每行一个自然数的格式输入自然数。3.输出的结果分为两列,第一列为自然数的自低到高的排序序列,笫二列为对应的自然数出现的次数。6)测试结果假设有六个自然数,分别为3,4,1丄0,9则程序测试结果如下7)附录源代码:#includc#includevoidfast(longxjongy);longa[200001];voidmain(){longi,j,n;printf(H自然数个数:”);scanf(M%ldn,&n);//读入数据总数printf(n输入数据: ”); fbr(i=l;i<=n;i++)scanf(”%ld”,&a[i]);〃每行一个数fast(l,n);j=l;a[n+l]=-l;for(i=l;i<=n;i++)//^计重复数据if(a[i]==a[i+l])j++;else{printf(n%ld%ld ”,a[i],j);j=l;}system(npausen);}voidfast(longx,longy){longi,j;longm;i=x;j=y;while(xi)fast(i,y-l);}三、背包问题题目:设计一个求解背包问题的程序1)需求分析(1)问题描述已知有n种物品和一个可容纳M重量的背包,每种物品i的重量为W,假定将物品i的一部分Xi放人背包就会得到PiXi的效益,这里,oWXiWl,Pi>0o采用怎 样的装包方法才会使装入背包物品的总效益最大。(1)建立数学模型极大化:(1)约束条件:⑵宙切(2)0=P(i+l)/W(i+l)排序的n件物品的效益〃值和重量。M是背包的容量大小,而X(l:n)是解向量realP(1:n),W(l:n),X(1:n),M,cu;integeri,n;X—0〃将解向量初始化为0;cu<—M//背包剩余容量fori—1tondoifW(i)>cuthenexitendifX(i)-1ciB—cu・W(i)repeatifi<=nthenX(i)<—cu/W(i)endifendGREEDYKNAPSACK1)详细设计(1)数据类型的定义〃定义全局变量//definetotal10〃物品的最人总数floatp[total],w[total],t[total];〃p[]存储价值,w[]存储重量,t[]辅助数组floatcu;//cu保存当前背包容虽(2)数据检查模块while(l){scanf(H%d%f&n,&cu);if^n#definetotal10floatp[total],w[total],t[total];voidgreedyknaPsack(intx5intc){intnotc.i;floatmax;while(l){note=0;max=0;fbr(i=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭