public static void main ( String args[])
我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)、做網(wǎng)站、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、五華ssl等。為上千余家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的五華網(wǎng)站制作公司
{
new MenuTest().setVisible(true);
}
}
不要寫在另一個(gè)方法內(nèi)。
另外,是這個(gè)名稱的
PopupMenu pop;
Javaweb-案例練習(xí)-5-商品數(shù)量修改和合計(jì)金額實(shí)現(xiàn)
凱哥java 凱哥java
商品數(shù)量和小計(jì)修改實(shí)現(xiàn)
前面一篇完成了添加購(gòu)物的功能,這篇來(lái)完善購(gòu)物車頁(yè)面上,修改商品數(shù)量和小計(jì)這兩處地方的代碼。
需求
我們的需求如下圖
購(gòu)物車頁(yè)面,每一個(gè)商品數(shù)量這列的- + 可以點(diǎn)擊,然后小計(jì)這列金額跟隨變化。
需求簡(jiǎn)單分析
下面來(lái)簡(jiǎn)單看看這個(gè)修改思路:
在- +上寫onclick事件,調(diào)用一個(gè)js方法,例如changeNum(id,num)
跳轉(zhuǎn)到一個(gè)servlet去處理這個(gè)減一還是加一
把金額回顯到小計(jì)這一列。
在servlet方法中,其中一個(gè)參數(shù)肯定是Book.id, 第二個(gè)參數(shù)是購(gòu)買數(shù)量num,這個(gè)num也需要從session中拿到。
修改cart.jsp
在數(shù)量這個(gè) +控件,添加一個(gè)onclick事件,調(diào)用js方法changeNum(id),在方法中changeNum(),跳轉(zhuǎn)到一個(gè)servlet去處理。
新建一個(gè)servlet
先創(chuàng)建一個(gè)ChangeNumServlet.java, 完整代碼如下
部署測(cè)試
接下來(lái)進(jìn)行部署到tomcat,重啟服務(wù),點(diǎn)擊- +看看能不能修改數(shù)量
到這里,說(shuō)明修改數(shù)量-+這兩個(gè)控件代碼沒(méi)問(wèn)題,接下來(lái)寫小計(jì)中代碼。
小計(jì)金額代碼實(shí)現(xiàn)
小計(jì)金額需要根據(jù)數(shù)量和價(jià)格進(jìn)行變動(dòng),這里價(jià)格是固定的,數(shù)量是變化的。很簡(jiǎn)單就是數(shù)量乘價(jià)格就是小計(jì)的金額。
存,刷新購(gòu)物車頁(yè)面
這樣看起來(lái)沒(méi)問(wèn)題,但是有邊界問(wèn)題,我們沒(méi)有考慮到。
第一個(gè)問(wèn)題,數(shù)量當(dāng)前可以是負(fù)數(shù)
二個(gè)邊界,數(shù)量可以大于庫(kù)存
解決商品數(shù)量邊界問(wèn)題
在cart.jsp中的changeNum(), 我們還需要把庫(kù)存這個(gè)變量作為參數(shù)傳入,然后寫兩個(gè)if判斷,分別判斷商品數(shù)量小于1和商品數(shù)量大于庫(kù)存的情況。
在Servlet中需要處理num=0的情況,也就是從cart中移除這個(gè)商品。這個(gè)代碼,也會(huì)在后面點(diǎn)擊X這個(gè)從購(gòu)物車刪除商品控件上會(huì)用到。
部署看看,點(diǎn)擊商品數(shù)量為1的時(shí)候,再點(diǎn)擊減號(hào),看看會(huì)不會(huì)彈出提示。
擊OK,看看會(huì)不會(huì)從購(gòu)物車頁(yè)面刪除這本書。
刪除商品控件代碼實(shí)現(xiàn)
頁(yè)面上還有這個(gè)紅色X,點(diǎn)擊可以刪除商品。這個(gè)很簡(jiǎn)單,就是我地址傳過(guò)去,讓num=0,這樣后臺(tái)servlet就會(huì)處理,和上面邏輯一樣。
在cart.jsp中找到這個(gè)紅色X,大概在93行位置跳轉(zhuǎn)地址改成這樣。
style="color:#FF0000; font-weight:bold"X
保存代碼,可以測(cè)試以下,點(diǎn)擊就直接刪除,最好JS代碼提示以下是否確認(rèn)刪除。
解決合計(jì)金額
每個(gè)商品的小計(jì)計(jì)算出來(lái)了,現(xiàn)在我們來(lái)解決以下合計(jì)金額。
重點(diǎn)看以下三部分代碼
第一部分,定義一個(gè)sum變量,在foreach之前定義,初始化值為0
第二部分,在foreach結(jié)束前,統(tǒng)計(jì)sum的值
第三部分,合計(jì)這塊直接引用${sum},得到購(gòu)物車全部商品合計(jì)金額。
合計(jì):??${sum}元
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MyMenu extends JFrame{
JMenuBar jmbar=new JMenuBar();
JMenu jmenu=new JMenu("顏色");
JMenuItem jmt1=new JMenuItem("紅色"),
jmt2=new JMenuItem("黃色"),
jmt3=new JMenuItem("藍(lán)色");
JPanel jp=new JPanel();
MyMenu(){
setTitle("菜單測(cè)試");
setSize(400,300);
setJMenuBar(jmbar);
jmbar.add(jmenu);
jmenu.add(jmt1);
jmenu.add(jmt2);
jmenu.add(jmt3);
add(jp);
jmt1.addActionListener(new MenuAction(this));
jmt2.addActionListener(new MenuAction(this));
jmt3.addActionListener(new MenuAction(this));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new MyMenu();
}
}
class MenuAction implements ActionListener{
MyMenu m;
MenuAction(MyMenu m){
this.m=m;
}
public void actionPerformed(ActionEvent e){
String color=e.getActionCommand();
if(color=="紅色")m.jp.setBackground(Color.red);
else if(color=="黃色")m.jp.setBackground(Color.yellow);
else if(color=="藍(lán)色")m.jp.setBackground(Color.blue);
}
}
不知道你要什么事件代碼,我寫了個(gè)比較簡(jiǎn)單的你看適合不。
import?java.io.File;
import?java.io.FileWriter;
import?java.io.IOException;
import?java.io.OutputStream;
import?java.io.Writer;
import?java.util.Scanner;
public?class?menu?{
public?static?void?main(String[]?args)?{
//?TODO?Auto-generated?method?stub
StringBuffer?buffer?=new?StringBuffer();
String[]?num={"first","second","third"};
//變量i?為輸入的次數(shù)。?如果有變動(dòng)?直接修改即可。
for(int?i?=?0?;i3;i++){
System.out.println("Please?enter?the?name?of?the?"+num[i]+"?item:");
Scanner?nameSc?=?new?Scanner(System.in);?
buffer.append("("+nameSc.next()+"/");
System.out.println("Please?enter?the?"+num[i]+"?item?price:");
nameSc?=?new?Scanner(System.in);?
buffer.append(nameSc.next()+")");
if(i2)
buffer.append("\r\n");
}
System.out.println(buffer.toString());
try?{
//1、打開流
Writer?w=new?FileWriter("C://menu.txt",true);
//2、寫入內(nèi)容
w.write(buffer.toString());
//3、關(guān)閉流
w.close();
}?catch?(IOException?e)?{
System.out.println("文件寫入錯(cuò)誤:"+e.getMessage());
}
}
}
//代碼寫的比較low ? 看不慣勿噴。 如果與你要求有出入,直接追問(wèn)
import?java.io.File;
import?java.io.FileOutputStream;
import?java.io.OutputStream;
import?java.util.Scanner;
public?class?Demo02?{
public?static?void?main(String[]?args)?throws?Exception?{
StringBuffer?sb?=?new?StringBuffer();
Scanner?sc?=?new?Scanner(System.in);
for?(int?i?=?0;?i??3;?i++)?{
System.out.print("請(qǐng)輸入商品名字:\r\n");
String?name?=?sc.nextLine();
System.out.print("請(qǐng)輸入商品價(jià)格:\r\n");
String?price?=?sc.nextLine();
sb.append("("+name+"/"+price+")\r\n");
}
File?file?=?new?File("C:\\MyData.txt");
if(!file.exists()){
file.createNewFile();
}
OutputStream?os?=?new?FileOutputStream(file);
byte[]?bytes?=?sb.toString().getBytes();
os.write(bytes,?0,?bytes.length);
os.close();
sc.close();
}
}
網(wǎng)站欄目:java菜單價(jià)格代碼 菜單的價(jià)格java
當(dāng)前路徑:http://chinadenli.net/article30/dodcppo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、響應(yīng)式網(wǎng)站、外貿(mào)建站、企業(yè)建站、服務(wù)器托管、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)