1、VC+ 6.0系统可以在一张CD盘上,也可以在“Visual Studio( Visual C+、Visual Foxpro)”等产品的第一张CD盘上。一般都有一个VC的自动安装程序,也可以执行VC6目录下的setup.exe,在安装包的提示下进行,对初学者可采用“典型安装”方式。在安装好VC 6.0系统后,有时根据需要添加或删除某些部件,可插入CD盘重新执行setup.exe安装程序,安装程序会检测当前系统安装VC6的足件,用户单击“添加删除”按钮后,在“安装维护”对话框中选定要添加的部件或撤消选定要删除的部件。与一般的应用软件一样,有以下两种启动方式:(1)通过“开始”按钮,选择“程序”菜
2、单,然后打开“Microsoft Visual studio 6.0中文版”子菜单中的“Microsoft Visual C+ 6.0 中文版”程序。(2)用户也可以使用命令行启动VC。单击“开始”按钮后选择“运行”命令,在“运行”对话框中输入c:Program FilesMicrosoft Visual StudioVC98VC6.exe(按默认盘符和路径安装)即可。1.4 可行性及需求分析本设计是简单计算器。日常计算机使用中,常常涉及到一些有关计算的问题,一个小型的计算器软件变得非常有用,该校型计算器需要空间资源较少,对电脑其他程序的应用影响较小。它的设计按软件工程的方法进行,系统具有良好
3、的界面、必要的交互信息和较好的健壮性;醒目美观的软件封面。使用人员能快捷简单地进行操作。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。本软件主要用于计算机windows 2000/XP以上版本的用户的使用,这次课程设计一般是实现简单计算器的功能。要程序能实现:加,减,乘,除,开方,倒数等运算功能;还要实现数据的输入,输出,计算,显示及程序退出等功能。另外还可以实现多种科学计算的功能,如:三角函数的计算,弧度与角度间的转换,对数指数的计算等等。二、程序设计与实现2.1程序结构本计算器首先是通过在计算器的界面上按下相应的按钮,来进行基本的加,减,乘
4、,除等基本运算,计算器还能够进行平方运算,求平方根运算,乘方运算,三角函数运算(包括正弦函数(sin)、余弦函数(cos)、正切函数(tan)、余切函数(cot),对数函数(ln、log),指数函数(exp),幂函数(x)等运算。2.2详细步骤2.2.1程序的流程图2.2.2程序设计具体步骤1)总体功能:整个计算器除了基本的加、减、乘、除运算外,另外还有个功能可以实现七大运算:三角函数运算功能、对数函数运算功能、指数函数运算功能、乘方运算功能、平方运算功能、根式运算功能、归零功能。各个运算功能的详细设计说明分别如下:a、基本运算功能 主要实现数据的加、减、乘、除运算,提供简单的科学计算!b、三
5、角函数运算功能用来执行三角函数的运算,包括正弦函数(sin)、余弦函数(cos)和正切函数(tan) c、对数函数运算功能用来执行对数函数的运算,包括以e为底ln函数和以10为底的lg函数。d、指数函数运算功能用来执行指数函数的运算。e、乘方运算功能用来执行乘方的运算,进行数值的成倍计算。f、平方运算功能用来执行平方运算,说到底它也属于乘方运算的范畴。g、根式运算功能用来执行根式的运算。h.归零、删除功能主要实现数据的清零,当用户输入数据出错时,使用此功能可以清除已输入的内容并重新输入新的运算内容。具体程序如下:double operate(double y, char c, double x
6、) /对两个数计算 (含是双目运算符:如 *, / 等等) double r; if(c = -) r = x - y; else if(c = + r = x + y;/ & y != 0) r = x / y;* r = x * y; r = 1; for(int i = 1; i = y; i+) r *= x; % int r0 = (int)x % (int)y; r = double(r0); return r;double operate_one(double one, char cc) /对一个数运算(含单目运算符:如log(L), sin(S) 等等) if(cc = Q r
7、 = sqrt(one); else if(cc = C r = cos(one);S r = sin(one);T r = tan(one);c r = acos(one);s r = asin(one);t r = atan(one);double operate_L(double a, double b, char dian)/求对数的值 double r = log(b) / log(a);2)运算符的比较等级typedef struct node /为了处理符号而建立的链表(如: 1+(-2) char data; node *next;node;typedef struct sta
8、ck_num /存储 数 的栈 double *top; double *base;stack_num;typedef struct stack_char /存储 运算符号 的栈 char *top; char *base;stack_char;stack_num S_num;/定义stack_char S_char;char fu18 = n, )L(;int compare1000; /表现出各运算符号的优先级double shu1000;/存储 数 的数组double dai_result;/运算的结果,是为了处理 M 运算(简介函数里有M的定义)int biao = 0;/和dia_r
9、esult 一样,为了处理 M 运算char lineSIZE;/输入的所要计算的表达式void init()/初始化 comparefu0 = -2;/用数字的大小表现出符号的优先级 comparefu1 = -1; comparefu2 = 2; comparefu3 = 2; comparefu4 = 4; comparefu5 = 4; comparefu6 = 4; comparefu7 = 5; for(int i = 8;= 15; comparefui = 6; comparefu16 = 7; S_num.base = (double*)malloc(sizeof(doubl
10、e)*SIZE);/为栈开辟空间 S_char.base = (char*)malloc(sizeof(char)*SIZE);/同上 S_num.top = S_num.base; S_char.top = S_char.base;void push_num(double n)/数字进栈 * +S_num.top = n;void push_char(char c)/运算符号进栈 * +S_char.top = c;double pop_num()/数字出栈 double m = *S_num.top; S_num.top-; return m;char pop_char()/运算符号出栈
11、char cc = *S_char.top; S_char.top-; return cc;char get_top_char()/得到运算符号的栈中最顶端的运算符号 return *S_char.top;3)整个表达式具体运算程序:double compute() /对整个表达式的计算 char c; /表示运算符号 int p = 0;/用于shu+p, 先初始化 int i, j; init();/进行初始化 push_char(); linestrlen(line) = ; linestrlen(line)+1 = 0 if(biao) push_num(dai_result);/把运
12、算的结果先进栈, 在这个结果的基础上继续进行运算 biao = 0; for(i = 0; linei != )/把表达式中的数字字符串转化成可计算的数字 int flag = 0; int flag1 = 1;/标记是否是运算符号 / int flag2 = 1;/标记是否出现_ double h = 0; int ge;/位数 int biao_dian = 0;/是否是小数的类型 while(1) flag1 = 1; for(j = 0; j = 16; j+) if(linei = fuj) flag1 = 0; break; if(linei = break;. i+; ge =
13、0; biao_dian = 1;P shu+p = pi;E shu+p = e; if(flag1) h = h * 10 + (linei - 0 flag = 1; if(biao_dian) ge+; else if(flag) if(biao_dian) int r = 1; for(int k = 1; k push_num(m); i+; else if(m = -1) c = else if(m = -2) else if(m = -3) else if(m = -4) else if(m = -5) else if(m = -6) else if(m = -7) else
14、if(m = -8) else if(m = -9) else if(m = -10) else if(m = -11) else if(m = -12) else if(m = -13) else if(m = -14) else if(m = -15) else if(m = -16) else if(m = -17) char ch = get_top_char();/得到最顶端运算符号 if(comparech = comparec & ch ! if(ch = | ch = | ch = | ch = double one = pop_num(); char dian = pop_c
15、har(); push_num(operate_one(one, dian); else if(ch = double one_L = pop_num(); double two_L = pop_num(); push_num(operate_L(two_L, one_L, dian); else double x = pop_num(); double y = pop_num(); if(dian = x = 0)/判断是否除了零 cout= 3) else void output(double result)/打出结果 printf(所得结果是: coutresultvoid check()/检查表达式是否合法 void introduce(); char cc;/决定计算器按哪种功能进行计算 double result;/结果 void input(); if( check_kuohao() & check_char() )/看是否合法, 合法则计算 result = compute(); output(result); coutcc) if(cc = system(cls introduce();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1