一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

java項(xiàng)目超市管理系統(tǒng)

 java一號(hào) 2019-12-09

一.概述

1.鵬哥前面有寫過(guò)java項(xiàng)目超市管理系統(tǒng)項(xiàng)目,傳送門

2.收到很多朋友私信給我,也很感謝老鐵們的反饋和交流,前面這個(gè)項(xiàng)目只是對(duì)java基礎(chǔ)知識(shí)和面向?qū)ο蟮乃枷刖毩?xí),但是沒(méi)有涉及到j(luò)ava如何操作數(shù)據(jù)庫(kù),如何通過(guò)java將數(shù)據(jù)從數(shù)據(jù)庫(kù)拿出來(lái),如果存進(jìn)去這些問(wèn)題。對(duì)于java新手來(lái)說(shuō),這些問(wèn)題不知道從何處下手。有很多剛?cè)腴T的java新手建議我寫個(gè)java操作數(shù)據(jù)庫(kù)的實(shí)戰(zhàn)項(xiàng)目供入門者參考,我想如果能幫助他們少花點(diǎn)時(shí)間出坑,何樂(lè)不為?鵬哥就特意思考了一天,整理了一下思路,今天就抽時(shí)間寫個(gè)超市購(gòu)物管理系統(tǒng).....go go go

3.超市購(gòu)物管理系統(tǒng)涉及到的知識(shí):java基礎(chǔ)語(yǔ)法,java面向?qū)ο蟮拈_(kāi)發(fā)思想,java如何操作數(shù)據(jù)庫(kù),集合方面的知識(shí)

4.適合java入門,不知道java如何操作數(shù)據(jù)庫(kù)

5.基本所有的代碼鵬哥會(huì)打上注釋,方便閱讀

6.因?yàn)槭莏ava操作數(shù)據(jù)庫(kù)的實(shí)戰(zhàn)項(xiàng)目,不會(huì)詳細(xì)講解java環(huán)境搭建,數(shù)據(jù)庫(kù)安裝,sql語(yǔ)法這些知識(shí)。太多了,我寫一周不見(jiàn)得寫完.....或者可以去鵬哥站 java一號(hào) 查看相關(guān)文章。所以開(kāi)始之前你總的把java開(kāi)發(fā)環(huán)境安裝好吧、數(shù)據(jù)庫(kù)安裝好吧、

7.開(kāi)發(fā)工具eclipse;jdk是1.8;數(shù)據(jù)庫(kù)用的是mysql5.5 (當(dāng)然sqlserver數(shù)據(jù)庫(kù)完全可以)

8.源碼獲取:我會(huì)將核心代碼粘貼出來(lái),所有的代碼關(guān)注鵬哥公眾號(hào)  java一號(hào)  實(shí)戰(zhàn)項(xiàng)目中會(huì)給出

二:效果演示

=================歡迎使用超市購(gòu)物管理系統(tǒng)=================
1.商品入庫(kù)
2.根據(jù)商品編號(hào)查詢商品
3.商品列表
4.購(gòu)買商品
5.刪除商品
6.更新商品
0.退出系統(tǒng)
請(qǐng)輸入要執(zhí)行的操作

3
編號(hào)	名稱	單價(jià)	數(shù)量	
1234	蘋果	12.0	35	
1235	衣服	123.0	0	
1236	籃球	200.0	20	
輸入y繼續(xù)/否則退出
y
1.商品入庫(kù)
2.根據(jù)商品編號(hào)查詢商品
3.商品列表
4.購(gòu)買商品
5.刪除商品
0.退出系統(tǒng)
請(qǐng)輸入要執(zhí)行的操作
4
輸入購(gòu)買商品的編號(hào)
1235
輸入購(gòu)買商品的數(shù)量
1
此商品庫(kù)存0  無(wú)法購(gòu)買;
輸入y繼續(xù)購(gòu)買/輸入其他結(jié)算
y
輸入購(gòu)買商品的編號(hào)
1234
輸入購(gòu)買商品的數(shù)量
2
購(gòu)買成功
輸入y繼續(xù)購(gòu)買/輸入其他結(jié)算
1236
編號(hào)	名稱	數(shù)量	總價(jià)
1234	蘋果	2	24.0
總計(jì)消費(fèi):24.0元
輸入y繼續(xù)/否則退出
y
1.商品入庫(kù)
2.根據(jù)商品編號(hào)查詢商品
3.商品列表
4.購(gòu)買商品
5.刪除商品
0.退出系統(tǒng)
請(qǐng)輸入要執(zhí)行的操作
5
輸入要?jiǎng)h除的商品編號(hào)
4564
沒(méi)有此商品
輸入y繼續(xù)/否則退出
y
1.商品入庫(kù)
2.根據(jù)商品編號(hào)查詢商品
3.商品列表
4.購(gòu)買商品
5.刪除商品
0.退出系統(tǒng)
請(qǐng)輸入要執(zhí)行的操作
3
編號(hào)	名稱	單價(jià)	數(shù)量	
1234	蘋果	12.0	33	
1235	衣服	123.0	0	
1236	籃球	200.0	20	
輸入y繼續(xù)/否則退出
y
1.商品入庫(kù)
2.根據(jù)商品編號(hào)查詢商品
3.商品列表
4.購(gòu)買商品
5.刪除商品
0.退出系統(tǒng)
請(qǐng)輸入要執(zhí)行的操作
4
輸入購(gòu)買商品的編號(hào)
1234
輸入購(gòu)買商品的數(shù)量
2
購(gòu)買成功
輸入y繼續(xù)購(gòu)買/輸入其他結(jié)算
y
輸入購(gòu)買商品的編號(hào)
1234
輸入購(gòu)買商品的數(shù)量
2
購(gòu)買成功
輸入y繼續(xù)購(gòu)買/輸入其他結(jié)算
t
編號(hào)	名稱	數(shù)量	總價(jià)
1234	蘋果	4	48.0
總計(jì)消費(fèi):48.0元
輸入y繼續(xù)/否則退出

三:創(chuàng)建項(xiàng)目

在eclipse創(chuàng)建一個(gè)ShopManager項(xiàng)目

接著我們將數(shù)據(jù)庫(kù)驅(qū)動(dòng)jar包引入(可以去官網(wǎng)下載或者在我的公眾號(hào) java一號(hào)  回復(fù)  jdbc  即可獲取,);

java和這個(gè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)有什么關(guān)系呢?簡(jiǎn)單理解就是這個(gè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)是java和數(shù)據(jù)庫(kù)中間的橋梁,用于兩者通信。

創(chuàng)建lib的文件夾

將我們準(zhǔn)備好的驅(qū)動(dòng)復(fù)制到這個(gè)lib中

在這個(gè)驅(qū)動(dòng)上右鍵執(zhí)行

最后完整的結(jié)構(gòu)

創(chuàng)建項(xiàng)目結(jié)構(gòu),很重要,很重要,很重要,這些都是開(kāi)發(fā)要注意的,對(duì)于這些小項(xiàng)目而言,完全可以將所有的代碼類都放在src下,但是以后項(xiàng)目越來(lái)越大,所有的類成千上百個(gè),都放在src,沒(méi)有分包的的話,項(xiàng)目項(xiàng)目其他開(kāi)發(fā)者看到代碼什么承受多少點(diǎn)傷害。

這個(gè)系統(tǒng)中比較簡(jiǎn)單,下面四個(gè)包就可以,其中app包用于放系統(tǒng)主入口類,pojo放系統(tǒng)涉及的實(shí)體類,service放系統(tǒng)業(yè)務(wù),utils放系統(tǒng)中的工具類;test臨時(shí)測(cè)試類

四:連接數(shù)據(jù)庫(kù)

因?yàn)橄到y(tǒng)會(huì)涉及到多次對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的訪問(wèn),所以我們將連接數(shù)據(jù)庫(kù)操作寫成一個(gè)工具類DbUtil,不要每次涉及到操作數(shù)據(jù)庫(kù)就寫重復(fù)的連接代碼。

package com..utils;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;/**
 * @date 2019-12-9
 * @Description 連接數(shù)據(jù)庫(kù)工具類
 * @author com.
 */public class DbUtil {	//把幾個(gè)用于連接數(shù)據(jù)庫(kù)的字符串定義成常量,不必每次去創(chuàng)建	private static final String USER = "root";//數(shù)據(jù)庫(kù)用戶名	private static final String UPWD = "root";//數(shù)據(jù)庫(kù)密碼	//本地?cái)?shù)據(jù)庫(kù)shop	private static final String URL = "jdbc:mysql://localhost:3306/shop";	//驅(qū)動(dòng)	private static final String DRIVER = "com.mysql.jdbc.Driver";	//注冊(cè)驅(qū)動(dòng)	static {		try {
			Class.forName(DRIVER);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}	//得到數(shù)據(jù)庫(kù)連接對(duì)象Connection的函數(shù)	public static Connection getConnection() throws SQLException {		return DriverManager.getConnection(URL, USER, UPWD);
	}	//關(guān)閉連接和 執(zhí)行 的打開(kāi)資源	public static void close(Connection connection, Statement statement) {		if (statement != null) {			try {
				statement.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}		if (connection != null) {			try {
				connection.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}	//關(guān)閉所有的打開(kāi)資源	public static void close(Connection connection, Statement statement, ResultSet rs) {		if (statement != null) {			try {
				statement.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}		if (connection != null) {			try {
				connection.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}		if (rs != null) {			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

}

測(cè)試

package com..test;import java.sql.Connection;import java.sql.SQLException;import com..utils.DbUtil;/**
 * @date 2019-12-9
 * @Description 測(cè)試數(shù)據(jù)庫(kù)連接類
 * @author com.
 */public class DbUtilTest {	public static void main(String[] args) throws SQLException {
		Connection con = DbUtil.getConnection();
		System.out.println(con);
	}
}

如下,說(shuō)明數(shù)據(jù)庫(kù)連接成功

五:創(chuàng)建實(shí)體類

package com..pojo;/**
 * @date 2019-12-9
 * @Description 商品實(shí)體
 * @author com.
 */public class Good {	//商品編號(hào)	private int id;	//商品名稱	private String name;	//商品價(jià)格(價(jià)格可能涉及到小數(shù),這里使用float,當(dāng)然真正大型購(gòu)物平臺(tái)不會(huì)使用float,有興趣的朋友可以上網(wǎng)了解)	private float price;	//庫(kù)存	private int num;	//空參構(gòu)造	public Good() {		super();
	}	//打印方法	@Override	public String toString() {		return "Good [id=" + id + ", name=" + name + ", price=" + price + ", num=" + num + "]";
	}	//有參構(gòu)造,方便初始化對(duì)象	public Good(int id, String name, float price, int num) {		super();		this.id = id;		this.name = name;		this.price = price;		this.num = num;
	}	//set get方法	public int getId() {		return id;
	}	public void setId(int id) {		this.id = id;
	}	public String getName() {		return name;
	}	public void setName(String name) {		this.name = name;
	}	public float getPrice() {		return price;
	}	public void setPrice(float price) {		this.price = price;
	}	public int getNum() {		return num;
	}	public void setNum(int num) {		this.num = num;
	}
}

 六:數(shù)據(jù)庫(kù)

本地創(chuàng)建數(shù)據(jù)庫(kù)shop,創(chuàng)建表t_good

CREATE TABLE `t_good` (  `id` int(5) NOT NULL,  `name` varchar(25) NOT NULL,  `price` float(10,2) NOT NULL,  `num` int(5) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

七.核心業(yè)務(wù)

package com..service;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Scanner;

import com..pojo.Good;
import com..utils.DbUtil;

/**
 * @date 2019-12-9
 * @Description 系統(tǒng)主界面
 * @author com.
 */
public class ShopView {
	//獲取鍵盤輸入對(duì)象
	Scanner input = new Scanner(System.in);
	/*
	 * 系統(tǒng)運(yùn)行方法
	 */
	public void ShopStart() {
		System.out.println("=================歡迎使用超市購(gòu)物管理系統(tǒng)=================");
		//是否繼續(xù)的標(biāo)志量,默認(rèn)是
		String isGo="y";
		do{
			//調(diào)用菜單那展示的函數(shù)
				showMenu();
				System.out.println("請(qǐng)輸入要執(zhí)行的操作");
				//接受鍵盤的輸入,這里使用String,一次性處理數(shù)字和字符輸入,不建議使用int類型數(shù)字
				String select =input.next();
				//根據(jù)輸入的選擇執(zhí)行對(duì)應(yīng)的方法
				switch (select) {
				//執(zhí)行商品入庫(kù)方法
				case "1":
					insertGood();
					break;
				//執(zhí)行商品查詢方法
				case "2":
					System.out.println("輸入要查詢的商品編號(hào)");
					int goodId = input.nextInt();
					//調(diào)用查詢商品的方法,
					Good good = searchGoodById(goodId);
					//存在
					if(good!=null){
						System.out.println("商品編號(hào):"+goodId+" 商品名稱:"+good.getName()
						+"  商品價(jià)格:"+good.getPrice()+"  商品數(shù)量:"+good.getNum());
					}else{
						System.out.println("此商品不存在");
					}
					break;
				//執(zhí)行商品列表方法
				case "3":
					getGoodList();
					break;
				//執(zhí)行商品購(gòu)買方法
				case "4":
					buyGood();
					break;
					//執(zhí)行商品購(gòu)買方法
				case "5":
					System.out.println("輸入要?jiǎng)h除的商品編號(hào)");
					int id = input.nextInt();
					//調(diào)用查詢商品的方法,
					if(searchGoodById(id)!=null){
						deleteGood(id);
					}else{
						System.out.println("沒(méi)有此商品");
					}
					break;
				case "6":
					updateGood();
					break;
				//退出系統(tǒng)
				case "0":
					System.out.println("*************歡迎下次使用 再見(jiàn)!*************");
					//終止程序
					System.exit(0);
				default:
					System.err.println("輸入有誤 請(qǐng)重新輸入!");
					continue;
			}
				System.out.println("輸入y繼續(xù)/否則退出");
				isGo = input.next();
		}while(isGo.equals("y"));
		System.out.println("*************歡迎下次使用 再見(jiàn)!*************");
	}
	/**
	 * 更新商品操作
	 * 1.先查詢當(dāng)前要更新的商品存不存在
	 * 2.如果存在更新即可,不存在提示
	 */
	private void updateGood() {
		System.out.println("輸入要修改的商品id");
		int gid = input.nextInt();
		Good good = searchGoodById(gid);
		System.out.println("商品信息如下");
		if(good!=null){
			System.out.println("商品編號(hào):"+gid+" 商品名稱:"+good.getName()
			+"  商品價(jià)格:"+good.getPrice()+"  商品數(shù)量:"+good.getNum());
			System.out.println("修改商品名稱");
			String name = input.next();
			System.out.println("修改商品單價(jià)");
			float price = input.nextFloat();
			System.out.println("修改商品庫(kù)存");
			int num = input.nextInt();
			String sql="update t_good set name=?,price=?,num=? where id=? ";
			try {
				//創(chuàng)建一個(gè)操作數(shù)據(jù)庫(kù)的對(duì)象
				Connection con = DbUtil.getConnection();
				//創(chuàng)建執(zhí)行sql的執(zhí)行對(duì)象PreparedStatement
				PreparedStatement pst = con.prepareStatement(sql);
				//給占位符設(shè)置值
				pst.setString(1, name);
				pst.setFloat(2, price);
				pst.setInt(3, num);
				pst.setInt(4, gid);
				//如果是查詢的話execute()返回true,如果是更新或插入的話就返回false
				if(!pst.execute()){
					System.out.println("更新成功");
				}
				//關(guān)閉連接
				DbUtil.close(con, pst);
			} catch (Exception e) {
				e.printStackTrace();
				System.out.println("更新異常"+e.getMessage());
			}
		}else{
			System.out.println("此商品不存在");
		}
		
	}
		//用于展示系統(tǒng)界面菜單的方法
		private void  showMenu() {
			System.out.println("1.商品入庫(kù)");
			System.out.println("2.根據(jù)商品編號(hào)查詢商品");
			System.out.println("3.商品列表");
			System.out.println("4.購(gòu)買商品");
			System.out.println("5.刪除商品");
			System.out.println("6.更新商品");
			System.out.println("0.退出系統(tǒng)");
		}
	/*
	 * 刪除商品
	 * 1.首先得判斷該商品存在
	 * 2.根據(jù)商品編號(hào)id刪除
	 */
	private void deleteGood(int id) {
		String sql = "delete from t_good where id=?";
		try {
			//創(chuàng)建一個(gè)操作數(shù)據(jù)庫(kù)的對(duì)象
			Connection con = DbUtil.getConnection();
			//創(chuàng)建執(zhí)行sql的執(zhí)行對(duì)象PreparedStatement
			PreparedStatement pst = con.prepareStatement(sql);
			//給占位符設(shè)置值
			pst.setInt(1, id);
			//如果是查詢的話execute()返回true,如果是更新或插入的話就返回false
			if(!pst.execute()){
				System.out.println("刪除成功");
			}
			//關(guān)閉連接
			DbUtil.close(con, pst);
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("刪除異常"+e.getMessage());
		}
	}
	/*
	 * 商品入庫(kù)
	 * 這里只處理編號(hào)不能重復(fù)的邏輯,
	 * 關(guān)于輸入的編號(hào)是不是數(shù)字這里就不做判斷,有興趣的朋友可以試試
	 */
	private void insertGood(){
		//商品編號(hào)
		int id=0;
		System.out.println("輸入商品編號(hào)");
		while(true){
			 id= input.nextInt();
			//判斷當(dāng)前輸入的編號(hào)重復(fù)沒(méi)有,重復(fù)重新輸入
			if(searchGoodById(id)==null){
				break;
			}
			System.err.println("編號(hào)重復(fù),請(qǐng)重新輸入商品編號(hào)");
		}
		System.out.println("輸入商品名稱");
		String name = input.next();
		System.out.println("輸入商品單價(jià)");
		float price = input.nextFloat();
		System.out.println("輸入商品數(shù)量");
		int num = input.nextInt();
		//要執(zhí)行的sql語(yǔ)句,這里使用占位符防止sql入侵
		String sql = "insert into t_good()values(?,?,?,?)";
		try {
			//創(chuàng)建一個(gè)操作數(shù)據(jù)庫(kù)的對(duì)象
			Connection con = DbUtil.getConnection();
			//創(chuàng)建執(zhí)行sql的執(zhí)行對(duì)象PreparedStatement
			PreparedStatement pst = con.prepareStatement(sql);
			//給占位符設(shè)置值
			pst.setInt(1, id);
			pst.setString(2, name);
			pst.setFloat(3, price);
			pst.setInt(4, num);
			//執(zhí)行sql語(yǔ)句
		    if(!pst.execute()){
		    	System.out.println("入庫(kù)成功");
		     }
			//關(guān)閉連接
			DbUtil.close(con, pst);
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("入庫(kù)異常"+e.getMessage());
		}
	}
	/*商品查詢
	 * 返回的是一個(gè)商品對(duì)象,沒(méi)有此商品返回null
	 */
	private Good searchGoodById(int id) {
		//執(zhí)行的sql語(yǔ)句
		String sql="select id,name,price,num from t_good where id=?";
		try {
			//創(chuàng)建一個(gè)操作數(shù)據(jù)庫(kù)的對(duì)象
			Connection con = DbUtil.getConnection();
			//創(chuàng)建執(zhí)行sql的對(duì)象PreparedStatement
			PreparedStatement pst = con.prepareStatement(sql);
			pst.setInt(1, id);
			ResultSet rs = pst.executeQuery();
			if(rs.next()){//有結(jié)果,將查到的數(shù)據(jù)通過(guò)構(gòu)造函數(shù)封裝成一個(gè)商品對(duì)象
				Good good = new Good(rs.getInt("id"), rs.getString("name"), 
						rs.getFloat("price"), rs.getInt("num"));
				return good;
			}
			//關(guān)閉連接
			DbUtil.close(con, pst);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
	//商品列表
	private void getGoodList(){
		//執(zhí)行的sql語(yǔ)句
				String sql="select id,name,price,num from t_good";
				try {
					//創(chuàng)建一個(gè)操作數(shù)據(jù)庫(kù)的對(duì)象
					Connection con = DbUtil.getConnection();
					//創(chuàng)建執(zhí)行sql的對(duì)象PreparedStatement
					PreparedStatement pst = con.prepareStatement(sql);
					ResultSet rs = pst.executeQuery();
					System.out.println("編號(hào)\t"+"名稱\t"+"單價(jià)\t"+"數(shù)量\t");
					if(rs.wasNull()){
						System.out.println("沒(méi)有商品");
					}else{
						while(rs.next()){//有結(jié)果,打印
							//通過(guò)rs.getxxx("yy")方法參數(shù)是數(shù)據(jù)庫(kù)列名
							System.out.println(rs.getInt("id")+"\t"+rs.getString("name")+"\t"+
									rs.getFloat("price")+"\t"+rs.getInt("num")+"\t");
						}
					}
					//關(guān)閉連接
					DbUtil.close(con, pst);
				} catch (SQLException e) {
					e.printStackTrace();
				}
	}
	//購(gòu)買商品
	public void buyGood() {
		//用來(lái)存儲(chǔ)購(gòu)買商品的集合
		ArrayList<Good> goods = new ArrayList<>();
		//是否繼續(xù)購(gòu)買標(biāo)記
		String flag = "y";
		do{
			System.out.println("輸入購(gòu)買商品的編號(hào)");
			int id = input.nextInt();
			Good good = searchGoodById(id);
			if(good!=null){
				System.out.println("輸入購(gòu)買商品的數(shù)量");
				int num = input.nextInt();
				if(good.getNum()<num){
					System.out.println("此商品庫(kù)存"+good.getNum()+"  無(wú)法購(gòu)買;");
					
				}else{
					try{
						String sql="update t_good set num=? where id=?";
						//創(chuàng)建一個(gè)操作數(shù)據(jù)庫(kù)的對(duì)象
						Connection con = DbUtil.getConnection();
						//創(chuàng)建執(zhí)行sql的對(duì)象PreparedStatement
						PreparedStatement pst = con.prepareStatement(sql);
						pst.setInt(1, good.getNum()-num);//更新庫(kù)存
						pst.setInt(2, id);
						if(pst.executeUpdate()==1){
							//存入購(gòu)買商品的集合goods
							Good g = new Good(id,good.getName(),good.getPrice(),num);
							if(goods.size()>0){
								for (int i = 0; i < goods.size(); i++) {
									if(goods.get(i).getId()==id){//如果購(gòu)物車中有該商品 數(shù)量加即可
										goods.get(0).setNum(num+goods.get(0).getNum());
									}else{//如果購(gòu)物車中沒(méi)有該商品 數(shù)量加即可
										goods.add(g);
									}
								}
							}else{//購(gòu)物車中沒(méi)有商品,加入到購(gòu)物車中
								goods.add(g);
							}
							System.out.println("購(gòu)買成功");
						}else{
							System.out.println("購(gòu)買失敗");
						}
					}catch(Exception e){
						e.printStackTrace();
						System.out.println("購(gòu)買異常"+e.getMessage());
					}
				}
				System.out.println("輸入y繼續(xù)購(gòu)買/輸入其他結(jié)算");
				flag = input.next();
				if(!flag.equals("y")){
					//結(jié)算
					account(goods);
				}
			}else{
				System.out.println("沒(méi)有此商品");
			}
		}while(flag.equals("y"));
	}
	//結(jié)算購(gòu)物車
	private void account(ArrayList<Good> goods) {
		System.out.println("編號(hào)\t"+"名稱\t"+"數(shù)量\t"+"總價(jià)");
		//lambda表達(dá)式遍歷集合,當(dāng)然是用for循環(huán)也ok
		goods.forEach(in->System.out.println(in.getId()+"\t"+in.getName()+
				"\t"+in.getNum()+"\t"+in.getNum()*in.getPrice()));
		//合計(jì)
		float sum=0;
		for (int i = 0; i < goods.size(); i++) {
			//對(duì)總價(jià)求和
			sum += (goods.get(i).getNum())*(goods.get(i).getPrice());
		}
		System.out.println("總計(jì)消費(fèi):"+sum+"元");
	}
}

總結(jié)

至此,項(xiàng)目已經(jīng)完成了,當(dāng)然項(xiàng)目本身還是存在不足,比如,在接受鍵盤輸入的合法性判斷。對(duì)于java操作數(shù)據(jù)庫(kù)而言可以參考,不是在搬磚,就是搬磚的路上,希望你的程序永無(wú)bug

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    欧美日韩一区二区午夜| 久久精品a毛片看国产成人| 亚洲国产av在线观看一区| 日木乱偷人妻中文字幕在线| 黄色污污在线免费观看| 99热在线精品视频观看| 精品日韩中文字幕视频在线| 99久久免费中文字幕| 免费亚洲黄色在线观看| 男生和女生哪个更好色| 午夜成年人黄片免费观看| 91精品视频免费播放| 亚洲av专区在线观看| 日本精品理论在线观看| 妻子的新妈妈中文字幕| 国产女性精品一区二区三区| 久草视频这里只是精品| 中文字幕一区二区三区大片| 麻豆在线观看一区二区| 亚洲一级在线免费观看| 精品国自产拍天天青青草原 | 美女极度色诱视频在线观看| 中文字幕中文字幕一区二区| 欧美大胆美女a级视频| 国产精品亚洲二区三区| 欧美色婷婷综合狠狠爱| 久久精品福利在线观看| 日本黄色高清视频久久| 热情的邻居在线中文字幕| 一区二区日韩欧美精品| 男人大臿蕉香蕉大视频| 日韩美女偷拍视频久久| 久久精品国产一区久久久| 欧美日韩久久精品一区二区| 日韩美女偷拍视频久久| 国产又长又粗又爽免费视频| 日本加勒比在线观看一区| 久久99夜色精品噜噜亚洲av| 久久亚洲精品成人国产| 日韩一区二区三区嘿嘿| 欧美成人黄色一区二区三区|