西安工业大学操作系统课程设计报告课 目:¬¬¬¬ 银行家算法学 院: 计算机科学与工程学院指导教师: 姜虹学 生: 王丽娇班 级: 网络工程080610127完成时间:2010年12月25日操作系统课程设计报告课 目:¬¬¬¬ 银行家算法学 院: 计算机科学与工程学院指导教师: 姜虹学 生: 王丽娇班 级: 网络工程080610127目 录1、项目内容、要求与分组情况总体介绍 22、概要设计 22.1开发工具及环境 22.2 任务及需求分析 22.3 功能模块设计 22.4 工作原理 33、 具体实现 33.1 类设计 33.2 模块及实现代码介绍 34、运行调试与分析讨论 45、设计体会与小结 66、参考文献 7附录:(源程序) 71、项目内容、要求与分组情况总体介绍项目内容、要求:本次实验的目标是制作一个计算器,可以进行简单的四则运算(加、减、乘、除)。小组的具体分工情况见下表:小组组长 谌江波成员 子项目名称 具体要求谌江波 模块的组合及测试 查找出程序的错误并改正肖权 数字键的注册 将数字键注册监听者,使其功能正常刘达辉 窗口的创建和分配 设计计算器的界面李晓阳 组合其余同学的工作 是程序完整化詹烨刚 编写具体的计算方法 添加运算符号及功能代码2、概要设计2.1开发工具及环境文本编辑器:记事本;运行环境:命令提示符(DOS环境)。2.2 任务及需求分析设计简易计算器程序,实现简单的运算(加减乘除),具体任务如下:1) 计算器窗口界面布局设计;2) 各种计算功能的算法分析;3) 编程实现具体的计算功能;4) 运行测试程序,调试纠正运行错误。5) 调试无误,运行,测试具体算法功能。2.3 功能模块设计计算器的模块设计图如下:2.4 工作原理点击相应的数字键,即会在显示文档中显示该数字。进行相应的运算,首先输入第一个计算数字,然后输入运算符,再输入第二个计算数字,点击“=”按钮即得计算结果。同时,还有归零功能,点击该按钮,显示栏中即可归零。3、 具体实现3.1 类设计类名:jisuanqi作用:功能代码,窗口布局设定public class Calculator extends WindowAdapter{}¬WindowAdapter实现了WindowListener的类,实现了WindowListenerframe.addWindowListener(new WindowAdapter(){});———————————————————————————类名:WindowDestroyer作用:用于退出窗口动作关键代码:class close implements ActionListener {public void actionPerformed(ActionEvent e) {System.exit(0);}3.2 模块及实现代码介绍Frame fm = new Frame("简单计算器");for (int i = 0; i <= 16; i++) {b[i] = new Button(ss[i]);}for (int i = 0; i <= 15; i++) {p2.add(b[i]);} //创建按钮 并添加到P2b[16].setBackground(Color.yellow);txt = new TextField(15);txt.setEditable(false);for (int i = 0; i <= 16; i++) {b[i].addActionListener(new buttonlistener());…… }注:此方法主要设置窗口、面板、各个按键。对各个按键进行定义(定义好各按键该实现什么功能)、排布,将各个按键注册到监听器上。———————————————————————————txt.setText(txt.getText() + btn.getLabel());if (btn.getLabel() == "归零")txt.setText("");注:该代码使每次进入时的文本都清空———————————————————————————class close implements ActionListener {//退出public void actionPerformed(ActionEvent e) {System.exit(0);}注:该方法实现了窗口的关闭4、运行调试与分析讨论调试运行4*5运算,运算过程如下所示:1)命令提示符中运行计算器程序,如下图:2)计算器界面显示,输入第一个运算值“4”,如下图:3)输入运算符“*”,如下图:4)输入第二个运算值“5”,如下图所示:5)点击计算器按钮“=”,得出计算结果。如下图:5、设计体会与小结通过这次课程设计,我们了解到java也是可以分工合作的,虽然最后的整合过程非常麻烦,但是在整合完后,我们发现,课本被翻过很多遍,很多以前不知道的东西就这样豁然开朗了。我们还引用了很多从来没有用过的语句块,大多是从网上找到,然后自己整合进入代码,再实现我们想要的功能。编程是个艰难的过程,很多功能语句都需要上网或者是查其他书籍来查看他们的用法,课本上的东西对我们来说远远不够,我们要把目光放长远一些。这次的课程设计使我对JAVA的许多东西都有了更深一步的了解,以前对自己的要求是看得懂就行,现在才发现,光能看懂是远远不够的,能看懂并不代表你会!只有自己真的亲身体验到了,才会知道。这个礼拜的课程设计是这个学期最累的一个礼拜,但是,我们的付出总算有回报,虽然我们的计算器可能还存在不少的问题,但是,至少它可以正常运行四则运算,基本达到了我们预期的要求,所以,这个礼拜同样是我最充实的一个礼拜。6、参考文献[1]杜春涛,《面向对象程序设计—Java语言》,中国铁道出版社.[2]丁振凡,《JAVA语言实用教程》,北京邮电大学出版社.[3]附录:(源程序)import java.awt.*;import java.awt.event.*;public class jisuanqi extends WindowAdapter {Panel p1 = new Panel();Panel p2 = new Panel();Panel p3 = new Panel();TextField txt;private Button[] b = new Button[17];private String ss[] = { "7", "8", "9", "+", "4", "5", "6", "-", "1", "2", "3", "*", "归零", "0", "=", "/", "关闭" };static double a;static String s, str;//定义变量 创建对像public static void main(String args[]) {(new jisuanqi()).frame();}public void frame() {Frame fm = new Frame("简单计算器");for (int i = 0; i <= 16; i++) {b[i] = new Button(ss[i]);}for (int i = 0; i <= 15; i++) {p2.add(b[i]);} //创建按钮 并添加到P2b[16].setBackground(Color.yellow);txt = new TextField(15);txt.setEditable(false);for (int i = 0; i <= 16; i++) {b[i].addActionListener(new buttonlistener());//添加监听器}b[16].addActionListener(new close());fm.addWindowListener(this);fm.setBackground(Color.red);p1.setLayout(new BorderLayout());p1.add(txt, "North");p2.setLayout(new GridLayout(4, 4));p3.setLayout(new BorderLayout());p3.add(b[16]);fm.add(p1, "North");fm.add(p2, "Center");fm.add(p3, "South");fm.pack();fm.setVisible(true);//都是些窗中设置 添加相关组件和监听器}public void windowClosing(WindowEvent e) {System.exit(0);//退出系统}class buttonlistener implements ActionListener {//编写监听器事件 通过按键得出给果public void actionPerformed(ActionEvent e) {Button btn = (Button) e.getSource();if (btn.getLabel() == "=") {jisuan();str = String.valueOf(a);txt.setText(str);s = "";} else if (btn.getLabel() == "+") {jisuan();txt.setText("");s = "+";} else if (btn.getLabel() == "-") {jisuan();txt.setText("");s = "-";} else if (btn.getLabel() == "/") {jisuan();txt.setText("");s = "/";} else if (btn.getLabel() == "*") {jisuan();txt.setText("");s = "*";} else {txt.setText(txt.getText() + btn.getLabel());if (btn.getLabel() == "归零")txt.setText("");}}public void jisuan() {//编写具体计算方法if (s == "+")a += Double.parseDouble(txt.getText());else if (s == "-")a -= Double.parseDouble(txt.getText());else if (s == "*")a *= Double.parseDouble(txt.getText());else if (s == "/")a /= Double.parseDouble(txt.getText());elsea = Double.parseDouble(txt.getText());}}}class close implements ActionListener {//退出public void actionPerformed(ActionEvent e) {System.exit(0);}}