tcb2005 发表于 2006-1-3 21:41

[求助]求一个java编程题的程序,简易计算器,要求见正文

<P>(一个文本框)      (+)      (一个文本框)  (=)  (结果)<BR>                          (+)(-)<BR>                          (×)(/)     </P>
<P>                             (重置)</P>
<P><BR>下面的运算符全部是按钮,上面那个是文本框,默认是+,按下面的按钮就变成相应的运算符<BR>两个文本框打数字,=号是按钮,点击出结果<BR>还要有报错功能,就是第二个文本框出现0和负数要对话框报错!</P>

tcb2005 发表于 2006-1-3 21:46

我的邮箱是chaobotong@yahoo.com.cn<BR>高手帮帮忙

Jhyvin 发表于 2006-1-3 22:17

<P>[code]<BR>package Cal;</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 &lt; 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>

飘飘叶子 发表于 2006-1-3 23:26

<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 &lt; 1 || no2 &lt; 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>

weishuiqing87 发表于 2008-5-26 22:16

[求助]求一个java编程题的程序,学生成绩管理,要求见正文

5、 程序编码总体要求:
 编程工具统一使用Eclipse。
 统一使用Java的AWT组件进行GUI编程(或Applet编程),非Applet程序要求有一个框架窗口,关闭窗口时要注意处理窗口事件退出程序。
 框架窗口必须有菜单。
 使用文件来保存程序数据,建议使用对象文件I/O来读写对象数组。
 程序编码时,必须严格遵守Java程序标识符的一般约定,并要加适量的注释。
6、 程序编码完成后,一定要进行严密的测试工作。
设计一简版学生信息管理程序。
 可实现以下功能:
1、 录入学生基本信息:学号、姓名、性别、出生地、所在班级、语文成绩、数学成绩、英语成绩、总学分;所录入的信息要存放在文件中。
2、 可使用“学号”或“姓名”对已存有的学生资料进行查询,查找成功后,将其信息显示在输入学生基本信息的窗口上,然后可对学生信息进行修改并存盘,或者可删除此记录。

注意:用文本作数据库

weishuiqing87 发表于 2008-5-26 22:19

[求助]求一个java编程题的程序,学生成绩管理,要求见正文

5、 程序编码总体要求:
 编程工具统一使用Eclipse。
 统一使用Java的AWT组件进行GUI编程(或Applet编程),非Applet程序要求有一个框架窗口,关闭窗口时要注意处理窗口事件退出程序。
 框架窗口必须有菜单。
 使用文件来保存程序数据,建议使用对象文件I/O来读写对象数组。
 程序编码时,必须严格遵守Java程序标识符的一般约定,并要加适量的注释。
6、 程序编码完成后,一定要进行严密的测试工作。
设计一简版学生信息管理程序。
 可实现以下功能:
1、 录入学生基本信息:学号、姓名、性别、所在班级、语文成绩、数学成绩、英语成绩、总学分;所录入的信息要存放在文件中。
2、 可使用“学号”或“姓名”对已存有的学生资料进行查询,查找成功后,将其信息显示在输入学生基本信息的窗口上,然后可对学生信息进行修改并存盘,或者可删除此记录。

注意:用文本作数据库

weishuiqing87 发表于 2008-5-26 22:20

高手帮帮忙

weishuiqing87 发表于 2008-5-26 22:21

我的邮箱是[email]weishuiqing870208@163.com[/email]
谢谢!!!~~~~~~[em17]

Ethip 发表于 2008-5-27 08:51

[tk09] 这里发生什么事情了?

freish 发表于 2008-5-28 12:39

第一个代码我好像在论坛里发过

页: [1]

编程论坛