收藏 分销(赏)

面向对象程序设计课程设计划书模板new(计算器设计).doc

上传人:快乐****生活 文档编号:2473832 上传时间:2024-05-30 格式:DOC 页数:15 大小:206KB 下载积分:8 金币
下载 相关
面向对象程序设计课程设计划书模板new(计算器设计).doc_第1页
第1页 / 共15页
面向对象程序设计课程设计划书模板new(计算器设计).doc_第2页
第2页 / 共15页


点击查看更多>>
资源描述
课程设计(大作业)报告 课程名称:java课程设计 设计题目:计算器设计 院 系:信息技术学院 班 级:计算机科学与技术(2)班 设 计 者: 学 号:201011010208 指导教师: 设计时间:2011-12-27——2011-12-29 昆明学院 昆明学院课程设计(大作业)任务书 姓 名:蒋孝林 院 系:信息技术学院 专 业:计算机科学与技术专业 学 号: 201011010208 任务起止日期: 2011-12-27——2011-12-29 课程设计题目:计算器设计 课程设计要求: (1) 课程设计任务及要求 (2) 设计思路、功能原理、功能规划 (3) 总体设计与详细设计---数据分析,算法思路,类设计,功能实现(含程序流程图,主要代码及注释),界面等 (4) 运行调试与分析讨论---给出运行屏幕截图,分析运行结果,有何改进想法等. (5) 设计体会与小结---设计遇到的问题及解决办法,通过设计学到了哪些新知识, 巩固了那些知识,有哪些提高。矚慫润厲钐瘗睞枥庑赖。 (6) 参考文献 (7) 报告格式见昆明学院课程设计报告模板,按格式要求完成设计报告。 追求完善,不要仅仅应付老师的检查、,程序要求有良好的结构及编码风格,有必要的注释。 (8)严禁抄袭,如有发现,按不及格处理 工作计划及安排 2011-12-26起至2011-12-27 查询相关资料,对这个关于计算机的Java程序设计进行大体编排聞創沟燴鐺險爱氇谴净。 2011-12-28起至2011-12-30 对程序进行编写,运行,调试 2011-12-30 完成设计 指导教师签字 年 月 日 课程设计(大作业)成绩 学号:201011010208 姓名:蒋孝林 指导教师:何英 老师 课程设计题目: 计算器程序设计 总结:这次的课程设计,是我对Java有了进一步的了解和体会。 对于这次课程设计,我最大的感受就是自己对教材并不是很熟悉,所掌握和熟悉的知识不够,在设计的过程中出现了很多弯路,所以在以后进一步的学习和深入中,我会多查阅一些相关资料,多想,多实践,更好的巩固所学的知识,以求加深对java的理解。我会总结在课程设计中发现的技巧性知识,在议会的学习中 学会学以致用,把学会的更好的应用在生活中,在学习中发现问题。提出问题,然后解决问题。多想同学和老师请教,在以后的学习中取得好的成绩残骛楼諍锩瀨濟溆塹籟。 指导教师评语: 成绩: 填表时间: 指导教师签名: 课程设计(大作业)报告 1、 课程设计介绍 …………………………………………………………………4 1.1课程设计内容 ………………………………………..........................................4酽锕极額閉镇桧猪訣锥。 1.2课程设计要求 ………………………………………………………………….4 2、 总体设计 ………………………………………………………………………4 2.1课设题目总体设计、算法描述………………………………………4 2.1.1、功能模块设计………………………………………………………4 2.1.2、界面设计代码…………………………………………………….4 2.2功能模块图、流程图分析……………………………………………..6 3、 调试与性能分析 (相关截图)……………………………………………6 4、 参考文献…………………………………………………………………………..8 附 录(程序清单).................................................................................................9彈贸摄尔霁毙攬砖卤庑。 1、 课程设计介绍 1.1课程设计内容 本计算器是由java语言所编程设计的标准计算器,可以进行十进制下的四则运算(加、减、乘、除)、开根号、百分号、求倒数,还可以实现数值的符号转换操作。 ,Backspace表示退格, CE表示将当前文本框内数据清除,C表示文本框内数据清除。此外还提供了“编辑”、“查看”、“帮助”三个菜单项,使用者可通过使用菜单项实现复制、粘贴功能。界面类似windows自带计算器界面。謀荞抟箧飆鐸怼类蒋薔。 1.2课程设计要求 (1)设计一个标准型的计算器应用程序,完成简单的算法运算。 (2)该程序可以通过鼠标一次键入参加计算的数值,不仅可以参加加减乘除运算,还可以完成开方、百分运算、倒数运算等这些运算,并且还有小数点、正负号、退格、清零这些功能。厦礴恳蹒骈時盡继價骚。 2、总体设计 2.1、课设题目总体设计、算法描述 2.1.1、功能模块设计 计算器基本功能 (1)加法 两个数据进行加操作,可以为小数。 (2)减法 两个数据进行减操作,可以为负数相减。 (3)乘法 两个数相乘操作。 (4)除法 两个数相除操作。 (5)开平方 对任意一个数进行开方运算,可以是小数。 (6)百分号 对任意一个数进行百分号运算。 (7)倒数 对任意一个数进行倒数运算。 算法分析:事件监听器的事件处理方法void actionPerformed(ActionEvent evt)完成主要的按钮事件的处理。事件处理分为以下几种情况:数字按钮事件(“0”、“1”、“2”、“3”、….“8”、“9”),运算符按钮事件(“+”、“-”、“,”“*”、“/”、“%”),正负值按钮事件(“+/-”),小数点按钮事件(“.”),等号按钮事件(“=”),求倒按钮事件(“1、x”),退格按钮事件(“CE”),茕桢广鳓鯡选块网羈泪。 清除按钮事件(“C”), 2.1.2、 界面设计代码 计算器的界面由一个文本框及27个按钮组成,具体实现代码如下所示: JPanel pa1=new JPanel(); pa1.setBackground(new Color(236,231,210)); text=new JTextField("0.",31); pa1.add("North",text); //面板添加和按钮的设置 JPanel pa=new JPanel(); JPanel pa2=new JPanel(); JButton bt1=new JButton("Backspace"); JButton bt2=new JButton("CE"); JButton bt3=new JButton("C"); bt1.addActionListener(this); bt2.addActionListener(this); bt3.addActionListener(this); pa2.add(bt1); pa2.add(bt2); pa2.add(bt3); pa.setLayout(new BorderLayout()); pa.add(pa2,"North"); JPanel p1=new JPanel(); p1.setLayout(new GridLayout(4,1,2,5)); JButton bt4=new JButton("MC"); JButton bt5=new JButton("MR"); JButton bt6=new JButton("MS"); JButton bt7=new JButton("M+"); p1.add(bt4); p1.add(bt5); p1.add(bt6); p1.add(bt7); pa.add(p1,"West"); JPanel p = new JPanel(); p.setLayout(new GridLayout(4, 5,2,5)); String buttons[] = {"7","8","9","/","sqrt","4","5","6","*","%","1","2","3","-","1/x","0",".","=","+","+/-"};鹅娅尽損鹌惨歷茏鴛賴。 JButton btn[]=new JButton[buttons.length]; for (int i = 0; i < buttons.length; i++) {addButton(p, buttons[i]); pa.add(p, "Center"); } pa1.add("South",pa); this.getContentPane().add(pa1); } private void addButton(Container c, String s) { JButton b = new JButton(s); c.add(b); b.addActionListener(this); 2.2功能模块图、流程图分析 标准计算器 加法运算 减法运算 乘法运算 除法运算 开平方运算 百分号运算 倒数运算 3、调试与性能分析 (相关截图) (1)标准计算其界面 (2) 、加、减、乘除运算演示 分别输入8和4进行运算演示 ※加法 8 + = ※乘法 *= ※开方运算 sqrt ※百分号运算 % ※倒数运算 1/x 4、 参考文献 Java语言程序设计(第6版) 机械工程出版社 5、附录(程序清单) import java.awt.*; import java.awt.event.*; import javax.swing.*; public class jisuanqi extends JFrame implements ActionListener,ItemListener{籟丛妈羥为贍偾蛏练淨。 JTextField text; JTextField textMemory; boolean clickable; double memoryd; //使用内存中存储的数字 int memoryi; String copy; public jisuanqi(){ super("计算器"); setSize(357,253); } public void init(){ clickable = true; JPanel pa1=new JPanel(); pa1.setBackground(new Color(236,231,210)); text=new JTextField("0.",31); text.setHorizontalAlignment(JTextField.RIGHT);//从右到左預頌圣鉉儐歲龈讶骅籴。 pa1.add("North",text); //面板添加和按钮的设置 JPanel pa=new JPanel(); JPanel pa2=new JPanel(); JButton bt1=new JButton("Backspace"); JButton bt2=new JButton("CE"); JButton bt3=new JButton("C"); bt1.addActionListener(this); bt2.addActionListener(this); bt3.addActionListener(this); pa2.add(bt1); pa2.add(bt2); pa2.add(bt3); pa.setLayout(new BorderLayout()); pa.add(pa2,"North"); JPanel p1=new JPanel(); p1.setLayout(new GridLayout(4,1,2,5)); JButton bt4=new JButton("MC"); JButton bt5=new JButton("MR"); JButton bt6=new JButton("MS"); JButton bt7=new JButton("M+"); p1.add(bt4); p1.add(bt5); p1.add(bt6); p1.add(bt7); pa.add(p1,"West"); JPanel p = new JPanel(); p.setLayout(new GridLayout(4, 5,2,5)); String buttons[] = {"7","8","9","/","sqrt","4","5","6","*","%","1","2","3","-","1/x","0",".","=","+","+/-"};渗釤呛俨匀谔鱉调硯錦。 JButton btn[]=new JButton[buttons.length]; for (int i = 0; i < buttons.length; i++) {addButton(p, buttons[i]); pa.add(p, "Center"); } pa1.add("South",pa); this.getContentPane().add(pa1); } private void addButton(Container c, String s) { JButton b = new JButton(s); c.add(b); b.addActionListener(this); } //功能的实现 public void actionPerformed(ActionEvent evt) { String s = evt.getActionCommand(); if(s.equals("CE")||s.equals("C")){ text.setText(""); } //////////////////// else if(s.equals("+/-"))//单击"+/-"选择输入的运算数是正数还是负数 { double x; x=Double.parseDouble(text.getText().trim()); text.setText(""+(-x)); } else if (s == "sqrt") { String s1 = text.getText(); if (s1.charAt(0) == '-'&& clickable == true) { text.setText("负数不能开根号"); clickable = false; } else text.setText(Double.toString(java.lang.Math.sqrt(Double.铙誅卧泻噦圣骋贶頂廡。 parseDouble(text.getText())))); } else if(s.equals("%"))//单击了"%"按钮 { double x; x=Double.parseDouble(text.getText().trim()); text.setText(""+(0.01*x)); // str.setLength(0); //y=0d; } else if(s.equals("1/x"))//单击了"1/X"按钮 { double x; x=Double.parseDouble(text.getText().trim()); if(x==0) { text.setText("除数不能为零"); } else { text.setText(""+(1/x)); } //按下'+/-'按钮时处理 if (s== "+/-" && clickable == true) { boolean isNumber = true; String s1 = text.getText(); for (int i = 0; i < s.length(); i++) if (! (s1.charAt(i) >= '0' && s1.charAt(i) <= '9' || s1.charAt(i) == '.' ||擁締凤袜备訊顎轮烂蔷。 s1.charAt(i) == '-')) { isNumber = false; break; } if (isNumber == true) { //如果当前字符串首字母有'-'号,代表现在是个负数,再按下时,则将首符号去掉 if (s.charAt(0) == '-') { text.setText(""); for (int i = 1; i < s1.length(); i++) { char a = s1.charAt(i); text.setText(text.getText() + a); } } //如果当前字符串第一个字符不是符号,则添加一个符号在首字母处 else text.setText('-' + s); } } //计算器有关内存操作 //'MC'的操作,将内存清0 else if (s == "MC" && clickable == true) { memoryd = memoryi = 0; textMemory.setText(""); } //'MS'的操作,将当前文本框内容保存入内存,显示'M' else if (s == "MS" && clickable == true) { boolean isDot = false; textMemory.setText(" M"); for (int i = 0; i < text.getText().length(); i++) if ('.' == text.getText().charAt(i)) { isDot = true; break; } //如果是double,则存入memoryd(double存储器) if (isDot == true) { memoryd = Double.parseDouble(text.getText()); memoryi = 0; //保证存储器中存放最新的值 } //如果是int,则存入memoryi(int存储器) else { memoryi = Integer.parseInt(text.getText()); memoryd = 0; //保证存储器中存放最新的值 } } //'MR'的操作,将存储器中的信息输出 else if (s == "MR" && clickable == true) { if (memoryd != 0) text.setText(Double.toString(memoryd)); if (memoryi != 0) text.setText(Integer.toString(memoryi)); } //'M+'的功能,将当前文本框里的数据和存储器中数据相加后,再存入存储器 else if (s == "M+" && clickable == true) { boolean isDot = false; for (int i = 0; i < text.getText().length(); i++) if ('.' == text.getText().charAt(i)) { isDot = true; break; } if (memoryi != 0) { //存储中是一个int型数 if (isDot == false) //被加数是一个int型数 memoryi += Integer.parseInt(text.getText()); else { //被加数是一个double型数,则将int存储器中数传入double存储器与当前数相加,int存储器清零贓熱俣阃歲匱阊邺镓騷。 memoryd = memoryi + Double.parseDouble(text.getText());坛摶乡囂忏蒌鍥铃氈淚。 memoryi = 0; } } else memoryd += Double.parseDouble(text.getText()); } } else if ('0' <= s.charAt(0) && s.charAt(0) <= '9' || s.equals("."))蜡變黲癟報伥铉锚鈰赘。 { // text.setText(""); if (start) text.setText(s); else text.setText(text.getText() + s); start = false; } else { if (start) { if (s.equals("-")) { text.setText(s); start = false; } else op = s; } else { double x=Double.parseDouble(text.getText()); calculate(x); op = s; start = true; } } } public void calculate(double n) { if (op.equals("+")) arg += n; else if (op.equals("-")) arg -= n; else if (op.equals("*")) arg *= n; else if (op.equals("/")) arg /= n; else if (op.equals("=")) arg = n; text.setText("" + arg); } private double arg = 0; private String op = "="; private boolean start = true; public void itemStateChanged(ItemEvent e) { } public static void main(String args[]) { JFrame frame=new JFrame(); jisuanqi myMenu=new jisuanqi(); myMenu.init(); myMenu.setVisible(true); } } - 14 -
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服