![數(shù)據(jù)結(jié)構(gòu)課實(shí)訓(xùn)報(bào)告報(bào)告.doc_第1頁](http://file1.renrendoc.com/fileroot_temp2/2020-3/14/b47f98e3-0666-4c19-a858-28f460e20c27/b47f98e3-0666-4c19-a858-28f460e20c271.gif)
![數(shù)據(jù)結(jié)構(gòu)課實(shí)訓(xùn)報(bào)告報(bào)告.doc_第2頁](http://file1.renrendoc.com/fileroot_temp2/2020-3/14/b47f98e3-0666-4c19-a858-28f460e20c27/b47f98e3-0666-4c19-a858-28f460e20c272.gif)
![數(shù)據(jù)結(jié)構(gòu)課實(shí)訓(xùn)報(bào)告報(bào)告.doc_第3頁](http://file1.renrendoc.com/fileroot_temp2/2020-3/14/b47f98e3-0666-4c19-a858-28f460e20c27/b47f98e3-0666-4c19-a858-28f460e20c273.gif)
![數(shù)據(jù)結(jié)構(gòu)課實(shí)訓(xùn)報(bào)告報(bào)告.doc_第4頁](http://file1.renrendoc.com/fileroot_temp2/2020-3/14/b47f98e3-0666-4c19-a858-28f460e20c27/b47f98e3-0666-4c19-a858-28f460e20c274.gif)
![數(shù)據(jù)結(jié)構(gòu)課實(shí)訓(xùn)報(bào)告報(bào)告.doc_第5頁](http://file1.renrendoc.com/fileroot_temp2/2020-3/14/b47f98e3-0666-4c19-a858-28f460e20c27/b47f98e3-0666-4c19-a858-28f460e20c275.gif)
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)結(jié)構(gòu)實(shí)訓(xùn)報(bào)告題目: 用C實(shí)現(xiàn)外部流文件的引用 一、課程設(shè)計(jì)題目:有訂單文件如下:貨號(hào)品名進(jìn)口單價(jià)數(shù)量開單日期生產(chǎn)單位LX-750影碟機(jī)TRUE5900.0041996-8-10松下電器公司YU-120彩電FALSE6700.0041996-10-10上海電視廠AX-120音響TRUE3100.0051995-10-11日立電器公司DV-430影碟機(jī)TRUE2680.0031996-9-30三星公司FZ-901取暖器FALSE318.0061996-9-5福利電器廠LB-133音響TRUE4700.0081995-12-30索尼公司SY-701電飯鍋FALSE258.00101996-8-19愛德電器廠NV-920錄音機(jī)TRUE1750.0061996-7-20先鋒電器公司要求:1) 實(shí)現(xiàn)訂單的輸入功能2) 實(shí)現(xiàn)訂單的輸出功能3) 實(shí)現(xiàn)訂單的刪除功能4) 實(shí)現(xiàn)訂單的查詢功能(可以按照貨號(hào)、品名、單價(jià)查詢)二、問題描述:1、外部流文件的引用。2、輸入,輸出控件化。三、問題分析以明確的無歧義的陳述說明課程設(shè)計(jì)的任務(wù),強(qiáng)調(diào)的是程序要做什么?我們小組認(rèn)為,本題的要求是在于用JAVA實(shí)現(xiàn)對(duì)外部數(shù)據(jù)庫的調(diào)用,更新,排序以及刪除。在一開始,我們打算用本學(xué)期所學(xué)習(xí)的數(shù)據(jù)結(jié)構(gòu)方面的知識(shí)再結(jié)合上學(xué)期所學(xué)的JAVA控件知識(shí)來實(shí)現(xiàn)這道題目(見圖),但是在調(diào)試過程中遇到了很大的問題,不得不中途換別的方式進(jìn)行算法實(shí)現(xiàn)。并明確規(guī)定:1、輸入的形式和輸入值的范圍;數(shù)據(jù)庫表格的形式輸入,并依照數(shù)據(jù)庫表格字段值的規(guī)定來規(guī)定輸入值。2、輸出的形式;用JAVA語言來進(jìn)行窗口式的調(diào)用。3、程序所能達(dá)到的功能;在JAVA界面進(jìn)行對(duì)外部數(shù)據(jù)庫的簡(jiǎn)單應(yīng)用。比如進(jìn)行查詢,更新,排序以及刪除。4、算法涉及的基本理論分析:窗口界面是基于事件的程序,用戶對(duì)具體圖形組件的選擇和激活,產(chǎn)生事件。在程序中創(chuàng)建監(jiān)聽器類并注冊(cè)事件,并實(shí)例化。5、題目研究和實(shí)現(xiàn)的價(jià)值。我們小組認(rèn)為,本題的研究?jī)r(jià)值在于,此題目設(shè)計(jì)多個(gè)程序的跨平臺(tái)應(yīng)用,通過JAVA程序?qū)?shù)據(jù)庫的加載和調(diào)用,實(shí)現(xiàn)后臺(tái)調(diào)用和操作數(shù)據(jù)庫。實(shí)現(xiàn)的價(jià)值是,通過這個(gè)簡(jiǎn)單的程序初步認(rèn)識(shí)到編程這項(xiàng)工作在將來的程序開發(fā)中的作用和價(jià)值。四、算法設(shè)計(jì)1、概要設(shè)計(jì)闡述說明本算法中用到的所有數(shù)據(jù)結(jié)構(gòu)的定義及其含義、主程序的流程以及各程序模塊之間的層次(調(diào)用)關(guān)系。因?yàn)樯婕暗酵獠课募鞯囊茫晕覀冃〗M進(jìn)行的方式是用JAVA命令式的程序?qū)?shù)據(jù)庫進(jìn)行創(chuàng)建,刪除,插入以及查找。我們用了四個(gè)小程序來進(jìn)行對(duì)數(shù)據(jù)庫的調(diào)用,分別是見圖。2、詳細(xì)設(shè)計(jì)(1)實(shí)現(xiàn)概要設(shè)計(jì)中定義的所有數(shù)據(jù)類型;貨號(hào)(char),品名(char),進(jìn)口(boolean),單價(jià)(integer),數(shù)量(integer),開單日期(date),生產(chǎn)單位(char)。(2)所有函數(shù)的接口描述;ListSelectionListener,WindowListener,處理窗口時(shí)間的監(jiān)聽器類。(3)所有函數(shù)的算法描述(只需要寫出偽碼算法);函數(shù)為調(diào)用數(shù)據(jù)庫和對(duì)數(shù)據(jù)庫操作以及構(gòu)造用戶圖形界面。(3)對(duì)主程序和其他模塊也都需要寫出偽碼算法(偽碼算法達(dá)到的詳細(xì)程度建議為:按照偽碼算法可以在計(jì)算機(jī)鍵盤直接輸入高級(jí)程序設(shè)計(jì)語言程序),可采用流程圖 、N S 圖或PAD圖進(jìn)行描述;操作數(shù)據(jù)庫的主程序?yàn)閮蓚€(gè)類,其中try類是對(duì)數(shù)據(jù)庫進(jìn)行加載橋接以及創(chuàng)建,catch類是依照算法的健壯性,對(duì)錯(cuò)誤情況的處理。(4)畫出函數(shù)的調(diào)用關(guān)系圖。無。五、算法實(shí)現(xiàn)創(chuàng)建數(shù)據(jù)表程序J_AccessCreateTableimport java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;public class J_AccessCreateTable public static void main(String args) try Class.forName(microsoft.jdbc.sqlserver.SQLServerDriver);/加載JDBC-ODBC橋驅(qū)動(dòng)程序 Connection c/通過數(shù)據(jù)源與數(shù)據(jù)庫建立起連接 =DriverManager.getConnection(jdbc:odbc:OD); Statement s=c.createStatement();/創(chuàng)建SQL語句對(duì)象 /創(chuàng)建數(shù)據(jù)庫表:訂單 s.executeUpdate( Create table 訂單(+ 貨號(hào) char(10) CONSTRAINT authIndex PRIMARY KEY, + 品名 char(10), + 進(jìn)口 boolean, + 單價(jià) integer, + 數(shù)量 integer, + 開單日期 char(12) + 生產(chǎn)單位 char(14); s.close(); c.close(); System.out.println(創(chuàng)建數(shù)據(jù)庫表:訂單); catch (Exception e) System.err.println(異常:+e.getMessage(); 增加一個(gè)訂單程序J_AccessInsertRecordimport java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;public class J_AccessInsertRecord public static void main(String args) try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);/加載JDBC-ODBC橋驅(qū)動(dòng)程序 Connection c/通過數(shù)據(jù)源與數(shù)據(jù)庫建立起連接 =DriverManager.getConnection(jdbc:odbc:OD); Statement s=c.createStatement();/創(chuàng)建SQL語句對(duì)象 s.executeUpdate( insert into 訂單 valuse(LX,影碟機(jī),FALSE,5900.00,5,1996-6-6,長(zhǎng)虹集團(tuán)); s.close(); c.close(); System.out.println(給數(shù)據(jù)庫表訂單增加記錄); catch(Exception e) System.err.println(異常:+e.getMessage(); 刪除數(shù)據(jù)表J_AccessDropTableimport java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;public class J_AccessDropTable public static void main(String args) try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);/加載JDBC-ODBC橋驅(qū)動(dòng)程序 Connection c/通過數(shù)據(jù)源與數(shù)據(jù)庫建立起連接 =DriverManager.getConnection(jdbc:odbc:OD); Statement s=c.createStatement();/創(chuàng)建SQL語句對(duì)象 s.executeUpdate(drop table 訂單); s.close(); c.close(); System.out.println(刪除數(shù)據(jù)表:訂單); catch (Exception e) System.err.println(異常:+e.getMessage(); 數(shù)據(jù)表查詢并且按指定字段名排序J_AccessShowRecordimport java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;public class J_AccessShowRecord public static void mb_ShowRecord(ResultSet r) try r.last(); System.out.println(數(shù)據(jù)庫表共有+r.getRow()+行記錄); r.beforeFirst(); while(r.next() System.out.println(第+r.getRow()+行記錄為:); catch(Exception e) System.err.println(異常+e.getMessage(); public static void main(String args) try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connection c =DriverManager.getConnection(jdbc:odbc:OD); Statement s=c.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet r1=s.executeQuery(select 貨號(hào) from 訂單); ResultSet r2=s.executeQuery(select 品名 from 訂單); ResultSet r3=s.executeQuery(select 單價(jià) from 訂單); mb_ShowRecord(r1); mb_ShowRecord(r2); mb_ShowRecord(r3); s.close(); c.close(); catch (Exception e) System.err.println(異常:+e.getMessage(); 以下為交互式界面圖形窗口以及SWING組件的程序import java.util.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import javax.swing.table.*;import java.io.*;public class OrderBookJFrame extends JFrame implements ListSelectionListener,WindowListener public String filename; /文件名 public TreeSet tbook; /訂單 public JList list; /列表框 public DefaultListModel listModel; /默認(rèn)列表框模型 public JTable table; /表格組建 public DefaultTableModel tableModel; /默認(rèn)表格模型 public String nam; /品名 public String product; /貨號(hào) public boolean imp; /是否為進(jìn)口 public String dat; /開單日期 public String compan; /生產(chǎn)單位 public double pric; /單價(jià) public double amoun; public OrderBookJFrame(String filename) /構(gòu)造用戶圖形界面 super(訂單); Dimension dim =getToolkit().getScreenSize(); /獲得屏幕分辨率 this.setBounds(dim.width/4,dim.height/4,dim.width/2,dim.height/2); /窗口居中 this.addWindowListener(this);/注冊(cè)窗口事件監(jiān)聽器 this.filename=filename; tbook=new TreeSet(); /從指定文件中讀取對(duì)象信息 this.readFromFile();JSplitPane splitter_h=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); /分割窗格 splitter_h.setDividerLocation(60); /設(shè)置分割條的位置 this.getContentPane().add(splitter_h); JSplitPane splitter_v=new JSplitPane(JSplitPane.VERTICAL_SPLIT);/垂直分割 splitter_v.setDividerLocation(dim.height/4); this.listModel=new DefaultListModel(); /默認(rèn)列表框模式 this.listModel.addElement(全部); this.getFamilyName(); /列表框中加電話薄中所有姓氏 this.list=new JList(listModel); /創(chuàng)建列表框 this.list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); /設(shè)置單選模式 this.list.addListSelectionListener(this); /列表框注冊(cè)選擇事件監(jiān)聽器 splitter_h.add(new JScrollPane(this.list); /添加在滾動(dòng)窗格中 splitter_h.add(splitter_v); String columnNames=貨號(hào),品名,進(jìn)口,單價(jià),數(shù)量,開單日期,生產(chǎn)單位; /表格各列的中文標(biāo)題 this.tableModel=new DefaultTableModel(columnNames,0); /制定列標(biāo)題,0行 this.table=new JTable(tableModel); /創(chuàng)建空表格,有列標(biāo)題 this.list.setSelectedIndex(0); /列表框選中第一項(xiàng) splitter_v.add(new JScrollPane(table); splitter_v.add(new orderJPanel(); this.setVisible(true); public OrderBookJFrame() this(friends.dat); /指定默認(rèn)文件名 public void valueChanged(ListSelectionEvent e) / 選擇事件處理方法 if(e.getSource()=this.list) /選中列表框的數(shù)據(jù)項(xiàng)時(shí)觸發(fā) String selected=(String)list.getSelectedValue(); /返回列表框選中數(shù)據(jù)項(xiàng)對(duì)象 this.searchByName(selected); /返回選中姓氏的對(duì)象并更新表格 public void getFamilyName() / JList 訂單中中的所有首字母 if(!tbook.isEmpty() Iterator it=tbook.iterator(); /返回一個(gè)迭代器對(duì)象 while(it.hasNext() /使用迭代器遍歷一個(gè)集合 Order f=(Order)it.next(); /返回后繼元素 String familyname = f.getName().charAt(0)+ ; / 獲得首字母 if(!this.listModel.contains(familyname) this.listModel.addElement(familyname); /列表框模型添加數(shù)據(jù)項(xiàng) private void searchByName(String familyname) /更新表格,參數(shù)指定姓氏 if(!tbook.isEmpty() & familyname!= null & familyname!=) for(int i=this.tableModel.getRowCount()-1;i=0;i-) /清空表格 this.tableModel.removeRow(i); Iterator it=tbook.iterator(); while(it.hasNext() Order f =(Order)it.next(); if(familyname=全部 | f.getName().charAt(0)=familyname.charAt(0) this.tableModel.addRow(f.toArray(); /表格添加一行,參數(shù)數(shù)組指定各列值 /私有內(nèi)部類,構(gòu)造一個(gè)面板,包括兩個(gè)文本行和添加,刪除,查找等按鈕 private class FriendJPanel extends JPanel implements ActionListener private JTextField text_name; /文本行,輸入品名 private JTextField text_code; /文本行,輸入貨號(hào) private JTextField text_impo; private JTextField text_price; private JTextField text_amount; private JTextField text_data; private JTextField text_company; public FriendJPanel() this.setLayout(new GridLayout(3,1); JPanel p1=new JPanel(); this.add(p1); p1.add(new JLabel(貨號(hào)); this.text_name=new JTextField(電視機(jī),20); p1.add(text_name); JPanel p2=new JPanel(); this.add(p2); p2.add(new JLabel(品名); this.text_code=new JTextField(xy-730,20); p2.add(text_code); this.setLayout(new GridLayout(3,1); JPanel p3=new JPanel(); this.add(p3); p2.add(new JLabel(是否為進(jìn)口); this.text_code=new JTextField(true,20); p2.add(text_code); JPanel p4=new JPanel(); this.add(p4); p2.add(new JLabel(單價(jià)); this.text_code=new JTextField(3400,20); p2.add(text_code); this.setLayout(new GridLayout(3,1); JPanel p5=new JPanel(); this.add(p5); p2.add(new JLabel(數(shù)量); this.text_code=new JTextField(1,20); p2.add(text_code); JPanel p6=new JPanel(); this.add(p6); p2.add(new JLabel(開單日期); this.text_code=new JTextField(2010-7-11,20); p2.add(text_code); this.setLayout(new GridLayout(3,1); JPanel p7=new JPanel(); this.add(p7); p2.add(new JLabel(生產(chǎn)單位); this.text_code=new JTextField(松下集團(tuán),20); p2.add(text_code); JPanel p8=new JPanel(); this.add(p8); JButton button_add=new JButton(添加); p3.add(button_add); button_add.addActionListener(this); JButton button_delete=new JButton(刪除); p3.add(button_delete); button_delete.addActionListener(this); JButton button_search=new JButton (按貨號(hào)查找); p3.add(button_search); button_search.addActionListener(this); public void actionPerformed(ActionEvent e) /單擊事件處理程序 if(e.getActionCommand().equals(添加) /單擊添加按鈕 String name=text_name.getText(); String code=text_code.getText(); String impo=text_impo.getText(); String price=text_price.getText(); String amount=text_amount.getText(); String data=text_data.getText(); String company=text_company.getText(); if(name!=) Order f=new Order(product,nam,imp,pric,amoun,dat,compan); if(!tbook.contains(f) /訂單不能插入重復(fù)對(duì)象 tbook.add(f); /添加對(duì)象 String familyname=name.charAt(0)+; /返回品名的第一個(gè)字符 if(list.getSelectedValue().equals(familyname) tableModel.addRow(f.toArray(); else if(!listModel.contains(familyname) listModel.addElement(familyname); list.setSelectedValue(familyname,true); /設(shè)置列表框中選中項(xiàng) else JOptionPane.showMessageDialog(null,不能添加空對(duì)象或重復(fù)對(duì)象+ f.toString(),提示,JOptionPane.DEFAULT_OPTION);/使用標(biāo)準(zhǔn)對(duì)話框顯示提示信息 else JOptionPane.showMessageDialog(null,請(qǐng)輸入姓名,提示,JOptionPane.DEFAULT_OPTION); if(e.getActionCommand().equals(貨號(hào)碼查詢) searchByCode(text_code.getText(); /查找貨號(hào) if(e.getActionCommand().equals(刪除) /表格當(dāng)前選中行號(hào) int i=table.getSelectedRow(); int yes=JOptionPane.showConfirmDialog(null,刪除+i+行?, 詢問,JOptionPane.YES_NO_OPTION); /詢問對(duì)話框,包括yes和no按鈕 if(yes=0) /單擊yes String name=(String)table.getValueAt(i,0); String code =(String)table.getValueAt(i,0); tbook.remove(new Order(product,nam,imp,pric,amoun,dat,compan); /訂單中刪除對(duì)象 tableModel.removeRow(i); /表格中刪除一行 listModel.removeElement(name.charAt(0)+);/列表框中刪除指定姓氏 /OrderJPanel內(nèi)部類結(jié)束 private void readFromFile() /從指定文件中讀取已有對(duì)象 try FileInputStream fin =new FileInputStream(this.filename); /文件字節(jié)輸入流 ObjectInputStream objin=new ObjectInputStream(fin); /對(duì)象字節(jié)輸入流 while(true) /輸入流未結(jié)束時(shí) try Order f=(Order)objin.readObject(); /讀取一個(gè)對(duì)象 tbook.add(f); /添加到訂單 catch(ClassNotFoundException e) /輸入流結(jié)束時(shí)拋出該異常 break; objin.close(); /先關(guān)閉對(duì)象流 fin.close(); /再關(guān)閉文件流 catch(IOException e) /若文件不存在,則不讀取 public void writeToFile() /向指定文件寫入訂單中的所有對(duì)象 try FileOutputStream fout =new FileOutputStream(this.filename);/文件字節(jié)輸出流 ObjectOutputStream objout=new ObjectOutputStream(fout); /對(duì)象字節(jié)輸出流 if(!tbook.isEmpty() Iterator it=tbook.iterator(); while(it.hasNext() objout.writeObject(Order)it.next(); /寫入一個(gè)對(duì)象 objout.close(); fout.close(); catch(IOException ex) public void windowClosing(WindowEvent e) /關(guān)閉窗口事件處理方法 /this.writeToFile(); /將訂單所有對(duì)象寫入指定文件 System.exit(0); /應(yīng)用程序終止執(zhí)行 public void windowOpened(WindowEvent e) public void windowActivated(WindowEvent e) public void windowDeactivated(WindowEvent e) public void windowClosed(WindowEvent e) public void windowIconified(WindowEvent e) public void windowDeiconified(WindowEvent e) public static void main(String args ) throws IOException new OrderBookJFrame(); /默認(rèn)文件名為“friends.dat” 六、軟件測(cè)試這里的測(cè)試主要是基于功能的黑盒測(cè)試,所以首先提出測(cè)試的功能點(diǎn),然后給出測(cè)試數(shù)據(jù)(包括正確的輸入及其輸出結(jié)果和含有錯(cuò)誤
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒教師的教學(xué)故事六篇
- 全國新型電力系統(tǒng)(配電自動(dòng)化)職業(yè)技能競(jìng)賽參考試題庫500題(含答案)
- 《預(yù)防未成年人犯罪法》知識(shí)考試題庫80題(含答案)
- 大學(xué)衛(wèi)生學(xué)課件
- 汽車租賃合同詳細(xì)條款正規(guī)范本
- 滄州房屋租賃合同
- 棉花運(yùn)輸合同范本
- 標(biāo)準(zhǔn)的員工勞動(dòng)合同
- 大數(shù)據(jù)分析平臺(tái)建設(shè)及運(yùn)營合同
- 海外房產(chǎn)銷售代理合同范本
- 護(hù)理人文知識(shí)培訓(xùn)課件
- 建筑工程施工安全管理課件
- 2025年春新人教版數(shù)學(xué)七年級(jí)下冊(cè)教學(xué)課件 7.2.3 平行線的性質(zhì)(第1課時(shí))
- 安徽省合肥市2025年高三第一次教學(xué)質(zhì)量檢測(cè)地理試題(含答案)
- 2025年新合同管理工作計(jì)劃
- 統(tǒng)編版八年級(jí)下冊(cè)語文第三單元名著導(dǎo)讀《經(jīng)典常談》閱讀指導(dǎo) 學(xué)案(含練習(xí)題及答案)
- 風(fēng)光儲(chǔ)儲(chǔ)能項(xiàng)目PCS艙、電池艙吊裝方案
- TTJSFB 002-2024 綠色融資租賃項(xiàng)目評(píng)價(jià)指南
- 浙江省杭州市2023年中考一模語文試題及答案
- 上海市楊浦區(qū)2022屆初三中考二模英語試卷+答案
- 高中英語原版小說整書閱讀指導(dǎo)《奇跡男孩》(wonder)-Part one 講義
評(píng)論
0/150
提交評(píng)論