菜单选择应用程序Word格式.docx
- 文档编号:20049450
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:36
- 大小:140.26KB
菜单选择应用程序Word格式.docx
《菜单选择应用程序Word格式.docx》由会员分享,可在线阅读,更多相关《菜单选择应用程序Word格式.docx(36页珍藏版)》请在冰豆网上搜索。
无补充
不及格
不好
评阅人王更生职称教授
目 录
一、设计思路
二、功能实现详细设计
三、测试结果分析
四、用户手册
五、设计体会
1.登入界面
用不同颜色的字体设置登陆界面,并且介绍作者信息
2.主菜单
通过while语句与swich…case以及if条件语句实现菜单的循环功能和不同选项的功能实现
3.多功能排序
运用vector向量容器储存数据,实现字符类或数的排序。
运用冒泡排序算法。
并且程序多数操作只用到N与回车键,操作简便。
程序判断系统相对完善,Bug较少。
可以通过文件读取数据,也可以将排序好的数据经行文件保存。
4.求两整数公约数与公倍数
运用vector向量容器储存数据,可以通过文件读取,也可讲数据写入文件。
并且多组数据处理后可以排序,并且可以选择是否保持文件。
5.文件操作
实现文件的读取与写入
6.N皇后的游戏
在NXN格的国际象棋上摆放N个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。
运用回溯算法,进行求解。
7.求解一元二次方程的根
多次运用While和For语句,进行判断求解。
1.登陆界面代码如下
voidmain()
{
system("
cls"
);
SetColor(4,0);
cout<
<
"
\n\t***************************************************************"
endl;
SetColor(2,0);
\n\t作者信息"
\n\t2013级计算机科学与技术一班"
\n\t20130610040109"
\n\t赵宇"
\n\t菜单选择应用程序"
SetColor(7,0);
pause"
//getchar();
Menu();
}
2.主菜单代码如下
voidMenu()
while
(1)
{
system("
SetColor(4,0);
cout<
\n\t\t************************************************"
SetColor(2,0);
\n\t\t菜单选择应用程序"
SetColor(3,0);
\n\t请输入所需要的功能?
(按Eenter键结束)"
\t1.:
多功能排序!
\t2.:
整数的公约数与公倍数!
\t3.:
文件的读取与保存!
\t4.:
游戏N皇后问题!
\t5.:
求解一元二次方程的根!
\n\t请选择直接按Enter键;
或者先按(1——5),再按Enter键:
SetColor(6,0);
charchoose;
choose=Menu_Selection();
if(choose==10)
{
break;
SetColor(4,0);
cout<
\n\t谢谢使用本程序,再见!
"
}
else
getchar();
if(choose=='
1'
)
Sort();
2'
GCD();
3'
File();
4'
QueenMenu();
5'
Equation();
}
3.排序主要函数
voidSort_Sort(vector<
string>
&
str,intx,inty)
inti,j,n=str.size();
//控制输出流
//ostream_iterator<
output(cout,"
//把传递来的数据按类型转换
vector<
double>
intdata;
strdata;
doublea;
stringst;
//进行转换
for(i=0;
i<
str.size();
i++)
{
istringstreamist(str[i]);
if(x==3)
{
ist>
>
a;
intdata.push_back(a);
if(x==1)
st;
strdata.push_back(st);
//ostream_iterator<
//copy(intdata.begin(),intdata.end(),output);
//冒泡排序算法
if(x==3)
for(i=0;
intdata.size()-1;
for(j=0;
j<
intdata.size()-1-i;
j++)
{
//控制升序
if(y==UP)
if(intdata[j]>
intdata[j+1])
{
doubleinttemp=intdata[j];
intdata[j]=intdata[j+1];
intdata[j+1]=inttemp;
}
//控制降序
if(y==DOWN)
if(intdata[j]<
{
doubleinttemp=intdata[j];
intdata[j]=intdata[j+1];
intdata[j+1]=inttemp;
}
}
if(x==1)
strdata.size()-1;
strdata.size()-1-i;
if(strdata[j].compare(strdata[j+1])>
0)
stringinttemp=strdata[j];
strdata[j]=strdata[j+1];
strdata[j+1]=inttemp;
if(strdata[j].compare(strdata[j+1])<
stringinttemp=strdata[j];
strdata[j]=strdata[j+1];
strdata[j+1]=inttemp;
if(y==UP)
\t已经按照升序排好,并同时经行输出:
;
if(y==DOWN)
\t已经按照降序排好,并同时经行输出:
\n\t内存中数据显示如下:
\n\n"
//输出数据
n;
\ta["
]="
intdata[i]<
strdata[i]<
cout<
\n\t内存中有"
n<
个数据"
//把已排序好的数据存回原容器
str.clear();
for(i=0;
{
stringstreams;
if(x==3)
a=intdata[i];
s<
if(x==1)
st=strdata[i];
}
str.push_back(s.str());
}
4.公约数与公倍数主要实现函数
voidGcd_Handle()
{
intgcd[2],a;
\n\t请输入两个整数:
for(inti=0;
2;
//确保输入正确
while
(1)
\n\tGCD["
cin>
if(!
cin)
{
\n\t\t\a\a输入有错!
请重新输入一个整形数据"
cin.clear();
cin.ignore(numeric_limits<
streamsize>
:
max(),'
\n'
//清空流
}
else
gcd[i]=a;
break;
\n\t请选择操作方式:
SetColor(3,0);
\t1.求两数最小公倍数!
\t2.求两数最大公约数!
SetColor(6,0);
intchoose;
choose=Sort_UP_or_DOWN();
Gcd_Gcd(gcd,choose);
data;
stringstreamstr;
str<
gcd[i];
data.push_back(str.str());
Sort_Fstream(data,2);
//Judge();
//求公约数或者公倍数
voidGcd_Gcd(intgcd[],intx)
if(gcd[0]>
gcd[1])
inttemp=gcd[0];
gcd[0]=gcd[1];
gcd[1]=temp;
\n\t"
gcd[0]<
与"
gcd[1]<
的最小公倍数为:
Lcm(gcd[0],gcd[1])<
if(x==2)
的最大公约数为:
Gcd(gcd[0],gcd[1])<
//最小公倍数
intLcm(inta,intb)
inttemp_lcm;
temp_lcm=a*b/Gcd(a,b);
//最小公倍数等于两数之积除以最大公约数
returntemp_lcm;
//最大公约数
intGcd(intnum1,intnum2)
if(num1%num2==0)
returnnum2;
else
returnGcd(num2,num1%num2);
5.文件处理主要实现函数
voidFile_Select()
\n\n\t请输入内容增加方式:
(按Enter导入文件数据)!
\tn:
自行输入数据,然后存入文件!
\tEnter键读取指定文件内容!
//判断是输入n直接输入,还是回车导入文件
charselect;
select=Sort_Judge();
//如果是n则自己输入数据
if(select=='
n'
||select=='
N'
)
File_Input();
//回车键要从文件中导入
if(select==10)
File_Output();
voidFile_Input()
\n\t请输入你想存入文件中的内容(按回车键结束)!
charstr[100];
getchar();
cin.getline(str,100);
stringdata=str;
\n\t你输入的内容是:
data<
\n\t请输入要保存的文件名(如果直接按Enter键使用缺省文件名File.txt):
charname[20];
stringfname;
cin.getline(name,20);
fname=name;
if(fname.empty())
fname="
File.txt"
\n\t请选择保存方式:
SetColor(3,0);
\t1.覆盖原有内容!
\t2.存入到原有文件之后!
SetColor(6,0);
//判断菜单(1——2)
intchoose=Sort_UP_or_DOWN();
ofstreamof(fname.c_str(),ios:
app);
if(choose==1)
of.close();
of.open(fname.c_str());
if(of.fail())
\n\t\t\a\a文件打开失败,请重新输入!
SetColor(4,0);
exit(0);
//存入文件
of<
endl<
data;
\n\t已将信息存到文件"
fname<
中"
of.close();
ofstreamof(fname.c_str());
of<
of.close();
Judge();
voidFile_Output()
data=Fvector(3);
voidSort_Fstream(vector<
str,intx)
\t按Enter键保存文件!
\tn:
不保存文件!
\n\t请输入要保存的文件名(如果直接按Enter键使用缺省文件名Sort.txt):
if(x==2)
\n\t请输入要保存的文件名(如果直接按Enter键使用缺省文件名Division.txt):
//文件名字
stringfname;
//输入文件名
charname[20];
cin.getline(name,20);
fname=name;
//判断输入是否是回车
if(fname.empty())
if(x==1)
fname="
Sort.txt"
if(x==2)
Division.txt"
for(inti=0;
of<
str[i]<
\n\t将"
str.size()<
行信息存到文件"
ofstreamof(fname.c_str());
Judge();
}
voidGcd_Fstream()
vector<
data=Fvector
(2);
//导入文件中数据
\n\t共有"
data.size()<
//两个为一组
inta[20][2];
//数据转换,字符转换成整形
for(inti=0;
data.size();
istringstreamstr(data[i]);
str>
a[i/2][i%2];
intchoose;
choose=Sort_UP_or_DOWN();
if(choose==1)
//整形转换成字符型并且存入新容器中用于排序
for(i=0;
stringstreamstr;
if(i%2)
continue;
setw(5)<
a[i/2][i%2]<
a[i/2][i%2+1]<
setw(6)<
Lcm(a[i/2][i%2],a[i/2][i%2+1])<
str<
Lcm(a[i/2][i%2],a[i/2][i%2+1]);
intdata.push_back(str.str());
if(choose=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 菜单 选择 应用程序