MikeCat商城
當時沒有多想運用什么知識點,只是想把自己想的功能實作,
也是因為沒有多想,所以自己的幻想隨之破滅,只是用了簡單的方法代替了,
這是最后的效果:


java做小成果
- MikeCat商城
- 一、建Goods類
- MikeCat商城大概
- 1、先是主方法
- 2、一系列方法
- (1)列印出商品
- (2) 添加
- (3)更新
- (4)洗掉
- (5)防止id重復
- 總結
一、建Goods類
由于只是簡單的商品描述,所以就添加了一些該存在的資訊:
序號 、品牌名 、物品名 、價格 、保質期 、生產日期
/*
MikeCat商城
* */
public class Goods {
private String id; // 序號
private String brand; // 品牌名
private String name; // 物品名
private String price; //價格
private String term; // 保質期,時間
private String birth; // 生產日期
public Goods() {
}
// 由于需要設定資訊,所以以下代碼是必要的
public Goods(String id, String brand, String name, String price, String term, String birth) {
this.id = id;
this.brand = brand;
this.name = name;
this.price = price;
this.term = term;
this.birth = birth;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getTerm() {
return term;
}
public void setTerm(String term) {
this.term = term;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
}
MikeCat商城大概

個人的原因,不喜歡看到很多的警告,所以一開始就注釋了:
不加也沒有影響
1、先是主方法
public static void main(String[] args) throws IOException {
ArrayList<Goods> list = new ArrayList<>();
Scanner sc = new Scanner(System.in);
while (true){
System.out.println("---------------歡迎來到MikeCat商城----------------");
System.out.println("--在這里你可以買到你想要的一切,也可以將你的物品按照你心儀的價格出售--");
System.out.println("1.添加商品");
System.out.println("2.更新商品");
System.out.println("3.處理過期");
System.out.println("4.查看所有商品");
System.out.println("5.退出");
System.out.println("聯系電話:124 8941 8121*");
System.out.println("請輸入你的選擇:");
int choose = sc.nextInt();
switch (choose){
case 1:
add(list);
System.out.println("---------------------------------------");
break;
case 2:
upGoods(list);
System.out.println("---------------------------------------");
break;
case 3:
deleteGoods(list);
System.out.println("---------------------------------------");
break;
case 4:
print(list);
System.out.println("---------------------------------------");
break;
case 5:
System.out.println("感謝使用!");
System.out.println("---------------------------------------");
System.exit(0);
default :
System.out.println("操作失敗,請重試!");
System.out.println("---------------------------------------");
break;
}
}
}
throws IOException 因為下面的方法中有用到例外的方法,所以就先拋出了,(不拋出也可以 因為之后idea會提醒的)
2、一系列方法
(1)列印出商品
public static void print(ArrayList<Goods> list) {
Scanner sc = new Scanner(System.in);
System.out.println("1.查看剛添加的商品, 2.回傳");
System.out.println("請選擇:");
int choose = sc.nextInt();
switch (choose){
case 1:
if (list.size() == 0){
System.out.println("請添加商品!");
return;
}
System.out.println("序號\t\t品牌\t\t\t\t物品\t\t\t\t價格\t\t\t\t保質期\t\t\t\t生產期");//(id,brand,name,price,term,birth);
for (int i = 0; i < list.size(); i++) {
Goods g = list.get(i);
System.out.println(g.getId() + "\t\t" + g.getBrand()+ "\t\t\t\t" + g.getName() + "\t\t\t\t" + g.getPrice() + "\t\t\t\t" + g.getTerm() + "\t\t\t\t" + g.getBirth());
}
break;
case 2:
return;
default:
System.out.println("輸入錯誤!,將回傳首頁!");
break;
}
}
(2) 添加
public static void add(ArrayList<Goods> list)throws IOException {
Scanner sc = new Scanner(System.in);
String id;
while (true){
System.out.println("請輸入商品序號:");
id = sc.nextLine();
boolean result = idUsed(list,id);
if (!result){
break;
}
System.out.println("此位置已有物品,請重選序號");
}
System.out.println("請輸入品牌:");
String brand = sc.nextLine();
System.out.println("請輸入物品名:");
String name = sc.nextLine();
System.out.println("請輸入價格(元):");
String price = sc.nextLine();
System.out.println("請輸入保質期時間(年):");
String term = sc.nextLine();
System.out.println("請輸入生產日期(xxxx-xx-xx):");
String birth = sc.nextLine();
Goods g = new Goods(id,brand,name,price,term,birth);
list.add(g);
FileWriter bw = new FileWriter("D:\\MikeCat.txt",true);//這里的檔案看自己的喜好,添加到需要的位置, 加上 true 防止以前內容被洗掉,
for (Goods goods : list) {
bw.write(goods.getId() + "\t\t\t\t\t\t" + goods.getBrand()+ "\t\t\t\t\t" + goods.getName() + "\t\t\t\t\t" + goods.getPrice() + "\t\t\t\t\t\t\t" + goods.getTerm() + "\t\t\t\t\t\t" + goods.getBirth()+"\r\t");
// \t 按照自己的喜好添加,因為這只是為了列印出來好看
}
bw.flush();
bw.close();//記得關閉,否則商品不可被添加入MikeCat商城
System.out.println("申請成功!");
System.out.println("經過管理員審核即可添加商品,");
}
在添加商品的時候想了很多,想要列印,添加到表格中,由于自己的技術問題,只能換種方式,
添加到 .txt 中,這個還是學過些的,
奧對了,記得拋出例外,(ALT + INS)
(3)更新
public static void upGoods(ArrayList<Goods> list) throws IOException {
Scanner sc = new Scanner(System.in);
System.out.println("輸入要替換的商品序號:");
String id = sc.nextLine();
boolean result = idUsed(list,id);
if (!result){
System.out.println("輸入錯誤,請重試:");
return;
}
System.out.println("請輸入新品牌:");
String b = sc.nextLine();
System.out.println("請輸入新物品名:");
String n = sc.nextLine();
System.out.println("請輸入價格:");
String p = sc.nextLine();
System.out.println("請輸入保質期時間:");
String t = sc.nextLine();
System.out.println("請輸入生產日期:");
String bi= sc.nextLine();
Goods g = new Goods(id,b,n,p,t,bi);
for (int i = 0; i < list.size(); i++) {
Goods older = list.get(i);
if (id.equals(older.getId())){
list.set(i,g);
System.out.println("替換成功!");
break;
}
}
FileWriter h = new FileWriter("D:\\JAVA\\project05\\MikeCat.txt",true);
for (Goods goods : list) {
h.write("*替換* :"+ goods.getId() + "\t\t\t\t" + goods.getBrand()+ "\t\t\t\t\t" + goods.getName() + "\t\t\t\t\t" + goods.getPrice() + "\t\t\t\t\t\t\t" + goods.getTerm() + "\t\t\t\t\t\t" + goods.getBirth()+"\r\t");
}
h.flush();
h.close();
System.out.println("申請成功!");
System.out.println("經過管理員審核即可替換商品,");
}
(4)洗掉
public static void deleteGoods(ArrayList<Goods> list) throws IOException {
Scanner c = new Scanner(System.in);
System.out.println("是否運用管理員身份?(1.是,2.否,3.測驗功能)");
int choose = c.nextInt();
switch (choose){
case 1:
/*
try {
RandomAccessFile raf = new RandomAccessFile("D:\\JAVA\\project05\\MikeCat.txt","rw");
String line;
//逐行讀取檔案,判斷是否包含需要替換的內容;
while (null != (line = raf.readLine())){
if (line.contains(id)){
//查找到需要替換的內容后,使用split方法,將該行分隔;
String[] split = line.split(id);
raf.seek(split[0].length());
//先寫入分隔前部分的內容,再寫入替換的內容,最后寫入分隔后部分的內容,
raf.writeBytes("已撤回");
raf.writeBytes(split[1]);
}
}
raf.close();
break;
}catch (IOException e){
e.printStackTrace();
}*/
FileWriter fw = new FileWriter("D:\\JAVA\\project05\\MikeCat.txt",true);
System.out.println("請輸入商品 *序號,品牌*(核對后執行):");
String id = c.next();
System.out.println();
fw.write("撤銷 " +id +"\r\t");
System.out.println("撤銷資訊已通知! 將回傳首頁");
fw.flush();
fw.close();
break;
case 2:
break;
case 3:
System.out.println("請輸入密碼(一次機會):");
int mm = 123456;
int m = c.nextInt();
if (mm == m){
if (list.isEmpty()){
System.out.println("當前無商品,請添加:");
return;
}
Scanner sc = new Scanner(System.in);
System.out.println("請輸入要處理的商品序號:");
String delete = sc.nextLine();
if (!idUsed(list,delete)){
System.out.println("查詢失敗,請重試!");
return;
}
for (int i = 0; i < list.size(); i++) {
Goods g = list.get(i);
if (g.getId().equals(delete)){
list.remove(i);
System.out.println("已處理!" );
return;
}
}
System.out.println("輸入錯誤! 將回傳首界面,");
break;
}else {
System.out.println("輸入錯誤! 將回傳首界面,");
break;
}
default:
System.out.println("輸入錯誤! 將回傳首界面,");
break;
}
}
中間的被注釋了的是原本想用的方法,但是我想用有把握的,所以那個高效的方法就先被替換了
(5)防止id重復
public static boolean idUsed(ArrayList<Goods> list,String id){
for (int i = 0; i < list.size(); i++) {
Goods g = list.get(i);
if (g.getId().equals(id)){
return true;
}
}
return false;
}
總結

內容并沒有想太多,只是自己想做一下,
弄了這個發現,自己做的在運行的時候總會有些想不到的bug,
結果不是很滿意,
希望在以后學會一些知識后,再次做一個MikeCat商城,
- 作者:麥克貓Cat
- 本文著作權歸作者和CSDN共有,歡迎交流
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/265663.html
標籤:java
下一篇:設計模式:創建型-單例模式

