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

计算器页面流程图(计算器流程图延续上次作业)

二、登录界面设计
<%--
Created by IntelliJ IDEA.
User: 86183
Date: 2023/12/1
Time: 23:42
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陆界面</title>
</head>
<body style="background: url(img/背景2.jpg);
background-size:cover;">
<div style="text-align: center;">
<a href="http://localhost:8080/Text3_web_war_exploded/Register.jsp">注册</a>
<form method="post" action="http://localhost:8080/Text3_web_war_exploded/[">
账号:<input type="text" name="id"><br>
密码:<input type="password" name="pad"><br>
<input type="submit" value="登录"><input type="reset" value="重新输入">
</form>
</div>
</body>
</html>
注册界面设计
<%--
Created by IntelliJ IDEA.
User: 86183
Date: 2023/12/2
Time: 16:15
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注册界面</title>
</head>
<body style="background: url(img/背景2.jpg);
background-size:cover;">
<div style="text-align: center;">
<form method="post" action="">
用户名:<input type="text" name="id"><br>
密码:<input type="password" name="pad"><br>
确认密码:<input type="password" name="pad2"><br>
<input type="submit" value="注册"><input type="reset" value="重新输入">
</form>
</div>
</body>
</html>
登录界面功能的实现
package servlet;
import com.sun.net.httpserver.HttpServer;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@webServlet(name = "RegisterServlet",urlPatterns = "/Register")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
int id = Integer.parseInt(request.getParameter(s:"id"));
String pwd=request.getParameter(s:"pwd");
PrintWriter out = response.getWriter();
try{
Database database = new Database();
Usedata usedata = database.login(url,upass);
if(usedata ==null) {
System.out.println("该用户不存在或密码错误"+"<a href=\"http://localhost:8080/Text3_web_war_exploded/\">返回登录</a>);
}
else{
System.out.println("欢迎登录"+getName());
}
}catch(ClassNotFoundException e){
throwables.printStackTrace();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
doPost(request,response);
}
}
注册界面功能的实现
package servlet;
import com.sun.net.httpserver.HttpServer;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@webServlet(name = "RegisterServlet",urlPatterns = "/Register")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
int id = Integer.parseInt(request.getParameter(s:"id"));
String pwd=request.getParameter(s:"pwd");
String pwd2 = request.getParameter(S:"pwd2");
PrintWriter out = response.getWriter();
if(pwd.equals(pwd2)){
try{
Database database = new Database();
database.insert(name,pwd);
out.println("注册成功");
for(Usedata each:usedata){
out.println(each.getID()+"------"+each.getName()+"-------"+each.gatPassword());
}
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException throwables){
throwables.printStackTrace();
}
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
doPost(request,response);
}
}
连接数据库
package com.qf.domian;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class TestConnectionMysql {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//jdbc连接MySQL数据库
//加载注册驱动
Class.forName("com.mysql.jdbc.Driver");
//连接数据库
String url="jdbc:mysql://127.0.0.1:3306/users?characterEncoding=UTF-8";
String uname="root";
String upass="123456";
Connection con = DriverManager.getConnection(url, uname, upass);
System.out.println(con);
}
}
数据库连接成功

数据库users表的建立
CREATE DATABASE users
CREATE TABLE userinfo(
uid INT,
uname VARCHAR(50),
upass VARCHAR(50),
uroot INT
)
数据库功能的实现
package com.qf.domian;
import org.w3c.dom.Node;
import org.w3c.dom.UserDataHandler;
import java.sql.*;
import java.util.ArrayList;
public class TestConnectionMysql {
Connection con=null;
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//jdbc连接MySQL数据库
//加载注册驱动
Class.forName("com.mysql.jdbc.Driver");
//连接数据库
String url="jdbc:mysql://127.0.0.1:3306/users?characterEncoding=UTF-8";
String uname="root";
String upass="123456";
Connection con = DriverManager.getConnection(url, uname, upass);
//关闭连接
con.close();
//在usrs表里面添加数据
PreparedStatement prep = con.prepareStatement("insert into web001.login value (null ,?,?)");
prep.setString(1,uname);
prep.setString(2,upass);
prep.execute();
//
ArrayList<UserDataHandler> uselist = new ArrayList<UserDataHandler>();
PreparedStatement prep = con.prepareStatement("select * from Text3_web.users");
prep.execute();
ResultSet resultSet = prep.executeQuery();
while(resultSet.next()) {
int myid = resultSet.getInt("uid");
String myname = resultSet.getString("name");
String mypass = resultSet.getString("upass");
uselist.add(new UserDataHandler(myid, myname, mypass));
}
return uselist;
//在表里查询数据
PreparedStatement prep = con.prepareStatement("select * from Text3_web.users where uid=?");
prep.setInt(1,url);
prep.execute();
ResultSet resultSet = prep.executeQuery();
if(resultSet.next()){
int myid =resultSet.getInt("uname");
String myname= resultSet.getString("name");
String mypass= resultSet.getString("upass");
return new UserDataHandler(myid,myname,mypass);
}
return null;
PreparedStatement prep = con.prepareStatement("select Text3_web.users where uname=?");
prep.setInt(1,url);
prep.execute();
ResultSet resultSet1= prep.executeQuery();
if (resultSet.next()){
String mypass =resultSet1.getString("upass")
if(upass.equals(mypass)){
return getUsers(id);
}
else
return null;
}
else
return null;
if(null){
System.out.println("该用户不存在或者密码错误");
}
else{
System.out.println("欢迎登录");
}
}
}
将上一次作业的计算器包导入并连接

数据库表建立成功,如下

运行跳转登陆界面

点击注册,跳转注册界面

注册,完成后选择重新登录

错误示例

跳转到计算器页面

具体计算过程见上次作业,此次作业篇幅过长,不做赘述。