[实验目的]
1.掌握软件开发的基本流程
2.掌握常用的软件开发方式和工具。
[实验内容]
1.设计一个包含登录界面的计算器软件,该软件可以实现第一次作业中的全部功能,同时可以保存用户的历史计算记录(保存数据最好使用数据库)。
[实验要求]
1.完成软件的UI设计、使用Visio设计软件中所涉及的所有流程图。
2.选择合适的集成开发环境和工具完成计算器软件的开发
3.将开发好软件进行测试并截图
4.将本次实验过程写成实验报告提交在本次作业的链接中
5.关键代码部分以代码块格式粘贴在实验报告正文中
6.软件架构以及开发技术不限
7.本次作业为个人作业,发现雷同作业一律按0分处理。
1.登录界面流程图

2.实现代码
<!DOCTYPE html>
<html>
<head>
<title>计算器登录页面</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f1f1f1;
}
.container {
width: 300px;
margin: 100px auto;
background-color: #fff;
padding: 20px;
border-radius: 5px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
h2 {
text-align: center;
}
input[type="text"],
input[type="password"] {
width: 100%;
padding: 10px;
margin-bottom: 15px;
border: 1px solid #ccc;
border-radius: 3px;
}
input[type="submit"] {
width: 100%;
background-color: #4caf50;
color: #fff;
border: none;
padding: 10px;
border-radius: 3px;
cursor: pointer;
}
input[type="submit"]:hover {
background-color: #45a049;
}
</style>
</head>
<body>
<div class="container">
<h2>计算器登录</h2>
<form action="calculator.html" method="post">
<label for="username">用户名:</label>
<input type="text" id="username" name="username" required>
<label for="password">密码:</label>
<input type="password" id="password" name="password" required>
<input type="submit" value="登录">
</form>
</div>
</body>
</html>
3.登录作业

4.计算器流程图

5.计算器界面

6.历史记录

7.实现代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator {
private JFrame frame; private JTextField textField;
private JButton btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn0;
private JButton btnAdd, btnSubtract, btnMultiply, btnDivide, btnEquals, btnClear;
private double firstNumber; private String operator;
public Calculator() {
frame = new JFrame("Calculator");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 400);
frame.setLayout(new BorderLayout());
textField = new JTextField();
textField.setHorizontalAlignment(JTextField.RIGHT);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(4, 4));
btn1 = new JButton("1");
btn2 = new JButton("2");
btn3 = new JButton("3");
btn4 = new JButton("4");
btn5 = new JButton("5");
btn6 = new JButton("6");
btn7 = new JButton("7");
btn8 = new JButton("8");
btn9 = new JButton("9");
btn0 = new JButton("0");
btnAdd = new JButton("+");
btnSubtract = new JButton("-");
btnMultiply = new JButton("*");
btnDivide = new JButton("/");
btnEquals = new JButton("=");
btnClear = new JButton("C");
panel.add(btn1);
panel.add(btn2);
panel.add(btn3);
panel.add(btnAdd);
panel.add(btn4);
panel.add(btn5);
panel.add(btn6);
panel.add(btnSubtract);
panel.add(btn7);
panel.add(btn8);
panel.add(btn9);
panel.add(btnMultiply);
panel.add(btn0);
panel.add(btnClear);
panel.add(btnEquals);
panel.add(btnDivide);
frame.add(textField, BorderLayout.NORTH);
frame.add(panel, BorderLayout.CENTER);
frame.setVisible(true);
btn1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textField.setText(textField.getText() + "1");
} });
btn2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e)
{
textField.setText(textField.getText() + "2"); } }); // 添加其他按钮的监听器
btnAdd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
firstNumber = Double.parseDouble(textField.getText());
operator = "+"; textField.setText(""); }
});
btnEquals.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
double secondNumber = Double.parseDouble(textField.getText());
double result = 0;
if (operator.equals("+")) {
result = firstNumber + secondNumber;
} else if (operator.equals("-"))
{ result = firstNumber - secondNumber;
} else if (operator.equals("*"))
{ result = firstNumber * secondNumber;
} else if (operator.equals("/"))
{ result = firstNumber / secondNumber;
}
textField.setText(String.valueOf(result)); }
});
btnClear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textField.setText("");
} });
} public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() { new Calculator();
} });
}}
我们使用的算法思想是牛顿迭代法Q Qpackage package1 ;
import java.util .Scanner ;
public class t010fx {
public static void main(String args[])Scanner S = new Scanner (System. in);
System . out . pr intln("请输入一个你想开方的值int C = s.nextInt( );
double x1 ,X0 = C;
double fx = 2*x0;
x1 = x0 - (x0*x0-c)/fx;
while(Math.abs(x1-x0)>1e-16){
x0 = x1;
x1 = x0 - (x0*x0-c)/fx;
}