第二次作业
【实验目的】
1.掌握软件开发的基本流程
2.掌握常用的软件开发方式和工具
【实验内容】
设计一个包含登录界面的计算器软件,该软件可以实现第一次作业中的全部功能,同时可以保存用户的历史计算记录(保存数据最好使用数据库)
【实验环境及开发工具】
1.使用visio绘制流程图
2.使用Java语言与IntelliJ IDEA Community Edition作为开发工具
3.使用MySQL数据库存储数据
4.使用JDBC链接数据库
【具体操作】
1.流程图
(1)登录页面设计流程图

(2)计算器流程图

2. 登陆界面代码
<!DOCTYPE html>
<html>
<head>
<title>登陆页面</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class="login-container">
<h2>欢迎登录</h2>
<form>
<label for="username">用户名:</label>
<input type="text" id="username" name="username" placeholder="请输入用户名" required>
<label for="password">密码:</label>
<input type="password" id="password" name="password" placeholder="请输入密码" required>
<button type="submit">登录</button>
</form>
</div>
</body>
</html>
3.登陆界面展示
(1)登录失败界面

(2)登录成功界面

4.计算器功能模块实现
(1)代码
public class Calculator extends Application { String num1 = ""; String num2 = ""; String op = ""; static boolean flag2 = false; @Override public void start(Stage primaryStage) throws Exception { BorderPane pane = new BorderPane(); pane.setPadding(new Insets(5, 5, 5, 5)); TextField textField = new TextField(""); textField.setFont(new Font(40)); pane.setTop(textField); GridPane pane2 = new GridPane(); pane2.setAlignment(Pos.CENTER); pane2.setHgap(5); pane2.setVgap(5); String[] buttonName = { "7", "8", "9", "*", "4", "5", "6", "/", "1", "2", "3", "C", "0", "+", "-", "=" }; Button[] b = new Button[buttonName.length]; int col = 0, line = 0; for (int i = 0; i < buttonName.length; i++) { b[i] = new Button(buttonName[i]); pane2.add(b[i], col++, line); b[i].setOnAction(e -> { String s = ((Button)(e.getSource())).getText(); switch (s) { case "*" : case "/" : case "+" : case "-" : if(num1.equals("")) { if(s.equals("*") || s.equals("/")) textField.setText("ERROR!!! please set the num1"); else { num1 += s; textField.setText(num1); } } else { flag2 = false; op = s; textField.setText(num1 + s); num2 = ""; } break; case "C" : num1 = ""; num2 = ""; op = ""; textField.setText(""); break; case "=" : if(!num1.equals("") && op.equals("") && num2.equals("")) { num1 = String.valueOf(Double.parseDouble(num1)); textField.setText(num1); break; } if(!num1.equals("") && !op.equals("") && !num2.equals("")) { double count = 0; boolean flag = true; switch (op) { case "+": count = Double.parseDouble(num1) + Double.parseDouble(num2); break; case "-": count = Double.parseDouble(num1) - Double.parseDouble(num2); break; case "*": count = Double.parseDouble(num1) * Double.parseDouble(num2); break; case "/": if(Integer.parseInt(num2) == 0) flag = false; else count = Double.parseDouble(num1) / Double.parseDouble(num2); break; } if(flag) { num1 = String.valueOf(count); op = ""; num2 = ""; textField.setText(num1); flag2 = true; } else { num1 = ""; op = ""; num2 = ""; textField.setText("ERROR!!!"); } } else { num1 = ""; op = ""; num2 = ""; textField.setText("ERROR!!!"); } break; default: if(flag2) { num1 = ""; flag2 = false; } if(op.equals("")) { num1 += s; textField.setText(num1); } else { num2 += s; textField.setText(num1 + op + num2); } } }); if (col > 3) { col = 0; line++; } b[i].setStyle("-fx-font-size: 35px;-fx-pref-width:100px;-fx-pref-height:100px;"); } pane.setCenter(pane2); // pane2.setGridLinesVisible(true); Scene scene = new Scene(pane,650,700); primaryStage.setTitle("一个普通的计算器"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } }
(2)计算器界面

(3)计算器功能测试结果

5.数据库的连接
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<?php
$uname=$_GET['user'];
$pwd=$_GET['passwd'];
if($uname==null or $pwd==null){ echo "用户名或密码不能为空,请重新输入!";}
else{
$con = mysqli_connect('127.0.0.1', 'root', '123','test');
if (!$con) {
die("连接失败: " . mysqli_connect_error());
}
echo "数据库连接成功";
$sql="select username,password from test.users where username='$uname' and password='$pwd'";
$result=mysqli_query($con,$sql);
$row= mysqli_fetch_assoc($result);
if($row){
echo "登录成功,欢迎".$uname."!";
}
else{
echo "登录失败!< a href='test.php'>重新登录";
}
}
?>
浙公网安备 33010602011771号