小卖铺

:::tip 隔了这么多天都没有写博客,最近作业太多了,这个这次用的markdown格式感觉还可以。 :::

# 1. 引言

# 1.1 选题背景

# 1.2 选题意义

# 2. 相关技术介绍

# 2.1 SSM框架技术

# 2.2 MySQL数据库

# 2.3 Spring Security安全框架

# 2.4 JSP和jQuery

# 2.5 JSON

# 3. 系统需求分析

# 3.1 系统可行性分析

# 3.2 系统需求分析

# 4. 系统功能设计

# 4.1 系统总体设计

由上面的需求分析,设计出如下的上下文数据流图和0层数据流图。

学生学生老板老板小卖铺系统小卖铺系统通知通知上架/下架商品上架/下架商品查询订单/同意/拒绝发货查询订单/同意/拒绝发货选购/下单商品选购/下单商品变更订单变更订单身份信息身份信息身份信息身份信息图4-1 上下文数据流图图4-1 上下文数据流图Viewer does not support full SVG 1.1

学生学生商家商家学生表学生表商家表商家表商品列表商品列表购物车表购物车表订单列表订单列表1检查是否登录检查是否登录4购物车购物车6下架商品下架商品3选择商品选择商品8变更订单变更订单5上架商品上架商品1检查是否登录检查是否登录9生成订单生成订单选择商品选择商品登录状况登录 状况未登录未登录登录已 登录加入商品加入商品删除商品删除商品下单下单记录订单记录订单通知通知检查检查7确认订单确认订单备货备货送货上门…获取商品信息获取商品信息…2发货发货获取地址获取 地址商品商品学生地址学生地址商家信息商家信息登陆状况登陆状况未登录未登录上架上架上架上架下架下架下架下架获取商品信息获取商品信息变更变更变更变更图4-2 0层数据流图图4-2 0层数据流图Viewer does not support full SVG 1.1

# 4.2 数据库分析与设计

# 4.2.1 数据库ER图设计

用户用户关系1关系1用户号用户号角色角色权限权限商品商品关系2关系2购物车购物车类型类型密码密码角色号角色号角色名角色名角色描述角色描述创建时间创建时间权限号权限号权限名字权限名字权限标志权限标志地址地址订单订单创建时间创建时间总额总额图4-3 ER关系图图4-3 ER关系图Viewer does not support full SVG 1.1

# 4.2.2 数据库表的设计

# 4.3 系统模块详细设计

# 4.3.1 用户登录

开始开始结束结束主页主页有账号?有账号?输入用户名密码输入用户名密码true?true?输入图片验证码输入图片验证码true?true?登录成功登录成功NNNN注册注册NNYYYYYY图4-4 用户登录流程图4-4 用户登录流程Viewer does not support full SVG 1.1

# 4.3.2 生成订单

图4-5 生成订单流程图4-5 生成订单流程Viewer does not support full SVG 1.1

# 4.4 页面交互流程

主页主页注册注册登录登录学生学生管理员管理员店长店长我的订单我的订单加入购物车加入购物车购物车购物车退出退出我的信息我的信息修改地址修改地址修改密码修改密码下单下单删除删除退出退出我的订单我的订单店长商品管理店长商品管理我的信息我的信息修改地址修改地址修改密码修改密码学生学生商品上架商品上架商品删除商品删除商品管理商品管理退出退出用户管理用户管理删除商品删除商品添加用户添加用户更改用户信息更改用户信息图4-6 页面交互流程图图4-6 页面交互流程图Viewer does not support full SVG 1.1

# 5. 系统实现

# 5.1 开发环境

# 5.2 匿名用户首页

图5-1 匿名用户首页图5-1 匿名用户首页Viewer does not support full SVG 1.1

# 5.3 用户登录界面展示

图5-2 用户登录界面图5-2 用户登录界面Viewer does not support full SVG 1.1

# 5.4 学生首页实现

图5-3 学生首页图5-3 学生首页Viewer does not support full SVG 1.1

# 5.5 店长商品上架

图5-4 店长商品管理页面图5-4 店长商品管理页面Viewer does not support full SVG 1.1

# 5.6 管理员用户管理

图5-5 管理员用户管理界面图5-5 管理员用户管理界面Viewer does not support full SVG 1.1

# 6. 测试与验证

# 6.1 用户登录测试

# 6.2 学生下单

# 6.3 商品上架

# 6.4 管理员更改用户密码

# 7. 收获

# 8. 附录

# AndroidManifest.xml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.zuoye">
    
    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:allowBackup="true"
        android:usesCleartextTraffic="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

# activity_main.xml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <WebView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/web_view"/>

</LinearLayout>

# MainActivity.java

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.example.zuoye;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Build;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       WebView main_webview = findViewById(R.id.web_view);
        WebSettings settings = main_webview.getSettings();
        settings.setJavaScriptCanOpenWindowsAutomatically(true);//设置js可以直接打开窗口,如window.open(),默认为false
        settings.setJavaScriptEnabled(true);//是否允许执行js,默认为false。设置true时,会提醒可能造成XSS漏洞
        settings.setSupportZoom(true);//是否可以缩放,默认true
        settings.setBuiltInZoomControls(true);//是否显示缩放按钮,默认false
        settings.setUseWideViewPort(true);//设置此属性,可任意比例缩放。大视图模式
        settings.setLoadWithOverviewMode(true);//和setUseWideViewPort(true)一起解决网页自适应问题
        settings.setAppCacheEnabled(true);//是否使用缓存
        settings.setDomStorageEnabled(true);//DOM Storage
        main_webview.loadUrl("http://10.0.2.2:8080/shop2_war/");

        //该方法解决的问题是打开浏览器不调用系统浏览器,直接用webview打开
        main_webview.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });
    }
}
Licensed under CC BY-NC-SA 4.0