免费预览已结束,剩余10页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计(论文)任务书 软件 学院 软件工程+会计学 专业 2007- 2 班 一、课程设计(论文)题目 复杂计算器的设计 二、课程设计(论文)工作自 2009 年 6 月 15 日起至 2009 年 6月 19 日止。三、课程设计(论文) 地点: 创新大楼软件学院机房 四、课程设计(论文)内容要求:1本课程设计的目的 (1)通过课程设计把课堂上讲的内容融会贯通,学会设计程序、开发应用软件、开发系统软件等各项工作。 (2)通过实习掌握语言的语法结构,理解类和对象的概念,准确的使用各种数据类型,对面向对象中的继承和多态的概念要理解、会使用,在程序中提高代码的重用性,使设计的程序结构清晰、易于维护。2课程设计的任务及要求1)基本要求:设计一个复杂的计算器,能实现Windows系统中计算器的功能 。 (1)定义组件:09,+、-、*、/、C=按钮;显示屏文本行;菜单; (2)要求能关闭窗口;点击按钮,或键盘数字会在显示屏上输出结果; . (3)具有进制转换功能 2)创新要求: 此次代码基本达到了题目所要求的内容,能够较好的实现其基本功能。在设计页面方面有一放大了Applet界面,使得窗口更加美观。 特别是在进制转换方面摒弃以往利用自行设计函数的繁琐方法,而是直接调用Java中自带的数学函数将其进行转换。各个算法的实现也简单化方法明朗。 窗口显示全部输入,使得显示的输入和输出更加清楚,这样能够使使用者及早发现问题并进行及时更改。3)课程设计论文编写要求(1)要按照书稿的规格打印与写课程设计论文 (2)论文包括目录、设计思路、具体实现、运行调试与分析讨论、设计体会与小结、参考文献、附录(源代码)等 (3)课程设计论文装订按学校的统一要求完成4)答辩与评分标准: (1)完成基本算法设计:20分; (2)完成设计过程 :40分; (3)完成调试:20分;(4)回答问题:20分。5)参考文献:丁振凡 Java语言使用教程(第二版) 北京邮电大学出版社2008年1月(美)Bruce Eckel著 陈昊鹏 译Java编程思想 机械工业出版社2008年11月http;/6)课程设计进度安排内容 天数地点构思及收集资料 1图书馆编码与调试 2.5实验室撰写论文 1.5图书馆、实验室学生签名: 2009年6 月 15 日课程设计(论文)评审意见(1)完成基本算法(20分):优()、良()、中()、一般()、差(); (2)完成调试(20分):优()、良()、中()、一般()、差(); (3)创新设计(20分):优()、良()、中()、一般()、差();(4)设计分析(20分):优()、良()、中()、一般()、差();(5)回答问题(20分):优()、良()、中()、一般()、差();(6)格式规范性及考勤是否降等级:是()、否()评阅人: 职称: 2009年 6月 21 日 目录一 绪论四二 设计思路四三 具体实现四四 运行调试与分析讨论七五 设计体会与小结七参考文献八附录(源代码)八3一 绪论这是一个关于Java课程设计的报告,实现的是用Java实现一个复杂的计算器,通过编写程序已经正确实现了题目所要求的功能,在这份报告中主要包括论文包括目录、设计思路、具体实现、运行调试与分析讨论、设计体会与小结、参考文献、附录(源代码)等!二 设计思路 利用Java Applet图形界面首先开始设计一个计算器的界面,定义计算器所需要的按钮并赋给其按钮名称,使得使用计算器时简单明了,清晰可见,操作轻松。 给各个按钮进行算法,利用鼠标点击事件,当鼠标点击某个按钮时就开始执行那个按钮所定义的算法,生成数据并显示。 除数字的输入为直接进行输入外,其他运算例如+、-、*、/、开平方等算法要求计算时通过内部较为复杂的运算将结果显示在显示屏上。 至于其中的进制转换功能的实现则是直接调用Java中进制转换的函数,例如要将十进制转换成二进制则可直接调用函数Integer.toBinaryString(int i)来实现,充分显示了Java语言的简洁性和Java语言功能的强大性。 当然了在输入数据时还要进行异常捕捉,防止越界的现象的发生,这也是Java语言健壮性的体现!三 具体实现在具体实现的过程先是在显示屏中输入数据,然后开始按按钮实现自己所要求的功能看看其结果是否是自己做要求的,如果不是则要求查看程序是否正确!下面是我在具体实现过程中的截图,是有部分截图其余相似功能的截图就不截了:实现加法运算:实现除法运算:实现平方运算:实现倒数运算:实现二进制转换成十进制的运算:实现十进制转换成二进制的运算:四 运行调试与分析讨论将代码写好之后检查代码的正确性,检查代码无误后将代码进行调试和运行将会出现一个JavaApplet计算器界面。在调试过程中可能会出现有界面但是不能运行小程序,那是因为没有初始化小程序,那时我们应该在主函数中将小程序进行初始化,这样小程序才能运行!在调试和运行完全正确后,我们就可以按照自己的医院将小程序进行简单测试,例如输入一些简单数据分别运行各个按钮结果正确后可以初步确定程序师正确的。有时候我们还要输入不同范围的值进行测试,可能会发现更多的错误,因为有时候我们定义数据的范围可能会过小或输入数据会越界,到时我们就可以改正以适应更多更大的运算。有时候我们会不自觉的选择一种最优函数方法尽量将自己的代码简单规范而又不缺少题目所要求的功能,那就要求我们翻阅很多参考书和查阅很多资料。其实javaApplet图形界面的布局也是我们要讨论的范围,如何使得界面更加美观是我们要探讨的!有时候我们可能会到书上或网上找到一些满足我们要求的程序代码,在此我们应该取其优秀的简单易理解代码作为我们设计程序的代码,作为初学者参考和借用部分外部程序是不可避免,但是我认为前提我们应该看懂那些程序代码,要知其所以然,那样才达到我们学程序的目的,但不主张完全照搬,否则就会没意义了!五 设计体会与小结到此本次课程报告快接近尾声了,通过本次课程设计我学到了好多、也发现了自己的好多不足!很显然最明显的收获是理解和较熟练的掌握了JavaApplet图形界面的基本方法,尤其在JavaApplet图形界面的布局方面学到颇多,以前布局很乱并且很多布局都是无效的。在此次课设中通过查阅很多资料和同学的互相帮助,充分发挥了JavaApplet界面布局的优越性。另外按钮功能的实现也是本次课设的一大难点,怎样实现那些功能是关键。通过这次课设我又学会了好多Java中的简单便捷的函数,例如Integer.toBinaryString(int i)函数(实现的是将一个十进制数转换成一个二进制的数)!另外我这次课设部分程序是通过外部资料得到的,这使得我认识到查阅资料和开外多看书籍的重要性。但不主张照搬,因为那不是我们自己成果,那是不光彩的 !总之通过此次课设我学到了好多,也掌握了好多关于JavaApplet的事件管理和按钮功能实现方法,这次课设给我的感受就是:只要你有心,不怕你完成不了课设!参考文献丁振凡 Java语言使用教程(第二版) 北京邮电大学出版社2008年1月(美)Bruce Eckel著 陈昊鹏 译Java编程思想 机械工业出版社2008年11月http;/附录(源代码)package JavaTest; import javax.swing.*; import javax.swing.text.JTextComponent;import java.util.StringTokenizer; import java.awt.*; import java.awt.event.*; import java.math.*; public class Calculator implements ActionListener /初始化界面按纽 JFrame jf=new JFrame(计算器); JTextField tf=new JTextField(); JPanel pnl; JButton jButtonDENG; JButton jButtonJIAN; JButton jButtonCHENG; JButton jButton1; JButton jButton2; JButton jButton3; JButton jButton4; JButton jButton5; JButton jButton6; JButton jButton7; JButton jButton8; JButton jButton9; JButton jButton0; JButton jButtonCHU; JButton jButtonQINGKONG; JButton jButtonJIA; JButton jButtonQUYU; JButton jButtonPINGFANG; JButton jButtonXIAOSHUDIAN; JButton jButtonBACKSPACE; JButton jButtonDAOSHU; JButton jButtonKAIPINGFANG; JButton jButtonERJINZHI; JButton jButtonSHIJINZHI; public Calculator () /初始化界面的方法 Container c=jf.getContentPane(); tf.setHorizontalAlignment(JTextField.RIGHT); c.add(tf,North); JPanel pnl=new JPanel(); c.add(pnl,Center); pnl.setLayout(new GridLayout(6,5); jButton1=new JButton(1); jButton1.addActionListener(this); pnl.add(jButton1); jButton2=new JButton(2); jButton2.addActionListener(this); pnl.add(jButton2); jButton3=new JButton(3); jButton3.addActionListener(this); pnl.add(jButton3); jButtonBACKSPACE=new JButton(backspace); jButtonBACKSPACE.addActionListener(this); pnl.add(jButtonBACKSPACE); jButton4=new JButton(4); jButton4.addActionListener(this); pnl.add(jButton4); jButton5=new JButton(5); jButton5.addActionListener(this); pnl.add(jButton5); jButton6=new JButton(6); jButton6.addActionListener(this); pnl.add(jButton6); jButtonJIA=new JButton(+); jButtonJIA.addActionListener(this); pnl.add(jButtonJIA); jButton7=new JButton(7); jButton7.addActionListener(this); pnl.add(jButton7); jButton8=new JButton(8); jButton8.addActionListener(this); pnl.add(jButton8); jButton9=new JButton(9); jButton9.addActionListener(this); pnl.add(jButton9); jButtonJIAN=new JButton(-); jButtonJIAN.addActionListener(this); pnl.add(jButtonJIAN); jButton0=new JButton(0); jButton0.addActionListener(this); pnl.add(jButton0); jButtonQINGKONG=new JButton(清空); jButtonQINGKONG.addActionListener(this); pnl.add(jButtonQINGKONG); jButtonCHENG=new JButton(*); jButtonCHENG.addActionListener(this); pnl.add(jButtonCHENG); jButtonCHU=new JButton(/); jButtonCHU.addActionListener(this); pnl.add(jButtonCHU); jButtonQUYU=new JButton(%); jButtonQUYU.addActionListener(this); pnl.add(jButtonQUYU); jButtonPINGFANG=new JButton(平方); jButtonPINGFANG.addActionListener(this); pnl.add(jButtonPINGFANG); jButtonXIAOSHUDIAN=new JButton(.); jButtonXIAOSHUDIAN.addActionListener(this); pnl.add(jButtonXIAOSHUDIAN); jButtonDENG=new JButton(=); jButtonDENG.addActionListener(this); pnl.add(jButtonDENG); jButtonDAOSHU=new JButton(倒数); jButtonDAOSHU.addActionListener(this); pnl.add(jButtonDAOSHU); jButtonKAIPINGFANG=new JButton(开平方); jButtonKAIPINGFANG.addActionListener(this); pnl.add(jButtonKAIPINGFANG); jButtonERJINZHI=new JButton(二进制); jButtonERJINZHI.addActionListener(this); pnl.add(jButtonERJINZHI);jButtonSHIJINZHI=new JButton(十进制); jButtonSHIJINZHI.addActionListener(this); pnl.add(jButtonSHIJINZHI);jf.setSize(600,400); jf.setVisible(true); public void actionPerformed(ActionEvent event) /检测运算符的方法 try double wen=0;String toknizer=+; String ben; String wenben=tf.getText()+event.getActionCommand(); tf.setText(wenben); /各运算符的判断运行代码 if(wenben.indexOf(*)!=-1) toknizer=*; if(wenben.indexOf(+)!=-1) toknizer=+; if(wenben.indexOf(-)!=-1) toknizer=-; if(wenben.indexOf(/)!=-1) toknizer=/; if(wenben.indexOf(%)!=-1) toknizer=%; if(wenben.indexOf(平方)!=-1) toknizer=平方; if(wenben.indexOf(倒数)!=-1) toknizer=倒数; if(wenben.indexOf(开平方)!=-1) toknizer=开平方; if(wenben.indexOf(二进制)!=-1) toknizer=二进制; if(wenben.indexOf(十进制)!=-1) toknizer=十进制; /各个运算符的运算方法代码if(event.getSource()=jButtonQINGKONG) /清空算法 wenben=; tf.setText(wenben); if(event.getSource()=jButtonBACKSPACE) /清除算法 wenben=wenben.substring(0,wenben.length()-10); tf.setText(wenben); if(event.getSource()=jButtonDENG) /=算法 wenben=wenben.substring(0,wenben.length()-1); double b=new double10; String a=new String15; StringTokenizer sun=new StringTokenizer(wenben,toknizer); int i=0; while(sun.hasMoreTokens() ai+=sun.nextToken(); for(int j=0;j10;j+) String s=aj; String k=aj+1; if(s=null) break; else if(toknizer=*) /*算法 if(j=0)wen=1; bj=Double.parseDouble(s); wen=wen*bj; ben=Double.toString(wen); tf.setText(wenben+=+ben); if(toknizer=+) /+ 算法 if(j=0)wen=0; bj=Double.parseDouble(s); wen=wen+bj; ben=Double.toString(wen); tf.setText(wenben+=+ben); if(toknizer=-) /-算法 bj=Double.parseDouble(s); if(j=0)wen=2*bj; wen=wen-bj; ben=Double.toString(wen); tf.setText(wenben+=+ben); if(toknizer=/) / /算法 bj=Double.parseDouble(s); if(j=0)wen=bj*bj; wen=wen/bj; ben=Double.toString(wen); tf.setText(wenben+=+ben); if(toknizer=平方) /平方算法 if(j=0)wen=1; bj=Double.parseDouble(s); wen=wen*bj*bj; ben=Double.toString(wen); tf.setText(wenben+=+ben); if(toknizer=倒数) /倒数算法 bj=Double.pa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026国网江西省电力公司高校毕业生提前批招聘(约450人)笔试备考题库浓缩500题及答案详解(易错题)
- 2026秋季国家管网集团广西公司高校毕业生招聘考试备考试题(浓缩500题)带答案详解(满分必刷)
- 2026届国家管网集团高校毕业生招聘笔试模拟试题(浓缩500题)完整答案详解
- 2026国网云南省电力公司高校毕业生提前批招聘笔试参考题库浓缩500题及答案详解(典优)
- 2026年哈尔滨市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(轻巧夺冠)
- 2026秋季国家管网集团共享运营分公司高校毕业生招聘笔试参考题库(浓缩500题)附答案详解
- 2026届国家管网集团高校毕业生招聘笔试参考题库(浓缩500题)附答案详解(培优b卷)
- 2026秋季国家管网集团储运技术发展有限公司高校毕业生校园招聘笔试备考试题(浓缩500题)参考答案详解
- 2026届国家管网集团高校毕业生招聘笔试备考试题(浓缩500题)附答案详解(完整版)
- 2026国网天津市高校毕业生提前批招聘(约450人)笔试模拟试题浓缩500题附答案详解(培优)
- TDSHXH 002-2022 工业干冰规程
- HY/T 0306-2021产业用海面积控制指标
- GB/T 40851-2021食用调和油
- 常用危险化学品储存禁忌物配存表
- 加州旅馆原版吉他谱(完整版)
- 实用新型专利申请文件课件
- 概述SFBT(焦点解决短程治疗)课件
- 三大音乐教学法之实践比较
- Q∕SY 1124.9-2012 石油企业现场安全检查规范 第9部分:天然气净化厂
- 乙烯基酯防腐蚀树脂砂浆整体地面施工方案
- 华为的人才战略(课堂PPT)
评论
0/150
提交评论