c++菜单选择趣味程序
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void game()
{
BEGIN
初始化n和length
定义数组c[n];
初始化数组c
调用Joseph()函数
END
}
四、设计头文件
可将函数原型声明、类的声明一起放在头文件中,假设头文件为cpp2.h。
#if!defined(CPP2_H)
#define CPP2_H
#include<iostream>
2.课程设计的任务及要求
1)基本要求:
菜单是应用程序的界面,本题的任务是设计一个比较实用的菜单,通过菜单选择不同的功能。设计分为两步:首先设计一个含有多个菜单项的菜单演示程序,然后再为这些菜单项配上相应的功能。
程序运行后,界面给出3个菜单项的内容和输入提示。
1.解一元二次方程
2.出圈游戏
3.退出
选择1-3,使用数字1-3来选择菜单项,执行相应的菜单项功能,其他输入则不起作用。
game();//出圈游戏
break;
case 3:
cout<<"\t再见!\n";
return;
}
}
}
int menu_select()
{
char s[2];
int cn;
cout<<"\t1.解一元二次方程\n";
cout<<"\t2.出圈游戏\n";
cout<<"\t3.退出程序\n";
cout<<"\t选择1-3:";
{
public:
void set()
{
double q;q=Dvalue();if(n>=0){
if(q==0)
{
double x;
x=-b/(2*a);
cout<<"方程有两个相等的实根:"<<endl;
cout<<"x="<<x<<endl;
}
else
{
double x,y;
x=(-b+q)/(2*a);
2.设计方法
(1)设计一个SeqList类。
(2)在头文件cpp2.h中声明类,并使用默认的内联函数方式定义它们。
(3)使用类的数组来求解。
(4)用Joseph()函数求解出圈,使用函数game()作为菜单项。
(5)在文件gamel.cpp中实现Joseph()和game()函数。
3.设计类
这里要求使用名字,而在名字的字符串中,可能存在空格。可以为该类设计两个属性,一个是字符串,用来存储名字。另一个是整数,用来表示报数的位置。若使用类的数组,则可以通过数组的下标,将位置和名字对应起来。
void SetNum(int a)
{num=a;}
void SetName(char b[[]]
{strcpy(name,b);}
};
按照要求,不需要为类设计求解出圈的成员函数。
4.求解出圈的函数Joseph()
使用类的数组,其实就是利用顺序存储结构来求解。在数组初始化后,调用函数Joseph()
y=(-b-q)/(2*a);
cout<<"方程有两个实根:"<<endl;
cout<<"x1="<<x<<" "<<"x2="<<y<<endl;
}
}
else
{
double x,y,z;
x=-b/(2*a);
y=-q/(2*a);
z=q/(2*a);
cout<<"方程有两个复数根:"<<endl;
2.设计方法
(1)设计一个SeqList类。
(2)在头文件cpp2.h中声明类,并使用默认的内联函数方式定义它们。
(3)使用类的数组来求解。
(4)用Joseph()函数求解出圈,使用函数game()作为菜单项。
(5)在文件gamel.cpp中实现Joseph()和game()函数。
3.设计类
这里要求使用名字,而在名字的字符串中,可能存在空格。可以为该类设计两个属性,一个是字符串,用来存储名字。另一个是整数,用来表示报数的位置。若使用类的数组,则可以通过数组的下标,将位置和名字对应起来。
在声明的类中,同时定义的成员函数就是默认的内联函数。另外,考虑到使用类的数组,所以不为它定义构造函数,而是用系统提供的默认无参数构造函数。
int num;
char name[10];
public:
int GetNum()
{return num;}
void DispName()
{cout<<name;}
END
}
判断是利用数据成员的值,已经出圈的将其标志为0。下次数到他时,作为无效数据处
理。输出使用数据成员name。
5.菜单项函数game()
位置编号num应该从1开始,但C++的数组是从O开始,所以num的值比其所在数组的下标的值多1,这样做是为了直观。数组的大小一旦定义,就不能改变。
算法思想如下:
cout<<"请输入c的值:"<<endl;
cin>>z;
a=x;b=y;c=z;
}
double Dvalue()
{
double m;
n=b*b-4*a*c;
if(n>=0)
{
m=sqrt(n);
}
else
{
m=sqrt(-n);
}
return m;
}
};
class count : public value
if(d>0)
{//有两个不相等的实数解}
else if(d==0)
{//有两个相等的实数解}
else
{//有两个不相等的虚数解}
2.设计程序
#include<iostream.h>
#include<math.h>
double n,u=1;
class value
{
protected:
double a,b,c;
(5)回答问题 (20分):优( )、良( )、中( )、一般( )、差( );
(6)格式规范性及考勤是否降等级:是( )、否( )
评阅人:职称:
2013年6月23日
第1章系统概要
(1)熟练掌握C++语言的基本知识和技能;
(2)掌握面向对象程序设计的基本思路和方法;
(3)了解指针、类的继承、文件的打开和保存、链表应用
public:
void put()
{
double x,y,z;
cout<<"请输入a的值:"<<endl;
cin>>x;
while(x==0)
{
cout<<"error"<<endl;
cout<<"请输入a的值:"<<endl;
cin>>x;
}
cout<<"请输入b的值:"<<endl;
cin>>y;
cout<<"x1="<<x<<y<<'j'<<" "<<"x2="<<x<<'+'<<z<<'j'<<endl;
}
}
};
void main(void)
{
while(u)
{
int r;
cout<<"1.输入数据"<<" "<<"3.退出程序"<<endl;
cin>>r;
switch(r)
{
case 1: count out;
#include<math.h>
using namespace std;
/*********************************
2)创新要求:
能利用文件写入与读出数据。
3)课程设计论文编写要求
(1)要按照课程设计模板的规格书写课程设计论文
(2)论文包括目录、正文、心得体会、参考文献等
(3)课程设计论文用A4纸统一打印,装订按学校的统一要求完成
4)答辩与评分标准:
(1)完成原理分析:20分;
(2)完成设计过程:40分;
(3)完成调试:20分;
(4)利用所学的基本知识和技能,解决面向对象程序设计问题
(5)使用选择,类等C++知识
第2章 设计思路与算法
菜单驱动程序
输入1-3之间的任意一个数字,即可进入相应选择项。从程序测试结果可知,当选择相应选择项时,其输出信息分别为:解一元二次方程、出圈游戏和退出程序。
求解一元二次方程
1.设计要求
假设:d=b*b-4*a-c可以根据d>0、=0或<0来决定求解方法。
if(d>0)
{//有两个不相等的实数解}
else if(d==0)
{//有两个相等的实数解}
else
{//有两个不相等的虚数解}
设计出圈游戏
1.设计要求
这里假设有人数为n个人的一个小组,他们按顺时针方向围坐一圈。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报数m的人出列,然后从他原来所在的、顺时针方向的下一个人开始重新从1报数,报到m时停止报数并出列。如此下去,直至所有人全部出列为止。要求按他们出列的顺序输出他们的名字。
#include"cpp2.h"
void main()
{
handle_menu();//调用菜单处理函数
}
void handle_menu(void)
{
for(; ;)
{
switch(menu_select())//调用菜单选择函数
{
case 1:
FindIt();//求解一元二次方程
break;
case 2:
out.put();
cout<<"计算结果:"<<endl;
out.set();break;
case 2: u=0;break;
default :cout<<"error"<<endl;
}
}
}
设计出圈游戏
1.设计要求
这里假设有人数为n个人的一个小组,他们按顺时针方向围坐一圈。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报数m的人出列,然后从他原来所在的、顺时针方向的下一个人开始重新从1报数,报到m时停止报数并出列。如此下去,直至所有人全部出列为止。要求按他们出列的顺序输出他们的名字。
出圈游戏的规则是,假设有人数为n个人的一个小组,他们按顺时针方向周围坐一圈。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报数m的人出列,然后从他原来所在的,顺时针方向的下一个人开始重新从1报数,报到m时停止报数并出列。如此下去,直至所有人全部出列为止。要求按他们出列的顺序输出他们的名字。
寻找出列人员。假设建立类的数组c,这时只能为数组c假设一个长度,实际的有效长度只有
在给定人数之后才能知道。
它的算法思想如下:
void Joseph(SeqList c[],int length)//使用数组作为参数,同时需要将人数传给它。
{
BEGIN
初始化
人数Length
参加游戏的人的名字
计数器初值
在声明的类中,同时定义的成员函数就是默认的内联函数。另外,考虑到使用类的数组,所以不为它定义构造函数,而是用系统提供的默认无参数构造函数。
第3章 源程序代码
菜单驱动程序
输入1-3之间的任意一个数字,即可进入相应选择项。从程序测试结果可知,当选择相应选择项时,其输出信息分别为:解一元二次方程、出圈游戏和退出程序。
(4)回答问题:20分。
5)参考文献:
(1)谭浩强.C++程序设计. 北京:清华大学出版社,2008
(2)/
(3)/
6)课程设计进度安排
内容天数 地点
构思及收集资料2图书馆
编程设计与调试5实验室
撰写论文3图书馆、实验室
k从1开始循环length次
j计数器清零
j循环(j<间隔次数m)
计数i
如果i数到尾部,则返回第一个位置,即重置i等于0
如果该位置上的人仍然在圈中,则j计数加1
endj//结束循环j
如果是最后一个,结束循环,作特殊处理
不是最后一个,输出出圈人的信息
标识该人员已出圈,开始新一轮循环
endk
最后一个结束循环,输出它的信息。
for(; ;)
{
gets(s);
cn=atoi(s);//是为了使输入的字符串转变为数字
if(cn<1||cn>3)
printf("\n\t输入错误,重选1-3:");
else
break;
}
return cn;
求解一元二次方程
1.设计要求
假设:d=b*b-4*a-c可以根据d>0、=0或<0来决定求解方法。
2论文包括目录正文心得体会参考文献等3课程设计论文用a4纸统一打印装订按学校的统一要求完成1谭浩强
课程设计(论文)任务书
软件学 院软件+交通运输专 业2012-2班
一、课程设计(论文)题目菜单选择趣味程序
二、课程设计(论文)工作自2013年6月17日起至2013年6月23日止
三、课程设计(论文)地点:创新大楼
四、课程设计(论文)内容要求:
1.本课程设计的目的
(1)熟练掌握C++语言的基本知识和技能;
(2)掌握面向对象程序设计的基本思路和方法;
(3)了解指针、类的继承、文件的打开和保存、链表应用
(4)利用所学的基本知识和技能,解决面向对象程序设计问题
(5)培养分析、解决问题的能力;提高学生的科技论文写作能力。
学生签名:
2013年6月17日
课程设计(论文)评审意见
(1)完成原理分析(20分):优( )、良( )、中( )、一般( )、差( );
(2)设计分析 (20分):优( )、良( )、中( )、一般( )、差( );
(3)完成调试 (20分):优( )、良( )、中( )、一般( )、差( );
(4)翻译能力 (20分):优( )、良( )、中( )、一般( )、差( );
{
BEGIN
初始化n和length
定义数组c[n];
初始化数组c
调用Joseph()函数
END
}
四、设计头文件
可将函数原型声明、类的声明一起放在头文件中,假设头文件为cpp2.h。
#if!defined(CPP2_H)
#define CPP2_H
#include<iostream>
2.课程设计的任务及要求
1)基本要求:
菜单是应用程序的界面,本题的任务是设计一个比较实用的菜单,通过菜单选择不同的功能。设计分为两步:首先设计一个含有多个菜单项的菜单演示程序,然后再为这些菜单项配上相应的功能。
程序运行后,界面给出3个菜单项的内容和输入提示。
1.解一元二次方程
2.出圈游戏
3.退出
选择1-3,使用数字1-3来选择菜单项,执行相应的菜单项功能,其他输入则不起作用。
game();//出圈游戏
break;
case 3:
cout<<"\t再见!\n";
return;
}
}
}
int menu_select()
{
char s[2];
int cn;
cout<<"\t1.解一元二次方程\n";
cout<<"\t2.出圈游戏\n";
cout<<"\t3.退出程序\n";
cout<<"\t选择1-3:";
{
public:
void set()
{
double q;q=Dvalue();if(n>=0){
if(q==0)
{
double x;
x=-b/(2*a);
cout<<"方程有两个相等的实根:"<<endl;
cout<<"x="<<x<<endl;
}
else
{
double x,y;
x=(-b+q)/(2*a);
2.设计方法
(1)设计一个SeqList类。
(2)在头文件cpp2.h中声明类,并使用默认的内联函数方式定义它们。
(3)使用类的数组来求解。
(4)用Joseph()函数求解出圈,使用函数game()作为菜单项。
(5)在文件gamel.cpp中实现Joseph()和game()函数。
3.设计类
这里要求使用名字,而在名字的字符串中,可能存在空格。可以为该类设计两个属性,一个是字符串,用来存储名字。另一个是整数,用来表示报数的位置。若使用类的数组,则可以通过数组的下标,将位置和名字对应起来。
void SetNum(int a)
{num=a;}
void SetName(char b[[]]
{strcpy(name,b);}
};
按照要求,不需要为类设计求解出圈的成员函数。
4.求解出圈的函数Joseph()
使用类的数组,其实就是利用顺序存储结构来求解。在数组初始化后,调用函数Joseph()
y=(-b-q)/(2*a);
cout<<"方程有两个实根:"<<endl;
cout<<"x1="<<x<<" "<<"x2="<<y<<endl;
}
}
else
{
double x,y,z;
x=-b/(2*a);
y=-q/(2*a);
z=q/(2*a);
cout<<"方程有两个复数根:"<<endl;
2.设计方法
(1)设计一个SeqList类。
(2)在头文件cpp2.h中声明类,并使用默认的内联函数方式定义它们。
(3)使用类的数组来求解。
(4)用Joseph()函数求解出圈,使用函数game()作为菜单项。
(5)在文件gamel.cpp中实现Joseph()和game()函数。
3.设计类
这里要求使用名字,而在名字的字符串中,可能存在空格。可以为该类设计两个属性,一个是字符串,用来存储名字。另一个是整数,用来表示报数的位置。若使用类的数组,则可以通过数组的下标,将位置和名字对应起来。
在声明的类中,同时定义的成员函数就是默认的内联函数。另外,考虑到使用类的数组,所以不为它定义构造函数,而是用系统提供的默认无参数构造函数。
int num;
char name[10];
public:
int GetNum()
{return num;}
void DispName()
{cout<<name;}
END
}
判断是利用数据成员的值,已经出圈的将其标志为0。下次数到他时,作为无效数据处
理。输出使用数据成员name。
5.菜单项函数game()
位置编号num应该从1开始,但C++的数组是从O开始,所以num的值比其所在数组的下标的值多1,这样做是为了直观。数组的大小一旦定义,就不能改变。
算法思想如下:
cout<<"请输入c的值:"<<endl;
cin>>z;
a=x;b=y;c=z;
}
double Dvalue()
{
double m;
n=b*b-4*a*c;
if(n>=0)
{
m=sqrt(n);
}
else
{
m=sqrt(-n);
}
return m;
}
};
class count : public value
if(d>0)
{//有两个不相等的实数解}
else if(d==0)
{//有两个相等的实数解}
else
{//有两个不相等的虚数解}
2.设计程序
#include<iostream.h>
#include<math.h>
double n,u=1;
class value
{
protected:
double a,b,c;
(5)回答问题 (20分):优( )、良( )、中( )、一般( )、差( );
(6)格式规范性及考勤是否降等级:是( )、否( )
评阅人:职称:
2013年6月23日
第1章系统概要
(1)熟练掌握C++语言的基本知识和技能;
(2)掌握面向对象程序设计的基本思路和方法;
(3)了解指针、类的继承、文件的打开和保存、链表应用
public:
void put()
{
double x,y,z;
cout<<"请输入a的值:"<<endl;
cin>>x;
while(x==0)
{
cout<<"error"<<endl;
cout<<"请输入a的值:"<<endl;
cin>>x;
}
cout<<"请输入b的值:"<<endl;
cin>>y;
cout<<"x1="<<x<<y<<'j'<<" "<<"x2="<<x<<'+'<<z<<'j'<<endl;
}
}
};
void main(void)
{
while(u)
{
int r;
cout<<"1.输入数据"<<" "<<"3.退出程序"<<endl;
cin>>r;
switch(r)
{
case 1: count out;
#include<math.h>
using namespace std;
/*********************************
2)创新要求:
能利用文件写入与读出数据。
3)课程设计论文编写要求
(1)要按照课程设计模板的规格书写课程设计论文
(2)论文包括目录、正文、心得体会、参考文献等
(3)课程设计论文用A4纸统一打印,装订按学校的统一要求完成
4)答辩与评分标准:
(1)完成原理分析:20分;
(2)完成设计过程:40分;
(3)完成调试:20分;
(4)利用所学的基本知识和技能,解决面向对象程序设计问题
(5)使用选择,类等C++知识
第2章 设计思路与算法
菜单驱动程序
输入1-3之间的任意一个数字,即可进入相应选择项。从程序测试结果可知,当选择相应选择项时,其输出信息分别为:解一元二次方程、出圈游戏和退出程序。
求解一元二次方程
1.设计要求
假设:d=b*b-4*a-c可以根据d>0、=0或<0来决定求解方法。
if(d>0)
{//有两个不相等的实数解}
else if(d==0)
{//有两个相等的实数解}
else
{//有两个不相等的虚数解}
设计出圈游戏
1.设计要求
这里假设有人数为n个人的一个小组,他们按顺时针方向围坐一圈。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报数m的人出列,然后从他原来所在的、顺时针方向的下一个人开始重新从1报数,报到m时停止报数并出列。如此下去,直至所有人全部出列为止。要求按他们出列的顺序输出他们的名字。
#include"cpp2.h"
void main()
{
handle_menu();//调用菜单处理函数
}
void handle_menu(void)
{
for(; ;)
{
switch(menu_select())//调用菜单选择函数
{
case 1:
FindIt();//求解一元二次方程
break;
case 2:
out.put();
cout<<"计算结果:"<<endl;
out.set();break;
case 2: u=0;break;
default :cout<<"error"<<endl;
}
}
}
设计出圈游戏
1.设计要求
这里假设有人数为n个人的一个小组,他们按顺时针方向围坐一圈。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报数m的人出列,然后从他原来所在的、顺时针方向的下一个人开始重新从1报数,报到m时停止报数并出列。如此下去,直至所有人全部出列为止。要求按他们出列的顺序输出他们的名字。
出圈游戏的规则是,假设有人数为n个人的一个小组,他们按顺时针方向周围坐一圈。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报数m的人出列,然后从他原来所在的,顺时针方向的下一个人开始重新从1报数,报到m时停止报数并出列。如此下去,直至所有人全部出列为止。要求按他们出列的顺序输出他们的名字。
寻找出列人员。假设建立类的数组c,这时只能为数组c假设一个长度,实际的有效长度只有
在给定人数之后才能知道。
它的算法思想如下:
void Joseph(SeqList c[],int length)//使用数组作为参数,同时需要将人数传给它。
{
BEGIN
初始化
人数Length
参加游戏的人的名字
计数器初值
在声明的类中,同时定义的成员函数就是默认的内联函数。另外,考虑到使用类的数组,所以不为它定义构造函数,而是用系统提供的默认无参数构造函数。
第3章 源程序代码
菜单驱动程序
输入1-3之间的任意一个数字,即可进入相应选择项。从程序测试结果可知,当选择相应选择项时,其输出信息分别为:解一元二次方程、出圈游戏和退出程序。
(4)回答问题:20分。
5)参考文献:
(1)谭浩强.C++程序设计. 北京:清华大学出版社,2008
(2)/
(3)/
6)课程设计进度安排
内容天数 地点
构思及收集资料2图书馆
编程设计与调试5实验室
撰写论文3图书馆、实验室
k从1开始循环length次
j计数器清零
j循环(j<间隔次数m)
计数i
如果i数到尾部,则返回第一个位置,即重置i等于0
如果该位置上的人仍然在圈中,则j计数加1
endj//结束循环j
如果是最后一个,结束循环,作特殊处理
不是最后一个,输出出圈人的信息
标识该人员已出圈,开始新一轮循环
endk
最后一个结束循环,输出它的信息。
for(; ;)
{
gets(s);
cn=atoi(s);//是为了使输入的字符串转变为数字
if(cn<1||cn>3)
printf("\n\t输入错误,重选1-3:");
else
break;
}
return cn;
求解一元二次方程
1.设计要求
假设:d=b*b-4*a-c可以根据d>0、=0或<0来决定求解方法。
2论文包括目录正文心得体会参考文献等3课程设计论文用a4纸统一打印装订按学校的统一要求完成1谭浩强
课程设计(论文)任务书
软件学 院软件+交通运输专 业2012-2班
一、课程设计(论文)题目菜单选择趣味程序
二、课程设计(论文)工作自2013年6月17日起至2013年6月23日止
三、课程设计(论文)地点:创新大楼
四、课程设计(论文)内容要求:
1.本课程设计的目的
(1)熟练掌握C++语言的基本知识和技能;
(2)掌握面向对象程序设计的基本思路和方法;
(3)了解指针、类的继承、文件的打开和保存、链表应用
(4)利用所学的基本知识和技能,解决面向对象程序设计问题
(5)培养分析、解决问题的能力;提高学生的科技论文写作能力。
学生签名:
2013年6月17日
课程设计(论文)评审意见
(1)完成原理分析(20分):优( )、良( )、中( )、一般( )、差( );
(2)设计分析 (20分):优( )、良( )、中( )、一般( )、差( );
(3)完成调试 (20分):优( )、良( )、中( )、一般( )、差( );
(4)翻译能力 (20分):优( )、良( )、中( )、一般( )、差( );