ackage?cn.practice1200;
成都創(chuàng)新互聯(lián)公司長(zhǎng)期為近千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為鞏留企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作,鞏留網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
import?java.util.Scanner;
public?class?Eater_Alliance?{
/**
*?吃貨聯(lián)盟訂餐系統(tǒng)
*
*?@author?QCD
*?@param?args
*/
public?static?void?main(String[]?args)?{
//?TODO?Auto-generated?method?stub
Scanner?input?=?new?Scanner(System.in);
//?初始化3個(gè)數(shù)組存儲(chǔ)菜品、價(jià)格、點(diǎn)贊數(shù)
String[]?dishNames?=?{?"苦瓜炒雞蛋",?"紅燒排骨",?"辣子雞丁",?"石鍋魚",?"麻婆豆腐"?};
double[]?prices?=?{?15.0,?30.0,?35.0,?90.0,?20.0?};
int[]?praiseNums?=?new?int[5];
//?在初始化6個(gè)數(shù)組用于存儲(chǔ)訂單信息
String[]?names?=?new?String[5];//?保存訂餐人姓名
String[]?dishMegs?=?new?String[5];//?保存所選菜品名
int[]?dishNums?=?new?int[5];//?保存所選菜品份數(shù)
int[]?times?=?new?int[5];//?保存送餐時(shí)間
String[]?addresses?=?new?String[5];//?保存送餐地址
int[]?states?=?new?int[5];//?保存訂單狀態(tài):0表示已預(yù)訂,1表示已完成
double[]?sumPrices?=?new?double[5];//?保存訂單的總金額
//?初始化2條訂單信息
//?第1條
names[0]?=?"王大錘";
dishMegs[0]?=?"辣子雞丁";
dishNums[0]?=?2;
times[0]?=?12;
addresses[0]?=?"莞太路3號(hào)";
states[0]?=?0;
sumPrices[0]?=?70.0;
//?第2條
names[1]?=?"王大柱";
dishMegs[1]?=?"麻婆豆腐";
dishNums[1]?=?1;
times[1]?=?19;
addresses[1]?=?"建設(shè)路2號(hào)";
states[1]?=?1;
sumPrices[1]?=?25.0;
/*?實(shí)現(xiàn)菜單切換?*/
System.out.println("歡迎使用“吃貨聯(lián)盟訂餐系統(tǒng)”");
int?num?=?1;//?用戶輸入0返回主菜單否則退出系統(tǒng)
boolean?isExit?=?false;//?標(biāo)記用戶是否退出系統(tǒng),true為退出
//?循環(huán)控制用戶輸入選擇并執(zhí)行
do?{
System.out.println("************************");
System.out.println("1、我要訂餐");
System.out.println("2、查看餐袋");
System.out.println("3、簽收訂單");
System.out.println("4、刪除訂單");
System.out.println("5、我要點(diǎn)贊");
System.out.println("6、退出系統(tǒng)");
System.out.println("************************");
System.out.print("請(qǐng)選擇:");
num?=?input.nextInt();//?用戶輸入所要選擇進(jìn)行的操作
/*?使用switch結(jié)構(gòu)來建立選擇內(nèi)容?*/
switch?(num)?{
case?1://?我要訂餐
System.out.println("***我要訂餐***");
boolean?isAdd?=?false;//?記錄是否可以點(diǎn)餐
for?(int?i?=?0;?i??names.length;?i++)?{
if?(names[i]?==?null)?{
isAdd?=?false;
System.out.print("請(qǐng)輸入訂餐人姓名:");
String?name?=?input.next();
System.out.println("序號(hào)"?+?"\t"?+?"菜名"?+?"\t\t"?+?"單價(jià)"?+?"\t"?+?"點(diǎn)贊數(shù)");
for?(int?j?=?0;?j??dishNames.length;?j++)?{
System.out.println(
(j?+?1)?+?"\t"?+?dishNames[j]?+?"\t\t"?+?prices[j]?+?"元"?+?"\t"?+?praiseNums[j]);
}
System.out.print("請(qǐng)選擇您要點(diǎn)的菜品編號(hào):");
int?chooseDish?=?input.nextInt();
String?dishMeg?=?dishNames[chooseDish?-?1];
System.out.print("請(qǐng)選擇您需要的份數(shù):");
int?number?=?input.nextInt();
System.out.print("請(qǐng)輸入送餐時(shí)間(送餐時(shí)間是10點(diǎn)至20點(diǎn)間整點(diǎn)送餐):");
int?time?=?input.nextInt();
while?(time??10?||?time??20)?{
System.out.print("您的輸入有誤,請(qǐng)輸入10-20間的整數(shù)");
time?=?input.nextInt();
}
System.out.print("請(qǐng)輸入送餐地址:");
String?address?=?input.next();
//?默認(rèn)可以預(yù)定,不用寫訂單狀態(tài)
System.out.println("訂餐成功!");
System.out.println("您定的是:"?+?dishNames[chooseDish?-?1]?+?number?+?"份");
System.out.println("送餐時(shí)間:"?+?time?+?"點(diǎn)");
double?sumPrice?=?prices[chooseDish?-?1]?*?number;//?計(jì)算餐費(fèi)
double?sendMoney?=?(sumPrice?=?50)???0?:?5;//?計(jì)算送餐費(fèi)
System.out.println("餐費(fèi):"?+?sumPrice?+?"元,"?+?"送餐費(fèi)"?+?sendMoney?+?"元,"?+?"總計(jì):"
+?(sumPrice?+?sendMoney)?+?"元。");
//?添加數(shù)據(jù)
names[i]?=?name;
dishMegs[i]?=?dishMeg;
times[i]?=?time;
dishNums[i]?=?number;
addresses[i]?=?address;
sumPrices[i]?=?sumPrice?+?sendMoney;
break;
}
if?(isAdd)?{
System.out.println("對(duì)不起,您的餐袋已滿!");
}
}
break;
case?2://?查看餐袋
System.out.println("***查看餐袋***");
System.out.println("序號(hào)\t訂餐人\t餐品名稱\t餐品數(shù)量\t送餐時(shí)間\t送餐地址\t總金額\t訂單狀態(tài)");
for?(int?i?=?0;?i??names.length;?i++)?{
if?(names[i]?!=?null)?{
String?state?=?(states[i]?==?0)???"已預(yù)訂"?:?"已完成";
System.out.println((i?+?1)?+?"\t"?+?names[i]?+?"\t"?+?dishMegs[i]?+?"\t"?+?dishNums[i]?+?"份"
+?"\t"?+?times[i]?+?"\t"?+?addresses[i]?+?"\t"?+?sumPrices[i]?+?"元"?+?"\t"?+?state);
}
}
break;
case?3://?簽收訂單
System.out.println("***簽收訂單***");
boolean?isSignFind?=?false;
System.out.print("請(qǐng)選擇要簽收的訂單序號(hào):");
int?sign?=?input.nextInt();
for?(int?i?=?0;?i??names.length;?i++)?{
if?(names[i]?!=?null??states[i]?==?0??sign?==?i?+?1)?{
states[i]?=?1;
System.out.println("訂單簽收成功!");
isSignFind?=?true;//?標(biāo)記已找到的訂單
}?else?if?(names[i]?!=?null??states[i]?==?1??sign?==?i?+?1)?{
System.out.println("您選擇的訂單已完成簽收,不能再次簽收!");
isSignFind?=?true;//?標(biāo)記已找到的訂單
}
}
if?(!isSignFind)?{
System.out.println("您選擇的訂單不存在!");
}
break;
case?4://?刪除訂單
System.out.println("***刪除訂單***");
boolean?isDelFind?=?false;
System.out.print("請(qǐng)輸入要?jiǎng)h除的訂單序號(hào):");
int?delID?=?input.nextInt();
for?(int?i?=?0;?i??names.length;?i++)?{
//?根據(jù)狀態(tài)值判斷能不能刪除,只有已完成的才能刪除
if?(names[i]?!=?null??states[i]?==?1??delID?==?i?+?1)?{
isDelFind?=?true;
for?(int?j?=?delID?-?1;?j??names.length?-?1;?j++)?{
names[j]?=?names[j?+?1];
dishMegs[j]?=?dishMegs[j?+?1];
dishNums[j]?=?dishNums[j?+?1];
times[j]?=?times[j?+?1];
addresses[j]?=?addresses[j?+?1];
states[j]?=?states[j?+?1];
sumPrices[j]?=?sumPrices[j?+?1];
}
//?將最后一位清空
names[names.length?-?1]?=?null;
dishMegs[names.length?-?1]?=?null;
dishNums[names.length?-?1]?=?0;
times[names.length?-?1]?=?0;
addresses[names.length?-?1]?=?null;
states[names.length?-?1]?=?0;
sumPrices[names.length?-?1]?=?0;
System.out.println("刪除訂單成功!");
break;
}?else?if?(names[i]?!=?null??states[i]?==?0??delID?==?i?+?1)?{
isDelFind?=?true;
System.out.println("您選擇的訂單未簽收,不能刪除!");
break;
}
}?//?未找到的訂單不能刪除
if?(!isDelFind)?{
System.out.println("您要?jiǎng)h除的訂單不存在!");
}
break;
case?5://?我要點(diǎn)贊
System.out.println("***我要點(diǎn)贊***");
//?顯示菜品信息
System.out.println("序號(hào)\t菜名\t單價(jià)");
for?(int?i?=?0;?i??dishNames.length;?i++)?{
String?priaiseNum?=?(praiseNums[i]??0)???praiseNums[i]?+?"贊"?:?"";
System.out.println((i?+?1)?+?"\t"?+?dishNames[i]?+?"\t"?+?prices[i]?+?"元"?+?priaiseNum);
}
System.out.print("請(qǐng)選擇您要點(diǎn)贊的菜品序號(hào):");
int?number?=?input.nextInt();
praiseNums[number?-?1]++;
System.out.println("點(diǎn)贊成功");
break;
case?6://?退出系統(tǒng)
isExit?=?true;
break;
default://?退出系統(tǒng)
isExit?=?true;
break;
}
//?返回主界面
if?(!isExit)?{
System.out.print("輸入0返回:");
num?=?input.nextInt();
}?else?{
break;
}
}?while?(num?==?0);
System.out.println("謝謝惠顧,歡迎您再次使用!");
input.close();
}
}
一: 首先弄清題目的意思
A.需要的主要組件列表:
1. ?創(chuàng)建一個(gè)窗口,窗口標(biāo)題叫Information
2. ?3個(gè)標(biāo)簽, 用于顯示文字 Name Number Class
3. ?3個(gè)文本框, 用于填寫信息
4. ?1個(gè)按鈕, ?文字是確認(rèn)
5. ?1個(gè)文本域
B.業(yè)務(wù)邏輯
1. 當(dāng)點(diǎn)擊按鈕確認(rèn)的時(shí)候, 把 文本框的信息顯示到文本域
C.設(shè)計(jì)的主要技術(shù)
JLabel , JButton, JTextField ...等, 都是swing的組件 , ?所以應(yīng)該使用swing進(jìn)行創(chuàng)建
二: ?確定使用的布局
swing雖然重寫了大部分的組件, 但是布局, 依舊沿襲awt技術(shù)
分析圖片上的布局:
至少有2種方法可以實(shí)現(xiàn),?
方法一: 絕對(duì)布局 , 優(yōu)點(diǎn): ?配合可視化GUI拖曳, 可以完美的實(shí)現(xiàn)圖上的組件的位置
但是缺點(diǎn)也是致命的, 不同的操作系統(tǒng)平臺(tái)下, 可能會(huì)出現(xiàn)位置的移動(dòng),
只適合開發(fā)平臺(tái), 移植效果差 . ?所以不推薦使用
方法二: 靈活的表格布局, 配合流式布局 , 所有操作系統(tǒng)下,顯示效果都比較統(tǒng)一.?
三: 效果圖
四: 參考代碼
import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.*;
public?class?FrameDemo?extends?JFrame?{
//申明需要的組件
private?final?JTextField?jtf1,jtf2,jtf3;
private?final?JTextArea?jta;
public?FrameDemo()?{
setTitle("Information");//設(shè)置窗口標(biāo)題
setSize(320,?360);//設(shè)置窗口大小
setLocationRelativeTo(null);//設(shè)置窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE);//設(shè)置關(guān)閉時(shí)退出虛擬機(jī)
getContentPane().setLayout(new?FlowLayout());//設(shè)置窗口布局為流式布局
JPanel?jp?=?new?JPanel(new?GridLayout(4,?2));//設(shè)置jp面板為表格布局4行2列
//第一行
JPanel?jp01?=?new?JPanel();
JLabel?jl1?=?new?JLabel("Name:");
jp01.add(jl1);
JPanel?jp1?=?new?JPanel();
jtf1?=?new?JTextField(8);
jp1.add(jtf1);
//第二行
JPanel?jp02?=?new?JPanel();
JLabel?jl2?=?new?JLabel("Number:");
jp02.add(jl2);
JPanel?jp2?=?new?JPanel();
jtf2?=?new?JTextField(8);
jp2.add(jtf2);
//第三行
JPanel?jp03?=?new?JPanel();
JLabel?jl3?=?new?JLabel("Class:");
jp03.add(jl3);
JPanel?jp3?=?new?JPanel();
jtf3?=?new?JTextField(8);
jp3.add(jtf3);
//第四行
JPanel?jp04?=?new?JPanel();
JLabel?jl4?=?new?JLabel("");
jp04.add(jl4);
JPanel?jp4?=?new?JPanel();
JButton?jb?=?new?JButton("確認(rèn)");
jp4.add(jb);
jp.add(jp01);
jp.add(jp1);
jp.add(jp02);
jp.add(jp2);
jp.add(jp03);
jp.add(jp3);
jp.add(jp04);
jp.add(jp4);
getContentPane().add(jp);
jta?=?new?JTextArea();
jta.setColumns(20);//設(shè)置文本域的大小
jta.setEditable(false);//設(shè)置文本域不可編輯
jta.setBackground(jp.getBackground());//設(shè)置文本域的背景色和面板一樣
getContentPane().add(jta);
jb.addActionListener(new?ActionListener()?{//給按鈕添加事件
public?void?actionPerformed(ActionEvent?e)?{//點(diǎn)擊按鈕,顯示信息到文本域
String?name?=?jtf1.getText();
String?number?=?jtf2.getText();
String?clazz?=?jtf3.getText();
jta.setText("You?name?is?"+name+"?number?is?"+number+"?class?is?"+clazz);
}
});
}
public?static?void?main(String[]?args)?{
new?FrameDemo().setVisible(true);//創(chuàng)建窗口,被設(shè)置為可見
}
}
五: 拓展
雖然圖形界面的實(shí)現(xiàn)方法是多樣的, ?我們一定要根據(jù)具體情況, 選擇一個(gè)比較優(yōu)化的 合理的, 符合業(yè)務(wù)邏輯的實(shí)現(xiàn)方法
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)單的你看適合不。
你這個(gè)需求設(shè)計(jì)做下來,一個(gè)月就沒了,直接去CSDN下載吧,有現(xiàn)成的。
下載鏈接如下: