目录●概要设计说明 (3)●总体设计分析 (3)●小组成员及分工方法....................................3 -4 ●功能模块图 (4)●负责模块的程序设计分析 (5)●负责模快的程序源代码及流程图.....................5-12 ●公共系统使用说明及截图..............................13-16 ●结束语、心得体会 (17)●课程设计结评分表…………………………………18-19一、概要设计说明本组设计的科学计算器具有科学型和标准型两种类型,适合不同需要。
科学型中包含弧度与角度的计算,同时兼具2、8、10、16进制的运算。
在标准型中,编辑菜单(edit)包含复制(copy)、粘贴(paste)。
查看菜单包含标准型(standar)、科学型(scientific)。
帮助菜单中包含关于(about)(内含开发制作者信息)二、总体设计分析(含功能模块图)一.小组成员分工1 科学型角度弧度和进制的调用,由小组成员共同完成2 科学计算器中,x^2,x^3,x^y,1/x,n!,Log按键,及八进制转二进制,八进制转十进制,由**负责。
3科学计算器中,BackSpance、CE、C和运算符号+、-、*、/、.、-/+、=以及标准型计算器由***负责4 科学计算器中,sin,cos,tan,Rnd,Exp,ATn按钮以sin/cos/tan计算时角度和弧度的转换由**负责。
5 科学行计算器中,Copy,Pst,Not,And,Xor,Int,Or,Abe,Exit按钮;将十进制转化为二进制,制转化为十进制,将二进制转化为八进制由**负责。
6 标准型菜单部分(查看菜单标准型(standar)、科学型(scientific)。
帮助菜单中包含关于(about)(内含开发制作者信息))及标准型和科学型的数字键和科学型的16进制转换由李诗瑶负责。
二、功能模块图三、负责模块的程序设计分析1. sin 、cos 、tan 、ATn 按钮分别求某个数值/角度/弧度的正弦、余弦、正切、反正切值。
2.Exp 、Rnd 按钮分别返回e 的x 次幂和取[0,999999999)之间的随机数,而mod 保证了随机数是整数。
3.角度、弧度按钮统计框 数据的处理保存 调出 清除基本运算进制之间的转换科学计算器特殊功能 平均值标准误差求和 + - * \科学计数法三角函数的运算阶乘 倒数 乘方 对数函数角度弧度梯度指数计算sin、cos、tan、ATn时进行转换。
四、自己负责模块的程序源代码(1)Sin、Cos、Tan、Rnd、Exp、Atn按钮程序代码Sin:Private Sub m_Btn_sin_Click()If IsJd Thenm_Tb_Out.Text = str(Sin((V al(m_Tb_Out.Text) / 180) * PI)) '由于sin只能进行对弧度的运算,所以在进行sin的运算时,如果是角度需要转换为弧度后进行sin运算。
Elsem_Tb_Out.Text = str(Sin(Val(m_Tb_Out.Text)))End IfIf Left(m_Tb_Out.Text, 2) = " ." Thenm_Tb_Out.Text = "0" + Right(m_Tb_Out.Text, Len(m_Tb_Out.Text) - 1)ElseIf Left(m_Tb_Out.Text, 2) = "-." Thenm_Tb_Out.Text = "-0" + Right(m_Tb_Out.Text, Len(m_Tb_Out.Text) - 1)End IfIsShowEd = TrueLastGame = "sin"IsLastOut = FalseEnd SubCos:Private Sub m_Btn_Cos_Click()If IsJd Thenm_Tb_Out.Text = str(Cos((Val(m_Tb_Out.Text) / 180) * PI)) '由于cos只能进行对弧度的运算,所以在进行cos的运算时,如果是角度需要转换为弧度后进行cos运算。
Elsem_Tb_Out.Text = str(Cos(V al(m_Tb_Out.Text)))End IfIf Left(m_Tb_Out.Text, 2) = " ." Thenm_Tb_Out.Text = "0" + Right(m_Tb_Out.Text, Len(m_Tb_Out.Text) - 1)ElseIf Left(m_Tb_Out.Text, 2) = "-." Thenm_Tb_Out.Text = "-0" + Right(m_Tb_Out.Text, Len(m_Tb_Out.Text) - 1)End IfIsShowEd = TrueLastGame = "cos"IsLastOut = FalseEnd SubTan:Private Sub m_Btn_tan_Click()If IsJd Thenm_Tb_Out.Text = str(Tan((Val(m_Tb_Out.Text) / 180) * PI)) '由于tan只能进行对弧度的运算,所以在进行tan的运算时,如果是角度需要转换为弧度后进行tan运算。
Elsem_Tb_Out.Text = str(Tan((V al(m_Tb_Out.Text) / 180) * PI)) End IfIf Left(m_Tb_Out.Text, 2) = " ." Thenm_Tb_Out.Text = "0" + Right(m_Tb_Out.Text, Len(m_Tb_Out.Text) - 1)ElseIf Left(m_Tb_Out.Text, 2) = "-." Thenm_Tb_Out.Text = "-0" + Right(m_Tb_Out.Text, Len(m_Tb_Out.Text) - 1)End IfIsShowEd = TrueLastGame = "tan"IsLastOut = FalseEnd SubRnd:Private Sub m_Btn_rnd_Click()OutptNum Rnd * 1000000000 Mod 1000000000 '取[0,999999999)之间的随机数,而mod保证了随机数是整数IsShowEd = TrueLastGame = "rnd"IsLastOut = FalseEnd SubExp:Private Sub m_Btn_exp_Click() '返回e的x次幂的值OutptNum Exp(InptNum)IsShowEd = TrueLastGame = "exp"IsLastOut = FalseEnd SubAtn:Private Sub m_Btn_Atan_Click() '返回一个数的反正切值If IsJd Thenm_Tb_Out.Text = str(Atn((V al(m_Tb_Out.Text) / 180) * PI))Elsem_Tb_Out.Text = str(Atn(Val(m_Tb_Out.Text)))End IfIf Left(m_Tb_Out.Text, 2) = " ." Thenm_Tb_Out.Text = "0" + Right(m_Tb_Out.Text, Len(m_Tb_Out.Text) - 1)ElseIf Left(m_Tb_Out.Text, 2) = "-." Thenm_Tb_Out.Text = "-0" + Right(m_Tb_Out.Text, Len(m_Tb_Out.Text) - 1)End IfIsShowEd = TrueLastGame = "atan"IsLastOut = FalseEnd Sub(2)角度、弧度按钮程序代码角度:Private Sub m_RoBtn_Jd_Click(Index As Integer)If Index = 1 ThenIsJd = FalseElseIsJd = TrueEnd IfEnd Sub弧度:Private Sub m_RoBtn_Jd_Click(Index As Integer)If Index = 1 ThenIsJd = FalseElseIsJd = TrueEnd IfEnd Sub五、sin、cos、tan、Atn流程图1.sin:开始IsJdm_Tb_Out.Text = str(Sin((Val(m_Tb_Out. Text) / 180) * PI))m_Tb_Out.Text =str(Sin(Val(m_Tb_Out.Text)))开始Left(m_Tb_Out.Text, 2) = " ."m_Tb_Out.Text = "0" +Right(m_Tb_Out.Text, Len(m_Tb_Out.Text) - 1)Left(m_Tb_Out.Text, 2) = "-."m_Tb_Out.Text = "-0" + Right(m_Tb_Out.Text,Len(m_Tb_Out.Text) - 1)2、cos:开始IsJdm_Tb_Out.Text = str(Cos((Val(m_Tb_Out. Text) / 180) * PI))m_Tb_Out.Text =str(Cos(Val(m_Tb_Out.Text)))开始Left(m_Tb_Out.Text, 2) = " ."m_Tb_Out.Text = "0" +Right(m_Tb_Out.Text, Len(m_Tb_Out.Text) - 1)Left(m_Tb_Out.Text, 2) = "-."m_Tb_Out.Text = "-0" + Right(m_Tb_Out.Text,Len(m_Tb_Out.Text) - 1)3、tan:开始IsJdm_Tb_Out.Text = str(Tan((Val(m_Tb_Out. Text) / 180) * PI))m_Tb_Out.Text =str(Tan((Val(m_Tb_Out.Text) / 180) * 开始Left(m_Tb_Out.Text, 2) = " ."m_Tb_Out.Text = "0" +Right(m_Tb_Out.Text, Len(m_Tb_Out.Text) - 1)Left(m_Tb_Out.Text, 2) = "-."m_Tb_Out.Text = "-0" + Right(m_Tb_Out.Text,Len(m_Tb_Out.Text) - 1)4.Atn:六、公共系统使用说明及截图开始IsJdm_Tb_Out.Text = str(Atn((Val(m_Tb_Out.Text) / 180) * PI)) m_Tb_Out.Text = str(Atn(Val(m_Tb_O ut.Text)))开始Left(m_Tb_Out.T ext, 2) = " ."Left(m_Tb_Out.Te xt, 2) = "-."m_Tb_Out.Text = "-0" +Right(m_Tb_Out.Text, Len(m_Tb_Out.Text) - 1)m_Tb_Out.Text = "0" + Right(m_Tb_Out.Text, Len(m_Tb_Out.Text) - 1)一、进制调用Private Sub m_Rdo_Jz_Click(Index As Integer) '对于二进制、八进制、十进制以及十六进制之间的相互转换创建控件数组If Index = 0 Then '当选择hex时,即选择了option button的index=0,把文本框里面的数转化为十六进制数If LstChk = 1 Then '运用选择语句,把所有的进制数(除十六进制本身)全部转化为十六进制数ElseIf LstChk = 2 Thenm_Tb_Out.Text = DEC_to_HEX(Int(Val(m_Tb_Out.Text)))m_Tb_Out.Text = OCT_to_HEX(m_Tb_Out.Text)ElseIf LstChk = 3 Thenm_Tb_Out.Text = BIN_to_HEX(m_Tb_Out.Text)End IfElseIf Index = 1 Then '当选择1时,所有进制转化为十进制If LstChk = 0 Thenm_Tb_Out.Text = IIf(HEX_to_DEC(m_Tb_Out.Text) = 0, "", HEX_to_DEC(m_Tb_Out.Text))ElseIf LstChk = 2 Thenm_Tb_Out.Text = IIf(OCT_to_DEC(m_Tb_Out.Text) = 0, "", OCT_to_DEC(m_Tb_Out.Text))ElseIf LstChk = 3 Thenm_Tb_Out.Text = IIf(BIN_to_DEC(m_Tb_Out.Text) = 0, "", BIN_to_DEC(m_Tb_Out.Text))End IfElseIf Index = 2 Then '当选择2时,所有进制转化为八进制If LstChk = 0 Thenm_Tb_Out.Text = HEX_to_OCT(m_Tb_Out.Text)ElseIf LstChk = 1 Thenm_Tb_Out.Text = DEC_to_OCT(Int(Val(m_Tb_Out.Text)))ElseIf LstChk = 3 Thenm_Tb_Out.Text = BIN_to_OCT(m_Tb_Out.Text)End IfElseIf Index = 3 Then '当选择3时,所有进制转化为二进制If LstChk = 0 Thenm_Tb_Out.Text = HEX_to_BIN(m_Tb_Out.Text)ElseIf LstChk = 1 Thenm_Tb_Out.Text = DEC_to_BIN(Int(Val(m_Tb_Out.Text)))ElseIf LstChk = 2 Thenm_Tb_Out.Text = OCT_to_BIN(m_Tb_Out.Text)End IfEnd IfLstChk = IndexEnableNumBtnEnd Sub (二).使用截图.七、结束语、心得体会。