版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、信息科學(xué)與技術(shù)學(xué)院JavaJava 語言課程設(shè)計(jì)語言課程設(shè)計(jì)報(bào)告報(bào)告 題題 目:目: 編寫一個(gè)計(jì)算器程序編寫一個(gè)計(jì)算器程序 專專 業(yè):業(yè): 計(jì)算機(jī)科學(xué)與技術(shù)計(jì)算機(jī)科學(xué)與技術(shù) 班班 級:級: 學(xué)學(xué) 號:號: 姓姓 名:名: 目錄目錄一、概述一、概述.3 31.1 設(shè)計(jì)目的及思路.31.2 功能模塊設(shè)計(jì).31.3 程序結(jié)構(gòu)(流程圖).4二、計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)二、計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn).4 42.1 程序界面.42.2 程序源代碼.5三、三、參考文獻(xiàn)參考文獻(xiàn).1414一、概述1.11.1 設(shè)計(jì)目的及思路設(shè)計(jì)目的及思路通過本課程設(shè)計(jì)使學(xué)生能夠較全面的掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的有關(guān)概念和開發(fā)方法,以便能較全面地
2、理解、掌握和綜合運(yùn)用所學(xué)的知識,提高自身的編程能力。利用 Java Applet 圖形界面首先開始設(shè)計(jì)一個(gè)計(jì)算器的界面,定義計(jì)算器所需要的按鈕并賦給其按鈕名稱,使得使用計(jì)算器時(shí)簡單明了,清晰可見,操作輕松。 給各個(gè)按鈕進(jìn)行算法,利用鼠標(biāo)點(diǎn)擊事件,當(dāng)鼠標(biāo)點(diǎn)擊某個(gè)按鈕時(shí)就開始執(zhí)行那個(gè)按鈕所定義的算法,生成數(shù)據(jù)并顯示。 除數(shù)字的輸入為直接進(jìn)行輸入外,其他運(yùn)算例如+、-、*、/、開平方等算法要求計(jì)算時(shí)通過內(nèi)部較為復(fù)雜的運(yùn)算將結(jié)果顯示在顯示屏上。 至于其中的進(jìn)制轉(zhuǎn)換功能的實(shí)現(xiàn)則是直接調(diào)用 Java 中進(jìn)制轉(zhuǎn)換的函數(shù),例如要將十進(jìn)制轉(zhuǎn)換成二進(jìn)制則可直接調(diào)用函數(shù) Integer.toBinaryString
3、(int i)來實(shí)現(xiàn),充分顯示了 Java 語言的簡潔性和 Java 語言功能的強(qiáng)大性。 當(dāng)然了在輸入數(shù)據(jù)時(shí)還要進(jìn)行異常捕捉,防止越界的現(xiàn)象的發(fā)生,這也是Java 語言健壯性的體現(xiàn)!1.21.2 功能模塊設(shè)計(jì)功能模塊設(shè)計(jì)(1)加法:兩個(gè)數(shù)據(jù)進(jìn)行加操作,可以為小數(shù)。(2)減法:兩個(gè)數(shù)據(jù)進(jìn)行減操作,可以為負(fù)數(shù)相減。(3)乘法:兩個(gè)數(shù)相乘操作。(4)除法:兩個(gè)數(shù)相除操作。(5)階乘:對任意一個(gè)數(shù)進(jìn)行階乘運(yùn)算。(6)指數(shù):對任意一個(gè)數(shù)進(jìn)行指數(shù)運(yùn)算。(7)倒數(shù):對任意一個(gè)數(shù)進(jìn)行倒數(shù)運(yùn)算。1.31.3 程序結(jié)構(gòu)程序結(jié)構(gòu)(流程圖)(流程圖)二、計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)2.12.1 程序界面程序界面 2.22.2
4、程序源代碼程序源代碼package mine;import java.awt.*;import java.awt.event.*;public class Calculator implements ActionListenerprivate double data1=0.0,data2=0.0;private String t_content;boolean number=false;/key 用標(biāo)示用戶所按按鈕即加減乘除/key0 標(biāo)示+1 表示-2 表示*3 表示/short key=-1;/pkey 取值-15/pkey-1 表示第按=按鈕 5 說明第按=按鈕/pkey 其值 0,1,
5、2,3 別代表+-,*/short pkey=-1;Frame frame=new Frame(計(jì)算器);/定義標(biāo)題 Calculator 窗體TextField textfield=new TextField(30);/定義計(jì)算機(jī)/定義 backspace,ce,c0 按鈕Button backspace=new Button(退格);Button ce=new Button(撤消);Button c0=new Button(清空);/定義面板其 backspace,ce,c0 按鈕計(jì)算機(jī)欄 textfeild 放面板 p1/其余按鈕放面板 p2Panel p1=new Panel();Pa
6、nel p2=new Panel();/定義界面按鈕數(shù)組即除 backspace,ce,c0 按鈕所按鈕String names=7,8,9,/,sqrt,4,5,6,*,%,1,2,3,-,1/x,0,+/-,.,+,=;Button bb=new Buttonnames.length;public static void main(String args) Calculator cal=new Calculator(); cal.go();public void go()frame.setSize(300,200);frame.setLayout(new BorderLayout();Fo
7、nt fonts=new Font(楷體_GB2312,Font.PLAIN,12); /設(shè)置面板 p1 字體布局管理類型 textfeild 象添加面板p1.setFont(fonts);p1.setLayout(new GridLayout(2,1,5,10);textfield.setFont(fonts);p1.add(textfield,null);/backspace,ce,c0 按鈕注冊 addActionListenerbackspace.addActionListener(this);ce.addActionListener(this);c0.addActionListene
8、r(this);/backspace,ce,c0 按鈕添加 p1 面板p1.add(backspace,null);p1.add(ce,null);p1.add(c0,null);/設(shè)置面板 p2 布局管理器類型 GridLayoutp2.setLayout(new GridLayout(4,5,5,5);/按鈕組按鈕注冊 addActionListenerfor(int i=0;inames.length;i+)bbi=new Button(namesi);p2.add(bbi);bbi.addActionListener(this);/設(shè)置面板 p1 面板 p2 窗體位置/面板 p1 窗體
9、 North 向面板 p2 窗體 South 向frame.add(p1,BorderLayout.NORTH);frame.add(p2,BorderLayout.SOUTH);frame.setVisible(true);/單擊關(guān)閉按鈕退系統(tǒng)frame.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); public void actionPerformed(ActionEvent ae) String s; /通 ActionEvent 類 ge
10、tActionCommand()作由哪按鈕觸發(fā) s=ae.getActionCommand();/用戶單擊計(jì)算欄便掉字符/先計(jì)算欄字符清空再添加除字符字符串 if(s.equals(退格)&number) t_content=textfield.getText(); textfield.setText();for(int i=0;it_content.length()-1;i+) char c=t_content.charAt(i); textfield.setText(textfield.getText()+c); /用戶單擊撤消按鈕if(s.equals(撤消) textfield
11、.setText();number=false;/用戶單擊清空按鈕if(s.equals(清空) textfield.setText();data1=data2=0.0;number=false;/用戶單擊 sqrt 按鈕其負(fù)數(shù)能if(s.equals(sqrt)&number) t_content=textfield.getText(); if(t_content.charAt(0)=-) textfield.setText(負(fù)數(shù)能); number=false; else textfield.setText(Double.toString(java.lang.Math.sqrt(D
12、ouble.parseDouble(t_content); /用戶單擊 1/x 求倒數(shù)按鈕求倒數(shù)母能 0if(s.equals(1/x) & number) t_content=textfield.getText();if(t_content.equals(0) textfield.setText(零能求倒數(shù)); number=false;else textfield.setText(Double.toString(1/Double.parseDouble(t_content); /用戶單擊%按鈕if(s.equals(%)&number) if(data2=0) t_cont
13、ent=textfield.getText(); textfield.setText(t_content);else boolean g=false; for(int i=0;itextfield.getText().length();i+) if(.=textfield.getText().charAt(i) g=true; break;/Double 數(shù)除 100if(g=true) double dtemp=Double.parseDouble(textfield.getText(); dtemp=dtemp/100.0; textfield.setText(Double.toStrin
14、g(dtemp); /int 數(shù)能 100 整除則掉末尾兩 0else if(Integer.parseInt(textfield.getText()%100=0) int itemp=Integer.parseInt(textfield.getText(); itemp/=100; textfield.setText(Integer.toString(itemp); /int 數(shù)能 100 整除則按 Double 數(shù)處理else double dtemp=Double.parseDouble(textfield.getText(); dtemp=dtemp/100.0; textfield.
15、setText(Double.toString(dtemp); /負(fù)數(shù)字處理 if(s.equals(+/-) t_content=textfield.getText(); if(t_content.charAt(0)=-) textfield.setText(); String content; for(int i=1;it_content.length();i+) textfield.setText(textfield.getText()+t_content.charAt(i); else textfield.setText(-+t_content); /所按按鈕+按鈕if(s.equal
16、s(+) switch(pkey) case 0: data2+=Double.parseDouble(textfield.getText(); break; case 1: data2+=Double.parseDouble(textfield.getText(); break; case 2: data2+=Double.parseDouble(textfield.getText(); break; case 3: if(textfield.getText().equals(0) textfield.setText(除數(shù)能零); number=false; else key=-1; dat
17、a2/=data1; textfield.setText(Double.toString(data2); break; default: data2=Double.parseDouble(textfield.getText(); pkey=key=0; textfield.setText(); /所按按鈕-按鈕if(s.equals(-) switch(pkey) case 0: data2+=Double.parseDouble(textfield.getText(); break; case 1: data2+=Double.parseDouble(textfield.getText();
18、 break; case 2: data2+=Double.parseDouble(textfield.getText(); break; case 3: if(textfield.getText().equals(0) textfield.setText(除數(shù)能零); number=false; else key=-1; data2/=data1; textfield.setText(Double.toString(data2); break; default: data2=Double.parseDouble(textfield.getText(); pkey=key=1; textfie
19、ld.setText(); /所按按鈕*按鈕 if(s.equals(*) switch(pkey) case 0: data2+=Double.parseDouble(textfield.getText(); break; case 1: data2+=Double.parseDouble(textfield.getText(); break; case 2: data2+=Double.parseDouble(textfield.getText(); break; case 3: if(textfield.getText().equals(0) textfield.setText(除數(shù)能零
20、); number=false; else key=-1; data2/=data1; textfield.setText(Double.toString(data2); break; default: data2=Double.parseDouble(textfield.getText(); pkey=key=2; textfield.setText(); /所按按鈕/按鈕 if(s.equals(/) switch(pkey) case 0: data2+=Double.parseDouble(textfield.getText(); break; case 1: data2+=Doubl
21、e.parseDouble(textfield.getText(); break; case 2: data2+=Double.parseDouble(textfield.getText(); break; case 3: if(textfield.getText().equals(0) textfield.setText(除數(shù)能零); number=false; else key=-1; data2/=data1; textfield.setText(Double.toString(data2); break; default: data2=Double.parseDouble(textfi
22、eld.getText(); pkey=key=3; textfield.setText(); /所按按鈕=求結(jié) if(s.equals(=)&number) /第按=按鈕 if(pkey=5) switch(pkey) case 0: data2+=data1; textfield.setText(Double.toString(data2); break; case 1: data2-=data1; textfield.setText(Double.toString(data2); break; case 2: data2*=data1; textfield.setText(Dou
23、ble.toString(data2); break; case 3: if(textfield.getText().equals(0) textfield.setText(除數(shù)能零); number=false; else data2/=data1; textfield.setText(Double.toString(data2); break; /第按=按鈕 else data1=Double.parseDouble(textfield.getText(); switch(key) case 0: key=-1; data2+=Double.parseDouble(textfield.ge
24、tText(); textfield.setText(Double.toString(data2); break; case 1: key=-1; data2-=Double.parseDouble(textfield.getText(); textfield.setText(Double.toString(data2); break; case 2: key=-1; data2*=Double.parseDouble(textfield.getText(); textfield.setText(Double.toString(data2); break; case 3: if(textfield.getText().equals(0) textfield.setText(除數(shù)能零); number=false; else key
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二手摩托車買賣2024年法律文件3篇
- 2025版土地租賃期滿及轉(zhuǎn)讓中介服務(wù)協(xié)議3篇
- 2025年度個(gè)人心理咨詢與治療服務(wù)合同范本3篇
- 二零二五年度幕墻工程勞務(wù)分包合同售后服務(wù)及質(zhì)量保證3篇
- 個(gè)人與個(gè)人之間股權(quán)轉(zhuǎn)讓合同(2024版)5篇
- 二零二五年度廠房產(chǎn)權(quán)分割與共有權(quán)轉(zhuǎn)讓合同3篇
- 二零二五版木材行業(yè)安全教育培訓(xùn)服務(wù)合同4篇
- 二零二五年度儲煤場租賃及煤炭供應(yīng)鏈金融服務(wù)合同3篇
- 2024版谷穎的離婚協(xié)議書c
- 2025年度智能廚房設(shè)備升級采購與安裝服務(wù)合同2篇
- 2024年甘肅省武威市、嘉峪關(guān)市、臨夏州中考英語真題
- DL-T573-2021電力變壓器檢修導(dǎo)則
- 繪本《圖書館獅子》原文
- 安全使用公共WiFi網(wǎng)絡(luò)的方法
- 2023年管理學(xué)原理考試題庫附答案
- 【可行性報(bào)告】2023年電動(dòng)自行車相關(guān)項(xiàng)目可行性研究報(bào)告
- 歐洲食品與飲料行業(yè)數(shù)據(jù)與趨勢
- 放療科室規(guī)章制度(二篇)
- 中高職貫通培養(yǎng)三二分段(中職階段)新能源汽車檢測與維修專業(yè)課程體系
- 浙江省安全員C證考試題庫及答案(推薦)
- 目視講義.的知識
評論
0/150
提交評論