软件基础课程设计报告-C语言(MFC)计算器设计
《MFC编程及应用》课程设计报告
《MFC编程及应用》课程设计报告题目:计算器学号:姓名:指导老师:时间:为了完成计算器这个程序的编程,我首先创建了一个基于对话框的应用程序。
我在对话框中添加了三个编辑框,分别用来输入操作数和输出结果,添加了三个静态文本框来标记三个编辑框,添加了四个按钮来实现加减乘除的运算。
通过设置静态文本框的属性,我将它们的名字改为“数1”,“数2”和“结果”。
同样我改变了按钮的名字,我先为“加”这个按钮添加了一个BN-CLICKED的成员函数,这时候对话框的类中就出现了一个ON_BATTON1的消息响应函数要从两个编辑框中取出输入的值,我在这个消息响应函数中新增了三个char型数组的成员变量用来保存输入的字符和输出字符,由于计算机处理的是整数不是字符,所以我又增加了三个整型的成员变量num1,num2,num3作为计算机处理的变量。
在这个过程中,我碰到了四个问题,一,要怎么把输入的字符从编辑框中取出来。
为此我调用了一个函数GetDlgItem(IDC_EDIT2)->GetWindowText(ch1,10);将编辑框中的字符取出并赋值给ch1[]。
二,要怎么把一个字符型的变量转变成整形变量,我调用了函数num1=atoi(ch1);这样就实现了从字符到整数的转变。
三,怎样保证输入的是1到100的数,我用了一个if语句来判断,if(num1<1||num1>100||num2<1||num2>100)MessageBox("请输入一个1到100的整数");else{ num3=num1+num2;只有当输入的是满足要求的数时才进入下一步,如果输入数非法就弹出一个对话框提示输入非法。
四,要怎么把结果输入到第三个编辑框中,由于计算结果是一个整数所以我先调用了函数itoa(num3,ch3,10);将其变成字符,并利用函数GetDlgItem(IDC_EDIT4)->SetWindowText(ch3);将它输出到第三个编辑框中。
c课程设计计算器报告
c 课程设计计算器报告一、教学目标本课程的教学目标是使学生掌握C语言的基本语法,熟练使用C语言进行程序设计。
具体分为三个部分:1.知识目标:学生需要掌握C语言的基本语法,包括数据类型、运算符、控制结构、函数等。
2.技能目标:学生能够使用C语言编写简单的程序,解决实际问题。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高学生解决问题的能力。
二、教学内容教学内容主要包括C语言的基本语法和程序设计的基本方法。
具体安排如下:1.第一章:C语言概述,介绍C语言的历史和发展,理解C语言的特点。
2.第二章:数据类型和运算符,学习C语言的基本数据类型和运算符。
3.第三章:控制结构,学习C语言的条件语句和循环语句。
4.第四章:函数,学习C语言的函数定义和调用。
5.第五章:数组和字符串,学习C语言的数组和字符串操作。
6.第六章:指针,学习C语言的指针概念和应用。
7.第七章:结构体和文件,学习C语言的结构体和文件操作。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法:1.讲授法:讲解C语言的基本语法和概念。
2.案例分析法:通过分析实际案例,让学生理解C语言的应用。
3.实验法:安排实验课程,让学生动手编写C语言程序。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C程序设计语言》2.参考书:《C Primer Plus》、《C和指针》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、编程环境五、教学评估本课程的评估方式包括平时表现、作业、考试等。
具体安排如下:1.平时表现:占课程总评的30%,包括课堂参与度、提问回答、小组讨论等。
2.作业:占课程总评的30%,包括课后练习、编程任务等。
3.考试:占课程总评的40%,包括期中考试和期末考试。
评估方式要求客观、公正,能够全面反映学生的学习成果。
我们将根据学生的实际情况,及时给予反馈,帮助学生提高。
六、教学安排本课程的教学进度安排如下:1.每周一次课,每次课2小时。
mfc计算器实验报告
mfc计算器实验报告MFC计算器实验报告引言:MFC(Microsoft Foundation Class)是微软公司开发的一套用于Windows应用程序开发的类库,它提供了一系列的类和函数,方便开发者进行图形界面的设计和开发。
在本次实验中,我们将使用MFC来设计一个简单的计算器应用程序,并通过实验报告来总结我们的设计过程和结果。
1. 实验目的本次实验的主要目的是熟悉MFC框架的使用,了解MFC的基本原理和设计思路,并通过实际操作来掌握MFC应用程序的开发流程。
2. 实验环境本次实验使用的开发环境是Visual Studio 2019,该版本已经集成了MFC开发环境,方便我们进行MFC应用程序的设计和开发。
3. 实验步骤3.1 创建MFC项目首先,我们打开Visual Studio 2019,并选择创建一个新的MFC应用程序项目。
在创建项目的过程中,我们需要选择MFC应用程序向导,并设置一些基本的项目属性,如应用程序名称、目标平台等。
3.2 设计计算器界面在项目创建完成后,我们将进入MFC应用程序的设计界面。
在这个界面中,我们可以通过拖拽和调整控件的方式来设计应用程序的界面。
为了实现一个简单的计算器功能,我们需要添加一些按钮、文本框和标签等控件,并设置它们的属性和事件响应函数。
3.3 实现计算器功能在设计界面完成后,我们需要在代码中实现计算器的功能。
具体来说,我们需要编写一些函数来处理按钮的点击事件,并根据用户的输入来进行相应的计算操作。
在这个过程中,我们可以使用MFC提供的一些数学函数和操作符重载来简化计算的过程。
4. 实验结果经过我们的设计和开发,一个简单的计算器应用程序已经完成了。
在实验过程中,我们测试了该应用程序的基本功能,包括加法、减法、乘法和除法等运算操作,并对一些特殊情况进行了处理,如除数为零等。
实验结果表明,该计算器应用程序在功能和稳定性方面都达到了预期的效果。
5. 实验总结通过本次实验,我们对MFC框架的使用和应用程序的开发流程有了更深入的了解。
MFC课程设计报告—模拟计算器
计算机MFC课程设计报告——模拟计算器姓名:学号:02011227联系电话:指导教师:东南大学机械工程学院2012年10月14日模拟计算器摘要摘要内容:以课本简单计算器为基础,首先实现了加、减、乘、除、求倒数和平方根的混合运算,并能进行清屏及倒退操作,然后自行完善了书中未能实现的乘、除运算的连续操作,最后自行设计并完成了lg、ln 、sin、cos、^、.、pi、e八个按钮控件的消息映射及程序代码的添加和修改。
从中学会了制作简单的基于对话框的小工具、掌握了常用控件的使用、明白了消息映射及消息处理、提高了VC++编程水平。
关键词:四则运算小数点计算器Analog calculatorAbstractContent of abstract: Simple calculator in textbooks as the foundation, first realized the addition, subtraction, multiplication, division, and reciprocal and square root of the mixed operation, and can clear screen and reverse operation, and then to improve the book failed to realize the multiplication, division operation of continuous operation, and finally to be designed and completed the eight button control news mapping and program code to add and modify. Learnt how to make simple dialog-based small tools, mastered the use of commonly used controls, see news mapping and information processing, improve the level of programming.Key word: arithmetic Decimal point Calculator本计算器是基于VC++的MFC编程,可完成大多数简单操作,其运行后界面如下图:以课本简单计算器为基础,首先实现了加、减、乘、除、求倒数和平方根的混合运算,并能进行清屏及倒退操作,然后自行完善了书中未能实现的乘、除运算的连续操作,最后自行设计并完成了lg、ln 、sin、cos、^、.、pi、e 八个按钮控件的消息映射及程序代码的添加和修改。
mfc计算器程序设计详细
mfc计算器程序设计详细
MFC是Microsoft基础类的缩写,用于Windows下的GUI程序开发,封装了许多常用的功能,其中包括控件、多线程、消息传递等等。
下面我们将基于MFC来编写一个简单的计算器程序。
首先,我们需要创建一个MFC应用程序并添加一个对话框。
然后,我们需要在对话框中添加各种控件,比如按钮、文本框、标签等等。
在这个例子中,我们需要添加数字按钮、运算符按钮和一个显示结果
的文本框。
接着,我们需要定义各种事件函数,比如数字按钮的点击事件、
运算符按钮的点击事件等等。
在这些事件函数中,我们需要根据相应
的操作完成对应的计算,并将结果显示到文本框中。
当然,我们还需
要处理一些特殊情况,比如输入非法字符、除以0等等。
最后,我们需要将所有的控件和事件函数进行绑定,使得程序能
够正常地运行。
这个过程中,我们将使用MFC提供的消息映射机制来
处理鼠标和键盘事件,以及相应的消息传递机制来更新界面。
总之,在MFC的帮助下编写一个计算器程序不仅方便快捷,而且
代码逻辑清晰,可读性好。
MFC计算器课程设计报告
MFC表达式计算器课程设计报告题目:利用MFC框架编写简易表达式计算器【分析】一.设计过程1.Windows消息处理机制的理解首先编写程序需要对Windows程序的消息处理机制(Message Handle)有个比较清晰的了解。
Windows的程序都是通过消息来传送数据,有不需要用户参与的系统消息,比如异常处理等。
还有用户消息,比如鼠标的单击,双击,键盘的键入等。
2.界面的设计1)界面的初步设计仿照Windows附件里面的计算器,在资源视图中画好界面,如图:2)修改每个static的属性ID CAPTIONIDD_STA TIC4 简易表达式计算器IDC_STATIC1 待求表达式IDC_STATIC2 运算结果IDC_STATIC3 系统当前时间3)修改每个button的属性IDC_BUTTON1 等于(=)IDC_BUTTON2 全清(C)IDC_BUTTON3 清除(A) 结果如下图:4)修改每个button的处理机制在类向导Classwizard窗口中进行,如下图:其他button按钮的修改类似5)修改每个edit的类型和名称在类向导Classwizard窗口中进行:单击Add Variable按钮,在如下窗口中进行修改其他edit的修改类似最终结果如下:注:主要使用到Layout菜单中的Align功能对各个按钮进行对齐,使界面更加整洁。
拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。
6)系统菜单的添加在Menu的IDR_MENU1中添加系统菜单:同理在“帮助”菜单中添加“关于”。
二.设计步骤1. 添加头文件将Calculate.cpp(见附录)改为Calculate.h将其添加到计算器Dlg.cpp : implementation file中,如下:#include "Calculate.h"。
2.成员函数及其释义:void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)//{{AFX_MSG_MAP(CAboutDlg)//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CMyDlg dialogCMyDlg::CMyDlg(CWnd* pParent /*=NULL*/): CDialog(CMyDlg::IDD, pParent){//{{AFX_DATA_INIT(CMyDlg)// NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CMyDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CMyDlg)DDX_Control(pDX, IDC_EDIT3, m_time);DDX_Control(pDX, IDC_EDIT2, m_result);DDX_Control(pDX, IDC_EDIT1, m_input);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CMyDlg, CDialog)//{{AFX_MSG_MAP(CMyDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON1, OnButton1)ON_BN_CLICKED(IDC_BUTTON2, OnButton2)ON_WM_TIMER()ON_BN_CLICKED(IDC_BUTTON3, OnButton3)ON_COMMAND(ID_ABOUT, OnAbout)ON_COMMAND(ID_QUIT, OnQuit)//}}AFX_MSG_MAPEND_MESSAGE_MAP()////////////////////////////////////////////////////////////////////////////// CMyDlg message handlers3.OnButton1()按钮的处理函数双击“等于(=)”按钮,添加如下代码:void CMyDlg::OnButton1(){// TODO: Add your control notification handler code hereCString str;char *ch;m_input.GetWindowText(str);ch = (LPSTR)(LPCTSTR)str;char ch2[50];strcpy(ch2,ch);Cal a(ch2);if(!a.OK){m_result.SetWindowText("表达式不合法!");// 表达式不合法,判别出来并给出相应的错误提示}else{if(a.Sign){m_result.SetWindowText("除数为零!");// 表达式不合法,可以判别出来并给出相应的错误提示}else{str.Format("%lf",a.GetV());m_result.SetWindowText(str);}}}以OnButton1()作为求值处理函数,函数的功能是单击等于(=)按钮,运算结果显示在IDC_EDIT2中4.OnButton2()按钮的处理函数双击“清除(C)”按钮,添加如下代码:void CMyDlg::OnButton2(){// TODO: Add your control notification handler code herem_result.SetWindowText("0");m_input.SetWindowText("");m_input.SetFocus();}//函数的功能是把上次输入的表达式清空5.OnButton3()按钮的处理函数双击“全清(A)”按钮,添加如下代码:void CMyDlg::OnButton3(){// TODO: Add your control notification handler code herem_input.SetWindowText("");m_input.SetFocus();}//函数的功能是把上次输入的表达式和运算结果都清除6.OnTimer(UINT nIDEvent)处理函数CWnd::SetTimer(1,500,NULL);//设置时间每隔500ms更新一次。
MFC课程设计报告一个简单的计算器应用程序
设计一个简朴的计算器应用程序一、设计目的与内容1.了解Windows编程的基础知识,掌握MFC应用程序的基本知识;2.基本掌握面向对象程序设计的基本思绪和方法;3.掌握用VC++开发应用程序的的一般环节和方法;4.可以运用所学的基本知识,设计一个简朴的计算器应用程序,实现基本的加、减、乘、除、求平方根,求倒数等基本运算(必须实现的功能),实现求角度的正弦、余弦、正切等基本运算、实现求指数、自然对数、常用对数等基本运算(这部分功能选做)。
5.在程序中注意解决数据和运算符的输入,计算结果的显示。
二,设计规定1.用VC++进行编码,实现应用程序的功能。
注重编码质量,代码要有适当的注释;2.提交设计报告一份(课程设计任务书、目录、设计的基本思绪、设计的环节及重要代码、心得体会、参考文献)。
一个简朴的计算器应用程序总体设计可以运用所学的基本知识,设计一个简朴的计算器应用程序,实现基本的加、减、乘、除、求平方根,求倒数等基本运算(必须实现的功能),实现求角度的正弦、余弦、正切等基本运算、实现求指数、自然对数、常用对数等基本运算(这部分功能选做)。
在程序中注意解决数据和运算符的输入,计算结果的显示。
具体设计◆新建工程Counter新建工程,选择对话框应用程序。
◆程序运营主界面图2-1在对话框内添加相应的控件,分别给编辑框添加三个变量m_N1,m_N2和m_Result。
然后添加一个组合框,在里面添加十二个单选按钮设立第一个单选按钮为组,如图图2-2然后给对话框类添加一个int变量Operator用来作相应运算时的标记。
给控件添加相应的函数1、给单选按钮添加相应的函数void CCounterDlg::OnRadio1(){Operator=1;}void CCounterDlg::OnRadio2()Operator=2;}void CCounterDlg::OnRadio3() {Operator=3;}void CCounterDlg::OnRadio4() {Operator=4;}void CCounterDlg::OnRadio5() {Operator=5;}void CCounterDlg::OnRadio6() {Operator=6;void CCounterDlg::OnRadio7() {Operator=7;}void CCounterDlg::OnRadio8() {Operator=8;}void CCounterDlg::OnRadio9() {Operator=9;}void CCounterDlg::OnRadio10() {Operator=10;}void CCounterDlg::OnRadio11(){Operator=11;}void CCounterDlg::OnRadio12(){Operator=12;}用来作相应的操作时标记Operator的值。
c语言mfc课程设计
c语言mfc课程设计一、教学目标本课程旨在通过学习C语言和MFC(Microsoft Foundation Classes),使学生掌握C语言的基本语法、编程技巧以及MFC应用程序的开发方法。
通过本课程的学习,学生应达到以下目标:1.理解C语言的基本语法和数据结构。
2.掌握C语言的函数、指针、 arrays、strings等核心概念。
3.熟悉MFC类库的基本结构和常用组件。
4.了解MFC应用程序的创建和调试过程。
5.能够使用C语言编写简单的程序,并进行调试和优化。
6.能够使用MFC类库创建具有图形用户界面的应用程序。
7.能够利用MFC提供的API进行文件操作、数据库访问等操作。
情感态度价值观目标:1.培养学生的编程思维和问题解决能力。
2.增强学生对计算机科学和软件开发的兴趣和热情。
3.培养学生团队合作和自主学习的能力。
二、教学内容根据课程目标,教学内容主要包括C语言基础、MFC类库和应用程序开发。
具体的教学大纲如下:1.C语言基础:–引言和环境配置–基本语法和数据类型–控制结构和函数–指针和数组–字符串和动态内存管理–文件操作和预处理指令2.MFC类库:–MFC的基本结构和组件–应用程序框架和窗口生命周期–常用控件和绘图函数–事件处理和消息映射–文件操作和数据库访问3.应用程序开发:–创建MFC应用程序的步骤和技巧–设计图形用户界面和交互逻辑–调试和优化应用程序–案例分析和实战演练三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,包括:1.讲授法:通过讲解和演示,使学生掌握C语言和MFC的基本概念和技能。
2.讨论法:通过小组讨论和实践,培养学生的编程思维和问题解决能力。
3.案例分析法:通过分析实际案例,使学生了解MFC应用程序的开发过程和技巧。
4.实验法:通过上机实验和项目实践,巩固学生的知识和技能,提高学生的实际操作能力。
四、教学资源为了支持教学内容和教学方法的实施,我们将选择和准备以下教学资源:1.教材:《C语言程序设计》和《MFC应用程序开发》。
MFC计算器课程设计
计算器实验报告2013年6月11日星期二系统设计要求用MFC制作一个计算器,它能在实数范围内进行加、减、乘、除运算。
在运算时要考虑运算符的优先顺序。
要求能显示输入的算式和输出的结果。
设计思路充分利用CString 的功能:1.读入表达式在该过程中,只需要考虑会输入哪些算式,不需要考虑算式的合理性。
2.解析表达式2.1 将CString类的表达式转化为易操作的char类字符数组。
2.2 在运算时,要区分运算符和数字,将它们分别存到两个数组中,由于加减乘除运算符都是二元的,所以数字的个数一定比运算符的个数多一个。
3. 运算3.1 在运算时,第i 个运算符要做的是将第i 个数字与第i+1个数字相运算,运算完后将值赋给第i 个数字,而i 后面的每一个数字都可以往前面挪一个;运算符自运算过的运算符后的每一个都可以往前挪一个。
形象地表示为:在进行一次运算后,若后面补过来的运算符是与它同等级的,则此时的i 依旧没变,所以再对该i 进行运算。
3.2 运算符的优先级。
乘除的优先级大于加减,所以先对乘除进行以上的计算,同样同等级的i 不变,若变化后的b[i]不为乘除,则i++,看下一个运算符。
4.附加功能4.1 括号括号采用递归运算。
运算的函数得到一个CString类型的形参,返回一个float 型的值。
要处理括号,则截取括号里的字符串,递归调用运算的函数,将返回的值存到float 型的数组中去。
4.2 三角函数,指数函数,对数函数采用和括号相类似的方式,在解析时,若读到有三角函数,则递归计算三角函数括号内的式子,将返回的值用<cmath>中的函数计算。
4.3十进制与十六进制的转换将十六进制转化为十进制,只要从左向右,第i个数字乘以16的i-1次幂即可;将十进制转化为十六进制,则要将对16取模,再将得到的char数组倒置一下。
系统功能模块图系统流程图类的层次图关键程序代码1.显示输入UpdateData(true);m_strInput+="0";UpdateData(false);2.将CString转化为字符数组const int len=m_strInput.GetLength();char m[100];memcpy(m,m_strInput,len);3.将存在字符数组的数字转为float型数字存在float型的数组里for(i=0;i<len;){int c=0,j=i;if(m[j]>='0'&&m[j]<='9'){while(m[j]>='0'&&m[j]<='9'){num[countNum]=num[countNum]*10+(m[j]-'0');j++;c++;} //没有小数点的读法if(m[j]=='.'){c++;float t=static_cast<float>(0.1);j++;while((m[j]-'0'>=0)&&(m[j]-'0'<=9)){num[countNum]+=t*static_cast<float>(m[j]-'0');t*=static_cast<float>(0.1);j++;c++;}} //有小数点countNum++;}//取数字4.取运算符if(m[i]=='+'||m[i]=='-'||m[i]=='*'||m[i]=='/'){op[countOperator]=m[i];c++;countOperator++;} //取运算符5.运算(以乘法为例)for(i=0;i<countOperator;) //先计算乘除{if(op[i]=='*'||op[i]=='/'){if(op[i]=='*'){count1++;num[i]*=num[i+1];op[i]=op[i+1];int j;for(j=i+1;j<countNum-1;j++) //每算完一次后该数字后面的数字都往前挪一个,运算符也都往前挪一个{num[j]=num[j+1];}num[j]=0;for(j=i+1;j<countOperator-1;j++){op[j]=op[j+1];}op[j]='0';}}elsei++;6.遇括号和cmath中的函数递归(以括号为例)CString b=a;b = b.Left(b.Find(')'));b = b.Right(b.GetLength()-1-b.ReverseFind('('));num[countNum]=Processing(b);c+=2+b.GetLength();countNum++;7.左右括号不符合报错if(m_strInput.Find('(')*m_strInput.ReverseFind(')')<0)AfxMessageBox("Syntax Error!");总结1.功能:该计算器能在实数范围内进行加减乘除四则混合运算,并通过加括号改变运算次序,能计算三角函数值(弧度制),能计算指数函数和对数函数(以e为底),能将数字在十进制与十六进制间进行转化。
MFC计算器编程设计报告
MFC计算器编程设计报告地信091指导老师:2010.11.15一(题目:利用MFC框架编写简易计算器要求使用MFC框架在Visual Studio 6.0环境下编写一个简易的计算器,支持任意位数的加减乘数,正负转换,并且实现BackSpace CE C功能。
二(设计过程1. Windows消息处理机制的理解首先编写程序需要对Windows程序的消息处理机制(Message Handle)有个比较清晰的了解。
Windows的程序都是通过消息来传送数据,有不需要用户参与的系统消息,比如异常处理等。
还有用户消息,比如鼠标的单击,双击,键盘的键入等。
2. 界面的设计仿照Windows附件里面的计算器,在资源视图中画好界面,如图:主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。
拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。
3. 建立的变量,控件的命名,对应的消息处理函数对应表ID CAPTION Message Handler简易计算器 1.0 Beta1版 IDD_CALC_DIALOG N/A IDC_NUM0 0 OnNum0IDC_NUM1 1 OnNum1IDC_NUM2 2 OnNum2IDC_NUM3 3 OnNum3IDC_NUM4 4 OnNum4IDC_NUM5 5 OnNum5IDC_NUM6 6 OnNum6IDC_NUM7 7 OnNum7IDC_NUM8 8 OnNum8IDC_NUM9 9 OnNum9IDC_NEG +/- OnNegIDC_PT . OnPtIDC_DIV / OnDivIDC_MUL * OnMulIDC_MIN - OnMinIDC_ADD + OnAddIDC_BACKSPACE BACK OnBackspaceIDC_CE CE OnCeIDC_CLEAR C OnClearIDC_EQU = OnEquIDC_DIS N/A N/AOnCal(double num) 变量定义:double poz; //保存小数点的位置,初始化为1,表示poz-1个小数点。
mfc设计科学计算器课程设计
mfc设计科学计算器课程设计一、课程目标知识目标:1. 让学生掌握MFC(Microsoft Foundation Classes)的基本概念和原理,理解其在设计科学计算器中的应用。
2. 使学生了解科学计算器的基本功能,如标准运算、三角函数、对数等,并运用MFC实现这些功能。
3. 帮助学生掌握Visual C++编程环境中MFC的使用方法,培养其运用MFC 进行软件开发的能力。
技能目标:1. 培养学生运用MFC设计界面、处理用户输入和输出结果的能力。
2. 让学生学会使用MFC中的事件处理机制,实现科学计算器的功能按键响应。
3. 提高学生的问题分析能力,使其能够根据实际需求设计合理的MFC程序结构。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养其主动学习和探究的精神。
2. 培养学生的团队协作意识,使其在编程实践中学会与他人分享和交流。
3. 引导学生认识到科技发展对社会进步的重要性,激发其创新精神和责任感。
课程性质:本课程为实践性较强的课程,结合理论讲解和实际操作,帮助学生掌握MFC设计科学计算器的技能。
学生特点:学生具备一定的C++编程基础,对MFC有一定了解,但实际应用能力较弱。
教学要求:结合学生特点,注重理论与实践相结合,强调动手实践,提高学生的实际编程能力。
在教学过程中,将目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. MFC基础回顾:重温MFC的基本概念、框架结构和主要类的功能,重点掌握CWnd、CDialog、CString等类的使用方法。
相关教材章节:第一章 MFC概述,第二章 MFC类和对象。
2. 科学计算器功能设计:介绍科学计算器的基本功能,如标准运算、三角函数、对数等,并分析如何利用MFC实现这些功能。
相关教材章节:第三章 MFC控件编程,第四章 MFC绘图与界面设计。
3. 界面设计与实现:讲解如何使用MFC设计科学计算器的界面,包括窗口、菜单、按钮等控件的使用方法。
MFC计算器课设报告
(3)二进制
void CJisuanqiDlg::OnBtnerjinzhi() { char m_radix[16]={'0','1','2','3','4','5','6','7','8','9'};
CString s; m_base=2; int pos=0; long j,number=0; if(m_length==0) return; UpdateData(); number=atoi(m_s); j=number%m_base; while((number=number/m_base)!=0) { s.Insert(pos,m_radix[j]); pos++; j=number%m_base; } s.Insert(pos,m_radix[j]); s.MakeReverse(); SetDlgItemText(IDC_EDIT2,s的 问 题 及 解 决 情 况
编译错误: 1.简单编译语法错误,经过认真核对将语法修改正确。 2.编写代码过程中未声明
修改:请教同学、翻阅课本改正,对未声明部分进行声明。
五、系 统 运 行 报 告(测 试 的 结 果)
(1)加法
(2)减法
(3)乘法
(4)除法
(5)二进制
(4)其他
A 平方 void CJisuanqiDlg::OnBtnpingfang() { char c[100]; double res; UpdateData(); res=atof(m_s); res=res*res; gcvt(res,6,c); SetDlgItemText(IDC_EDIT2,c); } B:开方 void CJisuanqiDlg::OnBtnsqrt() { char c[100]; double res; UpdateData(); res=atof(m_s); res=sqrt(res); gcvt(res,6,c); SetDlgItemText(IDC_EDIT2,c); } C:阶乘 void CJisuanqiDlg::OnBtnjiecheng() { int n; char cr[100]; UpdateData(); n=atoi(m_s); int i=n-1; for(;i>=1;i--) { n=n*i; } gcvt(n,6,cr); SetDlgItemText(IDC_EDIT2,cr);
C语言课程设计报告【简易计算器设计】
med = i;
break;
}
if(i == 0) med = 1;
return med;
}
void turnSym(HIGH *a) //变号
{
a -> num[0] = a -> num[0] == 0 ? -1 : 0;
}
void decMed(HIGH *a) //减去一位
{
int i, med = getMed(*a);
附源程序清单:
1Calc.h(运算函数集头文件)
#include<stdio.h>
#include<string>
#include<string.h>
#define HIGH struct high
#define MAXN 5000
#define MAXSHOW 40
#define key_num 0
10~9的数字输入功能(小数点除外)
2实现加、减、乘、整除、取模、阶乘、位运算左移、x的y次方、与、异或、x立方、x平方运算功能,二进制、八进制、十进制、十六进制转换功能,正负转换功能,退格、归零等功能。
3数字显示最多为40位,超过即用科学表示法表示(例如1E50)。
4运算时因最高能对5000位的数字进行运算,故所有功能建立在自行编写代码的高精度运算基础上。
}
void initNum(HIGH *numb) //初始化
{
int i;
HIGH tmp;
memset(tmp.num, 0, sizeof(tmp.num));
*numb = tmp;
}
int absCmp(HIGH a, HIGH b) //比较绝对值大小
mfc计算器的设计报告
MFC计算器课程设计题目: MFC计算器设计学院:计算机学院姓名:学号:指导教师:2015年5月20日目录1概述 (3)1.1课程设计目的 (3)1.2课程设计内容 (3)2系统需求分析 (4)2.1系统目标 (4)2.2主体功能 (4)2.3开发环境 (4)3系统概要设计 (4)3.1系统功能划 (4)4系统详细设计 (7)4.1 设计步骤 (7)4.2 界面设计 (9)5测试 (11)5.1 测试方案 (11)5.2 测试结果 (12)6小结 (14)参考文献 (14)附录 (15)附录1源程序清单 (15)计算器的设计1概述1.1 课程设计目的1、巩固并加深学生对C++语言程序设计知识的理解;2、培养学生面向对象的程序设计思想,使学生认识面向过程和面向对象两种设计方法的区别;3、进一步掌握和应用VC++ 6.0集成开发环境;4、提高运用C++语言解决实际问题的能力;5、初步掌握开发小型实用软件的基本方法,能独立设计、实现基本的MIS系统;6、掌握书写程序设计开发文档的能力(书写课程设计实验报告)。
1.2 课程设计内容课题名称:计算器的实现说明:实现一个计算器。
要求:用“计算器”的标准视图执行简单的计算。
32系统需求分析2.1 系统目标我们在学习生活中,常会遇到一些繁杂的数值运算,这时候我们就必须用到科学计算器,所以便着手开发了这个计算器程序,以便用于自己的学习工作。
要计算功能有以下几个方面:加法,减法,乘法,除法,乘方。
2.2 主体功能十进制数的加、减、乘、除、乘方简单计算。
2.3 开发环境W indows操作系统,VC++ 6.0, OFFICE WORD3 系统概要设计3.1 系统功能划表3-1 系统功能表1)假设执行操作“+”,先输入一个数,再输入“+”,再输入另一个数,最后输入“+”。
整个功能“+”就执行完毕。
4四则代码如下void CCALDlg::OnButtonequal(){// TODO: Add your control notification handler code here UpdateData(TRUE);num2 =m_str;if(num2==0&&ope==3){m_str1="除数不能为零";m_str =0;num1 = 0;num2 = 0;UpdateData(FALSE);}else{// int f = 0;switch (ope){//加case 0:m_str = num1 + num2;break;//减case 1:m_str = num1 - num2;break;5case 2:m_str = num1 * num2;break;case 3:m_str = num1 / num2;break;case 4:m_str = num1 * num1;}UpdateData(FALSE);}64系统详细设计4.1 设计步骤打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名yeyahui及其所在位置,点击确定,如图4-1所示。
MFC实训_计算器
面向对象程序设计实训报告——简易计算器专业:电子信息工程学生姓名:唐伯虎学号: 9527指导教师:小行星2016年1月7 日1 总体设计1.1 设计任务使用Visual C++6.0 MFC编写一个计算器。
1.2 基本要求(1)按照题目要求独立设计计算器所需的所有按钮,并完成程序源码编写、调试及关键代码注释。
(40分)(2)能够实现+、-、*、/计算。
(10分)(3)能够实现对数及幂函数计算。
(15分)(4)能够实现三角函数及反三角函数计算。
(15分)1.3 发挥部分能够实现8,16,10,2进制之间相互转换。
(20分)2 方案设计2.1 需求性分析所谓计算器,就是要进行数值运算,提供1-9数字按键,让用户按下不同的数字键,可以是组合输入,然后再按下运算符按键实现两个或者多个数值的计算,因此在计算器中除了需要定义数字按键之外运算符按键也是必不可少的,但是运算符按键类型众多,实现的功能也是五花八门,有双目运算符,比如+ - * /这些,也有单目运算符,比如x^2,ln,sqrt,所针对的数字个数也不一样,因此在设计计算器之前需要明确好该计算器大致要实现怎样的功能,需要定义多少个按键,而不是什么按键都要添加,企图复杂化,这样一来,就会造成很多麻烦。
应该先从四则运算开始,然后逐一增加功能,循序渐进的进行,根据题目的要求,划分好制作的步骤先后顺序。
我在基本的要求基础上希望添加几个功能,分别是清除按键,这是少不了的,作用是初始化数据,清屏,然后是退格按键,在输入错误的情况下能够实现退格再输入;再次是Ans按键,用以保留上一次的运算结果,以备下次运算时需要;最后是圆周率PI,在需要用到圆周运算时不用输入3.1415……这么长的一段数值……但是这都是在完成基本功能的基础上添加的功能。
2.2 可行性分析本设计是简单计算器。
日常计算机使用中,常常涉及到一些有关计算的问题,一个小型的计算器软件变得非常有用,该校型计算器需要空间资源较少,对电脑其他程序的应用影响较小。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件基础课程设计报告一、需求分析系统目标:设计的计算器至少能够进行简单的四则运算和求倒数求反以及开方运算。
主体功能:程序能实现:加,减,乘,除,开方,倒数等运算功能;还要实现数据的输入,输出,计算,显示及程序退出等功能。
另外还可以实现多种科学计算的功能,如:三角函数的计算,弧度与角度间的转换,对数指数的计算等。
开发环境:操作系统:Windows XP编程环境:Microsoft Visual C++ 6.0二、功能说明(1)包含的功能有:加、减、乘、除运算,开方、求倒数、三角函数、弧度与角度间的转换、对数指数的计算等功能。
(2)计算器上数字0—9为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。
(3)给对话框添加菜单。
(4)计算功能基本上是用系统内部函数。
(5)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以0开头等不正常现象。
(6)“CE”按钮可以清除所有已输入的数据从头计算,“Back”按钮可以实现退位功能。
(7)能够显示时间、日期。
三、详细设计(1)流程图(2)编辑资源创建工程(创建一个对话框应用程序)设计对话框界面设置各控件属性为编辑框连接成员变量为类添加数据成员,初始化构造函数。
为所有按钮添加事件对类添加成员函数(更新编辑框)并进行实现实现对各按钮事件的实现(3)效果图四、程序附录计算器Dlg.cpp :#include "stdafx.h"#include "计算器.h"#include "计算器Dlg.h"#include "math.h"#include"FirstDlg.h"#include <windows.h>#define PI 3.14;#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif///////////////////////////////////////////////////////////////////////// ////// CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialog{public:CAboutDlg();// Dialog Data//{{AFX_DATA(CAboutDlg)enum { IDD = IDD_ABOUTBOX };//}}AFX_DATA// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support//}}AFX_VIRTUAL// Implementationprotected://{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)//{{AFX_MSG_MAP(CAboutDlg)// No message handlers//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////// ////// CMyDlg dialogCMyDlg::CMyDlg(CWnd* pParent /*=NULL*/): CDialog(CMyDlg::IDD, pParent){//{{AFX_DATA_INIT(CMyDlg)m_result = 0.0;//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CMyDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CMyDlg)DDX_Control(pDX, IDC_EDIT1, m_EDIT);DDX_Text(pDX, IDC_EDIT1, m_result);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CMyDlg, CDialog)//{{AFX_MSG_MAP(CMyDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_NUM0, OnNum0)ON_BN_CLICKED(IDC_NUM1, OnNum1)ON_BN_CLICKED(IDC_NUM2, OnNum2)ON_BN_CLICKED(IDC_NUM3, OnNum3)ON_BN_CLICKED(IDC_NUM4, OnNum4)ON_BN_CLICKED(IDC_NUM5, OnNum5)ON_BN_CLICKED(IDC_NUM6, OnNum6)ON_BN_CLICKED(IDC_NUM7, OnNum7)ON_BN_CLICKED(IDC_NUM8, OnNum8)ON_BN_CLICKED(IDC_NUM9, OnNum9)ON_BN_CLICKED(IDC_DOT, OnDot)ON_BN_CLICKED(IDC_CE, OnCe)ON_BN_CLICKED(IDC_jia, Onjia)ON_BN_CLICKED(IDC_jian, Onjian)ON_BN_CLICKED(IDC_cheng, Oncheng)ON_BN_CLICKED(IDC_chu, Onchu)ON_BN_CLICKED(IDC_dengyu, Ondengyu)ON_BN_CLICKED(IDC_daoshu, Ondaoshu)ON_BN_CLICKED(IDC_zhengfu, Onzhengfu)ON_BN_CLICKED(IDC_BACKSPACE, OnBackspace) ON_BN_CLICKED(IDC_Ln, OnLn)ON_BN_CLICKED(IDC_log, Onlog)ON_BN_CLICKED(IDC_RADIO2, OnRadio2)ON_BN_CLICKED(IDC_RADIO1, OnRadio1)ON_BN_CLICKED(IDC_sqrt, Onsqrt)ON_BN_CLICKED(IDC_sin, Onsin)ON_BN_CLICKED(IDC_cos, Oncos)ON_BN_CLICKED(IDC_tan, Ontan)ON_BN_CLICKED(IDC_pingfang, Onpingfang)ON_BN_CLICKED(IDC_lifang, Onlifang)ON_BN_CLICKED(IDC_mi, Onmi)ON_BN_CLICKED(IDC_Exp, OnExp)ON_BN_CLICKED(IDC_10demi, On10demi)ON_BN_CLICKED(IDC_jiecheng, Onjiecheng)ON_COMMAND(ID_TIME, OnTime)ON_COMMAND(ID_DATE, OnDate)ON_COMMAND(ID_EXIT, OnExit)ON_COMMAND(ID_HELP, OnHelp)//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////// ////// CMyDlg message handlersBOOL CMyDlg::OnInitDialog(){CDialog::OnInitDialog();// Add "About..." menu item to system menu.// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// Set the icon for this dialog. The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE); // Set big iconSetIcon(m_hIcon, FALSE); // Set small icon// TODO: Add extra initialization hereCheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO1);UpdateData(FALSE);quan2=1;dotflag=0;numflag=0;return TRUE; // return TRUE unless you set the focus to a control}void CMyDlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID, lParam);}}// If you add a minimize button to your dialog, you will need the code below// to draw the icon. For MFC applications using the document/view model,// this is automatically done for you by the framework.void CMyDlg::OnPaint(){if (IsIconic()){CPaintDC dc(this); // device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);// Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// Draw the icondc.DrawIcon(x, y, m_hIcon);}else{CDialog::OnPaint();}}// The system calls this to obtain the cursor to display while the user drags// the minimized window.HCURSOR CMyDlg::OnQueryDragIcon(){return (HCURSOR) m_hIcon;}void CMyDlg::OnNum0(){UpdateData();if(dotflag){quan2*=10;m_result+=0/(double)quan2;}else{if(numflag){m_result=m_result*10+0;}else m_result=0;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnNum1(){UpdateData();if(dotflag){quan2*=10;m_result+=1/(double)quan2;}else{if(numflag){m_result=m_result*10+1;}else m_result=1;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnNum2(){UpdateData();if(dotflag){quan2*=10;m_result+=2/(double)quan2;}else{if(numflag){m_result=m_result*10+2;}else m_result=2;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnNum3(){UpdateData();if(dotflag){quan2*=10;m_result+=3/(double)quan2;}else{if(numflag){m_result=m_result*10+3;}else m_result=3;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnNum4(){UpdateData();if(dotflag){quan2*=10;m_result+=4/(double)quan2;}else{if(numflag){m_result=m_result*10+4;}else m_result=4;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnNum5(){UpdateData();if(dotflag){quan2*=10;m_result+=5/(double)quan2;}else{if(numflag){m_result=m_result*10+5;}else m_result=5;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnNum6(){UpdateData();if(dotflag){quan2*=10;m_result+=6/(double)quan2;}else{if(numflag){m_result=m_result*10+6;}else m_result=6;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnNum7(){UpdateData();if(dotflag)quan2*=10;m_result+=7/(double)quan2;}else{if(numflag){m_result=m_result*10+7;}else m_result=7;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnNum8(){UpdateData();if(dotflag){quan2*=10;m_result+=8/(double)quan2;else{if(numflag){m_result=m_result*10+8;}else m_result=8;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnNum9(){UpdateData();if(dotflag){quan2*=10;m_result+=9/(double)quan2;}else{if(numflag){m_result=m_result*10+9;}else m_result=9;}numflag=1;UpdateData(FALSE);}void CMyDlg::OnDot(){UpdateData();dotflag=1;m_result+=0.0;UpdateData(FALSE);}void CMyDlg::OnCe(){UpdateData();m_EDIT.SetSel(0,-1);m_EDIT.ReplaceSel("");m_result=0;num1=0;num2=0;numflag=0;dotflag=0;quan2=1;UpdateData(FALSE); }void CMyDlg::Onjia() {UpdateData();num1=m_result;cal='+';numflag=0;dotflag=0;quan2=1;}void CMyDlg::Onjian() {UpdateData();num1=m_result;cal='-';numflag=0;dotflag=0;quan2=1;}void CMyDlg::Oncheng() {UpdateData();num1=m_result;cal='*';numflag=0;dotflag=0;quan2=1;}void CMyDlg::Onchu() {UpdateData();num1=m_result;cal='/';numflag=0;dotflag=0;quan2=1;}void CMyDlg::Ondengyu(){UpdateData();num2=m_result;switch(cal){case'+':m_result=num1+num2;break; case'-':m_result=num1-num2;break; case'*':m_result=num1*num2;break; case'/':m_result=num1/num2;break; case'x':m_result=pow(num1,num2);break; }numflag=0;dotflag=0;quan2=1;UpdateData(FALSE);}void CMyDlg::Ondaoshu(){UpdateData();m_result=1/m_result; numflag=0;dotflag=0;quan2=1;UpdateData(FALSE);}void CMyDlg::Onzhengfu() {UpdateData();m_result=0-m_result; UpdateData(FALSE);}void CMyDlg::OnBackspace() {UpdateData();static int dotquan=quan2; long temp;if(dotflag&&numflag){if(dotquan>=10){temp=(long)(m_result*dotquan);m_result=(double)(temp/10);dotquan/=10;m_result=m_result/dotquan;}}else{//UpdateData();if(numflag&&m_result){m_result=(long)m_result/10;}}UpdateData(FALSE);}void CMyDlg::OnLn(){UpdateData();m_result=log(m_result);numflag=0;dotflag=0;quan2=1;UpdateData(FALSE);}void CMyDlg::Onlog(){UpdateData();m_result=log(m_result)/log(10); numflag=0;dotflag=0;quan2=1;UpdateData(FALSE);}void CMyDlg::OnRadio2(){m_IsDegree=1;i=1;UpdateData(TRUE);}void CMyDlg::OnRadio1(){m_IsDegree=0;i=(2*3.1415926)/360;UpdateData(FALSE);}void CMyDlg::Onsqrt(){UpdateData();if(m_result<0){MessageBox("输入无效!");return;}m_result = sqrt(m_result); UpdateData(FALSE);}void CMyDlg::Onsin(){m_result=sin(m_result*i); UpdateData(FALSE);}void CMyDlg::Oncos(){m_result=cos(m_result*i); UpdateData(FALSE);}void CMyDlg::Ontan(){m_result=tan(m_result*i); UpdateData(FALSE);}void CMyDlg::Onpingfang() {UpdateData();m_result=m_result*m_result; UpdateData(FALSE);}void CMyDlg::Onlifang(){UpdateData();m_result=m_result*m_result*m_result; UpdateData(FALSE);}void CMyDlg::Onmi(){UpdateData();num1=m_result;cal='x';numflag=0;dotflag=0;quan2=1;}void CMyDlg::OnExp(){m_result=exp(m_result); UpdateData(FALSE);}void CMyDlg::On10demi(){UpdateData();m_result=pow(10,m_result);}void CMyDlg::Onjiecheng(){if(m_result<0){MessageBox("输入数据无效!");return;}int q;for(q=(int)m_result-1;q>=1;q--) m_result*=q;UpdateData(FALSE);}void CMyDlg::OnDate(){CFirstDlg dlg;dlg.DoModal();}void CMyDlg::OnTime(){TIME=1;CTime tNow;tNow=CTime::GetCurrentTime();if(TIME){m_EDIT.SetSel(0,-1);m_EDIT.ReplaceSel("");CString sNow=tNow.Format("%I:%M:%S");m_EDIT.SetSel(0,-1);m_EDIT.ReplaceSel(sNow);}else{CString sNow=tNow.Format("%I:%M:%S");m_EDIT.SetSel(0,-1);m_EDIT.ReplaceSel(sNow);}}void CMyDlg::OnExit(){OnOK();}void CMyDlg::OnHelp(){MessageBox("班级:09通信一班组员:陈熙竹叶文晖周方"); }。