最新中南大学C++计算机课程设计实践报告.docx
《最新中南大学C++计算机课程设计实践报告.docx》由会员分享,可在线阅读,更多相关《最新中南大学C++计算机课程设计实践报告.docx(12页珍藏版)》请在冰豆网上搜索。
最新中南大学C++计算机课程设计实践报告
中南大学
本科生课程设计(实践)报告
计算机程序设计基础(C++)
题目
学生学号
学生姓名
指导教师
学院
专业班级
计算机基础教学实验中心
2016年7月7日
“计算机程序设计基础(C++)”课程设计报告
1引言
本次设计目标是参照windows系统提供的计算器,设计一个科学型计算器,为此我们需要掌握好MFC基础,掌握C++应用系统的开发方法和技巧。
课程设计实践教程提供的步骤比较标准和准确,但实际操作性不是很强,所以我们应该通过对科学计算机设计来实现对过程的分析,从而掌握利用C++开发的一般设计方法与实现步骤。
对帮助我们全面牢固地掌握课堂教学内容、培养学生的实践能力、为今后应用计算机打下良好基础具有重要的意义。
在面对errors的解决过程中,培养独立分析问题和解决问题的能力,在生产实践中向卓越工程师的培养目标靠近。
2总体设计
本次实践的主要目的是了解和掌握运用MFC编程的一般思想和具体操作步骤。
基于MFC库进行对对话框界面的设计,通过创建类成员函数成员变量,编辑控件创建消息映射,调用消息函数完成数据的输入输出,实现计算功能。
生成应用软件。
首先需要设计0,1,2,3,4,5,6,7,8,9,0十个数字按钮,其次是+,-,*,/,.,AC,=运算符号,再进行特殊运算符号的设计,流程图如下。
3详细设计
界面设计
通过按住Ctrl建,复制出统一大小的按钮,框选多个同时移动,使得界面排列有序,整齐。
数字键函数编写
m_result+=_T("N")对每个数字按钮进行赋值;updatedata(false)作用为当你使用了ClassWizard建立了控件和变量之间的联系后:
当你修改了变量的值,而希望对话框控件更新显示,就应该在修改变量后调UpdateData(FALSE);
voidCMy0308150317Dlg:
:
OnButton7()
{m_result+=_T("1");
UpdateData(false);
//TODO:
Addyourcontrolnotificationhandlercodehere
}
voidCMy0308150317Dlg:
:
OnButton8()
{m_result+=_T("2");
UpdateData(false);
//TODO:
Addyourcontrolnotificationhandlercodehere
}
voidCMy0308150317Dlg:
:
OnButton9()
{
m_result+=_T("3");
UpdateData(false);
}
voidCMy0308150317Dlg:
:
OnButton4()
{m_result+=_T("4");
UpdateData(false);
//TODO:
Addyourcontrolnotificationhandlercodehere
}
voidCMy0308150317Dlg:
:
OnButton5()
{
m_result+=_T("5");
UpdateData(false);
}
voidCMy0308150317Dlg:
:
OnButton6()
{
m_result+=_T("6");
UpdateData(false);
}
voidCMy0308150317Dlg:
:
OnButton2()
{m_result+=_T("8");
UpdateData(false);
//TODO:
Addyourcontrolnotificationhandlercodehere
}
voidCMy0308150317Dlg:
:
OnButton3()
{
m_result+=_T("9");
UpdateData(false);
}
voidCMy0308150317Dlg:
:
OnButton10()
{
m_result+=_T("0");
UpdateData(false);
}
voidCMy0308150317Dlg:
:
OnButton11()
{
m_result+=_T(".");
UpdateData(false);
}
+,-,*,/普通运算符号的函数
通过对n的不同取值,来实现对函数的调用,方便简单易于操作。
函数atof将字串转换为浮点型数,可以将其他型数据转为double型,提高运算精度。
voidCMy0308150317Dlg:
:
OnButton13()
{
n=0;
data=atof(m_result);
m_result=_T("");
}
voidCMy0308150317Dlg:
:
OnButton14()
{
n=1;
data=atof(m_result);
m_result=_T("");
}
voidCMy0308150317Dlg:
:
OnButton15()
{
n=2;
data=atof(m_result);
m_result=_T("");
}
voidCMy0308150317Dlg:
:
OnButton16()
{
n=3;
data=atof(m_result);
m_result=_T("");
}
对“=”按钮函数编写
用多分支的if...elseif语句,实现两个数字与运算符的连接.Format是CString类的一个成员函数,它通过格式操作使任意类型的数据转换成一个字符串.
voidCMy0308150317Dlg:
:
OnButton12()
{
if(n==0)
{
data+=atof(m_result);
m_result.Format(_T("%lf"),data);
UpdateData(false);
}
elseif(n==1)
{
data-=atof(m_result);
m_result.Format(_T("%lf"),data);
UpdateData(false);
}
elseif(n==2)
{
data*=atof(m_result);
m_result.Format(_T("%lf"),data);
UpdateData(false);
}
elseif(n==3)
{
data/=atof(m_result);
m_result.Format(_T("%lf"),data);
UpdateData(false);
特殊运算符n!
,x*x,sin,sinh的设计
由于特殊字符只需要实现单个数字的运算,与普通运算符实现两个运算符不同,在经过多次调试和同学的指导之后,发现只保留特殊运算符函数按钮的调用语句“n=”,将其他代码放到if...elseif语句中,可以实现逻辑上的调用。
对于特殊运算,在外部另外设计了对应函数,使函数界面可读性加强。
Sin运用了级数展开式,这样可以不用调用math.h函数库的函数,在同类方法中最易操作。
Sinh则在网上搜到了公式,并且自己编写了x次方的函数,进行调用。
n!
和x*x则运用了本学期所学,顺利编写。
voidCMy0308150317Dlg:
:
OnButton17()
{n=4;
}
voidCMy0308150317Dlg:
:
OnButton18()
{
n=5;
}
voidCMy0308150317Dlg:
:
OnButton19()
{
n=6;
}
voidCMy0308150317Dlg:
:
OnButton20()
{
n=7;
}
elseif(n==4)
{
data=atof(m_result);
data=liancheng(data);
m_result.Format(_T("%lf"),data);
UpdateData(false);
}
elseif(n==5)
{
data=atof(m_result);
data=pinfang(data);
m_result.Format(_T("%lf"),data);
UpdateData(false);
}
elseif(n==6)
{
data=atof(m_result);
data=sin(data);
m_result.Format(_T("%lf"),data);
UpdateData(false);
}
elseif(n==7)
{
data=atof(m_result);
data=sinh(data);
m_result.Format(_T("%lf"),data);
UpdateData(false);
doubledata,data1;
intn,i;
doublefabs(doublex)
{
doubley;
if(x<0)
y=-x;
else
y=x;
returny;
}
doublesin(doublex)
{doubley=0,t=x;
intn=2;
while(fabs(t)>1e-5)
{
y+=t;
t=-t*x*x/(n*(n+1));
n+=2;
}
returny;
}
doubleliancheng(doublex)
{doublea;
doubles
(1);
for(a=1;a{s=s*a;
}
returns;
}
doublepinfang(doublex)
{doubley;
y=x*x;
returny;
}
doublecifang(doublex,inty)
{
doublez=1;
for(i=0;i{
z*=x;
}
returnz;
}
doublesinh(doublex)
{
doubley=0,e=2.71828;
y=(cifang(e,x)-cifang(e,-x))/2;
returny;
}
}
4设计总结
本计算机的优点是通过ctrl复制使界面友好,整齐,易于操作;程序设计上,结构清晰,简单,便于制作,交互性强,便于未来添加新的符号;用新方法使得单个数字计算缩短。
本计算机的缺点是界面原始,与ios平台上的设计性相比欠缺,背景颜色都没有;功能不够完善,常用符号欠缺,小数点后几位问题未解决;编程方法不够规范,可能与其他代码出现兼容性的问题。
进一步优化思路:
学习相关平面设计知识,MFC知识,使用户界面更加友好。
根据卡西欧科学计算机,进行运算符号的增加。
进行菜单的设计,能让用户自主调节小数点数,几进制等。
收获与体会:
刚开始面对一个全新的系统,手足无措,但是通过老师,同学的帮助下,逐渐掌握了基本技能。
我印象最深的一次是,C++无法运行,连着下了三个dll之后,总算可以使用,这告诉我们要坚持不懈,越绝望就离成功越近;还有我发现跟着视频自学是最快的学习方式,比书本文字更加生动有趣。
实现sin的方法有许多种,但级数展开是简便的一种,这教会我们方法总比困难多,好方法加速困难解决。
后期学习:
本专业是矿物加工,未来需要用到编程解决实际问题,借助计算机的强大计算能力完成复选任务,通过互联网+解决各工艺的衔接问题,通过vpn获得更多的学术信息。
虽然C++的学习告一段落了,但未来工作学习与他密不可分,在信息时代,没有专业能独立的生存,在此感谢指导我们C++学习的刘卫国老师,我们能走得更远!
参考文献
✧杨长兴,刘卫国.C++程序设计.北京:
中国水利水电出版社,2012
✧刘卫国,杨长兴.C++程序设计实践教程.北京:
中国水利水电出版社,2012
标题:
大学生究竟难在哪?
—创业要迈五道坎2004年3月23日
民族性手工艺品。
在饰品店里,墙上挂满了各式各样的小饰品,有最普通的玉制项链、珍珠手链,也有特别一点如景泰蓝的手机挂坠、中国结的耳坠,甚至还有具有浓郁的异域风情的藏族饰品。
标题:
上海发出通知为大学生就业—鼓励自主创业,灵活就业2004年3月17日
标题:
大学生“负债消费“成潮流2004年3月18日
标题:
大学生究竟难在哪?
—创业要迈五道坎2004年3月23日
§8-4情境因素与消费者行为2004年3月20日
五、创业机会和对策分析
秘诀:
好市口+个性经营
十几年的学校教育让我们大学生掌握了足够的科学文化知识,深韵的文化底子为我们创业奠定了一定的基础。
特别是在大学期间,我们学到的不单单是书本知识,假期的打工经验也帮了大忙。
标题:
大学生究竟难在哪?
—创业要迈五道坎2004年3月23日