第二次作业

实验目的

  1.掌握软件开发的基本流程

  2.掌握常用的软件开发方式和工具。

实验内容

  1.设计一个包含登录界面的计算器软件,该软件可以实现第一次作业中的功能,同时可以保存用户的历史计算记录(保存数据最好使用数据库)。

实验所用环境及工具

  1.使用Hbulider X和eclipse编写

       2.使用Visio绘制流程图

一、登录页面(使用Hbulider X)

1.web.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <!-- 页面的标题,也是收藏网页时的名字 -->
        <title>欢迎来到非常好用的计算器</title> 
        <!-- 连接css文件 -->
        <link rel="stylesheet" href="css/my.css"/>
        <!-- 连接js文件 -->
        <script src="js/index.js"></script>
        <!-- 整体背景
        <style type="text/css">
            body{
                    background-image:url(img/234.jpg);
                    /* background-repeat: no-repeat; */
                }
        </style> -->
    </head>
    <!-- 内容区域,浏览器可见内容 -->
    <body>
        <div id="div1">
            <lable>用户:</lable>
            <input id="name" placeholder="请输入用户名"/>
        <br>
            <lable>密码:</lable>
            <input id="pwd" type="password" placeholder="请输入密码"/>
        <br>
            <!-- <lable>验证码</lable>
            <input placeholder="请输入验证码"/>
            <lable>5201314</lable>
        <br> -->
            <div id="two">
                <input onclick=tz() id="login" type="submit" value="登录"/>
                <input id="submit" type="submit" value="注册"/>
            </div>
        </div>
<!-- <script>
    function tz{
        var name=document.getElementById("name").value;
        var pwd=document.getElementById("pwd").value;
        if(name=="尚瑾"&&pwd=="0715"){
            alert("密码正确,进入计算器页面");
        }
        else{
            alert("用户名或密码错误");
        }
    }
</script> -->
    </body>
</html>

2.my.css

body{
        background-image:url("../img/123.jpg");
        background-color: aliceblue;
        width: 100%;
        height: 100%;
}
#div1{
        width: 500px;
        height: 150px;
        position: absolute;
        left:0;
        top:0;
        right:0;
        bottom:0;
        margin:auto;
    }
.two{
        margin-top: 10px;
        width: 500px;
        height: 30px;
    }
#name{
    width: 400px;
    height: 30px;
}
#pwd{
    margin-top: 10px;
    width: 400px;
    height: 30px;
}
#login{
    width: 60px;
    height: 30px;
    margin-top: 10px;
    margin-left: 175px;
}
#submit{
    width: 60px;
    height: 30px;
    margin-top: 10px;
    margin-left: 30px;
}

使用的背景图片,将背景图片添加在img下。

 

 

3.index.js

function tz() {
    var name=document.getElementById("name");
    var pwd=document.getElementById("pwd");
    if(name=="尚瑾"&&pwd=="0715"){
        alert("用户名和密码正确,进入计算器");
    }
    else{
        alert("用户名或密码错误");
    }
}

4.实验结果(登录页面)

5.登录流程图

 

6.实验分析:登录页面未实现跳转,未实现登录页面和计算器页面连接,对javaScript的学习不够透彻,输入用户名和密码正确时也显示错误。

二、计算器页面(使用eclipse)

1、计算器的实现

package start;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
public class Carculator extends JFrame implements ActionListener {
    //北面的控件
    private JPanel jp_north=new JPanel();
    private JTextField input_text=new JTextField();//输入框
    private JButton c_Btn=new JButton("c");//删除键
    String password;//创建工程---显示窗体
    //中间的控件
    private JPanel jp_center=new JPanel();
    
    public Carculator() throws HeadlessException {
        this.init();
        this.addNorthComponent();
        this.addCenterButton();
    }
    //初始化的方法
    public void init() {
        this.setTitle("计算器");//界面名称
        this.setSize(400,400);//界面大小
        this.setLayout(new BorderLayout());//建立布局
        this.setResizable(false);//防止计算器界面被拉伸
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //使用system exit方法退出应用程序
    }
    //添加北面的控件
    public void addNorthComponent() {
        this.input_text.setPreferredSize(new Dimension(330,60));
        //设置输入框的长度和宽度
        jp_north.add(input_text);//将北面的控件加进控制面板
        
        this.c_Btn.setForeground(Color.RED);//将删除键设置为红色
        jp_north.add(c_Btn);
        //清空功能的实现
        c_Btn.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
                input_text.setText("");
            }
        });
        this.add(jp_north,BorderLayout.NORTH);
    }
    //添加中间的按钮
    public void addCenterButton() {
        //将按钮的字符添加在一个字符串中
        String btn_text="123+456-789*0.=/";
        String regex="[\\+\\-*/.=]";
        this.jp_center.setLayout(new GridLayout(4,4));//创建4行4列,也就是16个键
        for(int i=0;i<16;i++)//将16个键加入
        {
            //每个按钮对应文字
            String temp=btn_text.substring(i,i+1);
            JButton btn= new JButton();
            btn.setText(temp);
            //设置运算符的字体颜色大小
            if(temp.matches(regex)) {
                btn.setFont(new Font("粗体",Font.BOLD,16));
                btn.setForeground(Color.RED);
            }
            //给按钮添加监听
            btn.addActionListener(this);
            jp_center.add(btn);
        }
        //将中间的控件加入面板
        this.add(jp_center,BorderLayout.CENTER);
    }
    public static void main(String[] args) {
        Carculator carculator = new Carculator();
        carculator.setVisible(true);
    }
    //记录第一次输入的值
    private String firstInput = null;
    private String operator = null;
    @Override
    public void actionPerformed(ActionEvent e) {
            String clickStr=e.getActionCommand();
            if(".0123456789".indexOf(clickStr)!=-1) {
                //点击数字让数字显示在框中
                this.input_text.setText(input_text.getText()+clickStr);
                //让数字显示在输入框的右边
                this.input_text.setHorizontalAlignment(JTextField.RIGHT);
            }else if(clickStr.matches("[\\+\\-*/]{1}")){
                operator=clickStr;
                firstInput=this.input_text.getText();
                //记录第一次的值后清空
                this.input_text.setText("");
            }else if(clickStr.equals("=")) {
                //点击等号时进行运算
                Double a=Double.valueOf(firstInput);
                Double b=Double.valueOf(this.input_text.getText());
                Double result=null;
                switch(operator) {
                    case "+":
                        result = a + b;
                        break;
                    case "-":
                        result = a - b;
                        break;
                    case "*":
                        result = a * b;
                        break;
                    case "/":
                        if (b != 0) {
                            result = a / b;
                        }
                        break;
                }
                this.input_text.setText(result.toString());
            }
        }
    
    }

2、数据库(MySQL)的连接

package start;
import java.beans.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
public class Connext {
    public class TestConnect {
        private final static String url = "jdbc:mysql://localhost:3306/mytest?serverTimezone=GMT";
        private final static String username = "root";
        private final static String password = "0715";

        public static void main(String args[]) {
            try {
                Class.forName("com.mysql.jdbc.Driver");
                } catch (Exception e) {
                e.printStackTrace();
            }
            try {
                Connection connect = DriverManager.getConnection(url, username, password);
                Statement stmt = (Statement) connect.createStatement();
                ResultSet rs = ((java.sql.Statement) stmt).executeQuery("select * from users");
                while (rs.next()) {
                    System.out.print("result:" + rs.getDouble("result"));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            
        }
    }

}

3、实验结果

(1)数据库的建立和表的建立

 (2)计算器页面

 (3)运行结果

5*6=30

 

posted @ 2023-11-17 15:34  小丸子^_^  阅读(154)  评论(0)    收藏  举报