当前位置:文档之家› C++作业 武汉科技大学机械学院研究生

C++作业 武汉科技大学机械学院研究生

姓名:班级:学号:完成日期:2014.02武汉科技大学机械自动化学院任务一开发一个计算器程序一软件功能开发一个计算器软件,要求是基于对话框的应用程序,至少具有加、减、乘、除四个基本功能。

在此基础上扩展平方、开方、三角函数等功能。

对话框是最重要的用户界面元素之一,是与用户交互的重要手段,可用于捕捉用户的输入信息或数据。

通过计算器软件开发,主要培养学生熟悉使用C++编写基于对话框的应用程序,同时学会将所学知识运用于计算器界面的实际案例中,增进对C++认识和运用。

二软件设计设计基于对话框的计算器软件,该计算器软件可以实现加、减、乘、除、平方、开方、正弦、余弦、正切、对数函数的功能。

基本操作流程如下:(1) 用MFC AppWizard 创建一个基于对话框的应用程序。

(2) 再根据“计算器”的要求设计对话框的相关属性。

(3) 添加和布局所需类型的控件,如组框、按钮、编辑框、静态文本等,并对各种控件进行属性设置(如ID号等)和布局安排。

(4) 在创建基本对话框时,一个基于对话框资源模板的对话框类CCalculatorDlg 就创建好了。

(5) 添加对话框映射函数和代码,添加成员变量m_first,m_second,m_result, m_operator(6) 编译,运行计算器软件程序,实现各种功能。

三软件实现过程1. 用MFC AppWizard 创建一个基于对话框的应用程序,如图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) 分别为各个运算符号添加映射函数,并写出相应代码void CCalculatorDlg::Onadd(){m_operator=1;}void CCalculatorDlg::Onminus(){m_operator=2;}void CCalculatorDlg::Onmul(){m_operator=3;}void CCalculatorDlg::Ondivide(){m_operator=4;}void CCalculatorDlg::Onsquare(){m_operator=5;}void CCalculatorDlg::Onsin()m_operator=6;}void CCalculatorDlg::Oncos(){m_operator=7;}void CCalculatorDlg::Ontan(){m_operator=8;}void CCalculatorDlg::Onsqrt(){m_operator=9;}void CCalculatorDlg::Onlg(){m_operator=10;}void CCalculatorDlg::Onequal(){UpdateData(TRUE);switch (m_operator){case 1 : m_result=m_first+m_second ;break;case 2 : m_result=m_first-m_second ;break;case 3 : m_result=m_first*m_second ;break;case 4 :{if(m_second==0)MessageBox("请输入不等于0的数!","提醒",0); elsem_result=m_first/m_second ;break;}case 5 : m_result= m_first*m_first;break;case 6 : m_result=sin(m_first*3.14159/180);break; case 7 : m_result=cos(m_first*3.14159/180);break; case 8 : m_result=tan(m_first*3.14159/180);break; case 9 :{if(m_first<0)MessageBox("请输入不小于0的数!","提醒",0); elsem_result=sqrt(m_first);break;}case 10 :{if(m_first<=0)MessageBox("请输入大于0的数!","提醒",0);elsem_result=log10(m_first);break;}default: ERROR;}UpdateData(FALSE);}(2) 学生个人信息的映射函数和相应代码如下void CCalculatorDlg::Oninformation(){MessageBox("姓名:李梓响班级:机械2班学号:201303703073","学生基本信息",0);}四. 软件界面截图1. 计算器的主界面,如图1.6所示图1.6 计算器主界面2. 计算器的About对话框界面,如图1.7所示图1.7 计算器的About对话框界面任务二开发一个画图程序一软件功能与目标开发一个画图软件,要求是基于单文档或多文档的应用程序,能绘制点、直线、矩形、圆、椭圆等基本几何图形。

在此基础上扩展多边形、扇形、贝赛尔曲线以及文字输出等功能。

该画图软件还能在状态栏显示当前坐标信息和系统当前时间。

二软件设计设计基于单文档的画图软件,该画图软件可以实现绘制点、直线、矩形、圆、椭圆等基本几何图形的功能。

同时,在状态栏显示当前坐标信息和时间。

基本操作流程如下:(1)用MFC AppWizard 创建一个基于单文档的画图应用程序。

(2)再根据画图软件的要求设计菜单项、子菜单项及相关属性。

(3)在工具条添加如直线、曲线等的图片,方便直接执行画图功能。

(4)在视图类下添加子菜单项中对应的映射函数和代码,添加int型成员变量m_type ,CPoint型成员变量m_pOrign。

(5)编译,运行画图程序,实现各种功能。

三实现过程1. 用MFC AppWizard 创建一个单文档应用程序,如图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_OV AL 。

直线的属性如图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. 在MFC AppWizard的画图视图类中添加成员函数形成消息映射函数,写主要代码,实现画图功能。

例如给直线添加成员函数OnLine,双击进入书写代码,实现画直线功能,如图2.8所示图2.8 添加直线的成员函数(1) 分别为各个菜单项添加映射函数,并写出相应代码void CDrawingView::OnLine(){m_type=1;}void CDrawingView::OnCurve(){m_type=2;}void CDrawingView::OnRectangle(){m_type=3;}void CDrawingView::OnCircle(){m_type=4;}void CDrawingView::OnOval(){m_type=5;}void CDrawingView::OnHline(){}void CDrawingView::OnTline(){}void CDrawingView::OnCline(){}void CDrawingView::OnHideline(){}void CDrawingView::OnSlash(){}void CDrawingView::OnGline(){}void CDrawingView::OnLButtonDown(UINT nFlags, CPoint point) {m_pOrign=point;CView::OnLButtonDown(nFlags, point);}void CDrawingView::OnLButtonUp(UINT nFlags, CPoint point){CDC*pDC=GetDC();CPen mypen; // 定义一个画笔变量mypen.CreatePen( PS_SOLID, 3, RGB(255,0,0));// 创建画笔// 将此画笔选入当前设备环境并保存原来的画笔CPen* pOldPen = pDC->SelectObject( &mypen );// 用此画笔绘图switch(m_type){case 1:pDC->MoveTo(m_pOrign);pDC->LineTo(point);break;case 2: pDC->Arc(CRect(0,0,100,100), m_pOrign,point);break;case 3: pDC->Rectangle(CRect(m_pOrign,point));break;case 4: pDC->Ellipse(CRect(m_pOrign,point)); break;case 5: pDC->Ellipse(m_pOrign.x,m_pOrign.y,point.x,point.y); break; default: ERROR;}CView::OnLButtonUp(nFlags, point);}(2) 状态栏显示坐标信息和当前时间,添加映射函数,并写出相应代码void CDrawingView::OnMouseMove(UINT nFlags, CPoint point){CString str;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);}void CDrawingView::OnTimer(UINT nIDEvent){CString str;CTime time=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);}void CDrawingView::OnRButtonDown(UINT nFlags, CPoint point){SetTimer(1,1000,NULL);CView::OnRButtonDown(nFlags, point);}(3) 菜单项“帮助”下面的学生基本信息,添加映射函数,并写出相应代码void CDrawingView::OnAppAbout(){MessageBox("姓名:李梓响班级:机械2班学号:201303703073","学生基本信息",0);}四软件界面截图1. 画图软件主界面如图2.9所示图2.9 画图软件主界面2. 菜单项“帮助”下面的About对话框界面显示学生基本信息,如图2.10所示图2.10 About对话框中的学生基本信息任务三开发一个数据库应用程序一软件功能与目标开发一个数据库软件,要求采用ADO 数据库接口开发,实现学籍信息管理、学生成绩管理、图书管理、人事管理或财务管理等数据库应用。

相关主题