我是java的初学者,有人给了我一个项目,让我编写一个简单的java应用程序,计算某个工人的每周净工资。现在我已经写了代码,但在一个类中,我需要使这个代码基于mvc架构,有人可以帮助吗?
编写一个计算工人每周净工资的应用程序。输入是工人的姓名、一周的工作时间和小时工资率。输出是工人的姓名和工资。工资计算如下:
总工资是工作时间乘以工资率。工作超过40小时,每小时支付50%的奖金。
从工资总额中扣除22%的工资税
代码如下:
import javax.swing.*;
import java.text.*;
public class workersNetPay {
public static void main(String[] args) {
String name = JOptionPane.showInputDialog("Write the name of the worker:");
String hoursWorked = JOptionPane.showInputDialog("Write the hours worked during the week:");
double hW = new Double(hoursWorked).doubleValue();
String hourlyPayRate = JOptionPane.showInputDialog("Write the hourly pay rate:");
double hpr = new Double(hourlyPayRate).doubleValue();
double tax = 0.22;
double grossPay = (hW*hpr)-((hW*hpr)*tax);
double bonus = (grossPay * 0.5)+grossPay;
String euro = "\u20AC";
DecimalFormat formatter = new DecimalFormat("0.00");
if (hW > 40) {
JOptionPane.showMessageDialog(null, "Sir " + name + " your wage for this week is: " + formatter.format(bonus)+ euro);
} else {
JOptionPane.showMessageDialog(null,"Sir " + name + " your wage for this week is: " + formatter.format(grossPay)+ euro);
}
}
}
编辑:现在我已经写了模型和视图,但是有人能帮我用控制器吗
模型
public class Model {
private double workersNetPay;
public void calculate(double hoursWorked, double hourlyPayRate, double tax, double bonus, double grossPay) {
tax = 0.22;
if (hoursWorked> 40) {
JOptionPane.showMessageDialog(null, bonus = (grossPay * 0.5) + grossPay);
} else {
JOptionPane.showMessageDialog(null,grossPay = (hoursWorked* hourlyPayRate)-((hoursWorked*hourlyPayRate)-tax));
}
}
public double getWorkersNetPay() {
return workersNetPay;
}
}
景色
import java.awt.*;
import javax.swing.*;
public class view {
public String name() {
String name = JOptionPane.showInputDialog("Write your name");
return name;
}
public double hours() {
double h ;
String hW = JOptionPane.showInputDialog("Write the hours worked during the week:");
if (hW.matches("\\d+")) {
h = Double.parseDouble(hW);
} else {
throw new IllegalArgumentException("You should write a number:");
}
return h;
}
public double hourlyPay() {
double hp;
String hpr = JOptionPane.showInputDialog("Write the hourly pay rate:");
if (hpr.matches("\\d+")) {
hp = Double.parseDouble(hpr);
} else {
throw new IllegalArgumentException("You should write a number:");
}
return hp;
}
public void theResult(duoble result) {
JOptionPane.showMessageDialog(null, result, "Result", JOptionPane.INFORMATION_MESSAGE);
}
}
3条答案
按热度按时间n1bvdmb61#
老实说,你应该做些调查。从“mvc java示例”开始。
祝你一切顺利
niwlg2el2#
我认为您不了解mvc(model,view,controller)体系结构的概念。
The Model
是你的代码的一个地方,在那里你保存,读取和写入数据-你不做任何其他事情,如计算和东西。在你的地方,我会创造一个
class Worker
它所需的私有成员,您可以在其中保存每个工人的数据。接下来,您可以创建某种数据结构来存储Workers
你已经创造了,例如HashMap
快速访问。The View
是代码的一个地方,在这里只显示信息。The Controller
是使the Model
以及the View
并使它们分开,这是坚实的设计原则的根源。把这些事情掩盖起来,你的主要想法应该是这样的:
除此之外,我建议您遵循始终使用大写(“视图”->“视图”)编写java类的惯例,采取在同一行或新行上编写大括号的方式,但不能同时在这两行上编写,并且始终将右大括号保留在新行上!它将使您的代码更易于阅读!
hmae6n7t3#
我根据mvc模式重新编写了你的代码。这是最后一个作业窗格。
![](https://i.stack.imgur.com/9VN7T.png)
我创建了一个模型类,
Worker
.这个
Worker
类是一个带有getter和setter的普通java类。这些计算包含在model类中,因为它们对于模型的每个示例都是相同的Worker
. 当计算代码包含在模型中时,计算代码在控制器方法中执行。视图由
WorkersPayExample
班级。控制器由一个公共方法组成,即createWorkerPayStub
方法。在这个简单的示例中,很难创建控制器类。下面是完整的可运行代码。