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

下载本文档

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

文档简介

沈阳理工大学课程设计专用纸 No17目 录1 题目内容及设计要求12 总体设计12.1 总体功能框图12.2 类的设计说明12.3 主要算法流程图13程序清单及注释14运行结果与分析15总结26参考文献2沈阳理工大学1 题目内容及设计要求题目: 设计菜单选择趣味程序内容及要求:设计一个比较使用的菜单,通过菜单选择不同的功能。设计分两步:首先涉及一个含有多个菜单项的菜单演示程序,然后再为这些菜单项配上相应的功能。出圈游戏一:(1) 设计一个SeqList类。(2) 在头文”head.h”中声明类,并使用默认的内联函数方式定义它们。(3) 使用类的数组来求解。(4) 用Joseph()函数求解出圈,使用函数game1()作为菜单项。(5) 在文件game1.cpp中实现Joseph和game1()函数。出圈游戏二:(1) 使用上题中的SqList类.使用向量数组求解。(2) 重载Joseph()函数来求解出圈,使用函数game2()作为菜单项。(3) 在文件game2.cpp中实现Joseph()和game2()函数求解方程:(1) 设计类FindRoot 将方程系数设计成属性,将方程的根x1,x2。以及用来作为判定条件的d(d=b*b-4*a*c)均设计成类的属性(2) 设计构造函数(3) 设计求根成员函数Find().(4) 设计输出结果成员函数Display().2 总体设计一、菜单驱动程序二、求解一元二次方程三、设计出圈游戏32.1 总体功能框图根据菜单页面提示输入求解二元一次方程的解模拟出圈游戏结束程序2.2 类的设计说明 类FindRoot的设计为了方便,除了将方程系数设计为属性之外,还将方程的根x1和x2,以及用来作为判定条件的d(d=b*b-4*a*c)均设计成类的属性。如图1是其类图,图2是对象obj的对象图。其中,成员函数Find()是用来求方程的根,Display()则用来输出结果。由此可见,它们都需要用到属性d。可在构造函数中求出d的值,其他成员函数直接使用这个属性,不必再去计算。类SeqList的设计 这里要求使用名字,而在名字的字符串中,可能存在空格。可以为该类设计两个属性,一个是字符串,用来存储名字。另一个是整数,用来表示报数的位置。若使用类的数组,则可以通过数组的下标,将位置和名字对应起来。在声明的类中,同时定义的成员函数就是默认的内联函数。另外,考虑到使用类的数组,所以不为它定义构造函数,而是用系统提供的默认无参数构造函数2.3 主要算法流程图开始输入整形数字x1=x,x=3输出方程的根x1,x2x=2x=3x=1输出依次出圈人的姓名输入玩游戏的人数你,出圈的数字length,玩游戏的姓名输入a,b,c的值算出二元一次的两根x1,x2算出依次出圈的人名结束是是是是否3 程序清单及注释#if!defined(CPP1_H) #define CPP1_H #include #include#include using namespace std;class FindRoot;class SeqList;void FindIt(); void handle_menu(void); int menu_select(); void game(); void Joseph(SeqList,int);#endif/以上为头文件#includecpp1.husing namespace std;void main()coutt欢迎使用菜单选择趣味小程序endl;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(; ;) fflush(stdin);/清除缓存 gets(s); cn=atoi(s); / 是为了使输入的字符串转变为数字 if(cn3) printf(nt输入错误,重选1-3:); else break; return cn; #includeusing namespace std;class SeqList 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); ;void Joseph(SeqList c20,int length,int n) /使用数组作为参数,同时需要将人数传给它int i,j=0,b=0,r,k;for(k=0;kn;k+)/多次循环n次,最后输出结果 for(i=0;in;i+)if(ci.GetNum()!=0)/每次退出的,num值都将赋值为0,下次扫描时,将跳过。 j+;if(j=length)/输出退出的数组Ci中的字符串,并且相应的num值赋值为0,为下次循环不在被扫描 ci.DispName();cout ;j=0;ci.SetNum(0); void game()coutt出圈小游戏endl;int m,i,n;coutn; coutm; SeqList c20;char f10; for(i=0;in;i+) ci.SetNum(i+1);cout第i+1f;ci.SetName(f);Joseph(c,m,n);coutendl;#include#includeusing namespace std;class FindRootfloat a,b,c,d,x1,x2,x;public:FindRoot(float x,float y,float z) a=x;b=y;c=z;d=b*b-4*a*c;void Find()if(d0) /d0时,算出两个不同的根 x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);if(d=0) /d=0.时,算出两个相同的根x1=x2=(-b)/(2*a);if(d0) /d0) coutx1=x1endl; coutx2=x2endl;if(d=0) coutx1=x2=x1endl; if(d0)coutx1=x1+-diendl;coutx2=x1-diendl;void FindIt()float a,b,c;cout此程序求解二元一次方程aX2+bx+c=0的两个根X1,X2endl;cout请输入方程系数a,b,cabc; FindRoot jiu(a,b,c);jiu.Find();jiu.DisPlay();coutendl;4 运行结果与分析1.解方程运行结果如下:1.解一元二次方程2.出圈游戏3.退出程序选择1-3:1图41 运行结果图结果分析:选择菜单上的3后,通过调用解方程的函数,提示输入二元一次方程的系数,运行最后显示方程的根。2.出圈运行结果如下: 1.解一元二次方程 2.出圈游戏 3.退出程序选择1-3:2图42 运行结果图结果分析:选择菜单上的2后,主程序调用出圈游戏的函数,根据提示输入玩游戏的人数和报到什么树的人出圈,然后输入玩游戏人的姓名,最后运行依次显示先出圈人的姓名。3.退出运行结果如下: 1.解一元二次方程 2.出圈游戏 3.退出程序选择1-3:3谢谢使用!再见!图43 运行结果图结果分析:选择菜单上的3后,显示谢谢使用!再见!结束程序运行。5 总结这次课设首次接触编排工程类的程序,首先对文件的组建很不是熟悉,再加上对题目的些许不了解,导致编程工作缓慢。后来请教老师后,老师耐心的讲解工程类的文件的组装和头文件的设计,使我让我马上加快了编程的速度。期间,也遇到些程序运行无法实现最终结果的情况,经过和同学的讨论和分析最终解决了问题。在这次课设中,我感到自己还有许多知识掌握的不是很透彻,还应更加深入的去研究问题,解

温馨提示

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

评论

0/150

提交评论