1、布置任务,查找资料、需求分析1天总体设计1天详细设计1.5天编制源程序实现3.5天测试与修改1天撰写课设报告2天六、主要参考资料1 张广彬. Java课程设计案例精编(第二版).北京:清华大学出版社, 2011. 2 耿祥义. Java课程设计(第二版).北京:清华大学出版社, 2008.3 耿祥义JAVA大学实用教程北京:4 邹林达陈国君 Java2程序设计基础北京:清华大学出版社,20105 邹林达Java2程序设计基础实验指导北京:清华大学,2010指导教师(签名): 20 年 月 日目 录1需求与总体设计11.1计算器需求分析11.2功能描述11.3系统功能图11.3系统主要类图22详
2、细设计32.1类32.2成员变量32.3方法42.4详细类图43编码实现53.1计算器详细代码实现54系统测试284.1界面测试284.2计算器功能测试284.2.1四则运算284.2.2三角函数运算294.2.3特殊运算294.2.4计算过程清除304.2.5计算过程保存304.2.6关于计算机说明31总结32(要求:目录题头用三号黑体字居中书写,隔行书写目录内容。目录中各级题序及题标用小四号黑体字)1需求与总体设计1.1计算器需求分析为了减轻人们日益繁琐的工作压力和负担,实现高效统计和运算,在普通计算器上加入更多样更便捷的功能势在必行,普通计算器上加入三角函数功能和保存功能,可以大大减轻会
3、计以及财务部门统计账目的压力。此次逻辑算术设计实践,利用java面向对象程序设计和SWT技术针对该程序显示GUI用户界面,能实现四则运算以及扩展函数运算,并用图形界面实现。够培养我们严谨务实的工作态度以及提高我们分析问题和解决问题的能力,也对于巩固和加深对面向对象程序设计的基本概念、基本理论和实现技术的理解起到了一定的意义。1.2功能描述(1)单击“计算器”上的数字按钮(0、1、2、3、4、5、6、7、8、9)可以设置参与计算的运算数。(2)单击“计算器”上的运算符按钮(+、-、*、/)可以选择运算符号。(3)单击“计算器”上的函数按钮可以计算出相应的函数值。(4)单击“计算器”上的“=”按钮
4、显示计算结果。(5)单击“保存”按钮可以将文本区中的全部计算过程保存到文件:1.3功能图如下:结果清除复制显示框内容保存计算过程显示运算结果函数计算加、减、乘、除计算错 图1-1系统主要功能图1.4系统主要类图Class Calc() 显示“+”“”按钮显示“*”“/”按钮显示Sin按钮显示Cos按钮显示Tan按钮显示退格按钮显示数字0-9按钮显示清除按钮显示结果文本框显示计算过程显示文本框四则运算函数运算特殊运算计算过程保存、清楚计算过程复制到剪贴板main()显示按钮数据计算计算过程保存、清除 图1-2系统主要类图2详细设计2.1类clas calc:该类是程序的主类,显示了界面窗口,数据
5、计算,计算过程保存、复制到剪贴板,以下是该类的说明。2.2成员变量l DecimalFormat df 设置数据输出精度(对于double型值)l boolean clickable 控制当前能否按键l double memory 内存中存储的double型数字l int memory 内存中存储的int型数字l double vard, 用来保存double型数据的中间值l double answerd 用来保存最后结果l short key 用来保存当前进行何种运算,l short prekey 用来保存前次进行何种运算l int w=0 按钮前一动作为结果运算动作,比如“=”或是开方l
6、int w=1 按钮前一动作为数值输出或是“-/+”l String mid 中间运算过程记录值l Display d 与系统交互类实例l Shell s 容器窗口实例l Text textanswer 计算结果显示框l Text t2 计算过程显示窗口l Menu m 菜单bar实例l Menu filemenu 菜单变量l MenuItem bzx “标准型”菜单项目变量l Button b0 b9 数字键0到9l Button buttonSave 保存键按钮,保存计算过程l Button buttonCopy 复制键按钮,复制计算过程到剪贴板l Button buttonSqart 开
7、方键按钮,进行开方运算l Button buttonMod “%”键按钮,进行模运算l Button buttonDot 小数点按钮l Button butonAdd buttonSub buttonMul buttonDiv “+” “-” “*” “/”键按钮,进行加减乘除运算l Button buttonSin buttonCos buttonAsin buttonAcos buttonLog “sin”cos”asin”acos”按钮,进行三角函数运算2.3方法calc()是程序的主要方法,负责构造友好界面窗口,显示按钮、文本框,调用监听器进行按钮功能判断监听,实施四则运算和特殊函数,
8、显示运算结果,保存运算结果到文件和剪贴板。2.4详细类图 Class CalcDecimalFormat df boolean clickabledouble memory int memorydouble vard, double answerdshort key short prekeyint w String midText textanswer Menu filemenuDisplay d Shell s Menu m MenuItem bzx Button b0 b9Button buttonSave buttonCopybuttonSqart buttonMod buttonDot
9、 butonAdd buttonSub buttonMul buttonDivButton buttonSin buttonCos buttonAsin buttonAcos buttonLogCalc()Class main()calc ssclass calc 图2-1系统详细类图3编码实现3.1计算器详细代码实现package ZY04;import java.text.DecimalFormat;import java.awt.Color;import java.io.*;import java.lang.NumberFormatException;import org.eclipse
10、.swt.*;import org.eclipse.swt.events.*;import org.eclipse.swt.graphics.*;import org.eclipse.swt.layout.*;import org.eclipse.swt.widgets.*;public class calc DecimalFormat df = new DecimalFormat(0.#); /设置数据输出精度(对于double型值) boolean clickable; /控制当前能否按键 double memoryd; /内存中存储的double型数字 int memoryi;/内存中存
11、储的int型数字 double vard, answerd; /用来保存double型数据的中间值(vard)和最后结果(answerd) short key = -1, prekey = -1; /key用来保存当前进行何种运算,prekey用来保存前次进行何种运算 int w=0;/w=1,按钮前一动作为结果运算动作,比如“=”或是开方,w=0,按钮前一动作为数值输出或是“-/+” String mid=;/中间运算过程记录值Display d;Shell s;calc()d=new Display();s=new Shell(d);s.setSize(220,380);s.setImag
12、e(new Image(d,c:123.jpg);s.setText(计算器/* /设置菜单Menu m=new Menu(s,SWT.BAR);/创建查看菜单项final MenuItem file = new MenuItem(m,SWT.CASCADE);file.setText(查看(v)final Menu filemenu =new Menu(s,SWT.DROP_DOWN);file.setMenu(filemenu);final MenuItem bzx=new MenuItem(filemenu,SWT.RADIO);bzx.setSelection(true);bzx.se
13、tText(标准型(T) Alt+1final MenuItem kxx=new MenuItem(filemenu,SWT.RADIO);kxx.setText(科学型 (S) Alt+2final MenuItem cxy=new MenuItem(filemenu,SWT.RADIO);cxy.setText(程序员 (P) Alt+3final MenuItem tjxx=new MenuItem(filemenu,SWT.RADIO);tjxx.setText(统计信息(A) Alt+4final MenuItem separator1 =new MenuItem(filemenu,
14、SWT.SEPARATOR);/分割线final MenuItem lsjl=new MenuItem(filemenu,SWT.CHECK);lsjl.setText(历史记录(Y) Ctrl+Hfinal MenuItem szfz=new MenuItem(filemenu,SWT.CHECK);szfz.setText(数字分组(I)final MenuItem separator2 =new MenuItem(filemenu,SWT.SEPARATOR);final MenuItem jb=new MenuItem(filemenu,SWT.RADIO);jb.setSelecti
15、on(true);jb.setText(基本(B) Ctrl+F4final MenuItem dwzh=new MenuItem(filemenu,SWT.RADIO);dwzh.setText(单位转换(U) Ctrl+Ufinal MenuItem rqjs=new MenuItem(filemenu,SWT.RADIO);rqjs.setText(日期计算(D) Ctrl+E/创建工作表子菜单final MenuItem gzb=new MenuItem(filemenu,SWT.CASCADE);gzb.setText(工作表(W)final Menu submenu=new Men
16、u(s,SWT.DROP_DOWN);gzb.setMenu(submenu);final MenuItem dy=new MenuItem(submenu,SWT.RADIO);dy.setText(抵押(M)final MenuItem qczl=new MenuItem(submenu,SWT.RADIO);qczl.setText(汽车租赁(V)final MenuItem yh1=new MenuItem(submenu,SWT.RADIO);yh1.setText(油耗(mpg)(F)final MenuItem yh2=new MenuItem(submenu,SWT.RADIO
17、);yh2.setText(油耗(1/100km)(U)/创建编辑菜单final MenuItem edit = new MenuItem(m,SWT.CASCADE);edit.setText(编辑(E)final Menu editmenu =new Menu(s,SWT.DROP_DOWN);edit.setMenu(editmenu);final MenuItem fz=new MenuItem(editmenu,SWT.PUSH);fz.setText(复制(C) Ctrl+Cfinal MenuItem zt=new MenuItem(editmenu,SWT.PUSH);zt.s
18、etText(粘贴 (V) Ctrl+Vfinal MenuItem separator3 =new MenuItem(filemenu,SWT.SEPARATOR);final MenuItem lsjl1=new MenuItem(editmenu,SWT.CASCADE);lsjl1.setText(历史记录(H)final Menu submenu1=new Menu(s,SWT.DROP_DOWN);lsjl1.setMenu(submenu1);final MenuItem fzlsjl=new MenuItem(submenu1,SWT.PUSH);fzlsjl.setText(
19、复制历史记录(I)final MenuItem bj=new MenuItem(submenu1,SWT.PUSH);bj.setText(编辑(E) F2final MenuItem qxbj=new MenuItem(submenu1,SWT.PUSH);qxbj.setText(取消编辑(N) Escfinal MenuItem qc=new MenuItem(submenu1,SWT.PUSH);qc.setText(清楚(L) Ctrl+Shift+D/创建帮助菜单final MenuItem help = new MenuItem(m,SWT.CASCADE);help.setTe
20、xt(帮助(H)/创建帮助菜单final Menu helpmenu =new Menu(s,SWT.DROP_DOWN);help.setMenu(helpmenu);final MenuItem ckbz=new MenuItem(helpmenu,SWT.PUSH);ckbz.setText(查看帮助(V) F1final MenuItem about=new MenuItem(helpmenu,SWT.PUSH);about.setText(关于计算机A) s.setMenuBar(m);/界面采用网格布局,5栏*GridLayout gl=new GridLayout();gl.nu
21、mColumns=5;s.setLayout(gl);/创建计算窗口,设置样式 Final Texttext Answer=newText(s,SWT.SINGLE|SWT.BORDER|SWT.READ_ONLY | SWT.RIGHT); textAnswer.setText( GridData gd=new GridData(GridData.FILL_BOTH); gd.horizontalSpan=5; textAnswer.setLayoutData(gd); /创建显示计算过程窗口,设置样式 final Text t2 = new Text(s,SWT.MULTI |SWT.BO
22、RDER|SWT.READ_ONLY | SWT.RIGHT | SWT.V_SCROLL | SWT.FocusOut); gd=new GridData(GridData.FILL_BOTH); gd.horizontalSpan=4; gd.verticalSpan=3; t2.setLayoutData(gd); /创建复制、保存、清除按钮,对t2操作,由后方监听器实现 final Button buttonCopy=new Button(s,SWT.PUSH); buttonCopy.setText(复制 final Button buttonSave=new Button(s,SWT.PUSH); buttonSave.setText(保存 final Button buttonClear=new Button(s,SWT.PUSH); buttonClear.setText(清除 /创建三角函数按钮 final Button buttonLog=new Button(s,SWT.PUSH); buttonLog.setText(log final Button buttonSin=new Button(s,SWT.PUSH); buttonSin.setText(sin final Button buttonCos=new But
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2