C++作业武汉科技大学机械学院研究生.docx
《C++作业武汉科技大学机械学院研究生.docx》由会员分享,可在线阅读,更多相关《C++作业武汉科技大学机械学院研究生.docx(41页珍藏版)》请在冰豆网上搜索。
C++作业武汉科技大学机械学院研究生
姓名:
班级:
学号:
完成日期:
2014.02
武汉科技大学机械自动化学院
任务一开发一个计算器程序
一软件功能
开发一个计算器软件,要求是基于对话框的应用程序,至少具有加、减、乘、除四个基本功能。
在此基础上扩展平方、开方、三角函数等功能。
对话框是最重要的用户界面元素之一,是与用户交互的重要手段,可用于捕捉用户的输入信息或数据。
通过计算器软件开发,主要培养学生熟悉使用C++编写基于对话框的应用程序,同时学会将所学知识运用于计算器界面的实际案例中,增进对C++认识和运用。
二软件设计
设计基于对话框的计算器软件,该计算器软件可以实现加、减、乘、除、平方、开方、正弦、余弦、正切、对数函数的功能。
基本操作流程如下:
(1)用MFCAppWizard创建一个基于对话框的应用程序。
(2)再根据“计算器”的要求设计对话框的相关属性。
(3)添加和布局所需类型的控件,如组框、按钮、编辑框、静态文本等,并对各种控件进行属性设置(如ID号等)和布局安排。
(4)在创建基本对话框时,一个基于对话框资源模板的对话框类CCalculatorDlg就创建好了。
(5)添加对话框映射函数和代码,添加成员变量m_first,m_second,m_result,m_operator
(6)编译,运行计算器软件程序,实现各种功能。
三软件实现过程
1.用MFCAppWizard创建一个基于对话框的应用程序,如图1.1所示
图1.1基于对话框的应用程序
2.添加对话框,并布局对话框上的控件,设置各个控件的属性,如图1.2所示
图1.2基于对话框的计算器界面
(1)设置“迷你计算器”的属性,如图1.3所示
图1.3“迷你计算器”的属性
(2)设置输入的两个数的ID号分别为IDC_first,IDC_second,结果输出数的ID号为IDC_result,如图1.4所示
图1.4第一个输入数的属性
(3)运算符号加、减、乘、除、平方、开方、正弦、余弦、正切、对数函数、等号的ID号分别为IDC_add,IDC_minus,IDC_mul,IDC_divide,IDC_square,IDC_sqrt,IDC_sin,IDC_cos,IDC_tan,IDC_lg,IDC_equal。
学生个人信息的ID号为IDC_information。
“加”的属性如图1.5所示.
图1.5“加”的属性
(4)添加成员变量m_first,m_second,m_result,m_operator。
变量的类型分别为double,double,double,int。
3.添加消息映射函数,写主要代码
(1)分别为各个运算符号添加映射函数,并写出相应代码
voidCCalculatorDlg:
:
Onadd()
{
m_operator=1;
}
voidCCalculatorDlg:
:
Onminus()
{
m_operator=2;
}
voidCCalculatorDlg:
:
Onmul()
{
m_operator=3;
}
voidCCalculatorDlg:
:
Ondivide()
{
m_operator=4;
}
voidCCalculatorDlg:
:
Onsquare()
{
m_operator=5;
}
voidCCalculatorDlg:
:
Onsin()
{
m_operator=6;
}
voidCCalculatorDlg:
:
Oncos()
{
m_operator=7;
}
voidCCalculatorDlg:
:
Ontan()
{
m_operator=8;
}
voidCCalculatorDlg:
:
Onsqrt()
{
m_operator=9;
}
voidCCalculatorDlg:
:
Onlg()
{
m_operator=10;
}
voidCCalculatorDlg:
:
Onequal()
{
UpdateData(TRUE);
switch(m_operator)
{
case1:
m_result=m_first+m_second;break;
case2:
m_result=m_first-m_second;break;
case3:
m_result=m_first*m_second;break;
case4:
{
if(m_second==0)
MessageBox("请输入不等于0的数!
","提醒",0);
else
m_result=m_first/m_second;break;
}
case5:
m_result=m_first*m_first;break;
case6:
m_result=sin(m_first*3.14159/180);break;
case7:
m_result=cos(m_first*3.14159/180);break;
case8:
m_result=tan(m_first*3.14159/180);break;
case9:
{
if(m_first<0)
MessageBox("请输入不小于0的数!
","提醒",0);
else
m_result=sqrt(m_first);break;
}
case10:
{
if(m_first<=0)
MessageBox("请输入大于0的数!
","提醒",0);
else
m_result=log10(m_first);break;
}
default:
ERROR;
}
UpdateData(FALSE);
}
(2)学生个人信息的映射函数和相应代码如下
voidCCalculatorDlg:
:
Oninformation()
{
MessageBox("姓名:
李梓响班级:
机械2班学号:
201303703073","学生基本信息",0);
}
四.软件界面截图
1.计算器的主界面,如图1.6所示
图1.6计算器主界面
2.计算器的About对话框界面,如图1.7所示
图1.7计算器的About对话框界面
任务二开发一个画图程序
一软件功能与目标
开发一个画图软件,要求是基于单文档或多文档的应用程序,能绘制点、直线、矩形、圆、椭圆等基本几何图形。
在此基础上扩展多边形、扇形、贝赛尔曲线以及文字输出等功能。
该画图软件还能在状态栏显示当前坐标信息和系统当前时间。
二软件设计
设计基于单文档的画图软件,该画图软件可以实现绘制点、直线、矩形、圆、椭圆等基本几何图形的功能。
同时,在状态栏显示当前坐标信息和时间。
基本操作流程如下:
(1)用MFCAppWizard创建一个基于单文档的画图应用程序。
(2)再根据画图软件的要求设计菜单项、子菜单项及相关属性。
(3)在工具条添加如直线、曲线等的图片,方便直接执行画图功能。
(4)在视图类下添加子菜单项中对应的映射函数和代码,添加int型成员变量m_type,CPoint型成员变量m_pOrign。
(5)编译,运行画图程序,实现各种功能。
三实现过程
1.用MFCAppWizard创建一个单文档应用程序,如图2.1.
图2.1基于对话框的应用程序
2.在菜单项下添加图形、线型、颜色、填充菜单及其对应的子菜单,如图2.2所示,图2.2为为菜单项添加工具栏。
图2.2画图软件各菜单项
图2.3为菜单项添加工具栏
(1)图形下面的子菜单项属性设置,直线(&L)、曲线(&C)、矩形(&R)、圆、椭圆(&O)的ID号分别为ID_LINE,ID_CURVE,ID_RECTANGLE,ID_CIRCLE,ID_OVAL。
直线的属性如图2.4所示
图2.4直线的属性设置
(2)分隔符的属性设置如图2.5所示
图2.5分隔符的属性设置
(3)线型下面的子菜单项属性设置,粗实线、细实线、中心线、虚线的ID号分别为ID_HLINE,ID_TLINE,ID_CLINE,ID_HIDELINE。
粗实线的属性如图2.6所示
图2.6粗实线的属性设置
(4)“颜色”、“填充”下面的子菜单项属性设置,斜线、网格线的ID号分别为ID_SLASH,ID_GLINE。
斜线的属性如图2.7所示
图2.7斜线的属性设置
3.在MFCAppWizard的画图视图类中添加成员函数形成消息映射函数,写主要代码,实现画图功能。
例如给直线添加成员函数OnLine,双击进入书写代码,实现画直线功能,如图2.8所示
图2.8添加直线的成员函数
(1)分别为各个菜单项添加映射函数,并写出相应代码
voidCDrawingView:
:
OnLine()
{m_type=1;}
voidCDrawingView:
:
OnCurve()
{m_type=2;}
voidCDrawingView:
:
OnRectangle()
{m_type=3;}
voidCDrawingView:
:
OnCircle()
{m_type=4;}
voidCDrawingView:
:
OnOval()
{m_type=5;}
voidCDrawingView:
:
OnHline()
{}
voidCDrawingView:
:
OnTline()
{}
voidCDrawingView:
:
OnCline()
{}
voidCDrawingView:
:
OnHideline()
{}
voidCDrawingView:
:
OnSlash()
{}
voidCDrawingView:
:
OnGline()
{}
voidCDrawingView:
:
OnLButtonDown(UINTnFlags,CPointpoint)
{
m_pOrign=point;
CView:
:
OnLButtonDown(nFlags,point);
}
voidCDrawingView:
:
OnLButtonUp(UINTnFlags,CPointpoint)
{
CDC*pDC=GetDC();
CPenmypen;//定义一个画笔变量
mypen.CreatePen(PS_SOLID,3,RGB(255,0,0));//创建画笔
//将此画笔选入当前设备环境并保存原来的画笔
CPen*pOldPen=pDC->SelectObject(&mypen);//用此画笔绘图
switch(m_type)
{case1:
pDC->MoveTo(m_pOrign);
pDC->LineTo(point);break;
case2:
pDC->Arc(CRect(0,0,100,100),m_pOrign,point);break;
case3:
pDC->Rectangle(CRect(m_pOrign,point));break;
case4:
pDC->Ellipse(CRect(m_pOrign,point));break;
case5:
pDC->Ellipse(m_pOrign.x,m_pOrign.y,point.x,point.y);break;
default:
ERROR;
}
CView:
:
OnLButtonUp(nFlags,point);
}
(2)状态栏显示坐标信息和当前时间,添加映射函数,并写出相应代码
voidCDrawingView:
:
OnMouseMove(UINTnFlags,CPointpoint)
{
CStringstr;
CMainFrame*pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;//获得
主窗口指针
CStatusBar*pStatus=&pFrame->m_wndStatusBar;//获得主窗口中的状态栏指针
if(pStatus)
{str.Format("X=%d,Y=%d",point.x,point.y);//格式化文本
pStatus->SetPaneText(1,str);//更新第一个窗格的文本
}
CView:
:
OnMouseMove(nFlags,point);
}
voidCDrawingView:
:
OnTimer(UINTnIDEvent)
{
CStringstr;
CTimetime=CTime:
:
GetCurrentTime();
str.Format("%d:
%d:
%d",time.GetHour(),time.GetMinute(),time.GetSecond());
CMainFrame*pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CStatusBar*pStatus=&pFrame->m_wndStatusBar;
if(pStatus)
{
pStatus->SetPaneText(2,str);//更新第二个窗格的文本
}
CView:
:
OnTimer(nIDEvent);
}
voidCDrawingView:
:
OnRButtonDown(UINTnFlags,CPointpoint)
{
SetTimer(1,1000,NULL);
CView:
:
OnRButtonDown(nFlags,point);
}
(3)菜单项“帮助”下面的学生基本信息,添加映射函数,并写出相应代码
voidCDrawingView:
:
OnAppAbout()
{
MessageBox("姓名:
李梓响班级:
机械2班学号:
201303703073","学生基本信息",0);
}
四软件界面截图
1.画图软件主界面如图2.9所示
图2.9画图软件主界面
2.菜单项“帮助”下面的About对话框界面显示学生基本信息,如图2.10所示
图2.10About对话框中的学生基本信息
任务三开发一个数据库应用程序
一软件功能与目标
开发一个数据库软件,要求采用ADO数据库接口开发,实现学籍信息管理、学生成绩管理、图书管理、人事管理或财务管理等数据库应用。
二软件设计
设计学生成绩查询的数据库应用程序,该程序结合数据库可以实现查找、增加、修改学生成绩的功能。
基本操作流程如下:
(1)用Access数据库建立数据表student,记录学生成绩基本信息
(2)用MFCAppWizard创建一个基于单文档的链接student数据表的学生成绩管理程序。
(3)再根据学生成绩管理软件的要求分别设计3个对话框记录、增加、修改学生信息。
(4)新建两个类CScore1,CScore2分别管理增加、修改学生信息。
在CScore1中添加成员变量float型m_zcredit;CString型m_zgender;CString型m_zname;float型m_zscore;CString型m_zstudent;在CScore2中添加成员变量float型m_xcredit;CString型m_xgender;CString型m_xname;Float型m_xscore;CString型m_xstudentno;
(5)编译,运行数据库应用程序,实现各种功能。
三软件实现过程
1.用Access数据库建立数据表score,如下表3.1所示
表3.1score数据表
数据表的字段名、类型、字段大小、含义、主键等信息如表3.2所示
表3.2score数据表信息
字段名称
字段大小
数据类型
含义
主键
studentno
20
文本
学生学号
是
name
20
文本
学生姓名
否
score
长整型
数字
成绩
否
credit
长整型
数字
学分
否
gender
20
文本
性别
否
2.用MFCAppWizard创建一个包含Access数据库的单文档应用程序,如图3.1所示
图3.1建包含数据库的单文档程序
3.添加对话框,并布局对话框上的控件
(1)记录学生信息对话框,如图3.2所示
图3.2学生信息对话框
(2)为按钮添加相关的ID,如图3.3所示
图3.3按钮添加相关的ID
(3)增加学生信息的对话框,并添加相关变量,如图3.4和3.5所示:
图3.4学生信息的对话框
图3.5添加相关变量
4.相关映射函数的代码如下:
voidCMaoYongNian_3View:
:
OnButtonQuery()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData();
m_strQuery.TrimLeft();//删除字符串左边的空格及控制字符如(\n\t空格等)
if(m_strQuery.IsEmpty())
{MessageBox("要查询的学号不能为空!
");return;}
if(m_pSet->IsOpen())m_pSet->Close();//如果记录集打开,则先关闭
m_pSet->m_strFilter.Format("studentno='%s'",m_strQuery);
//studentno是score表的字段名,用来指定查询条件
m_pSet->m_strSort="studentno";
//course是score表的字段名,用来按course字段从小到大排序
m_pSet->Open();//打开记录集
if(!
m_pSet->IsEOF())//如果打开记录集有记录
UpdateData(FALSE);//自动更新表单中控件显示的内容
elseMessageBox("没有查到你要找的学号记录!
");}
voidCMaoYongNian_3View:
:
OnRecAdd()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
CScoreDlgdlg;
if(dlg.DoModal()==IDOK)
{
m_pSet->AddNew();
m_pSet->m_studentno=dlg.m_fstuno;
m_pSet->m_name=dlg.m_fname;
m_pSet->m_gender=dlg.m_fgender;
m_pSet->m_score=dlg.m_fscore;
m_pSet->m_credit=dlg.m_fcredit;
m_pSet->Update();
m_pSet->Requery();}
}
voidCMaoYongNian_3View:
:
OnRecEdit()
{CScoreDlgdlg;
if(dlg.DoModal()==IDOK)
{
m_pSet->Edit();//修改当前记录
m_pSet->m_studentno=dlg.m_fstuno;
m_pSet->m_name=dlg.m_fname;
m_pSet->m_gender=dlg.m_fgender;
m_pSet->m_score=dlg.m_fscore;
m_pSet->m_credit=dlg.m_fcredit;
m_pSet->Update();//将修改结果存入数据库
m_pSet->Requery();}
}
voidCMaoYongNian_3View:
:
OnRecDel()
{
CRecordsetStatusstatus;
m_pSet->GetStatus(status);//获取当前记录集状态
m_pSet->Delete();//删除当前记录
if(status.m_lCurrentRecord==0)
m_pSet->MoveNext();//若当前记录索引号为0(0表示第一条记录)
//则下移一个记录
else
m_pSet->MoveFirst();//移动到第一个记录处
UpdateData(FALSE);
四界面截图
1.学生成绩信息的主界面如图3.6所示
图3.6About对话框中的学生基本信息
2.菜单项“帮助”下面的About对话框界面显示学生基本信息,如图3.7所示
图3.7菜单项“帮助”中的学生基本信息
任务四开发一个凸轮机构仿真程序
一软件功能与目标
开发一个机构运动仿真软件,可以针对凸轮机构进行模拟仿真。
二软件设计
设计凸轮机构仿真的应用程序,该程序可以设置不同的参数实现凸轮运动功能。
基本操作流程如下:
(1)用MFCAppWizard创建一个基于单文档的凸轮机构仿真程序。
(2)插入一个对话框资源,该对话框将来作为凸轮机构的参数输入窗口。
(3)为对话框设置属性,然后在对话框上添加控件为每一个控件设置属性。
(4)为对话框添加一个类。
(5)为对话框中的控件添加相应的成员变量,在主菜单添加顶层菜单项“输入”,弹出菜单项“凸轮机构参数”。
(6)添加消息映射函数,成员函数。
编译,运行凸轮机构仿真程序,实现各种功能。
三软件实现过程
1.用MFCAppWizard创建一个单文档程序,项目名为“TuLun”,如图4.1所示
图4.1建立单文档凸轮机构仿真程序
2.插入一个对话框资源,用来作为凸轮机构的参数输入窗口,如图4.2所示。
图4.2凸轮参数输入对话框
3.在参数输入对话框上右键点击,弹出属性对话框,设定其ID号为IDD_PARAMETER,设定其标题Caption为“凸轮参数输入”。
然后在对话框上添加控件如下图所示,为每一个控件指定ID号。
推程运动规律一组单选钮:
IDC_TUI_1;IDC_TUI_2;IDC_TUI_3;IDC_TUI_4
回程运动规律一组单选钮:
IDC_HUI_1;IDC_HUI_2;IDC_HUI_3;IDC_HUI_4
推程角:
IDC_TUI_ANGL;回程角:
IDC_HUI_ANGLE;远停角:
IDC_FAR_REST_ANGLE
基圆半径:
IDC_BASE_CIRCLE;行程:
IDC_COURSE;偏距:
IDC_SETOVER
推杆滚子半径:
IDC_ROLLER_RADIUS;凸轮转动速度:
IDC_CAM_VELOCITY
4.为对话框添加一个类:
在对话框的空白