第二次作业

发布时间 2023-12-04 12:03:12作者: 披着虎皮的小仓鼠

 

[实验目的]

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("欢迎登录");
        }
    }

}

将上一次作业的计算器包导入并连接

 数据库表建立成功,如下

运行跳转登陆界面

 点击注册,跳转注册界面

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

 错误示例

  跳转到计算器页面

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