《數(shù)據(jù)庫(kù)信息管理系統(tǒng)》課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)管理系統(tǒng)
《《數(shù)據(jù)庫(kù)信息管理系統(tǒng)》課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)管理系統(tǒng)》由會(huì)員分享,可在線閱讀,更多相關(guān)《《數(shù)據(jù)庫(kù)信息管理系統(tǒng)》課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)管理系統(tǒng)(24頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、數(shù)據(jù)庫(kù)開發(fā)與實(shí)踐 《數(shù)據(jù)庫(kù)信息管理系統(tǒng)》 課程設(shè)計(jì)報(bào)告 學(xué)院:現(xiàn)代科技學(xué)院 專業(yè):計(jì)算機(jī)科學(xué)與技術(shù) 班級(jí):08-3班 姓名: 學(xué)號(hào): 指導(dǎo)教師: 同組成員: 2011年7月1日 一.開發(fā)背景及目的 學(xué)生成績(jī)管理系統(tǒng)是一個(gè)教育單位不可缺少的部分,它的內(nèi)容對(duì)于學(xué)校的決策者和管理者來說都至關(guān)重要,所以學(xué)生成績(jī)管理系統(tǒng)應(yīng)該能夠?yàn)橛脩籼峁┏渥愕男畔⒑涂旖莸牟樵兪侄巍5恢币詠砣藗兪褂脗鹘y(tǒng)人工的方式管理文件學(xué)生成績(jī),這種管理方式存在著許多缺點(diǎn),如:效率低、保密性差,另外時(shí)間一長(zhǎng),將產(chǎn)生大量的文件和數(shù)據(jù),這對(duì)于查找、更新和維護(hù)都帶來了不少的
2、困難。 隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識(shí),它已進(jìn)入人類社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來越重要的作用。 作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對(duì)學(xué)生成績(jī)信息進(jìn)行管理,具有手工管理所無法比擬的優(yōu)點(diǎn).例如:檢索迅速、查找方便、可靠性高、存儲(chǔ)量大、保密性好、壽命長(zhǎng)、成本低等。這些優(yōu)點(diǎn)能夠極大地提高學(xué)生成績(jī)管理的效率,也是企業(yè)的科學(xué)化、正規(guī)化管理,與世界接軌的重要條件。。 通過調(diào)研目前教學(xué)管理系統(tǒng)中的成績(jī)管理子系統(tǒng),了解成績(jī)管理子系統(tǒng)的業(yè)務(wù)流程;通過分析比較,結(jié)合用戶對(duì)成績(jī)管理子系統(tǒng)的改進(jìn)意見與實(shí)現(xiàn)情況,運(yùn)用面向?qū)ο笏枷敕椒ǎO(shè)計(jì)和實(shí)現(xiàn)一個(gè)滿足功能和性能,并有所創(chuàng)新的
3、成績(jī)管理子系統(tǒng),以提高成績(jī)管理的自動(dòng)化、友好性等。本系統(tǒng)基于oracle10數(shù)據(jù)庫(kù)和前臺(tái)java語言圖形界面設(shè)計(jì),并且通過odbc進(jìn)行后臺(tái)數(shù)據(jù)庫(kù)和前臺(tái)界面的連接。 二.?dāng)?shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫(kù)設(shè)計(jì)(后臺(tái)設(shè)計(jì)) 2.1由需求分析,E-R圖如下: 2.2數(shù)據(jù)結(jié)構(gòu) 學(xué)生管理={學(xué)籍,學(xué)生學(xué)籍,組成:{學(xué)號(hào),姓名,性別,出生日期,班級(jí),電話}} 班級(jí)管理={班級(jí),班級(jí)情況,組成:{班號(hào),年級(jí),班主任,教室}} 課程管理={課程,課程分配,組成:{課程號(hào),課程名字,課程形式,備注}} 年級(jí)課程={年級(jí)課程,年級(jí)課程分配,組成:{年級(jí),課程號(hào)}} 成績(jī)={成績(jī),成績(jī)
4、情況,組成:{考試學(xué)期,學(xué)號(hào),課程名字,成績(jī),評(píng)語分級(jí)}} 用戶={用戶,用戶管理,組成:{用戶名,口令,權(quán)限}} 2.3由E-R圖,有如下至少滿足3NF的的關(guān)系模式 學(xué)生(學(xué)號(hào),姓名,性別,出生日期,班級(jí),電話); 班級(jí)(班號(hào),年級(jí),班主任,教室); 課程(課程號(hào),課程名字,課程形式,備注); 年級(jí)課程(年級(jí),課程號(hào)); 成績(jī)(考試學(xué)期,學(xué)號(hào),課程名字,成績(jī),評(píng)語分級(jí)); 2.4數(shù)據(jù)流 數(shù)據(jù)流如下圖所示: 2.5系統(tǒng)功能結(jié)構(gòu)圖 2.6流程圖 查詢 用戶登入 數(shù)據(jù)庫(kù)后臺(tái) 插入 管理 2.7數(shù)據(jù)庫(kù)設(shè)計(jì)
5、 本例采用oracle10作為后臺(tái)數(shù)據(jù)庫(kù)。 2.7.1模型設(shè)計(jì) 用PowerDesigner畫出對(duì)應(yīng)的CDM圖,有系統(tǒng)自動(dòng)生成PDM圖 PDM圖如下: 2.7.2建立數(shù)據(jù)庫(kù)表 學(xué)生表: CREATE TABLE student( student_ID int PRIMARY KEY, student_Name varchar(50) UNIQUE, student_Sex char(2), born_Date datetime, class_NO int, tele_Number varchar(50) ) 班級(jí)表: CREATE TABL
6、E class( class_No int PRIMARY KEY, grade int, director char(10), classroom_No char(10) ) 課程表: CREATE TABLE course( course_No int PRIMARY KEY, course_Name varchar(50), course_Type char(10), course_Des char(50) ) 課程年級(jí)表: CREATE TABLE gradecourse( grade char(10), course_Name c
7、har(20) ) 成績(jī)表 CREATE TABLE result( exam_No char(10), student_ID int, course_Name varchar(50), result float, level char(10) ) 2.7.3建立數(shù)據(jù)庫(kù)觸發(fā)器語句: create table student_before_log( student_id number(9,0), student_name varchar2(50), student_sex char(4), born_date d
8、ate, class_no number(4,0), tele_number varchar2(50), ru_date date, address varchar2(50), when date ); create or replace trigger biufer_student before insert or update or delete on student for each row begin insert into student_before_log values (:old.student_id,:old.
9、student_name,:old.student_sex,:old.born_date,:old.class_no,:old.tele_number,:old.ru_date,:old.address,sysdate); end; create table class_before_log( class_No number(4,0), grade number(20,0), director char(10), classroom_No char(10), when date ); create or replace trig
10、ger biufer_class before insert or update or delete on class for each row begin insert into class_before_log values (:old.class_No,:old.grade,:old.director ,:old.classroom_No,sysdate); end; create table course_before_log( course_No number(20,0), course_name varchar2(50), cour
11、se_Type varchar2(50), course_des char(50), when date ); create or replace trigger biufer_course before insert or update or delete on course for each row begin insert into class_before_log values (:old.course_No,:old.course_name,:old.course_Type ,:old.course_des,sysdate); end; c
12、reate table result_before_log( exam_No char(10), student_id number(9,0), student_name varchar2(50), class_No number(4,0), course_name varchar2(50), result binary_float , when date ); create or replace trigger biufer_result before insert or update or delete on r
13、esult for each row begin insert into result_before_log values (:old.exam_No,:old.student_id,:old.student_name ,:old.class_No,:old.course_name,:old.result,sysdate); end; 建立的表如下圖: 3. 建立用戶界面(前臺(tái)設(shè)計(jì)) 本實(shí)驗(yàn)采用odbc進(jìn)行前臺(tái)java語言和后臺(tái)oracle數(shù)據(jù)庫(kù)的鏈接,連接過程如下: 3.1前臺(tái)程序,用戶登陸連接數(shù)據(jù)庫(kù)代碼:
14、 import java.sql.*; public class qtdm { public static void main(String[] args) throws SQLException, ClassNotFoundException { //定義了數(shù)據(jù)庫(kù)連接串 String dbUrl = "jdbc:odbc:test"; //數(shù)據(jù)庫(kù)的用戶名 String user = "test"; //數(shù)據(jù)庫(kù)的用戶口令 String password = "test"; // 加載jdbc-odbc bridge驅(qū)動(dòng)程序 Class.forNam
15、e("sun.jdbc.odbc.JdbcOdbcDriver"); // 與url指定的數(shù)據(jù)源建立連接 Connection conn = DriverManager.getConnection(dbUrl, user, password); //采用Statement進(jìn)行查詢 Statement state = conn.createStatement(); System.out.println("sucessful" ); state.close(); conn.close(); } // 關(guān)閉Statement,其上的ResultSet也將關(guān)
16、閉 } 3.2插入信息代碼: import java.awt.CardLayout; import java.awt.Color; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; impor
17、t javax.swing.JMenuItem; public class xueshengjm extends JFrame implements ActionListener{ JMenuBar jm = new JMenuBar(); JMenu jm1 = new JMenu("信息"); JMenu jm2 = new JMenu("成績(jī)"); JMenuItem jmi1 = new JMenuItem("錄入"); JMenuItem jmi2 = new JMenuItem("查詢"); JMenuItem jmi21 = new JMenuItem(
18、"錄入"); JMenuItem jmi22 = new JMenuItem("查詢"); public xueshengjm(){ this.setTitle("老師界面"); this.setLayout(null); this.setJMenuBar(jm); jm.add(jm1); jm.add(jm2); jm1.add(jmi1); jm1.add(jmi2); JLabel JL1 = new JLabel("歡迎進(jìn)入老師查詢界面"); jmi1.addActionListener(this); jmi2.addActionLis
19、tener(this); jm2.add(jmi21); jm2.add(jmi22); jm2.addActionListener(this); jmi2.addActionListener(this); jmi21.addActionListener(this); this.add(JL1); JL1.setForeground(Color.red); JL1.setFont(new java.awt.Font("宋體",Font.PLAIN,20)); JL1.setBounds(150, 80, 200, 200)
20、; this.setBounds(400, 250, 500, 400); this.setVisible(true); } public void actionPerformed(ActionEvent e){ } public static void main(String agrs[]){ new xueshengjm(); } } 3.3添加學(xué)生信息代碼: import java.awt.Color; import java.awt.Font; import java.awt.event.ActionEvent; impor
21、t java.awt.event.ActionListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.swing.ButtonGroup; import j
22、avax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JRadioButton; import javax.swing.JTextField; public class chaxun extends JFrame implements ActionListener { JLabel JL = new JLabel("查詢成績(jī)",JLabel.CENTER); JLab
23、el JLNumber = new JLabel("請(qǐng)輸入學(xué)號(hào):"); JTextField JTNumber =new JTextField(); JButton JBset =new JButton("查詢"); JButton JBnext = new JButton("重置"); JButton JBcr = new JButton("插入"); JLabel JLName = new JLabel("姓名"); JTextField JTName = new JTextField();
24、 JLabel JLClass = new JLabel("班級(jí)"); JTextField JTClass = new JTextField(); JLabel JL1 = new JLabel("數(shù)學(xué)"); JTextField JT1 = new JTextField(); JLabel JL2 = new JLabel("語文"); JTextField JT2 =new JTextField(); String sql= "" ; public chaxun(){
25、 this.setTitle("查詢成績(jī)"); this.setLayout(null); JL.setForeground(Color.red); JL.setFont(new java.awt.Font("宋體",Font.PLAIN,19)); JL.setBounds(100, 30, 200, 40); this.add(JL); JLNumber.setBounds(100, 80, 100, 20); this.add(JLNumber); JTNumber.setBounds(200, 80, 80, 20); this.add(JTNumbe
26、r); JLName.setBounds(100, 160, 80, 20); this.add(JLName); JTName.setBounds(200, 160, 80, 20); this.add(JTName); JL2.setBounds(100, 240, 100, 20); this.add(JL2); JT2.setBounds(200, 240, 80, 20); this.add(JT2); JLClass.setBounds(100, 280, 60, 20); this.add(JLClass); JTClass.setBou
27、nds(200, 280, 80, 20); this.add(JTClass); JL1.setBounds(100, 320, 60, 20); this.add(JL1); JT1.setBounds(200, 320, 80, 20); this.add(JT1); JBset.setBounds(80, 120, 90, 20); this.add(JBset); JBset.addActionListener(this); JBnext.setBounds(190, 120, 90, 20); this.add(JBnext); JBnext.ad
28、dActionListener(this); JBcr.setBounds(300, 120, 90, 20); this.add(JBcr); JBcr.addActionListener(this); this.setBounds(400, 250, 500, 400); this.setVisible(true); //通過內(nèi)部?jī)?nèi)重寫關(guān)閉的方法 } public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSour
29、ce()==JBcr){ //處理登錄事件; this.hide(); xiugai cx=new xiugai();} if(e.getSource()==JBset){ String snumber =JTNumber.getText(); String sname=JTName.getText(); String sclass=JTClass.getText(); String ssex ="女"; String sbir =JT2.getText(); String scollect=JT1.getText(
30、); sql="select*from student where Id="+snumber+""; try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection cot = DriverManager.getConnection("jdbc:odbc://student","root","123"); Statement stm =cot.createStatement();//提交查巡 ResultSet rs =stm.executeQuer
31、y(sql);//取得查巡結(jié)果 if(rs.next()) { String name =rs.getString(2); JTName.setText(name); String clas =rs.getString(3); JTClass.setText(clas); String collect=rs.getString(5); JT1.setText(collect); String bir = rs.getString(6);
32、 JT2.setText(bir); //對(duì)數(shù)苦苦進(jìn)行查詢 int n = stm.executeUpdate(sql); if(n>0) JOptionPane.showMessageDialog(null, "查詢成功"); else JOptionPane.showMessageDialog(null, "查詢失敗"); }//通過showmessagedialog()打印信息 else { JOptionPane.showMessageDialog(null
33、, "次用戶不在"); } } catch(Exception ee) { } } if(e.getSource()==JBnext) { JTNumber.setText(null); JTName.setText(null); JTClass.setText(null); JT1.setText(null); JT2.setText(null); } } public static void qtlj(String[] args)
34、 throws SQLException, ClassNotFoundException { //定義了數(shù)據(jù)庫(kù)連接串 String dbUrl = "jdbc:odbc:test"; //數(shù)據(jù)庫(kù)的用戶名 String user = "test"; //數(shù)據(jù)庫(kù)的用戶口令 String password = "test"; // 加載jdbc-odbc bridge驅(qū)動(dòng)程序 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // 與url指定的數(shù)據(jù)源建立連接 Connection conn =
35、DriverManager.getConnection(dbUrl, user, password); //采用Statement進(jìn)行查詢 Statement state = conn.createStatement(); System.out.println("sucessful" ); } public static void main(String[] args) { new chaxun(); } } 3.4修改學(xué)生信息代碼: import java.awt.Color; import java.sql.*; impor
36、t java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; impor
37、t javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JRadioButton; import javax.swing.JTextField; public class xiugai extends JFrame implements ActionListener { JLabel JL = new
38、JLabel("添加基本信息",JLabel.CENTER); JLabel JLNumber =new JLabel ("學(xué)號(hào):"); JTextField JTNumber = new JTextField(); JLabel JLName = new JLabel("姓名:"); JTextField JTName = new JTextField(); JLabel JLClass = new JLabel("班級(jí):"); JTextField JTClass = new JTextField(); JLabel JLsex = new JLabel("性別:
39、"); ButtonGroup BG = new ButtonGroup(); JRadioButton JRB1 = new JRadioButton("男"); JRadioButton JRB2 = new JRadioButton("女"); JLabel JL1 = new JLabel("學(xué)院:"); JTextField JT1 = new JTextField(); JButton JBAdd = new JButton("添加"); JButton JBNext = new JButton("重置"); String sql=""; publ
40、ic xiugai() { this.setTitle("添加學(xué)生信息"); this.setLayout(null); JL.setForeground(Color.red); JL.setBounds(100, 30, 200, 40); this.add(JL); JLNumber.setBounds(100, 80, 100, 20); this.add(JLNumber); JTNumber.setBounds(200, 80, 80, 20); this.add(JTNumber); JLName.setBounds(
41、100, 120, 60, 20); this.add(JLName); JTName.setBounds(200, 120, 80, 20); this.add(JTName); JLsex.setBounds(100, 160, 100, 20); this.add(JLsex); JRB1.setBounds(200, 160, 40, 20); JRB2.setBounds(300, 160, 40, 20); this.add(JRB1); this.add(JRB2); BG.add(JRB1); BG.add(JRB2
42、); JLClass.setBounds(100, 240, 60, 20); this.add(JLClass); JTClass.setBounds(200, 240, 80, 20); this.add(JTClass); JL1.setBounds(100, 280, 60, 20); this.add(JL1); JT1.setBounds(200, 280, 100, 20); this.add(JT1); JBAdd.setBounds(80, 320, 90, 20); this.add(JBAdd);
43、 JBAdd.addActionListener(this); JBNext.setBounds(190, 320, 90, 20); this.add(JBNext); JBNext.addActionListener(this); this.setBounds(400, 250, 500, 400); this.setVisible(true); } public void actionPerformed(ActionEvent e) { if(e.getSource()==JBAdd){ String snumber= JT
44、Number.getText(); String sname = JTName.getText(); String sclass = JTClass.getText(); String ssex ="女"; if(JRB1.isSelected()) ssex="男"; String scollect = JT1.getText(); sql="select * from student where snumber ="+snumber+""; try{ Class.forName("com.mysql.jdbc.Dri
45、ver").newInstance(); Connection cot = DriverManager.getConnection("jdbc:mysql://localhost:3306/student?characterEncoding=gbk" ,"root","123"); Statement stm =cot.createStatement();//提交查巡 ResultSet rs =stm.executeQuery(sql);//取得查巡結(jié)果 if(rs.next()) JOptionPane.showMessageDialog
46、(null, "該號(hào)已經(jīng)存在"); else{ sql="insert into student values ("+snumber+","+sname+","+sclass+","+ssex+","+scollect+")"; int i =stm.executeUpdate(sql); if(i>0) JOptionPane.showMessageDialog(null, "添加成功"); else JOptionPane.showMessageDialog(null, "刪除失敗"); } }
47、 catch(Exception ee){ } } if(e.getSource()==JBNext){ JTNumber.setText(null); JTName.setText(null); JTClass.setText(null); JT1.setText(null); } } public static void main(String agrs[]){ new xiugai(); } } 四、運(yùn)行調(diào)試 1.
48、主登錄界面 2. 登入后二級(jí)主界面 (1) 學(xué)生界面 (2) 教師界面 3.插入信息界面 4. 查詢基本信息界面 5. 查詢學(xué)生成績(jī)界面 五、心得體會(huì)及總結(jié) 做這次課程設(shè)計(jì)過程中,可以說“困難重重”,但是也學(xué)到不少東西。 接到課設(shè)題目時(shí),和Java課設(shè)對(duì)比了一下,之間只有一個(gè)是重疊的:學(xué)生學(xué)籍管理系統(tǒng)。但是兩個(gè)的側(cè)重點(diǎn)也不同:數(shù)據(jù)庫(kù)課設(shè)的重點(diǎn)是后臺(tái)數(shù)據(jù)庫(kù)的設(shè)計(jì)和實(shí)現(xiàn)要合理、科學(xué)、安全,至少要滿足3NF范式;Java課設(shè)要求前臺(tái)應(yīng)用程序要人性化,實(shí)用性強(qiáng),對(duì)后臺(tái)數(shù)據(jù)庫(kù)要求不嚴(yán)格。 在整個(gè)課程設(shè)計(jì)過程中,我們小組6個(gè)成員以團(tuán)隊(duì)方式共進(jìn)退,以項(xiàng)目方式管理,設(shè)計(jì)了整個(gè)系統(tǒng)。我認(rèn)為這是對(duì)我們最大的考研也是最大的收獲。我主要參與了E-R圖的構(gòu)建,后臺(tái)數(shù)據(jù)庫(kù)中學(xué)生表,課程表的設(shè)計(jì)和前臺(tái)中登陸界面的設(shè)計(jì)。 但是在做的過程中,發(fā)現(xiàn)最大的問題是Java和Oracle連接有問題,為此找了很多資料,最終在同組成員的共同努力以及在強(qiáng)彥老師的悉心幫助下才得以解決。 通過這次課設(shè),確實(shí)加深了對(duì)數(shù)據(jù)庫(kù)的以及與其他平臺(tái)的兼容和協(xié)調(diào)性的認(rèn)識(shí)。在解決連接數(shù)據(jù)庫(kù)問題的過程中,更是對(duì)自己數(shù)據(jù)庫(kù)知識(shí)和Java水平的考驗(yàn),不過最終還是圓滿解決。 - 24 -
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 初中生物--人體的呼吸1-人教版課件
- 社會(huì)研究方法mpa論文寫作PPT培訓(xùn)課件
- 2020高考語文專題-圖文轉(zhuǎn)換漫畫答題技巧ppt課件
- 《語言表達(dá)之補(bǔ)寫語句》ppt課件
- 肺心病診斷及治療(與“肺動(dòng)脈”有關(guān)的文檔共46張)
- 中考?xì)v史一輪專題復(fù)習(xí)壟斷資本主義時(shí)代的世界課件
- 重慶市結(jié)核病防治基本DOTS細(xì)則介紹
- 鋁的化合物(教育精品)
- 軸對(duì)稱(例1)(教育精品)
- 愛之鏈chuan(教育精品)
- bs71p44(教育精品)
- bh(教育精品)
- 北師大版小學(xué)五年級(jí)語文上冊(cè)《生命與水》課件
- 13白鵝ppt(教育精品)
- 荷葉圓圓 (5)課件