目錄
一、前言介紹:
網(wǎng)絡(luò)社會(huì)的快速發(fā)展從根本上改變了以往傳統(tǒng)的管理方式。自上個(gè)世紀(jì)以來,中國(guó)政府、企業(yè)和事業(yè)單位開始設(shè)想通過互聯(lián)網(wǎng)實(shí)現(xiàn)管理信息和現(xiàn)代系統(tǒng)的維護(hù)。實(shí)現(xiàn)無(wú)紙化辦公,過去有各種原因,如網(wǎng)絡(luò)普及率低、用戶不習(xí)慣和不可接受、與互聯(lián)網(wǎng)有關(guān)的法律法規(guī)和制度不完善等,阻礙了互聯(lián)網(wǎng)的發(fā)展速度。進(jìn)入21世紀(jì)后,中國(guó)經(jīng)濟(jì)迅速發(fā)展。此前對(duì)機(jī)構(gòu)管理的限制和各種問題已逐一得到解決。國(guó)內(nèi)各大機(jī)構(gòu)和企業(yè)都加入了現(xiàn)代信息管理模式。過去,與體育用品銷售相關(guān)的信息管理部門表示,員工將進(jìn)行人工統(tǒng)計(jì)和記錄。這種方法時(shí)效性低,也很不方便。隨著科學(xué)的進(jìn)步和我們技術(shù)的不斷成熟,計(jì)算機(jī)的功能非常強(qiáng)大和完善。
本系統(tǒng)以java為核心開發(fā)技術(shù),結(jié)合SpringBoot VUE框架實(shí)現(xiàn)了一個(gè)知世體育用品銷售管理系統(tǒng)。知世體育用品銷售管理系統(tǒng)的主要使用者分為管理員、用戶;主要包括首頁(yè)模塊、個(gè)人中心模塊、用戶管理以及體育用品商家管理和體育用品商品管理、知世體育用品商品類型管理、訂單信息管理、系統(tǒng)輪播圖管理、體育用品新聞資訊管理等功能。通過這些功能模塊的設(shè)計(jì),基本上實(shí)現(xiàn)了整個(gè)體育用品銷售商品服務(wù)管理的過程。具體在系統(tǒng)設(shè)計(jì)上采用了B/S的結(jié)構(gòu)。
二、系統(tǒng)設(shè)計(jì):
2.1 系統(tǒng)功能設(shè)計(jì):
系統(tǒng)架構(gòu)圖屬于系統(tǒng)設(shè)計(jì)的早期階段。系統(tǒng)架構(gòu)圖只是這一階段的必要產(chǎn)品。系統(tǒng)的總體架構(gòu)決定了整個(gè)系統(tǒng)的模式和層次,是系統(tǒng)的基礎(chǔ)。知世體育用品銷售管理系統(tǒng)的整體結(jié)構(gòu)設(shè)計(jì)如圖所示
2.2 登錄模塊設(shè)計(jì):
登錄模塊主要滿足了管理員以及其他用戶的權(quán)限登錄,登錄模塊順序圖如圖所示
三、數(shù)據(jù)設(shè)計(jì):
3.1 數(shù)據(jù)庫(kù)設(shè)計(jì)
數(shù)據(jù)庫(kù)是計(jì)算機(jī)信息系統(tǒng)的基礎(chǔ)。目前,電腦系統(tǒng)的關(guān)鍵與核心部分就是數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)開發(fā)的優(yōu)劣對(duì)整個(gè)系統(tǒng)的質(zhì)量和速度有著直接影響。
3.2 數(shù)據(jù)庫(kù)設(shè)計(jì)原則
數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)采用的是:實(shí)體-關(guān)系(E-R)模型的方法來進(jìn)行設(shè)計(jì)。 e-R模型方法的組成部分是:實(shí)體、屬性以及連接。 E-r模型用E-r圖進(jìn)行表示、目的是提醒用戶工作環(huán)境中所涉及事物以及對(duì)象實(shí)體屬性是對(duì)實(shí)體特征具體描述。 數(shù)據(jù)庫(kù)表設(shè)計(jì)在系統(tǒng)設(shè)計(jì)中起著決定性關(guān)鍵作用、表設(shè)計(jì)和實(shí)體對(duì)象一一對(duì)應(yīng)、 看下我們?yōu)檫@些關(guān)鍵實(shí)體設(shè)計(jì)一個(gè)實(shí)體關(guān)系圖吧。
3.3 數(shù)據(jù)ER圖設(shè)計(jì):
數(shù)據(jù)模型中的實(shí)體,也稱為實(shí)例,對(duì)應(yīng)于可以與現(xiàn)實(shí)世界中的其他對(duì)象區(qū)分開來的“事件”或“事物”。 例如,公司的每一個(gè)員工,車的每一個(gè)零件或者房子里的每一件商品。
商品信息管理實(shí)體圖如圖所示
用戶管理實(shí)體圖如圖所示
3.4 主要庫(kù)表設(shè)計(jì):
管理員表示保存網(wǎng)上商品銷售的用戶信息表,其中表結(jié)構(gòu)如所示。
訂單表是保存網(wǎng)上商品銷售的訂單信息表,其中id為主鍵,表結(jié)構(gòu)如所示。
類別表是保存網(wǎng)上商品銷售的類別信息表,其中id為主鍵,表結(jié)構(gòu)如所示。
表4-3 category類別表
商品表是保存網(wǎng)上商品銷售的商品信息表,其中id為主鍵,表結(jié)構(gòu)如所示。
會(huì)員表是保存網(wǎng)上商品銷售的會(huì)員信息表,其中id為主鍵,表結(jié)構(gòu)如所示。
公告表是網(wǎng)上商品的公告信息表,其中id為主鍵,表結(jié)構(gòu)如所示。
購(gòu)物車表是保存網(wǎng)上商品銷售的購(gòu)物車信息表,其中id為主鍵,表結(jié)構(gòu)如所示。
訂單表是保存網(wǎng)上商品銷售的訂單信息表,其中id為主鍵,表結(jié)構(gòu)如圖所示。
四、功能截圖:
4.1 登錄:
項(xiàng)目啟動(dòng)后、管理員通過填寫用戶名、密碼等信息進(jìn)行登錄驗(yàn)證,輸入完成后選擇角色登錄驗(yàn)證賬號(hào)密碼無(wú)誤后、即可進(jìn)入知世體育用品銷售管理系統(tǒng)首頁(yè),如圖所示。
4.2 注冊(cè):
體育用品銷售商品系統(tǒng)系統(tǒng),頁(yè)面設(shè)計(jì)主要是在首頁(yè)頭部引入common以及jquery等公共的js和css樣式布局文件,通過recommend index-pv2 DIV樣式設(shè)計(jì)頭部幾個(gè)菜單欄的顯示。用戶點(diǎn)擊其中一個(gè)div觸發(fā)點(diǎn)擊時(shí)間、頁(yè)面就加載框架的布局、調(diào)用提前寫好的.index-pv1 .animation-box:hover CSS文件等來渲染整個(gè)前端頁(yè)面、用戶登錄注冊(cè),在用戶注冊(cè)頁(yè)面通過填寫賬號(hào)、密碼、姓名、手機(jī)、等信息用戶注冊(cè),注冊(cè)是用戶輸入input注冊(cè)框之后點(diǎn)擊確定事件(onsubmit)按鈕、提交的時(shí)候綁定函數(shù)、書寫函數(shù)(獲取用戶輸入的數(shù)據(jù)<獲取數(shù)據(jù)時(shí)需要在指定位置定義一個(gè)id>)、然后對(duì)form表單的數(shù)據(jù)進(jìn)行判斷、進(jìn)行數(shù)據(jù)合法(form表單提交)、若數(shù)據(jù)非法(給出錯(cuò)誤提示信息彈窗button,不讓表單提交)
4.3 前臺(tái)首頁(yè):
用戶登錄進(jìn)入知世體育用品銷售管理系統(tǒng)可以查看首頁(yè)模塊、個(gè)人中心模塊、訂單信息管理、我的收藏管理等內(nèi)容進(jìn)行詳細(xì)操作。
4.4 管理員端:
管理員登錄進(jìn)入知世體育用品銷售管理系統(tǒng)后、可以查看首頁(yè)模塊、個(gè)人中心模塊、用戶管理、體育用品商家模塊、體育用品商品類型管理、體育用品商品信息管理、體育用品訂單信息管理模塊以及體育用品銷售商品新聞資訊以及輪播圖內(nèi)容模塊進(jìn)行詳細(xì)的操作處理。
體育用品銷售商品信息管理,用戶點(diǎn)擊商品信息管理頁(yè)面中可以對(duì)索引、商品名稱、商品類型、圖片、價(jià)格、購(gòu)買數(shù)量、商品重量、生產(chǎn)日期等內(nèi)容進(jìn)行進(jìn)行詳情,修改或刪除等操作,在商品信息管理頁(yè)面用戶點(diǎn)擊列表、觸發(fā)列表后臺(tái)列表重新操作、代用后臺(tái)ShangpingController業(yè)務(wù)處理類進(jìn)行處理、調(diào)用page分頁(yè)查詢方法、page頁(yè)面方法重寫了Service調(diào)用后臺(tái)數(shù)據(jù)庫(kù)執(zhí)行SQL語(yǔ)句查詢、將查詢的結(jié)果返回給Controller–page方法、設(shè)計(jì)返回值接收數(shù)據(jù)庫(kù)查詢的集合數(shù)據(jù)、最后返回前端Shangping頁(yè)面進(jìn)行數(shù)據(jù)渲染實(shí)現(xiàn)、從而前端進(jìn)行顯示。
訂單信息管理,用戶點(diǎn)擊訂單信息管理頁(yè)面中可以對(duì)、索引、訂單編號(hào)、商品名稱、商品類型、價(jià)格、總價(jià)格、購(gòu)買日期、用戶名、購(gòu)買數(shù)量、姓名、手機(jī)、是否支付等內(nèi)容進(jìn)行進(jìn)行詳情,修改或刪除等操作。
五、代碼實(shí)現(xiàn):
/** * 訂單 * 后端接口 * @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); }}
六、論文參考:
4.3.2添加信息模塊順序圖
1、商品信息管理實(shí)體圖如圖4-3所示:
2、用戶管理實(shí)體圖如圖4-4所示:
七、項(xiàng)目總結(jié):
體育用品銷售商品系統(tǒng)系統(tǒng)的實(shí)現(xiàn)、,主要是對(duì)自己在大學(xué)這幾年時(shí)間所學(xué)計(jì)算機(jī)相關(guān)內(nèi)容的一個(gè)整體測(cè)試,對(duì)于系統(tǒng),主要是通過現(xiàn)在現(xiàn)在互聯(lián)網(wǎng)的體育用品銷售商品系統(tǒng)系統(tǒng)的實(shí)現(xiàn),管理員根據(jù)實(shí)際問題管理,并且可以根據(jù)需求進(jìn)行數(shù)據(jù)信息的增加修改刪除等操作,完美的解決了當(dāng)下體育用品銷售商品系統(tǒng)中所遇到的問題。經(jīng)過一個(gè)學(xué)期的畢業(yè)設(shè)計(jì)的實(shí)現(xiàn)完成已接近尾聲,到目前為止,當(dāng)我回想起整個(gè)學(xué)期的系統(tǒng)開發(fā)日,收獲頗豐。畢業(yè)設(shè)計(jì)的主要任務(wù)是建立一個(gè)基于java實(shí)現(xiàn)的體育用品銷售商品的信息系統(tǒng),主要使用springboot和Mysql數(shù)據(jù)庫(kù)的開發(fā)工具,對(duì)系統(tǒng)的每個(gè)功能模塊進(jìn)行相對(duì)應(yīng)的操作,最后,系統(tǒng)調(diào)試結(jié)果表明系統(tǒng)大部分可以滿足功能要求。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。