版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、-PAGE . z. - w -網(wǎng)上選課系統(tǒng)課程設(shè)計(jì)手冊(cè)團(tuán)隊(duì): 非你莫屬學(xué)校: 輕工大學(xué)隊(duì)長(zhǎng): 一飛時(shí)間:2014.11目 錄1. 項(xiàng)目概述31.1開(kāi)發(fā)背景31.2 開(kāi)發(fā)目的31.3 開(kāi)發(fā)運(yùn)行境31.4 系統(tǒng)功能32.需求分析32.1 系統(tǒng)需求32.2 功能需求32.3 業(yè)務(wù)流圖33.總體設(shè)計(jì)43.1 基本設(shè)計(jì)概念和處理流程43.2 系統(tǒng)層次模圖43.3系統(tǒng)層次模塊圖43.4模塊設(shè)計(jì)54.數(shù)據(jù)庫(kù)計(jì)54.1 數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì)54.2數(shù)據(jù)庫(kù)的配置65. 詳細(xì)設(shè)計(jì)85.1 學(xué)生登錄模塊的設(shè)計(jì)與實(shí)現(xiàn)85.2 學(xué)生注冊(cè)模塊的設(shè)計(jì)與實(shí)現(xiàn)95.3 學(xué)生查詢(xún)模塊的設(shè)計(jì)與實(shí)現(xiàn)95.4 學(xué)生選課模塊的設(shè)計(jì)與實(shí)現(xiàn)1
2、06 測(cè)試及提交101.項(xiàng)目概述1.1 開(kāi)發(fā)背景Internet的飛速發(fā)展深刻地影響了人們的日常生活和商業(yè)運(yùn)作方式。人們打開(kāi)網(wǎng)頁(yè)瀏覽當(dāng)天的新聞,發(fā)電子給遠(yuǎn)方的朋友,使用搜索引擎查找資料,進(jìn)入網(wǎng)上商城購(gòu)買(mǎi)商品這一切都是在使用Internet。社會(huì)的方方面面滲透著互連網(wǎng)的應(yīng)用,使得一向煩瑣的手工程序變得方便,快捷,而學(xué)校網(wǎng)上選課系統(tǒng)正是基于這一思想而發(fā)展起來(lái)的。1.2 開(kāi)發(fā)目的傳統(tǒng)的手工選課不僅復(fù)雜,也牽涉了很多的人力,對(duì)管理也造成了諸多不變,而借助網(wǎng)上選課系統(tǒng),學(xué)生在規(guī)定選課時(shí)間段,可以不受地點(diǎn)和時(shí)間的限制完成選修課的申請(qǐng),而學(xué)校也可以方便地對(duì)系統(tǒng)進(jìn)行管理和控制,提高工作效率。1.3 開(kāi)發(fā)運(yùn)行環(huán)
3、境:開(kāi)發(fā)工具:java語(yǔ)言開(kāi)發(fā)環(huán)境:JDK1.4 系統(tǒng)功能:(1) 登錄、注冊(cè)功能.(2)選課功能(3)查詢(xún)功能2.需求分析2.1 系統(tǒng)需求用戶(hù)的需求具體體現(xiàn)在各種學(xué)習(xí)成績(jī)的提供、保存、更新和查詢(xún)方面,這就要求數(shù)據(jù)庫(kù)結(jié)構(gòu)能充分滿(mǎn)足各種信息的輸入和輸出。收集基本數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)處理的流程,組成一份詳盡數(shù)據(jù)字典,為后面的具體設(shè)計(jì)打下基礎(chǔ)。2.2 功能需求通過(guò)系統(tǒng)功能分析,針對(duì)一般的網(wǎng)上選課系統(tǒng),總結(jié)出如下的需求信息:(1) 學(xué)生的需求:網(wǎng)上選課、選課情況查詢(xún);(2) 本系統(tǒng)主要實(shí)現(xiàn)學(xué)生信息管理和選課查詢(xún)。學(xué)生信息包括*、班級(jí);課程信息包括課程名;2.3 業(yè)務(wù)流程圖學(xué)生登錄選課查詢(xún)課程系統(tǒng)管理員
4、選課信息3.總體設(shè)計(jì)3.1 基本設(shè)計(jì)概念和處理流程互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,Java等設(shè)計(jì)工具的方便實(shí)用,以及數(shù)據(jù)庫(kù)技術(shù)的發(fā)展給本系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)提供了技術(shù)上的支持。系統(tǒng)基本的流程是:用戶(hù)登錄主界面選擇各項(xiàng)子系統(tǒng)。3.2 系統(tǒng)層次模塊圖學(xué)生選課系統(tǒng)登陸/注冊(cè)選課查詢(xún)數(shù)據(jù)庫(kù)的設(shè)計(jì)3.3系統(tǒng)層次模塊圖3.4模塊設(shè)計(jì)(1) 用戶(hù)注冊(cè)模塊:填寫(xiě)用戶(hù)名、密碼、確認(rèn)密碼(2) 用戶(hù)登錄模塊:填寫(xiě)已注冊(cè)的用戶(hù)名稱(chēng),填寫(xiě)正確的密碼,進(jìn)入主控制頁(yè)面。(3)用戶(hù)選課模塊:。(4)用戶(hù)查詢(xún)模塊:可以進(jìn)行查看所選課程的操作。4.數(shù)據(jù)庫(kù)設(shè)計(jì)4.1 數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì)我們選用了Microsoft Access 2000。數(shù)據(jù)通
5、信接口采用ODBC。ODBC是微軟開(kāi)發(fā)的一套讀取數(shù)據(jù)庫(kù)的解決方案,它的目的是將所有對(duì)數(shù)據(jù)庫(kù)的底層操作全部隱藏在ODBC的驅(qū)動(dòng)程序核里。對(duì)于程序員來(lái)說(shuō),只要構(gòu)建了一個(gè)指向數(shù)據(jù)庫(kù)的連接,就可以采用統(tǒng)一的應(yīng)用程序編程接口實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的讀寫(xiě)。目前ODBC驅(qū)動(dòng)已經(jīng)提供了對(duì)大多數(shù)常見(jiàn)類(lèi)型數(shù)據(jù)庫(kù)的支持,包括dBase,Informi*,Access,SQL Server和Oracle等。也包括了對(duì)其它類(lèi)型的數(shù)據(jù)庫(kù)的支持,如文本,E*cel電子表格等的支持。根據(jù)系統(tǒng)功能設(shè)計(jì)的要求以及功能模塊的劃分,對(duì)于系統(tǒng)信息數(shù)據(jù)庫(kù),可以列出以下數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu):1. 名稱(chēng):用戶(hù)信息表表名稱(chēng)標(biāo)識(shí):login名稱(chēng)字段名稱(chēng)數(shù)據(jù)類(lèi)
6、型主鍵非空用戶(hù)名UserName文本NoYes密碼Password文本NoNo記錄:2.名稱(chēng):課程信息表表名稱(chēng)標(biāo)識(shí):kechengbiao名稱(chēng)字段名稱(chēng)數(shù)據(jù)類(lèi)型主鍵非空*number數(shù)字NoYesname文本NoNo課程名稱(chēng)lesson文本NoNo記錄:4.2數(shù)據(jù)庫(kù)的配置一個(gè)真正的、完整的站點(diǎn)是離不開(kāi)數(shù)據(jù)庫(kù)的。ODBC為應(yīng)用程序提供了一種標(biāo)準(zhǔn)方法來(lái)操作相關(guān)的數(shù)據(jù)庫(kù):管理器根據(jù)數(shù)據(jù)源提供的數(shù)據(jù)庫(kù)的位置、數(shù)據(jù)庫(kù)類(lèi)型及ODBC驅(qū)動(dòng)程序等信息,建立起ODBC與具體數(shù)據(jù)庫(kù)的聯(lián)系。這樣,只要應(yīng)用程序?qū)?shù)據(jù)源名提供給ODBC,ODBC就能建立起與相應(yīng)數(shù)據(jù)庫(kù)的連接。按如下步驟可以建立一個(gè)新的系統(tǒng)數(shù)據(jù)源。首先,在
7、控制面板中雙擊ODBC圖標(biāo),打開(kāi)ODBC數(shù)據(jù)源管理器”對(duì)話(huà)框,選擇系統(tǒng)DSN”選項(xiàng)卡,單擊添加”按鈕。如下圖所示。在創(chuàng)建新數(shù)據(jù)源”對(duì)話(huà)框中,選擇Driver do Microsoft Access(*.mdb)”作為數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序并單擊完成”按鈕。如下圖所示。在ODBC Microsoft Access安裝”對(duì)話(huà)框中,數(shù)據(jù)源名稱(chēng)填寫(xiě)為student”,這是程序中將要引用的。單擊選擇”按鈕,從彈出的文件窗口中選擇student.mdb文件所在的位置。如下圖所示。然后單擊確定”按鈕,這樣就完成了Access數(shù)據(jù)庫(kù)的ODBC數(shù)據(jù)源設(shè)置。以上步驟,通過(guò)ODBC管理器注冊(cè)了一個(gè)名字為student的數(shù)據(jù)
8、源,并且指定了數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序。5. 詳細(xì)設(shè)計(jì)5.1 學(xué)生登錄模塊的設(shè)計(jì)與實(shí)現(xiàn)5.1.1. 登錄模塊功能:本模塊主要用于對(duì)用戶(hù)身份進(jìn)行鑒別。用戶(hù)通過(guò)表單提供用戶(hù)名和密碼信息,系統(tǒng)根據(jù)用戶(hù)提供的登錄信息對(duì)用戶(hù)進(jìn)行身份查詢(xún)鑒別。如果身份合法,則將用戶(hù)導(dǎo)向系統(tǒng)的選課頁(yè)面。輸入:用戶(hù)名、密碼處理:(1) 輸入用戶(hù)的登錄信息:在頁(yè)面提供的表單出輸入用戶(hù)的用戶(hù)名和密碼信息,點(diǎn)擊登錄”按鈕提交表單信息到身份驗(yàn)證頁(yè)面?;螯c(diǎn)擊重置”按鈕,重新輸入。(2) 用戶(hù)身份進(jìn)行驗(yàn)證:連接數(shù)據(jù)庫(kù),打開(kāi)用戶(hù)數(shù)據(jù)表login,檢驗(yàn)用戶(hù)登錄信息。以輸入數(shù)據(jù)用戶(hù)名”為查詢(xún)條件創(chuàng)建數(shù)據(jù)集查看輸入用戶(hù)名是否存在。如果存在,繼續(xù)檢驗(yàn)輸入
9、的密碼是否正確。密碼和用戶(hù)名都正確,則進(jìn)入選課頁(yè)面;如果用戶(hù)名不存在或密碼不正確,則給出登錄失敗的提示框。輸出:學(xué)生選課頁(yè)面5.1.2學(xué)生登錄頁(yè)面圖如下圖所示:5.2 學(xué)生注冊(cè)模塊的設(shè)計(jì)與實(shí)現(xiàn)5.3 學(xué)生查詢(xún)模塊的設(shè)計(jì)與實(shí)現(xiàn)5.4 學(xué)生選課模塊的設(shè)計(jì)與實(shí)現(xiàn)6 測(cè)試及提交7 項(xiàng)目小組成員及詳細(xì)分工工作任務(wù)徐寒亭胡中濤盧文琳爽需求分析數(shù)據(jù)庫(kù)的設(shè)計(jì)查詢(xún)功能選課功能登陸注冊(cè)功能查詢(xún)模塊注冊(cè)登錄模塊數(shù)據(jù)庫(kù)設(shè)計(jì)模塊選課模塊8 附:模塊源代碼(1)登錄模塊import java.awt.*;import java.awt.event.*;import java*.swing.JOptionPane;impo
10、rt java.sql.*;public class Login e*tends Frame implements ActionListener Frame f,f1; Button b1; Button b2;Button b3; Te*tField t1; Te*tField t2; Label l1; Label l2; Connection con; Statement sql; /聲明Statement對(duì)象 ResultSet rs; public Login()f=new Frame(學(xué)生選課系統(tǒng)); Toolkit tool=f.getToolkit();Dimension di
11、m=tool.getScreenSize();f.setBounds(0,0,dim.width,dim.height); Panel p=new Panel(); f.add(p); l1=new Label(用戶(hù)名); l2=new Label(密碼); t1=new Te*tField(20); t2=new Te*tField(20); b1=new Button(登陸); b2=new Button(取消);b3=new Button(注冊(cè)); p.add(l1); p.add(t1); p.add(l2); p.add(t2); p.add(b1); p.add(b2);p.add
12、(b3); b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this); f.setVisible(true); t2.setEchoChar(*); f.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.e*it(0);); public void actionPerformed(ActionEvent e) if(e.getSource()=b1) if(t1.getT
13、e*t().equals()|t2.getTe*t().equals() JOptionPane.showMessageDialog(null,輸入不能為空!); else try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch(ClassNotFoundE*ception a) System.out.println(+a); try con=DriverManager.getConnection(jdbc:odbc:sun,); sql=con.createStatement(); rs=sql.e*ecuteQuery(Select *
14、 FROM login); /查詢(xún)數(shù)據(jù)庫(kù) boolean check = false; while(rs.ne*t() String UserName=rs.getString(1); /獲得數(shù)據(jù)庫(kù)第二列 String Password=rs.getString(2); /獲得數(shù)據(jù)庫(kù)第三列 if(t1.getTe*t().equals(UserName) & t2.getTe*t().equals(Password) /判斷語(yǔ)句 check = true; JOptionPane.showMessageDialog(null,登陸成功!);f.dispose(); new WindowBo*(
15、選課窗口); t1.setTe*t(); t2.setTe*t(); break; if(check = false) JOptionPane.showMessageDialog(null,登陸失敗,請(qǐng)重新輸入!); con.close(); catch(SQLE*ception el) if(e.getSource()=b2) t1.setTe*t(); t2.setTe*t(); if(e.getSource()=b3)f.dispose();new Regist(學(xué)生選課系統(tǒng)注冊(cè)界面);public void windowClosing(WindowEvent e) System.e*i
16、t(0);public static void main(String args) new Login();(2)注冊(cè)模塊import java.awt.*;import java.awt.event.*;import java*.swing.JOptionPane;import java.sql.*;class Regist e*tends Frame implements ActionListenerLabel lb1, lb2, lb3;Te*tField tf1, tf2, tf3;Button bt1, bt2, bt3;Regist(String s)super(s);setLay
17、out(null);setBounds(0,0,900,900);setVisible(true);setResizable(false);lb1 = new Label(用戶(hù)名);lb1.setBounds(150,100,50,20);lb2 = new Label(密碼);lb2.setBounds(150,200,50,20);lb3 = new Label(確認(rèn));lb3.setBounds(150,300,50,20);tf1 = new Te*tField();tf1.setBounds(200,98,200,20);tf2 = new Te*tField();tf2.setBo
18、unds(200,198,200,20);tf2.setEchoChar(*);tf3 = new Te*tField();tf3.setBounds(200,298,200,20);tf3.setEchoChar(*);bt1 = new Button(注冊(cè));bt1.setBounds(200,400,100,40);bt2 = new Button(返回);bt2.setBounds(350,400,100,40);bt3 = new Button(退出);bt3.setBounds(435,400,100,40);add(lb1);add(lb2);add(lb3);add(tf1);
19、add(tf2);add(tf3);add(bt1);add(bt2);add(bt3);tf3.addActionListener(this);bt1.addActionListener(this);bt2.addActionListener(this);bt3.addActionListener(this);addWindowListener(new java.awt.event.WindowAdapter()public void windowClosing(java.awt.event.WindowEvent e)System.e*it(0););public void actionP
20、erformed(ActionEvent e)if(e.getSource()= bt1 | e.getSource()= tf1 | e.getSource()= tf2 | e.getSource()= tf3)if(tf1.getTe*t().equals()| tf2.getTe*t().equals() | tf3.getTe*t().equals()JOptionPane.showMessageDialog(this,請(qǐng)輸入用戶(hù)名和密碼,提示,JOptionPane.ERROR_MESSAGE);/判斷文本容語(yǔ)句elseif(tf2.getTe*t().equals(tf3.get
21、Te*t()tryClass.forName(sun.jdbc.odbc.JdbcOdbcDriver);Connection con;Statement sq;ResultSet r;String u, p;con = DriverManager.getConnection(jdbc:odbc:sun,null,null);sq=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);r = sq.e*ecuteQuery(SELECT * FROM login);while(r.ne
22、*t() u =r.getString(1); if(tf1.getTe*t().equals(u) JOptionPane.showMessageDialog(this,用戶(hù)已存在,錯(cuò)誤,JOptionPane.ERROR_MESSAGE); con.close(); break; /判斷用戶(hù)是否存在 else if(r.isLast()/判斷是否已經(jīng)讀完整個(gè)表 u = tf1.getTe*t(); p = tf2.getTe*t(); sq.e*ecuteUpdate(INSERT INTO login(UserName,Password) VALUES(+u+,+p+);/寫(xiě)入用戶(hù)信息
23、JOptionPane.showMessageDialog(this,注冊(cè)成功,提示,JOptionPane.INFORMATION_MESSAGE); con.close(); dispose(); new Login(); break; tf1.setTe*t(null);tf2.setTe*t(null);tf3.setTe*t(null);catch(SQLE*ception b)JOptionPane.showMessageDialog(this,b,錯(cuò)誤,JOptionPane.ERROR_MESSAGE);catch(ClassNotFoundE*ception a)JOptio
24、nPane.showMessageDialog(this,a,錯(cuò)誤,JOptionPane.ERROR_MESSAGE);elseJOptionPane.showMessageDialog(this,兩次密碼不一致,提示,JOptionPane.ERROR_MESSAGE);tf2.setTe*t(null);tf3.setTe*t(null);else if(e.getSource()= bt3)System.e*it(0);else if(e.getSource()= bt2)dispose();new Login();public class *uhanting1public stati
25、c void main(String args)new Regist(學(xué)生選課系統(tǒng)注冊(cè)界面);(3)選課模塊import java.awt.*;import java.awt.event.*;import java.sql.*;class WindowBo* e*tends Frame implements ActionListener,ItemListener Checkbo* bo*1,bo*2,bo*3,bo*4,bo*5,bo*6; Label l1;Label l2;Te*tField t1;Label l3;Te*tField t2;Te*tArea t = new Te*tAre
26、a();Button b1,b2;WindowBo*(String s)super(s);setLayout(new FlowLayout();l2=new Label(*); t1=new Te*tField(10);l3=new Label();t2=new Te*tField(10);b1=new Button(確定);b2=new Button(重置);l1=new Label(所選課程);bo*1=new Checkbo*(離散數(shù)學(xué),false);bo*2=new Checkbo*(匯編語(yǔ)言,false);bo*3=new Checkbo*(java語(yǔ)言設(shè)計(jì),false);bo*4=
27、new Checkbo*(軟件工程,false);bo*5=new Checkbo*(操作系統(tǒng),false);bo*6=new Checkbo*(馬克思政治學(xué),false);bo*1.addItemListener(this);bo*2.addItemListener(this);bo*3.addItemListener(this);bo*4.addItemListener(this);bo*5.addItemListener(this);bo*6.addItemListener(this);add(l2);add(t1);add(l3);add(t2);add(b1);add(b2);add
28、(l1);add(bo*1);add(bo*2);add(bo*3);add(bo*4);add(bo*5);add(bo*6);add(t);b1.addActionListener(this);b2.addActionListener(this);setSize(500,500);setVisible(true);addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.e*it(0););validate();public void itemStateChanged(ItemEv
29、ent e)Checkbo* bo*=(Checkbo*)e.getSource();if(bo*.getState()int n=t.getCaretPosition();t.insert(bo*.getLabel(),n);elset.setTe*t();public void actionPerformed(ActionEvent a) if(a.getSource()=b1) Connection con;Statement sql;ResultSet rs;String number1,name1,lesson1, recode,insertStr;tryClass.forName(
30、sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFoundE*ception g)System.out.println(+g);trycon=DriverManager.getConnection(jdbc:odbc:sun,);sql=con.createStatement();number1=t1.getTe*t();name1=t2.getTe*t();lesson1=t.getTe*t();recode=(+number1+,+name1+,+lesson1+);insertStr=INSERT INTO kechengbiao values+r
31、ecode; sql.e*ecuteUpdate(insertStr);con.close();dispose(); RuanJian rj=new RuanJian(查詢(xún)窗口); catch(SQLE*ception h) System.out.println(h);else if(a.getSource()=b2) t1.setTe*t();t2.setTe*t();t.setTe*t();public class *uhanting3public static void main(String args)new WindowBo*(選課窗口);(4)查詢(xún)模塊import java.awt
32、.*;import java.awt.event.*;import java.sql.*;import java*.swing.JOptionPane; class RuanJian e*tends Frame implements ActionListenerLabel lab1;Te*tField te*t1;Button b1,b2;Te*tArea t=new Te*tArea();RuanJian(String s)setTitle(s);setLayout(null);lab1=new Label(請(qǐng)輸入*);te*t1=new Te*tField(10);b1=new Butto
33、n(確定);b1.addActionListener(this);b2=new Button(重置);b2.addActionListener(this);lab1.setBounds(120,100,100,30);te*t1.setBounds(250,100,200,30);b1.setBounds(220,180,50,30);b2.setBounds(320,180,50,30);t.setBounds(100,250,380,300);add(lab1);add(te*t1);add(b1);add(b2);add(t);setBounds(100,100,600,600);setVisible(true);addWindowListener(new WindowAda
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中醫(yī)養(yǎng)生館醫(yī)師聘用協(xié)議
- 美容院儀器管理規(guī)范
- 加油站停車(chē)場(chǎng)租用合同
- 藝術(shù)品交易中介費(fèi)
- 旅游業(yè)超齡導(dǎo)游服務(wù)承諾書(shū)
- 石油項(xiàng)目部勘探員聘用協(xié)議
- 山西省電力設(shè)施建設(shè)合同模板
- 住宅裝修翻新裝飾改造協(xié)議
- 跨境電商平臺(tái)投標(biāo)技巧
- 2022年大學(xué)海洋工程專(zhuān)業(yè)大學(xué)物理下冊(cè)期中考試試卷A卷-附解析
- 不銹鋼管道及板件焊接工藝卡
- 施工現(xiàn)場(chǎng)保衛(wèi)方案
- 《柔性接口給水管道支墩》(10S505國(guó)標(biāo)圖集)簡(jiǎn)介-國(guó)標(biāo)10s505
- 圍棋教案13教學(xué)設(shè)計(jì)
- EXCEL 支票打印模板
- 稱(chēng)念諸佛名號(hào)功德(3)
- 瘋狂動(dòng)物城歌詞.doc
- 某住宅樓施工圖預(yù)算畢業(yè)設(shè)計(jì)范本
- LCD數(shù)字顯示體溫計(jì)設(shè)計(jì)
- 輥壓機(jī)施工方案
- 施工人員入場(chǎng)安全教育試題及答案(二級(jí))
評(píng)論
0/150
提交評(píng)論