Java课程设计报告75472506.docx
- 文档编号:26861187
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:30
- 大小:45.25KB
Java课程设计报告75472506.docx
《Java课程设计报告75472506.docx》由会员分享,可在线阅读,更多相关《Java课程设计报告75472506.docx(30页珍藏版)》请在冰豆网上搜索。
Java课程设计报告75472506
课程设计(大作业)报告
课程名称:
面向对象程序设计课程设计
设计题目:
设计一个计算器
院系:
班级:
设计者:
学号:
指导教师:
设计时间:
2013.1..1.18
课程设计(大作业)任务书
姓名:
院(系):
专业:
学号
任务起止日期:
2013.1..1.18
课程设计题目:
设计一个计算器,具有加减乘除的计算器,可扩展功能
课程设计要求:
本次课程设计是对前面学过的所有面向对象的编程思想以及编程方法的一个总结、回顾和实践。
⑴.开始设计前学生一定要先回顾以前所学的内容,明确本课程设计所要用到的技术点并到网上搜索以及查阅相关的书籍来搜集资料。
⑵.通过编写一个基于JAVA的应用系统综合实例,要求学生熟练掌握Java语言设计一个完整的应用程序的设计方法和步骤(软件的分析、设计、调试和总结)。
⑶.要求每个学生应在规定时间内,在相关软、硬件的环境下,由指导老师指导独立完成各阶段设计任务。
工作计划及安排:
这次的实验内容是计算器的设计,中间主要涉及的内容有:
Java计算器主类;Java计
算器菜单的创建;Java计算器功能键定义;Java计算器数字键盘区定义;Java计算器计
算方法区。
1月14号上午在机房进行题目分析,最后确定做的题目,并查找资料。
1月14号下午在机房进行基本的题目分工,进行分工工作。
我负责计算器图形界面设计方法的实现;耿粉团负责计算器的个功能实现。
1月15号在机房进行编写程序,实现各功能。
1月16号在机房编写与调试程序以及相关内容的注释。
1月17号修改程序的不足之处,并优化程序。
指导教师签字
2013年1月14日
课程设计(大作业)成绩
学号:
姓名:
指导教师:
课程设计题目:
设计一个计算器,具有加减乘除的计算器,可扩展功能
总结:
在实训的这五天期间,使我弄懂许多问题,例如实现接口,图形界面设计等。
比如说实现事件响应的步骤有:
第一:
注册监听器;
第二:
触发;
第三:
事件响应。
查询API手册也使我明白更多函数的功能与应用,容器,添加面板、文本框、按钮、菜单等等。
JButton,JMenu,JMenuItem,JTextField,StringBuffer。
还有窗口框架的设计,Border布局、Grid布局和Flow布局,只用单一的布局是弄不好一个完美的窗口框架的,所以要综合使用布局管理。
指导教师评语:
成绩:
填表时间:
2013.1.20指导教师签名:
洪孙焱
目录
课程设计(大作业)报告4
一、题目要求4
⑴、界面设计4
⑵、计算器的基本功能4
二、需求分析4
三、题目分析5
四、分工设计5
⑴、程序代码5
⑵、运行结果截图9
五、总体设计10
⑴流程图10
⑵UML图11
六、详细设计和主要代码11
七、运行结果21
八、总结21
九、参考文献22
课程设计(大作业)报告
一、题目要求
⑴、界面设计
首先按设计要求实现其基本功能,其次设计布局,按照GridLayoutd的布局方法,将空间划分为由行和列组成的网格单元,每个单元放一个组件,网格单元大小可不同,尽量将相同属性的按钮放在一个区域,方便操作。
⑵、计算器的基本功能:
①加法:
两个数据进行加操作,可以为小数。
②减法:
两个数据进行减操作,可以为负数相减。
③乘法:
两个数相乘操作。
④除法:
两个数相除操作。
⑤开平方:
对任意一个数进行开平方运算,可以是小数。
⑥求余:
对任意一个数进行求余运算。
⑦倒数:
对任意一个数进行倒数运算
功能可自行增加。
提示:
添加相关组件并进行按钮事件处理。
2、需求分析
在日常生活中经常要用到计算器,比如科学计算器、数值计算、会计业务等,在Applet中实现一个精巧实用的计算器,可以让用户在使用网站服务的同时,可以很方便地进行数据运算,可增加页面的实用性,同时让用户的操作也更方便与快捷。
本次实验要求实现一个具有四则运算的计算器,拥有加、减、乘、除、求余、求倒等功能,并且还要求具备清零等功能。
3、题目分析
计算器功能键的实现
actionPerformed(ActionEvente)响应整个计算的文本框。
这次设计的计算器计算功能主要包括加法、减法、乘法、除法、求平方根、取余,1/x将文本框中的数据为它的倒数,sqrt将文本框中的内容求平方根,且有小数点、正负号、求倒数、退格和清零等功能。
其中还有一个缓存区,MC的功能是清除缓存区的数据,MR的功能是恢复缓冲区的数到文本框,MS功能是将文本框的数存入缓冲区,M+的功能是将文本框值与缓冲区的数相加但不显示结果。
四、分工设计
⑴、程序代码
publicCalculator()
{
f=newJFrame("计算器");//创建一个框架
ContainercontentPane=f.getContentPane();
//菜单的创建
JMenuBarmBar=newJMenuBar();//实例化mbar菜单
mBar.setOpaque(true);
mEdit=newJMenu("编辑(E)");
mCopy=newJMenuItem("复制(C)");
mEdit.add(mCopy);
mPaste=newJMenuItem("粘贴(P)");
mEdit.add(mPaste);
mView=newJMenu("查看(V)");
mView.add(newJMenuItem("查看分组"));
mHelp=newJMenu("帮助(H)");
mHelp.add(newJMenuItem("帮助主题"));
mHelp.add(newJMenuItem("关于计算器"));
mBar.add(mEdit);
mBar.add(mView);
mBar.add(mHelp);
f.setJMenuBar(mBar);
contentPane.setLayout(newBorderLayout());//使mbar菜单用Border布局
JPanelpt=newJPanel();//实例化pt容器
tText=newJTextField("",26);
pt.add(tText);
contentPane.add(pt,BorderLayout.NORTH);//把pt容器用Border布局位于北面
JPanelpBottom=newJPanel();//实例化pBottom容器
pBottom.setLayout(newBorderLayout());
JPanelpPlef=newJPanel();//实例化pPlef容器
pPlef.setLayout(newGridLayout());
//pLeft容器用Grid布局5行1列,GridLayout以网格形式将组件放在同样大小的单元了
bEmptykey=newJButton("");
pPlef.add(bEmptykey);
//功能键定义
bLeftkey=newJButton("MC");//对象MC:
清除存储器中的数值。
bLeftkey.addActionListener(this);//注册监听器
bLeftkey.setForeground(Color.blue);
bLeftkey.setMargin(newInsets());
pPlef.add(bLeftkey);
bLeftkey=newJButton("MR");//MR:
将存于存储器中的数显示在计算器的显示框上
bLeftkey.addActionListener(this);
bLeftkey.setForeground(Color.blue);
bLeftkey.setMargin(newInsets());
pPlef.add(bLeftkey);
bLeftkey=newJButton("MS");//MS:
将显示框的数值存于存储器中。
如果存储器中有数值将会显示M标志
bLeftkey.addActionListener(this);
bLeftkey.setForeground(Color.blue);
bLeftkey.setMargin(newInsets());
pPlef.add(bLeftkey);
bLeftkey=newJButton("M+");//M+:
将显示框的数与存储器中的数相加并进行存储。
bLeftkey.addActionListener(this);
bLeftkey.setForeground(Color.blue);
bLeftkey.setMargin(newInsets());
pPlef.add(bLeftkey);
pBottom.add(pPlef,BorderLayout.WEST);//pPlef容器中用Border布局位于西面
JPanelpRight=newJPanel();//实例化pRight容器
pRight.setLayout(newBorderLayout());
//BorderLayout是在五个区域中排列组件,每个区域包含一个组件
JPanelpOn=newJPanel();//实例化pOn容器
pOn.setLayout(newGridLayout());//pOn容器用Grid布局1行3列
bLeftkey=newJButton("BackSpace");
//"Backspace"退格,删除当前输入数字中的最后一位
bLeftkey.addActionListener(this);
bLeftkey.setForeground(Color.blue);//将bOther的前景色设置为blue
bLeftkey.setMargin(newInsets());
pOn.add(bLeftkey);
bLeftkey=newJButton("CE");//"CE"清除,清除显示的数字
bLeftkey.addActionListener(this);
bLeftkey.setForeground(Color.blue);
pOn.add(bLeftkey);
bLeftkey=newJButton("C");//"C"归零,清除当前的计算
bLeftkey.addActionListener(this);
bLeftkey.setForeground(Color.blue);
pOn.add(bLeftkey);
//数字键盘区定义
JPanelpNum=newJPanel();//实例化pNum容器
pNum.setLayout(newGridLayout());//pNum容器用Grid布局4行5列
bNumberkey=newJButton("7");
bNumberkey.setForeground(Color.blue);
bNumberkey.addActionListener(this);
bNumberkey.setMargin(newInsets());
pNum.add(bNumberkey);//在pNum容器中添加按键bNumber
bNumberkey=newJButton("8");
bNumberkey.setForeground(Color.blue);
bNumberkey.addActionListener(this);
bNumberkey.setMargin(newInsets());
pNum.add(bNumberkey);
bNumberkey=newJButton("9");
bNumberkey.setForeground(Color.blue);
bNumberkey.addActionListener(this);
bNumberkey.setMargin(newInsets());
pNum.add(bNumberkey);
bOperator=newJButton("/");
bOperator.setForeground(Color.blue);
bOperator.addActionListener(this);
bOperator.setMargin(newInsets());
pNum.add(bOperator);
bOperator=newJButton("sqrt");
bOperator.addActionListener(this);
bOperator.setForeground(Color.blue);
bOperator.setMargin(newInsets());
pNum.add(bOperator);
bNumberkey=newJButton("4");
bNumberkey.setForeground(Color.blue);
bNumberkey.addActionListener(this);
bNumberkey.setMargin(newInsets());
bNumberkey.setHorizontalTextPosition(JButton.LEFT);
pNum.add(bNumberkey);
bNumberkey=newJButton("5");
bNumberkey.setForeground(Color.blue);
bNumberkey.addActionListener(this);
bNumberkey.setMargin(newInsets());
pNum.add(bNumberkey);
bNumberkey=newJButton("6");
bNumberkey.setForeground(Color.blue);
bNumberkey.addActionListener(this);
bNumberkey.setMargin(newInsets());
pNum.add(bNumberkey);
bOperator=newJButton("*");
bOperator.setForeground(Color.blue);
bOperator.addActionListener(this);
bOperator.setMargin(newInsets());
pNum.add(bOperator);
bOperator=newJButton("%");
bOperator.setForeground(Color.blue);
bOperator.addActionListener(this);
bOperator.setMargin(newInsets());
pNum.add(bOperator);
bNumberkey=newJButton("1");
bNumberkey.setForeground(Color.blue);
bNumberkey.addActionListener(this);
bNumberkey.setMargin(newInsets());
pNum.add(bNumberkey);
bNumberkey=newJButton("2");
bNumberkey.setForeground(Color.blue);
bNumberkey.addActionListener(this);
bNumberkey.setMargin(newInsets());
pNum.add(bNumberkey);
bNumberkey=newJButton("3");
bNumberkey.setForeground(Color.blue);
bNumberkey.addActionListener(this);
bNumberkey.setMargin(newInsets());
pNum.add(bNumberkey);
bOperator=newJButton("-");
bOperator.setForeground(Color.blue);
bOperator.addActionListener(this);
bOperator.setMargin(newInsets());
pNum.add(bOperator);
bOperator=newJButton("1/x");
bOperator.setForeground(Color.blue);
bOperator.addActionListener(this);
pNum.add(bOperator);
bNumberkey=newJButton("0");
bNumberkey.setForeground(Color.blue);
bNumberkey.addActionListener(this);
bNumberkey.setMargin(newInsets());
pNum.add(bNumberkey);
bOperator=newJButton("+/-");//按下(+/-)键可改变数字的正负值。
bOperator.setForeground(Color.blue);
bOperator.addActionListener(this);
bOperator.setMargin(newInsets());
pNum.add(bOperator);
bOperator=newJButton(".");
bOperator.setForeground(Color.blue);
bOperator.addActionListener(this);
bOperator.setMargin(newInsets());
pNum.add(bOperator);
bOperator=newJButton("+");
bOperator.setForeground(Color.blue);
bOperator.addActionListener(this);
bOperator.setMargin(newInsets());
pNum.add(bOperator);
bOperator=newJButton("=");
bOperator.setForeground(Color.blue);
bOperator.addActionListener(this);
bOperator.setMargin(newInsets());
pNum.add(bOperator);
pRight.add(pOn,BorderLayout.NORTH);//pOn容器中的按键用Border布局位于北面
pRight.add(pNum,BorderLayout.SOUTH);//pNum容器中的按键用Border布局位于南面
pBottom.add(pRight,BorderLayout.EAST);//pRight容器中的按键用Border布局位于东面
contentPane.add(pBottom,BorderLayout.SOUTH);//pBottom容器中的按键用Border布局位于南面
f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
f.setSize();//指定框架的大小
f.setVisible(true);//显示框架
}
//计算方法区
⑵、运行结果截图
五、总体设计
流程图(运行的过程),UML图(类:
常量、方法类的关系)
⑴流程图
⑵UML图
Calculator
+JFramef
+JMenumEdit
+JMenumView
+JMenumHelp
+JMenuItemmCopy
+JMenuItemmPaste
+JTextFieldtText
+JButtonbNumberkey
+JButtonbOperator
+JButtonbLeftkey
+JButtonbEmptykey
+intpreoper,curOper=0=0
+doubleoper1=0,oper2=0
+StringBuffercopyBoard
+StringBuffermemory
+StringBufferstr
+Calculator()void
+actionPerformed(ActionEvente)void
六、详细设计和主要代码
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
//主类
publicclassCalculatorimplementsActionListener{//Calculator类继承ActionListener接口的所有常量
//实现接口
JFramef;//定义文本框f
JMenumEdit;//定义编辑菜单
JMenumView;//定义查看菜单
JMenumHelp;//定义帮助菜单
JMenuItemmCopy;//编辑菜单下实现复制
JMenuItemmPaste;//编辑菜单下实现粘贴
JTextFieldtText;//编辑文本框
JButtonbNumberkey;//定义功能键(操作数)
JButtonbOperator;//定义功能键(运算符“+”,“/”等)
JButtonbLeftkey;//定义功能键(运算符“MR”等)
JButtonbEmptykey;//定义功能键
intpreoper,curOper=0;
doubleoper1=0,oper2=0;//操作数
StringBuffercopykey=newStringBuffer(20);
StringBuffermemory=newStringBuffer(20);
StringBufferstr=newStringBuffer();
//StringBuffer类提供处理字符串缓冲区的方法
//Java计算器构造器
publicCalculator()
{
f=newJFrame("计算器");//创建一个框架
ContainercontentPane=f.getContentPane();
//菜单的创建
JMenuBarmBar=newJMenuBar();//实例化mbar菜单
mBar.setOpaque(true);
mEdit=newJMenu("编辑(E)");
mCopy=newJMenuItem("复制(C)");
mEdit.add(mCopy);
mPaste=newJMenuItem("粘贴(P)");
mEdit.add(mPaste);
mView=newJMenu("查看(V)");
mView.add
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 课程设计 报告 75472506
![提示](https://static.bdocx.com/images/bang_tan.gif)