|
java實(shí)現(xiàn)商品信息管理系統(tǒng),相關(guān)內(nèi)容在附件
統(tǒng)構(gòu)建類圖:
一.控制臺(tái)實(shí)現(xiàn):
0. 退出
1. 錄入商品基本信息
2. 顯示商品信息
3. 增加商品數(shù)量
4. 減少商品數(shù)量
5. 修改商品價(jià)格
6. 所有產(chǎn)品的總價(jià)格(單價(jià)*數(shù)量)
程序:
package test1;
import java.util.ArrayList;
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner get=new Scanner(System.in);
String serial,name;
float price;
int number;
System.out.println("----商品管理系統(tǒng)----");
System.out.println("******************");
System.out.println("1.錄入商品基本信息");
System.out.println("2.顯示商品信息");
System.out.println("3.增加商品");
System.out.println("4.減少商品");
System.out.println("5.修改商品價(jià)格");
System.out.println("6.所有商品的總價(jià)格");
System.out.println("0.退出");
ArrayList<Goods> list=new ArrayList<>();
while(true) {
System.out.println("請(qǐng)選擇序號(hào):");
int num=get.nextInt();
if(num==1) {//錄入商品基本信息
System.out.print("請(qǐng)輸入商品編號(hào):");
serial=get.next();
System.out.print("請(qǐng)輸入商品名稱:");
name=get.next();
System.out.print("請(qǐng)輸入商品價(jià)格:");
price=get.nextFloat();
System.out.print("請(qǐng)輸入商品數(shù)量:");
number=get.nextInt();
Goods goods=new Goods(serial, name, price, number);
list.add(goods);//加入到商品信息庫(kù)里
}else if(num==2) {//顯示商品信息
System.out.println("編號(hào)\t名稱\t價(jià)格\t數(shù)量");
for(int i=0;i<list.size();i++) {
Goods g=list.get(i);
g.show();
}
}else if(num==3) {//商品入庫(kù)(增加數(shù)量)
System.out.print("請(qǐng)輸入要入庫(kù)的商品的編號(hào):");
String se=get.next();
boolean flag=true;
for(int i=0;i<list.size();i++) {
Goods g=list.get(i);
if(se.equals(g.getSerial())) {
System.out.println("商品在庫(kù)中");
System.out.print("請(qǐng)輸入要入庫(kù)的商品的數(shù)量:");
int n=get.nextInt();
int number0=g.getNumber();
number0+=n;
g.setNumber(number0);//返回更改后的商品數(shù)量
flag=true;
break;
}else {
flag=false;
}
}
if(flag==false) {
System.out.println("商品不在庫(kù)中,請(qǐng)重新輸入:");
}
}else if(num==4) {//商品出庫(kù)(減少數(shù)量)
System.out.print("請(qǐng)輸入要減少的商品的編號(hào):");
String se=get.next();
boolean flag=true;
for(int i=0;i<list.size();i++) {
Goods g=list.get(i);
if(se.equals(g.getSerial())) {
int number0=g.getNumber();
System.out.println("商品在庫(kù)中,數(shù)量為:"+number0);
System.out.print("請(qǐng)輸入要出庫(kù)的商品的數(shù)量:");
int n=get.nextInt();
number0-=n;
g.setNumber(number0);//返回更改后的商品數(shù)量
flag=true;
break;
}else {
flag=false;
}
}
if(flag==false) {
System.out.println("商品不在庫(kù)中,請(qǐng)重新輸入:");
}
}else if(num==5) {//修改商品價(jià)格
System.out.print("請(qǐng)輸入要修改價(jià)格的商品的編號(hào):");
String se=get.next();
boolean flag=true;
for(int i=0;i<list.size();i++) {
Goods g=list.get(i);
if(se.equals(g.getSerial())) {
float price0=g.getPrice();
System.out.println("商品在庫(kù)中,價(jià)格為:"+price0);
System.out.print("請(qǐng)輸入要修改的商品的價(jià)格:");
float p=get.nextFloat();
g.setPrice(p);//返回修改后的價(jià)格
flag=true;
break;
}else {
flag=false;
}
}
if(flag==false) {
System.out.println("商品不在庫(kù)中,請(qǐng)重新輸入:");
}
}else if(num==6) {//所有產(chǎn)品的總價(jià)格(單價(jià)*數(shù)量)
float total[]=new float[list.size()];
float Total=0;
for(int i=0;i<list.size();i++) {
Goods g=list.get(i);
total[ i]=g.getPrice()*g.getNumber();
System.out.println("編號(hào)為"+i+"的商品的總價(jià)格為:"+total[ i]);
Total+=total[ i];
}
System.out.println("所有商品的總價(jià)格為:"+Total);
}else if(num==0) {
System.out.println("退出成功!");
break;
}
}
get.close();
}
}
class Goods{
String serial,name;
float price;
int number;
public Goods(String se,String n,float p,int num) {
this.serial=se;
this.name=n;
this.price=p;
this.number=num;
}
public String getSerial() {
return serial;
}
public void setSerial(String serial) {
this.serial = serial;
}
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 getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public void show() {
System.out.println(serial+"\t"+name+"\t"+price+"\t"+number);
}
}
運(yùn)行結(jié)果:
1.錄入商品信息和顯示商品信息的功能實(shí)現(xiàn):
2.一定要理解的概念
(開(kāi)始做的時(shí)候,很發(fā)懵,看了好多資料,但是還是感覺(jué)什么都不懂,這時(shí)候應(yīng)該看一些例題,查一下“XXX實(shí)驗(yàn)報(bào)告”,弄清楚到底應(yīng)該怎么寫。)
1、用design來(lái)理解panel
首先,程序會(huì)自己創(chuàng)建一個(gè)contentPane,這個(gè)就是一個(gè)主界面,就是你run了以后,出現(xiàn)的第一個(gè)界面。
可以在contentPane里邊加各種你需要的元素。
2、JPanel
如果你需要從主界面跳轉(zhuǎn)到另一個(gè)界面,那么你就需要再設(shè)置一個(gè)Jpanel,再用相關(guān)語(yǔ)法?梢赃@么理解,我們可視化了以后,就是從一個(gè)一個(gè)界面之間的跳轉(zhuǎn),所以我們需要很多的panel來(lái)區(qū)別其他的展示界面。
3.時(shí)間的發(fā)生要怎么監(jiān)聽(tīng)
(即怎么判斷事情的發(fā)生,比如我按了一個(gè)按鈕,程序怎么就知道自己判斷,自己執(zhí)行了呢)
4.怎么讀取文本框里邊的信息
如果文本框的名稱是textfile,則可以
textfile.getText(),注意這里得到的是一個(gè)String的信息,如果你想得到數(shù)字信息,比如說(shuō)你在文本框輸入2,如果用上邊語(yǔ)句,你得到的是“2”,要想得到數(shù)字,比如double 類型應(yīng)該是
Double.parseDouble(textField_4.getText());
舉一反三,得到int類型,應(yīng)該是Integer.parseInt(textField_5.getText());
5.怎么樣從一個(gè)界面跳轉(zhuǎn)到另一個(gè)界面呢
首先不同的界面需要使用不同的panel。!
然后在套用公式,在你需要監(jiān)聽(tīng)的事件那里寫:delectstudent();即調(diào)用這個(gè)函數(shù)
三.設(shè)計(jì)思路:
可以對(duì)超市商品進(jìn)行管理的人員主要有超市的商家和顧客,商家可以對(duì)超市的商品進(jìn)行增﹑刪﹑改﹑查操作,而顧客只能查詢和購(gòu)買商品。增加商品時(shí),要添加商品的全部信息(編號(hào)﹑類別﹑名稱﹑價(jià)格﹑庫(kù)存量﹑品牌﹑生產(chǎn)廠家),刪除時(shí)只需要輸入商品編號(hào)便可刪除該商品的全部信息,修改時(shí)要先輸入商品編號(hào),然后再確定要修改該商品的哪一個(gè)值,以及要將該值修改為什么,查詢時(shí)只要輸入想要查詢商品的任意一個(gè)信息并選擇商品類別便可查出該商品的全部信息。
1.實(shí)現(xiàn):
建立并連接數(shù)據(jù)庫(kù)與基本表
連接數(shù)據(jù)庫(kù)時(shí)需要用到JDBC,它由Java編程語(yǔ)言編寫的類和接口組成,是實(shí)現(xiàn)Java與各種數(shù)據(jù)庫(kù)連接的關(guān)鍵,提供了將Java與數(shù)據(jù)庫(kù)連接起來(lái)的程序接口,使用戶可以以SQL的形式編寫訪問(wèn)請(qǐng)求,然后傳給數(shù)據(jù)庫(kù),其結(jié)果再由這一接口返回,從而實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)操作的目的。超市商品管理系統(tǒng)采用了MySQL作為數(shù)據(jù)庫(kù),所建的系統(tǒng)數(shù)據(jù)庫(kù)名為“goods”。通過(guò)需求分析、概念設(shè)計(jì)與邏輯設(shè)計(jì),可知該系統(tǒng)數(shù)據(jù)庫(kù)只需建立一個(gè)商品表即可
2.結(jié)構(gòu)設(shè)計(jì):
該系統(tǒng)用于對(duì)商品的基本信息進(jìn)行管理,主要包括添加、修改、查詢和刪除商品基本信息,為了方便,全部操作均在界面中完成。由此,將該系統(tǒng)結(jié)構(gòu)設(shè)計(jì)為登錄模塊、顧客模塊、商家模塊。由于涉及界面設(shè)計(jì),因此調(diào)用了java.awt.、java.awt.event.、javax.swing.、java.util.、javax.swing.event.*、java.sql.*等包。
(一)實(shí)現(xiàn)登錄模塊:
要生成一個(gè)界面,可應(yīng)用AWT知識(shí)。設(shè)置其名字為商品信息管理系統(tǒng);設(shè)置布局管理器為(null)布局管理器,方便往其中放組件;設(shè)置窗口大小和位置,還要設(shè)置窗口可見(jiàn)性。
生成界面后,接下來(lái)就需要實(shí)現(xiàn)每個(gè)功能,第一個(gè)功能就是要對(duì)操作對(duì)象的身份進(jìn)行選擇,這里要用下拉列表的形式進(jìn)行選擇,也可以用單選按鈕來(lái)完成這個(gè)功能。在這項(xiàng)功能中,首先要選擇身份,所以要定義一個(gè)JLabel來(lái)說(shuō)明,定義完JLabel后,就需要定義一個(gè)JComoBox,下拉列表框。
輸入用戶名和密碼。需要用兩個(gè)JLabel來(lái)指明需要輸入用戶名和密碼。輸入用戶名需要定義一個(gè)JTextField,單文本框。同時(shí)輸入文本,但輸入密碼和輸入用戶名是不一樣的,它需要定義成JPasswordField,它的輸出結(jié)果為“*****”這樣的形式。
創(chuàng)建兩個(gè)按鈕,一個(gè)是登錄按鈕,另一個(gè)是取消登錄按鈕,用來(lái)輸入的用戶名和密碼及選擇的身份進(jìn)行提交,然后根據(jù)選擇的身份來(lái)選擇需要進(jìn)入那個(gè)界面,其代碼如下:
package sangpin;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class info_Manage extends JFrame implements ActionListener{
private JLabel username = new JLabel("用戶名");
private JTextField userName = new JTextField();
private JLabel psw = new JLabel("密碼");
private JPasswordField Psw = new JPasswordField();
JLabel jlp=new JLabel("身份");
String str[]={"顧客","商家"};
JComboBox jcb=new JComboBox(str);
private JButton jb1 = new JButton("登錄");
private JButton jb2 = new JButton("取消");
public info_Manage(){
this.setTitle("商品信息管理系統(tǒng)");
this.setLayout(null);
username.setBounds(100,50,100,20);
this.add(username);
userName.setBounds(150,50,100,20);
this.add(userName);
psw.setBounds(100,100,100,20);
this.add(psw);
Psw.setBounds(150,100,100,20);
this.add(Psw);
jlp.setBounds(100,150,100,20);
this.add(jlp);
jcb.setBounds(150,150,100,20);
this.add(jcb);
jcb.addActionListener(this);
jb1.setBounds(100,210,60,20);
this.add(jb1);
jb1.addActionListener(this);
jb2.setBounds(200,210,60,20);
this.add(jb2);
jb2.addActionListener(this);
this.setVisible(true);
this.setBounds(10,10,390,330);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new info_Manage();
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == jb1) {
String name=userName.getText();
String password = new String(Psw.getPassword());
if(name.length()==0&&password.length()!=0)
JOptionPane.showMessageDialog( null, "請(qǐng)輸入用戶名");
else if(name.length()!=0&&password.length()==0)
JOptionPane.showMessageDialog( null, "請(qǐng)輸入密碼");
else if(name.length()==0&&name.length()==0)
JOptionPane.showMessageDialog( null, "請(qǐng)輸入用戶名和密碼");
else if(jcb.getSelectedIndex()==0&&name.length()!=0&&name.length()!=0)
new custom_Manage();
else if(jcb.getSelectedIndex()==1&&name.length()!=0&&password.length()!=0)
new seller_Manage();
}
else if(e.getSource()==jb2)
System.exit(0);
}
}
(二)實(shí)現(xiàn)顧客操作界面
當(dāng)選擇“顧客”時(shí),單擊“登錄”按鈕就可以進(jìn)入顧客操作系統(tǒng)了,然后就可以對(duì)摸個(gè)學(xué)生的信息進(jìn)行輸入、修改和刪除,也能對(duì)同學(xué)的信息進(jìn)行查詢和對(duì)程序進(jìn)行查詢。當(dāng)打算離開(kāi)時(shí),還要有一個(gè)選項(xiàng)用來(lái)退出學(xué)生信息管理系統(tǒng)。根據(jù)設(shè)計(jì)構(gòu)想,首先要搭建一個(gè)界面,然后把顧客的操作分為2大塊,分別是商品信息查詢和退出登錄
完整的Word格式文檔51黑下載地址:
商品管理系統(tǒng).docx
(1.7 MB, 下載次數(shù): 9)
2019-11-9 21:11 上傳
點(diǎn)擊文件名下載附件
|
評(píng)分
-
查看全部評(píng)分
|