




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
工程设计实践文档模板目 录项目任务书1项目组成员表4项目策划书5需求分析7计算机系项目状态报告表9项目沟通会议纪要12系统详细设计16项目总结表18参考文献20致谢2126项目任务书一、项目基本情况项目编号项目名称21点纸牌项目起止日期2015.4-2015.6项目指导老师陈科 杨菊英二、项目描述1、项目背景与目的设计一款以21点玩法为主的纸牌类游戏,该程序是一个21点的扑克牌游戏,玩家一共可以要5张牌,如果牌的点数超过21,则暴了,自动出局;在不超过21点的情况下,玩家与庄家(计算机)比较牌点数的大小,大者为赢。附加要求:(1)程序中一共有52张扑克牌可以随机抽取,大于10的点数为10,现要求大于10的点数全部为半点;(2)高级玩家可以查看下一张牌,即按H键,然后要求输入密码,密码正确可以看牌,并决定是否要牌。当然,在游戏规则上不能泄露这个秘密;(3)可以编写作弊程序,即按某一个键(自定)去查看计算机的牌面,并根据计算机所得的牌来输入自己想要的牌,当然,在界面上不能显示这点秘密(看过后即清屏);(4)每次要牌后可以设定下注值,即如果开始下的是10金币的注,如果牌好,你可以要求再下注,当然不能超过你所有的总钱数。注意:为避免信息的丢失,基本信息需要在存储在磁盘文件中。2、项目目标1、显示扑克牌牌面信息该模块为系统启动界面,在游戏启动之初,游戏界面可以显示所有扑克牌的牌面(同时以文字形式描述游戏规则)。2、随机抽取扑克牌该模块可以实现52张扑克牌的随机抽取(一场游戏中玩家随机抽取的扑克牌数量不能超过5张)。3、查看下一张随机抽取扑克牌牌面信息该模块结合键盘H键实现下一张随机抽取的扑克牌牌面信息的提取(需要在程序中设计下一张牌信息提取的密码)。4、牌面点数总和计算该模块实现每一轮发牌之后的牌面点数总和计算操作(主要针对庄家,即计算机)。5、作弊程序该模块实现的具体功能参考上文附加要求的第三点。6、下注值设定该模块实现游戏启动之后的赔率设定,需要玩家给出一个初始下注值(该初始值不能超过玩家拥有金币的上限),每一轮要牌之后可以追加投注(投注金币值不能超过玩家拥有金币的上限)。7、金币设定该模块实现游戏启动初始阶段玩家拥有的金币数量(一般设定为100金币,要求保存在磁盘文件中)和庄家(计算机)拥有的金币数量(一般设定为1000金币)。8、输赢判定该模块实现游戏结束之后玩家与庄家(计算机)之间的输赢判断,赢家可以获取输家的所有下注金币(该金币值不设上限)。若庄家(计算机)金币已输完,则游戏开始下一轮,玩家的金币累计到下一轮,不重置为初始值。9、界面风格每一组项目任务组根据自己组员的喜好设定个性化的界面UI、背景音乐等。三、项目任务分工1、工程设计I实践课程目的工程设计1开设的宗旨秉承计算机系人才培养方案宗旨,培养和输送合格的软件工程师,所以该课程的开设就是让学生在该实践类课程中,熟悉并充分掌握软件开发流程中的每个环节和步骤,主要目的如下:(1) 巩固和加深对基本知识的理解,提高综合运用课程知识的能力。(2) 掌握软件设计的基本内容和设计方法,并培养规范化软件设计的能力。(3) 掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。(4) 达到理论与实际应用相结合,提高学生组织数据及编写大型程序的能力,并培养基本的、良好的程序设计技能以及团队合作能力。项目角色职责投入工作量A完成需求分析、程序整体框架设计,设计程序模块35%B理解程序整体框架,设计程序模块20%C理解程序整体框架,设计程序模块20%D理解程序整体框架,设计程序模块,撰写项目文档25%四、项目评价标准(1) 每组必须有可运行的程序(25分);(2) 每组必须提交各项软件开发文档,包括项目策划书、项目组成员表、需求分析、系统详细设计、项目总结表、小组项目沟通会议纪要、项目状态报告表(50分)(3) 每组有PPT演示,答辩时能回答老师提出的问题(30分)2. 评分标准(1) 教师要不定期检查项目完成进度,团队协作情况,进行严格的监督和审查,并记录平时成绩。(2) 程序完成情况及运行结果;(3) 按照要求认真完成各项软件开发文档,能够对自己的程序设计思想通过PPT进行展示并能回答教师提问。注意:总分不足60分视为不通过。以上三项缺一不可,否则视为不通过,不能到得相应学分。项目组成员表一、项目基本情况项目编号项目名称21点纸牌项目起止日期2015.4-2015.6项目组组长学号1440610729项目组组长姓名何吉贵项目指导老师陈科、杨菊英 二、项目组成员成员学号成员姓名项目角色职责投入工作量联系电话1440610730何吉贵项目组长总体负责系项目想30%183280647001440610725刘胡科项目核心成员研发支持项目25%184283281291440610727杨伟项目核心成员研发支持20%1440610729谢熙项目核心成员测试支持25注:1、 项目角色分为:项目组长、项目核心成员、项目非核心成员、项目其他人员、项目赞助人2、 职责根据实际情况填写,参考职责有:总体负责、研发支持、客户关系、供应链支持、产品技术支持、接待策划3、 投入工作量根据实际情况填写,以百分比%形式,所有成员的总和为100%项目策划书一、项目基本情况项目编号项目名称21点纸牌项目起止日期2015.42015.6项目指导老师1、 陈科、杨菊英二、项目描述1、项目背景与目的 “21点”是一个古老的扑克牌游戏,游戏规则是:各个参与者设法使自己的总分为21而不超过这个数值。扑克牌的分值取它们的面值,A充当1分或11分(由玩家自己选择一种分值),J、Q和K人头牌都是10分。庄家对付17个玩家。在一局开始时,包括庄家在内的所有参与者都有两张牌。玩家可以看到他们的所有牌以及总分,而庄家有一张牌暂时是隐藏的。接下来,只要愿意,各个玩家都有机会再拿一张牌。如果某个玩家的总分超过了21(称为“引爆”),那么这个玩家就输了。在所有玩家都拿了额外的牌后,庄家将显示隐藏的牌。只要庄家的总分等于或小于16,那么他就必须再拿牌。如果庄家引爆,那么还没有引爆的所有我玩家都将获胜,引爆的玩家打成平局。否则,将余下的各玩家的总分与庄家的总分做比较,如果玩家的总分大于庄家的总分,则玩家获胜。如果二者的总分相同,则玩家和庄家打成平局。综合应用所学的C语言程序设计及数据结构知识,自行设计并实现一个较为完整的21点纸牌游戏系统。通过系统分析、系统设计、编程实现,写实验报告等环节,初步掌握初级游戏软件系统的设计方法和步骤,提高灵活运用程序语言进行软件开发的技能,提高程序设计水平和分析问题、解决问题的能力。2、拟用关键技术:数组,文件。3、项目目标软件名称:21点纸牌用户文档:任务书、进度计划表、项目组成员表、项目策划书、需求分析书、项目状态报告表、项目沟通会议纪要、系统详细设计、项目总结表、教师审查表。其它:(1)提供友好的用户界面,使操作人员的工作量最大限度的降低;(2)有良好的可扩充性,可以容易地加入其他系统的应用;(3)平台设计具有一定灵活性和超前性;(4)强化团队协作能力,提高软件开发能力。三、项目评价标准1、软件能正常运行,基本实现各功能模块功能;2、项目策划书、需求分析、详细设计文档等资料;软件能正常运行,文档资料描述清晰可视为合格。对于以上项目前期策划书内容,项目组成员及指导老师一致同意通过!成员学号成员姓名项目角色职责学生签字确认项目策划书1440610730何吉贵项目组长总体负责1440610725刘胡科核心成员研发支持1440610727杨伟核心成员研发支持1440610729谢熙核心成员测试支持指导教师签字确认项目策划书1、2、需求分析一、项目开发背景当今计算机已经在全国大部分地区得到了广泛的普及,为满足人们对21点纸牌游戏的软件使用需求,21点游戏的软件开发又是一件十分急迫又有前景的开发。随着社会的发展科技的进步,计算机的应用在社会各领域中都得到了普及。越来越多的人都感受到利用计算机来玩各种游戏的快捷,且更能满足人们消耗业余时间的心理。21点游戏是一款典型的纸牌游戏,其使用面积极广,应用人说极多,界面要求低,是一款不错的上机编写程序实例。二、功能概述 21点纸牌游戏最多允许7位玩家,在开始时每一位玩家都先发两张牌,只有庄家的第一张牌隐藏,其余的牌都是明着的,接下来,只要愿意,各个玩家都有机会依次再拿一张牌。如果某个玩家的总分超过了21(称为“引爆”),那么这个玩家就输了。在所有玩家都拿了额外的牌后,庄家将显示隐藏的牌。只有庄家的总分等于或小于16,那么他就必须再拿牌。如果庄家引爆了,那么还没有引爆的所有玩家都将获胜,引爆的玩家打成平局。否则,将余下的各玩家的总分与庄家的总分做比较,如果玩家的总分大于庄家的总分,则玩家获胜。如果二者的总分相同,则玩家与庄家打成平局。电子科技大学成都学院计算机系项目状态报告表填表日期: 2015年 6月 5日项目编号项目名称21点纸牌当前项目状况 按计划进行 比计划提前 落后计划一、当前任务状态 (简要描述任务进展情况)关键任务状态描述1. 分析项目背景,做准备工作对项目背景进行分析,简单了解此项目的需求。2. 需求分析根据项目任务书分析了项目中的功能模块,精细化需求。3. 技术支持的学习对功能模块所需要用到的知识进行学习。二、存在的困难1、由于不能实地调研,可能项目背景分析和调研的数据不是很准确。2、开发平台不是很熟练,不过正在努力解决。3、由于缺少经验,文档格式和书写存在不规范的地方。以上内容由学生填写,以下内容由老师填写检查评语检查教师签 名教务科科长签字盖 章说明:1.本表内容如实填写;2、本表应妥善保管,以便装订;电子科技大学成都学院计算机系项目状态报告表填表日期: 2015年 6月 10 日项目编号项目名称21点纸牌当前项目状况 按计划进行 比计划提前 落后计划一、当前任务状态 (简要描述任务进展情况)关键任务状态描述1.需求分析对需求进一步核实。2.准备工作落实准备工作进一步落实。3.技术知识的巩固对技术知识进一步学习掌握。二、存在的困难1.对软件需求理解不是很透彻;2.工作落实不太彻底;3.技术知识不太熟练;以上内容由学生填写,以下内容由老师填写检查评语检查教师签 名教务科科长签字盖 章说明:1.本表内容如实填写;2、本表应妥善保管,以便装订;电子科技大学成都学院计算机系项目状态报告表填表日期: 2015年 6月 15 日项目编号项目名称21点纸牌当前项目状况 按计划进行 比计划提前 落后计划一、当前任务状态 (简要描述任务进展情况)关键任务状态描述1.需求分析检测各个模块的功能。2.详细设计完善项目详细设计。3.熟悉开发环境对源程序在开发环境下运行调试二、存在的困难1.模块不够完善;2.系统数据分析;3.对开发环境不熟练;以上内容由学生填写,以下内容由老师填写检查评语检查教师签 名教务科科长签字盖 章 说明:1.本表内容如实填写;2、本表应妥善保管,以便装订;项目沟通会议纪要一、基本信息会议名称项目启动会召集人陈科、杨菊英会议日期2015 年 5月 11 日会议时间18:00会议地点二教108记录人何吉贵会议参会人(学生签字)1何吉贵2刘胡科3杨伟4谢熙5678二、会议目标分析项目背景,分配准备工作,讨论需求分析和详细设计三、会议概要(发言人的观点、意见和建议)陈老师:向我们介绍了工程设计1设计项目的相关内容,包括项目的背景与目的,项目的目标,和项目的评价标准。讲解了下我们还需要掌握什么知识。分组并系统自己抽题目。四、会议决议(会议结论)经过这次会议,我们大致了解了毕业设计项目的事宜,分析了项目的任务,初步理解了文档的格式与写法,清楚了各自初期项目的任务。一、基本信息会议名称详细设计检查召集人陈老师、杨老师会议日期2015 年6月5 日会议时间12:00会议地点二教108记录人何吉贵会议参会人(学生签字)1何吉贵2刘胡科3杨伟4谢熙5678二、会议目标检查项目完整性及催促进度三、会议概要(发言人的观点、意见和建议)杨老师:进一步检查项目进度,督促我们加快步伐。最后,老师对项目人员分工进行了微调,进一步明确了任务。何吉贵:针对系统详细设计和老师进行了讨论,修改和添加了部分内容。刘胡科:利用开发工具,练习编程,为系统开发做最后准备。谢熙:测试练习。四、会议决议(会议结论) :快点做项目沟通会议纪要一、基本信息会议名称编码召集人陈老师、杨老师会议日期2015 年 6月 15 日会议时间12:00会议地点二教108记录人何吉贵会议参会人(学生签字)1何吉贵2刘胡科3杨伟4谢熙5678二、会议目标老师检查我们的项目进度,学生提出项目中遇到的问题三、会议概要(发言人的观点、意见和建议)陈老师、杨老师:检查了我们的项目进度,和同学探讨系统开发过程中遇到的问题,并一一解答。组员:小组成员相互配合,演示系统编写情况,对遇到的问题向老师进行了询问,在老师的帮助下得到了解决;对部分模块的功能进行了调整。四、会议决议(会议结论)通过这次会议,基本改正了开发过程中不足的地方,项目开发进入后期修改阶段。系统详细设计1数据定义系统中主要涉及到玩家人数、扑克牌分值、玩家分值,而这些数据由多个类型不相同的函数实现,具体如下:int compare(char sum1,char sum2)int breakal(int sum)char change(int card)void game()int main()2函数定义系统采用面向过程形式实现,每一功能编写成一个函数,在main函数中利用选择来进行不同的跳转,实现相应功能,具体如下:(1)main():系统实现入口;(2)void game():游戏实现函数;3系统实现(1) 系统主界面(2)关键代码段:void game()char name20;printf(请输入你的名字:n);scanf(%s,name);printf(Hello,%s你的名字%s,真是一个不错的名字。让我们开始吧n,name,name); int i,k,n; char host_ch,player_ch,host_card15,player_card15; int host_sum=0,player_sum=0; srand(time(NULL); for(i=0;i1 & player_cardi10) /输出玩家抽到的牌的点数 printf(您抽到的第%d张牌是%dn,i+1,player_cardi); else if(player_cardi=10) printf(您要到的第%d张牌是%cn,i+1,player_ch); else printf(您要到的第%d张牌是An,i+1); if(player_ch=A) /询问判断玩家的A的点值为1或11 printf( 您有一张A,您想要A作1还是11?n); printf( 1. 1n ); printf( 2. 11n); if(scanf(%d,&n) & n=1) player_cardi=1; else player_cardi=11; host_cardi=1+int (10.0*rand()/(RAND_MAX+1.0); host_ch=change(host_cardi); if(host_ch=A) /电脑自动判断庄家的A的点值为1或11 k=1+int(rand()/(RAND_MAX+1.0); if(k=1) host_cardi=11; else host_cardi=1; player_sum+=player_cardi; /分别对庄家和玩家的点数求和 host_sum+=host_cardi; printf(您现在的总面值为%dn,player_sum);/输出玩家的总面值 for(i=2;i5;i+) if(host_sum0)/电脑自动判断庄家是否要牌 host_cardi=1+int (10.0*rand()/(RAND_MAX+1.0); host_ch=change(host_cardi); if(host_ch=A) /电脑自动判断庄家的A的点值为1或11 k=1+int(rand()/(RAND_MAX+1.0); if(k=1) host_cardi=11; else host_cardi=1; host_sum+=host_cardi; printf(您还要继续要牌吗?n); printf( 1.要n); printf( 2.不要n); scanf(%d,&k); if(k=1) player_cardi=1+int (10.0*rand()/(RAND_MAX+1.0); player_ch=change(player_cardi); if(player_ch=A) /询问判断玩家的A的点值为1或11 printf(您有一张A,您想要A作1还是11?n); printf( 1. 1n ); printf( 2. 11n); if(scanf(%d,&n) & n=1) player_cardi=1; else player_cardi=11; printf(您要到的第%d张牌是An,i+1); else printf(您要到的第%d张牌是%dn,i+1,player_cardi); player_sum+=player_cardi; if(i=4) printf(您手中已有5张牌,一决胜负的时刻到啦!n); if(breakal(host_sum)=0) if(breakal(player_sum)=0) printf(庄家爆牌了,您也爆牌了!真可惜啊,庄家的牌面值是%d,您的牌面值是%dn,host_sum,player_sum); printf(n唉You lose.n); break; else if(breakal(player_sum)=0) printf(您爆牌了!您的牌面值是%dn nYou lose.n,player_sum); break; if(breakal(host_sum)=0) printf(庄家爆牌了!哈哈!庄家的牌面值是%dn,host_sum); printf(nCongratulations! YOu win!n); break; else printf(庄家的牌面值是%d,您的牌面值是%dn,host_sum,player_sum); if(compare(host_sum,player_sum)=1) printf(nYou lose.n); else printf(nCongratulations! You win!n); break; 4系统测试(1)测试目的为执行测试提供用例,指导测试的实施,查找分析缺陷,评估测试质量。(2)测试范围本次设计中主要考虑系统功能测试。(3) 测试用例系统模块功能点用例说明前置条件输入/显示预期结果测试结果备注玩家名字及抽到的点数信息输入及玩家的点数玩家名字可输入性进入游戏单击文字输入玩家名字1) 输入汉字,如李,张2) 输入英文字符,如abcABC文本变成白色输入状态并有闪烁字符光标文本框变成输入状态,有闪烁光标玩家抽取的点数进入游戏输出玩家抽到的牌的点数输出玩家抽到的牌的点数显示玩家随机抽取的点数判断玩家点数和并做比较进入游戏电脑自动判断庄家的A的点值为1或11,分别对庄家和玩家的点数求和电脑自动判断庄家是否要牌电脑自动判断庄家的A的点值为1或11,输出游戏结果输出游戏结果,并询问玩家是否继续项目总结表一、项目基本情况项目编号项目名称21点纸牌制作日期2015年6月18日项目指导老师1、 陈科 2、杨菊英二、项目完成情况总结时间:每一阶段都按指导老师规定的任务一步一步地完成,具体如下: 2015.5.11-2015.6.5:我们完成了项目背景分析,了解开发工具,初步撰写了需求分析文档和系统详细设计文档。 2015.6.5-2015.6.10:我们初步完成了需求分析文档和系统详细设计文档,开始了软件的编程。 2015.6.10-2015.6.20:完成了系统模块的设计,以及编程实现了各个模块的功能。2015.6.18-2015.6.20:准备答辩材料,进行答辩。用户文档:任务书、进度计划表、项目组成员表、项目策划书、需求分析书、计算机系项目状态报告表、项目沟通会议纪要、系统详细设计、项目总结表、教师审查表。编程语言及环境:(1)开发语言:c(2)开发工具:VC+ 6.0三、项目经验、教训总结1. 经过这次工程设计,我们对C开发有了更加成熟的认识,对测试程序掌握的更加熟练。2. 由于平时很少做项目,这次毕业设计给了我们一个机会,也是考察我们学习知识的非常好的机会,让我们认识到自己编程方面的不足,加强了我们的编程能力。3. 完成项目后,感觉自己使用Word的能力也上升了,了解了更多的Word功能。4. 由于对设计内容的认识不够充分,认为四个人两个月做一个项目绰绰有余,所以开始都不急做,到后来做项目的时间比较紧,让我们意识到以后做事要循序渐进,不要等到最后时刻才赶工,以免影响做事的质量。5. 因为时间的关系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离婚双方子女抚养费用及探望权约定合同范本
- 髂窝脓肿课件
- 环保水产养殖业生态环境保护预案
- 提高免疫力的健康方法
- 嵌入式软件设计模式手册
- 2025专升本审计学试题及答案
- 制定符合客户喜好的产品推广方案
- 2025中国医药招聘公司总监等高级管理岗位笔试历年参考题库附带答案详解
- 设施设备保养维护要求
- 地产行业可持续发展规划
- 《思想道德与法治》课件第四章明确价值要求践行价值准则第三节积极践行社会主义核心价值观
- 高等土力学土的本构关系
- 静脉治疗现状与发展趋势
- GB/T 905-1994冷拉圆钢、方钢、六角钢尺寸、外形、重量及允许偏差
- GB/T 29494-2013小型垂直轴风力发电机组
- GB/T 19188-2003天然生胶和合成生胶贮存指南
- 2023年化工检修钳工题库及答案
- 酒店文化全套教学课件
- 基于位置的服务LBS课件
- 9.软件质量保证计划
- 收益权投资协议书范本
评论
0/150
提交评论