(完整版)Java课程设计报告27652265
更新时间:2023-09-25 08:41:01 阅读量: 综合文库 文档下载
课程设计(大作业)报告
课程名称:面向对象程序设计课程设计设计题目:院 系:班 级:设 计 者:学 号:指导教师:设计时间: 设计一个计算器 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的布局方法,将空间划分为由行和列组成的网格单元,每个单元放一个组件,网格单元大小可不同,
尽量将相同属性的按钮放在一个区域,方便操作。
⑵、计算器的基本功能:
①加法:两个数据进行加操作,可以为小数。 ②减法:两个数据进行减操作,可以为负数相减。 ③乘法:两个数相乘操作。 ④除法:两个数相除操作。
⑤开平方:对任意一个数进行开平方运算,可以是小数。 ⑥求余:对任意一个数进行求余运算。 ⑦倒数:对任意一个数进行倒数运算 功能可自行增加。
提示:添加相关组件并进行按钮事件处理。
二、需求分析
在日常生活中经常要用到计算器,比如科学计算器、数值计算、会计业务等,在Applet中实现一个精巧实用的计算器,可以让用户在使用网站服务的同时,可以很方便地进行数据运算,可增加页面的实用性,同时让用户的操作也更方便与快捷。本次实验要求实现一个具有四则运算的计算器,拥有加、减、乘、除、求余、求倒等功能,并且还要求具备清零等功能。
三、题目分析
计算器功能键的实现
actionPerformed(ActionEvent e)响应整个计算的文本框。这次设计的计算器计算功能主要包括加法、减法、乘法、除法、求平方根、取余,1/x将文本框中的数据为它的倒数,sqrt将文本框中的内容求平方根,且有小数点、正负号、求倒数、退格和清零等功能。其中还有一个缓存区,MC的功能是清除缓存区的数据,MR的功能是恢复缓冲区的数到文本框,MS功能是将文本框的数存入缓冲区,M+的功能是将文
本框值与缓冲区的数相加但不显示结果。
四、分工设计
⑴、程序代码
public Calculator() {
f = new JFrame(\计算器\创建一个框架 Container contentPane = f.getContentPane(); //菜单的创建
JMenuBar mBar = new JMenuBar();//实例化mbar菜单 mBar.setOpaque(true);
mEdit = new JMenu(\编辑(E)\mCopy = new JMenuItem(\复制(C)\mEdit.add(mCopy);
mPaste = new JMenuItem(\粘贴(P)\mEdit.add(mPaste);
mView = new JMenu(\查看(V)\
mView.add(new JMenuItem(\查看分组\mHelp = new JMenu(\帮助(H)\
mHelp.add(new JMenuItem(\帮助主题\ mHelp.add(new JMenuItem(\关于计算器\mBar.add(mEdit); mBar.add(mView); mBar.add(mHelp); f.setJMenuBar(mBar);
contentPane.setLayout(new BorderLayout());//使mbar菜单用Border布局
JPanel pt = new JPanel();//实例化pt容器 tText = new JTextField(\pt.add(tText);
contentPane.add(pt,BorderLayout.NORTH);//把pt容器用Border布局位于北面 JPanel pBottom = new JPanel();//实例化pBottom容器 pBottom.setLayout(new BorderLayout()); JPanel pPlef = new JPanel();//实例化pPlef容器 pPlef.setLayout(new GridLayout());
//pLeft容器用Grid布局5行1列,GridLayout以网格形式将组件放在同样大小的单元了
bEmptykey = new JButton(\pPlef.add(bEmptykey); //功能键定义
bLeftkey = new JButton(\对象 MC:清除存储器中的数值。 bLeftkey.addActionListener(this);//注册监听器 bLeftkey.setForeground(Color.blue); bLeftkey.setMargin(new Insets()); pPlef.add(bLeftkey);
bLeftkey = new JButton(\:将存于存储器中的数显示在计算器的显示框上
bLeftkey.addActionListener(this); bLeftkey.setForeground(Color.blue); bLeftkey.setMargin(new Insets()); pPlef.add(bLeftkey);
bLeftkey = new JButton(\:将显示框的数值存于存储器中。如果存储
器中有数值将会显示M标志 bLeftkey.addActionListener(this); bLeftkey.setForeground(Color.blue); bLeftkey.setMargin(new Insets()); pPlef.add(bLeftkey);
bLeftkey = new JButton(\:将显示框的数与存储器中的数相加并进行存储。
bLeftkey.addActionListener(this); bLeftkey.setForeground(Color.blue); bLeftkey.setMargin(new Insets()); pPlef.add(bLeftkey);
pBottom.add(pPlef,BorderLayout.WEST);//pPlef容器中用Border布局位于西面 JPanel pRight = new JPanel();//实例化pRight容器 pRight.setLayout(new BorderLayout());
//BorderLayout是在五个区域中排列组件,每个区域包含一个组件 JPanel pOn = new JPanel();//实例化pOn容器
pOn.setLayout(new GridLayout());//pOn容器用Grid布局1行3列 bLeftkey = new JButton(\
//\退格,删除当前输入数字中的最后一位 bLeftkey.addActionListener(this);
bLeftkey.setForeground(Color.blue);//将bOther的前景色设置为blue bLeftkey.setMargin(new Insets()); pOn.add(bLeftkey);
bLeftkey = new JButton(\清除,清除显示的数字 bLeftkey.addActionListener(this);
bLeftkey.setForeground(Color.blue); pOn.add(bLeftkey);
bLeftkey = new JButton(\归零,清除当前的计算 bLeftkey.addActionListener(this); bLeftkey.setForeground(Color.blue); pOn.add(bLeftkey); //数字键盘区定义
JPanel pNum = new JPanel();//实例化pNum容器
pNum.setLayout(new GridLayout());//pNum容器用Grid布局4行5列 bNumberkey = new JButton(\bNumberkey.setForeground(Color.blue); bNumberkey.addActionListener(this); bNumberkey.setMargin(new Insets());
pNum.add(bNumberkey);//在pNum容器中添加按键bNumber bNumberkey = new JButton(\bNumberkey.setForeground(Color.blue); bNumberkey.addActionListener(this); bNumberkey.setMargin(new Insets()); pNum.add(bNumberkey); bNumberkey = new JButton(\bNumberkey.setForeground(Color.blue); bNumberkey.addActionListener(this); bNumberkey.setMargin(new Insets()); pNum.add(bNumberkey); bOperator = new JButton(\
+int preoper,curOper=0=0 +double oper1=0,oper2=0 +StringBuffer copyBoard +StringBuffer memory +StringBuffer str + Calculator() void +actionPerformed(ActionEvent e) void
六、详细设计和主要代码
import java.awt.*; import java.awt.event.*; import javax.swing.*; //主类
public class Calculator implements ActionListener {//Calculator类继承ActionListener接口的所有常量 //实现接口
JFrame f;//定义文本框f JMenu mEdit;//定义编辑菜单 JMenu mView;//定义查看菜单 JMenu mHelp;//定义帮助菜单
JMenuItem mCopy;//编辑菜单下实现复制 JMenuItem mPaste;//编辑菜单下实现粘贴 JTextField tText;//编辑文本框
JButton bNumberkey;//定义功能键(操作数)
JButton bOperator;//定义功能键(运算符“+”,“/”等) JButton bLeftkey;//定义功能键(运算符“MR”等) JButton bEmptykey;//定义功能键 int preoper,curOper=0;
double oper1=0,oper2=0;//操作数
StringBuffer copykey=new StringBuffer(20); StringBuffer memory=new StringBuffer(20); StringBuffer str=new StringBuffer();
//StringBuffer类提供处理字符串缓冲区的方法 //Java计算器 构造器 public Calculator() {
f = new JFrame(\计算器\创建一个框架 Container contentPane = f.getContentPane(); //菜单的创建
JMenuBar mBar = new JMenuBar();//实例化mbar菜单 mBar.setOpaque(true);
mEdit = new JMenu(\编辑(E)\mCopy = new JMenuItem(\复制(C)\mEdit.add(mCopy);
mPaste = new JMenuItem(\粘贴(P)\mEdit.add(mPaste);
mView = new JMenu(\查看(V)\
mView.add(new JMenuItem(\查看分组\mHelp = new JMenu(\帮助(H)\
mHelp.add(new JMenuItem(\帮助主题\ mHelp.add(new JMenuItem(\关于计算器\mBar.add(mEdit); mBar.add(mView); mBar.add(mHelp); f.setJMenuBar(mBar);
contentPane.setLayout(new BorderLayout());//使mbar菜单用Border布局 JPanel pt = new JPanel();//实例化pt容器 tText = new JTextField(\pt.add(tText);
contentPane.add(pt,BorderLayout.NORTH);//把pt容器用Border布局位于北面 JPanel pBottom = new JPanel();//实例化pBottom容器 pBottom.setLayout(new BorderLayout()); JPanel pPlef = new JPanel();//实例化pPlef容器 pPlef.setLayout(new GridLayout());
//pLeft容器用Grid布局5行1列,GridLayout以网格形式将组件放在同样大小的单元了
bEmptykey = new JButton(\pPlef.add(bEmptykey); //功能键定义
bLeftkey = new JButton(\//对象 MC:清除存储器中的数值。 bLeftkey.addActionListener(this);//注册监听器 bLeftkey.setForeground(Color.blue); bLeftkey.setMargin(new Insets()); pPlef.add(bLeftkey);
bLeftkey = new JButton(\//MR:将存于存储器中的数显示在计算器的显示框上 bLeftkey.addActionListener(this); bLeftkey.setForeground(Color.blue); bLeftkey.setMargin(new Insets()); pPlef.add(bLeftkey);
bLeftkey = new JButton(\;//MS:将显示框的数值存于存储器中。如果存储器中有数值将会显示M标志
bLeftkey.addActionListener(this); bLeftkey.setForeground(Color.blue); bLeftkey.setMargin(new Insets()); pPlef.add(bLeftkey);
bLeftkey = new JButton(\//M+:将显示框的数与存储器中的数相加并进行存储。
bLeftkey.addActionListener(this); bLeftkey.setForeground(Color.blue); bLeftkey.setMargin(new Insets()); pPlef.add(bLeftkey);
pBottom.add(pPlef,BorderLayout.WEST);//pPlef容器中用Border布局位于西面 JPanel pRight = new JPanel();//实例化pRight容器
pRight.setLayout(new BorderLayout());//BorderLayout是在五个区域中排列组件,每个区域包含一个组件
JPanel pOn = new JPanel();//实例化pOn容器
pOn.setLayout(new GridLayout());//pOn容器用Grid布局1行3列
bLeftkey = new JButton(\//\退格,删除当前输入数字中的最后一位
bLeftkey.addActionListener(this);
bLeftkey.setForeground(Color.blue);//将bOther的前景色设置为blue bLeftkey.setMargin(new Insets()); pOn.add(bLeftkey);
bLeftkey = new JButton(\//\清除,清除显示的数字 bLeftkey.addActionListener(this); bLeftkey.setForeground(Color.blue); pOn.add(bLeftkey);
bLeftkey = new JButton(\/\归零,清除当前的计算 bLeftkey.addActionListener(this); bLeftkey.setForeground(Color.blue); pOn.add(bLeftkey); //数字键盘区定义
JPanel pNum = new JPanel();//实例化pNum容器
pNum.setLayout(new GridLayout());//pNum容器用Grid布局4行5列 bNumberkey = new JButton(\bNumberkey.setForeground(Color.blue); bNumberkey.addActionListener(this); bNumberkey.setMargin(new Insets());
pNum.add(bNumberkey);//在pNum容器中添加按键bNumber bNumberkey = new JButton(\bNumberkey.setForeground(Color.blue); bNumberkey.addActionListener(this); bNumberkey.setMargin(new Insets()); pNum.add(bNumberkey);
正在阅读:
9第九章 骨骼肌肉系统06-12
高中军训日记850字10-29
c++练习习题(带答案)4065603-17
校园的海棠花作文500字06-29
2013年和2012年上海财经大学国际商务初试试题11-03
老师年度教学教研工作总结范文参考04-21
化工原理选择题题库-传热02-01
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 整版
- 27652265
- 课程
- 报告
- 设计
- Java
- 四川省南充高级中学高三1月检测考试理综物理试题
- 如何做一名合格的学习型共产党员
- 贵州旅游业的发展现状分析及对策
- 高二化学选修3第三章第二节 - 分子晶体与原子晶体学案
- 河南广播电视大学2007-2008学年度第二学期期末考试合同法
- 一般纳税人销售旧固定资产账务处理
- 中国碳布产业专项调查及未来五年投资价值分析报告
- 大学生意识形态安全教育思考
- 2015江西银行春季招聘行测备考选词填空近义词辨析
- 高考作文选江苏2019年高考优秀作文品味时尚3
- 道家养生思想
- 35KV变电站防雷接地技术毕业论文
- 人教版高中语文高一必修一《雨巷》 教学 设计
- 作业规程(运输大巷)
- 农资物流配送中心项目立项申请报告
- 名词解释
- APSNET沈士根实验报告(二)
- 电梯维修保养工作质量考核标准
- 江苏省南京市上元中学2013-2014学年七年级语文下册《第17课 安塞腰鼓》(第2课时)教案 新人教版
- 2013-2018年中国弹力布印染产业发展前景及供需格局预测报告