第二次作业
实验目的
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

浙公网安备 33010602011771号