0311软件工程复利软件单利及期望值的实现

package ch1;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.text.NumberFormat;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import org.omg.CosNaming.NamingContextExtPackage.AddressHelper;

public class fuli extends JFrame {

	private static final long serialVersionUID = 3347254632537686808L;
	private JLabel a1; // 标签
	private JLabel a2;
	private JLabel a3;
	private JLabel a4;
	private JTextField b1; // 本金
	private JTextField b2; // 利率
	private JTextField b3; // 年份
	private JTextField b4; // 期望值

	private JButton c1;
	private JButton c2;
	private JButton c3;

	private JTextArea text; // 显示纯文本的多行区域

	private JPanel toolbar = new JPanel();
	public fuli() {
		setTitle("复利存款应用程序");
		creatComponents(); // 创建零件
		layoutComponents(); // 设计零件
		registerHandlers(); // 鼠标监控
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		pack();
	}

	private void creatComponents() {
		a1 = new JLabel("本 金 ");
		a2 = new JLabel("年利率 ");
		a3 = new JLabel("年 数 ");
		a4 = new JLabel("期望值");
		b1 = new JTextField(10);
		b2 = new JTextField(10);
		b3 = new JTextField(10);
		b4 = new JTextField(10);
		c1 = new JButton("复利");
		c2 = new JButton("清除");
		c3 = new JButton("单利");
		text = new JTextArea();
	}

	private void layoutComponents() {

		setLayout(new FlowLayout());
		JPanel panel1 = new JPanel();
		panel1.add(a1);
		panel1.add(b1);
		JPanel panel2 = new JPanel();
		panel2.add(a2);
		panel2.add(b2);
		JPanel panel3 = new JPanel();
		panel3.add(a3);
		panel3.add(b3);
		JPanel panel6 = new JPanel();
		panel6.add(a4);
		panel6.add(b4);

		JPanel leftpanel = new JPanel(new GridLayout(3, 1));
		leftpanel.add(panel1);
		leftpanel.add(panel2);
		leftpanel.add(panel3);

		leftpanel.add(panel6);
		JScrollPane panel5 = new JScrollPane(text);
		panel5.setPreferredSize(new Dimension(400, 200));

		toolbar.add(c1);
		toolbar.add(c2);
		toolbar.add(c3);

		add(leftpanel);
		add(panel5);
		add(toolbar, BorderLayout.EAST);

	}

	private void registerHandlers() {
		c1ActionEventHander hander1 = new c1ActionEventHander();
		c1.addActionListener(hander1);
		c2ActionEventHander hander2 = new c2ActionEventHander();
		c2.addActionListener(hander2);
		c3ActionEventHander hander3 = new c3ActionEventHander();
		c3.addActionListener(hander3);

	}

	private class c1ActionEventHander implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			double principal;
			double amount;
			double rate;
			int n;
			NumberFormat currencyformatter = NumberFormat.getCurrencyInstance(); // 字符串转化为数字
			String output = "年" + "/" + "复利存款";
			int year =1;
			rate = Double.parseDouble(b2.getText());
			n = Integer.parseInt(b3.getText());
			if(b1.getText().equals(""))
			{
				if (b4.getText().equals(""))
				{
					JOptionPane.showMessageDialog(null, "请输入本金或者期望值");

				}
				else{
					amount = Double.parseDouble(b4.getText());
					principal=0;
					while (year <= n) {
						principal=amount/(Math.pow(1 + rate, year));
						year = year + 1;
					}

					output="本金"+currencyformatter.format(principal) + "\n";
					text.setText(output);
				}
			}
			else {
				principal = Double.parseDouble(b1.getText()); // 字符串转化为数字

				if (b4.getText().equals("")) {
					while (year <= n) {
						amount = principal * Math.pow(1 + rate, year);
						output += String.valueOf(year) + "\t\t\t"
								+ currencyformatter.format(amount) + "\n";
						year = year + 1;
					}

					text.setText(output);
				}
				else{
					JOptionPane.showMessageDialog(null, "本金和期望值输入一个即可");
				}
			}

		}
	}

	private class c2ActionEventHander implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			b1.setText("");
			b2.setText("");
			b3.setText("");
			b4.setText("");
			text.setText("");
		}
	}

	private class c3ActionEventHander implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			double principal;
			double amount;
			double rate;
			int n;
			NumberFormat currencyformatter = NumberFormat.getCurrencyInstance();
			String output = "年" + "/" + "单利存款";
			int year = 1;

			rate = Double.parseDouble(b2.getText());
			n = Integer.parseInt(b3.getText());
			if(b1.getText().equals(""))
			{
				if (b4.getText().equals(""))
				{
					JOptionPane.showMessageDialog(null, "请输入本金或者期望值");

				}
				else{
					amount = Double.parseDouble(b4.getText());
					principal=0;
					while (year <= n) {
						principal = amount / (1 + rate* year);
						year = year + 1;
					}

					output="本金"+currencyformatter.format(principal) + "\n";
					text.setText(output);
				}
			}
			else {
				principal = Double.parseDouble(b1.getText()); // 字符串转化为数字

				if (b4.getText().equals("")) {
					while (year <= n) {
						amount = principal * (1 + rate* year);
						output += String.valueOf(year) + "\t\t\t"
								+ currencyformatter.format(amount) + "\n";
						year = year + 1;
					}

					text.setText(output);
				}
				else{
					JOptionPane.showMessageDialog(null, "本金和期望值输入一个即可");
				}
			}

		}
	}

	public static void main(String[] args) {
		int Windowswidth=500;
		int Windowsheight=400;
		fuli frame = new fuli();
		frame.setVisible(true);
		frame.setSize(Windowswidth, Windowsheight);
		frame.setResizable(false);
		int width = Toolkit.getDefaultToolkit().getScreenSize().width;
		int height = Toolkit.getDefaultToolkit().getScreenSize().height;
		frame.setLocation((width-Windowswidth )/ 2, (height-Windowsheight)/ 2);        //窗口居中

	}
}

  界面及运行结果

时间: 2024-10-14 14:16:27

0311软件工程复利软件单利及期望值的实现的相关文章

软件工程---复利计算6.0

代码如下: import java.awt.Container; import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener; import javax.swing.JButton;import javax.swing.JComboB

Mooc软件工程-01软件基础和软件过程

1 软件的概念 含义 软件 = code + data + documents 也就是软件的代码, 软件相关的输入输出等数据, 和一切相关的文档 特点 抽象的, 无形的, 逻辑实体 不会被磨损 可以移植 软件是复杂的, 难设计难实现难维护 软件是昂贵的 2 软件危机和软件工程 软件危机 进度成本估算不准确 用户通常对完成的产品不满意 软件的质量通常是不可靠的 软件的可维护性差 没有可用文档 在计算机的比例越来雨大, 但是跟不上计算机的发展 软件工程 软件的实现是一个团队完成的, 这是一个工程项目

软件工程---复利计算实验总结

  前一次实验 这次实验(估计/实际) 语言 java java 代码行数 99 150/185 工作量 1.5h 2h/2.8h 前一次实验实现是复利计算的三个功能,从代码结构来看,功能结构非常混乱,在加入第四个功能时,干脆划分好结构后重写了程序,花了大概30分钟,然后花了不到20分钟就加入了功能5和6,记得在添加功能2和3时,由于代码结构混乱,花了30多分钟. 另外,在完成功能6后,又重新为程序添加了一个界面,大概花了1个小时,最终的代码及运行结果:http://www.cnblogs.co

软件工程之软件设计

英雄是随着历史的时代产生的,软工也不例外.软件工程这一门学科主要是为了解决当代软件危机而诞生的, 学习软件工程的视频过后,终于让我揭开了它的神秘面纱,让我对软工设计有了一个初步的认识,软工设计从大体上来说主要包括两大部分,概要设计和详细设计.下面我简单的介绍一下软件设计. 1.软件的组成及定义: 软件是计算机系统中与硬件相互依存的另一部分,是包括程序. 数据及其相关文档的完整集合.其中,程序是按事先设计的功能和性能要求执行的指令序列:数据为进行通信.解释和处理而使用的信息的形式化表现形式. 文档

软件工程----3软件项目管理

1 软件项目理概述 软件项目具有以下特征:1 软件产品的不可见性 2 项目的高度不确定性 3 软件工程的多变化性 4 软件人员的高流动性 软件项目管理的“4P”:1 人员 2 产品 3 过程 4 项目 软件项目管理活动 : 1 项目启动 2 项目规划 3 项目实施 4 项目收尾 2 人员组织与管理 软件项目组织 : 1 民主式组织结构 2 主程序员式组织结构 3 技术管理式组织结构 . 微软公司开发团队的特点 项目团队的角色划分:1产品管理角色 2 程序管理角色 3 软件开发角色 4 软件测试角

软件工程和软件开发流程

人们在开发.运营.维护软件的过程中有很多技术.做法.习惯和思想体系.软件工程把这些相关的技术和过程统一到一个体系中,叫"软件开发流程". 软件开发流程的目的是为了提高软件开发.运营.维护的效率,并提高软件的质量.用户满意度.可靠性和软件的可维护性. program=data structure+algorithm 程序=数据结构+算法 software=program+software engineering软件=程序+软件工程 software company=software+bu

软件工程----9软件实现

软件实现是软件产品由概念到实体的一个关键过程.包括代码设计,设计审查,代码走查,代码编译和单元测试. 1 程序设计语言 应用领域,用户要求,系统兼容,可移植性,开发环境 2 软件编码规范 文件命名与组织:1 用于说明版权和版本信息的文件头注释 2 package和import语句 3 类和接口说明语句 代码的版式: 1 适当的空行 2 代码行及行内空格 3 分行对齐与缩进 4 命名规则 5 声明  6 注释 3 软件编码案件分析 程序注释问题 变量命名问题 内存泄露问题 指针问题 异常处理问题

软件工程----11软件演化

1 软件演化的特性 1 软件演化是一个必然的过程 2 软件的不断修改会导致软件的退化.3 软件系统的演化特性是在早起的开发阶段建立起来的 4 软件开发的效率与投入的资源无关 5 在软件系统中添加新的功能不可避免的会产生新的缺陷 软件维护和软件再工程 2 软件维护 1 改正性维护 2 适应性维护 3 完善性维护 3 软件维护的特点 1 软件维护受开发过程影响大 2 软件维护困难多 3 软件维护成本高 4 软件维护过程 5软件再工程 1 对象选择 2 反向工程 3 文档重构 4 代码重构 5 数据重

软件工程之软件计划

做软件必须要有一个整体的框架,下面对软件计划需要做什么和怎么做,进行了总结. 一.问题定义 做什么:背景,开发系统现状,开发条件和理由,总体要求,问题的性质,目标,条件,环境要求等 怎么做: ①听取用户对问题的要求 ②调查开发的背景理由 ③看用户的报告 ④加工整理 ⑤用户?反复讨论?负责人 ⑥改进问题地方 ⑦满意的报告文档 ⑧进入可行性研究的意向 二.可行性研究 做什么:辨别经济.技术.操作.法律.时间的可行性 怎么做: ①问题的初认识: 了解待解决的问题,是如何被提出 设想解决,满足需求 了解