c++菜单选择趣味程序.doc_第1页
c++菜单选择趣味程序.doc_第2页
c++菜单选择趣味程序.doc_第3页
c++菜单选择趣味程序.doc_第4页
c++菜单选择趣味程序.doc_第5页
免费预览已结束,剩余13页可下载查看

下载本文档

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

文档简介

18课程设计(论文)任务书 软件 学院软件+交通运输 专业 2012-2 班 一、课程设计(论文)题目菜单选择趣味程序 二、课程设计(论文)工作自2013 年 6 月17日起至 2013 年 6 月 23 日止三、课程设计(论文) 地点: 创新大楼 四、课程设计(论文)内容要求:1本课程设计的目的(1)熟练掌握C+语言的基本知识和技能; (2)掌握面向对象程序设计的基本思路和方法;(3)了解指针、类的继承、文件的打开和保存、链表应用(4)利用所学的基本知识和技能,解决面向对象程序设计问题(5)培养分析、解决问题的能力;提高学生的科技论文写作能力。 2课程设计的任务及要求1)基本要求:菜单是应用程序的界面,本题的任务是设计一个比较实用的菜单,通过菜单选择不同的功能。设计分为两步:首先设计一个含有多个菜单项的菜单演示程序,然后再为这些菜单项配上相应的功能。程序运行后,界面给出3个菜单项的内容和输入提示。1解一元二次方程2出圈游戏3退出 选择1-3,使用数字1-3来选择菜单项,执行相应的菜单项功能,其他输入则不起作用。出圈游戏的规则是,假设有人数为n个人的一个小组,他们按顺时针方向周围坐一圈。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报数m的人出列,然后从他原来所在的,顺时针方向的下一个人开始重新从1报数,报到m时停止报数并出列。如此下去,直至所有人全部出列为止。要求按他们出列的顺序输出他们的名字。2)创新要求: 能利用文件写入与读出数据。3)课程设计论文编写要求(1)要按照课程设计模板的规格书写课程设计论文(2)论文包括目录、正文、心得体会、参考文献等(3)课程设计论文用A4纸统一打印,装订按学校的统一要求完成4)答辩与评分标准: (1)完成原理分析:20分; (2)完成设计过程:40分; (3)完成调试:20分;(4)回答问题:20分。5)参考文献:(1)谭浩强. C+程序设计. 北京:清华大学出版社,2008 (2)/(3)/6)课程设计进度安排内容 天数地点构思及收集资料 2图书馆编程设计与调试 5实验室撰写论文 3图书馆、实验室学生签名: 2013年 6月 17 日课程设计(论文)评审意见(1)完成原理分析(20分):优()、良()、中()、一般()、差(); (2)设计分析(20分):优()、良()、中()、一般()、差(); (3)完成调试(20分):优()、良()、中()、一般()、差();(4)翻译能力(20分):优()、良()、中()、一般()、差();(5)回答问题(20分):优()、良()、中()、一般()、差();(6)格式规范性及考勤是否降等级:是()、否()评阅人: 职称: 2013 年 6 月 23 日目录第1章 系统概要4第2章 设计思路与算法4第3章源程序代码5第4章 运行结果及分析13第5章 心得体会16参考文献17第1章 系统概要(1)熟练掌握C+语言的基本知识和技能;(2)掌握面向对象程序设计的基本思路和方法;(3)了解指针、类的继承、文件的打开和保存、链表应用(4)利用所学的基本知识和技能,解决面向对象程序设计问题(5)使用选择,类等C+知识第2章 设计思路与算法菜单驱动程序输入1-3之间的任意一个数字,即可进入相应选择项。从程序测试结果可知,当选择相应选择项时,其输出信息分别为:解一元二次方程、出圈游戏和退出程序。求解一元二次方程1.设计要求假设:d=b*b-4*a-c可以根据d0、=0或0)/有两个不相等的实数解else if(d=0)/有两个相等的实数解 else/有两个不相等的虚数解 设计出圈游戏1.设计要求这里假设有人数为n个人的一个小组,他们按顺时针方向围坐一圈。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报数m的人出列,然后从他原来所在的、顺时针方向的下一个人开始重新从1报数,报到m时停止报数并出列。如此下去,直至所有人全部出列为止。要求按他们出列的顺序输出他们的名字。 2.设计方法 (1)设计一个SeqList类。 (2)在头文件cpp2.h中声明类,并使用默认的内联函数方式定义它们。 (3)使用类的数组来求解。 (4)用Joseph()函数求解出圈,使用函数game()作为菜单项。 (5)在文件gamel.cpp中实现Joseph()和game()函数。3.设计类 这里要求使用名字,而在名字的字符串中,可能存在空格。可以为该类设计两个属性,一个是字符串,用来存储名字。另一个是整数,用来表示报数的位置。若使用类的数组,则可以通过数组的下标,将位置和名字对应起来。 在声明的类中,同时定义的成员函数就是默认的内联函数。另外,考虑到使用类的数组,所以不为它定义构造函数,而是用系统提供的默认无参数构造函数。第3章 源程序代码菜单驱动程序输入1-3之间的任意一个数字,即可进入相应选择项。从程序测试结果可知,当选择相应选择项时,其输出信息分别为:解一元二次方程、出圈游戏和退出程序。#includecpp2.hvoid main()handle_menu(); /调用菜单处理函数 void handle_menu(void) for(; ;) switch(menu_select()/调用菜单选择函数 case 1: FindIt();/求解一元二次方程 break; case 2: game();/出圈游戏 break; case 3: coutt再见!n; return; int menu_select() char s2; int cn; coutt1.解一元二次方程n; coutt2.出圈游戏n; coutt3.退出程序n; coutt选择1-3:; for(; ;) gets(s); cn=atoi(s); / 是为了使输入的字符串转变为数字 if(cn3) printf(nt输入错误,重选1-3:); else break; return cn; 求解一元二次方程1.设计要求假设:d=b*b-4*a-c可以根据d0、=0或0)/有两个不相等的实数解else if(d=0)/有两个相等的实数解 else/有两个不相等的虚数解 2.设计程序#include#includedouble n,u=1;class valueprotected:double a,b,c;public:void put()double x,y,z;cout请输入a的值:x;while(x=0)couterrorendl;cout请输入a的值:x;cout请输入b的值:y;cout请输入c的值:z;a=x;b=y;c=z;double Dvalue()double m;n=b*b-4*a*c;if(n=0)m=sqrt(n);elsem=sqrt(-n);return m;class count : public valuepublic:void set()double q;q=Dvalue();if(n=0)if(q=0)double x;x=-b/(2*a);cout方程有两个相等的实根:endl;coutx=xendl;elsedouble x,y;x=(-b+q)/(2*a);y=(-b-q)/(2*a);cout方程有两个实根:endl;coutx1=x x2=yendl;elsedouble x,y,z;x=-b/(2*a);y=-q/(2*a);z=q/(2*a);cout方程有两个复数根:endl;coutx1=xyj x2=x+zjendl;void main(void)while(u)int r;cout1.输入数据 3.退出程序r;switch(r)case 1: count out;out.put();cout计算结果:endl;out.set();break;case 2: u=0;break;default :couterrorendl;设计出圈游戏1.设计要求这里假设有人数为n个人的一个小组,他们按顺时针方向围坐一圈。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报数m的人出列,然后从他原来所在的、顺时针方向的下一个人开始重新从1报数,报到m时停止报数并出列。如此下去,直至所有人全部出列为止。要求按他们出列的顺序输出他们的名字。 2.设计方法 (1)设计一个SeqList类。 (2)在头文件cpp2.h中声明类,并使用默认的内联函数方式定义它们。 (3)使用类的数组来求解。 (4)用Joseph()函数求解出圈,使用函数game()作为菜单项。 (5)在文件gamel.cpp中实现Joseph()和game()函数。3.设计类 这里要求使用名字,而在名字的字符串中,可能存在空格。可以为该类设计两个属性,一个是字符串,用来存储名字。另一个是整数,用来表示报数的位置。若使用类的数组,则可以通过数组的下标,将位置和名字对应起来。 在声明的类中,同时定义的成员函数就是默认的内联函数。另外,考虑到使用类的数组,所以不为它定义构造函数,而是用系统提供的默认无参数构造函数。 int num; char name10;public: int GetNum() return num; void DispName() coutname; void SetNum(int a) num=a; void SetName(char b strcpy(name,b); ; 按照要求,不需要为类设计求解出圈的成员函数。4.求解出圈的函数Joseph() 使用类的数组,其实就是利用顺序存储结构来求解。在数组初始化后,调用函数Joseph()寻找出列人员。假设建立类的数组c,这时只能为数组c假设一个长度,实际的有效长度只有在给定人数之后才能知道。它的算法思想如下:void Joseph(SeqList c,int length) /使用数组作为参数,同时需要将人数传给它。 BEGIN初始化人数Length参加游戏的人的名字计数器初值k从1开始循环length次 j计数器清零j循环(j间隔次数m) 计数i 如果i数到尾部,则返回第一个位置,即重置i等于0 如果该位置上的人仍然在圈中,则j计数加1endj /结束循环j 如果是最后一个,结束循环,作特殊处理 不是最后一个,输出出圈人的信息 标识该人员已出圈,开始新一轮循环endk 最后一个结束循环,输出它的信息。 END 判断是利用数据成员的值,已经出圈的将其标志为0。下次数到他时,作为无效数据处理。输出使用数据成员name。 5.菜单项函数game()位置编号num应该从1开始,但C+的数组是从O开始,所以num的值比其所在数组的下标的值多1,这样做是为了直观。数组的大小一旦定义,就不能改变。算法思想如下:void game()BEGIN 初始化n和length 定义数组cn; 初始化数组c 调用Joseph()函数END四、设计头文件 可将函数原型声明、类的声明一起放在头文件中,假设头文件为cpp2.h。#if!defined(CPP2_H) #define CPP2_H #include #include using namespace std;/*声明FindRoot类*/class FindRoot./* *声明SeqList类* *使用内联函数* *定义类的成员函数* */class SeqList./* *声明函数原型*/ void FindIt(); void handle_menu(void); int menu select(); void game(); void Joseph(SeqList,int);#endif第4章 运行结果及分析1.解方程运行情况如下:1.解一元二次方程2.出圈游戏3.退出程序选择1-3:12.出圈分别用两个程序互相验证,输入5个人,间隔为10。运行情况如下 1.解一元二次方程 2.出圈游戏 3.退出程序选择1-3:23.退出 1.解一元二次方程 2.出圈游戏 3.退出程序选择1-3:3再见! 【心得体会】第5章心得体会回顾起此次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体通过这次课程设计之后,一定把以前所学过的知识重新温故。此次,程序的设计和创建,经历了平时在课堂中和考试中,决不会有的重重难题和问题。而这些问题,又都是课本上很少提到的、更深一层的知识领域和应用领域。这些问题,并不是我们平时只靠课本,就可以轻易解决

温馨提示

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

评论

0/150

提交评论