当前位置:文档之家› 计算器设计

计算器设计

昆明理工大学理学院信技专业课程设计报告基于c++builder的表达式计算器及播放器软件设计课程:程序设计班级:信技151学号:201511101105 、201511101127姓名:郭峰、魏兴宇指导教师:张志坚2016年9 月6日目录1引言------------------------------------------------------------------------------- 11.1课题背景-----------------------------------------------------------------21.2课程设计目的-----------------------------------------------------------3 2需求分析-------------------------------------------------------------------------52.2系统功能模块-----------------------------------------------------------52.3设计要求-----------------------------------------------------------------6 3系统实现------------------------------------------------------------------------83.1 对话框界面设计-------------------------------------------------------83.2 数值计算功能的实现-----------------------------------------------10 4程序关键代码及运行结果-------------------------------------------------12 5总结与体会------------------------------------------------------------------15一、引言1.1 课题背景计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。

要实现计算功能,可以用VC++的知识编写程序来解决此问题。

该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。

该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用.在计算器中加入了登录界面,加强计算器你的安全性及保护数据,除此之外,强大的工作压力很容易使人产生疲劳,所以可以加入音乐播放器功能。

1.2 课程设计目的本课程是一门实践性很强的课程,既要熟练掌握相关概念,又要动手编程,还要上机调试运行。

同时,本课程也注重提高学生编写技术文档和技术文档阅读的能力。

学生通过本课程的学习实践,将学习和强化软件开发的能力、文档写作能力、英语阅读能力、软件使用能力等。

为今后计算机编程的学习和工作打下良好、扎实的理论实践基础。

二、需求分析2.1系统功能模块1)输入的符号,数字从左向右显示; 点击“=”输出结果,在输出行显示2)支持加减乘除运算;3)支持“xˆy”的运算;4) 括号“(”“)”的使用;5)支持混合运算;6)计算器的输入方式:支持鼠标点击计算器键输入;7)计算器计算结果的输出方式:在计算器窗口的输出行显示8)算数运算的数据类型:整数和浮点数;9)特殊情况的计算;10)以上所有的运算都是在10进制下进行.1)输入的符号,数字从右向左显示。

先输入“8”再输入“×”点击“=”输出结果,在输出行显示.2)支持加减乘除运算.a.c. 减法计算d.除法运算(特殊情况见10.B)2)支持求次方(x ˆy)运算。

求次方(x ˆy)运算:“ˆ”为次方(x ˆy)在输入行中的显示符号4)“(”“)”的使用。

(括号的使用)要使用“(”“)”的时候,先点击“(”,再输入数字或符号,内容输入完毕以后,点击“)”,完成“(”“)”的所有功能。

例如:2×(2+2)=?5)支持混合运算。

例如:(5+2)×5=?6)计算器的输入方式:只支持鼠标点击计算器键输入;7)计算器计算结果的输出方式:在计算器窗口的输出行显示。

8)算数运算的数据类型:整数和浮点数。

a.输入行最大显示的字符数32位,每个运算符算一位;b.“(”,“)”各占一个字符位;c.输出行最大显示的字符数为32位;d.纯小数显示的最大字符数为小数点后30位,整数及小数点各占一位; 若纯小数为负数,则显示最大字符数为小数点后29位,“-”占一位;e.输入行在未输入任何数字的时候,显示“0”,只占一个字符位;当输入任何数字时。

“0”消失,输入的的数字取代“0”;当输入任何运算符时。

默认之前输入数字“0”;f.点击“=”键后方可显示数字或字母或汉字。

9)特殊情况的运算A.运算结果整数部分超出32位,显示Infinity(无穷大);出现运算异常!B.除数为0的情况,提示用户被除数不能为零!C.在运算时,若结果为纯小数,小数位超过30位,则超出的字符舍弃。

若舍弃超出部位后,结果全为0,则结果为0D.在运算时,若结果的整数位不为0a.总位数在最大字符位内,则直接显示;b.总位数在最大字符位以外,整数部分在最大字符位以内,则只优先显示整数部位,弃掉32位以后的字符E.当用户输入“^0”时,若“^0”之前的算式或数字的值为0,点击“=”后,输出界面显示“底数不能为0”10、以上所有的运算都是在10进制下进行2.2设计要求(1) 了解Windows编程的基础知识,掌握MFC应用程序的基本知识。

(2) 理解需求分析过程,掌握需求分析文档编写。

(3) 理解面向对象程序设计的基本思路和方法。

(4) 掌握用C++builder开发应用程序的一般步骤和方法。

(5) 掌握基于对话框的应用程序的编写,主要包括文本框和按钮等。

(6) 掌握后缀表达式算法。

(7) 掌握C++builder开发工具的使用。

包括资源管理,项目创建,运行调试等。

(8) 完成表达式的计算器应用程序,实现基本的加、减、乘、除等四则运算,且支持包括括号的表达式运算功能。

三、系统实现3.1对话框界面设计3.2数值计算实现例如:2×(2+2)=?四、程序关键代码及运行结果//---------------------------------------------------------------------------登录程序代码:#include <vcl.h>#pragma hdrstop#include "Unit1.h"#include "Unit2.h"#include "Unit3.h"#include "var.h"#include "Unit4.h"//--------------------------------------------------------------------------- #pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;//--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner){}//---------------------------------------------------------------------------void __fastcall TForm1::btnAddUserClick(TObject *Sender) {if(Users::adminLoginSuccess==false){ShowMessage("管理员未登录,请重试!");edtUserName->SetFocus();}else{if(users.count>=users.MaxUser)ShowMessage("用户数已满,不能增加!");elseForm3->Show();}}//--------------------------------------------------------------------------- void __fastcall TForm1::btnCancelClick(TObject *Sender) {Close();}//--------------------------------------------------------------------------- void __fastcall TForm1::btnChangePassClick(TObject *Sender){if(Users::adminLoginSuccess==true)ShowMessage("管理员不能修改密码!");else if(Users::userLoginSuccess==false){ShowMessage("用户未登录,请重试!");edtUserName->SetFocus();}elseForm2->Show();}//--------------------------------------------------------------------------- void __fastcall TForm1::btnOkClick(TObject *Sender){Users::adminLoginSuccess=false;Users::userLoginSuccess=false;lblStatus->Caption="";if(edtUserName->Text==adminName && edtPassword->Text==adminPass){Users::adminLoginSuccess=true;Users::userLoginSuccess=false;lblStatus->Caption="管理员已登录";}elsefor(int i=0;i<users.count;i++){if(edtUserName->Text==er[i].name&& edtPassword->Text==er[i].pass) {Users::userLoginSuccess=true;Users::adminLoginSuccess=false;lblStatus->Caption="用户"+er[i].name+"已登录";users.cur=i;break;}}if(Users::userLoginSuccess==false && Users::adminLoginSuccess==false)ShowMessage("无效的用户名或密码,请重新输入!");else{{if(Users::userLoginSuccess==true){ShowMessage("密码正确,欢迎进入!");Form4->Show();}else if(Users::adminLoginSuccess==true)ShowMessage("管理员已登录。

相关主题