JAVA课设模拟计算机报告含源代码.docx
- 文档编号:9412420
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:26
- 大小:76.02KB
JAVA课设模拟计算机报告含源代码.docx
《JAVA课设模拟计算机报告含源代码.docx》由会员分享,可在线阅读,更多相关《JAVA课设模拟计算机报告含源代码.docx(26页珍藏版)》请在冰豆网上搜索。
JAVA课设模拟计算机报告含源代码
中南大学
Java课程设计报告
题目:
模拟计算器
学生姓名:
马俊
指导教师:
穆帅
学院:
信息科学与工程学院
专业班级:
计科1202
完成时间:
2015-01-15
第一章.绪论
1.1课设题目要求
【问题描述】设计实现一个模拟计算器,能进行整数的加、减、乘、除等四则运算。
1.2课设目的分析
通过设计实现一个模拟计算器,掌握java语言面向对象的特点,并熟练界面(GUI)开发,,进一步提高学生的JAVA语言综合能力和程序设计技能,锻炼运用JAVA语言解决实际问题的能力,培养学生在项目开发中团队合作精神、创新意识及能力。
1.3设计思想
对于此计算器程序,首先要设计其GUI界面,总体界面有一个文本框,18个按钮,总体界面用BorderLayout布局。
文本框放置在最NORTH,然后0到9以及+,-,*,/的按钮放置到一个面板Panel中,添加到整体布局的CENTER,界面设计完成。
布局设计好后再添加按钮事件。
对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。
这是计算器中的一种:
简单计算器,本项目用到了Java中的GUI界面和swing组件以及awt布局,所以简单易用,它能完成如下的几个小功能:
点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除求模四则运算;
第二章.系统需求分析
2.1实验环境
2.1.1操作系统
Windows7
2.2.2编译软件
Eclipse
2.2图形界面设计
通过图形界面设计,掌握JFrame类、JPanel类、5种布局管理器、文本框、标签及按钮的使用方法。
2.3基本功能
包括加减乘除四则运算、倒数、平方根及清除结果等功能。
2.4特殊功能
通过按钮点击实现数据的复位(清零),回退,以及记忆加,记忆减,记忆功能。
第三章.系统总体设计
3.1系统界面结构图
图3.1
3.2详细设计
3.2.1主界面设计
显示框数字及操作按钮菜单栏
图3.2.1
3.2.2具体功能设计
主框架及界面的设置
this.setLayout(newBorderLayout(5,5));
this.add(createPN(),BorderLayout.NORTH);
this.add(createPW(),BorderLayout.WEST);
this.add(createPC(),BorderLayout.CENTER);
Fontfonts=newFont("楷体",Font.PLAIN,25);
super.setFont(fonts);
tfNumber.setFont(fonts);
tfNumber.setHorizontalAlignment(JTextField.RIGHT);
this.setSize(400,250);
主界面包括数字按钮,功能按钮,显示栏以及菜单栏,显示栏用JTextField()实现,整体布局使用边界布局,菜单栏使用JMenu()实现,主界面用将不同的面板添加到一个框架上的方法实现。
为所有按钮添加事件的监听
jbt.addActionListener(this);
jbt.addActionListener(this);
sech.addActionListener(newActionListener())
about.addActionListener(newActionListener())
为所有的按钮添加事件的监听,并绑定功能与事件的触发,
四则运算算法的实现
d1=Double.parseDouble(tfNumber.getText());
switch(k1){
case0:
k1=-1;
d2+=Double.parseDouble(tfNumber.getText());
tfNumber.setText(Double.toString(d2));
break;
case1:
k1=-1;
d2-=Double.parseDouble(tfNumber.getText());
tfNumber.setText(Double.toString(d2));
break;
case2:
k1=-1;
d2*=Double.parseDouble(tfNumber.getText());
tfNumber.setText(Double.toString(d2));
break;
case3:
k1=-1;
if(tfNumber.getText().equals("0")){
tfNumber.setText("除数不能为零");
number=false;
}else{
k1=-1;
d2/=Double.parseDouble(tfNumber.getText());
tfNumber.setText(Double.toString(d2));
break;
}
第四章.系统调试
4.1系统功能界面
4.2课设过程中遇到的问题及解决方法
4.2.1记忆功能的实现
一般的计算器都具有记忆功能,为了实现计算器的记忆功能,设置了一个双精度型浮点数用来寄存所记忆的数字,从而实现了计算器的记忆功能。
4.2.2小数点问题的解决
在计算器中小数点只能输入一次,重复按小数点只显示一个小数点,只需设置一个标志位,便可以解决小数点的所有问题。
case'.':
tcnt=tfNumber.getText();
booleang=false;
//对计算栏中的数据进行检验
//如果其中有小数点则用户再次单机按钮不添加小数点
for(inti=0;i if(tcnt.charAt(i)=='.'){ g=true; break; } } //数据中已有小数点 if(g==true){ break; } if(g==false){ tfNumber.setText(tcnt+"."); } 第五章.收获与感想 这次Java课设是自己完全用心做的一次,由于知道自己能力水平,所以在选题的时候,选了这个比较简单的模拟计算器,题目虽然简单,但自己却是用心做了,而且在做的过程也学会了很多东西,从开始界面的布局,到最后附加功能的添加,事件的绑定,以及一些菜单栏的细节信息的添加,都是自己认证思考然后设计,有时候总做不出自己想要的界面,然后又去查相关界面布局等方面的知识,通过自己查到的以及参考其他程序相关的代码,终于写出了让自己满意的界面,但是最后不在异常的处理上自己还是有考虑不到的地方,有些比较明显的异常,并没有捕获并且处理,说明自己在写程序方面还是有考虑不周全,以后要多多注意这方面的问题,通过这次课设,自己对eclipse这个编译平台的了解也得到巩固,深刻体会到理论与实际相结合的重要性,也使自己明白只有不断的去尝试编写更多的程序,才能成为一名优秀的程序员,Java语言是所有高级语言中最受欢迎的语言之一,随着以后移动设备的发展,已经安卓系统在移动设备中所占用的份额,Java语言也将成为越来越重要的语言,因此,作为一名准程序员,熟悉以及精通Java语言的是基本技能之一,但是Java编程思想博大精深,自己还有很漫长的学习过程要经历,只有不断地尝试努力,才能成为一名优秀的程序员。 第六章.关键代码附录 请参考0909120716-马俊-源代码.docx 【参考文献】 《Java语言程序设计》……………………郭克华主编,清华大学出版社 《Java语言程序设计课程时间》……………………陈明主编,清华大学出版社 《Java程序设计实验指导与习题测试》……………………余青松主编,清华大学出版社 《Java编程思想》……………………埃克尔主编,机械工业出版社 附录: packagecalc; importjava.awt.*; importjavax.swing.*; importjava.awt.event.*; importjava.lang.Math; publicclassCalcextendsJFrameimplementsActionListener{ privateJMenuBarmb=newJMenuBar(); privateJMenuhelp=newJMenu("帮助(H)"); privateJMenuauthor=newJMenu("查看(S)"); privateJMenuItemsech=newJMenuItem("查看帮助"); privateJMenuItemabout=newJMenuItem("关于计算器"); privateJMenuItemauth=newJMenuItem("关于作者"); privateImageimg; privatedoubled0=0.0,d1=0.0,d2=0.0; privateStringtcnt;//用来存储计算栏中的内容 booleannumber=false;//用来标记用户是否是数字 shortk1=-1;//k1用来标示用户所按下的计算按钮即加减乘除,k1为0表示+,k1为1表示-,k1为2表示*,k1为3表示/ //k2取值-1~5,k2为-1,表示第一次按下=按钮,为5说明不是第一次按下=按钮 //k2为0,1,2,3分别代表+,-,*,/ shortk2=-1; JTextFieldtfNumber=newJTextField(15); //文本输入框 publicJPanelcreatePN(){ JPanelpn=newJPanel(); pn.setLayout(newBorderLayout(5,5)); pn.add(tfNumber,BorderLayout.CENTER); returnpn; } //最左边的一栏 publicJPanelcreatePW(){ JPanelpw=newJPanel(); pw.setLayout(newGridLayout(5,1,5,5)); JButton[]jbts=newJButton[5]; String[]labels=newString[]{"MC","MR","MS","M+","M-"}; for(inti=0;i JButtonjbt=newJButton(labels[i]); jbt.setForeground(Color.red); pw.add(jbt); jbt.addActionListener(this); } returnpw; } publicJPanelcreatePC(){ JPanelpc=newJPanel(); pc.setLayout(newBorderLayout(5,5)); pc.add(createPCN(),BorderLayout.NORTH); pc.add(createPCC(),BorderLayout.SOUTH); returnpc; } publicJPanelcreatePCN(){ JPanelpcn=newJPanel(); pcn.setLayout(newGridLayout(1,3,5,5)); JButton[]jbts=newJButton[3]; String[]labels=newString[]{"Backspace","CE","C"}; for(inti=0;i JButtonjbt=newJButton(labels[i]); jbt.setForeground(Color.red); pcn.add(jbt); jbt.addActionListener(this); } returnpcn; } publicJPanelcreatePCC(){ JPanelpcc=newJPanel(); pcc.setLayout(newGridLayout(4,5,5,5)); JButton[]jbts=newJButton[20]; String[]labels=newString[]{"7","8","9","/","sqrt","4","5", "6","*","%","1","2","3","-","1/x","0","+/-",".","+", "="}; for(inti=0;i JButtonjbt=newJButton(labels[i]); if(labels[i].endsWith("+")||labels[i].endsWith("-") ||labels[i].endsWith("*")||labels[i].endsWith("/")){ jbt.setForeground(Color.red); }else{ jbt.setForeground(Color.BLUE); } pcc.add(jbt); jbt.addActionListener(this); } returnpcc; } publicvoidactionPerformed(ActionEventae){ Strings; s=ae.getActionCommand(); /*MS表示存储显示栏中的数字到d1 *MR表示在显示栏中显示存储的数字 *MC表示清除存储的数字 *M+表示将显示栏中的数字加到存储的数字上 *M-表示存储的数字减去显示栏中的数字 */ if(s.equals("MC")&&number){ d0=0.0;} if(s.equals("MS")&&number){ d0=Double.parseDouble(tfNumber.getText());} if(s.equals("MR")&&number){ tfNumber.setText(Double.toString(d0));} if(s.equals("M+")&&number){ tfNumber.setText(Double.toString(d0+Double.parseDouble(tfNumber.getText())));} if(s.equals("M-")&&number){ tfNumber.setText(Double.toString(d0-Double.parseDouble(tfNumber.getText())));} if(s.equals("Backspace")&&number){ tcnt=tfNumber.getText(); tfNumber.setText(""); //先将计算栏里的字符清空,再添加出最后一个字符的字符串 for(inti=0;i charc=tcnt.charAt(i); tfNumber.setText(tfNumber.getText()+c); } } //清空计算栏 if(s.equals("CE")){ tfNumber.setText(""); number=false; } if(s.equals("C")){ tfNumber.setText(""); d2=0.0; d1=0.0; number=false; } if(s.equals("sqrt")&&number){ tcnt=tfNumber.getText(); if(tcnt.charAt(0)=='-'){ tfNumber.setText("负数不能被开放"); number=false; }else{ tfNumber.setText(Double.toString(Math.sqrt(Double .parseDouble(tcnt)))); } } //点击1/x求倒数按钮&&求倒数分母不能为0 if(s.equals("1/x")&&number){ tcnt=tfNumber.getText(); if(tcnt.equals("0")){ tfNumber.setText("求倒数分母不能为零"); number=false; }else{ tfNumber.setText(Double.toString(1/Double.parseDouble(tcnt))); } } //取余数运算 if(s.equals("%")&&number){ if(d2==0){ tcnt=tfNumber.getText(); tfNumber.setText(tcnt); }else{ booleang=false; for(inti=0;i if(tfNumber.getText().charAt(i)=='.'){ g=true; break; } //double直接除100 if(g==true){ doubledtemp=Double.parseDouble(tfNumber.getText()); dtemp=dtemp/100.0; tfNumber.setText(Double.toString(dtemp)); }else{ if(Integer.parseInt(tfNumber.getText())%100==0){ intitemp=Integer.parseInt(tfNumber.getText()); itemp/=100; tfNumber.setText(Integer.toString(itemp)); }else{ doubledtemp=Double.parseDouble(tfNumber .getText()); dtemp=dtemp/100.0; tfNumber.setText(Double.toString(dtemp)); } } } }} //对正负数的处理 if(s.equals("+/-")){ tcnt=tfNumber.getText(); if(tcnt.charAt(0)=='-'){ tfNumber.setText(""); for(inti=1;i tfNumber.setText(tfNumber.getText()+tcnt.charAt(i)); } }else{ tfNumber.setText("-"+tcnt); } } //按下+号 if(s.equals("+")){ switch(k2){ case0: d2+=Double.parseDouble(tfNumber.getText()); break; case1: d2+=Double.parseDouble(tfNumber.getText()); break; case2: d2+=Double.parseDouble(tfNumber.getText()); break; case3: if(tfNumber.getText().equals("0")){ tfNumber.setText("除数不能为零"); number=false; }else{ k1=-1; d2/=d1; tfNumber.setText(Double.toString(d2)); break; } default: d2=Double.parseDouble(tfNumber.getText()); } k2=k1=0; tfNumber.setText(""); } //按下减号 if(s.equals("-")){ switch(k2){ case0: d2+=Double.parseDouble(tfNumber.getText()); break; case1: d2+=Double.parseDouble(tfNumber.getText()); break; case2: d2+=Double.parseDouble(tfNumber.getText()); break;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 模拟 计算机 报告 源代码