版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 基于機(jī)電學(xué)院選課系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)</p><p><b> 摘 要</b></p><p> 隨著在校大學(xué)生人數(shù)的不斷增加,教務(wù)系統(tǒng)的數(shù)據(jù)量也不斷的上漲。以往的選課方法是隨堂報(bào)名。這種方法雖然直接,但是造成選課的盲目性和教務(wù)處處理數(shù)據(jù)的繁重性。為了減輕教務(wù)處工作,以及每個學(xué)生更好的選擇自己所喜歡的科目。針對學(xué)生選課這一環(huán)節(jié),本系統(tǒng)從學(xué)生網(wǎng)上
2、自主選課以及教師的課程發(fā)布兩個大方面進(jìn)行了設(shè)計(jì),基本實(shí)現(xiàn)了學(xué)生的在線信息查詢、選課功能以及教師對課程信息發(fā)布的管理等功能。</p><p> 本文通過分析瀏覽器/服務(wù)器結(jié)構(gòu)的特點(diǎn)并結(jié)合選課的實(shí)際情況,提出了基于瀏覽器/服務(wù)器結(jié)構(gòu)網(wǎng)上選課系統(tǒng)的基本設(shè)計(jì)思想,簡要介紹了系統(tǒng)各功能模塊及數(shù)據(jù)庫的設(shè)計(jì),著重討論了用 ASP.NET技術(shù)和SQL Server 2000開發(fā)網(wǎng)上選課系統(tǒng)時的數(shù)據(jù)庫訪問技術(shù)和動態(tài)網(wǎng)頁制作技術(shù),
3、并給出了部分實(shí)現(xiàn)代碼。通過該系統(tǒng),使學(xué)生可以方便地在校園網(wǎng)上進(jìn)行網(wǎng)上選課。該B/S結(jié)構(gòu)的系統(tǒng)在Windows XP系統(tǒng)和VS.NET平臺下開發(fā)完成,使用C#作為ASP.NET的開發(fā)語言,SQL Server 2000作為數(shù)據(jù)庫。系統(tǒng)有較高的安全性和較好的性能。其中連接數(shù)據(jù)庫的字符串可以隨時在web.config里修改,并經(jīng)過編碼加密,增加了靈活性,保護(hù)了數(shù)據(jù)庫的安全。代碼盡量使用存儲過程和盡量減少數(shù)據(jù)庫連接的打開時間等手段來提高性能。&
4、lt;/p><p> 本文中除了有對程序的系統(tǒng)分析、總體設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)、功能實(shí)現(xiàn)等主體部分外,在這之前還介紹了與網(wǎng)上選課系統(tǒng)相關(guān)的信息、IIS介紹、IIS與ASP.NET的結(jié)合等的基本內(nèi)容及發(fā)展情況。</p><p> 關(guān)鍵詞:網(wǎng)上選課,瀏覽器/服務(wù)器結(jié)構(gòu),ASP.NET,數(shù)據(jù)庫管理系</p><p><b> 目錄</b></p&g
5、t;<p><b> 摘 要1</b></p><p><b> 1. 引言2</b></p><p> 1.1課題研究的目的4</p><p> 1.2 課題研究的意義4</p><p> 1.3 課題的可行性分析5</p><p>
6、 2. 系統(tǒng)分析與總體設(shè)計(jì)6</p><p><b> 2.1系統(tǒng)分析6</b></p><p> 2.2 系統(tǒng)總體設(shè)計(jì)7</p><p> 3.數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)9</p><p> 3.1數(shù)據(jù)庫系統(tǒng)分析9</p><p> 3.2 數(shù)據(jù)庫邏輯設(shè)計(jì)12</p>
7、<p> 3.3數(shù)據(jù)庫物理實(shí)現(xiàn)13</p><p> 4. 公共類與公共頁面設(shè)計(jì)16</p><p> 4.1 Web.config頁面設(shè)計(jì)16</p><p> 4.2 數(shù)據(jù)庫連接操作類—Db類19</p><p> 4.3 工具類MyUtility類20</p><p> 4.4
8、錯誤信息類和錯誤顯示頁面21</p><p> 5. 系統(tǒng)說明書22</p><p> 5.1系統(tǒng)界面說明22</p><p> 5.2 系統(tǒng)管理說明27</p><p><b> 6. 總結(jié)34</b></p><p><b> 參考文獻(xiàn)35</b>&
9、lt;/p><p><b> 致 謝36</b></p><p><b> 1 引言</b></p><p> 1.1課題研究的目的</p><p> 1.掌握采用Internet的TCP/IP協(xié)議,以B/S方式,ASP.NET編程技術(shù),多媒體技術(shù)。</p><p>
10、; 2.掌握一種多任務(wù)多用戶操作系統(tǒng)</p><p> 3.ASP.NET的動態(tài)網(wǎng)頁和SQL Server大型的數(shù)據(jù)庫。</p><p> 4.學(xué)會使用某種開發(fā)工具。</p><p> 5.培養(yǎng)相互合作的精神。</p><p> 1.2 課題研究的意義 </p><p> 學(xué)生選課系統(tǒng)是一個學(xué)校不可缺少的
11、部分,它的內(nèi)容對于學(xué)校的決策者和管理者來說都至關(guān)重要,所以學(xué)生選課系統(tǒng)應(yīng)該能夠?yàn)橛脩籼峁┏渥愕男畔⒑涂旖莸牟樵兪侄巍5恢币詠砣藗兪褂脗鹘y(tǒng)人工的方式管理文件檔案,這種管理方式存在著許多缺點(diǎn),如:效率低、保密性差,另外時間一長,將產(chǎn)生大量的文件和數(shù)據(jù),這對于查找、更新和維護(hù)都帶來了不少的困難。</p><p> 隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識,它已進(jìn)入人類社會的各個領(lǐng)域并
12、發(fā)揮著越來越重要的作用。</p><p> 作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對選課信息進(jìn)行管理,有著手工管理所無法比擬的優(yōu)點(diǎn).例如:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優(yōu)點(diǎn)能夠極大地提高人事勞資管理的效率,也是企業(yè)的科學(xué)化、正規(guī)化管理,與世界接軌的重要條件。</p><p> 因此,開發(fā)這樣一套軟件成為很有必要的事情,在下面的各章中我們將以開發(fā)一套
13、學(xué)生選課系統(tǒng)為例,談?wù)勂溟_發(fā)過程和所涉及到的問題及解決方法。</p><p> 本文中所做的主要工作如下:</p><p> (1)介紹了個性化頁面的背景及Win2000server+IIS+ASP.NET系統(tǒng)的一般原理;</p><p> (2) 闡述整個個性化頁面生成系統(tǒng)的系統(tǒng)結(jié)構(gòu)及工作原理;分析了系統(tǒng)實(shí)現(xiàn)中的特殊性、難點(diǎn)和重點(diǎn)。</p>&
14、lt;p> (3) 設(shè)計(jì)實(shí)現(xiàn)用戶管理、課程管理、選課信息錄入管理、新生信息錄入管理、課程的瀏覽和查找、學(xué)生查找等ASP.NET頁面 。</p><p> (4) 分析并解決實(shí)現(xiàn)中的若干技術(shù)問題。 </p><p> (5) 建立完整的網(wǎng)上選課,進(jìn)行測試并分析結(jié)果。</p><p> 1.3 課題的可行性分析</p><p>
15、1.3.1 課題調(diào)研</p><p> (1)與實(shí)踐活動和相關(guān)的文件和資料由教師提供。</p><p> (2)本課題要求學(xué)生有熟練的ASP.NET開發(fā)能力,有較強(qiáng)的自學(xué)能力以一定的關(guān)系數(shù)據(jù)庫理論開發(fā)功底。</p><p> (3)具有對復(fù)雜表進(jìn)行處理的能力。</p><p> (4)具體問題再做詳細(xì)調(diào)查研究并與指導(dǎo)老師面談。<
16、/p><p> 1.3.2 可行性分析</p><p> (1)技術(shù)可行性-----本系統(tǒng)僅需要一臺裝有Office軟件的計(jì)算機(jī)即可,對機(jī)器本身沒有太高的要求,一般當(dāng)前學(xué)?;騻€人電腦完全可滿足要求。對于軟件技術(shù)要求,現(xiàn)在的程序設(shè)計(jì)語言已非常成熟,要運(yùn)用HTML樣式,圖形圖象制作工具來制作生動活潑的網(wǎng)頁及美觀的圖形文件或動畫文件,數(shù)據(jù)庫使用SQL Server 2000中提供的數(shù)據(jù)庫桌面工具
17、ODBC。</p><p> (2) 經(jīng)濟(jì)可行性-----由于本系統(tǒng)是為學(xué)生選課管理使用的系統(tǒng),裝上該應(yīng)用軟件,即可使用系統(tǒng),系統(tǒng)成本主要集中在系統(tǒng)軟件的開發(fā)上,當(dāng)系統(tǒng)投入運(yùn)行后可以為學(xué)校節(jié)約大量的人力,物力。所帶來的效益遠(yuǎn)遠(yuǎn)大于系統(tǒng)軟件的開發(fā)成本。在經(jīng)濟(jì)上完全可行。</p><p> (3) 操作可行性-----界面設(shè)計(jì)時充分考慮管理人員的習(xí)慣,使得操作簡單;數(shù)據(jù)錄入迅速、規(guī)范、可靠
18、;統(tǒng)計(jì)準(zhǔn)確;制表靈活;適應(yīng)力強(qiáng);容易擴(kuò)充。第2章內(nèi)容主要是:系統(tǒng)需求分析包括,現(xiàn)有系統(tǒng)介紹;系統(tǒng)的實(shí)體分析,實(shí)體關(guān)系圖。</p><p> 2 系統(tǒng)分析與總體設(shè)計(jì)</p><p><b> 2.1系統(tǒng)分析</b></p><p> 在本系統(tǒng)中,有三類用戶:系統(tǒng)管理員,教師和學(xué)生。三種不同的用戶所具有的操作權(quán)限以及操作內(nèi)容均不一樣。<
19、/p><p> 本選課系統(tǒng)給予教師很大的自主權(quán),系統(tǒng)管理員只負(fù)責(zé)向系統(tǒng)中添加學(xué)生和教師的個人信息以及教學(xué)樓教室信息。系統(tǒng)管理員不參與開設(shè)課程、選擇課程等,一切均由教師、學(xué)生等錄網(wǎng)站自行完成。系統(tǒng)管理員設(shè)置一個選課時間段,在到達(dá)時間段以前,教師可以開設(shè)課程;到達(dá)時間段以后,學(xué)生可以登陸網(wǎng)站選擇課程。</p><p> 教師用戶登陸網(wǎng)站后可以開設(shè)課程,為自己的課程編輯上課時間和地點(diǎn),當(dāng)系統(tǒng)中出
20、現(xiàn)時間地點(diǎn)沖突的時候,系統(tǒng)向教師用戶報(bào)告并推薦一個時間地點(diǎn)。每門課程可以是必修或則選修,教師為每門課程設(shè)置一個學(xué)分,并可以在課程結(jié)束后給予分?jǐn)?shù),如果學(xué)生及格,學(xué)生將獲得該課程的學(xué)分。</p><p> 對于學(xué)生用戶,每個學(xué)生除了必須選擇必修課程外,至少還要選擇兩門選修課程,學(xué)生可以對自己選課信息鎖定,以免不小心被修改。當(dāng)時候超過選課時段后,系統(tǒng)自動鎖定學(xué)生的選課課程。系統(tǒng)可以根據(jù)學(xué)生的選課信息,生成一份學(xué)生自己
21、的課表。課程結(jié)束后學(xué)生可登錄網(wǎng)站查詢成績與學(xué)分。</p><p> 根據(jù)上面的要求,從操作功能上可以分為兩個類:一個是通用操作,主要實(shí)現(xiàn)用戶的登錄注銷和修改密碼等;另一種是為不同用戶定制不同操作。</p><p><b> 1.通用操作</b></p><p><b> (1)登錄與注銷</b></p>
22、<p> 每個用戶都可以用自己的帳號登錄系統(tǒng)。用戶操作完成后推出系統(tǒng),注銷后可以重新登錄系統(tǒng)。</p><p><b> (2)修改密碼</b></p><p> 每個用戶第一次登錄都用默認(rèn)密碼(教師和學(xué)生與帳號一樣)。</p><p><b> 2.用戶所具有功能</b></p><
23、;p><b> (1)系統(tǒng)管理員</b></p><p> 設(shè)置選課時間段:系統(tǒng)管理員通過此項(xiàng)功能設(shè)置選課時段,只有在選課時間段里,學(xué)生才可以選擇課程,超過次時間段,學(xué)生選課信息被自動所定,不得修改。</p><p> 錄入學(xué)生與教師個人信息:通過此項(xiàng)功能可以實(shí)現(xiàn)對教師和學(xué)生的個人信息添加刪除。</p><p> 錄入教學(xué)樓教室信
24、息:通過此項(xiàng)功能可以把學(xué)校里所有的教學(xué)樓教室的信息錄入到系統(tǒng)中,以便教師在開設(shè)課程時候設(shè)置上課的教室。</p><p><b> (1)教師用戶</b></p><p> 顯示和修改個人信息:教師用戶登錄系統(tǒng)后,可以查看和修改教師的個人信息,如姓名,電話,E-mail地址等。</p><p> 開設(shè)課程:教師用戶登錄系統(tǒng)后,可以開設(shè)課程,
25、可以設(shè)置該課程為必修課程或則選修課程,可以設(shè)置該課程的最大人數(shù)。教師還可以為該課程設(shè)置一個前導(dǎo)課程,若學(xué)生沒有學(xué)習(xí)或則選擇前導(dǎo)課程則不能選擇該課程。</p><p> 編輯課程上課時間:教師在開設(shè)了課程后,可以靈活地設(shè)置上課時間和地點(diǎn)。</p><p> 給學(xué)生分?jǐn)?shù):課程結(jié)束后,教師用戶登錄系統(tǒng),可以為學(xué)過課程的學(xué)生給予相應(yīng)的成績,若</p><p> 及格,
26、給予學(xué)生學(xué)分。</p><p><b> (1)學(xué)生用戶</b></p><p> 顯示和修改個人信息:學(xué)生登錄系統(tǒng)后,可以查看和修改學(xué)生的個人信息,如姓名,性別,電話等。</p><p> 查看必修課程:學(xué)生登錄后,可以查看所有的必修課程。查看該課程的信息,上課時間地點(diǎn),開課教師信息等。</p><p> 選擇
27、選修課程:學(xué)生登錄系統(tǒng)后,在所有選修課程中可以選擇至少兩門選修課程。同時可以查看相關(guān)信息。</p><p> 鎖定選課信息:學(xué)生登錄系統(tǒng),確定了所選課程后,可以鎖定自己的選課信息,以防被別人或則自己不小心修改。</p><p> 查看最終選課信息:學(xué)生登錄系統(tǒng)后,可列出已選擇的課程,若選課信息未被鎖定,則可以退選,若所選課程少于兩門,系統(tǒng)會提示選擇的課程少于兩門。</p>
28、<p><b> 查看學(xué)分和成績</b></p><p> 課程結(jié)束后,學(xué)生登錄系統(tǒng)可查看自己學(xué)習(xí)課程的成績和已獲的學(xué)分。</p><p> 2.2 系統(tǒng)總體設(shè)計(jì)</p><p> 在前面的系統(tǒng)的系統(tǒng)功能分析中,將系統(tǒng)劃分成10個模塊,如圖:</p><p> 用戶登錄身份驗(yàn)證模塊驗(yàn)證用戶名和密碼,
29、并根據(jù)不同的用戶類型,跳轉(zhuǎn)到對應(yīng)的頁面中。設(shè)置選課時間模塊提供給系統(tǒng)管理員修改選課時間段。錄入信息模塊提供給系統(tǒng)管理員,用來錄入學(xué)生和教師信息,以及錄入教學(xué)樓教室等信息。開設(shè)課程模塊提供給教師用戶,用來開設(shè)一門必修課程或則選修課程。編輯課程時間地點(diǎn)模塊提供給教師用戶,編輯課程的上課時間地點(diǎn)友好的界面和操作。評分模塊用于教師用戶給選修該教師開設(shè)的課程的學(xué)生評分。查看課程模塊包括查看必修課程、查看選修課程、查看已選課程、查看課程成績單。選課
30、和鎖定模塊中實(shí)現(xiàn)選擇選修課程和鎖定選課信息的功能</p><p> 3 數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)</p><p> 數(shù)據(jù)庫是此類系統(tǒng)的核心,系統(tǒng)中所有的信息都存儲在數(shù)據(jù)庫中,在所有ASP.NET頁面中通過ADO.NET與數(shù)據(jù)庫連接,操作數(shù)據(jù)庫中的數(shù)據(jù),從而實(shí)現(xiàn)所有需要的功能。數(shù)據(jù)庫軟件有很多,如Microsoft SQL Server 2000等。本系統(tǒng)中數(shù)據(jù)庫采用Microsoft SQL
31、Server 2000作為數(shù)據(jù)庫工具。數(shù)據(jù)庫是網(wǎng)站的核心,數(shù)據(jù)庫設(shè)計(jì)的合理與否對網(wǎng)站的建設(shè)有著至關(guān)重要的影響。一個良好的數(shù)據(jù)庫開發(fā)過程一般是先系統(tǒng)分析,再邏輯設(shè)計(jì),然后物理實(shí)現(xiàn)。系統(tǒng)分析中分析數(shù)據(jù)庫用戶需求,并畫出E-R圖直觀地表示出數(shù)據(jù)庫系統(tǒng)的需求。邏輯設(shè)計(jì)中根據(jù)系統(tǒng)分析設(shè)計(jì)的一個關(guān)系模型。物理設(shè)計(jì)為邏輯設(shè)計(jì)中的數(shù)據(jù)模型選取一個最合理的應(yīng)用環(huán)境的物理結(jié)構(gòu),通常選取一個常用數(shù)據(jù)庫軟件,用數(shù)據(jù)庫軟件創(chuàng)建與邏輯設(shè)計(jì)中數(shù)據(jù)模型對應(yīng)的數(shù)據(jù)庫。&
32、lt;/p><p> 3.1數(shù)據(jù)庫系統(tǒng)分析</p><p> 本系統(tǒng)的數(shù)據(jù)庫實(shí)體主要有“學(xué)生”、“教師”、“教學(xué)樓”、“教室”、“課程”等。其中“教師”與“課程”存在“開設(shè)”聯(lián)系,并且一個教師可以開設(shè)N門課程,即“教師”與“課程”之間是一對多的關(guān)系。同樣“教學(xué)樓”與“教室”也存在一對多的關(guān)系。一個學(xué)生可以學(xué)習(xí)N門課程,一門課程可以有M個學(xué)生學(xué)習(xí),即“學(xué)生”與“課程”之間是多對多的關(guān)系。同樣
33、“課程”與“教室”之間也是多對多的關(guān)系。整個數(shù)據(jù)庫可以用一個E-R圖表示,如圖:</p><p> E—R圖中的實(shí)體圖:</p><p> 3.2 數(shù)據(jù)庫邏輯設(shè)計(jì)</p><p> 數(shù)據(jù)庫邏輯設(shè)計(jì)就是將E—R圖轉(zhuǎn)換為關(guān)系模型的過程,即將所有實(shí)體和關(guān)系轉(zhuǎn)換成一系列的關(guān)系模式。轉(zhuǎn)換過程中常見規(guī)則有:</p><p> (1)一個實(shí)體型轉(zhuǎn)換
34、為一個關(guān)系模式;</p><p> (2)一個一對一的聯(lián)系可轉(zhuǎn)換成一個獨(dú)立的關(guān)系模式,也可與任意一端對應(yīng)的關(guān)系模式合并;</p><p> (3)一個一對多的聯(lián)系可以轉(zhuǎn)換成一個獨(dú)立的關(guān)系模式,也可與多的那一端對應(yīng)的關(guān)系模式合并;</p><p> (4)一個多對多的關(guān)系轉(zhuǎn)換成一個關(guān)系模式。</p><p> 根據(jù)以上四條規(guī)則,下面將E
35、—R圖轉(zhuǎn)換成關(guān)系模型。</p><p> 對于“教學(xué)樓”、“教室”和兩者之間的關(guān)系,就可以根據(jù)規(guī)則(3)轉(zhuǎn)換成兩個關(guān)系模式</p><p> 教學(xué)樓(教學(xué)樓ID,教學(xué)樓名稱)</p><p> 教室(教室ID,教學(xué)樓ID,教室名稱)</p><p> 對于“學(xué)生”、“課程”和它們之間的“選修”關(guān)系就可以規(guī)則(4)轉(zhuǎn)換成三個關(guān)系模式。&
36、lt;/p><p> 學(xué)生(學(xué)號,姓名,性別,年齡,登陸密碼,學(xué)分,地址,電話,電子郵件)</p><p> 課程(課程編碼,課程名稱,開課教師編號,學(xué)分,最大人數(shù),課程簡介,前導(dǎo)課程編號)</p><p> 選課(學(xué)號,課程編號,成績)</p><p> 依次類推,剩下的關(guān)系轉(zhuǎn)換成下面三個關(guān)系模式:</p><p&g
37、t; 教師(教師編號,姓名,性別,年齡,電話,電子郵件,個人簡介)</p><p> 課程時間地點(diǎn)(課程編號,開始周次,結(jié)束周次,上課時間,上課教室ID)</p><p> 管理員(帳號,密碼)</p><p> 3.3數(shù)據(jù)庫物理實(shí)現(xiàn)</p><p> 經(jīng)過數(shù)據(jù)庫系統(tǒng)分析和邏輯設(shè)計(jì)后,數(shù)據(jù)庫的結(jié)構(gòu)已經(jīng)非常清晰,剩下的就是用一種數(shù)據(jù)庫
38、軟件實(shí)現(xiàn)這樣的結(jié)構(gòu)。本系統(tǒng)中數(shù)據(jù)庫采用Microsoft SQL Server 2000作為數(shù)據(jù)庫。首先我們在Microsoft SQL Server 2000的“企業(yè)管理器”創(chuàng)建一個數(shù)據(jù)庫,我們命名為“SC”,如圖3-1:</p><p><b> 圖3-1</b></p><p> 選中SC數(shù)據(jù)庫,向數(shù)據(jù)庫中添加8個表:Student,Teacher,Cour
39、se,SC,CourseTime,Building,Room和Admin,每個表與邏輯設(shè)計(jì)中一種的關(guān)系模式相對應(yīng)。下面是每個數(shù)據(jù)表中的屬性,包括屬性列的名稱、數(shù)據(jù)類型、長度、是否可以為空和備注說明等內(nèi)容。</p><p> (1)Student表。Student表用來存儲學(xué)生的個人信息,使用學(xué)號作為主鍵,如圖3-2:</p><p><b> 圖3-2</b>&l
40、t;/p><p> (2)Teacher表。Teacher表用來存儲教師的個人信息,用學(xué)校分配給教師的教師編號作為主鍵,這樣可以避免重復(fù),如圖3-3:</p><p><b> 圖3-3</b></p><p> (3)Course表。Course表用來存儲課程信息,Course表以課程編號為主鍵,設(shè)置課程編號自動增加1(通過建表的時候?qū)傩?/p>
41、列設(shè)置“標(biāo)識”,并設(shè)置“標(biāo)識遞增量”為1)。表中開課教師Id為外鍵,所有“TId”的值必須是Teacher表中的“TId”值。設(shè)置外鍵關(guān)系可以通過在建立表的窗口中單擊右鍵,在右鍵菜單中選擇“關(guān)系”,在彈出的對話框中設(shè)置外鍵關(guān)系。如圖3-4:</p><p><b> 圖3-4</b></p><p> (4)SC表。SC表用于存儲學(xué)生的選課信息,在SC表中學(xué)號和課
42、程編號是主鍵,同時也是外鍵。如圖3-5:</p><p><b> 圖3-5</b></p><p> (5)CourseTime表。CourseTime表用來存放課程的上課時間和上課地點(diǎn)信息,其中課程編號和教室編號為外鍵。如圖3-6:</p><p><b> 圖3-6</b></p><p&g
43、t; (6)Building表。Building表用來存放教學(xué)樓信息,Building表中教學(xué)樓編號為主鍵,自動增加1。如圖3-7:</p><p><b> 圖3-7</b></p><p> (7)Room表。Room表用來存放教室信息,在Room表中,教室編號為主鍵,自動增加1,教學(xué)編號為外鍵。如圖3-8:</p><p><
44、b> 圖3-8</b></p><p> (8)Admin表。Admin表用來存放系統(tǒng)管理員信息,如圖3-9:</p><p><b> 圖3-9</b></p><p> 4公共類與公共頁面設(shè)計(jì)</p><p> 4.1 Web.config頁面設(shè)計(jì)</p><p>
45、 Web.Config文件是用來保存網(wǎng)站的很多全局設(shè)置,代碼是通過using Configuration引用,在Web.Config文件中添加數(shù)據(jù)庫連接字符串。在ADO.NET中用一個字符串來表示一個數(shù)據(jù)庫,一般都把這個字符串放到Web.Config文件中,在整個項(xiàng)目中均可使用。</p><p> <?xml version="1.0" encoding="utf-8&qu
46、ot; ?></p><p> <configuration></p><p> <system.web></p><p> <!-- 動態(tài)調(diào)試編譯設(shè)置 compilation debug="true" 以啟用 ASPX 調(diào)試。否則,將此值設(shè)置為</p><p> false
47、將提高此應(yīng)用程序的運(yùn)行時性能。</p><p> 設(shè)置 compilation debug="true" 以將調(diào)試符號(.pdb 信息)</p><p> 插入到編譯頁中。因?yàn)檫@將創(chuàng)建執(zhí)行起來</p><p> 較慢的大文件,所以應(yīng)該只在調(diào)試時將此值設(shè)置為 true,而在所有其他時候都設(shè)置為false。有關(guān)更多信息,請參考有調(diào)試 ASP.N
48、ET 文件的文檔--></p><p> <compilation </p><p> defaultLanguage="c#"</p><p> debug="true"</p><p><b> /></b></p><p>
49、 <!-- 自定義錯誤信息</p><p> 設(shè)置 customErrors mode="On" 或 "RemoteOnly" 以啟用自定義錯誤信息,或設(shè)置為 "Off" 以禁用自定義錯誤信息。 </p><p> 為每個要處理的錯誤添加 <error> 標(biāo)記。</p><p>
50、"On" 始終顯示自定義(友好的)信息。</p><p> "Off" 始終顯示詳細(xì)的 ASP.NET 錯誤信息。</p><p> "RemoteOnly" 只對不在本地 Web 服務(wù)器上運(yùn)行的</p><p> 用戶顯示自定義(友好的)信息。出于安全目的,建議使用此設(shè)置,以便 </p>
51、<p> 不向遠(yuǎn)程客戶端顯示應(yīng)用程序的詳細(xì)信息。</p><p><b> --></b></p><p> <customErrors </p><p> mode="RemoteOnly" </p><p><b> /> </b>&
52、lt;/p><p> <!-- 身份驗(yàn)證 </p><p> 此節(jié)設(shè)置應(yīng)用程序的身份驗(yàn)證策略。可能的模式是 "Windows"、 </p><p> "Forms"、 "Passport" 和 "None"</p><p> "None&qu
53、ot; 不執(zhí)行身份驗(yàn)證。 </p><p> "Windows" IIS 根據(jù)應(yīng)用程序的設(shè)置執(zhí)行身份驗(yàn)證 </p><p> (基本、簡要或集成 Windows)。在 IIS 中必須禁用匿名訪問。</p><p> "Forms" 您為用戶提供一個輸入憑據(jù)的自定義窗體(Web 頁),然后 </p><
54、p> 在您的應(yīng)用程序中驗(yàn)證他們的身份。用戶憑據(jù)標(biāo)記存儲在 Cookie 中。</p><p> "Passport" 身份驗(yàn)證是通過 Microsoft 的集中身份驗(yàn)證服務(wù)執(zhí)行的,</p><p> 它為成員站點(diǎn)提供單獨(dú)登錄和核心配置文件服務(wù)。</p><p><b> --></b></p>
55、<p> 4.2 數(shù)據(jù)庫連接操作類—Db類</p><p> 在ASP.NET中通過ADO.NET技術(shù)對數(shù)據(jù)庫進(jìn)行操作。ADO.NET中有許多很方便的類可用來操作數(shù)據(jù)庫,例如SqlConnection類、SqlDataAdapter類、SqlCommand類、DataSet類等。由于在選課系統(tǒng)中,操作數(shù)據(jù)庫的地方非常多,為了避免很多重復(fù)代碼的編寫,所以對數(shù)據(jù)庫操作做了簡單的封裝—Db類。在Db類
56、中有三個靜態(tài)函數(shù)ExecuteSelectSql、ExecuteSql和ExecuteInsertSql,其中ExecuteSelectSql函數(shù)用來執(zhí)行查詢操作,ExecuteSql用來執(zhí)行修改、插入和刪除三類操作,ExecuteInsertSql執(zhí)行需要返回剛插入記錄的identity的insert語句。</p><p> 通過ADO.NET執(zhí)行SQL語句從而對數(shù)據(jù)庫進(jìn)行操作,一般順序?yàn)椋合韧ㄟ^SqlCon
57、nection的Open函數(shù)連接到數(shù)據(jù)庫,然后再通過Sqlcommand執(zhí)行指定的SQL語句,執(zhí)行結(jié)束后再調(diào)用SqlConnection的Close函數(shù)關(guān)閉數(shù)據(jù)庫連接。</p><p> ExecuteSelectSql函數(shù)的代碼如下:</p><p> /// <summary></p><p> /// 執(zhí)行select類型的sql語句,返回s
58、elect得到的數(shù)據(jù)集</p><p> /// </summary></p><p> /// <param name="sqlSelect">select語句</param></p><p> /// <returns>返回select得到的數(shù)據(jù)集</returns></
59、p><p> public static DataSet ExecuteSelectSql( string sqlSelect </p><p><b> {</b></p><p> SqlConnection conn = new SqlConnection(connString);</p><p> SqlD
60、ataAdapter sda = new SqlDataAdapter(sqlSelect,conn);</p><p> DataSet ds = new DataSet();</p><p><b> try</b></p><p><b> {</b></p><p> sda.Fil
61、l(ds);</p><p><b> }</b></p><p> catch(SqlException e)</p><p><b> {</b></p><p> throw new Exception(e.Message);</p><p><b>
62、 }</b></p><p> return ds;</p><p><b> } </b></p><p> ExecuteSql函數(shù)代碼如下:</p><p> public static int ExecuteSql( string sql )</p><p> 4.
63、3 工具類MyUtility類</p><p> 在網(wǎng)站的編寫過程中經(jīng)常會有很多公共函數(shù)調(diào)用,把它們都寫在一個工具類里:MyUtility類,每個函數(shù)作為工具類的一個靜態(tài)成員函數(shù)。其中包括MD5靜態(tài)成員函數(shù)以及Alert靜態(tài)成員函數(shù)。</p><p> MD5靜態(tài)成員函數(shù):MD5算法。MD5算法是一個不可逆的加密算法,通常用于重要信息的加密,如登錄密碼,在ASP.NET中,提供有MD5
64、的算法實(shí)現(xiàn)函數(shù),調(diào)用MD5算法代碼如下:</p><p> public static string MD5(string str)</p><p><b> {</b></p><p> string result = "";</p><p> result = FormsAuthentic
65、ation.HashPasswordForStoringInConfigFile(str,"MD5");</p><p> return result;</p><p><b> }</b></p><p> Alert靜態(tài)成員函數(shù)的功能是顯示一個提示對話框,在網(wǎng)站的運(yùn)行過程中,經(jīng)常需要給用戶一些即時反饋,比如修改密碼
66、成功,選課成功等提示框。代碼如</p><p><b> 下:</b></p><p> public static string Alert(string s)</p><p><b> {</b></p><p> return "<script language=\&q
67、uot;javascript\">alert(\""+s+"\");</script>";</p><p><b> }</b></p><p> Back函數(shù)的功能是回退到某個網(wǎng)頁,i的取值通常為負(fù),當(dāng)為-1時表示回退到上一個網(wǎng)頁,為-2時表示回退到上上個網(wǎng)頁,依次類推。代碼如下:&l
68、t;/p><p> public static string Back(int i)</p><p><b> {</b></p><p> return "<script language=\"javascript\">location.href=\"javascript:history.
69、go("+i+");\";</script>";</p><p><b> }</b></p><p> 4.4 錯誤信息類和錯誤顯示頁面</p><p> 在用戶使用系統(tǒng)過程中,可能由于用戶操作失敗或則網(wǎng)絡(luò)原因等,系統(tǒng)運(yùn)行會出現(xiàn)一些錯誤,為了便于統(tǒng)一,本系統(tǒng)定義專用的錯誤信息類和錯誤顯
70、示頁面。在錯誤信息類ErrorInfo類中,定義了所有的本系統(tǒng)中所出現(xiàn)的錯誤情況和函數(shù)Message。函數(shù)Message根據(jù)錯誤情況得到相應(yīng)顯示字符串。錯誤顯示頁面根據(jù)URL中錯誤代碼參數(shù)顯示不同的錯誤信息。</p><p><b> 4.5登錄頁面</b></p><p> 登錄頁面是所有用戶公用的功能。不同的用戶登錄到系統(tǒng)中將轉(zhuǎn)向不同的頁面。解決方法運(yùn)用了AS
71、P.NET的內(nèi)置對象Session記錄用戶登錄信息,同樣也可以在網(wǎng)站里隨時判斷用戶是否已經(jīng)登錄。</p><p><b> 5 系統(tǒng)說明書</b></p><p><b> 5.1系統(tǒng)界面說明</b></p><p> 下面是在線選課系統(tǒng)的預(yù)覽,此處簡單介紹本系統(tǒng)的部分功能。</p><p>
72、 1.登錄頁面,如圖5-1:</p><p><b> 圖5-1</b></p><p> 在用戶名和密碼處輸入用戶名和密碼,在“用戶類型”下拉列表框中選擇“學(xué)生”,單擊“登錄”按鈕,登錄選課系統(tǒng)。</p><p><b> 主要代碼如下:</b></p><p> private voi
73、d btnLogin_Click(object sender, System.EventArgs e)</p><p><b> {</b></p><p> int type = Int32.Parse(ddlType.SelectedItem.Value);</p><p> string user = txtUser.Text.Tr
74、im();</p><p> string inputkey = txtKey.Text.Trim();</p><p> string key = "";</p><p> string sql = "";</p><p> DataSet ds;</p><p>
75、switch( type )</p><p><b> {</b></p><p> case 1://學(xué)生</p><p> //驗(yàn)證學(xué)生身份代碼 </p><p><b> break;</b></p><p> cas
76、e 2://教師</p><p> //驗(yàn)證教師身份代碼</p><p><b> break;</b></p><p> case 3://系統(tǒng)管理員</p><p> //驗(yàn)證管理員身份代碼</p><p><b> break;</b></p
77、><p><b> default;</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> 查看必修課程列表頁面,如圖5-2:&l
78、t;/p><p><b> 圖5-2</b></p><p> 登錄成功后,進(jìn)入學(xué)生主頁,點(diǎn)擊“必修課程”鏈接,得到所有必修課程的列表,在列表中可以看到所有必修課程及課程的簡單信息,如授課教師姓名、課程所占學(xué)分等。</p><p> 在列表中可以點(diǎn)課程名稱,如“計(jì)算機(jī)應(yīng)用基礎(chǔ)”鏈接,查看課程詳細(xì)信息;點(diǎn)教師姓名,如“李萍”鏈接,查看教師的詳細(xì)
79、信息;點(diǎn)擊“查看上課時間地點(diǎn)”鏈接,查看對應(yīng)課程的上課時間和地點(diǎn)。</p><p> 在頁面加載的時候從數(shù)據(jù)庫讀取所有必修課信息,代碼如下:</p><p> string sql = "select Course.*,TName from Course,Teacher where CType like '必修' and Course.TId like Tea
80、cher.TId";//查詢處所有必修課程信息</p><p> DataSet ds = Db.ExecuteSelectSql(sql);</p><p> if ( ds != null && ds.Tables.Count > 0 )</p><p><b> {</b></p>&l
81、t;p> dgCourse.DataSource = ds.Tables[0];</p><p> dgCourse.DataBind();//將查詢結(jié)果綁定到DataGrid中</p><p><b> }</b></p><p> 查看選修課程列表頁面,如圖5-3:</p><p><b>
82、 圖5-</b></p><p> 5.2 系統(tǒng)管理說明</p><p> 系統(tǒng)管理員主要有三個功能需要實(shí)現(xiàn):設(shè)置選課時間段、錄入學(xué)生和教師信息、錄入教學(xué)樓教室信息。</p><p> 設(shè)置開始選課時間段:選課時間段存儲在項(xiàng)目目錄下的time.txt文件中。文件中第一行表示開始時間,第二行表示結(jié)束時間。如圖5-5:</p><p
83、><b> 如圖5-5</b></p><p><b> 設(shè)置時間代碼如下:</b></p><p> DateTime dtStart,dtEnd;</p><p><b> Tr)</b></p><p> dtStart = DateTime.Parse(
84、txttimeStart.Text);</p><p> dtEnd = DateTime.Parse(txtTimeEnd.Text);</p><p><b> }</b></p><p><b> catch</b></p><p><b> {</b></
85、p><p> Response.Write(MyUtility.Alert("輸入錯誤"));</p><p><b> return;</b></p><p><b> }</b></p><p> StreamWriter sw = new StreamWriter(&q
86、uot;http://localhost/sc/login.aspx",false);</p><p> sw.WriteLine(dtStart.ToString());//寫入開始時間</p><p> sw.WriteLine(dtEnd.ToString());//寫入結(jié)束時間</p><p> sw.Close();</p>
87、<p> lbTime.Text = "選課時間為:"+dtStart.ToString()+"到"+dtEnd.ToString(); //更新選課時間段顯示</p><p> 錄入學(xué)生和教師信息:在AdminUser.Aspx中,用與錄入學(xué)生和教師信息。如圖5-6:</p><p><b> 圖5-6</b>
88、;</p><p><b> 添加教師代碼如下:</b></p><p> private void btnAddTearcher_Click(object sender, System.EventArgs e)</p><p><b> {</b></p><p> string sql
89、= "insert into Teacher(TId,TKey,TName) values('"+txtTId.Text.Trim()</p><p> +"','"+MyUtility.MD5(txtTId.Text.Trim())+"','"+txtTName.Text.Trim()+"')
90、";</p><p><b> try</b></p><p><b> {</b></p><p> if ( Db.ExecuteSql(sql) == 1 )</p><p><b> {</b></p><p> sql =
91、"select * from Teacher";</p><p> DataSet ds1 = Db.ExecuteSelectSql(sql);</p><p> if ( ds1 != null && ds1.Tables.Count > 0 )</p><p><b> {</b></
92、p><p> dgViewT.DataSource = ds1.Tables[0]</p><p> dgViewT.DataBind();</p><p><b> }</b></p><p><b> }</b></p><p><b> else<
93、/b></p><p><b> {</b></p><p> Response.Write( MyUtility.Alert("添加失敗-_-,請檢查編號是否已經(jīng)存在!") );</p><p><b> return;</b></p><p><b>
94、 }</b></p><p><b> }</b></p><p><b> catch</b></p><p><b> {</b></p><p> Response.Write( MyUtility.Alert("添加失敗-_-,請檢查編號是
95、否已經(jīng)存在!") );</p><p><b> return;</b></p><p><b> }</b></p><p><b> }</b></p><p> 錄入教學(xué)樓教室信息:在AdminRoom.Aspx中,教學(xué)樓和教室的管理主要包括添加和刪除操
96、作,添加一個教室必須指定其所屬的教學(xué)樓。如圖5-7:</p><p><b> 圖5-7</b></p><p> 添加教學(xué)樓代碼如下:</p><p> private void btnAddBuilding_Click(object sender, System.EventArgs e)</p><p><
97、;b> {</b></p><p> if ( txtBuilding.Text.Trim() == "" )</p><p><b> {</b></p><p> Response.Write(MyUtility.Alert("請輸入教學(xué)樓名稱!"));</p>
98、<p><b> return;</b></p><p><b> }</b></p><p> string sql = "insert into Building(BuildingName) values('"+txtBuilding.Text.Trim()+"')";
99、</p><p> Db.ExecuteSql(sql);</p><p><b> }</b></p><p><b> 5.2教師管理說明</b></p><p> 教師用戶的功能需求有個人信息的管理、開設(shè)課程、課程時間地點(diǎn)編輯、設(shè)置學(xué)生成績。</p><p>
100、 教師個人信息:在Teacher.Aspx中,在這里可以修改密碼和添寫教師個人信息。如圖5-10:</p><p><b> 如圖5-10 </b></p><p> Response.Write(MyUtility.Alert("修改成功!"));</p><p><b> else</b>&
101、lt;/p><p> Response.Write(MyUtility.Alert("修改失??!"));</p><p> 開設(shè)課程:在NewCourse.Aspx中,在這里可以添加新課程,其中包括課程名稱、課程類型、 學(xué)分、前導(dǎo)課程、最大人數(shù)、課程介紹。如圖5-11:</p><p><b> 如圖5-11&l
102、t;/b></p><p> 從數(shù)據(jù)庫讀取所有課程編號和課程名稱代碼如下:</p><p> ddlCPreCId.Items.Clear();</p><p> ddlCPreCId.Items.Add("請選擇");</p><p> string sql = "select CId,CName
103、 from Course";</p><p> DataSet ds = Db.ExecuteSelectSql(sql);</p><p> if ( ds != null && ds.Tables.Count > 0 )</p><p><b> {</b></p><p>
104、for ( int i = 0; i < ds.Tables[0].Rows.Count; i++ )</p><p> ddlCPreCId.Items.Add( new </p><p> ListItem( ds.Tables[0].Rows[i]["CName"].ToString(), ds.Tables[0].Rows[i]["CId&q
105、uot;].ToString() ) );</p><p><b> }</b></p><p> ddlCPreCId.SelectedIndex = 0;</p><p> 課程時間地點(diǎn)編輯:在TeacherMain.Aspx中,在這里可以編輯課程時間和地點(diǎn)。如圖5-12:</p><p><b>
106、 6 總結(jié)</b></p><p> 經(jīng)過幾個月的學(xué)習(xí),研究和開發(fā),我選擇的課題學(xué)生選課系統(tǒng)基本完成。其功能基本符合網(wǎng)絡(luò)上的用戶要求,能夠在線選課,在線添加課程,在線查詢課程等。雖然由于自己知識上的不足,有些地方有少許錯誤和容錯性能比較低,但是還是可以基本完成選課系統(tǒng)應(yīng)有的功能。</p><p> 通過畢業(yè)設(shè)計(jì)過程我會到了許多知識,這也是在大學(xué)里第一次比較完整的完成一個小項(xiàng)
107、目,雖然過程中遇到了許多困難,在同學(xué)和老師的幫助下一一克服了。通過不斷的發(fā)現(xiàn)問題,總結(jié)問題和解決問題的過程,使我在此次畢業(yè)設(shè)計(jì)活動中不斷的提高,和得到了寶貴的經(jīng)驗(yàn)。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]吳晨,《ASP.NET+SQL Server-數(shù)據(jù)庫開發(fā)與實(shí)例》,清華大學(xué)出版社,出版2006年7月</p><
108、p> [2](美)內(nèi)格爾,《C#高級編程(第4版)》,清華大學(xué)出版社,出版2006年10月</p><p> [3](美)solid,《SQLServer2005從入門與精通(應(yīng)用技術(shù)基礎(chǔ))》,清華大學(xué)出版社,出版2006年09月</p><p> [4](美)保羅《ASP.NET 2.0經(jīng)典教程C#篇》人民郵電出版社,出版2007年5月</p><p>
109、;<b> 致 謝</b></p><p> 由于以前對ASP.NET的接觸并不是很多,對它的開發(fā)環(huán)境也不是非常了解,所以在程序的開發(fā)過程中遇到了很多的困難,但經(jīng)過同學(xué)和xxx老師的幫助,逐漸克服了困難,并從中學(xué)到</p><p> 了很多SQL數(shù)據(jù)庫編程方面的知識。但是由于經(jīng)驗(yàn)方面的原因,以及對物流配送方面的操作流程了解不夠深刻,該系統(tǒng)還有許多不盡如人意的
110、地方和功能上的缺陷,這些都有待于進(jìn)一步改善。</p><p> 論文完成的前提是xxx老師給我提供了舒適的工作、學(xué)習(xí)環(huán)境,并給予我悉心的關(guān)懷與指導(dǎo)。在些表示衷心地感謝。老師認(rèn)真負(fù)責(zé)的工作態(tài)度、嚴(yán)謹(jǐn)?shù)闹螌W(xué)風(fēng)格,使我深受啟發(fā);開發(fā)的同時,和同學(xué)們之間的相互探討也使我獲益匪淺。幾個月的時間內(nèi),我除基本學(xué)會開發(fā)SQL數(shù)據(jù)庫外更重要的是學(xué)到了兢兢業(yè)業(yè),奮發(fā)向上的精神,這種精神是我今后人生前進(jìn)道路上的一種力量。所以我再次感
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 機(jī)電學(xué)院畢業(yè)設(shè)計(jì)封面.doc
- 機(jī)電學(xué)院畢業(yè)設(shè)計(jì)封面.doc
- 機(jī)電學(xué)院畢業(yè)設(shè)計(jì)封面.doc
- 機(jī)電學(xué)院畢業(yè)設(shè)計(jì)(論文)說明書封面.doc
- 機(jī)電學(xué)院畢業(yè)設(shè)計(jì)(論文)說明書封面.doc
- 機(jī)電學(xué)院畢業(yè)設(shè)計(jì)(論文)說明書封面.doc
- 機(jī)電學(xué)院畢業(yè)設(shè)計(jì)(論文)說明書封面.doc
- 安徽機(jī)電學(xué)院畢業(yè)設(shè)計(jì)(論文)選題審批表
- 機(jī)電學(xué)院畢業(yè)設(shè)計(jì)(論文)說明書封面.doc
- 機(jī)電學(xué)院畢業(yè)設(shè)計(jì)(論文)說明書封面.doc
- 關(guān)于選課系統(tǒng)畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)(論文)-學(xué)生選課系統(tǒng)設(shè)計(jì)
- 湖北黃岡職業(yè)技術(shù)學(xué)院機(jī)電學(xué)院畢業(yè)設(shè)計(jì)
- 網(wǎng)上選課系統(tǒng)畢業(yè)設(shè)計(jì)論文
- 機(jī)電學(xué)院本科畢業(yè)論文.doc
- 河北工程大學(xué)機(jī)電學(xué)院畢業(yè)設(shè)計(jì)(論文)模板-第一版.doc
- 西安郵電學(xué)院畢業(yè)設(shè)計(jì)(論文)工作程序
- 學(xué)生選課系統(tǒng)畢業(yè)設(shè)計(jì)
- 基于jsp的學(xué)生選課系統(tǒng)畢業(yè)設(shè)計(jì)
- 西安郵電學(xué)院畢業(yè)設(shè)計(jì)(論文)檢查辦法
評論
0/150
提交評論