出圈游戏1c++程序设计报告书

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

河北联合大学2012-2013第2学期《软件设计基础-C++》课程设计报告设计名称:出圈游戏1姓名:张子超学号:201214670112专业班级:12轧一学院:冶金与能源学院设计时间:2013年5月10日至2013年7月1日设计地点:学校机房指导教师评语:指导教师签字:年月日成绩:75《软件设计基础-C++》课程设计报告第2页,共14页目录1.课程设计目的··············································································32.课程设计任务与要求·····································································33.课程设计说明书···········································································54.课程设计成果··············································································75.程序调试过程·············································································116.设计问题的不足和改进方案···························································117.课程设计心得············································································128.参考文献··················································································13《软件设计基础-C++》课程设计报告第3页,共14页1.课程设计目的《软件设计基础-C++》课程设计是这门课程的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C++的知识点,又接近工程实际需要。目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握C++这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。2.课程设计任务与要求:要求:本次课程设计利用《软件设计基础-C++》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。要求:1、对系统进行功能需求分析2、设计合理的数据结构和系统框架3、编程简练,程序功能齐全,能正确运行4、说明书、流程图要清楚5、课题完成后必须按要求提交课程设计报告任务:问题描述:假设有n个人按顺时针围成一圈,一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始报数,报到m时停止报数。报到m的人出列,然后从他原来所在的顺时针方向的下一个开始重新从1报数,报到m时停止报数并出列。如此下去,直至所有的人全部出列为止。要求按他们出列的顺序输出他们原来的序号和名字。问题的解决方案:本课程设计任务描述中,要实现从键盘随机输入这两个数据完成出圈游戏。因此,需要根据运行时的实际要求,分配适当大小的存储区。当回答参加游戏的人数之后,即可为程序分配一块内存块,用来存入游戏者的名字和序号。但在计算中,需要将点到的人出圈,这是通过将对象的序号均变为0实现的。基本要求:(1)在头文件中声明SeqList类。《软件设计基础-C++》课程设计报告第4页,共14页(2)源代码程序要求必要的注释。(3)每个模块存入一个文件中,以多文件模式存储并调试程序。创新要求在基本要求达到后,可以进行创新设计,如使用动态存储管理(使用动态数组接收输入,并且参加游戏的人数和间隔可变)。《软件设计基础-C++》课程设计报告第5页,共14页3.课程设计说明书⑴概要设计模块说明:在我设计的程序中一共包括SeqList声明,接收模块,检查模块,循环模块,和输出模块。最终是通过Joseph函数实现出圈。模块结构图:⑵详细设计1.总体流程图:SeqList声明接收模块检查模块循环模块循环模块输出模块Joseph函数Main函数用SeqList类创建对象调用Joseph函数实现出圈输出提示要求键盘输入数字用game1()形成链表《软件设计基础-C++》课程设计报告第6页,共14页2.各功能模块流程图(1)调用Joseph实现出圈不符合要求符依旧不符合合符合(2)其余模块均为简单语句,无需细分,只需注意语法和格式即可输出最后一个的相关信息检查输入的人数和间隔数是否符合要求接收键盘上的数字输出相应的提示,并要求正确输入循环报数出圈直至留下一个人,并且每次出圈都输出《软件设计基础-C++》课程设计报告第7页,共14页4.课程设计成果程序源代码#includeiostream#includestring.husingnamespacestd;//类声明用的是双链表classSeqList{intnum;charname[10];public:SeqList*next;//对象的下一个对象的指针SeqList*pre;//对象的前一个对象的指针intGetNum();//得到私有数据序号voidDispName();//从链表中除去选中的那个人char*GetName();//得到私有数据姓名voidSetNum(inta);//设置私有数据序号voidSetName(charb[10]);//设置私有数据姓名~SeqList(){}//析构函数,其实在这里写不写都行};//类成员函数定义intSeqList::GetNum(){returnnum;}//读数据成员voidSeqList::DispName(){pre-next=next;next-pre=pre;//printf(%d%s\n,num,name);}char*SeqList::GetName(){returnname;}//读数据成员《软件设计基础-C++》课程设计报告第8页,共14页voidSeqList::SetNum(inta){num=a;}voidSeqList::SetName(charb[10]){strncpy(name,b,10);}//主函数的定义voidgame1();voidJoseph(SeqList*p,intlength);intmain(){game1();return0;}//建立成员的双链表过程,输入成员并将其链接成一个双链表,便于删除和添加对象voidgame1()//游戏的输入成员工程{intn,i,m;intnum1;chars[10];cout请输入总人数和出圈数endl;cinnm;while(n=0||m=0){cout请输入正确的总人数和出圈数endl;cinnm;}SeqList*head,*p,*q;//声明链表所需的指针head=(SeqList*)newSeqList;//头指针cout请输入序号和姓名endl;cinnum1s;head-SetNum(num1);//头指针所指对象的建立过程head-SetName(s);head-pre=NULL;head-next=NULL;p=head;《软件设计基础-C++》课程设计报告第9页,共14页for(i=1;in;i++)//指针其余部分的建立{q=(SeqList*)newSeqList;p-next=q;cinnum1s;q-SetNum(num1);q-SetName(s);q-pre=p;q-next=NULL;p=q;}p-next=head;head-pre=p;Joseph(head,m);//函数调用删除对象deleteq;}voidJoseph(SeqList*q,intlength)//游戏的剔除并输出对象的过程{cout出圈顺序endl;inti,j;SeqList*p=q;for(i=0;p-next!=p;i++){if(i==0)j=1;elsej=0;for(;jlength;j++)//遍历对象{p=p-next;}coutp-GetNum()p-GetName()endl;//输出所选择的对象的信息p-DispName();//删除所选择的对象}deleteq;}《软件设计基础-C++》课程设计报告第10页,共14页运行过程《软件设计基础-C++》课程设计报告第11页,共14页5.程序调试过程写出程序调试步骤,及遇到的问题。调试程序遇到的问题第一次:忘记两个分号解决办法:加分号第二次:变量num1未定义解决办法:在变量声明部分加intnum16.设计问题的不足和改进方案不足:(1)没有出圈游戏者具体信息的输出改进方案:类中加几个属性要求用户输入写相关输出方法出圈时输出(2)运行一次程序不能做多次游戏改进方案:main中加循环,mian最开始要求输入游戏次数t然后用for(intj=0;jt;j++)循环《软件设计基础-C++》课程设计报告第12页,共14页7.课程设计心得回顾起此次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,类和函数……通过这次课程设计之后,一定把以前所学过的知识重新温故。此次,程序的设计和创建,经历了平时在课堂中和考试中,决不会有的重重难题和问题。而这些问题,又都是课本上很少提到的、更深一层的知识领域和应用领域。这些问题,并不是我们平时只靠课本,就可以轻易解决的。“实践是检验真理的唯一标准”。没有实践,就不会发现和深刻体会它的真实所在。只有通过检验的真理,在自己的心里,才会认可它的真实性。面向对象程序设计的完成,使我们懂得了真理的重要性,理论和实际的相结合,才能真正把握所学和所掌握的知识。整体地评价这次课程设计,我认为收获很大,正如上面所说的那样,通过课程设计,既复习了以前的旧知识,又学到了一些新的知识;设计增强了我们用所学知识去解决具体问题的能力,进一步培养了我们独立思考问题和解决问题的能力。理论的拥有并不能代表我们的实力和能力,一切的事件和其成功都是理论和实践的结合。总之,我们学习和掌握的知识,只有通过实际应用,才能真正的理解和掌握,才能更好的去应用。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在同学的帮助下,终于游逆而解。同时,在其他同学的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学表示忠心的感谢。《软件设计基础-C++》课程设计报告第13页,共14页8.参考文献(1)《VisualC++6.0经典实例大制作》,李光明主编,中国人事出版社(2)《实用VisualC++编程大全》,陈光明主编,西安电子科技大学出版社(3)《C++程序设计教程》,钱能主编,清华大学出版社(4)《C++面向对象程序设计简明教程》,廉师友编著,西安电子科技大学出版社(5)《C++程序设计教程——习题解答》,[美]H.M.Deitel,P.J.Deitel等编著,施平安译,清华大学出版社《软件设计基础-C++》

1 / 14
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功