精华内容
下载资源
问答
  • Java课程设计——保存过程的计算器Java 课程设计 报告保存计算过程的计算器设计专业 计算科学与技术(网络技术)学生姓名班学号 1指导教师完成日期保存计算过程的计算器设计目 录1 设计要求 12 总体设计 12.1 ...

    Java课程设计——保存过程的计算器

    Java 课程设计 报告

    保存计算过程的计算器的设计

    专业 计算科学与技术(网络技术)

    学生姓名

    学号 1

    指导教师

    完成日期

    保存计算过程的计算器的设计

    目 录

    1 设计要求 1

    2 总体设计 1

    2.1 CalculatorWindow 类设计2

    2.2 NumberButton 类设计2

    2.3 OperationButton 类设计2

    2.4 HandleDigit 类设计2

    2.5 HandleOperation 类设计2

    2.6 HandleDot 类设计3

    2.7 HandleEquality 类设计3

    2.8 HandleSin 类设计3

    2.9 HandleBack 类设计3

    2.10 HandleClear 类设计3

    2.11 HandlePOrN 类设计3

    3 详细设计3

    3.1CalculatorWindow 类3

    3.2NumberButton 类9

    3.3 OperationButton 类10

    3.4 HandleDigit 类11

    3.5 HandleOperation 类13

    3.6 HandleDot 类16

    3.7 HandlePOrN 类18

    3.8 HandleEquality 类19

    3.9 HandleSin 类22

    3.10 HandleBack 类24

    3.11 HandleClear 类26

    4 代码调试问题28

    5 软件发布28

    6 程序运行效果 28

    7 设计心得 30

    Java 课程设计报告(2014 )

    保存过程的计算器的设计

    1 设计要求

    Windows 2000/XP 系统中的 “计算器”是一个方便实用的计算机工具,但是没

    有提供显示计算过程的功能。本计算器所遵循的计算规则与 Windows 2000/XP 系

    统中的 “计算器”相同,出了具有普通的计算功能外,还具有现实计算过程,保

    存计算过程的功能。

    (1)单击 “计算器”上的数字按钮(0、1、2、3、4、5、6、7、8、9)可以设

    置参与计算的运算数。

    (2)单击 “计算器”上的运算符按钮(+、-、*、/)可以选择运算符号。

    (3)单击 “计算器”上的函数按钮可以显示相应的函数值。

    (4)单击 “计算器”上的 “=”按钮显示计算结果。

    (5)在一个文本框中显示当前的计算过程,在一个文本区中显示以往的计算过

    程和发生计算时的系统时间。

    (6)单击 “保存”按钮可以将文本区中的全部计算过程保存到文件;单击 “复

    制”按钮可以将文本区中选中的文本复制到剪贴板;单击 “清除”按钮可以清楚

    文本区中的全部内容。

    2 总体设计

    在设计计算器时,可以编写 11 个 Java 源文件:

    CalculatorWindow.java、NumberButton.java、OperationButton.java、HandleD

    igit.java、HandleOperation.java、HandleDot.java、HandleEquality.java、H

    andleSin.java、HandleBack.java、HandleClear.java、HandlePOrN.java。

    计算器除了上述的 11 个 Java 源文件给出的类外,还需要 Java 提供的一些重

    要的类,入 JButton、JTextField、JTextArea 和 LinkedList 等。

    CalculatorWindow

    O H H

    N p

    展开全文
  • 简单计算器JAVA课程设计一、课程设计目的本课程设计的目标就是要达到理论与实际应用相结合,提高学生组织数据及编写大型程序的能力,并培养基本的、良好的程序设计技能以及合作能力。设计中要求综合运用所学知识,...

    简单计算器JAVA课程设计

    一、课程设计目的本课程设计的目标就是要达到理论与实际应用相结合,提高学生组织数据及编写大型程序的能力,并培养基本的、良好的程序设计技能以及合作能力。设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的、规模较大的问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握数据结构和算法设计技术,掌握分析、解决实际问题的能力。通过这次设计,要求在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。二、课程设计内容简单计算器题目描述使用JAVA的GUI图形用户界面编程设计并编写一个计算器程序,用户可以通过鼠标或者键盘操作输入参加运算的的数值和运算符,要求能进行加、减、乘、除等混合运算。基本要求(1)实现加、减、乘、除的双目单类别的基础运算;(2)实现加、减、乘、除的多目多类别的混合运算。(3)实现三角函数(SIN,COS,TAN)运算。(4)实现幂运算(XN),方根运算(NX)。实现提示GUI编程COMPONENT的事件响应。三、课程设计过程1需求分析使用JAVA的GUI图形用户界面编程设计并编写一个计算器程序,用户可以通过鼠标或者键盘操作输入参加运算的的数值和运算符,要求能进行加、减、乘、除等混合运算。2概要设计1输入的形式和输入值的范围;从文本域中输入,输入值的范围2147483896471E122)输出的形式;从文本域中输出,字符串的形式输出3程序所能达到的功能;1实现加、减、乘、除的双目单类别的基础运算;2实现加、减、乘、除的多目多类别的混合运算。3实现三角函数(SIN,COS,TAN)运算。4实现幂运算(XN),方根运算(NX)。4测试数据包括正确的输入及其输出结果和含有错误的输入及其输出结果。3详细设计实现概要设计中定义的所有的数据类型,对每个操作给出伪码算法。对主程序和其他模块也都需要写出伪码算法。CLASSCOMPUTERPADEXTENDSFRAMEIMPLEMENTSACTIONLISTENERNUMBERBUTTONNUMBERBUTTONOPERATIONBUTTONOPRATIONBUTTONBUTTON小数点按钮,正负号按钮,退格按钮,求倒数按钮,等号按钮,清零按钮,正弦按钮,余弦按钮,正切按钮PANELPANELJTEXTFIELDRESULTSHOWSTRING运算符号““,““,““,“/“,““,“N“LINKEDLIST链表BOOLEAN是否按下等号FALSEPUBLICCOMPUTERPAD(伪码算法)PUBLICVOIDACTIONPEREDACTIONEVENTE(伪码算法)PUBLICSTATICVOIDMAINSTRINGARGS(伪码算法)4调试分析求三角函数COS90的时候有问题,后来设置了条件限制就可以了5用户使用说明可根据需要进行简单的运算1)/表示除号,进行两个数的相除运算。2N表示开根号,将一个数进行开根号运算。3)表示乘号,进行两个数的相乘运算。4)1/X求一个数的倒数。5)表示减号,进行两个数的相减运算。6)表示加号,进行两个数的相加运算。7退格清除一个字符。8)清零全部清零。9)实现幂运算6附录程序代码IMPORTJAVAAWTIMPORTJAVAAWTEVENTIMPORTJAVAXSWINGIMPORTJAVAXSWINGBORDERIMPORTJAVALANGMATHIMPORTJAVAUTILLINKEDLISTIMPORTJAVATEXTNUMBERATIMPORTORGECLIPSEWBSWINGFOCUSTRAVERSALONARRAYCLASSCOMPUTERPADEXTENDSFRAMEIMPLEMENTSACTIONLISTENERNUMBERBUTTONNUMBERBUTTONOPERATIONBUTTONOPRATIONBUTTONBUTTON小数点按钮,正负号按钮,退格按钮,求倒数按钮,等号按钮,清零按钮,正弦按钮,余弦按钮,正切按钮PANELPANELJTEXTFIELDRESULTSHOWSTRING运算符号““,““,““,“/“,““,“N“LINKEDLIST链表BOOLEAN是否按下等号FALSEPUBLICCOMPUTERPADSUPER“计算器“链表NEWLINKEDLISTNUMBERBUTTONNEWNUMBERBUTTON10FORINTI0I1NUMNUMSUBSTRING0,NUMLENGTH1链表SET0,NUMRESULTSHOWSETTEXTNUMELSE链表REMOVELASTRESULTSHOWSETTEXT“0“ELSEIF链表SIZE3STRINGNUMSTRING链表GETLASTIFNUMLENGTH1NUMNUMSUBSTRING0,NUMLENGTH1链表SET2,NUMRESULTSHOWSETTEXTNUMELSE链表REMOVELASTRESULTSHOWSETTEXT“0“ELSEIFEGETSOURCE正负号按钮IF链表SIZE1STRINGNUMBER1STRING链表GETFIRSTTRYDOUBLEDDOUBLEPARSEDOUBLENUMBER1D1DSTRINGSTRSTRINGVALUEOFD链表SET0,STRRESULTSHOWSETTEXTSTRCATCHEXCEPTIONEEELSEIF链表SIZE3STRINGNUMBER2STRING链表GETLASTTRYDOUBLEDDOUBLEPARSEDOUBLENUMBER2D1DSTRINGSTRSTRINGVALUEOFD链表SET2,STRRESULTSHOWSETTEXTSTRCATCHEXCEPTIONEEELSEIFEGETSOURCE求倒数按钮IF链表SIZE1||链表SIZE2STRINGNUMBER1STRING链表GETFIRSTTRYDOUBLEDDOUBLEPARSEDOUBLENUMBER1D10/DSTRINGSTRSTRINGVALUEOFD链表SET0,STRRESULTSHOWSETTEXTSTRCATCHEXCEPTIONEEELSEIF链表SIZE3STRINGNUMBER2STRING链表GETLASTTRYDOUBLEDDOUBLEPARSEDOUBLENUMBER2D10/DSTRINGSTRSTRINGVALUEOFD链表SET0,STRRESULTSHOWSETTEXTSTRCATCHEXCEPTIONEEELSEIFEGETSOURCE正弦按钮IF链表SIZE1||链表SIZE2STRINGNUMBER1STRING链表GETFIRSTTRYIFDOUBLEPARSEDOUBLENUMBER1/9020RESULTSHOWSETTEXT“0“ELSEDOUBLEDDOUBLEPARSEDOUBLENUMBER1MATHPI/180DMATHSINDSTRINGSTRSTRINGVALUEOFD链表SET0,STRRESULTSHOWSETTEXTSTRCATCHEXCEPTIONEEELSEIF链表SIZE3STRINGNUMBER2STRING链表GETLASTTRYDOUBLEDDOUBLEPARSEDOUBLENUMBER2MATHPI/180DMATHSINDSTRINGSTRSTRINGVALUEOFD链表SET0,STRRESULTSHOWSETTEXTSTRCATCHEXCEPTIONEEELSEIFEGETSOURCE余弦按钮IF链表SIZE1||链表SIZE2STRINGNUMBER1STRING链表GETFIRSTTRYIFDOUBLEPARSEDOUBLENUMBER1/9021RESULTSHOWSETTEXT“0“ELSEDOUBLEDDOUBLEPARSEDOUBLENUMBER1MATHPI/180DMATHCOSDSTRINGSTRSTRINGVALUEOFD链表SET0,STRRESULTSHOWSETTEXTSTRCATCHEXCEPTIONEEELSEIF链表SIZE3STRINGNUMBER2STRING链表GETLASTTRYDOUBLEDDOUBLEPARSEDOUBLENUMBER2MATHPI/180DMATHCOSDSTRINGSTRSTRINGVALUEOFD链表SET0,STRRESULTSHOWSETTEXTSTRCATCHEXCEPTIONEEELSEIFEGETSOURCE正切按钮IF链表SIZE1||链表SIZE2STRINGNUMBER1STRING链表GETFIRSTTRYIFDOUBLEPARSEDOUBLENUMBER1/9021RESULTSHOWSETTEXT“无穷值“ELSEIFDOUBLEPARSEDOUBLENUMBER1/9020RESULTSHOWSETTEXT“0“ELSEDOUBLEDDOUBLEPARSEDOUBLENUMBER1MATHPI/180DMATHTANDSTRINGSTRSTRINGVALUEOFD链表SET0,STRRESULTSHOWSETTEXTSTRCATCHEXCEPTIONEEELSEIF链表SIZE3STRINGNUMBER2STRING链表GETLASTTRYDOUBLEDDOUBLEPARSEDOUBLENUMBER2MATHPI/180DMATHTANDSTRINGSTRSTRINGVALUEOFD链表SET0,STRRESULTSHOWSETTEXTSTRCATCHEXCEPTIONEEELSEIFEGETSOURCE清零按钮是否按下等号FALSERESULTSHOWSETTEXT“0“链表CLEARPUBLICSTATICVOIDMAINSTRINGARGSNEWCOMPUTERPAD7测试结果(1)实现加、减、乘、除的双目单类别的基础运算实现加法运算,比如输入89,结果如截图。170实现减法运算,比如输入129,结果如截图。30实现乘法运算,比如输入69,结果如截图540实现除法运算,比如输入20/4,结果如截图。50(2)实现加、减、乘、除的多目多类别的混合运算。比如输入342,结果如截图。140比如输入20/52,结果如截图。20(3)实现三角函数(SIN,COS,TAN)运算。比如SIN30,COS60,TAN45,结果如图(4)实现幂运算(XN),方根运算(NX)。比如36,29,结果如图。四、课程设计体会在此次的课程设计中,我学掉了教科书上没有的东西。这次课程设计,我按照课程设计的要求,分块实现程序的功能,在实践中遇到很多问题,通过百度,和同学讨论,跟老师交流,最后都克服了。顺利的完成了课程设计。从中我充分理解了JAVA的重要性,更深入的了解程序的编译和调试。通过这个学期学习JAVA的理论知识和课程设计的加深,对更好更好的掌握JAVA有很大的帮助。

    展开全文
  • 1.1 总体设计1.1.1 概述计算器是近代人发明的可以进行数字运算的机器。现代的电子计算器能进行数学运算的手持电子机器,拥有集成电路芯片,但结构比电脑简单得多,可以说是第一代的电子计算机,且功能也较弱,但较为...

    本文为明德扬原创及录用文章,转载请注明出处!

    1.1 总体设计1.1.1 概述

    计算器是近代人发明的可以进行数字运算的机器。现代的电子计算器能进行数学运算的手持电子机器,拥有集成电路芯片,但结构比电脑简单得多,可以说是第一代的电子计算机,且功能也较弱,但较为方便与廉价,可广泛运用于商业交易中,是必备的办公用品之一。除显示计算结果外,还常有溢出指示、错误指示等。计算器电源采用交流转换器或电池。为了节省电能,计算器都采用CMOS工艺制作的大规模集成电路。

    计算器一般由运算器、控制器、存储器、键盘、显示器、电源和一些可选外围设备及电子配件,通过人工或机器设备组成,抵挡计算器的运算器、控制器由数字逻辑电路实现简单的串行运算

    计算器是最早的计算工具,例如:古代印加人利用许多颜色的绳结来计数或者记录历史,还有古希腊人的安提凯希拉装置,中国的算盘等。中国古代最早采用的一种计算工具叫筹策,又被叫做算筹。

    1.1.2 设计目标

    简易计算器支持简单的四则运算(支持负数),在此基础上,添加了连续运算功能。计算器面板如下:

    0c070348236769726ff08700e9df8573.png

    1、 计算器通过矩阵键盘模拟按键输入,并通过数码管显示。

    2、 计算器有“0、1、2、3、4、5、6、7、8、9、+、-、*、/、C、=”共16个按键。

    3、 计算器不支持输入负数,运算结果支持负数但不支持小数。

    4、 运算数1、运算数2以及运算结果最大支持8位。其中,运算数1和运算结果的位数包括符号位“-”。

    5、 运算数1和运算数2的默认值为0.

    6、 计算器支持连续运算,允许在输入运算数2后按下运算符,或者得出运算结果后按下运算符。

    7、 当运算结果溢出时,数码管显示8个F。

    8、 当操作数1或者操作数2的长度溢出时,蜂鸣器会响。

    1.1.3 系统结构框图

    系统结构框图如下所示:

    36d8b71ce3f4d9035653d36c117b341b.png

    图一

    1.1.4模块功能键盘扫描模块实现功能

    1、将外来异步信号打两拍处理,将异步信号同步化。

    2、实现20ms按键消抖功能。

    3、实现矩阵键盘的按键检测功能,并输出有效按键信号。

    工作状态选择模块实现功能

    1、 根据接收的不同的按键信号,判断和决定计算器的工作状态。共有5种状态:输入运算数1(OP_1)、运算符(OPER)、输入运算数2(OP_2)、输出结果(RESULT)、结果错误(ERROR)

    • 运算数1模块实现功能

    1、 当计算器处于运算数1状态下,任何连续输入的数字(不超过8位)都将存放在该模块中,作为运算数1.

    2、 当运算数已经到达8位时,此时无论输入任何数字,运算数1不变。

    3、 当计算器经过一次运算后(按下等号或者在运算数2状态下按下运算符),运算数去存放结果result。

    • 运算符模块实现功能

    1、 保存最新按下的运算符。

    • 运算数2模块实现功能

    1、 当计算器处于运算数2状态下,任何连续输入的数字(不超过8位)都将存放在该模块中,作为运算数2,默认值为0。

    2、 当运算数2已经到达8(包括符号位“-”),此时无论输入任何数字,运算数2不变。

    • 运算单元模块实现功能

    1、 当计算器处于运算数2状态下按下运算符或者在任何状态下按下等号时,该模块根据此时运算数1、运算数2以及运算符的值,进行运算。

    2、 若运算结果溢出,或者长度大于8位(包括符号位“-”)或者除数为0时,输出8个F。

    3、 最多保留运算结果整数部分的8个有效数字,不保留任何小数。

    • 显示对象选择模块实现功能

    1、 该模块的作用是根据当前计算器的工作状态来选择数码管的显示内容。

    • 数码管显示模块实现功能

    1、 该模块的作用是对显示对象选择模块的显示数据输出信号进行数码管显示。

    • 蜂鸣器模块实现功能

    1、 该模块的作用是对各种错误输入或输出进行响铃警告。

    1.1.5顶层信号

    187b71c05bac9c6f5cc9db4cb5e46d4b.png


    1.1.6参考代码

    module  calc_project(    clk     ,    rst_n   ,    key_col ,    key_row ,    seg_sel ,    segment ,    beep        );    parameter   KEY_WID     =   4   ;    parameter   STATE_WID   =   5   ;    parameter   NUM_WID     =   27  ;    parameter   SEG_NUM     =   8   ;    parameter   SEG_WID     =   8   ;    input                       clk         ;    input                       rst_n       ;    input   [KEY_WID-1:0]       key_col     ;    output  [KEY_WID-1:0]       key_row     ;    output  [SEG_NUM-1:0]       seg_sel     ;    output  [SEG_WID-1:0]       segment     ;    output                      beep        ;    wire    [KEY_WID-1:0]       key_num     ;    wire                        key_vld     ;    wire    [KEY_WID-1:0]       key_num_out ;    wire    [KEY_WID-1:0]       key_vld_out ;    wire    [STATE_WID-1:0]     state_c     ;    wire    [NUM_WID-1:0]       op_1        ;    wire                        op_1_err    ;    wire    [KEY_WID-1:0]       oper        ;    wire    [NUM_WID-1:0]       op_2        ;    wire                        op_2_err    ;    wire    [NUM_WID-1:0]       result      ;    wire                        result_err  ;    wire                        result_neg  ;       wire    [SEG_NUM*4-1:0]     display     ;    wire                        display_vld ;    key_scan   key_scan_prj(                            .clk        (clk    )   ,                            .rst_n      (rst_n  )   ,                            .key_col    (key_col)   ,                            .key_row    (key_row)   ,                            .key_out    (key_num)   ,                            .key_vld    (key_vld)                            );    work_state  work_state_prj(                                .clk        (clk        )   ,                                .rst_n      (rst_n      )   ,                                .key_num    (key_num    )   ,                                .key_vld    (key_vld    )   ,                                .result_err (result_err )   ,                                .key_num_out(key_num_out)   ,                                .key_vld_out(key_vld_out)   ,                                .state_c    (state_c    )                                );    op_1    op_1_prj(                        .clk        (clk        )   ,                        .rst_n      (rst_n      )   ,                        .key_num    (key_num_out)   ,                        .key_vld    (key_vld_out)   ,                        .state_c    (state_c    )   ,                        .result     (result     )   ,                        .op_1       (op_1       )   ,                        .op_1_err   (op_1_err   )                    );    oper    oper_prj(                        .clk        (clk        )   ,                        .rst_n      (rst_n      )   ,                        .key_num    (key_num_out)   ,                        .key_vld    (key_vld_out)   ,                        .state_c    (state_c    )   ,                        .oper       (oper       )                    );        op_2    op_2_prj(                        .clk        (clk        )   ,                        .rst_n      (rst_n      )   ,                        .key_num    (key_num_out)   ,                        .key_vld    (key_vld_out)   ,                        .state_c    (state_c    )   ,                        .op_2       (op_2       )   ,                        .op_2_err   (op_2_err   )                    );    result  result_prj(                        .clk        (clk        )   ,                        .rst_n      (rst_n      )   ,                        .key_num    (key_num_out)   ,                        .key_vld    (key_vld_out)   ,                        .state_c    (state_c    )   ,                        .op_1       (op_1       )   ,                        .oper       (oper       )   ,                        .op_2       (op_2       )   ,                        .result     (result     )   ,                        .result_err (result_err )   ,                        .result_neg (result_neg )                    );    display_sel  display_sel_prj(                                .clk        (clk        )   ,                                .rst_n      (rst_n      )   ,                                .state_c    (state_c    )   ,                                .op_1       (op_1       )   ,                                .op_2       (op_2       )   ,                                .result_neg (result_neg )   ,                                .display    (display    )   ,                                .display_vld(display_vld)                                );    segment  segment_prj(                            .rst_n      (rst_n      )   ,                            .clk        (clk        )   ,                            .display    (display    )   ,                            .display_vld(display_vld)   ,                            .seg_sel    (seg_sel    )   ,                            .segment    (segment    )                          );    beep    beep_prj(                        .clk        (clk        )   ,                        .rst_n      (rst_n      )   ,                        .op_1_err   (op_1_err   )   ,                        .op_2_err   (op_2_err   )   ,                        .result_err (result_err )   ,                        .beep       (beep       )                    );endmodule

    1.2 键盘扫描模块设计

    1.2.1接口信号

    ae66c540fa581c92b5ba359f035b8ea3.png


    1.2.2 设计思路

    在前面的案例中已经有矩阵键盘的介绍,所以这里不在过多介绍,详细介绍请看下方链接:

    http://fpgabbs.com/forum.php?mod=viewthread&tid=310


    1.2.3参考代码

    always  @(posedge clk or negedge rst_n)begin    if(rst_n==1'b0)begin        key_col_ff0 <= 4'b1111;        key_col_ff1 <= 4'b1111;    end    else begin        key_col_ff0 <= key_col    ;        key_col_ff1 <= key_col_ff0;    endendalways @(posedge clk or negedge rst_n) begin     if (rst_n==0) begin        shake_cnt <= 0;     end    else if(add_shake_cnt) begin        if(end_shake_cnt)            shake_cnt <= 0;         else            shake_cnt <= shake_cnt+1 ;   endendassign add_shake_cnt = key_col_ff1!=4'hf;assign end_shake_cnt = add_shake_cnt  && shake_cnt == TIME_20MS-1 ;always  @(posedge clk or negedge rst_n)begin    if(rst_n==1'b0)begin        state_c <= CHK_COL;    end    else begin        state_c <= state_n;    endendalways  @(*)begin    case(state_c)        CHK_COL: begin                     if(col2row_start )begin                         state_n = CHK_ROW;                     end                     else begin                         state_n = CHK_COL;                     end                 end        CHK_ROW: begin                     if(row2del_start)begin                         state_n = DELAY;                     end                     else begin                         state_n = CHK_ROW;                     end                 end        DELAY :  begin                     if(del2wait_start)begin                         state_n = WAIT_END;                     end                     else begin                         state_n = DELAY;                     end                 end        WAIT_END: begin                     if(wait2col_start)begin                         state_n = CHK_COL;                     end                     else begin                         state_n = WAIT_END;                     end                  end       default: state_n = CHK_COL;    endcaseendassign col2row_start = state_c==CHK_COL  && end_shake_cnt;assign row2del_start = state_c==CHK_ROW  && row_index==3 && end_row_cnt;assign del2wait_start= state_c==DELAY    && end_row_cnt;assign wait2col_start= state_c==WAIT_END && key_col_ff1==4'hf;always  @(posedge clk or negedge rst_n)begin    if(rst_n==1'b0)begin        key_row <= 4'b0;    end    else if(state_c==CHK_ROW)begin        key_row <= ~(1'b1 << row_index);    end    else begin        key_row <= 4'b0;    endendalways @(posedge clk or negedge rst_n) begin     if (rst_n==0) begin        row_index <= 0;     end    else if(add_row_index) begin        if(end_row_index)            row_index <= 0;         else            row_index <= row_index+1 ;   end   else if(state_c!=CHK_ROW)begin       row_index <= 0;   endendassign add_row_index = state_c==CHK_ROW && end_row_cnt;assign end_row_index = add_row_index  && row_index == 4-1 ;always @(posedge clk or negedge rst_n) begin     if (rst_n==0) begin        row_cnt <= 0;     end    else if(add_row_cnt) begin        if(end_row_cnt)            row_cnt <= 0;         else            row_cnt <= row_cnt+1 ;   endendassign add_row_cnt = state_c==CHK_ROW || state_c==DELAY;assign end_row_cnt = add_row_cnt  && row_cnt == 16-1 ;always  @(posedge clk or negedge rst_n)begin    if(rst_n==1'b0)begin        key_col_get <= 0;    end    else if(state_c==CHK_COL && end_shake_cnt ) begin        if(key_col_ff1==4'b1110)            key_col_get <= 0;        else if(key_col_ff1==4'b1101)            key_col_get <= 1;        else if(key_col_ff1==4'b1011)            key_col_get <= 2;        else             key_col_get <= 3;    endendalways  @(posedge clk or negedge rst_n)begin    if(rst_n==1'b0)begin        key_out <= 0;    end    else if(state_c==CHK_ROW && end_row_cnt)begin        key_out <= {row_index,key_col_get};    end    else begin        key_out <= 0;    endendalways  @(posedge clk or negedge rst_n)begin    if(rst_n==1'b0)begin        key_vld <= 1'b0;    end    else if(state_c==CHK_ROW && end_row_cnt && key_col_ff1[key_col_get]==1'b0)begin        key_vld <= 1'b1;    end    else begin        key_vld <= 1'b0;    endend

    1.3 工作状态选择模块设计

    1.3.1接口信号

    2fa890f282bb65de39f34f047dca5c52.png


    1.3.2设计思路

    该模块的主要功能是根据按下的按键进行不同来判断和决定计算器的工作状态。一条等式可以写成:运算数1+操作符+运算数2+等号+结果的形式。考虑到结果错误的情况,我将本模块的状态划分为5个,分别是:输入运算数1(OP_1)、运算符(OPER)、输入运算数2(OP_2)、输出结果(RESULT)、结果错误(ERROR)。

    下图为本模块的状态跳转图:

    3d3e65a97aa51cfe2fb8f433c1d9e720.png

    复位后,状态机进入OP_1状态,即初始状态为OP_1;

    在OP_1状态下:

    A. 按下等号,跳到RESULT状态;

    B. 按下运算符,跳到OPER状态;

    在OPER状态下:

    A. 按下数字,跳到OP_2状态;

    B. 按下等号,跳到RESULT状态;

    在OP_2状态下:

    A. 按下等号,跳到RESULT状态;

    B. 按下运算符,跳到OPER状态;

    在RESULT状态下:

    A. 按下数字,跳到OP_1状态;

    B. 按下运算符,跳到OPER状态;

    C. 按下等号,停留在RESULT状态;

    在ERROR状态下:

    A. 按下数字,跳到OP_1状态;

    B. 按下其他按键,停留在ERROR状态;

    无论当前处于什么状态,只要检测到运算结果错误指示信号有效,即可跳转到ERROR状态。

    1.3.3参考代码

    使用GVIM,在命令模式下输入如下内容,即可生成本模块所需要的状态机代码。

    d5d50f137fd4a66f3f410dfc91b97588.png

    使用明德扬的状态机模板,可以很快速的写出此模块代码。

    always  @(*)begin    case(key_num)        4'd0   :key_num_chg = 4'd7   ;        4'd1   :key_num_chg = 4'd8   ;        4'd2   :key_num_chg = 4'd9   ;        4'd3   :key_num_chg = 4'd10  ;        4'd7   :key_num_chg = 4'd11  ;        4'd8   :key_num_chg = 4'd1   ;        4'd9   :key_num_chg = 4'd2   ;        4'd10  :key_num_chg = 4'd3   ;        4'd11  :key_num_chg = 4'd14  ;        4'd12  :key_num_chg = 4'd0   ;        4'd13  :key_num_chg = 4'd12  ;        4'd14  :key_num_chg = 4'd13  ;        default:key_num_chg = key_num;    endcaseendassign  key_num_en = (key_num_chg==0 || key_num_chg==1 || key_num_chg==2 || key_num_chg==3 || key_num_chg==4 || key_num_chg==5 || key_num_chg==6 || key_num_chg==7 || key_num_chg==8 || key_num_chg==9) && key_vld==1;assign  key_op_en = (key_num_chg==10 || key_num_chg==11 || key_num_chg==12 || key_num_chg==13) && key_vld==1;assign  key_cal_en = key_num_chg==15 && key_vld==1; assign  key_back_en = key_num_chg==14 && key_vld==1;always @(posedge clk or negedge rst_n) begin     if (rst_n==0) begin        state_c <= OP_1 ;    end    else begin        state_c <= state_n;   endendalways @(*) begin    if(result_err)begin       state_n = ERROR;   end    else begin       case(state_c)          OP_1 :begin            if(op_12oper_start)                 state_n = OPER ;            else if(op_12result_start)                 state_n = RESULT ;            else                 state_n = state_c ;        end        OPER :begin            if(oper2op_2_start)                 state_n = OP_2 ;            else if(oper2result_start)                 state_n = RESULT ;            else                 state_n = state_c ;        end        OP_2 :begin            if(op_22oper_start)                state_n = OPER ;            else if(op_22result_start)                 state_n = RESULT ;            else                 state_n = state_c ;        end        RESULT :begin            if(result2op_1_start)                 state_n = OP_1 ;            else if(result2oper_start)                 state_n = OPER ;            else                 state_n = state_c ;        end        ERROR :begin            if(error2op_1_start)                 state_n = OP_1 ;            else                 state_n = state_c ;        end        default : state_n = OP_1 ;    endcaseendendassign op_12oper_start   = state_c==OP_1   && key_op_en ;assign op_12result_start = state_c==OP_1   && key_cal_en;assign oper2op_2_start   = state_c==OPER   && key_num_en;assign oper2result_start = state_c==OPER   && key_cal_en;assign op_22oper_start   = state_c==OP_2   && key_op_en ;assign op_22result_start = state_c==OP_2   && key_cal_en;assign result2op_1_start = state_c==RESULT && key_num_en;assign result2oper_start = state_c==RESULT && key_op_en ;assign error2op_1_start  = state_c==ERROR  && key_num_en;always  @(posedge clk or negedge rst_n)begin    if(rst_n==1'b0)begin        key_num_out <= 0;    end    else begin        key_num_out <= key_num_chg;    endendalways  @(posedge clk or negedge rst_n)begin    if(rst_n==1'b0)begin        key_vld_out <= 0;    end    else begin        key_vld_out <= key_vld;    endend

    1.4 运算数1模块设计

    1.4.1接口信号

    b0d2db03337b89385105fd8fff102678.png

    1.4.2设计思路

    该模块主要的作用是根据当前状态和输入的按键,来决定运算数1要输出的结果。由于本工程需要实现连续运算的功能,所以在这个模块中要区分是否已经得出了运算结果。

    下面是计算完成指示信号flag_calc的设计思路:

    1、 该信号为高时,表示完成一次计算过程得到了结果。初始状态为低电平;

    2、 当输入操作数2后又按下了等号或者其他操作符的时候,变为高电平,所以变高的条件为(state_c_ff==OP_2 && state_c==OPER) || state_c==RESULT;

    3、 当处在操作数1状态时,为低电平,所以变低的条件为state_c==OP_1。其他情况保持不变。

    下面是运算数1输出信号op_1的设计思路:

    1、 该信号表示运算数1要输出的值。初始状态为0;

    2、 在结果错误状态的时候,给一个不超过范围的任意值,此代码中给的10;

    3、 在得到计算结果或者计算结果错误的时候,输入数字,输出为按下按键的对应值(key_num_out);

    4、 在输入操作数1之后,按下退格键,op_1输出的值除以10进行取整;

    5、 在输入操作数1状态下通过键盘输入数字,需要判断是否超过显示范围,如果没有超过的话就需要将当前op_1的值乘以10,然后加上按下的数字的值,进行输出;

    6、 当计算完成时,即flag_calc==1,操作数1输出计算的结果result;

    7、 其他时候操作数1保持不变。

    下面是运算数1溢出信号op_1_err的设计思路:

    1、 初始状态为0,表示没有溢出。

    2、 当一直处于操作数1状态,按下键盘输入数字之后,操作数1的值溢出了,则将运算数1溢出信号拉高。

    3、 其他时刻保持为低电平。

    assign  key_num_en = (key_num==0 || key_num==1 || key_num==2 || key_num==3 || key_num==4 || key_num==5 || key_num==6 || key_num==7 || key_num==8 || key_num==9) && key_vld==1;assign  key_op_en = (key_num==10 || key_num==11 || key_num==12 || key_num==13) && key_vld==1;assign  key_cal_en = key_num==15 && key_vld==1; assign  key_back_en = key_num==14 && key_vld==1;always  @(posedge clk or negedge rst_n)begin    if(rst_n==1'b0)begin        state_c_ff <= 0;    end    else begin        state_c_ff <= state_c;    endendalways  @(posedge clk or negedge rst_n)begin    if(rst_n==1'b0)begin        op_2 <= 0;    end    else if(state_c==OPER)begin        op_2 <= 0;    end    else if(state_c_ff==OPER && state_c==OP_2)begin        op_2 <= key_num;    end    else if(state_c==OP_2 && key_back_en==1)begin        op_2 <= op_2 / 10;    end    else if(state_c==OP_2 && key_num_en==1)begin        op_2 <= (op_2>9999999) ? op_2 : (op_2*10+key_num);    end    else begin        op_2 <= op_2;    endendalways  @(posedge clk or negedge rst_n)begin    if(rst_n==1'b0)begin        op_2_err <= 0;    end    else if(state_c==OP_2 && key_num_en==1 && op_2>9999999)begin        op_2_err <= 1'b1;    end    else begin        op_2_err <= 1'b0;    endendendmodule

    1.4.3参考代码1.5 运算符模块设计

    1.5.1接口信号

    f41062477150152f9b99b56aa0902567.png


    1.5.2设计思路

    本模块的设计思路比较简单,只需要判断哪些按键是运算符,然后在这些运算符被按下的时候,将他们对应的值输出就可以了。

    下面是运算符指示信号设计思路:

    1、 当“加”“减”“乘”“除”四个按键的任意一个被按下之后,该信号置为高电平;

    2、 当“加”“减”“乘”“除”四个按键没有一个被按下的时候,该信号置为低电平。

    下面是运算符输出信号oper设计思路:

    初始状态,该信号输出0;

    1、 当处于操作数1状态时,输出0;

    2、 当“加”“减”“乘”“除”任意按键被按下之后,输出该按键对应的值;

    3、 其他时候保持不变;

    1.5.3参考代码

    assign  key_op_en = (key_num==10 || key_num==11 || key_num==12 || key_num==13) && key_vld==1;always  @(posedge clk or negedge rst_n)begin    if(rst_n==1'b0)begin        oper <= 0;    end    else if(state_c==OP_1)begin        oper <= 0;    end    else if(key_op_en==1)begin        oper <= key_num;    end    else begin        oper <= oper;    endend

    1.6 运算数2模块设计

    1.6.1接口信号

    信号 接口方向定义clk输入系统时钟rst_n输入低电平复位信号Key_num_out输入计算器按下位置输出信号,key_vld_out有效时,该信号有效。Key_vld_out输入计算器按键按下有效指示信号,高电平有效。State_c输入计算器工作状态指示信号Op_2输出运算数2输出信号Op_2_err输出运算数2溢出信号


    1.6.2设计思路

    该模块主要的作用是根据当前状态和输入的按键,来决定运算数2要输出的结果。

    下面是运算数2输出信号op_2的设计思路:

    1、 该信号表示运算数2要输出的值。初始状态为0;

    2、 在运算符状态下,此时数码管不显示运算数2的值,让它输出0;

    3、 输入运算符之后,之后再输入的就是运算数2的值,此时运算数2就等于按下按键所对应的数值。

    4、 在输入运算数2之后,按下退格键,运算数2的值除以10进行取整;

    5、 在输入运算数2状态下通过键盘输入数字,需要判断是否超过显示范围,如果没有超过的话就需要将当前运算数2的值乘以10,然后加上按下的数字的值,进行输出;

    6、 其他时候运算数2保持不变。

    下面是运算数2溢出信号op_2_err的设计思路:

    1、 初始状态为0,表示没有溢出。

    2、 当一直处于运算数2状态,按下键盘输入数字之后,运算数2的值溢出了,则将运算数2溢出信号拉高。

    3、 其他时刻保持为低电平。

    1.6.3参考代码

    assign  key_num_en = (key_num==0 || key_num==1 || key_num==2 || key_num==3 || key_num==4 || key_num==5 || key_num==6 || key_num==7 || key_num==8 || key_num==9) && key_vld==1;assign  key_op_en = (key_num==10 || key_num==11 || key_num==12 || key_num==13) && key_vld==1;assign  key_cal_en = key_num==15 && key_vld==1; assign  key_back_en = key_num==14 && key_vld==1;always  @(posedge clk or negedge rst_n)begin    if(rst_n==1'b0)begin        state_c_ff <= 0;    end    else begin        state_c_ff <= state_c;    endendalways  @(posedge clk or negedge rst_n)begin    if(rst_n==1'b0)begin        flag_calc <= 0;    end    else if(state_c==OP_1)begin        flag_calc <= 1'b0;    end    else if(state_c_ff==OP_2 && state_c==OPER || state_c==RESULT)begin        flag_calc <= 1'b1;    end    else begin        flag_calc <= flag_calc;    endendalways  @(posedge clk or negedge rst_n)begin    if(rst_n==1'b0)begin        op_1 <= 0;    end    else if(state_c==ERROR)begin        op_1 <= 10;    end    else if((state_c_ff==RESULT || state_c_ff==ERROR) && state_c==OP_1)begin        op_1 <= key_num;    end    else if(state_c==OP_1 && key_back_en==1)begin        op_1 <= op_1 / 10;    end    else if(state_c==OP_1 && key_num_en==1)begin        op_1 <= (op_1>9999999) ? op_1 : (op_1*10+key_num);    end    else if(flag_calc==1)begin        op_1 <= result;    end    else begin        op_1 <= op_1;    endendalways  @(posedge clk or negedge rst_n)begin    if(rst_n==1'b0)begin        op_1_err <= 0;    end    else if(state_c==OP_1  && key_num_en==1 && op_1>9999999)begin        op_1_err <= 1'b1;    end    else begin        op_1_err <= 1'b0;    endend

    由于篇幅限制,本文分为(一)(二)两篇;请接着学习(二)。

    本案例提供教学视频和工程源代码,需要的同学请到明德扬论坛进行学习。

    6c580f80ab0e0331c92938c4f1d2a089.png
    2d30959884deadd444732112ca10c658.png
    9f5006925630710c3723e4f3efdbc123.png
    ee9ca50525d5626924f0ee385a4d7b14.png
    986aa984cc9fccfac333c33444ad833c.png

    感兴趣的朋友也可以访问明德扬论坛(http://www.FPGAbbs.cn/)进行FPGA相关工程设计学习,也可以看一下我们往期的文章:

    《基于FPGA的密码锁设计》

    《波形相位频率可调DDS信号发生器》

    《基于FPGA的曼彻斯特编码解码设计》

    《基于FPGA的出租车计费系统》

    《数电基础与Verilog设计》

    《基于FPGA的频率、电压测量》

    《基于FPGA的汉明码编码解码设计》

    《关于锁存器问题的讨论》

    《阻塞赋值与非阻塞赋值》

    《参数例化时自动计算位宽的解决办法》

    明德扬是一家专注于FPGA领域的专业性公司,公司主要业务包括开发板、教育培训、项目承接、人才服务等多个方向。点拨开发板——学习FPGA的入门之选。
    MP801开发板——千兆网、ADDA、大容量SDRAM等,学习和项目需求一步到位。网络培训班——不管时间和空间,明德扬随时在你身边,助你快速学习FPGA。周末培训班——明天的你会感激现在的努力进取,升职加薪明德扬来助你。就业培训班——七大企业级项目实训,获得丰富的项目经验,高薪就业。专题课程——高手修炼课:提升设计能力;实用调试技巧课:提升定位和解决问题能力;FIFO架构设计课:助你快速成为架构设计师;时序约束、数字信号处理、PCIE、综合项目实践课等你来选。项目承接——承接企业FPGA研发项目。人才服务——提供人才推荐、人才代培、人才派遣等服务。

    展开全文
  • calculator 内容提要在本文构造实现了一个计算器擦亮 calculator 主要内容包括 calculator 的 功能需求分析 calculator 的基本设计思路和类的划分 calculator 的具体实现 关键字 Java计算器 calculator 引言设计实现...
  • java计算器实验报告

    千次阅读 2015-04-30 09:48:00
    1.熟悉java图形用户界面的设计原理和程序结构 2.能设计复核问题要求的图形用户界面程序 3.熟悉javaawt和swing的组合 4.掌握常用组建的事件借口 5.会应用awt和swing组件进行应用程序设计 二、实验条件 1.PC机一...

    一、实验目的

    1.熟悉java图形用户界面的设计原理和程序结构

     2.能设计复核问题要求的图形用户界面程序 

    3.熟悉java awt和swing的组合 

    4.掌握常用组建的事件借口
    5.会应用awt和swing组件进行应用程序设计

    二、实验条件

    1.PC机一台

    2.java软件开发环境

     

    三、实验步骤

    1、编写代码,程序见Github

    地址:https://github.com/daishimin/test/blob/master/jisuanji.java

    2、测试结果,见截图

    计算:5+20=25,结果正确,程序无误。

    计算:10X10X10=1000,结果正确,程序无误。

    四、实验总结

      通过对计算器窗体的编写我熟悉java图形用户界面的设计原理和程序结构熟悉java awt和swing的组合。学会将书本上的知识运用在实际中,提升 了编程能力。尤其在JavaApplet图形界面的布局方面学到颇多,以前布局很乱并且很多布局都是无效的。在此次课设中通过查阅很多资料和同学的互相帮 助,充分发挥了JavaApplet界面布局的优越性。另外按钮功能的实现也是本次课设的一大难点,怎样实现那些功能是关键。

     

    转载于:https://www.cnblogs.com/daishimin/p/4468103.html

    展开全文
  • java计算器源码+文档

    2009-10-22 22:27:28
    数据库课程设计计算器——主要实现四则混和运算,简单科学计算,数制间转换,获取系统时间,另有帮助选项并设有热键 类Calculator为程序主体部分,包括GUI的设计,各功能键的响应处理,各种异常的处理及帮助信息的...
  • java实现计算器

    2021-01-17 12:24:47
    这是本人用java写的一款计算器,因为是初学,所以代码结构很乱不规则,且会出现很多变量类型或语句不严谨等等问题,希望谅解。 计算器样式是仿照这个博主的计算器设计的,计算器计算算法是本人自己编织。 添加链接...
  • 引言:最近在学习java ,在学习的过程中想找几个简单的小程序练手。用Java写一个计算器算一个难度非常低的练习,它将我之前学过的 Java 的知识重新...文章结构|-- 显示层设计|-- 逻辑层设计|-- 源代码显示层显示层的...
  • 学校数据结构课程实验之一。用到的数据结构:栈基本功能:输入中缀的运算表达式(即运算符在操作数中间,符合日常的书写习惯),将其转为逆...概要设计:主函数代码(main.cpp):1 #include 2 #include "MyStack.cpp"...
  • java课程设计-计算器实际与实现.doc还剩13页未读,继续阅读下载文档到电脑,马上远离加班熬夜!亲,很抱歉,此页已超出免费预览范围啦!如果喜欢就下载吧,价低环保!内容要点:《面向对象程序设计》课程设计报告11...
  • JAVA课程设计说明书题目:模拟科学计算器姓名:学号:班级: 网络工程11-2山东科技大学2013年11月7日目录1 课设任务及要求11.1课设任务11.2设计要求12 需求分析22.1 设计背景22.2 需求获取32.3 程序功能图43 设计...
  • java 贷款计算器

    2012-03-19 23:09:49
    1)系统的结构设计(应包含的功能模块); a) 用户注册、用户登录 b) 系统参数配置管理 c) 还款计算 d) 提前还款计划生成 e) 历史记录保存与读入 2)系统的功能设计(每个功能模块的开发和整合); 3)系统...
  • 总体的目录结构如下 1.基础工厂类public interface BaseFactory {}2.拓展工厂类public class OperationFactoryimplements BaseFactory{/*** 工厂类的本质是帮助判断对应的实例,将这种判断放在工厂当中,那么就节省了...
  • Java实现计算器

    2017-04-21 23:30:35
    在学习《数据结构》这门课的时候,老是会想到模拟计算器的运算。虽说实验里面也有设计逆波兰计算器的题目,但它只考察了栈和队列的操作思想,没有考虑到运算符的优先级以及复杂组合情况(比如多层括号),因此其实用...
  • 基于Java实现的表达式计算器,包含链表、队列、栈数据结构的运用和波兰表达式等算法的应用。使用面向对象的设计将代码封装好,直接调用使用
  • Java工厂设计模式(简单计算器实现)

    千次阅读 2019-04-08 15:09:29
    总体的目录结构如下 1.基础工厂类 public interface BaseFactory { } 2.拓展工厂类 public class OperationFactoryimplements BaseFactory{ /** * 工厂类的本质是帮助判断对应的实例,将这种判断放在工厂当中,...
  • 使用Java编写的计算器源代码,可以正常运行,进行简单的四则运算。项目结构设计可能不够合理,你可以下载下来进行参考和学习,做出相应的修改,使之更加完善。使用substance对界面进行了美化。
  • 面向课程设计的程序设计java) 文章目录二项式计算器题目要求代码代码2 最近期末考试没得时间总结,但课程设计是真的难写,虽然我已经剽窃了很多了,但还是有亿点点需要自己写的,痛苦了这么久还是要总结一下子滴...
  • Java&Swing 简易计算器

    2020-11-18 19:51:53
    从类的设计的角度上来讲,计算器应该是界面与操作分离,由界面程序获取操作数并传递给计算程序,从计算程序中获取结果。 类的设计 Calculator 用于计算的类,传入操作数和操作符后可获取结果,运算错误抛出异常。 ...
  • 20182307 2019-2020-1 《数据结构与面向对象程序设计》实验四报告课程:《程序设计与数据结构》班级: 1823姓名: 陆彦杰学号:20182307实验教师:王志强实验日期:2019年9月30日必修/选修: 必修1.实验内容(一)Java...
  • 简单计算器 Java版 PTA

    2021-04-09 22:20:47
    本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。如上图所示,计算器由两个堆栈组成,一个堆栈 S​1存放数字,另一个堆栈 S2存放运算符。计算器的最下方有一个等号键,每次按下这个键,计算器...
  • Java写一个计算器算一个难度非常低的练习,它将我之前学过的 Java 的知识重新地拾起来了。在这个小练习中,我选择了逻辑层和显示层分离(MVC模式)的JavaFX 技术。在javafx 中,用fxml文件来表示显示层内容,用...
  • 这个学期我选择Java技术与应用这门课(其实我的选修课已经修完了)完全是对java语言的兴趣和老师的个人魅力使然这门课让我学到了许多知识了解到了java语言的基本语法结构和特点由于个人觉得水平有限并且没有队友所以...
  • Java实现仿Windows计算器

    千次阅读 2015-12-28 14:05:38
    这是很早之前,数据结构的课程设计,今天偶然翻到,觉得还是记录在这里吧~~ 当时我选的题目是:使用队列来实现数学表达式的求值: 当时突发奇想,就写了一个仿Windows下的计算器,当然实现的功能比较简单,...
  • 讲解了Java中的分支和循环结构,包括用if...else...和switch...case...default构造分支结构以及用whie、do...while...和for构造循环结构
  • Java面向对象程序设计教程-第三章 Java流程控制 循环结构实例讲解 主讲贾艳波 [任务] 购房还贷计算器应用程序 该应用程序用于显示当贷款期限分别为2年3年4年和5年时每月所需支付的还款额 循环结构重复结构 循环语句...
  • Java入门——计算器(界面篇)

    千次阅读 2019-06-21 17:07:57
    学了一段时间,终于开始尝试写自己的计算器了。 分成两部分来完成,一是界面的实现;而是核心功能的实现。今天先来第一部分,界面。 目录 概要设计 简要说明 文件结构 代码介绍 面板的设计代码 界面代码 ...
  • 3.2 数据结构设计 由前所述,本计算器的设计目标需要支持简单数据类型(整型、浮点型)、字符串类型、矩阵、元胞等数据类型以及他们之间的各种混合运算,但是由于不同的数据类型的存储结构差异是很大的,我们希望...
  • Java实训报告实现基本功能的简单计算器Java 实习报告》题目系别:计算机信息技术系班级: 学号: 姓名: 时间: 目 录前言及问题定义 3第一章 需求分析 3第二章 总体设计 32.1 系统模块结构图 .32.2 系统运行流程...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 132
精华内容 52
关键字:

java计算器结构设计

java 订阅