A3.pdf

‫ﺗﻤﺮﯾﻦ ﺷﻤﺎره ‪3‬‬
‫ﻣﻬﻠﺖ ﺗﺤﻮﯾﻞ‪ 15 :‬اردﯾﺒﻬﺸﺖ ‪1392‬‬
‫ﻗﺒﻞ ار اﻧﺠﺎم ﺗﻤﺮﯾﻦﻫﺎ ﻣﻮارد زﯾﺮ را ﺑﻪ دﻗﺖ ﻣﻄﺎﻟﻌﻪ ﺑﻔﺮﻣﺎﯾﯿﺪ‪:‬‬
‫‪ ‬در ﺧﻂ او‪‬ل ﻫﺮ ﯾﮏ از ﺑﺮﻧﺎﻣﻪﻫﺎ ﺷﻤﺎرهي داﻧﺸﺠﻮﯾﯽ و ﻧﺎم ﺧﻮد را ﺑﻪ ﺻﻮرت زﯾﺮ ﺑﻨﻮﯾﺴﯿﺪ‪:‬‬
‫)‪//ID: Your Student ID (First Last Name‬‬
‫‪ ‬ﺑﻌﺪ از ﻧﻮﺷﺘﻦ ﺗﻤﺮﯾﻦﻫﺎ ﻓﺎﯾﻞ ﻣﺮﺑﻮﻃﻪ را در ﯾﮏ ﭘﻮﺷﻪ ﺑﺎ ﻧﺎم ‪ assignment#assNom-StudentID‬ﻗﺮار دﻫﯿﺪ و ﺳﭙﺲ اﯾﻦ ﭘﻮﺷﻪ‬
‫را ﻓﺸﺮده ﮐﻨﯿﺪ‪ .‬ﻓﺎﯾﻞ ﻓﺸﺮده را ﺑﻪ آدرس ‪ [email protected]‬ارﺳﺎل ﻧﻤﺎﯾﯿﺪ‪.‬‬
‫‪ ‬ﻋﻨﻮان ﻣﯿﻞ ﺑﻪ ﺻﻮرت ‪ assignment#assNom-StudentID‬ﺑﺎﺷﺪ‪.‬‬
‫‪ ‬اﺷﺘﺒﺎه در ﻧﺎم ﮔﺬاري ﻓﺎﯾﻞ ﻣﻮﺟﺐ ﻋﺪم ﺗﺼﺤﯿﺢ ﺗﻤﺮﯾﻦ ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫‪ ‬ﻧﺤﻮهي ﺧﻮاﻧﺪن ورودي و ﻧﻮﺷﺘﻦ ﺧﺮوﺟﯽ ﺑﺎﯾﺪ رﻋﺎﯾﺖ ﺷﻮد‪.‬‬
‫‪ ‬ﮔﺬاﺷﺘﻦ ﮐﺎﻣﻨﺖﻫﺎ و اﺳﻢﮔﺬاري ﻣﻨﺎﺳﺐ ﺧﻮد ﻗﺴﻤﺘﯽ از ﻧﻤﺮه ﺳﻮال اﺳﺖ‪.‬‬
‫‪ ‬ﺑﻪ ازاي ﻫﺮ روز ﺗﺎﺧﯿﺮ در ارﺳﺎل ﺗﻤﺮﯾﻦﻫﺎ ‪ %20‬از ﻧﻤﺮه ﺗﻤﺮﯾﻦ ﮐﺎﺳﺘﻪ ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫‪ ‬ﺳﻮاﻻت ﺧﻮد را ﺑﺎ اﻧﺘﺨﺎب ﻣﻮﺿﻮع ﻣﻨﺎﺳﺐ در ‪ [email protected]‬ﻣﻄﺮح ﻧﻤﺎﯾﯿﺪ‪.‬‬
‫ﺑﻪ ﺷﻤﺎ ﭘﺮوژه اي داده ﺷﺪه ﺗﺎ ﺳﯿﺴﺘﻢ ﯾﮏ ﺑﺎﻧﮏ ﺟﺪﯾﺪ اﻟﺘﺎﺳﯿﺲ را ﭘﯿﺎده ﺳﺎزي ﮐﻨﯿﺪ‪.‬‬
‫در اﯾﻦ ﺑﺎﻧﮏ ﻣﯽ ﺗﻮان ﯾﮑﯽ از ﭼﻬﺎر ﻧﻮع ﺣﺴﺎب ﮐﻮﺗﺎه ﻣﺪت‪ ،‬ﺑﻠﻨﺪ ﻣﺪت‪ ،‬ﺟﺎري و ﻗﺮض اﻟﺤﺴﻨﻪ را اﯾﺠﺎد ﮐﺮد ﮐﻪ ﻫﺮﮐﺪام‬
‫وﯾﮋﮔﯽ ﻫﺎي ﺧﺎص ﺧﻮد را دارﻧﺪ‪.‬‬
‫در اﺑﺘﺪا ﯾﮏ ﮐﻼس ‪ Account‬را ﭘﯿﺎده ﺳﺎزي ﻣﯽ ﮐﻨﯿﺪ ﮐﻪ ﻫﺮ ﺷﯽ از اﯾﻦ ﮐﻼس ﻣﻌﺮف ﯾﮏ ﺣﺴﺎب ﺑﺎﻧﮑﯽ اﺳﺖ‪ .‬اﯾﻦ ﮐﻼس‬
‫داراي ﺗﺎﺑﻊ ﻫﺎي زﯾﺮ اﺳﺖ‪:‬‬
‫‪:Deposit‬‬
‫ﻣﻘﺪاري را ﺑﻪ ﻣﻮﺟﻮدي ﺣﺴﺎب وارﯾﺰ ﻣﯽ ﮐﻨﺪ‪.‬‬
‫‪:Withdraw‬‬
‫ﻣﻘﺪاري را از ﻣﻮﺟﻮدي ﺣﺴﺎب ﺑﺮداﺷﺖ ﻣﯽ ﮐﻨﺪ اﻟﺒﺘﻪ ﺑﺮ ﺣﺴﺐ ﻧﻮع ﺣﺴﺎب و ﻣﻘﺪار ﻣﻮﺟﻮدي ﻣﻤﮑﻦ اﺳﺖ‬
‫ﻗﺎدر ﺑﻪ ﺑﺮداﺷﺖ وﺟﻪ ﻧﺒﺎﺷﯿﻢ‪ .‬ﺗﺎﺑﻊ ﺑﺎﯾﺪ ﻗﺎدر ﺑﻪ اﻋﻼم اﯾﻦ ﺑﺎﺷﺪ ﮐﻪ آﯾﺎ اﯾﻦ ﻋﻤﻠﯿﺎت ﺑﺎ ﻣﻮﻓﻘﯿﺖ اﻧﺠﺎم ﺷﺪه اﺳﺖ ﯾﺎ ﺧﯿﺮ‪.‬‬
‫‪:getBlance‬‬
‫ﻣﻮﺟﻮدي ﺣﺴﺎب را ﺑﺮﻣﯽﮔﺮداﻧﺪ‪.‬‬
‫‪:getID‬‬
‫ﺷﻤﺎره ﺣﺴﺎب را ﺑﺮﻣﯽﮔﺮداﻧﺪ‪.‬‬
‫‪:benefit‬‬
‫ﺑﺮ ﺣﺴﺐ روز اﯾﺠﺎد ﺣﺴﺎب و روزي ﮐﻪ ﻓﺮاﺧﻮاﻧﺪه ﻣﯽ ﺷﻮد ﺳﻮد را ﺑﻪ ﺻﻮرت روز ﺷﻤﺎر ﺣﺴﺎب ﻣﯽ ﮐﻨﺪ‪.‬‬
‫)اﮔﺮ ﺳﻮد ﺳﺎﻻﻧﻪ ‪ r‬ﺑﺎﺷﺪ ﺳﻮد روزاﻧﻪ ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ ‪(r/365‬‬
‫ﺣﺎل ﭼﻬﺎر ﻧﻮع ﺣﺴﺎب ﻣﺎ از ﮐﻼس ‪ Account‬ارث ﻣﯽ ﺑﺮﻧﺪ‪.‬‬
‫‪:ShortTerm‬‬
‫ﺣﺴﺎب ﮐﻮﺗﺎه ﻣﺪت داراي ﺳﻮد ﺳﺎﻻﻧﻪ ‪.%24‬‬
‫ﺣﺪاﻗﻞ ﻣﺎﻧﺪه ﺣﺴﺎب ﺑﺎﯾﺴﺘﯽ ‪ 10000‬واﺣﺪ ﭘﻮﻟﯽ ﺑﺎﺷﺪ‪.‬‬
‫‪:LongTerm‬‬
‫ﺣﺴﺎب ﺑﻠﻨﺪ ﻣﺪت داراي ﺳﻮد ﺳﺎﻻﻧﻪ ‪.%17‬‬
‫ﺣﺪاﻗﻞ ﻣﺎﻧﺪه ﺣﺴﺎب ﺑﺎﯾﺴﺘﯽ ‪ 15000‬واﺣﺪ ﭘﻮﻟﯽ ﺑﺎﺷﺪ‪.‬‬
‫‪:Current‬‬
‫ﺣﺴﺎب ﺟﺎري داراي ﺳﻮد ﺳﺎﻻﻧﻪ ‪.%0‬‬
‫ﺣﺪاﻗﻞ ﻣﺎﻧﺪه ﺣﺴﺎب ﺑﺎﯾﺴﺘﯽ ‪ 0‬واﺣﺪ ﭘﻮﻟﯽ ﺑﺎﺷﺪ‪.‬‬
‫‪) :GharzolHasane‬ﺗﻘﺼﯿﺮ ﺧﺎرﺟﯿﺎﺳﺖ ﮐﻪ ﻗﺮض اﻟﺤﺴﻨﻪ ﻧﺪارن! ‪(‬‬
‫ﺣﺴﺎب ﻗﺮض اﻟﺤﺴﻨﻪ داراي ﺳﻮد ﺳﺎﻻﻧﻪ ‪.%12‬‬
‫ﺣﺪاﻗﻞ ﻣﺎﻧﺪه ﺣﺴﺎب ﺑﺎﯾﺴﺘﯽ ﺑﺮاﺑﺮ ﺑﺎ ﻣﻘﺪار اوﻟﯿﻪاي ﺑﺎﺷﺪ ﮐﻪ ﺑﺎ آن ﺣﺴﺎب اﯾﺠﺎد ﺷﺪه اﺳﺖ‪.‬‬
‫ﺣﺎل ﺑﺎﯾﺪ ﯾﮏ ﮐﻼس دﯾﮕﺮ ﺑﻪ ﻧﺎم ‪ Bank‬ﭘﯿﺎده ﺳﺎزي ﮐﻨﯿﺪ ات ﺑﺎ آن ﮐﻞ ﺳﯿﺴﺘﻢ رو ﮐﻨﺘﺮل ﮐﻨﯿﺪ‪.‬‬
‫در اﯾﻦ ﮐﻼس ﻟﯿﺴﺘﯽ از اﺷﺎره ﮔﺮﻫﺎ ﺑﻪ ﺗﻤﺎﻣﯽ ﺣﺴﺎب ﻫﺎ ﻣﻮﺟﻮد اﺳﺖ‪(Account* accounts) .‬‬
‫ﺗﺎﺑﻊ ‪ getAccount‬ﻫﻢ ﻟﯿﺴﺖ ﺣﺴﺎب ﻫﺎي ﻣﻮﺟﻮد را ﻧﺸﺎن ﻣﯽدﻫﺪ‪.‬‬
‫ﺗﺎﺑﻊ )‪ deposit(ID, cash‬ﻣﻘﺪاري را ﺑﻪ ﺷﻤﺎره ﺣﺴﺎب ﻣﻮرد ﻧﻈﺮ اﺿﺎﻓﻪ ﻣﯽﮐﻨﺪ‪.‬‬
‫ﺗﺎﺑﻊ )‪ withdraw(ID, cash‬ﻣﻘﺪار ﻣﻮرد ﻧﻈﺮ را در ﺻﻮرت اﻣﮑﺎن از ﺷﻤﺎره ﺣﺴﺎب ﻣﻮرد ﻧﻈﺮ اﺿﺎﻓﻪ ﻣﯽ ﮐﻨﺪ‪ .‬در ﺻﻮرت‬
‫ﻣﻮﻓﻘﯿﺖ ﯾﺎ ﻋﺪم ﻣﻮﻓﻘﯿﺖ ﺑﺎﯾﺪ ﻗﺎدر ﺑﻪ اﻋﻼم ان ﺑﺎﺷﺪ‪.‬‬
‫ﺗﺎﺑﻊ ‪ sertition‬ﯾﮏ ﻗﺮﻋﻪ ﮐﺸﯽ ﺑﺮاي دارﻧﺪﮔﺎن ﺣﺴﺎب ﻗﺮض اﻟﺤﺴﻨﻪ اﻧﺠﺎم ﻣﯽ دﻫﺪ‪ .‬اﻣﺘﯿﺎز دﻫﯽ اﯾﻦ ﻗﺮﻋﻪ ﮐﺸﯽ ﺑﻪ اﯾﻦ‬
‫ﺻﻮرت اﺳﺖ ‪" :‬ﻫﺮ ‪20000‬واﺣﺪ ﭘﻮﻟﯽ ﯾﮏ اﻣﺘﯿﺎز" ﭘﺲ اﺣﺘﻤﺎل ﺑﺮﻧﺪه ﺷﺪن ﻫﺮ ﺣﺴﺎب ﺑﺎﯾﺪ ﺑﺎ اﻣﺘﯿﺎز آن ﻣﺘﻨﺎﺳﺐ ﺑﺎﺷﺪ‪ .‬ﺑﻪ‬
‫ﺑﺮﻧﺪه ﻗﺮﻋﻪ ﮐﺸﯽ ‪ 1000000‬واﺣﺪ ﭘﻮﻟﯽ ﺟﺎﯾﺰه داده ﻣﯽ ﺷﺌﺪ ﮐﻪ ﺑﻪ ﺣﺴﺎب او وارﯾﺰ ﻣﯽ ﮔﺮدد‪.‬‬
‫ﺗﺎﺑﻊ ‪ getDate‬ﻫﻢ ﺗﺎرﯾﺦ ﻓﻌﻠﯽ ﺳﯿﺴﺘﻢ را ﺑﺮﻣﯽﮔﺮداﻧﺪ‪.‬‬
‫در ‪ main‬ﺷﻤﺎ ﺗﻨﻬﺎ ﯾﮏ ﺷﯽ از ﮐﻼس ‪ Bank‬اﯾﺠﺎد ﻣﯽ ﺷﻮد‪).‬دﻗﺖ ﮐﻨﯿﺪ ﻓﻘﻂ ﯾﮑﯽ( و ﺑﻪ وﺳﯿﻠﻪ ﻫﻤﯿﻦ ﺷﯽ ﺑﺎﯾﺴﺘﯽ ﺑﺘﻮان‬
‫ﻋﻤﻠﯿﺎت زﯾﺮ را از ﻃﺮﯾﻖ ﮐﻨﺴﻮل اﻧﺠﺎم داد‪:‬‬
‫‪‬‬
‫‪ Create_S_ID_balance‬اﯾﺠﺎد ﺣﺴﺎب ﮐﻮﺗﺎه ﻣﺪت ﺑﺎ ‪ ID‬و ‪ balance‬داده ﺷﺪه‪.‬‬
‫‪‬‬
‫‪ Create_L_ID_balance‬اﯾﺠﺎد ﺣﺴﺎب ﺑﻠﻨﺪ ﻣﺪت ﺑﺎ ‪ ID‬و ‪ balance‬داده ﺷﺪه‪.‬‬
‫‪‬‬
‫‪‬‬
‫‪ Create_C_ID_balance‬اﯾﺠﺎد ﺣﺴﺎب ﺟﺎري ﺑﺎ ‪ ID‬و ‪ balance‬داده ﺷﺪه‪.‬‬
‫‪ Create_G_ID_balance‬اﯾﺠﺎد ﺣﺴﺎب ﻗﺮض اﻟﺤﺴﻨﻪ ﺑﺎ ‪ ID‬و ‪ balance‬داده ﺷﺪه‪.‬‬
‫‪‬‬
‫‪ Increase_ID_Cash‬ﻣﻘﺪار ﻣﻮﺟﻮدي ‪ ID‬را ﺑﻪ اﻧﺪازه ‪ Cash‬اﻓﺰاﯾﺶ ﻣﯽدﻫﺪ‪.‬‬
‫‪‬‬
‫‪ Decrease_ID_Cash‬ﻣﻘﺪار ﻣﻮﺟﻮدي ‪ ID‬را ﺑﻪ اﻧﺪازه ‪ Cash‬ﮐﺎﻫﺶ ﻣﯿﺪﻫﺪ‪.‬‬
‫‪‬‬
‫‪ Set_dd_mm_yy‬ﻟﻄﻒ ﻣﯽﮐﻨﯿﻢ دﺳﺘﯽ ﺑﻪ ﺳﯿﺴﺘﻢ زﻣﺎن ﻓﻌﻠﯽ را اﻋﻼم ﻣﯽ ﮐﻨﯿﻢ‪.‬‬
‫‪‬‬
‫‪ ShowAccount‬ﻟﯿﺴﺖ ﺗﻤﺎﻣﯽ ﺣﺴﺎب ﻫﺎ را ﺑﺎ ‪ ID‬و ‪ 5‬ﻋﻤﻠﯿﺎت آﺧﺮي ﮐﻪ اﻧﺠﺎم داده اﻧﺪ را ﻧﺸﺎن ﻣﯽ‬
‫‪‬‬
‫‪ ShowIDs‬ﺗﻤﺎﻣﯽ ﺷﻤﺎره ﺣﺴﺎب ﻫﺎ را ﻧﻤﺎﯾﺶ ﻣﯽ دﻫﺪ‪.‬‬
‫دﻫﺪ‪.‬‬
‫‪‬‬
‫‪ Sertition‬ﺑﺮاي ﺣﺴﺎب ﻫﺎي ﻗﺮض اﻟﺤﺴﻨﻪ ﯾﮏ ﻗﺮﻋﻪ ﮐﺸﯽ اﻧﺠﺎم ﻣﯽ دﻫﺪ و ﺷﻤﺎره ﺣﺴﺎب ﺑﺮﻧﺪه را‬
‫اﻋﻼم ﻣﯽ ﮐﻨﺪ‪.‬‬
‫ﺗﻮﺟﻬﺎت‪:‬‬
‫‪‬‬
‫زﻣﺎن اوﻟﯿﻪ ﺳﯿﺴﺘﻢ ‪ 1392/1/1‬در ﻧﻈﺮ ﺑﮕﯿﺮﯾﺪ‪.‬‬
‫‪‬‬
‫در ﻫﺮ ﮐﻼس ﺑﺮ ﺣﺴﺐ ﻧﯿﺎز ﻣﯽ ﺗﻮاﻧﯿﺪ ﻣﺘﻐﯿﺮ و ﻣﺘﺪ اﺿﺎﻓﻪ ﺑﺮ ﺻﻮرت ﺳﻮال در ﻧﻈﺮ ﺑﮕﯿﺮﯾﺪ‪.‬‬
‫‪‬‬
‫ﺑﺮاي ﻫﺮ ﮐﻼس وﺟﻮد دو ﻓﺎﯾﻞ ﺟﺪاﮔﺎﻧﻪ ‪ .h‬و ‪ .cpp‬ﺿﺮوري اﺳﺖ‪.‬‬
‫‪‬‬
‫ﺣﺘﻤﺎ ﭼﻨﺪرﯾﺨﺘﯽ و وراﺛﺖ را رﻋﺎﯾﺖ ﮐﻨﯿﺪ‪ .‬در ﻏﯿﺮ اﯾﻦ ﺻﻮرت ﻣﻮﺟﺐ ﮐﺴﺮ ﻧﻤﺮه ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫‪‬‬
‫ﺑﻪ ﻫﻤﺮاه ﮐﺪ ﻓﺎﯾﻞ ‪ UML‬ﺑﺮﻧﺎﻣﻪ را ﻫﻢ در ﻓﺎﯾﻠﯽ ‪ pdf‬ﭘﯿﻮﺳﺖ ﮐﻨﯿﺪ‪).‬ارﺳﺎل ‪ UML‬ﺑﺨﺸﯽ ار ﺳﻮال اﺳﺖ و ﺑﻪ آن ﻧﻤﺮه ﺗﻌﻠﻖ‬
‫‪‬‬
‫ﻣﻮﺟﻮدي ﺣﺴﺎبﻫﺎ را ﺑﻪ ﺻﻮرت ﺻﺤﯿﺢ ذﺧﯿﺮه ﮐﻨﯿﺪ‪ .‬ﻗﺴﻤﺖ اﻋﺸﺎري آﻧﻬﺎ را ﻗﻄﻊ ﮐﻨﯿﺪ‪.‬‬
‫ﻣﯽﮔﯿﺮد‪(.‬‬
‫‪‬‬
‫ﺟﻬﺖ راﻫﻨﻤﺎﯾﯽ ﻫﻢ ﻣﯽ ﺗﻮاﻧﯿﺪ از ﻟﯿﻨﮏﻫﺎي زﯾﺮ اﺳﺘﻔﺎده ﮐﻨﯿﺪ‪:‬‬
‫‪/http://www.cplusplus.com/doc/tutorial/inheritance‬‬
‫‪/http://www.cplusplus.com/doc/tutorial/polymorphism‬‬
‫ﻣﻮﻓﻖ ﺑﺎﺷﯿﺪ ‪‬‬