目錄
一、前言介紹:
二、系統設計:
2.1 系統功能設計:
2.2 登入子產品設計:
三、資料設計:
3.1 資料庫設計
3.2 資料庫設計原則
3.3 資料ER圖設計:
3.4 主要庫表設計:
四、功能截圖:
4.1 登入:
4.2 注冊:
4.3 前台首頁:
4.4 管理者端:
五、代碼實作:
六、論文參考:
七、項目總結:
八、源碼擷取:
一、前言介紹:
網絡社會的快速發展從根本上改變了以往傳統的管理方式。自上個世紀以來,中國政府、企業和事業機關開始設想通過網際網路實作管理資訊和現代系統的維護。實作無紙化辦公,過去有各種原因,如網絡普及率低、使用者不習慣和不可接受、與網際網路有關的法律法規和制度不完善等,阻礙了網際網路的發展速度。進入21世紀後,中國經濟迅速發展。此前對機構管理的限制和各種問題已逐一得到解決。國内各大機構和企業都加入了現代資訊管理模式。過去,與體育用品銷售相關的資訊管理部門表示,員工将進行人工統計和記錄。這種方法時效性低,也很不友善。随着科學的進步和我們技術的不斷成熟,計算機的功能非常強大和完善。
本系統以java為核心開發技術,結合SpringBoot+VUE架構實作了一個知世體育用品銷售管理系統。知世體育用品銷售管理系統的主要使用者分為管理者、使用者;主要包括首頁子產品、個人中心子產品、使用者管理以及體育用品商家管理和體育用品商品管理、知世體育用品商品類型管理、訂單資訊管理、系統輪播圖管理、體育用品新聞資訊管理等功能。通過這些功能子產品的設計,基本上實作了整個體育用品銷售商品服務管理的過程。具體在系統設計上采用了B/S的結構。
二、系統設計:
2.1 系統功能設計:
系統架構圖屬于系統設計的早期階段。系統架構圖隻是這一階段的必要産品。系統的總體架構決定了整個系統的模式和層次,是系統的基礎。知世體育用品銷售管理系統的整體結構設計如圖所示
2.2 登入子產品設計:
登入子產品主要滿足了管理者以及其他使用者的權限登入,登入子產品順序圖如圖所示
三、資料設計:
3.1 資料庫設計
資料庫是計算機資訊系統的基礎。目前,電腦系統的關鍵與核心部分就是資料庫。資料庫開發的優劣對整個系統的品質和速度有着直接影響。
3.2 資料庫設計原則
資料庫概念結構設計采用的是:實體-關系(E-R)模型的方法來進行設計。 e-R模型方法的組成部分是:實體、屬性以及連接配接。 E-r模型用E-r圖進行表示、目的是提醒使用者工作環境中所涉及事物以及對象實體屬性是對實體特征具體描述。 資料庫表設計在系統設計中起着決定性關鍵作用、表設計和實體對象一一對應、 看下我們為這些關鍵實體設計一個實體關系圖吧。
3.3 資料ER圖設計:
資料模型中的實體,也稱為執行個體,對應于可以與現實世界中的其他對象區分開來的“事件”或“事物”。 例如,公司的每一個員工,車的每一個零件或者房子裡的每一件商品。
商品資訊管理實體圖如圖所示
使用者管理實體圖如圖所示
3.4 主要庫表設計:
管理者表是儲存網上商品銷售的使用者資訊表,其中表結構如所示。
列名 | 解釋 | 類型 | 大小 | 主鍵 | 空 |
Idyaopin | 主鍵 | int | 4 | 是主鍵 | 不能空 |
Usernameyaopin | 使用者名 | varchar2 | 50 | 不是 | 可以空 |
Passwordyaopin | 密碼 | varchar2 | 50 | 不是 | 可以空 |
typeyaopin | 類型 | varchar2 | 30 | 不是 | 可以空 |
訂單表是儲存網上商品銷售的訂單資訊表,其中id為主鍵,表結構如所示。
列名 | 解釋 | 類型 | 大小 | 主鍵 | 空 |
idyaopin | 主鍵 | int | 11 | 是主鍵 | 不能空 |
onumberyaopin | 訂單号 | varchar2 | 50 | 不是 | 可以空 |
Spcyaopin | 商品 | varchar2 | 50 | 不是 | 可以空 |
Slcyaopin | 購買數量 | varchar2 | 50 | 不是 | 可以空 |
addressyaopin | 位址 | varchar2 | 50 | 不是 | 可以空 |
teyaopin | 電話 | varchar2 | 13 | 不是 | 可以空 |
emailyaopin | 使用者郵箱 | varchar2 | 20 | 不是 | 可以空 |
shffyaopin | 收貨 | varchar2 | 60 | 不是 | 可以空 |
zfffyaopin | 使用者支付 | varchar2 | 10 | 不是 | 可以空 |
leavewordyaopin | 使用者留言 | varchar2 | 2000 | 不是 | 可以空 |
addtimeyaopin | 日期 | time | 不是 | 可以空 | |
xnameyaopin | 下單人 | varchar2 | 10 | 不是 | 可以空 |
ztyaopin | 訂單的狀态 | varchar2 | 2 | 不是 | 可以空 |
totalyaopin | 總價格 | varchar2 | 10 | 不是 | 可以空 |
kuaidiyaopin | 快遞名稱 | varchar2 | 20 | 不是 | 可以空 |
knumberyaopin | 單号 | int | 20 | 不是 | 可以空 |
Receiveryaopin | 收貨人姓名 | varchar2 | 10 | 不是 | 可以空 |
類别表是儲存網上商品銷售的類别資訊表,其中id為主鍵,表結構如所示。
表4-3 category類别表
列名 | 解釋 | 類型 | 大小 | 主鍵 | 空 |
idyaopin | 主鍵 | int | 4 | 是主鍵 | 不能空 |
pidyaopin | 分類類型 | int | 6 | 不是 | 可以空 |
titleyaopin | 分類名稱 | varchar2 | 60 | 不是 | 可以空 |
商品表是儲存網上商品銷售的商品資訊表,其中id為主鍵,表結構如所示。
列名 | 解釋 | 類型 | 大小 | 主鍵 | 空 |
idyaopin | 主鍵 | int | 4 | 是主鍵 | 不能空 |
pidyaopin | 類型編号 | int | 4 | 不是 | 可以空 |
categoryidyaopin | 分類編号 | int | 4 | 不是 | 可以空 |
pnumberyaopin | 商品的編号 | varchar2 | 10 | 不是 | 可以空 |
titleyaopin | 商品的名稱 | varchar2 | 10 | 不是 | 可以空 |
amountyaopin | 庫存購買數量 | int | 10 | 不是 | 可以空 |
cishuyaopin | 銷量 | int | 10 | 不是 | 可以空 |
mpriceyaopin | 市場的價格 | decimal | 10 | 不是 | 可以空 |
spriceyaopin | 會員的價格 | decimal | 10 | 不是 | 可以空 |
contentyaopin | 詳細介紹 | text | 不是 | 可以空 | |
apvyaopin | 點選 | int | 4 | 不是 | 可以空 |
imgyaopin | 圖檔 | varchar2 | 50 | 不是 | 可以空 |
statusyaopin | 狀态 | int | 2 | 不是 | 可以空 |
addtimeyaopin | 添加時間 | timestamp | 不是 | 可以空 |
會員表是儲存網上商品銷售的會員資訊表,其中id為主鍵,表結構如所示。
列名 | 解釋 | 類型 | 大小 | 主鍵 | 空 |
idyaopin | 主鍵 | smallint | 5 | 是主鍵 | 不能空 |
accountyaopin | 使用者名 | varchar2 | 64 | 不是 | 可以空 |
nicknameyaopin | 昵稱 | varchar2 | 50 | 不是 | 可以空 |
passwordyaopin | 密碼 | char | 32 | 不是 | 可以空 |
emailyaopin | 郵箱 | varchar2 | 50 | 不是 | 可以空 |
addtimeyaopin | 注冊時間 | timestamp | 不是 | 可以空 | |
imgyaopin | 頭像 | varchar2 | 255 | 不是 | 可以空 |
sexyaopin | 性别 | varchar2 | 255 | 不是 | 可以空 |
telyaopin | 電話 | varchar2 | 50 | 不是 | 可以空 |
addressyaopin | 位址 | varchar2 | 50 | 不是 | 可以空 |
statusyaopin | 狀态 | int | 2 | 不是 | 可以空 |
公告表是網上商品的公告資訊表,其中id為主鍵,表結構如所示。
列名 | 解釋 | 類型 | 大小 | 主鍵 | 空 |
idyaopin | 主鍵 | smallint | 5 | 是主鍵 | 不能空 |
titleyaopin | 公告标題 | char | 32 | 不是 | 可以空 |
contentyaopin | 公告内容 | varchar2 | 50 | 不是 | 可以空 |
購物車表是儲存網上商品銷售的購物車資訊表,其中id為主鍵,表結構如所示。
列名 | 解釋 | 類型 | 大小 | 主鍵 | 空 |
id | 主鍵 | smallint | 5 | 是主鍵 | 不能空 |
titleyaopin | 商品資訊 | char | 32 | 不是 | 可以空 |
shuliang | 購買數量 | varchar2 | 50 | 不是 | 可以空 |
Huiyuan | 會員 | varchar2 | 50 | 不是 | 可以空 |
訂單表是儲存網上商品銷售的訂單資訊表,其中id為主鍵,表結構如圖所示。
列名 | 解釋 | 類型 | 大小 | 主鍵 | 空 |
idyaopin | 主鍵 | int | 11 | 是主鍵 | 不能空 |
onumberyaopin | 訂單号 | varchar2 | 50 | 不是 | 可以空 |
Spcyaopin | 商品 | varchar2 | 50 | 不是 | 可以空 |
Slcyaopin | 購買數量 | varchar2 | 50 | 不是 | 可以空 |
addressyaopin | 位址 | varchar2 | 50 | 不是 | 可以空 |
teyaopin | 電話 | varchar2 | 13 | 不是 | 可以空 |
emailyaopin | 使用者郵箱 | varchar2 | 20 | 不是 | 可以空 |
shffyaopin | 收貨 | varchar2 | 60 | 不是 | 可以空 |
zfffyaopin | 使用者支付 | varchar2 | 10 | 不是 | 可以空 |
leavewordyaopin | 使用者留言 | varchar2 | 2000 | 不是 | 可以空 |
addtimeyaopin | 日期 | time | 不是 | 可以空 | |
xnameyaopin | 下單人 | varchar2 | 10 | 不是 | 可以空 |
ztyaopin | 訂單的狀态 | varchar2 | 2 | 不是 | 可以空 |
totalyaopin | 總價格 | varchar2 | 10 | 不是 | 可以空 |
kuaidiyaopin | 快遞名稱 | varchar2 | 20 | 不是 | 可以空 |
knumberyaopin | 單号 | int | 20 | 不是 | 可以空 |
Receiveryaopin | 收貨人姓名 | varchar2 | 10 | 不是 | 可以空 |
四、功能截圖:
4.1 登入:
項目啟動後、管理者通過填寫使用者名、密碼等資訊進行登入驗證,輸入完成後選擇角色登入驗證賬号密碼無誤後、即可進入知世體育用品銷售管理系統首頁,如圖所示。
4.2 注冊:
體育用品銷售商品系統系統,頁面設計主要是在首頁頭部引入common以及jquery等公共的js和css樣式布局檔案,通過recommend index-pv2 DIV樣式設計頭部幾個菜單欄的顯示。使用者點選其中一個div觸發點選時間、頁面就加載架構的布局、調用提前寫好的.index-pv1 .animation-box:hover CSS檔案等來渲染整個前端頁面、使用者登入注冊,在使用者注冊頁面通過填寫賬号、密碼、姓名、手機、等資訊使用者注冊,注冊是使用者輸入input注冊框之後點選确定事件(onsubmit)按鈕、送出的時候綁定函數、書寫函數(擷取使用者輸入的資料<擷取資料時需要在指定位置定義一個id>)、然後對form表單的資料進行判斷、進行資料合法(form表單送出)、若資料非法(給出錯誤提示資訊彈窗button,不讓表單送出)
4.3 前台首頁:
使用者登入進入知世體育用品銷售管理系統可以檢視首頁子產品、個人中心子產品、訂單資訊管理、我的收藏管理等内容進行詳細操作。
4.4 管理者端:
管理者登入進入知世體育用品銷售管理系統後、可以檢視首頁子產品、個人中心子產品、使用者管理、體育用品商家子產品、體育用品商品類型管理、體育用品商品資訊管理、體育用品訂單資訊管理子產品以及體育用品銷售商品新聞資訊以及輪播圖内容子產品進行詳細的操作處理。
體育用品銷售商品資訊管理,使用者點選商品資訊管理頁面中可以對索引、商品名稱、商品類型、圖檔、價格、購買數量、商品重量、生産日期等内容進行進行詳情,修改或删除等操作,在商品資訊管理頁面使用者點選清單、觸發清單背景清單重新操作、代用背景ShangpingController業務處理類進行處理、調用page分頁查詢方法、page頁面方法重寫了Service調用背景資料庫執行SQL語句查詢、将查詢的結果傳回給Controller--page方法、設計傳回值接收資料庫查詢的集合資料、最後傳回前端Shangping頁面進行資料渲染實作、進而前端進行顯示。
訂單資訊管理,使用者點選訂單資訊管理頁面中可以對、索引、訂單編号、商品名稱、商品類型、價格、總價格、購買日期、使用者名、購買數量、姓名、手機、是否支付等内容進行進行詳情,修改或删除等操作。
五、代碼實作:
/**
* 訂單
* 後端接口
* @author
* @email
* @date 2022-03-27 17:11:41
*/
@RestController
@RequestMapping("/orders")
public class OrdersController {
@Autowired
private OrdersService ordersService;
/**
* 清單
*/
@RequestMapping("/lists")
public R list( OrdersEntity orders){
EntityWrapper<OrdersEntity> ew = new EntityWrapper<OrdersEntity>();
ew.allEq(MPUtil.allEQMapPre( orders, "orders"));
return R.ok().put("data", ordersService.selectListView(ew));
}
/**
* 查詢
*/
@RequestMapping("/query")
public R query(OrdersEntity orders){
EntityWrapper< OrdersEntity> ew = new EntityWrapper< OrdersEntity>();
ew.allEq(MPUtil.allEQMapPre( orders, "orders"));
OrdersView ordersView = ordersService.selectView(ew);
return R.ok("查詢訂單成功").put("data", ordersView);
}
/**
* 後端清單
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,OrdersEntity orders,
HttpServletRequest request){
if(!request.getSession().getAttribute("role").toString().equals("管理者")) {
orders.setUserid((Long)request.getSession().getAttribute("userId"));
}
EntityWrapper<OrdersEntity> ew = new EntityWrapper<OrdersEntity>();
PageUtils page = ordersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, orders), params), params));
return R.ok().put("data", page);
}
/**
* 前端清單
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,OrdersEntity orders, HttpServletRequest request){
EntityWrapper<OrdersEntity> ew = new EntityWrapper<OrdersEntity>();
PageUtils page = ordersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, orders), params), params));
return R.ok().put("data", page);
}
/**
* 後端詳情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
OrdersEntity orders = ordersService.selectById(id);
return R.ok().put("data", orders);
}
/**
* 前端詳情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
OrdersEntity orders = ordersService.selectById(id);
return R.ok().put("data", orders);
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody OrdersEntity orders, HttpServletRequest request){
//ValidatorUtils.validateEntity(orders);
ordersService.updateById(orders);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
ordersService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 後端儲存
*/
@RequestMapping("/save")
public R save(@RequestBody OrdersEntity orders, HttpServletRequest request){
orders.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(orders);
orders.setUserid((Long)request.getSession().getAttribute("userId"));
ordersService.insert(orders);
return R.ok();
}
/**
* 前端儲存
*/
@RequestMapping("/add")
public R add(@RequestBody OrdersEntity orders, HttpServletRequest request){
orders.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(orders);
ordersService.insert(orders);
return R.ok();
}
/**
* 提醒接口
*/
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type,@RequestParam Map<String, Object> map) {
map.put("column", columnName);
map.put("type", type);
if(type.equals("2")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date remindStartDate = null;
Date remindEndDate = null;
if(map.get("remindstart")!=null) {
Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindStart);
remindStartDate = c.getTime();
map.put("remindstart", sdf.format(remindStartDate));
}
if(map.get("remindend")!=null) {
Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindEnd);
remindEndDate = c.getTime();
map.put("remindend", sdf.format(remindEndDate));
}
}
Wrapper<OrdersEntity> wrapper = new EntityWrapper<OrdersEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
if(!request.getSession().getAttribute("role").toString().equals("管理者")) {
wrapper.eq("userid", (Long)request.getSession().getAttribute("userId"));
}
int count = ordersService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
六、論文參考:
摘 要
Abstract
目 錄
1 概述
1.1課題背景及意義
1.2 國内外研究現狀
1.3 主要研究方法
2 系統開發環境
2.1 Spring架構介紹
2.2 JAVA語言介紹
2.3 MySQL資料庫介紹
2.4 系統插件的使用
3 系統分析
3.1 可行性分析
3.2系統流程分析
3.2.1系統開發流程
3.2.2 使用者登入流程
3.2.3 系統操作流程
3.3系統用例分析
3.3.1管理者用例圖
3.3.2使用者用例圖
4 系統設計
4.1 系統概述
4.2 系統結構設計
4.3系統順序圖設計
4.3.1登入子產品順序圖
4.3.2添加資訊子產品順序圖
4.4資料庫設計
4.4.1 資料庫設計原則
4.4.2 資料庫實體
1、商品資訊管理實體圖如圖4-3所示:
2、使用者管理實體圖如圖4-4所示:
4.4.3 資料庫表設計
5系統界面實作
5.1管理者功能子產品
5.2商品使用者功能子產品
5.3商家功能子產品
6系統測試
6.1系統測試的意義
6.2功能測試:
6.3測試結論
總結
緻謝
七、項目總結: