[求助]求一个java编程题的程序,简易计算器,要求见正文
<P>(一个文本框) (+) (一个文本框) (=) (结果)<BR> (+)(-)<BR> (×)(/) </P><P> (重置)</P>
<P><BR>下面的运算符全部是按钮,上面那个是文本框,默认是+,按下面的按钮就变成相应的运算符<BR>两个文本框打数字,=号是按钮,点击出结果<BR>还要有报错功能,就是第二个文本框出现0和负数要对话框报错!</P>
<P>import java.awt.*;<BR>import javax.swing.*;</P>
<P>import java.awt.event.*;</P>
<P>/**<BR> * @author hyvin<BR> * <BR> * TODO To change the template for this generated type comment go to Window -<BR> * Preferences - Java - Code Style - Code Templates<BR> */</P>
<P>class calculation extends JFrame {<BR> public calculation() /* 构造方法 */<BR> {<BR> super("计数器");<BR> this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<BR> //JFrame.setDefaultLookAndFeelDecorated(true);<BR> initTextPanel(); /* 文本框 */<BR> initControlPanel(); /* 控制键 */<BR> initKeyPanel(); /* 数字和运算符 */<BR> Container pane = getContentPane();<BR> pane.setLayout(new BorderLayout());<BR> pane.add(TextPanel, BorderLayout.NORTH);<BR> pane.add(ControlPanel, BorderLayout.CENTER);<BR> pane.add(KeyPanel, BorderLayout.SOUTH);<BR> pack();<BR> try {<BR> UIManager<BR> .setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");<BR> } catch (Exception ex) {<BR> ;<BR> } /* 设置Windons观感 */<BR> SwingUtilities.updateComponentTreeUI(this);<BR> setResizable(false);<BR> setVisible(true);<BR> }</P>
<P> private void initTextPanel() /* 设置文本框 */<BR> {<BR> TextPanel = new JPanel();<BR> TextPanel.setLayout(new FlowLayout());<BR> Resultarea = new JTextField("0", 25);<BR> Resultarea.setEditable(false); /* 设置不可编辑 */<BR> Color color = Color.white;<BR> Resultarea.setBackground(color); /* 颜色 */<BR> Resultarea.setHorizontalAlignment(JTextField.RIGHT); /* 设置显示位置 */<BR> TextPanel.add(Resultarea);<BR> }</P>
<P> private void initControlPanel() /* 设置控制键 */<BR> {<BR> ControlPanel = new JPanel();<BR> ControlPanel.setLayout(new GridLayout(1, 3, 4, 4));<BR> JButton b1 = new JButton("Backspace"); /* Backspace键 */<BR> b1.setFont(font1);<BR> b1.addActionListener(new ActionListener() {<BR> public void actionPerformed(ActionEvent e) {<BR> String s1 = Resultarea.getText();<BR> int l = s1.length();<BR> Resultarea.setText(s1.substring(0, l - 1));<BR> }<BR> });</P>
<P> ControlPanel.add(b1);<BR> JButton b2 = new JButton("CE"); /* CE键 */<BR> b2.setFont(font1);<BR> b2.addActionListener(new ActionListener() {<BR> public void actionPerformed(ActionEvent e) {<BR> Resultarea.setText("0");<BR> isNew = true;<BR> }<BR> });<BR> ControlPanel.add(b2);</P>
<P> JButton b3 = new JButton("C"); /* C键 */<BR> b3.setFont(font1);<BR> b3.addActionListener(new ActionListener() {<BR> public void actionPerformed(ActionEvent e) {<BR> Resultarea.setText("0");<BR> pnum = "";<BR> operation = "";<BR> isNew = true;<BR> }<BR> });<BR> ControlPanel.add(b3);<BR> }</P>
<P> private void initKeyPanel() /* 设置数字键和运算符键 */<BR> {<BR> String key[] = { "7", "8", "9", "/", "sqrt", "4", "5", "6", "*", "%",<BR> "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" };<BR> KeyPanel = new JPanel();<BR> KeyPanel.setLayout(new GridLayout(4, 5, 4, 4));<BR> for (int i = 0; i < 20; i++) {<BR> String label = key[i];<BR> JButton b = new JButton(label);<BR> b.setActionCommand(key[i]);<BR> b.setFont(font2);<BR> KeyPanel.add(b);<BR> b.addActionListener(new ActionListener() /* 无名监听器 */<BR> {<BR> public void actionPerformed(ActionEvent e) {<BR> Key_actionPerformed(e);<BR> }<BR> });<BR> }<BR> }</P>
<P> public void Key_actionPerformed(ActionEvent e) /* 数字键和运算符键无名监听器 */<BR> {<BR> String s = (e.getActionCommand());<BR> String st = Resultarea.getText();<BR> if (s.equals("0")) /* 输入数为0 */<BR> {<BR> if (st.equals("0"))<BR> return;<BR> else {<BR> if (!isNew)<BR> Resultarea.setText(st + "0");<BR> else<BR> Resultarea.setText("0");<BR> }<BR> isNew = false;<BR> return;<BR> }</P>
<P> if (s.equals("+/-")) /* 输入数为+/- */<BR> {<BR> double k = Double.parseDouble(st);<BR> {<BR> if (k != 0)<BR> display(-k);</P>
<P> }<BR> return;<BR> }</P>
<P> if (s.equals("1") || s.equals("2") || s.equals("3") || s.equals("4")<BR> || s.equals("5") || s.equals("6") || s.equals("7")<BR> || s.equals("8") || s.equals("9")) /* 输入1-9 */<BR> {<BR> if (!isNew)<BR> Resultarea.setText(st + s);<BR> else {<BR> Resultarea.setText(s);<BR> isNew = false;<BR> }<BR> return;<BR> }</P>
<P> if (s.equals(".")) /* 输入小数点 */<BR> {<BR> if (Resultarea.getText().indexOf(".") == -1) /* 不存在小数点 */<BR> {<BR> if (isNew) {<BR> Resultarea.setText("0.");<BR> isNew = false;<BR> } else<BR> Resultarea.setText(st + ".");<BR> }<BR> return;<BR> }</P>
<P> isNew = true; /* 按下运算符,输入新的数 */<BR> if (s.equals("=")) {<BR> compute(s);<BR> operation = "";<BR> } else {<BR> if (s.equals("+") || s.equals("-") || s.equals("*")<BR> || s.equals("/")) /* 二目运算符号 */<BR> {<BR> if (operation.equals("")) {<BR> pnum = Resultarea.getText();<BR> operation = s;<BR> } else<BR> compute(s);<BR> } else /* 一目运算 */<BR> {<BR> Count count1 = new Count(Double.parseDouble(st));<BR> if (s.equals("sqrt")) {<BR> display(count1.sqrt());</P>
<P> } else {<BR> if (s.equals("1/x")) {<BR> if (st.equals("0")) {<BR> Resultarea.setText("除数不能为0.");<BR> operation = "";<BR> pnum = "";<BR> } else<BR> display(count1.reciprocal()); /* 求倒数 */<BR> } else<BR> display(Double.parseDouble(st) / 100); /* 输入%,使当前显示的值除于100 */<BR> }<BR> }<BR> }<BR> }</P>
<P> private void compute(String s) {<BR> if (s.equals("=")) {<BR> if (operation.equals(""))<BR> return;<BR> }<BR> double data1 = Double.parseDouble(pnum);<BR> double data2 = Double.parseDouble(Resultarea.getText());<BR> Count count2 = new Count(data1, data2); /* 加减乘除计算 */<BR> if (operation.equals("+"))<BR> display((count2.plus()));<BR> else {<BR> if (operation.equals("-"))<BR> display((count2.minus()));<BR> else {<BR> if (operation.equals("*"))<BR> display((count2.multiply()));<BR> else if (operation.equals("/")) {<BR> if (data2 == 0) {<BR> Resultarea.setText("除数不能为0");<BR> operation = "";<BR> pnum = "";<BR> return;<BR> } else<BR> display((count2.divide()));<BR> }<BR> }<BR> }<BR> operation = ""; /* 符号为当前符 */<BR> pnum = Resultarea.getText();/* 运算数为当前文本数 */<BR> }</P>
<P> public void display(double result) /* 显示输出方法 */<BR> {<BR> int a = (int) result;<BR> if (a == result)<BR> Resultarea.setText(String.valueOf(a));<BR> else<BR> Resultarea.setText(String.valueOf(result));<BR> if (Resultarea.getText().equals("NaN"))<BR> Resultarea.setText("输入函数无效");<BR> }</P>
<P> private JPanel TextPanel; /* 文本框棉板 */</P>
<P> private JTextField Resultarea; /* 文本框 */</P>
<P> private JPanel ControlPanel; /* 控制键键面板 */</P>
<P> private JPanel KeyPanel; /* 数字键和运算符键面板 */</P>
<P> private Font font1 = new Font("Dialog", 0, 10); /* 控制键字体 */</P>
<P> private Font font2 = new Font("Dialog", 0, 10); /* 数字键和符号键字体 */</P>
<P> private String pnum = ""; /* 前操作数 */</P>
<P> private boolean isNew = true; /* 控制是否是新数 */</P>
<P> private String operation = ""; /* 运算符 */</P>
<P> //}<BR> class Count {</P>
<P> /**<BR> * 单目计算方法类,这是一个内部类.<BR> */<BR> public Count(double d) {</P>
<P> // TODO Auto-generated constructor stub<BR> }</P>
<P> /**<BR> * @return<BR> */<BR> public Count(double data1, double data2) {</P>
<P> // TODO Auto-generated constructor stub<BR> }</P>
<P> /**<BR> * @return<BR> */<BR> public double divide() {<BR> // 除法<BR> double data1 = Double.parseDouble(pnum);<BR> double data2 = Double.parseDouble(Resultarea.getText());<BR> return data1 / data2;<BR> }</P>
<P> /**<BR> * @return<BR> */<BR> public double multiply() {<BR> // 乘法<BR> double data1 = Double.parseDouble(pnum);<BR> double data2 = Double.parseDouble(Resultarea.getText());<BR> return data1 * data2;<BR> }</P>
<P> /**<BR> * @return<BR> */<BR> public double minus() {<BR> // 减法<BR> double data1 = Double.parseDouble(pnum);<BR> double data2 = Double.parseDouble(Resultarea.getText());<BR> return data1 - data2;<BR> }</P>
<P> /**<BR> * @return<BR> */<BR> public double plus() {<BR> // 加法<BR> double data1 = Double.parseDouble(pnum);<BR> double data2 = Double.parseDouble(Resultarea.getText());<BR> return data1 + data2;<BR> }</P>
<P> public double reciprocal() {<BR> // 求倒数<BR> String st = Resultarea.getText();<BR> return 1 / Double.parseDouble(st);<BR> }</P>
<P> /**<BR> * @return<BR> */<BR> public double sqrt() {<BR> // 开方<BR> String st = Resultarea.getText();<BR> return Math.sqrt(Double.parseDouble(st));<BR> }<BR> };</P>
<P> public static void main(String[] args) { /*驱动方法*/<BR> new calculation();<BR> }<BR>}<BR><BR>[/code]</P> <P>[code]<BR>import java.awt.*;<BR>import java.awt.event.*;<BR>import javax.swing.*;</P>
<P>public class Calculation extends JPanel<BR>{<BR> private JTextField inputTxt1,inputTxt2,resultTxt,handleTxt;<BR> //2个输入文本框,1个显示结果文本框和显示操作符文本框<BR> <BR> private JButton plusBtn,minusBtn,multiplyBtn,divisionBtn,amountBtn;<BR> //加 减 乘 除 等于 5个按钮<BR> <BR> private JPanel p1,p2;<BR> <BR> public Calculation()<BR> {<BR> setLayout(new GridLayout(2,1));<BR> <BR> p1 = TextPanel();<BR> <BR> p2 = HandlePanel();<BR> }<BR> <BR> public JPanel TextPanel()<BR> {<BR> JPanel p = new JPanel();<BR> <BR> inputTxt1 = new JTextField(20);<BR> <BR> inputTxt2 = new JTextField(20);<BR> <BR> resultTxt = new JTextField(20);<BR> resultTxt.setEditable(false);<BR> <BR> handleTxt = new JTextField("+",5);<BR> handleTxt.setHorizontalAlignment(JTextField.CENTER);<BR> handleTxt.setEditable(false);<BR> <BR> amountBtn = new JButton("=");<BR> <BR> p.add(inputTxt1);<BR> p.add(handleTxt);<BR> p.add(inputTxt2);<BR> p.add(amountBtn);<BR> p.add(resultTxt);<BR> <BR> add(p);<BR> <BR> amountBtn.addActionListener(new ButtonAction());<BR> <BR> return p;<BR> }<BR> <BR> public JPanel HandlePanel()<BR> {<BR> JPanel p = new JPanel();<BR> <BR> ButtonAction baction = new ButtonAction();<BR> <BR> plusBtn = new JButton("+");<BR> plusBtn.setActionCommand("+");<BR> <BR> minusBtn = new JButton("-");<BR> minusBtn.setActionCommand("-");<BR> <BR> multiplyBtn = new JButton("*");<BR> multiplyBtn.setActionCommand("*");<BR> <BR> divisionBtn = new JButton("/");<BR> divisionBtn.setActionCommand("/");<BR> <BR> p.add(plusBtn);<BR> p.add(minusBtn);<BR> p.add(multiplyBtn);<BR> p.add(divisionBtn);<BR> <BR> add(p);<BR> <BR> plusBtn.addActionListener(baction);<BR> minusBtn.addActionListener(baction);<BR> multiplyBtn.addActionListener(baction);<BR> divisionBtn.addActionListener(baction);<BR> <BR> return p;<BR> }<BR> <BR> class ButtonAction implements ActionListener<BR> {<BR> public void actionPerformed(ActionEvent e)<BR> {<BR> Object o = e.getSource();<BR> if(o == amountBtn)<BR> {<BR> double no1,no2;<BR> <BR> String handle = handleTxt.getText();<BR> try{<BR> no1 = Double.valueOf(inputTxt1.getText());<BR> no2 = Double.valueOf(inputTxt2.getText());<BR> }<BR> catch(NumberFormatException numbere)<BR> {<BR> JOptionPane.showMessageDialog(null,"输入的数字有误,请重新输入"<BR> ,"Input Error",JOptionPane.ERROR_MESSAGE);<BR> return;<BR> }<BR> <BR> if(no1 < 1 || no2 < 0)<BR> {<BR> JOptionPane.showMessageDialog(null,"输入了负数或除数为零,请重新输入"<BR> ,"Input Error",JOptionPane.ERROR_MESSAGE);<BR> return;<BR> }<BR> <BR> if(handle.equals("+"))<BR> {<BR> double temp = no1 + no2;<BR> resultTxt.setText(String.valueOf(temp));<BR> }<BR> else if(handle.equals("-"))<BR> {<BR> double temp = no1 - no2;<BR> resultTxt.setText(String.valueOf(temp));<BR> }<BR> else if(handle.equals("*"))<BR> {<BR> double temp = no1 * no2;<BR> resultTxt.setText(String.valueOf(temp));<BR> }<BR> else if(handle.equals("/"))<BR> {<BR> double temp = no1 / no2;<BR> resultTxt.setText(String.valueOf(temp));<BR> }<BR> }<BR> else if(o == plusBtn)<BR> {<BR> handleTxt.setText(plusBtn.getActionCommand());<BR> }<BR> else if(o == minusBtn)<BR> {<BR> handleTxt.setText(minusBtn.getActionCommand());<BR> }<BR> else if(o == multiplyBtn)<BR> {<BR> handleTxt.setText(multiplyBtn.getActionCommand());<BR> }<BR> else if(o == divisionBtn)<BR> {<BR> handleTxt.setText(divisionBtn.getActionCommand());<BR> }<BR> }<BR> }<BR> <BR> public static void main(String [] args)<BR> {<BR> JFrame f = new JFrame("Calculation");<BR> f.getContentPane().add(new Calculation());<BR> f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<BR> f.pack();<BR> f.setVisible(true);<BR> }<BR>}<BR>[/code]</P>
[求助]求一个java编程题的程序,学生成绩管理,要求见正文
5、 程序编码总体要求: 编程工具统一使用Eclipse。
统一使用Java的AWT组件进行GUI编程(或Applet编程),非Applet程序要求有一个框架窗口,关闭窗口时要注意处理窗口事件退出程序。
框架窗口必须有菜单。
使用文件来保存程序数据,建议使用对象文件I/O来读写对象数组。
程序编码时,必须严格遵守Java程序标识符的一般约定,并要加适量的注释。
6、 程序编码完成后,一定要进行严密的测试工作。
设计一简版学生信息管理程序。
可实现以下功能:
1、 录入学生基本信息:学号、姓名、性别、出生地、所在班级、语文成绩、数学成绩、英语成绩、总学分;所录入的信息要存放在文件中。
2、 可使用“学号”或“姓名”对已存有的学生资料进行查询,查找成功后,将其信息显示在输入学生基本信息的窗口上,然后可对学生信息进行修改并存盘,或者可删除此记录。
注意:用文本作数据库
[求助]求一个java编程题的程序,学生成绩管理,要求见正文
5、 程序编码总体要求: 编程工具统一使用Eclipse。
统一使用Java的AWT组件进行GUI编程(或Applet编程),非Applet程序要求有一个框架窗口,关闭窗口时要注意处理窗口事件退出程序。
框架窗口必须有菜单。
使用文件来保存程序数据,建议使用对象文件I/O来读写对象数组。
程序编码时,必须严格遵守Java程序标识符的一般约定,并要加适量的注释。
6、 程序编码完成后,一定要进行严密的测试工作。
设计一简版学生信息管理程序。
可实现以下功能:
1、 录入学生基本信息:学号、姓名、性别、所在班级、语文成绩、数学成绩、英语成绩、总学分;所录入的信息要存放在文件中。
2、 可使用“学号”或“姓名”对已存有的学生资料进行查询,查找成功后,将其信息显示在输入学生基本信息的窗口上,然后可对学生信息进行修改并存盘,或者可删除此记录。
注意:用文本作数据库 高手帮帮忙 我的邮箱是[email]weishuiqing870208@163.com[/email]
谢谢!!!~~~~~~[em17] [tk09] 这里发生什么事情了? 第一个代码我好像在论坛里发过
页:
[1]
