国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于SSM的網(wǎng)上訂餐管理系統(tǒng)

這篇具有很好參考價(jià)值的文章主要介紹了基于SSM的網(wǎng)上訂餐管理系統(tǒng)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

末尾獲取源碼
開發(fā)語言:Java
Java開發(fā)工具:JDK1.8
后端框架:SSM
前端:Vue
數(shù)據(jù)庫:MySQL5.7和Navicat管理工具結(jié)合
服務(wù)器:Tomcat8.5
開發(fā)軟件:IDEA / Eclipse
是否Maven項(xiàng)目:是


目錄

一、項(xiàng)目簡介

二、系統(tǒng)功能

三、系統(tǒng)項(xiàng)目截圖

用戶信息管理

商品信息管理

商品評(píng)論管理

公告信息管理

四、核心代碼

登錄相關(guān)

文件上傳

封裝


一、項(xiàng)目簡介

身處網(wǎng)絡(luò)時(shí)代,隨著網(wǎng)絡(luò)系統(tǒng)體系發(fā)展的不斷成熟和完善,人們的生活也隨之發(fā)生了很大的變化,人們在追求較高物質(zhì)生活的同時(shí),也在想著如何使自身的精神內(nèi)涵得到提升,而讀書就是人們獲得精神享受非常重要的途徑。為了滿足人們隨時(shí)隨地只要有網(wǎng)絡(luò)就可以看書的要求,網(wǎng)上訂餐管理系統(tǒng)被開發(fā)研究了出來。

本文主要描述了該網(wǎng)上訂餐管理系統(tǒng)的具體開發(fā)過程,在SSM框架的基礎(chǔ)上,采用vue技術(shù)和MYSQL數(shù)據(jù)庫,使該網(wǎng)上訂餐管理系統(tǒng)具有很好的穩(wěn)定性和安全性。本設(shè)計(jì)重點(diǎn)從系統(tǒng)概述、系統(tǒng)分析、系統(tǒng)設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)、系統(tǒng)測試和總結(jié)這幾個(gè)方面對該網(wǎng)上訂餐管理系統(tǒng)進(jìn)行闡述,用戶通過該網(wǎng)上訂餐管理系統(tǒng)可以查詢自己喜歡的信息。

該網(wǎng)上訂餐管理系統(tǒng)不僅能夠穩(wěn)定的運(yùn)行,快捷方便的操作,界面簡潔清晰,而且功能齊全,實(shí)用性強(qiáng)。


二、系統(tǒng)功能

系統(tǒng)結(jié)構(gòu)設(shè)計(jì)就像一個(gè)樹狀結(jié)構(gòu)一樣,一個(gè)樹干有很多分支,大任務(wù)相當(dāng)于樹干,小任務(wù)相當(dāng)于樹枝,只有需求分析信息弄清楚之后,才能保證每個(gè)小任務(wù)都能實(shí)現(xiàn)目標(biāo),對初步設(shè)計(jì)好的系統(tǒng)再進(jìn)行不斷優(yōu)化,最終得到一個(gè)具體現(xiàn)實(shí)的系統(tǒng)結(jié)構(gòu)。

基于SSM的網(wǎng)上訂餐管理系統(tǒng),java,前端,開發(fā)語言,tomcat,交互

?


三、系統(tǒng)項(xiàng)目截圖

用戶信息管理

此頁面提供給管理員的功能有:用戶信息的查詢管理,可以刪除用戶信息、修改用戶信息、新增用戶信息,還進(jìn)行了對用戶名稱的模糊查詢的條件

基于SSM的網(wǎng)上訂餐管理系統(tǒng),java,前端,開發(fā)語言,tomcat,交互?基于SSM的網(wǎng)上訂餐管理系統(tǒng),java,前端,開發(fā)語言,tomcat,交互

商品信息管理

此頁面提供給管理員的功能有:查看已發(fā)布的商品信息數(shù)據(jù),修改商品信息,商品信息作廢,即可刪除,還進(jìn)行了對商品信息名稱的模糊查詢 商品信息信息的類型查詢等等一些條件。

?基于SSM的網(wǎng)上訂餐管理系統(tǒng),java,前端,開發(fā)語言,tomcat,交互

基于SSM的網(wǎng)上訂餐管理系統(tǒng),java,前端,開發(fā)語言,tomcat,交互?

商品評(píng)論管理

此頁面提供給管理員的功能有:根據(jù)商品評(píng)論進(jìn)行條件查詢,還可以對商品評(píng)論進(jìn)行新增、修改、查詢操作等等。

?基于SSM的網(wǎng)上訂餐管理系統(tǒng),java,前端,開發(fā)語言,tomcat,交互

基于SSM的網(wǎng)上訂餐管理系統(tǒng),java,前端,開發(fā)語言,tomcat,交互?

公告信息管理

此頁面提供給管理員的功能有:根據(jù)公告信息進(jìn)行新增、修改、查詢操作等等。

基于SSM的網(wǎng)上訂餐管理系統(tǒng),java,前端,開發(fā)語言,tomcat,交互?基于SSM的網(wǎng)上訂餐管理系統(tǒng),java,前端,開發(fā)語言,tomcat,交互文章來源地址http://www.zghlxwxcb.cn/news/detail-806693.html


四、核心代碼

登錄相關(guān)


package com.controller;


import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;

/**
 * 登錄相關(guān)
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;

	/**
	 * 登錄
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("賬號(hào)或密碼不正確");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注冊
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用戶已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密碼重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("賬號(hào)不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密碼已重置為:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 獲取用戶的session用戶信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用戶已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 刪除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

文件上傳

package com.controller;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import com.entity.EIException;
import com.service.ConfigService;
import com.utils.R;

/**
 * 上傳文件映射表
 */
@RestController
@RequestMapping("file")
@SuppressWarnings({"unchecked","rawtypes"})
public class FileController{
	@Autowired
    private ConfigService configService;
	/**
	 * 上傳文件
	 */
	@RequestMapping("/upload")
	public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {
		if (file.isEmpty()) {
			throw new EIException("上傳文件不能為空");
		}
		String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
		File path = new File(ResourceUtils.getURL("classpath:static").getPath());
		if(!path.exists()) {
		    path = new File("");
		}
		File upload = new File(path.getAbsolutePath(),"/upload/");
		if(!upload.exists()) {
		    upload.mkdirs();
		}
		String fileName = new Date().getTime()+"."+fileExt;
		File dest = new File(upload.getAbsolutePath()+"/"+fileName);
		file.transferTo(dest);
		FileUtils.copyFile(dest, new File("C:\\Users\\Desktop\\jiadian\\springbootl7own\\src\\main\\resources\\static\\upload"+"/"+fileName));
		if(StringUtils.isNotBlank(type) && type.equals("1")) {
			ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
			if(configEntity==null) {
				configEntity = new ConfigEntity();
				configEntity.setName("faceFile");
				configEntity.setValue(fileName);
			} else {
				configEntity.setValue(fileName);
			}
			configService.insertOrUpdate(configEntity);
		}
		return R.ok().put("file", fileName);
	}
	
	/**
	 * 下載文件
	 */
	@IgnoreAuth
	@RequestMapping("/download")
	public ResponseEntity<byte[]> download(@RequestParam String fileName) {
		try {
			File path = new File(ResourceUtils.getURL("classpath:static").getPath());
			if(!path.exists()) {
			    path = new File("");
			}
			File upload = new File(path.getAbsolutePath(),"/upload/");
			if(!upload.exists()) {
			    upload.mkdirs();
			}
			File file = new File(upload.getAbsolutePath()+"/"+fileName);
			if(file.exists()){
				/*if(!fileService.canRead(file, SessionManager.getSessionUser())){
					getResponse().sendError(403);
				}*/
				HttpHeaders headers = new HttpHeaders();
			    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);    
			    headers.setContentDispositionFormData("attachment", fileName);    
			    return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return new ResponseEntity<byte[]>(HttpStatus.INTERNAL_SERVER_ERROR);
	}
	
}

封裝

package com.utils;

import java.util.HashMap;
import java.util.Map;

/**
 * 返回?cái)?shù)據(jù)
 */
public class R extends HashMap<String, Object> {
	private static final long serialVersionUID = 1L;
	
	public R() {
		put("code", 0);
	}
	
	public static R error() {
		return error(500, "未知異常,請聯(lián)系管理員");
	}
	
	public static R error(String msg) {
		return error(500, msg);
	}
	
	public static R error(int code, String msg) {
		R r = new R();
		r.put("code", code);
		r.put("msg", msg);
		return r;
	}

	public static R ok(String msg) {
		R r = new R();
		r.put("msg", msg);
		return r;
	}
	
	public static R ok(Map<String, Object> map) {
		R r = new R();
		r.putAll(map);
		return r;
	}
	
	public static R ok() {
		return new R();
	}

	public R put(String key, Object value) {
		super.put(key, value);
		return this;
	}
}

到了這里,關(guān)于基于SSM的網(wǎng)上訂餐管理系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 網(wǎng)上訂餐系統(tǒng)|基于springboot的網(wǎng)上訂餐系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(源碼+數(shù)據(jù)庫+文檔)

    網(wǎng)上訂餐系統(tǒng)|基于springboot的網(wǎng)上訂餐系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(源碼+數(shù)據(jù)庫+文檔)

    網(wǎng)上訂餐系統(tǒng)目錄 目錄 ?基于springboot的網(wǎng)上訂餐系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 一、前言 二、系統(tǒng)功能設(shè)計(jì) 三、系統(tǒng)實(shí)現(xiàn) 1、用戶功能模塊的實(shí)現(xiàn) (1)用戶注冊界面 (2)用戶登錄界面 (3)菜品詳情界面 (4)下單訂餐界面 (5)訂單信息界面 (6)訂單配送界面 2、管理員功能模塊的實(shí)

    2024年04月27日
    瀏覽(25)
  • 基于springboot,vue網(wǎng)上訂餐系統(tǒng)

    基于springboot,vue網(wǎng)上訂餐系統(tǒng)

    開發(fā)工具:IDEA 服務(wù)器:Tomcat9.0, jdk1.8 項(xiàng)目構(gòu)建:maven 數(shù)據(jù)庫:mysql5.7 前端技術(shù) :Vue+ElementUI 服務(wù)端技術(shù):springboot+mybatis+redis 本系統(tǒng)分用戶前臺(tái)和管理后臺(tái)兩部分,項(xiàng)目采用前后端分離 主要功能如下: (1)前臺(tái)部分功能: 1.登錄、注冊、首頁 2.購物車、商品詳情、搜索商品、

    2024年02月13日
    瀏覽(22)
  • 基于web網(wǎng)上訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(論文+源碼)_kaic

    基于web網(wǎng)上訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(論文+源碼)_kaic

    摘 ?要 電子網(wǎng)絡(luò)的快速進(jìn)步給傳統(tǒng)的餐飲行業(yè)帶來了很大的變化。目前借助商業(yè)平臺(tái)推廣商家品牌,增加營業(yè)額,并且餐飲行業(yè)可以專注于發(fā)展個(gè)性化、特色的服務(wù)。在互聯(lián)網(wǎng)的推動(dòng)下,傳統(tǒng)流通領(lǐng)域呈現(xiàn)出良好的發(fā)展趨勢,越來越多的傳統(tǒng)行業(yè)開始與互聯(lián)網(wǎng)結(jié)合,散發(fā)出更

    2024年02月06日
    瀏覽(19)
  • 基于python+uniapp的網(wǎng)上訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 微信小程序

    基于python+uniapp的網(wǎng)上訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 微信小程序

    考慮到實(shí)際生活中在曉海網(wǎng)上訂餐方面的需要以及對該系統(tǒng)認(rèn)真的分析,將系統(tǒng)權(quán)限按管理員和用戶這兩類涉及用戶劃分。 (1)用戶功能需求 用戶進(jìn)入APP可以進(jìn)行首頁、系統(tǒng)公告、在線投訴、我的等操作,在我的頁面可以對菜品評(píng)價(jià)、訂單信息、在線投訴、我的收藏管理進(jìn)

    2024年01月20日
    瀏覽(33)
  • 基于web的網(wǎng)上訂餐系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)-計(jì)算機(jī)畢業(yè)設(shè)計(jì)源碼26910

    基于web的網(wǎng)上訂餐系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)-計(jì)算機(jī)畢業(yè)設(shè)計(jì)源碼26910

    摘要 ?自從計(jì)算機(jī)發(fā)展開始,計(jì)算機(jī)軟硬件相關(guān)技術(shù)的發(fā)展速度越來越快,在信息化高速發(fā)展的今天,計(jì)算機(jī)應(yīng)用技術(shù)似乎已經(jīng)應(yīng)用到了各個(gè)領(lǐng)域。在餐飲行業(yè),除了外賣以外就是到店里就餐,在店里就餐如果需要等待點(diǎn)餐的話,用戶的體驗(yàn)度就會(huì)急劇下降,很多餐飲店也開

    2024年02月03日
    瀏覽(23)
  • 基于SpringBoot的網(wǎng)上訂餐系統(tǒng)【附ppt和開題|萬字文檔(LW)和搭建文檔】

    基于SpringBoot的網(wǎng)上訂餐系統(tǒng)【附ppt和開題|萬字文檔(LW)和搭建文檔】

    前臺(tái)登錄:前臺(tái)登錄: ①首頁:菜品信息推薦、菜品信息展示、查看更多 ②菜品信息:菜品分類、菜品名稱查詢、食材查詢、菜品詳情、下單提交 ③個(gè)人中心:可以查看自己的信息、我的訂單、我的地址 后臺(tái)登錄: ①首頁、個(gè)人中心:修改密碼、個(gè)人信息、會(huì)員管理 ②菜

    2024年02月15日
    瀏覽(25)
  • 基于Java+Springboot+mysql網(wǎng)上在線訂餐點(diǎn)餐系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 畢業(yè)設(shè)計(jì)論文大綱參考

    ?博主介紹 :黃菊華老師《Vue.js入門與商城開發(fā)實(shí)戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學(xué)生畢業(yè)設(shè)計(jì)教育和輔導(dǎo)。 所有項(xiàng)目都配有從入門到精通的基礎(chǔ)知識(shí)視頻課程,學(xué)習(xí)后應(yīng)對畢業(yè)設(shè)計(jì)答辯。 項(xiàng)目配有對應(yīng)開發(fā)文檔、

    2024年02月19日
    瀏覽(31)
  • Java基礎(chǔ)實(shí)戰(zhàn)項(xiàng)目-------網(wǎng)上訂餐系統(tǒng)

    Java基礎(chǔ)實(shí)戰(zhàn)項(xiàng)目-------網(wǎng)上訂餐系統(tǒng)

    目錄 前言 項(xiàng)目需求 項(xiàng)目環(huán)境準(zhǔn)備 技能點(diǎn) 實(shí)現(xiàn)思路 ?編輯??項(xiàng)目總結(jié) 完整代碼: 已學(xué)完Java基礎(chǔ)部分的內(nèi)容,如下 理解程序的基本概念:程序、變量、數(shù)據(jù)類型 會(huì)使用順序、選擇、循環(huán)、跳轉(zhuǎn)語句編寫程序 會(huì)使用數(shù)組以及Arrays的使用 如今已進(jìn)入網(wǎng)絡(luò)時(shí)代,人們的日常生

    2024年02月09日
    瀏覽(14)
  • 基于SSM+JSP的訂餐管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    基于SSM+JSP的訂餐管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    末尾獲取源碼 開發(fā)語言:Java Java開發(fā)工具:JDK1.8 后端框架:SSM 前端:采用JSP技術(shù)開發(fā) 數(shù)據(jù)庫:MySQL5.7和Navicat管理工具結(jié)合 服務(wù)器:Tomcat8.5 開發(fā)軟件:IDEA / Eclipse 是否Maven項(xiàng)目:是 目錄 一、項(xiàng)目簡介 二、系統(tǒng)功能 三、系統(tǒng)項(xiàng)目截圖 個(gè)人中心 用戶管理 菜品管理 菜品評(píng)價(jià)管

    2024年01月20日
    瀏覽(17)
  • asp.net+sqlserver+C#網(wǎng)上訂餐系統(tǒng)

    asp.net+sqlserver+C#網(wǎng)上訂餐系統(tǒng)

    目 ? ?錄 第1章.緒論?? ?4 1.1 系統(tǒng)開發(fā)背景?? ?4 1.2 開發(fā)設(shè)計(jì)目的和意義?? ?5 1.3 網(wǎng)上訂餐系統(tǒng)設(shè)計(jì)思想?? ?5 1.4可行性分析?? ?6 1.4.1技術(shù)可行性分析?? ?7 1.4.2其他可行性分析?? ?7 第2章.需求分析?? ?9 2.1 需求分析?? ?9 2.2建立用例圖?? ?11 2.3描述用例圖?? ?11 2.3

    2023年04月23日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包