JAVA簡單項目購物系統(tǒng)的整個開發(fā)過程詳解(內(nèi)含源碼和注釋)
《JAVA簡單項目購物系統(tǒng)的整個開發(fā)過程詳解(內(nèi)含源碼和注釋)》由會員分享,可在線閱讀,更多相關(guān)《JAVA簡單項目購物系統(tǒng)的整個開發(fā)過程詳解(內(nèi)含源碼和注釋)(37頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 推薦精選 1. 購物系統(tǒng)的需求分析和類劃分 ? ? 購物系統(tǒng)本身是一個十分復(fù)雜的系統(tǒng),有很多細(xì)節(jié)問題如果深究會更加復(fù)雜,并且一般購物系統(tǒng)都是網(wǎng)頁類型的,要有一個友好的界面,但是作為一個簡單項目,該項目只是為了給JAVA初學(xué)者介紹一下開發(fā)的基本思想,以及面向?qū)ο髸r應(yīng)該怎樣去設(shè)計框架和實現(xiàn)流程,所以只 推薦精選 是基于eclipse開發(fā)的一個簡單的項目,并沒有GUI的參與,并且很多細(xì)節(jié)問題作為后續(xù)研究,整體的設(shè)計比較簡單,但是足以說明很多設(shè)計思想和設(shè)計理念,那么下面對基本的需求進(jìn)行分析。 ? ? 作為一個簡單的購物系統(tǒng),至少需要具備以下功能(這些功能分布在不同
2、級的菜單中): ? ? (1)用戶登錄功能、用戶賬號密碼修改功能,暫時不提供注冊功能; ? ? (2)用戶成功登錄后,需要具備客戶信息的管理功能、購物結(jié)算功能以及一些抽獎活動等; ? ? (3)客戶信息管理功能下面又可以分出很多功能,比如說:查詢、修改、增加等; ? ? (4)購物結(jié)算功能下面又可以分出很多功能,比如說:商品選購、付款、賬單等; ? ? (5)抽獎活動下面又可以設(shè)計出多種的抽獎形式,從而進(jìn)一步劃分為許多新的功能模塊。 ? ? (6)在一級菜單中要提供退出系統(tǒng)的功能,在二級菜單中要提供注銷登錄的功能,其他級菜單都要能夠返回上一級菜單。 ? ? 上面的這些功能都是
3、一些比較基本的功能,那么如果按照面向流程的思想來設(shè)計,就會劃分很多功能模塊,然后按照流程一步步走就行,但是現(xiàn)在我們采用面向?qū)ο蟮乃枷雭碓O(shè)計,那么應(yīng)該如何考慮設(shè)計框架呢?面向?qū)ο蟮闹饕枷刖褪菍⒁恍┬枨蟪橄鬄樵S多類,然后建立這些 推薦精選 類之間的聯(lián)系,通過不同類之間的協(xié)同合作,就可以實現(xiàn)所有的功能。所以,現(xiàn)在的主要任務(wù)就是如何合理地抽象出這些類,以及這些類要實現(xiàn)什么功能,類之間的聯(lián)系又是什么?下面通過本次設(shè)計的結(jié)構(gòu)對這一過程進(jìn)行分析。 ? ? (1)StartSMS類:用于系統(tǒng)的啟動。我們的系統(tǒng)肯定需要一個啟動類,這個類里面包含了main方法,用來啟動這個系統(tǒng),這個類是最頂層的,
4、所以不能牽涉太多底層的細(xì)節(jié)實現(xiàn),只需要實現(xiàn)一些頂層的基本流程就行,主要還是要調(diào)用底層其他類的一些方法來實現(xiàn)功能。 ? ? (2)Data類:用來存放我們的所有數(shù)據(jù)信息,本次設(shè)計主要存放的是已經(jīng)預(yù)存的一些可供購買的商品信息和已經(jīng)注冊的會員信息。為什么需要這個類呢?大家想一想,在面向?qū)ο蟮脑O(shè)計中,我們的數(shù)據(jù)比較多,肯定不能零散地到處定義、任意修改,這樣會使得系統(tǒng)的聚合程度太低,容易出現(xiàn)很多錯誤,并且難以進(jìn)行后期功能擴(kuò)展和錯誤修改,所以我們要把用到的一些公有的數(shù)據(jù)進(jìn)行歸類,然后放在一個類中,并且在該類中提供對這些數(shù)據(jù)進(jìn)行操作的方法。 ? ? (3)Menu類:用于顯示及處理各級菜單。既然
5、我們設(shè)計的是一個購物系統(tǒng),那么即使再簡單,也需要一個基本的菜單,用來和用戶進(jìn)行交互,由于菜單的比較多,并且各級菜單之間層層相連,所以我們需要對菜單進(jìn)行統(tǒng)一管理,故而出現(xiàn)了菜單類。注意,這里的菜單只是一些頂層的菜單顯示和基本的功能調(diào)用,具體底層的算法還是需要更加底層的類來實現(xiàn)的。 推薦精選 ? ? (4)Manager類:用于存儲用戶的賬戶和密碼。既然我們需要用戶登錄,那么肯定需要一個單獨(dú)的類來管理用戶的賬戶和密碼,從而使系統(tǒng)的獨(dú)立性更強(qiáng)一些。本次設(shè)計的用戶只有一個賬戶和密碼,只允許修改賬戶和密碼,但是不允許注冊。 ? ? (5)VerifyEqual類:用于驗證登錄信息。這個
6、類相當(dāng)于是把登錄這項功能抽象成了一個類,這個實現(xiàn)其實并不是非常必要,但是為了使得系統(tǒng)功能劃分更加清晰,所以設(shè)計了此類,用來對登錄信息和已有的賬戶和密碼進(jìn)行校驗,從而給出校驗結(jié)果。 ? ? (6)CustManagement類:用于客戶信息的管理,該類實現(xiàn)了底層的一些功能,比如說查詢、修改、增加等。當(dāng)我們進(jìn)入到客戶信息管理這個菜單的時候,肯定需要對客戶信息進(jìn)行許多操作,為了方便管理這些操作,并考慮到后續(xù)的擴(kuò)展性,這里把客戶信息管理的所有功能都抽象出來,放在此類中,上一級菜單通過調(diào)用該類中的方法實現(xiàn)客戶信息的管理。 ? ? (7)Pay類:用于處理購物和結(jié)算操作。該類和上面的類存在的原
7、理基本一致,當(dāng)客戶選擇進(jìn)行購物的時候,肯定要有很多操作,比如說買什么、多少錢、付款、找零等,這些功能比較零碎,所以我們對其進(jìn)行集中管理,從而抽象出該類,對購物和結(jié)算的菜單選項的底層算法進(jìn)行實現(xiàn),上一級菜單通過調(diào)用該類的方法實現(xiàn)購物和結(jié)算功能,并且可以返回上一級菜單。 推薦精選 ? ? (8)GiftManagement類:用于處理抽獎活動的相關(guān)功能。這個類和(6)、(7)中的類存在的理由基本一致,該類對抽獎活動進(jìn)行了統(tǒng)一管理,上一級菜單只需要通過調(diào)用該類的方法就可以實現(xiàn)抽獎的功能。 ? ? (9)Gift類:用于管理禮物。既然設(shè)計了抽獎環(huán)節(jié),那么肯定需要禮物,那么我們會給出什
8、么樣的禮物呢,我們總不能每一樣禮物都詳細(xì)列出來吧,這樣十分冗余,也很麻煩,所以我們干脆抽象出一個禮物類,把禮物的一些屬性:禮物名稱和價格等保存成該類的成員變量,然后就可以很方便的管理該類,需要什么樣的禮物就直接新建一個禮物對象,然后對該對象的屬性進(jìn)行修改和管理即可,這樣的實現(xiàn)類似于一個接口,但是又和接口完全不一樣,功能差不多。 ? ? 總之,上面的類都是經(jīng)過一些功能模塊劃分后抽象出來的,有些地方也并不一定合理,主要還是需要看需求,根據(jù)不同的需求制定不同的方案。在這里,我想就”Gift類“再強(qiáng)調(diào)一點(diǎn),這個類的設(shè)計十分符合面向?qū)ο蟮乃枷耄e個例子來看,如果購物系統(tǒng)中需要很多禮物,比如手機(jī)、電
9、腦、移動電源等,那么如果我們一個個寫這些禮物,會使得系統(tǒng)代碼十分冗余,因為禮物的屬性基本一樣,所以我們就可以抽象成一個類,從而在需要什么禮物的時候只定義一個對象,然后賦予一定的屬性即可,比如需要手機(jī)、電腦,那么我們只需要new一個Gift類的對象,然后在需要手機(jī)的時候設(shè)置其屬性為手機(jī),在需要電腦的時候設(shè)置其屬性為電腦,需要什么設(shè)置什么即可,這樣就使得我們的代碼得到 推薦精選 了簡化,也使得結(jié)構(gòu)比較清晰。在更為復(fù)雜的系統(tǒng)中,其實禮物用接口來實現(xiàn)更為合理,這樣就可以根據(jù)該接口實現(xiàn)不同的禮物類,從而滿足不同的需求,就類似于我們的電腦上的USB接口,只需要這個接口,我們就可以插上很多各種各樣的
10、外圍設(shè)備,道理差不多。 2. 購物系統(tǒng)的類之間的關(guān)系和流程(用圖示法表示) ? ? 下圖是我用Microsoft Office Visio 2003畫圖工具畫出的這9個類之間的關(guān)系。 推薦精選 ? ? 從上圖中可以清晰地看出來各類之間的關(guān)系,大致關(guān)系和流程如下所述: ? ? (1)StartSMS類是啟動類,內(nèi)含main方法,這個類里面定義了VerifyEqual類和Data類的對象,用來存儲數(shù)據(jù)和驗證信息,同時Data類中包含了Manager類,用來存儲預(yù)存的用戶賬號信息,然后在main方法中通過一定的邏輯,去調(diào)用Menu類中的showLoginMenu
11、()方法,用于處理一級菜單---登錄修改流程; ? ? (2)如果登錄成功,就調(diào)用Menu類中的showMainMenu()方法,用于處理二級菜單---購物系統(tǒng)的主流程,如果登錄失敗3次,就直接退出系統(tǒng); ? ? (3)在Menu類中的showMainMenu()方法中,通過選擇不同的二級菜單選項,從而調(diào)用Menu類中的showCustMMenu()方法來處理客戶信息管理流程或者調(diào)用Menu類中的showSendMenu()方法來處理抽獎活動流程,亦或者調(diào)用Pay類中的calcPrice()方法來處理購物結(jié)算流程; ? ? (4)如果選擇了二級菜單中的客戶信息管理選項,那么就
12、會調(diào)用Menu類中的showCustMMenu()方法,這個方法會調(diào)用CustManagement類中的各種方法,用以處理客戶信息管理的不同操作; 推薦精選 ? ? (5)如果選擇了二級菜單中的購物結(jié)算選項,那么就會調(diào)用Pay類中的calcPrice()方法,從而處理購物結(jié)算的流程,注意在Pay類中的getDiscount()方法是用來根據(jù)客戶會員信息來計算打折率的; ? ? (6)如果選擇了二級菜單中的真情回饋選項,即抽獎活動,那么就會調(diào)用Menu類中的showSendMenu()方法,這個方法會調(diào)用GiftManagement類中的各種方法,用以處理抽獎活動的不同操作;
13、 ? ? 注意到在CustManagement類和GiftManagement類中都有一個returnLastMenu()方法,該方法是用來返回上一級菜單使用的。 3. 代碼實現(xiàn) ? ? 需要說明的一點(diǎn)是這些代碼都應(yīng)該放在cn.itcast包下。 ? ? 3.1?StartSMS類 [java]view plaincopy 1. package?cn.itcast;?? 2. import?java.util.Scanner;?? 3. /** 4. ?*?該類是這個系統(tǒng)的主方法類,用于啟動購物系統(tǒng) 5. ?*? 6. ?*?@author? 7. ?
14、*? 8. ?*/ 9. publicclass?StartSMS?{?? 10. /** 11. ?????*?空構(gòu)造方法 12. ?????*? 13. ?????*/ 14. public?StartSMS()?{?? 推薦精選 15. ????}?? 16. /** 17. ?????*?系統(tǒng)主方法 18. ?????*? 19. ?????*?@param?args 20. ?????*/ 21. publicstaticvoid?main(String?args[])?{?? 22. //?創(chuàng)建已有的數(shù)據(jù)類的對象,并初始化已有的商品信息和顧客信息
15、 23. ????????Data?data?=?new?Data();?? 24. ????????data.initial();?? 25. //?創(chuàng)建菜單類的對象 26. ????????Menu?menu?=?new?Menu();?? 27. //?這里將初始化的已有數(shù)據(jù)信息送給了菜單對象 28. ????????menu.setData(?? 29. ????????????????data.goodsName,??? 30. ????????????????data.goodsPrice,??? 31. ????????????????data.custNo,?
16、? 32. ????????????????data.custBirth,??? 33. ????????????????data.custScore);?? 34. //?顯示一級菜單,即登錄界面 35. ????????menu.showLoginMenu();?? 36. //?該標(biāo)志用來判斷是否發(fā)生了系統(tǒng)操作錯誤,當(dāng)操作不當(dāng)?shù)臅r候flag為假,從而退出系統(tǒng),默認(rèn)為無錯誤 37. boolean?flag?=?true;?? 38. //?處理整個系統(tǒng)的流程 39. do?{?? 40. //?發(fā)生操作錯誤,退出系統(tǒng) 41. if?(!flag)?? 42. bre
17、ak;?? 43. //?創(chuàng)建驗證用戶登錄的賬戶和密碼是否正確的類的對象,這里只創(chuàng)建對象,并沒有執(zhí)行驗證方法 44. ????????????VerifyEqual?verifyequal?=?new?VerifyEqual();?? 45. //?輸入一級菜單中的選擇 46. ????????????Scanner?scanner?=?new?Scanner(System.in);?? 47. int?i?=?scanner.nextInt();?? 48. //?根據(jù)用戶對一級菜單的選擇做出不同的響應(yīng),注意這里就是經(jīng)典的switch-case的用法 49. switch?(i
18、)?{?? 50. case1:?//?用戶選擇"登錄系統(tǒng)" 51. //?定義計數(shù)器,表示用戶最多只能嘗試3次,3次輸入錯誤直接退出系統(tǒng) 52. int?j?=?3;?? 53. //?處理登錄系統(tǒng)的流程 54. do?{?? 55. if?(verifyequal.verify(data.manager.username,?? 56. ???????????????????????????????????????????????data.manager.password))?{?? 推薦精選 57. //?用戶登錄成功,顯示購物二級菜單!?。? 58. ???????
19、?????????????????????menu.showMainMenu();?? 59. break;?? 60. ????????????????????????}?? 61. if?(j?!=?1)?{?? 62. //?用戶輸入有誤,還沒有達(dá)到3次,允許重新輸入 63. ????????????????????????????System.out.println("\n用戶名和密碼不匹配,請重新輸入:");?? 64. ????????????????????????}?else?{?? 65. //?3次嘗試結(jié)束,設(shè)置退出標(biāo)志,并退出do-while循環(huán) 66.
20、????????????????????????????System.out.println("\n您沒有權(quán)限進(jìn)入系統(tǒng)!謝謝!");?? 67. ????????????????????????????flag?=?false;?? 68. break;?? 69. ????????????????????????}?? 70. //?每輸入一次將計數(shù)器減1,用于表示已經(jīng)嘗試了多少次 71. ????????????????????????j--;?? 72. ????????????????????}?while?(true);?? 73. break;?? 74. case
21、2:?//?用戶選擇"更改管理員信息" 75. if?(verifyequal.verify(data.manager.username,?? 76. ???????????????????????????????????????????data.manager.password))?{?? 77. //?輸入新信息前要先驗證原來的信息,此處表示已經(jīng)驗證成功 78. ????????????????????????System.out.print("請輸入新的用戶名:");?? 79. ????????????????????????data.manager.username?=?s
22、canner.next();?? 80. ????????????????????????System.out.print("請輸入新的密碼:");?? 81. ????????????????????????data.manager.password?=?scanner.next();?? 82. ????????????????????????System.out.println("用戶名和密碼已更改!");?? 83. //?信息更改成功,選擇下一步的操作 84. ????????????????????????System.out.println("\n請選擇,輸入數(shù)字:")
23、;?? 85. ????????????????????}?else?{?? 86. //?信息驗證失敗,設(shè)置退出標(biāo)志 87. ????????????????????????System.out.println("抱歉,你沒有權(quán)限修改!");?? 88. ????????????????????????flag?=?false;?? 89. ????????????????????}?? 90. break;?? 91. case3:?//?用戶選擇"退出" 92. ????????????????????System.out.println("謝謝您的使用!");?? 9
24、3. ????????????????????System.exit(0);?? 94. break;?? 95. default:?//?一級菜單輸入錯誤,需要重新選擇 96. ????????????????????System.out.print("\n輸入有誤!請重新選擇,輸入數(shù)字:?");?? 97. break;?? 98. ????????????}?? 99. ????????}?while?(flag);?? 推薦精選 100. ????}?? 101. }?? ? ? 3.2?Data類 [java]view plaincopy 1. p
25、ackage?cn.itcast;?? 2. /** 3. ?*?存放購物系統(tǒng)的初始化數(shù)據(jù)的數(shù)據(jù)類,該類只是存放了已有的商品信息和顧客信息 4. ?*? 5. ?*?@author? 6. ?*? 7. ?*/ 8. publicclass?Data?{?? 9. /** 10. ?????*?默認(rèn)構(gòu)造方法,初始化變量,由于都是數(shù)組對象或類對象,所以都需要采用new 11. ?????*? 12. ?????*/ 13. public?Data()?{?? 14. ????????goodsName???=?new?String[50]?;?? 15. ??????
26、??goodsPrice??=?newdouble[50]?;?? 16. ????????custNo??????=?newint[100]???;?? 17. ????????custBirth???=?new?String[100];?? 18. ????????custScore???=?newint[100]???;?? 19. ????????manager?????=?new?Manager()??;?? 20. ????}?? 21. /** 22. ?????*?初始化該類的數(shù)據(jù) 23. ?????*? 24. ?????*/ 25. publicvoid
27、?initial()?{?? 26. /*====================添加了初始的7種商品信息====================*/ 27. ????????goodsName?[0]?=?"addidas運(yùn)動鞋";?? 28. ????????goodsPrice[0]?=?880D;?? 29. ????????goodsName?[1]?=?"Kappa網(wǎng)球裙";?? 30. ????????goodsPrice[1]?=?200D;?? 31. ????????goodsName?[2]?=?"網(wǎng)球拍";?? 32. ????????goodsPrice
28、[2]?=?780D;?? 33. ????????goodsName?[3]?=?"addidasT恤";?? 34. ????????goodsPrice[3]?=?420.77999999999997D;?? 35. ????????goodsName?[4]?=?"Nike運(yùn)動鞋";?? 36. ????????goodsPrice[4]?=?900D;?? 推薦精選 37. ????????goodsName?[5]?=?"Kappa網(wǎng)球";?? 38. ????????goodsPrice[5]?=?45D;?? 39. ????????goodsName?[6
29、]?=?"KappaT恤";?? 40. ????????goodsPrice[6]?=?245D;?? 41. /*====================添加了初始的7個顧客信息====================*/ 42. ????????custNo???[0]?=?1900;?? 43. ????????custBirth[0]?=?"08/05";?? 44. ????????custScore[0]?=?2000;?? 45. ????????custNo???[1]?=?1711;?? 46. ????????custBirth[1]?=?"07/13";?
30、? 47. ????????custScore[1]?=?4000;?? 48. ????????custNo???[2]?=?1623;?? 49. ????????custBirth[2]?=?"06/26";?? 50. ????????custScore[2]?=?5000;?? 51. ????????custNo???[3]?=?1545;?? 52. ????????custBirth[3]?=?"04/08";?? 53. ????????custScore[3]?=?2200;?? 54. ????????custNo???[4]?=?1464;?? 55.
31、 ????????custBirth[4]?=?"08/16";?? 56. ????????custScore[4]?=?1000;?? 57. ????????custNo???[5]?=?1372;?? 58. ????????custBirth[5]?=?"12/23";?? 59. ????????custScore[5]?=?3000;?? 60. ????????custNo???[6]?=?1286;?? 61. ????????custBirth[6]?=?"12/21";?? 62. ????????custScore[6]?=?10080;?? 63. ?
32、???}?? 64. /*====================定義該類所擁有的變量====================*/ 65. public?String???goodsName?[];???//?商品的名稱 66. publicdouble???goodsPrice[];???//?商品的價格 67. publicint??custNo????[];???//?顧客的會員號 68. public?String???custBirth?[];???//?顧客的生日 69. publicint??custScore?[];???//?顧客的積分 70. public?M
33、anager??manager?;???//?管理員類,僅僅存儲了管理員的用戶名和密碼 71. }?? ? ? 3.3?Manager類 [java]view plaincopy 1. package?cn.itcast;?? 2. /** 3. ?*?管理員類,僅僅存儲了管理員的用戶名和密碼 推薦精選 4. ?*? 5. ?*?@author 6. ?*? 7. ?*/ 8. publicclass?Manager?{?? 9. /** 10. ?????*?設(shè)置默認(rèn)的用戶名和密碼 11. ?????*? 12. ?????*/ 13. publ
34、ic?Manager()?{?? 14. ????????username?=?"itcast";?? 15. ????????password?=?"itcast";?? 16. ????}?? 17. /*====================定義該類所擁有的變量====================*/ 18. public?String?username;?????//?用戶名 19. public?String?password;?????//?密碼 20. }?? ? ? 3.4?VerifyEqual類 [java]view plaincopy 1
35、. package?cn.itcast;?? 2. import?java.util.Scanner;?? 3. /** 4. ?*?驗證用戶登錄的賬戶和密碼是否正確的類 5. ?*? 6. ?*?@author 7. ?*? 8. ?*/ 9. publicclass?VerifyEqual?{?? 10. /** 11. ?????*?空構(gòu)造方法 12. ?????*? 13. ?????*/ 14. public?VerifyEqual()?{?? 15. ????}?? 16. /** 17. ?????*?執(zhí)行驗證的方法 18. ?????*? 1
36、9. ?????*?@param?s??用于驗證的正確的用戶名 20. ?????*?@param?s1???用于驗證的正確的密碼 21. ?????*?@return 推薦精選 22. ?????*/ 23. publicboolean?verify(String?s,?String?s1)?{?? 24. //?由用戶輸入用戶名 25. ????????System.out.print("請輸入用戶名:");?? 26. ????????Scanner?scanner?=?new?Scanner(System.in);?? 27. ????????String?s2?
37、=?scanner.next();?? 28. //?由用戶輸入密碼 29. ????????System.out.print("請輸入密碼:");?? 30. ????????scanner?=?new?Scanner(System.in);?? 31. ????????String?s3?=?scanner.next();?? 32. //?判斷用戶輸入的信息是否和已有的信息一致 33. return?s2.equals(s)?&&?s1.equals(s3);?? 34. ????}?? 35. }?? ? ? 3.5?Menu類 [java]view pla
38、incopy 1. package?cn.itcast;?? 2. import?java.util.Scanner;?? 3. /** 4. ?*?菜單類,用于顯示所有級菜單供用戶選擇 5. ?*? 6. ?*?@author 7. ?*? 8. ?*/ 9. publicclass?Menu?{?? 10. /** 11. ?????*?空構(gòu)造方法 12. ?????*? 13. ?????*/ 14. public?Menu()?{?? 15. ????}?? 16. /** 17. ?????*?設(shè)置菜單類中的數(shù)據(jù)信息 18. ?????*? 19
39、. ?????*?@param?as 20. ?????*?@param?ad 21. ?????*?@param?ai 22. ?????*?@param?as1 23. ?????*?@param?ai1 24. ?????*/ 推薦精選 25. publicvoid?setData(String?as[],?double?ad[],?int?ai[],?String?as1[],?int?ai1[])?{?? 26. ????????goodsName???=?as;?? 27. ????????goodsPrice??=?ad;?? 28. ????????cu
40、stNo??????=?ai;?? 29. ????????custBirth???=?as1;?? 30. ????????custScore???=?ai1;?? 31. ????}?? 32. /** 33. ?????*?顯示一級菜單,即登錄界面 34. ?????*? 35. ?????*/ 36. publicvoid?showLoginMenu()?{?? 37. ????????System.out.println("\n\n\t\t\t????歡迎使用itcast購物管理系統(tǒng)1.0版\n\n");?? 38. ????????System.out.prin
41、tln("*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*\n");?? 39. ????????System.out.println("\t\t\t\t?1.?登?錄?系?統(tǒng)\n\n");?? 40. ????????System.out.println("\t\t\t\t?2.?更?改?管?理?員?信?息\n\n");?? 41. ????????System.out.println("\t\t\t\t?3.?退?出\n\n");?? 42. ????????System.
42、out.println("*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*\n");?? 43. ????????System.out.print("請選擇,輸入數(shù)字:");?? 44. ????}?? 45. /** 46. ?????*?顯示二級菜單,即系統(tǒng)的主菜單,這個方法里面包含了對這個菜單處理的所有流程 47. ?????*? 48. ?????*/ 49. publicvoid?showMainMenu()?{?? 50. //?顯示二級菜單,即系統(tǒng)的主菜單
43、 51. ????????System.out.println("\n\n\t\t\t\t歡迎使用購物管理系統(tǒng)\n");?? 52. ????????System.out.println("*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*\n");?? 53. ????????System.out.println("\t\t\t\t?1.?客?戶?信?息?管?理\n");?? 54. ????????System.out.println("\t\t\t\t?2.?購?物?結(jié)?算
44、\n");?? 55. ????????System.out.println("\t\t\t\t?3.?真?情?回?饋\n");?? 56. ????????System.out.println("\t\t\t\t?4.?注?銷\n");?? 57. ????????System.out.println("*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*\n");?? 58. //?用戶選擇服務(wù)項目 59. ????????System.out.print("請選擇,輸入數(shù)字
45、:");?? 60. ????????Scanner?scanner?=?new?Scanner(System.in);?? 61. //?設(shè)置標(biāo)志用于控制循環(huán) 62. boolean?flag?=?false;?? 63. do?{?? 64. ????????????String?s?=?scanner.next();?? 推薦精選 65. //?用戶選擇"客戶信息管理" 66. if?(s.equals("1"))?{?? 67. //?顯示客戶信息管理菜單并處理這個菜單的整個流程,當(dāng)這個流程處理完 68. ????????????????showCustMMen
46、u();?? 69. break;?? 70. ????????????}?? 71. //?用戶選擇"購物結(jié)算" 72. if?(s.equals("2"))?{?? 73. //?定義購物結(jié)算類的對象,并處理整個購物結(jié)算的流程 74. ????????????????Pay?pay?=?new?Pay();?? 75. ????????????????pay.setData(goodsName,?goodsPrice,?custNo,?custBirth,?custScore);?? 76. ????????????????pay.calcPrice();?? 77. b
47、reak;?? 78. ????????????}?? 79. //?用戶選擇"真情回饋" 80. if?(s.equals("3"))?{?? 81. //?處理真情回饋的整個處理流程 82. ????????????????showSendGMenu();?? 83. break;?? 84. ????????????}?? 85. //?用戶選擇"注銷" 86. if?(s.equals("4"))?{?? 87. //?顯示一級菜單,此時會返回至StartSMS類中的一級菜單處理流程 88. ????????????????showLoginMenu();??
48、89. break;?? 90. ????????????}?? 91. ????????????System.out.print("輸入錯誤,請重新輸入數(shù)字:");?? 92. ????????????flag?=?false;?? 93. ????????}?while?(!flag);?? 94. ????}?? 95. /** 96. ?????*?顯示三級菜單-客戶信息管理,并處理所有客戶信息管理的流程 97. ?????*? 98. ?????*/ 99. publicvoid?showCustMMenu()?{?? 100. ????????System.o
49、ut.println("購物管理系統(tǒng)?>?客戶信息管理\n");?? 101. ????????System.out.println("*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*\n");?? 102. ????????System.out.println("\t\t\t\t?1.?顯?示?所?有?客?戶?信?息\n");?? 103. ????????System.out.println("\t\t\t\t?2.?添?加?客?戶?信?息\n");?? 104. ????
50、????System.out.println("\t\t\t\t?3.?修?改?客?戶?信?息\n");?? 105. ????????System.out.println("\t\t\t\t?4.?查?詢?客?戶?信?息\n");?? 106. ????????System.out.println("*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*\n");?? 推薦精選 107. ????????System.out.print("請選擇,輸入數(shù)字或按'n'返回上一級菜
51、單:");?? 108. ????????Scanner?scanner?=?new?Scanner(System.in);?? 109. boolean?flag?=?true;?? 110. do?{?? 111. //?創(chuàng)建客戶信息管理對象,并設(shè)置數(shù)據(jù),這里的數(shù)據(jù)還是原始的那些數(shù)據(jù) 112. ????????????CustManagement?custmanagement?=?new?CustManagement();?? 113. ????????????custmanagement.setData(goodsName,?goodsPrice,?custNo,?custB
52、irth,?custScore);?? 114. ????????????String?s?=?scanner.next();?? 115. //?客戶選擇"顯示所有客戶信息" 116. if?(s.equals("1"))?{?? 117. ????????????????custmanagement.show();?? 118. break;?? 119. ????????????}?? 120. //?客戶選擇"添加客戶信息" 121. if?(s.equals("2"))?{?? 122. ????????????????custmanagement.add();??
53、 123. break;?? 124. ????????????}?? 125. //?客戶選擇"修改客戶信息" 126. if?(s.equals("3"))?{?? 127. ????????????????custmanagement.modify();?? 128. break;?? 129. ????????????}?? 130. //?客戶選擇"查詢客戶信息" 131. if?(s.equals("4"))?{?? 132. ????????????????custmanagement.search();?? 133. break;?? 134. ????
54、????????}?? 135. //?客戶選擇"返回上一級菜單" 136. if?(s.equals("n"))?{?? 137. ????????????????showMainMenu();?? 138. break;?? 139. ????????????}?? 140. ????????????System.out.println("輸入錯誤,?請重新輸入數(shù)字:");?? 141. ????????????flag?=?false;?? 142. ????????}?while?(!flag);?? 143. ????}?? 144. /** 145. ????
55、?*?顯示三級菜單-真情回饋,并處理所有真情回饋的流程 146. ?????*? 147. ?????*/ 148. publicvoid?showSendGMenu()?{?? 149. ????????System.out.println("購物管理系統(tǒng)?>?真情回饋\n");?? 推薦精選 150. ????????System.out.println("*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*\n");?? 151. ????????System.ou
56、t.println("\t\t\t\t?1.?幸?運(yùn)?大?放?送\n");?? 152. ????????System.out.println("\t\t\t\t?2.?幸?運(yùn)?抽?獎\n");?? 153. ????????System.out.println("\t\t\t\t?3.?生?日?問?候\n");?? 154. ????????System.out.println("*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*\n");?? 155. ????????Sys
57、tem.out.print("請選擇,輸入數(shù)字或按'n'返回上一級菜單:");?? 156. ????????Scanner?scanner?=?new?Scanner(System.in);?? 157. //?創(chuàng)建禮物管理對象,并設(shè)置數(shù)據(jù),這里的數(shù)據(jù)還是原始的那些數(shù)據(jù) 158. ????????GiftManagement?giftmanagement?=?new?GiftManagement();?? 159. ????????giftmanagement.setData(goodsName,?goodsPrice,?custNo,?custBirth,?custScore);?
58、? 160. boolean?flag?=?true;?? 161. do?{?? 162. ????????????String?s?=?scanner.next();?? 163. //?客戶選擇"幸運(yùn)大放送" 164. if?(s.equals("1"))?{?? 165. ????????????????giftmanagement.sendGoldenCust();?? 166. break;?? 167. ????????????}?? 168. //?客戶選擇"幸運(yùn)抽獎" 169. if?(s.equals("2"))?{?? 170. ??????????
59、??????giftmanagement.sendLuckyCust();?? 171. break;?? 172. ????????????}?? 173. //?客戶選擇"生日問候" 174. if?(s.equals("3"))?{?? 175. ????????????????giftmanagement.sendBirthCust();?? 176. break;?? 177. ????????????}?? 178. //?客戶選擇"返回上一級菜單" 179. if?(s.equals("n"))?{?? 180. ????????????????showMai
60、nMenu();?? 181. break;?? 182. ????????????}?? 183. ????????????System.out.println("輸入錯誤,?請重新輸入數(shù)字:");?? 184. ????????????flag?=?false;?? 185. ????????}?while?(!flag);?? 186. ????}?? 187. /*====================定義該類所擁有的變量====================*/ 188. public?String???goodsName?[];???//?商品的名稱 189.
61、 publicdouble???goodsPrice[];???//?商品的價格 190. publicint??custNo????[];???//?顧客的會員號 推薦精選 191. public?String???custBirth?[];???//?顧客的生日 192. publicint??custScore?[];???//?顧客的積分 193. }?? ? ? 3.6?CustManagement類 [java]view plaincopy 1. package?cn.itcast;?? 2. import?java.util.Scanner;??
62、 3. /** 4. ?*?顧客信息管理類 5. ?*? 6. ?*?@author 7. ?* 8. ?*/ 9. publicclass?CustManagement?{?? 10. /** 11. ?????*?空構(gòu)造方法 12. ?????*? 13. ?????*/ 14. public?CustManagement()?{?? 15. ????}?? 16. /** 17. ?????*?設(shè)置顧客信息管理類的數(shù)據(jù)信息 18. ?????*? 19. ?????*?@param?as 20. ?????*?@param?ad 21. ?????*
63、?@param?ai 22. ?????*?@param?as1 23. ?????*?@param?ai1 24. ?????*/ 25. publicvoid?setData(String?as[],?double?ad[],?int?ai[],?String?as1[],?int?ai1[])?{?? 26. ????????goodsName???=?as;?? 27. ????????goodsPrice??=?ad;?? 28. ????????custNo??????=?ai;?? 29. ????????custBirth???=?as1;?? 30. ???
64、?????custScore???=?ai1;?? 31. ????}?? 32. /** 33. ?????*?返回上一級菜單,即二級菜單-客戶信息管理菜單 34. ?????*? 推薦精選 35. ?????*/ 36. publicvoid?returnLastMenu()?{?? 37. ????????System.out.print("\n\n請按'n'返回上一級菜單:");?? 38. ????????Scanner?scanner?=?new?Scanner(System.in);?? 39. boolean?flag?=?true;?? 40. do
65、 41. if?(scanner.next().equals("n"))?{?? 42. //?返回上一級菜單,這里新建了一個菜單對象,只是在用戶看來其實還是同樣的處理流程, 43. //?不過對于程序來說卻又開始了一個新的二級菜單處理流程 44. ????????????????Menu?menu?=?new?Menu();?? 45. ????????????????menu.setData(goodsName,?goodsPrice,?custNo,?custBirth,?custScore);?? 46. ????????????????menu.showCustMMenu
66、();?? 47. ????????????}?else?{?? 48. ????????????????System.out.print("輸入錯誤,?請重新'n'返回上一級菜單:");?? 49. ????????????????flag?=?false;?? 50. ????????????}?? 51. while?(!flag);?? 52. ????}?? 53. /** 54. ?????*?添加客戶信息 55. ?????*? 56. ?????*/ 57. publicvoid?add()?{?? 58. ????????System.out.println("購物管理系統(tǒng)?>?客戶信息管理?>?添加客戶信息\n\n");?? 59. ????????Scanner?scanner?=?new?Scanner(System.in);?? 60. ????????System.out.print("請輸入會員號(<4位整數(shù)>):");?? 61. int?i?=?scanner.nextInt();?? 62. ????????Syste
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 市教育局冬季運(yùn)動會安全工作預(yù)案
- 2024年秋季《思想道德與法治》大作業(yè)及答案3套試卷
- 2024年教師年度考核表個人工作總結(jié)(可編輯)
- 2024年xx村兩委涉案資金退還保證書
- 2024年憲法宣傳周活動總結(jié)+在機(jī)關(guān)“弘揚(yáng)憲法精神推動發(fā)改工作高質(zhì)量發(fā)展”專題宣講報告會上的講話
- 2024年XX村合作社年報總結(jié)
- 2024-2025年秋季第一學(xué)期初中歷史上冊教研組工作總結(jié)
- 2024年小學(xué)高級教師年終工作總結(jié)匯報
- 2024-2025年秋季第一學(xué)期初中物理上冊教研組工作總結(jié)
- 2024年xx鎮(zhèn)交通年度總結(jié)
- 2024-2025年秋季第一學(xué)期小學(xué)語文教師工作總結(jié)
- 2024年XX村陳規(guī)陋習(xí)整治報告
- 2025年學(xué)校元旦迎新盛典活動策劃方案
- 2024年學(xué)校周邊安全隱患自查報告
- 2024年XX鎮(zhèn)農(nóng)村規(guī)劃管控述職報告