




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1. 購物系統(tǒng)的需求分析和類劃分 購物系統(tǒng)本身是一個(gè)十分復(fù)雜的系統(tǒng),有很多細(xì)節(jié)問題如果深究會(huì)更加復(fù)雜,并且一般購物系統(tǒng)都是網(wǎng)頁類型的,要有一個(gè)友好的界面,但是作為一個(gè)簡單項(xiàng)目,該項(xiàng)目只是為了給JAVA初學(xué)者介紹一下開發(fā)的基本思想,以及面向?qū)ο髸r(shí)應(yīng)該怎樣去設(shè)計(jì)框架和實(shí)現(xiàn)流程,所以只是基于eclipse開發(fā)的一個(gè)簡單的項(xiàng)目,并沒有GUI的參與,并且很多細(xì)節(jié)問題作為后續(xù)研究,整體的設(shè)計(jì)比較簡單,但是足以說明很多設(shè)計(jì)思想和設(shè)計(jì)理念,那么下面對基本的需求進(jìn)行分析。 作為一個(gè)簡單的購物系統(tǒng),至少需要具備以下功能(這些功能分布在不同級的菜單中):
2、; (1)用戶登錄功能、用戶賬號密碼修改功能,暫時(shí)不提供注冊功能; (2)用戶成功登錄后,需要具備客戶信息的管理功能、購物結(jié)算功能以及一些抽獎(jiǎng)活動(dòng)等; (3)客戶信息管理功能下面又可以分出很多功能,比如說:查詢、修改、增加等; (4)購物結(jié)算功能下面又可以分出很多功能,比如說:商品選購、付款、賬單等; (5)抽獎(jiǎng)活動(dòng)下面又可以設(shè)計(jì)出多種的抽獎(jiǎng)形式,從而進(jìn)一步劃分為許多新的功能模塊。 (6)在一級菜單中要提供退出系統(tǒng)的功能,在二級菜單中要提供注銷登錄的功
3、能,其他級菜單都要能夠返回上一級菜單。 上面的這些功能都是一些比較基本的功能,那么如果按照面向流程的思想來設(shè)計(jì),就會(huì)劃分很多功能模塊,然后按照流程一步步走就行,但是現(xiàn)在我們采用面向?qū)ο蟮乃枷雭碓O(shè)計(jì),那么應(yīng)該如何考慮設(shè)計(jì)框架呢?面向?qū)ο蟮闹饕枷刖褪菍⒁恍┬枨蟪橄鬄樵S多類,然后建立這些類之間的聯(lián)系,通過不同類之間的協(xié)同合作,就可以實(shí)現(xiàn)所有的功能。所以,現(xiàn)在的主要任務(wù)就是如何合理地抽象出這些類,以及這些類要實(shí)現(xiàn)什么功能,類之間的聯(lián)系又是什么?下面通過本次設(shè)計(jì)的結(jié)構(gòu)對這一過程進(jìn)行分析。 (1)StartSMS類:用于系統(tǒng)的啟動(dòng)。我們的系統(tǒng)肯定需要一
4、個(gè)啟動(dòng)類,這個(gè)類里面包含了main方法,用來啟動(dòng)這個(gè)系統(tǒng),這個(gè)類是最頂層的,所以不能牽涉太多底層的細(xì)節(jié)實(shí)現(xiàn),只需要實(shí)現(xiàn)一些頂層的基本流程就行,主要還是要調(diào)用底層其他類的一些方法來實(shí)現(xiàn)功能。 (2)Data類:用來存放我們的所有數(shù)據(jù)信息,本次設(shè)計(jì)主要存放的是已經(jīng)預(yù)存的一些可供購買的商品信息和已經(jīng)注冊的會(huì)員信息。為什么需要這個(gè)類呢?大家想一想,在面向?qū)ο蟮脑O(shè)計(jì)中,我們的數(shù)據(jù)比較多,肯定不能零散地到處定義、任意修改,這樣會(huì)使得系統(tǒng)的聚合程度太低,容易出現(xiàn)很多錯(cuò)誤,并且難以進(jìn)行后期功能擴(kuò)展和錯(cuò)誤修改,所以我們要把用到的一些公有的數(shù)據(jù)進(jìn)行歸類,然后放在一個(gè)類中,并且在該類中提供
5、對這些數(shù)據(jù)進(jìn)行操作的方法。 (3)Menu類:用于顯示及處理各級菜單。既然我們設(shè)計(jì)的是一個(gè)購物系統(tǒng),那么即使再簡單,也需要一個(gè)基本的菜單,用來和用戶進(jìn)行交互,由于菜單的比較多,并且各級菜單之間層層相連,所以我們需要對菜單進(jìn)行統(tǒng)一管理,故而出現(xiàn)了菜單類。注意,這里的菜單只是一些頂層的菜單顯示和基本的功能調(diào)用,具體底層的算法還是需要更加底層的類來實(shí)現(xiàn)的。 (4)Manager類:用于存儲(chǔ)用戶的賬戶和密碼。既然我們需要用戶登錄,那么肯定需要一個(gè)單獨(dú)的類來管理用戶的賬戶和密碼,從而使系統(tǒng)的獨(dú)立性更強(qiáng)一些。本次設(shè)計(jì)的用戶只有一個(gè)賬戶和密碼,只允許修改賬
6、戶和密碼,但是不允許注冊。 (5)VerifyEqual類:用于驗(yàn)證登錄信息。這個(gè)類相當(dāng)于是把登錄這項(xiàng)功能抽象成了一個(gè)類,這個(gè)實(shí)現(xiàn)其實(shí)并不是非常必要,但是為了使得系統(tǒng)功能劃分更加清晰,所以設(shè)計(jì)了此類,用來對登錄信息和已有的賬戶和密碼進(jìn)行校驗(yàn),從而給出校驗(yàn)結(jié)果。 (6)CustManagement類:用于客戶信息的管理,該類實(shí)現(xiàn)了底層的一些功能,比如說查詢、修改、增加等。當(dāng)我們進(jìn)入到客戶信息管理這個(gè)菜單的時(shí)候,肯定需要對客戶信息進(jìn)行許多操作,為了方便管理這些操作,并考慮到后續(xù)的擴(kuò)展性,這里把客戶信息管理的所有功能都抽象出來,放在此類中,上一級菜
7、單通過調(diào)用該類中的方法實(shí)現(xiàn)客戶信息的管理。 (7)Pay類:用于處理購物和結(jié)算操作。該類和上面的類存在的原理基本一致,當(dāng)客戶選擇進(jìn)行購物的時(shí)候,肯定要有很多操作,比如說買什么、多少錢、付款、找零等,這些功能比較零碎,所以我們對其進(jìn)行集中管理,從而抽象出該類,對購物和結(jié)算的菜單選項(xiàng)的底層算法進(jìn)行實(shí)現(xiàn),上一級菜單通過調(diào)用該類的方法實(shí)現(xiàn)購物和結(jié)算功能,并且可以返回上一級菜單。 (8)GiftManagement類:用于處理抽獎(jiǎng)活動(dòng)的相關(guān)功能。這個(gè)類和(6)、(7)中的類存在的理由基本一致,該類對抽獎(jiǎng)活動(dòng)進(jìn)行了統(tǒng)一管理,上一級菜單只需要通過調(diào)用該類的
8、方法就可以實(shí)現(xiàn)抽獎(jiǎng)的功能。 (9)Gift類:用于管理禮物。既然設(shè)計(jì)了抽獎(jiǎng)環(huán)節(jié),那么肯定需要禮物,那么我們會(huì)給出什么樣的禮物呢,我們總不能每一樣禮物都詳細(xì)列出來吧,這樣十分冗余,也很麻煩,所以我們干脆抽象出一個(gè)禮物類,把禮物的一些屬性:禮物名稱和價(jià)格等保存成該類的成員變量,然后就可以很方便的管理該類,需要什么樣的禮物就直接新建一個(gè)禮物對象,然后對該對象的屬性進(jìn)行修改和管理即可,這樣的實(shí)現(xiàn)類似于一個(gè)接口,但是又和接口完全不一樣,功能差不多。 總之,上面的類都是經(jīng)過一些功能模塊劃分后抽象出來的,有些地方也并不一定合理,主要還是需要看需求,根據(jù)不同
9、的需求制定不同的方案。在這里,我想就”Gift類“再強(qiáng)調(diào)一點(diǎn),這個(gè)類的設(shè)計(jì)十分符合面向?qū)ο蟮乃枷?,舉個(gè)例子來看,如果購物系統(tǒng)中需要很多禮物,比如手機(jī)、電腦、移動(dòng)電源等,那么如果我們一個(gè)個(gè)寫這些禮物,會(huì)使得系統(tǒng)代碼十分冗余,因?yàn)槎Y物的屬性基本一樣,所以我們就可以抽象成一個(gè)類,從而在需要什么禮物的時(shí)候只定義一個(gè)對象,然后賦予一定的屬性即可,比如需要手機(jī)、電腦,那么我們只需要new一個(gè)Gift類的對象,然后在需要手機(jī)的時(shí)候設(shè)置其屬性為手機(jī),在需要電腦的時(shí)候設(shè)置其屬性為電腦,需要什么設(shè)置什么即可,這樣就使得我們的代碼得到了簡化,也使得結(jié)構(gòu)比較清晰。在更為復(fù)雜的系統(tǒng)中,其實(shí)禮物用接口來實(shí)現(xiàn)更為合理,這樣
10、就可以根據(jù)該接口實(shí)現(xiàn)不同的禮物類,從而滿足不同的需求,就類似于我們的電腦上的USB接口,只需要這個(gè)接口,我們就可以插上很多各種各樣的外圍設(shè)備,道理差不多。2. 購物系統(tǒng)的類之間的關(guān)系和流程(用圖示法表示) 下圖是我用Microsoft Office Visio 2003畫圖工具畫出的這9個(gè)類之間的關(guān)系。 從上圖中可以清晰地看出來各類之間的關(guān)系,大致關(guān)系和流程如下所述: (1)StartSMS類是啟動(dòng)類,內(nèi)含main方法,這個(gè)類里面定義了VerifyEqual類和Data類的對象,用來存儲(chǔ)數(shù)據(jù)和驗(yàn)證信息,同時(shí)Data類
11、中包含了Manager類,用來存儲(chǔ)預(yù)存的用戶賬號信息,然后在main方法中通過一定的邏輯,去調(diào)用Menu類中的showLoginMenu()方法,用于處理一級菜單-登錄修改流程; (2)如果登錄成功,就調(diào)用Menu類中的showMainMenu()方法,用于處理二級菜單-購物系統(tǒng)的主流程,如果登錄失敗3次,就直接退出系統(tǒng); (3)在Menu類中的showMainMenu()方法中,通過選擇不同的二級菜單選項(xiàng),從而調(diào)用Menu類中的showCustMMenu()方法來處理客戶信息管理流程或者調(diào)用Menu類中的showSendMenu()方法來處
12、理抽獎(jiǎng)活動(dòng)流程,亦或者調(diào)用Pay類中的calcPrice()方法來處理購物結(jié)算流程; (4)如果選擇了二級菜單中的客戶信息管理選項(xiàng),那么就會(huì)調(diào)用Menu類中的showCustMMenu()方法,這個(gè)方法會(huì)調(diào)用CustManagement類中的各種方法,用以處理客戶信息管理的不同操作; (5)如果選擇了二級菜單中的購物結(jié)算選項(xiàng),那么就會(huì)調(diào)用Pay類中的calcPrice()方法,從而處理購物結(jié)算的流程,注意在Pay類中的getDiscount()方法是用來根據(jù)客戶會(huì)員信息來計(jì)算打折率的; (6)如果選擇了二級菜單中的真
13、情回饋選項(xiàng),即抽獎(jiǎng)活動(dòng),那么就會(huì)調(diào)用Menu類中的showSendMenu()方法,這個(gè)方法會(huì)調(diào)用GiftManagement類中的各種方法,用以處理抽獎(jiǎng)活動(dòng)的不同操作; 注意到在CustManagement類和GiftManagement類中都有一個(gè)returnLastMenu()方法,該方法是用來返回上一級菜單使用的。3. 代碼實(shí)現(xiàn) 需要說明的一點(diǎn)是這些代碼都應(yīng)該放在cn.itcast包下。 3.1 StartSMS類javaview plaincopy1. package cn.itcast
14、; 2. import java.util.Scanner; 3. /*4. * 該類是這個(gè)系統(tǒng)的主方法類,用于啟動(dòng)購物系統(tǒng)5. * 6. * author 7. * 8. */9. publicclass StartSMS 10. /*11. * 空構(gòu)造方法12.
15、60;* 13. */14. public StartSMS() 15. 16. /*17. * 系統(tǒng)主方法18. * 19. * param args20.
16、; */21. publicstaticvoid main(String args) 22. / 創(chuàng)建已有的數(shù)據(jù)類的對象,并初始化已有的商品信息和顧客信息23. Data data = new Data(); 24. data.initial();
17、 25. / 創(chuàng)建菜單類的對象26. Menu menu = new Menu(); 27. / 這里將初始化的已有數(shù)據(jù)信息送給了菜單對象28. menu.setData( 29.
18、160; data.goodsName, 30. data.goodsPrice, 31.
19、; data.custNo, 32. data.custBirth, 33. data.custScore); 34. /
20、60;顯示一級菜單,即登錄界面35. menu.showLoginMenu(); 36. / 該標(biāo)志用來判斷是否發(fā)生了系統(tǒng)操作錯(cuò)誤,當(dāng)操作不當(dāng)?shù)臅r(shí)候flag為假,從而退出系統(tǒng),默認(rèn)為無錯(cuò)誤37. boolean flag = true; 38. / 處理整個(gè)系統(tǒng)的流程39. do 40. / 發(fā)生操作錯(cuò)誤,退出系統(tǒng)41. if (!flag)
21、 42. break; 43. / 創(chuàng)建驗(yàn)證用戶登錄的賬戶和密碼是否正確的類的對象,這里只創(chuàng)建對象,并沒有執(zhí)行驗(yàn)證方法44. VerifyEqual verifyequal = new VerifyEqual(); 45. / 輸入一級菜單中的選擇46. &
22、#160; Scanner scanner = new Scanner(System.in); 47. int i = scanner.nextInt(); 48. / 根據(jù)用戶對一級菜單的選擇做出不同的響應(yīng),注意這里就是經(jīng)典的switch-case的用法49. switch (i) 50. case1: / 用戶選擇"登錄系統(tǒng)"51. /
23、160;定義計(jì)數(shù)器,表示用戶最多只能嘗試3次,3次輸入錯(cuò)誤直接退出系統(tǒng)52. int j = 3; 53. / 處理登錄系統(tǒng)的流程54. do 55. if (verifyequal.verify(data.manager.username, 56.
24、160; data.manager.password) 57. / 用戶登錄成功,顯示購物二級菜單!58.
25、60; menu.showMainMenu(); 59. break; 60.
26、; 61. if (j != 1) 62. / 用戶輸入有誤,還沒有達(dá)到3次,允許重新輸入63. System.out.println(&quo
27、t;n用戶名和密碼不匹配,請重新輸入:"); 64. else 65. / 3次嘗試結(jié)束,設(shè)置退出標(biāo)志,并退出do-while循環(huán)66. &
28、#160; System.out.println("n您沒有權(quán)限進(jìn)入系統(tǒng)!謝謝!"); 67.
29、0; flag = false; 68. break; 69. 70. / 每輸入一次將計(jì)數(shù)器減1,用于表示
30、已經(jīng)嘗試了多少次71. j-; 72.
31、;while (true); 73. break; 74. case2: / 用戶選擇"更改管理員信息"75. if (verifyequal.verify(data.manager.username, 76.
32、; data.manager.password) 77. / 輸入新信息前要先驗(yàn)證原來的信息,此處表示已經(jīng)驗(yàn)證成功78.
33、160; System.out.print("請輸入新的用戶名:"); 79. data.manager.username = scanner.next()
34、; 80. System.out.print("請輸入新的密碼:"); 81.
35、 data.manager.password = scanner.next(); 82. System.out.println("用戶名和密碼
36、已更改!"); 83. / 信息更改成功,選擇下一步的操作84. System.out.println("n請選擇,輸入數(shù)字:"); 85. &
37、#160; else 86. / 信息驗(yàn)證失敗,設(shè)置退出標(biāo)志87. System.out.println(&quo
38、t;抱歉,你沒有權(quán)限修改!"); 88. flag = false; 89.
39、160; 90. break; 91. case3: / 用戶選擇"退出"92. System.out.println("謝謝您的使用!"); 93.
40、; System.exit(0); 94. break; 95. default: / 一級菜單輸入錯(cuò)誤,需要重新選擇96.
41、160; System.out.print("n輸入有誤!請重新選擇,輸入數(shù)字: "); 97. break; 98. 99. while (flag); 100.
42、60; 101. 3.2 Data類javaview plaincopy1. package cn.itcast; 2. /*3. * 存放購物系統(tǒng)的初始化數(shù)據(jù)的數(shù)據(jù)類,該類只是存放了已有的商品信息和顧客信息4. * 5. * author 6. * 7. */8. publicclass Data
43、160;9. /*10. * 默認(rèn)構(gòu)造方法,初始化變量,由于都是數(shù)組對象或類對象,所以都需要采用new11. * 12. */13. public Data() 14. goodsName = new St
44、ring50 15. goodsPrice = newdouble50 16. custNo = newint100 17.
45、0; custBirth = new String100; 18. custScore = newint100 19. manager &
46、#160;= new Manager() 20. 21. /*22. * 初始化該類的數(shù)據(jù)23. * 24. */25. publicvoid initial() 26. /*=添加了初始的7種商品信息=*/27. &
47、#160; goodsName 0 = "addidas運(yùn)動(dòng)鞋" 28. goodsPrice0 = 880D; 29. goodsName 1 = "Kappa網(wǎng)球裙&q
48、uot; 30. goodsPrice1 = 200D; 31. goodsName 2 = "網(wǎng)球拍" 32. goodsPrice2 = 780D;
49、160; 33. goodsName 3 = "addidasT恤" 34. goodsPrice3 = 420.77999999999997D; 35. goodsName 4
50、 = "Nike運(yùn)動(dòng)鞋" 36. goodsPrice4 = 900D; 37. goodsName 5 = "Kappa網(wǎng)球" 38.
51、;goodsPrice5 = 45D; 39. goodsName 6 = "KappaT恤" 40. goodsPrice6 = 245D; 41. /*=添加了初始的7個(gè)顧客信息=*/42.
52、0; custNo 0 = 1900; 43. custBirth0 = "08/05" 44. custScore0 = 2000; 45. &
53、#160; custNo 1 = 1711; 46. custBirth1 = "07/13" 47. custScore1 = 4000; 48.
54、0; custNo 2 = 1623; 49. custBirth2 = "06/26" 50. custScore2 = 5000; 51. &
55、#160; custNo 3 = 1545; 52. custBirth3 = "04/08" 53. custScore3 = 2200; 54.
56、0; custNo 4 = 1464; 55. custBirth4 = "08/16" 56. custScore4 = 1000; 57. &
57、#160; custNo 5 = 1372; 58. custBirth5 = "12/23" 59. custScore5 = 3000; 60.
58、0; custNo 6 = 1286; 61. custBirth6 = "12/21" 62. custScore6 = 10080; 63.
59、 64. /*=定義該類所擁有的變量=*/65. public String goodsName / 商品的名稱66. publicdouble goodsPrice; / 商品的價(jià)格67. publicint custNo / 顧客的會(huì)員號68.
60、public String custBirth / 顧客的生日69. publicint custScore / 顧客的積分70. public Manager manager / 管理員類,僅僅存儲(chǔ)了管理員的用戶名和密碼71. 3.3 Manager類javaview
61、plaincopy1. package cn.itcast; 2. /*3. * 管理員類,僅僅存儲(chǔ)了管理員的用戶名和密碼4. * 5. * author6. * 7. */8. publicclass Manager 9. /*10. * 設(shè)置默認(rèn)的用戶名和密碼11. * 12.
62、 */13. public Manager() 14. username = "itcast" 15. password = "itcast" 16.
63、60; 17. /*=定義該類所擁有的變量=*/18. public String username; / 用戶名19. public String password; / 密碼20. 3.4 VerifyEqual類javaview plaincopy1. package cn.itcast;
64、;2. import java.util.Scanner; 3. /*4. * 驗(yàn)證用戶登錄的賬戶和密碼是否正確的類5. * 6. * author7. * 8. */9. publicclass VerifyEqual 10. /*11. * 空構(gòu)造方法12. * 13.
65、0; */14. public VerifyEqual() 15. 16. /*17. * 執(zhí)行驗(yàn)證的方法18. * 19. * param s 用于驗(yàn)證的正確的用戶名20.
66、0; * param s1 用于驗(yàn)證的正確的密碼21. * return22. */23. publicboolean verify(String s, String s1) 24. / 由用戶輸入用戶名25. &
67、#160;System.out.print("請輸入用戶名:"); 26. Scanner scanner = new Scanner(System.in); 27. String s2 = scanner.next(); 28. / 由用戶
68、輸入密碼29. System.out.print("請輸入密碼:"); 30. scanner = new Scanner(System.in); 31. String s3 = scan
69、ner.next(); 32. / 判斷用戶輸入的信息是否和已有的信息一致33. return s2.equals(s) && s1.equals(s3); 34. 35. 3.5 Menu類javaview plaincopy1. package cn.itcast; 2. import java.util.Scanne
70、r; 3. /*4. * 菜單類,用于顯示所有級菜單供用戶選擇5. * 6. * author7. * 8. */9. publicclass Menu 10. /*11. * 空構(gòu)造方法12. * 13. */14. public&
71、#160;Menu() 15. 16. /*17. * 設(shè)置菜單類中的數(shù)據(jù)信息18. * 19. * param as20. * param ad21.
72、160; * param ai22. * param as123. * param ai124. */25. publicvoid setData(String as, double ad, int ai, String as1, int ai1)&
73、#160; 26. goodsName = as; 27. goodsPrice = ad; 28. custNo
74、0; = ai; 29. custBirth = as1; 30. custScore = ai1; 31. 32. /*33.
75、0; * 顯示一級菜單,即登錄界面34. * 35. */36. publicvoid showLoginMenu() 37. System.out.println("nnttt 歡迎使用itcast購物管理系統(tǒng)1.0版nn");&
76、#160; 38. System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *&
77、#160;* * * * * * * * *n"); 39. System.out.println("tttt 1. 登 錄 系 統(tǒng)nn"); 40. System.out.println("t
78、ttt 2. 更 改 管 理 員 信 息nn"); 41. System.out.println("tttt 3. 退 出nn"); 42. System.out.println("* * *&
79、#160;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n"); 43.
80、; System.out.print("請選擇,輸入數(shù)字:"); 44. 45. /*46. * 顯示二級菜單,即系統(tǒng)的主菜單,這個(gè)方法里面包含了對這個(gè)菜單處理的所有流程47. * 48. */49. publicvoid
81、60;showMainMenu() 50. / 顯示二級菜單,即系統(tǒng)的主菜單51. System.out.println("nntttt歡迎使用購物管理系統(tǒng)n"); 52. System.out.println("* * * * * * *
82、* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n"); 53. Sy
83、stem.out.println("tttt 1. 客 戶 信 息 管 理n"); 54. System.out.println("tttt 2. 購 物 結(jié) 算n"); 55. System.out.p
84、rintln("tttt 3. 真 情 回 饋n"); 56. System.out.println("tttt 4. 注 銷n"); 57. System.out.println("* * * *
85、60;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n"); 58. / 用戶選擇服務(wù)項(xiàng)目59. &
86、#160; System.out.print("請選擇,輸入數(shù)字:"); 60. Scanner scanner = new Scanner(System.in); 61. / 設(shè)置標(biāo)志用于控制循環(huán)62. boolean flag = false; 63. do
87、60; 64. String s = scanner.next(); 65. / 用戶選擇"客戶信息管理"66. if (s.equals("1") 67. / 顯示客戶信息管理菜單并處理這個(gè)菜單的整個(gè)流程,當(dāng)這個(gè)流程處理完68.
88、; showCustMMenu(); 69. break; 70. 71. / 用戶選擇"購物結(jié)算"72. if (s.equals("2") 73.
89、/ 定義購物結(jié)算類的對象,并處理整個(gè)購物結(jié)算的流程74. Pay pay = new Pay(); 75. pay.setData(goodsN
90、ame, goodsPrice, custNo, custBirth, custScore); 76. pay.calcPrice(); 77. break; 78. &
91、#160; 79. / 用戶選擇"真情回饋"80. if (s.equals("3") 81. / 處理真情回饋的整個(gè)處理流程82. showSendGMenu(); 83. break; 84.
92、160; 85. / 用戶選擇"注銷"86. if (s.equals("4") 87. / 顯示一級菜單,此時(shí)會(huì)返回至StartSMS類中的一級菜單處理流程88. showLoginM
93、enu(); 89. break; 90. 91. System.out.print("輸入錯(cuò)誤,請重新輸入數(shù)字:"); 92.
94、 flag = false; 93. while (!flag); 94. 95. /*96. * 顯示三級菜單-客戶信息管理,并處理所有客戶信息管理的流程97.
95、60; * 98. */99. publicvoid showCustMMenu() 100. System.out.println("購物管理系統(tǒng) > 客戶信息管理n"); 101. System.out.prin
96、tln("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n"); &
97、#160;102. System.out.println("tttt 1. 顯 示 所 有 客 戶 信 息n"); 103. System.out.println("tttt 2. 添 加 客 戶 信
98、60;息n"); 104. System.out.println("tttt 3. 修 改 客 戶 信 息n"); 105. System.out.println("tttt 4. 查 詢 客 戶
99、0;信 息n"); 106. System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * *&
100、#160;* * * * * * * * * * * *n"); 107. System.out.print("請選擇,輸入數(shù)字或按'n'返回上一級菜單:"); 108. Scanner scann
101、er = new Scanner(System.in); 109. boolean flag = true; 110. do 111. / 創(chuàng)建客戶信息管理對象,并設(shè)置數(shù)據(jù),這里的數(shù)據(jù)還是原始的那些數(shù)據(jù)112. CustManagement custmanagement = n
102、ew CustManagement(); 113. custmanagement.setData(goodsName, goodsPrice, custNo, custBirth, custScore); 114. S
103、tring s = scanner.next(); 115. / 客戶選擇"顯示所有客戶信息"116. if (s.equals("1") 117. custmanagement.show(); 118. break;
104、;119. 120. / 客戶選擇"添加客戶信息"121. if (s.equals("2") 122. custmanagement.add()
105、; 123. break; 124. 125. / 客戶選擇"修改客戶信息"126. if (s.equals("3") 127.
106、60; custmanagement.modify(); 128. break; 129. 130. / 客戶選擇"查詢客戶信息"131. if (s.equals("4") 132. &
107、#160; custmanagement.search(); 133. break; 134. 135. / 客戶選擇"返回上一級菜單"136. if (s.equals("n") 137.
108、0; showMainMenu(); 138. break; 139. 140.
109、0; System.out.println("輸入錯(cuò)誤, 請重新輸入數(shù)字:"); 141. flag = false; 142. while (!flag); 143.
110、60; 144. /*145. * 顯示三級菜單-真情回饋,并處理所有真情回饋的流程146. * 147. */148. publicvoid showSendGMenu() 149. System.out.println("購
111、物管理系統(tǒng) > 真情回饋n"); 150. System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * *
112、 * * * * * * * * * * * * * *n"); 151. System.out.println("tttt 1. 幸 運(yùn) 大 放 送n"); 152.
113、 System.out.println("tttt 2. 幸 運(yùn) 抽 獎(jiǎng)n"); 153. System.out.println("tttt 3. 生 日 問 候n"); 154. Syst
114、em.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n&quo
115、t;); 155. System.out.print("請選擇,輸入數(shù)字或按'n'返回上一級菜單:"); 156. Scanner scanner = new Scanner(System.in); 157. / 創(chuàng)建禮物管理對象,并設(shè)置數(shù)據(jù),這里的數(shù)據(jù)還
116、是原始的那些數(shù)據(jù)158. GiftManagement giftmanagement = new GiftManagement(); 159. giftmanagement.setData(goodsName, goodsPrice, custNo, custBirth, custScore);
117、; 160. boolean flag = true; 161. do 162. String s = scanner.next(); 163. / 客戶選擇"幸運(yùn)大放送"164. if (s.equals("1")
118、0;165. giftmanagement.sendGoldenCust(); 166. break; 167. 168. / 客戶選擇"幸運(yùn)抽獎(jiǎng)"169. if
119、160;(s.equals("2") 170. giftmanagement.sendLuckyCust(); 171. break; 172.
120、0;173. / 客戶選擇"生日問候"174. if (s.equals("3") 175. giftmanagement.sendBirthCust(); 176. break; 177.
121、60; 178. / 客戶選擇"返回上一級菜單"179. if (s.equals("n") 180. showMainMenu(); 181. break; 182.
122、60; 183. System.out.println("輸入錯(cuò)誤, 請重新輸入數(shù)字:"); 184. flag
123、60;= false; 185. while (!flag); 186. 187. /*=定義該類所擁有的變量=*/188. public String goodsName / 商品的名稱189. publicdouble
124、;goodsPrice; / 商品的價(jià)格190. publicint custNo / 顧客的會(huì)員號191. public String custBirth / 顧客的生日192. publicint custScore / 顧客的積分193. 3.6 CustManagement類javaview plaincopy1. package cn.itcast; 2. import java.util.Scanner; 3. /*4. * 顧客信息管理類5. * 6.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 配送在物流中的作用
- 中醫(yī)護(hù)理學(xué)(第5版)課件 第九章針灸療法與護(hù)理3十四經(jīng)脈及其常用腧穴
- 交通運(yùn)輸行業(yè)智能交通與船舶導(dǎo)航方案
- 科技項(xiàng)目研究可行性研究報(bào)告
- 家庭智能家居控制系統(tǒng)的
- 股份制改革流程及關(guān)鍵文書編寫指南
- 家庭園藝種植技術(shù)手冊
- 項(xiàng)目申請書和可行性研究報(bào)告的關(guān)系
- 工廠項(xiàng)目可行性報(bào)告
- 企業(yè)人力資源管理師(三級)實(shí)操練習(xí)試題及答案
- 2024年江蘇省南通市中考英語試卷(含答案解析)
- 中職教育一年級上學(xué)期電子與信息《二極管的單向?qū)щ娦浴方虒W(xué)課件
- 《凝練的視覺符號》(新課標(biāo)美術(shù)上課)-圖文
- 幼兒園小班語言活動(dòng)《拔蘿卜》課件
- 英文繪本故事Brown.Bear.Brown.Bear.What.Do.You.See
- 讀后續(xù)寫人與自然類我?guī)椭従育埦盹L(fēng)后花園重建順利融入當(dāng)?shù)厣鐓^(qū)講義-2024屆高三英語二輪復(fù)習(xí)
- CJJ28-2014城鎮(zhèn)供熱管網(wǎng)工程施工及驗(yàn)收規(guī)范
- 2024年彌勒市東風(fēng)農(nóng)場有限責(zé)任公司招聘筆試參考題庫附帶答案詳解
- JB-T 8168-2023 脈沖電容器及直流電容器
- (正式版)JBT 7248-2024 閥門用低溫鋼鑄件技術(shù)規(guī)范
- 滬教版八年級數(shù)學(xué)-代數(shù)方程1-學(xué)生
評論
0/150
提交評論