亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Java Swing的計算器的設計與實現(xiàn)

        2016-02-05 08:05:35楊建強李苗在
        電腦與電信 2016年10期
        關鍵詞:運算符清空計算器

        楊建強 李苗在

        (鶴壁職業(yè)技術學院電子信息工程學院,河南 鶴壁 458030)

        基于Java Swing的計算器的設計與實現(xiàn)

        楊建強 李苗在

        (鶴壁職業(yè)技術學院電子信息工程學院,河南 鶴壁 458030)

        計算器作為一種計算工具使用率非常高。本文利用Java語言的Swing、動作事件處理機制等技術開發(fā)了一個計算器,對于學習Java程序設計具有很大幫助,尤其對于《Java程序設計》課程的教學具有重要的指導作用。

        計算器;Swing;Java

        1 引言

        計算器作為一種計算工具使用頻率非常高,其操作過程也被人們所熟悉。在程序設計語言教學過程中,選取學生所熟悉的場景作為教學案例有利于激發(fā)學生的學習興趣和降低學生的畏懼心理,便于知識點的掌握和項目經(jīng)驗的積累。本文利用Java語言的Swing、動作事件處理機制等技術設計和開發(fā)了一個計算器,對于學習Java程序設計具有很大幫助,尤其對于《Java程序設計》課程的教學具有重要的指導作用。

        2 計算器的設計

        2.1 界面設計

        Java程序里GUI(圖形用戶界面)設計用到的技術有AWT和Swing。其中,AWT是SUN公司推出的最早的一套API,包含的組件種類有限,只能提供基本的GUI設計,無法實現(xiàn)目前GUI設計需要的所有功能,并且開發(fā)出來的應用程序在不同的平臺上執(zhí)行時,界面的顯示會有所不同。為此,SUN公司對AWT進行了改進,提供了Swing組件,Swing不僅實現(xiàn)了AWT中的所有功能,提供了更加豐富的組件和功能,而且開發(fā)出來的應用程序可以在任何平臺上運行,不會出現(xiàn)界面顯示不同的問題。本設計就是利用Swing技術的相關組件構造了如圖1所示的界面。該界面共分為上中下三部分,上面部分是一個JTextField對象,中間部分是在一個設置為FlowLayout布局的JPanel對象上靠右放置兩個JButton對象,下面部分是一個設置為4行4列GridLayout布局的JPanel對象上放置16個JButton對象。這三部分分別放置在默認布局為BorderLayout的JFrame對象上的NORTH、CENTER和SOUTH區(qū)。

        圖1 計算器界面

        2.2 功能設計

        計算器要能夠實現(xiàn)以下功能:

        1)一個數(shù)的輸入和顯示。

        2)輸入運算符,輸入完算術運算符后,先保存第一個操作數(shù)和運算符,為輸入第二個操作數(shù)做準備。

        3)第二個操作數(shù)的輸入和顯示。

        4)輸入完等號后能夠顯示運算結果。

        5)退格功能的實現(xiàn),沒按一下退格按鈕,輸入的操作數(shù)從低位刪除一位。

        6)清空功能的實現(xiàn),上一次運算結束后,點擊清空按鈕,為下一次運算做準備。

        7)計算器的健壯性考慮,比如用戶在沒輸入第一個操作數(shù)時就先輸入運算符或等號。

        8)計算器的友好交互性,比如程序剛啟動時和清空后,讓文本框內默認顯示為“0”。

        3 計算器的實現(xiàn)

        3.1 Java Swing程序基本代碼實現(xiàn)

        1)創(chuàng)建Java項目JiSuanQi,在項目里創(chuàng)建一個繼承于JFrame并包含main方法的類JiSuanQi.java。

        2)在類內定義一個無參的構造函數(shù),里面添加給窗體設置標題、初始位置、自適應窗口大小、窗體大小不可改變和窗體運行可見的代碼。代碼如下所示:

        this.setTitle("計算器");

        this.setLocation(100,100);

        this.pack();

        this.setResizable(false);

        this.setVisible(true);

        3)在構造函數(shù)的最下面設置窗體的關閉方式,代碼如下所示:

        this.setDefaultCloseOperation(EXIT_ON_CLOSE);

        4)在main方法中創(chuàng)建JiSuanQi類的對象,使程序能夠正常運行。

        3.2 計算器程序的界面實現(xiàn)

        1)計算器界面的操作數(shù)輸入和結果顯示文本框代碼實現(xiàn)如下所示:

        JTextField tField=new JTextField("0",20);

        this.add(tField,BorderLayout.NORTH);

        2)“退格”和“清空”按鈕的實現(xiàn)代碼如下所示:

        JPanel panel=new JPanel(new FlowLayout(FlowLayout. RIGHT));

        JButton tuige=new JButton("退格");

        JButton qingong=new JButton("清空");

        panel.add(tuige);

        panel.add(qingong);

        this.add(panel);

        3)計算器16個按鈕的代碼實現(xiàn)是先把按鈕上的標識定義成一個字符數(shù)組,然后通過循環(huán)的方式依次取數(shù)組中的每個元素值作為新建JButton對象的文本。這樣極大地減少了編程的代碼量,也提高了代碼的可讀性。實現(xiàn)代碼如下所示:

        JPanel panel2=new JPanel(new GridLayout(4,4,5,5));

        String[]bStrings={"7","8","9","+","4","5","6","-","1","2"," 3","*","0",".","=","/"};

        for(int i=0;i

        JButton button3=new JButton(bStrings[i]);

        panel2.add(button3);

        }

        this.add(panel2,BorderLayout.SOUTH);

        3.3 計算器功能的實現(xiàn)

        在Swing事件模型(如圖2所示)中由3個分離的對象完成對事件的處理,分別為事件源、事件和監(jiān)聽器。事件源觸發(fā)一個事件,它被一個或多個“監(jiān)聽器”接收,監(jiān)聽器負責處理事件。所謂事件監(jiān)聽器,實質上就是一個“實現(xiàn)特定類型監(jiān)聽器接口”的類對象,同時需要將接口中的方法一一實現(xiàn)。最后事件源調用相應的方法加載這個“實現(xiàn)特定類型監(jiān)聽器接口”的類對象,所有的事件源都具有添加或移除相應的事件監(jiān)聽器的方法。計算器功能的實現(xiàn)主要是通過用戶點擊界面上的相應按鈕,觸發(fā)動作事件,然后由為它添加的動作事件監(jiān)聽器負責處理。計算器是通過匿名內部類來創(chuàng)建事件監(jiān)聽器對象,針對所發(fā)生的事件進行處理。程序里需要給每個按鈕都添加動作事件監(jiān)聽器,實現(xiàn)代碼如下所示:qingong.addActionListener(new ActionListener(){

        @Override

        public void actionPerformed(ActionEvente){

        //具體的功能代碼實現(xiàn)

        }

        });

        圖2 Swing事件模型

        計算器程序里所用到的兩個操作數(shù)的位數(shù)是不確定的,需要先定義一個可變的字符串來保存用戶輸入的數(shù)字,還需要定義兩個double類型的變量來保存操作數(shù),以及定義一個字符串來保存運算符。該部分代碼在整個程序中都要用到,故把這四個變量定義為靜態(tài)成員變量。代碼如下所示:

        static StringBuffer number=new StringBuffer();

        static double number1=0,number2=0;

        static String flag;

        3.3.1 正確使用計算器時的計算功能實現(xiàn)

        所謂正確使用計算器是指用戶嚴格按照輸入第一操作數(shù)、運算符、第二個操作數(shù)、等號這樣的次序。計算器加減乘除四個功能的實現(xiàn)是一樣的,這里我們以乘法為例來介紹一下計算器的功能實現(xiàn)。

        第一步,我們需要獲取用戶按的是哪個按鈕,Ac-tionEvent對象的getActionCommand方法可以返回與此動作相關的命令字符串。

        第二步,由于我們是把16個按鈕通過循環(huán)結合button3對象布局到界面上的,所以用戶按這16個按鈕中的任何一個都將觸發(fā)綁定到button3上的觸發(fā)器。在形成第一個操作時我們需要排除4個運算符和等號,然后通過StringBuffer對象的append方法可以實現(xiàn)把多位操作數(shù)拼接起來并顯示。實現(xiàn)代碼如下所示:

        String aa=e.getActionCommand();

        if(!(aa.equals("*")||aa.equals("+")||aa.equals("-")||aa.equals("/ ")||aa.equals("=")))

        {number.append(aa);

        tField.setText(number.toString());}

        第三步,當用戶第一個操作數(shù)輸入完畢,輸入乘法符號時,此時代表用戶第一個操作數(shù)輸入完畢,我們可以先保存第一個操作數(shù)和運算符,然后清空number為保存第二個操作數(shù)做準備,最后把計算器顯示文本框中的內容置空。實現(xiàn)代碼如下所示:

        if(aa.equals("*")){

        flag="*";

        number1=Double.parseDouble(number.toString());

        number.delete(0,number.length());

        tField.setText(null);

        }

        第四步,當用戶輸入第二個操作數(shù)時處理方法和第一個操作數(shù)一樣;待用戶輸入等號時,說明第二個操作數(shù)輸入完畢,需要程序根據(jù)用戶輸入的運算符進行計算并把最終結果顯示出來,最后清空number為下一次運算做準備。實現(xiàn)代碼如下所示:

        if(aa.equals("=")){

        number2=Double.parseDouble(number.toString());

        if(flag.equals("*")){

        double chengji=number1*number2;

        String ji=String.valueOf(chengji);

        tField.setText(ji);

        number.delete(0,number.length());

        }

        }

        3.3.2 不當使用計算器時的處理

        用戶在使用計算器的過程中難免會出現(xiàn)使用不當?shù)那闆r,比如,第一個操作數(shù)還沒輸入的時候先輸入了運算符或等號,第一個操作數(shù)輸入完后就輸入了等號等等,這類問題的解決方法是一樣的。在這我們以用戶先輸入乘號為例來說明這類問題,出現(xiàn)這種情況程序就會報錯,因為此時程序需要保存第一個操作數(shù),而此時number為空,無法轉換成double類型的第一個操作數(shù)。解決方法為:在用戶按下乘號按鈕時,我們先判斷一下number中是否已保存值,如果有值,繼續(xù),如果無值,在顯示框中給出提示信息就可以順利解決了。實現(xiàn)代碼如下所示:

        if(!number.toString().equals("")){

        //正常處理代碼

        }

        else tField.setText("請先輸入第一個操作數(shù)!");

        1)清空功能的實現(xiàn)

        該功能實現(xiàn)簡單,只需要清除number中保存的數(shù)就可以了,然后給顯示框設置為0,實現(xiàn)代碼如下所示:

        number.delete(0,number.length());

        tField.setText("0");

        2)退格功能的實現(xiàn)

        退格功能指的是用戶在輸入操作數(shù)的過程中把操作數(shù)的最后一位或某幾位輸入有誤,需要刪除后重新輸入。此時我們還要考慮用戶一直按退格按鈕會導致全部刪完還要刪引起的異常處理,所以我們在刪除前先判斷一下number的長度,只有其長度大于0時才允許刪除,提高了系統(tǒng)的健壯性,如果不能刪除時,給顯示框設置為0,提高了計算器的友好交互性。

        if(number.length()>0){

        number.deleteCharAt(number.length()-1);

        tField.setText(number.toString());

        }else tField.setText("0");

        4 結束語

        計算器的功能雖然與操作系統(tǒng)所帶的計算器相比,在功能上有所欠缺,但作為計算器的主體功能已經(jīng)具備,加上其難易程度適中,綜合運用了Java的多個技術,而且便于初學者在理解一種操作運算后,自己去模仿實現(xiàn)其余操作運算,能對初學者起到舉一反三和引導的作用。在今后的工作中,將繼續(xù)完善此計算器程序的功能,使其更有利于初學者掌握Java程序設計。

        [1]明日科技.Ja v a從入門到精通(第3版)[M].北京:清華大學出版社,2012.

        [2]傳智博客.Ja v a基礎入門[M].北京:清華大學出版社,2014.

        [3]楊建強.基于.NET的高職實驗報告管理信息系統(tǒng)的設計與實現(xiàn)[J].電腦開發(fā)與應用,2013(9):51-53.

        The Design and Realization of Logistics Management System Based on C#.net

        Xia Binhao Lou Yishu Zhang Yiqiong
        (Yuncheng University,Yuncheng 044000,Shanxi)

        With the high-speed development of computer network,computer has played a vital role in each domain of the society.The logistics management system based on C#.net makes the requirements of logistics management more systematic and more standardized.This system not only reduces company's operation cost,but also raises the working efficiency greatly.

        C#.net;logistics management system;systematic;standardization

        TP311.11

        A

        1008-6609(2016)10-0061-03

        楊建強(19 78-),男,河南滑縣人,碩士,副教授,研究方向為軟件開發(fā)、軟件工程。

        猜你喜歡
        運算符清空計算器
        子題一
        老祖?zhèn)魇诨具\算符
        科學24小時(2021年10期)2021-10-09 23:09:37
        很萌!熊孩子清空7萬元購物車
        時代郵刊(2019年18期)2019-12-17 11:44:56
        [計算器不是萬能的]
        清空購物車了嗎!
        一個損壞的計算器
        讀寫算(中)(2015年10期)2015-11-07 07:24:10
        一個損壞的計算器
        計算器游戲
        下一場雪,寫一首詩
        雪花(2015年2期)2015-06-26 02:31:48
        C++運算符重載剖析
        價值工程(2014年17期)2014-04-16 03:29:20
        曝光无码有码视频专区| 久久久人妻精品一区bav| 久久精品国产亚洲av超清| 国产成人a人亚洲精品无码| 风情韵味人妻hd| 我和丰满妇女激情视频| 天天摸夜夜摸摸到高潮| 欧美午夜精品久久久久久浪潮 | 无码人妻精品一区二区在线视频| 亚洲制服中文字幕第一区| 日本高清中文一区二区三区| 免费观看人妻av网站| 亚洲成av人片在www| 国产精美视频| 国产精品成人黄色大片| 日本高清一级二级三级| 久久不见久久见中文字幕免费| 91热这里只有精品| 国产综合一区二区三区av| 国产精品亚洲精品一区二区| 亚洲精品国偷拍自产在线| 亚洲av永久无码精品国产精品| 久久久久亚洲AV无码专区喷| 国产一区二区av在线观看| 亚洲精品人成中文毛片| 国产麻豆md传媒视频| 国产成人AV无码精品无毒 | 国产成人一区二区三区| 肉色丝袜足j视频国产| 中文字幕精品一二三四五六七八| 久久av高潮av喷水av无码 | 日本美女在线一区二区| 日韩aⅴ人妻无码一区二区| 亚洲精品你懂的在线观看| 亚洲一区二区三区中文视频| 日本av天堂一区二区三区| 任我爽精品视频在线播放| 伊人精品在线观看| 蜜臀av国内精品久久久人妻| 按摩师玩弄少妇到高潮av| 国产人与zoxxxx另类|