




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院軟件設(shè)計(jì)模式與體系結(jié)構(gòu)課程作業(yè)(一) (2016/2017學(xué)年 第二學(xué)期)學(xué)生姓名: 雷 君學(xué)生專(zhuān)業(yè): 軟件工程學(xué)生班級(jí): 142601學(xué)生學(xué)號(hào): 201426170108指導(dǎo)教師: 王 飛 目 錄實(shí)驗(yàn)一1工廠方法模式汽車(chē)保險(xiǎn)1抽象工廠方法模式房屋信息3實(shí)驗(yàn)二6組合模式空軍指揮系統(tǒng)6適配器模式客戶信息驗(yàn)證8實(shí)驗(yàn)三11橋接模式幾何立體體積11訪問(wèn)者模式計(jì)算機(jī)部件銷(xiāo)售軟件14實(shí)驗(yàn)四17策略模式整數(shù)排序17狀態(tài)模式交通信號(hào)燈19實(shí)驗(yàn)五21MVC軟件體系結(jié)構(gòu)21實(shí)驗(yàn)一工廠方法模式汽車(chē)保險(xiǎn)【實(shí)驗(yàn)內(nèi)容】 在例2.3的汽車(chē)保險(xiǎn)管理應(yīng)用程序?qū)嵗咸砑右粋€(gè)名為L(zhǎng)uxuryCarInsura
2、nce的類(lèi),并且,該類(lèi)要與其他的類(lèi)一樣能執(zhí)行相應(yīng)的功能。【添加代碼】1、 添加LuxuryCarInsurance類(lèi): public class LuxuryCarInsurance implements AutoInsurance private String description; public String getInsuranceDescription() description = " LuxuryCarInsurance: nnLuxuryCarInsurance coverage pays for medical bills" + " lost w
3、ages, rehabilitation, treatment and/or" + " funeral costs for anyone injured or killed " + " by your car. Such coverage will also pay for" + " pain and suffering damages when a third " + " party successfully sues. " return description; 2、 添加LuxuryCarPolic
4、yProducer類(lèi): public class LuxuryCarPolicyProducer implements PolicyProducer public AutoInsurance getPolicyObj() /Fruit factory() return new LuxuryCarInsurance(); 3、 添加GUI: (1)public static final String LUXURYCAR = "LuxuryCar Insurance" (2)cmbInsuranceType.addItem(LUXURYCAR); (3)if (type.equ
5、als(LUXURYCAR) pp=new LuxuryCarPolicyProducer(); 【實(shí)驗(yàn)結(jié)果】 【實(shí)驗(yàn)小結(jié)】使用工廠方法訪問(wèn)并且初始化合適的類(lèi)的對(duì)象,簡(jiǎn)化了應(yīng)用程序,應(yīng)用程序本身不再含有大量的條件語(yǔ)句判定何時(shí)選取哪個(gè)類(lèi)。其次,工廠方法實(shí)現(xiàn)了一些特殊的某個(gè)類(lèi)的機(jī)制,尤其是層次結(jié)構(gòu)不同的類(lèi)需要不同的初始化方法的時(shí)候。抽象工廠方法模式房屋信息【實(shí)驗(yàn)內(nèi)容】 在例2.4中設(shè)計(jì)并且實(shí)現(xiàn)了豪華(Super)和中等(Medum)別墅(House)和公寓(Condo)的查詢(xún)。要求在該設(shè)計(jì)的基礎(chǔ)上,增加一個(gè)新的類(lèi)SemiDetacher(半獨(dú)立式樓宇),并且編寫(xiě)代碼實(shí)現(xiàn)相應(yīng)的查詢(xún)功能?!咎砑哟a】
6、1、添加SemiDetacher類(lèi): public interface SemiDetacher public String getSemiDetacherInfo(); public String getSemiDetacherFeatures(); 2、 添加SuperSemiDetacher類(lèi): public class SuperSemiDetacher implements SemiDetacher private String name; public SuperSemiDetacher(String cName) name = cName; public String getSe
7、miDetacherInfo() return "superSemiDetacher.html" public String getSemiDetacherFeatures() return "Super SemiDetacher " 3、添加MediumSemiDetacher類(lèi): public class MediumSemiDetacher implements SemiDetacher private String name; public MediumSemiDetacher(String cName) name = cName; public
8、 String getSemiDetacherInfo() return "MediumSemiDetacher.html" public String getSemiDetacherFeatures()return "Medium SemiDetacher " 4、 添加BuildingFactory: public abstract SemiDetacher getSemiDetacher();5、添加MediumBuildingFactory: public SemiDetacher getSemiDetacher() return new Med
9、iumSemiDetacher("Medium SemiDetacher"); 6、 添加SuperBuildingFactory: public SemiDetacher getSemiDetacher() return new SuperSemiDetacher("Super SemiDetacher"); 7、添加GUI: (1)public static final String SEMIDETACHER = "SemiDetacher" (2)cmbHouseType.addItem(SEMIDETACHER); (3)if
10、 (type.equals(AbstractFactoryGUI.SEMIDETACHER) SemiDetacher cd = bf.getSemiDetacher(); String fileNm = cd.getSemiDetacherInfo(); putHouseInfoToScreen(fileNm); 【實(shí)驗(yàn)結(jié)果】 【實(shí)驗(yàn)小結(jié)】 當(dāng)客戶對(duì)象要從一個(gè)相關(guān)的產(chǎn)品組中創(chuàng)建一個(gè)對(duì)象,而沒(méi)有必要知道到底要?jiǎng)?chuàng)建哪個(gè)對(duì)象時(shí),可以使用抽象工廠模式。如果不使用抽象工廠模式,創(chuàng)建對(duì)象的條件語(yǔ)句將會(huì)出現(xiàn)在客戶程序的許多地方,程序的克維護(hù)性差。抽象工廠模式幫助程序員避免了以上所述的重復(fù)的、復(fù)雜的條件語(yǔ)句
11、,提供必要的創(chuàng)建對(duì)象的接口。實(shí)驗(yàn)二組合模式空軍指揮系統(tǒng)【實(shí)驗(yàn)內(nèi)容】 在例3.3的設(shè)計(jì)中,添加一個(gè)空軍大隊(duì)(Wing)類(lèi),該類(lèi)與Squadron、Group類(lèi)是平行的,因此應(yīng)該繼承了AirUnit類(lèi)。該類(lèi)的寫(xiě)法與Squadron或者Group類(lèi)是類(lèi)似的,所不同的是一個(gè)Wing有216中類(lèi)型的飛機(jī)。【添加代碼】1、 添加Wing類(lèi): public class Wing extends AirUnit public static final String FEATURES = "A Wing with 216 aircrafts" Airforce fighters = new
12、Airforce162; Airforce bombers = new Airforce18; Airforce transporters= new Airforce18; Airforce eAircrafts = new Airforce18; public Wing() for(int k=0;k<162;k+) / need 162 fighters for(int k=0;k<18;k+) / need 18 bombers for(int k=0;k<18;k+) / need 18 transporters for(int k=0;k<18;k+) / n
13、eed 18 eAirplanes public String getDescription() return FEATURES; public String fight() return super.fight(); 2、 添加GUI: (1)private String AirForceUnit = "SQUADRON", "GROUP", "WING" (2)add(1, 6, airCheckBox13); (3)else if (m=13) && (ckBoxStates13 = SELECTED) unit
14、 = new Wing(); airUnits.attach(unit); unitInfo = unit.getDescription(); 【實(shí)驗(yàn)結(jié)果】 【實(shí)驗(yàn)小結(jié)】 我們這樣來(lái)簡(jiǎn)單的理解組合模式,組合模式就是把一些現(xiàn)有的對(duì)象或者元素,經(jīng)過(guò)組合后組成新的對(duì)象,新的對(duì)象提供內(nèi)部方法,可以讓我們很方便的完成這些元素或者內(nèi)部對(duì)象的訪問(wèn)和操作。我們也可以把組合對(duì)象理解成一個(gè)容器,容器提供各種訪問(wèn)其內(nèi)部對(duì)象或者元素的API,我們只需要使用這些方法就可以操作它了。適配器模式客戶信息驗(yàn)證【實(shí)驗(yàn)內(nèi)容】 關(guān)于例3.7的用于驗(yàn)證客戶信息的離架產(chǎn)品類(lèi)CusInfo Validation的功能擴(kuò)展問(wèn)題。要求使用適
15、配器模式。【添加代碼】1、 添加InformationAdapter: public boolean isValidEmailAddr(String EmailAddr) boolean isValid=true; int a=0; int b=0; String ns = EmailAddr.trim(); String nStr = ns.replaceAll("s1,", ""); int len = nStr.length(); if ( (nStr.charAt(0) >='A')&&(nStr.charA
16、t(0) >='Z')| (nStr.charAt(0) >='a')&&(nStr.charAt(0) >='z') && (len>=5) ) for(int m=0; m<len; m+) if( (Character.isLetter(nStr.charAt(m)=true)&& ( Character.isDigit(nStr.charAt(m)=true) ) isValid=false; if(nStr.charAt(m)='') a+;
17、if(nStr.charAt(m)>='0'&&nStr.charAt(m)<='9') b+; if(m=0)&&(Character.isLetter(nStr.charAt(m)=false) isValid=false; if(a!=1) isValid=false; if(b=0) isValid=false; return isValid; else return false; 2、 添加CusInfoValidator: public abstract boolean isValidEmailAddr(S
18、tring EmailAddr);3、添加GUI: (1)private JTextField txtCustomerName, txtAddress,txtZip,txtCellPhone,txtSSN,txtEmailAddr; (2)private JLabel lblCustomerName, lblAddress,lblZip, lblCellphone, lblSSN, lblEmailAddr; (3)txtEmailAddr=new JTextField(20); (4)lblEmailAddr= new JLabel("EmailAddr :"); (5)
19、UIPanel.add(lblEmailAddr); UIPanel.add(txtEmailAddr); (6)gridbag.setConstraints(lblEmailAddr, gbc); gbc.gridx = 1; gbc.gridy = 5; gridbag.setConstraints(txtEmailAddr, gbc); gbc.gridx = 0; gbc.gridy = 6; (7)public String getEmailAddr() return txtEmailAddr.getText(); (8)String emailaddr = getEmailAddr
20、(); (9)if(cusInfo.isValidEmailAddr(emailaddr)=false) dataTextArea.append("nWrong format of EmailAddr."); else dataTextArea.append("nCorrect format of EmailAddr."); 【實(shí)驗(yàn)結(jié)果】 【實(shí)驗(yàn)小結(jié)】 通過(guò)適配器,客戶端可以調(diào)用同一接口,因而對(duì)客戶端來(lái)說(shuō)是透明的。這樣做更簡(jiǎn)單、更直接、更緊湊;復(fù)用了現(xiàn)存的類(lèi),解決了現(xiàn)存類(lèi)和復(fù)用環(huán)境要求不一致的問(wèn)題;將目標(biāo)類(lèi)和適配者類(lèi)解耦,通過(guò)引入一個(gè)適配器類(lèi)重用現(xiàn)有的適
21、配者類(lèi),而無(wú)需修改原有代碼; 一個(gè)對(duì)象適配器可以把多個(gè)不同的適配者類(lèi)適配到同一個(gè)目標(biāo),也就是說(shuō),同一個(gè)適配器可以把適配者類(lèi)和它的子類(lèi)都適配到目標(biāo)接口。對(duì)于對(duì)象適配器來(lái)說(shuō),更換適配器的實(shí)現(xiàn)過(guò)程比較復(fù)雜。實(shí)驗(yàn)三橋接模式幾何立體體積【實(shí)驗(yàn)內(nèi)容】在例3.14中的設(shè)計(jì)實(shí)驗(yàn)層次類(lèi)部分中,添加Ellipsoid(橢球)類(lèi),并且實(shí)現(xiàn)針對(duì)橢球體積的計(jì)算?!咎砑哟a】1、添加橢球類(lèi): public class Ellipsoid implements GeoForm private double aRadius; private double bRadius; private double cRadiu
22、s; public Ellipsoid (double aRadius, double bRadius, double cRadius) this.aRadius = aRadius; this.bRadius = bRadius; this.cRadius = cRadius; public double computeVolume() double volume = 1.3333333*3.1415926* aRadius* bRadius* cRadius; return volume; 2、添加GUI:(1)private JTextField txtEllipsoidRadius_a
23、; private JTextField txtEllipsoidRadius_b; private JTextField txtEllipsoidRadius_c; (2)public static final String ELLIPSOID = "Ellipsoid"(3)cmbGeoForm.addItem(ELLIPSOID);(4)else if(selection.equals(ELLIPSOID) ) String a_radius = txtEllipsoidRadius_a.getText(); String b_radius = txtEllipsoi
24、dRadius_b.getText(); String c_radius = txtEllipsoidRadius_c.getText(); double a = Double.valueOf(a_radius); double b =Double.valueOf(b_radius); double c = Double.valueOf(c_radius); form = new Ellipsoid(a, b, c);(5)else if(selection.equals(ELLIPSOID) ) displayNewGUI( getTypePanel(ELLIPSOID);(6)else i
25、f(type.equals(ELLIPSOID) JLabel lblRadius_a = new JLabel("Input Radius a"); JLabel lblRadius_b = new JLabel("Input Radius b"); JLabel lblRadius_c = new JLabel("Input Radius c"); txtEllipsoidRadius_a = new JTextField(8); txtEllipsoidRadius_b = new JTextField(8); txtEllip
26、soidRadius_c = new JTextField(8); GridBagLayout gridbag = new GridBagLayout(); typePanel.setLayout(gridbag); GridBagConstraints gbc = new GridBagConstraints(); typePanel.add(lblRadius_a); typePanel.add(lblRadius_b); typePanel.add(lblRadius_c); typePanel.add(txtEllipsoidRadius_a); typePanel.add(txtEl
27、lipsoidRadius_b); typePanel.add(txtEllipsoidRadius_c); typePanel.add(lblMeasure); typePanel.add(cmbMeasure); gbc.insets.top = 5; gbc.insets.bottom = 5; gbc.insets.left = 1; gbc.insets.right = 8; gbc.anchor = GridBagConstraints.WEST; gbc.gridx = 0; gbc.gridy = 0; gridbag.setConstraints(lblRadius_a, g
28、bc); gbc.gridx = 1; gbc.gridy = 0; gridbag.setConstraints(txtEllipsoidRadius_a, gbc); gbc.gridx = 0; gbc.gridy = 1; gridbag.setConstraints(lblRadius_b, gbc); gbc.gridx = 1; gbc.gridy = 1; gridbag.setConstraints(txtEllipsoidRadius_b, gbc); gbc.gridx = 0; gbc.gridy = 2; gridbag.setConstraints(lblRadiu
29、s_c, gbc); gbc.gridx = 1; gbc.gridy = 2; gridbag.setConstraints(txtEllipsoidRadius_c, gbc); gbc.gridx = 0; gbc.gridy = 3; gridbag.setConstraints(lblMeasure, gbc); gbc.gridx = 1; gbc.gridy = 3; gridbag.setConstraints(cmbMeasure, gbc); 【實(shí)驗(yàn)結(jié)果】【實(shí)驗(yàn)小結(jié)】 通過(guò)這次實(shí)驗(yàn)我們大概理解了橋接模式,通過(guò)關(guān)聯(lián)“抽象層次類(lèi)”與“具體層次類(lèi)”這一橋梁,將表示兩個(gè)維度的層類(lèi)(
30、數(shù)據(jù)結(jié)構(gòu))粘貼在一起,形成更大的數(shù)據(jù)結(jié)構(gòu),而這種變化又不會(huì)對(duì)現(xiàn)有的類(lèi)產(chǎn)生影響,這種思路的終極想法是將軟件設(shè)計(jì)的抽象部分與實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立的變化。訪問(wèn)者模式計(jì)算機(jī)部件銷(xiāo)售軟件【實(shí)驗(yàn)內(nèi)容】 在例4.5的設(shè)計(jì)中添加一個(gè)類(lèi)SoundBox。該類(lèi)實(shí)現(xiàn)接口ComputerParts,并且其他的計(jì)算機(jī)部件的類(lèi)的結(jié)構(gòu)類(lèi)似?!咎砑哟a】1、添加SoundBox類(lèi): public class SoundBox implements ComputerParts public static final String NAME = "SoundBox"private final dou
31、ble PRICE = 127.00;public static final String FEATURES = "SoundBox. X3K"public String getName()return NAME;public double getPrice() return PRICE; public String getDescription() return FEATURES;public void accept(Visitor v) System.out.println("SoundBox has been visited."); v.visit
32、SoundBox (this); 2、 添加GUI: (1)String compParts= "Case","Motherboard","Microprocessor","Memory", "DriveController","VideoCard","Fan","PowerSupply", "HardDiskDrive","CDDrive","DVDDevice","
33、;Monitor", "Keyboard","Mouse","SoundBox","Assembly","WholePC" (2)for(int k=11; k<17; k+) add(0, k, cPartsk); (3)else if (source = cParts14) states14 = state; else if (source = cParts15) if(state = SELECTED) cParts1.setSelected(true); cParts8.
34、setSelected(true); else if (state = DESELECTED) cParts1.setSelected(false); cParts8.setSelected(false); states15=state; else if (source = cParts16) if(state = SELECTED) cParts0.setSelected(true); for(int k=11; k<15; k+) cPartsk.setSelected(true); else if (state = DESELECTED) cParts0.setSelected(f
35、alse); for(int k=11; k<15; k+) cPartsk.setSelected(false); states16=state; (4)else if (m=14) && (states14 = SELECTED) part = new SoundBox(); msg.add("SoundBox"); 3、添加Visitor: public abstract void visitSoundBox (SoundBox e);4、 添加PriceVisitor: public void visitSoundBox (SoundBox e
36、)price = e.getPrice();partsPrices.add(new Double(price);total += price; 5、添加PartsInfoVisitor: public void visitSoundBox (SoundBox e)partInfo = e.getDescription();allOders = allOders + "n " + partInfo;【實(shí)驗(yàn)結(jié)果】【實(shí)驗(yàn)小結(jié)】 通過(guò)此次實(shí)驗(yàn)讓我們更加深刻的理解了訪問(wèn)者模式,它在處理數(shù)據(jù)結(jié)構(gòu)較穩(wěn)定,但是作用于其上的操作需要經(jīng)常變化的問(wèn)題時(shí)時(shí)非常有效的,因此可以在不改變?cè)摻Y(jié)構(gòu)體中的類(lèi)
37、的基礎(chǔ)上定義一個(gè)新的操作,這個(gè)實(shí)驗(yàn)就是如此,我們只需要添加新的類(lèi),然后調(diào)用accept(pv)方法就可以。實(shí)驗(yàn)四策略模式整數(shù)排序【實(shí)驗(yàn)內(nèi)容】在例4.13的設(shè)計(jì)中的排序策略部分,添加一個(gè)類(lèi)BidirectionaBubbleSort,進(jìn)行“雙向冒泡法排序”,以便擴(kuò)展該排序系統(tǒng)的功能。為了實(shí)現(xiàn)擴(kuò)展功能,需要相應(yīng)地修改Context類(lèi)與客戶圖形界面類(lèi)StrategyGUI?!咎砑哟a】1、 添加BidirBubbleSort類(lèi): public class BidirBubbleSort implements SortAlgorithm public int sort(int nums,Context
38、 ct) ct.startExecution(); int j; int limit = nums.length; int st = -1; while(st < limit) boolean flipped = false; st+; limit-; for(j = st; j < limit; j+) if(numsj > numsj + 1) int T = numsj; numsj = numsj + 1; numsj + 1 = T; flipped = true; if(!flipped) ct.endExecution(); return nums; for(j
39、 = limit; -j >= st;) if(numsj > numsj + 1) int T = numsj; numsj = numsj + 1; numsj + 1 = T; flipped = true; if(!flipped) ct.endExecution(); return nums; ct.endExecution(); return nums; 2、 添加GUI: (1)public static final String BidirBubble= "BidirBubbleSort" (2)cmbAlgorithm.addItem(Bidi
40、rBubble); (3)if (type.equals(BidirBubble) sa = new BidirBubbleSort(); 【實(shí)驗(yàn)結(jié)果】【實(shí)驗(yàn)小結(jié)】 通過(guò)此次實(shí)驗(yàn)讓我們更加理解了策略模式的優(yōu)勢(shì),實(shí)現(xiàn)了高內(nèi)聚低耦合,它的應(yīng)用場(chǎng)景是當(dāng)有多個(gè)僅在行為上不同但是相關(guān)的類(lèi)存在時(shí),采用策略模式提供一個(gè)為一個(gè)類(lèi)配置多種行為之一的方法。此時(shí)增加雙向冒泡排序法時(shí),不需要修改Context類(lèi)的代碼,只需要修改客戶類(lèi)(StrategyGUI)。狀態(tài)模式交通信號(hào)燈【實(shí)驗(yàn)內(nèi)容】在例4.16的設(shè)計(jì)中的交通信號(hào)燈狀態(tài)部分,添加一個(gè)類(lèi)BlueLight,進(jìn)行紅綠黃藍(lán)紅的狀態(tài)變化,以便擴(kuò)展該交通信號(hào)燈系統(tǒng)的狀態(tài)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025民宿裝修合同
- 2025年房屋租賃合同范本北京x
- 市政工程審計(jì)管理試題及答案
- 2025年工程經(jīng)濟(jì)市場(chǎng)需求試題及答案
- 項(xiàng)目質(zhì)量審計(jì)流程試題及答案
- 水電設(shè)備升級(jí)改造技術(shù)試題及答案
- 經(jīng)濟(jì)法重要考點(diǎn)試題及答案指導(dǎo)
- 實(shí)務(wù)導(dǎo)向水利水電工程試題及答案
- 城市公共資源管理方法試題及答案
- 行政管理經(jīng)濟(jì)法概論重點(diǎn)試題及答案解析
- 月子中心產(chǎn)康部產(chǎn)后恢復(fù)流程解析
- 中國(guó)郵政集團(tuán)有限公司國(guó)企招聘筆試真題2024
- 社會(huì)福利 課件匯 高和榮 第6-11章 社會(huì)福利客體-社會(huì)福利的挑戰(zhàn)
- 2025年安徽合肥東部新中心建設(shè)管理辦公室招聘2人歷年高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 熱電材料與器件-深度研究
- 2024-2025學(xué)年統(tǒng)編版道德與法治八年級(jí)下冊(cè)第四單元檢測(cè)卷(含答案)
- GB/T 2812-2024頭部防護(hù)通用測(cè)試方法
- 呼吸機(jī)濕化的護(hù)理
- 總公司與分公司隸屬關(guān)系證明-企業(yè)管理
- GB/T 12690.20-2024稀土金屬及其氧化物中非稀土雜質(zhì)化學(xué)分析方法第20部分:稀土氧化物中微量氟、氯的測(cè)定離子色譜法
- 大學(xué)英語(yǔ)(閱讀與思政)(青島理工大學(xué)(臨沂))知到智慧樹(shù)章節(jié)答案
評(píng)論
0/150
提交評(píng)論