版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
武漢理工大學(xué)武漢理工大學(xué)武漢理工大學(xué)武漢理工大學(xué)基于Qt的教務(wù)管理系統(tǒng)的實(shí)現(xiàn)摘要近年來(lái),由于計(jì)算機(jī)網(wǎng)絡(luò)與計(jì)算機(jī)軟件的不斷快速迅猛發(fā)展,人們的生活習(xí)慣也由此造成了很大的變化,并且計(jì)算機(jī)信息管理系統(tǒng)也越來(lái)越多的參與到人們的日常生活與工作中來(lái),對(duì)于我們學(xué)生來(lái)說(shuō),這種變化尤其巨大。信息的快速更新變化使得學(xué)校在學(xué)生信息的管理上投入的資源越來(lái)越多。所以,為了提高學(xué)校教務(wù)管理工作的效率,節(jié)約教務(wù)資源與經(jīng)費(fèi),并且減少教務(wù)處理工作中的失誤,有必要開發(fā)一套高效自動(dòng)化的計(jì)算機(jī)信息管理系統(tǒng)。本論文中的系統(tǒng)使用的開發(fā)工具是Qt,采用SqLite數(shù)據(jù)庫(kù),是在使用比較廣泛的windows下開發(fā),利用其提供的面向?qū)ο缶幊痰目梢暬ぞ邅?lái)編制出界面友好,操作簡(jiǎn)單的程序。此教務(wù)管理系統(tǒng)由后臺(tái)數(shù)據(jù)的處理部分與前臺(tái)應(yīng)用的交互部分組成,并且該系統(tǒng)可以根據(jù)用戶不同的權(quán)限來(lái)提供不同的操作,主要包括學(xué)生的成績(jī)管理、學(xué)生的學(xué)籍管理、學(xué)校的班級(jí)管理等。此教務(wù)管理系統(tǒng)的開發(fā)目的在于最大限度的節(jié)省人才資源的同時(shí)也可以提高管理效率,能夠及時(shí)、準(zhǔn)確、迅速的滿足不同用戶的不同需求。關(guān)鍵詞:教務(wù)管理系統(tǒng);Qt;SqLite;效率TheimplementationofeducationaladministrationsystembasedonQtAbstractInrecentyears,duetothecomputernetworkandcomputersoftwarecontinuouslyrdevelopmentquick,people'slifehabitalsocausedthegreatchanges,andcomputerinformationmanagementsystemisalsomoreandmoreinvolvedinthePeople'sDailylifeandwork,forourstudents,thischangeisespeciallylarge.Updateinformationchangetheschoolinthemanagementofstudentinformationresourcesmoreandmore.So,inordimprovetheefficiencyofschooleducationaladministrationwork,savingtheeducationalresourcesandfunds,andreducethefaultsinoureducationalwork,itisnecessarytoasetofefficientautomaticcomputerinformationmanagementsystem.SystemdevelopmenttoolsusedinthispaperistheQt,usingSqLitedatabase,isuseofmoreextensivedevelopmentundertheWindows,usingtheobject-orientedprogrammingofferedbythevisualtoolstodevelopthefriendlyinterface,simpleopprocedures.Theeducationaladministrationmanagementsystembythebackgrounddataprocessingpartandtheforegroundapplicationoftheinteractionoftheparts,andtcanprovidedifferentaccordingtodifferentuserpermissionstooperation,mainlyincludesthestudentperformancemanagement,studentstatusmanagement,schoolofclassmanagement,etc.Thedevelopmentoftheeducationaladministrationsystemisaimedatmaximumsaveresourcesatthesametimealsocanimprovetheefficiencyofmanagemenabletotimely,accuratelyandquicklytomeetthedifferentneedsofdifferentusers.KeyWords:Educationaladministrationmanagementsystem;Qt;Sqlite;efficienc目錄摘要................................................................................Abstract...............................................................................1系統(tǒng)概述...........................................................................1.1項(xiàng)目背景.....................................................................1.2系統(tǒng)開發(fā)的目的和意義.........................................................1.3目前國(guó)內(nèi)外的研究現(xiàn)狀.........................................................1.3.1國(guó)外研究現(xiàn)狀.............................................................1.3.2國(guó)內(nèi)研究現(xiàn)狀.............................................................2關(guān)鍵技術(shù)...........................................................................2.1開發(fā)工具簡(jiǎn)介.................................................................2.1.1QtCreator集成開發(fā)環(huán)境....................................................2.1.2Sqlite簡(jiǎn)介................................................................2.2開發(fā)語(yǔ)言簡(jiǎn)介.................................................................2.2.1C++......................................................................2.2.2SQL......................................................................系統(tǒng)總體設(shè)計(jì)的實(shí)現(xiàn).................................................................系統(tǒng)模塊結(jié)構(gòu)的設(shè)計(jì)...........................................................3.1.1軟件模塊結(jié)構(gòu)的設(shè)計(jì).......................................................3.1.2軟件模塊總體處理流程.....................................................3.1.3功能分配.................................................................系統(tǒng)功能總體設(shè)計(jì).............................................................3.3系統(tǒng)的總體界面設(shè)計(jì)介紹.......................................................3.4數(shù)據(jù)庫(kù)的設(shè)計(jì).................................................................3.5數(shù)據(jù)庫(kù)表的實(shí)體圖.............................................................3.6系統(tǒng)數(shù)據(jù)出錯(cuò)處理設(shè)計(jì).........................................................3.6.1系統(tǒng)的出錯(cuò)信息以及處理方法...............................................3.6.2補(bǔ)救措施.................................................................3.6.3安全保密設(shè)計(jì).............................................................4詳細(xì)設(shè)計(jì)...........................................................................4.1系統(tǒng)的主程序.................................................................4.2程序初始化界面的實(shí)現(xiàn).........................................................4.3數(shù)據(jù)庫(kù)的操作.................................................................4.4管理員模塊的實(shí)現(xiàn).............................................................4.5學(xué)生模塊的實(shí)現(xiàn)...............................................................4.6教師模塊的實(shí)現(xiàn)...............................................................4.7數(shù)據(jù)庫(kù)模塊的實(shí)現(xiàn).............................................................系統(tǒng)運(yùn)行界面展示...................................................................登錄界面展示.................................................................5.2管理員操作初始化界面展示.....................................................5.3教師操作界面展示.............................................................武漢理工大學(xué)武漢理工大學(xué)武漢理工大學(xué)武漢理工大學(xué)武漢理工大學(xué)武漢理工大學(xué)5.4學(xué)生界面展示.................................................................5.5錯(cuò)誤處理界面展示.............................................................系統(tǒng)測(cè)試...........................................................................測(cè)試概述.....................................................................6.2測(cè)試過(guò)程.....................................................................6.3測(cè)試結(jié)果.....................................................................總結(jié)..............................................................................參考文獻(xiàn)..............................................................................致謝..............................................................................外文原文..............................................................................外文翻譯..............................................................................
1系統(tǒng)概述1.1項(xiàng)目背景信息系統(tǒng)的目的是讓人可以高效的進(jìn)行工作,包括對(duì)信息的一系列操作,如添加信息、修改信息、刪除信息、查詢信息等;人們將計(jì)算機(jī)硬件與軟件相結(jié)合來(lái)開發(fā)出信息平臺(tái),在這個(gè)平臺(tái)中實(shí)現(xiàn)信息系統(tǒng)的功能與目的?,F(xiàn)如今,教務(wù)發(fā)展越來(lái)越快、越來(lái)越好,由此引發(fā)的高校教育資源也越來(lái)越緊張,因此對(duì)于高校的教學(xué)管理部門來(lái)說(shuō)一套好的教務(wù)管理系統(tǒng)不僅可以解決日漸增大的教學(xué)管理量,而且可以降低教學(xué)管理的復(fù)雜度與難度。此外,對(duì)于教育高校來(lái)說(shuō),教育管理的方式與手段也將從另一個(gè)層面體現(xiàn)學(xué)校的價(jià)值與教育能力,這直接影響到學(xué)校的形象。在信息高速發(fā)展的今天各大高校有必要建設(shè)一個(gè)完善的教務(wù)管理系統(tǒng),這樣高??梢愿雍侠淼睦酶鲗W(xué)院的眾多教學(xué)實(shí)驗(yàn)資源、更加合理地處理各種教學(xué)實(shí)驗(yàn)信息、更加合理優(yōu)化安排各種教學(xué)資源,讓各種資源利用都達(dá)到最大化。這些日益突出的關(guān)鍵問(wèn)題儼然已經(jīng)需要各高校教學(xué)管理部門花費(fèi)一定的人力、物力去解決了。借助于計(jì)算機(jī)信息系統(tǒng)的強(qiáng)大功能,高??梢越鉀Q教務(wù)管理的一系列繁瑣問(wèn)題,計(jì)算機(jī)有其細(xì)致性、準(zhǔn)確度高等特點(diǎn),這些都是教務(wù)管理工作中必須的,所以信息化在日常工作中要不斷的體現(xiàn);現(xiàn)階段,各個(gè)高校也開始對(duì)教務(wù)系統(tǒng)加大投資,加快校園的信息化步伐,解放人在教務(wù)管理中的繁瑣工作,這樣的改革對(duì)教育來(lái)說(shuō)是具有重要意義的。1.2系統(tǒng)開發(fā)的目的和意義高校的教務(wù)管理方式在現(xiàn)如今是必須要改革的,而在信息化的浪潮中學(xué)校的教務(wù)管理系統(tǒng)的修改是必然的趨勢(shì)。高校教務(wù)管理工作作為高校教育管理的一個(gè)重要環(huán)節(jié),它是高校管理工作的核心,也是高校管理的基礎(chǔ)。一個(gè)學(xué)校的教務(wù)管理工作的效率高低直接影響到學(xué)校教務(wù)工作的是否可以快速的處理,也間接的影響到了學(xué)校對(duì)于人才的培養(yǎng)質(zhì)量。而且學(xué)生對(duì)教務(wù)管理系統(tǒng)也提出了更高的要求,信息管理系統(tǒng)不再僅僅是看通知的地方,而是學(xué)生與學(xué)校進(jìn)行溝通的途徑,學(xué)生可以將一些信息反饋給學(xué)校,學(xué)校也可以通過(guò)這個(gè)平臺(tái)了解學(xué)生的動(dòng)態(tài),這樣的系統(tǒng)對(duì)于學(xué)校的教育是有促進(jìn)作用的。高校要適應(yīng)信息化的發(fā)展,積極的開展教務(wù)系統(tǒng)的調(diào)查,滿足學(xué)生對(duì)信息系統(tǒng)的需求,滿足老師對(duì)學(xué)生的教育需要,這樣可以快速的將教育資源最大化,避免浪費(fèi)大量的教育資源。1.3目前國(guó)內(nèi)外的研究現(xiàn)狀1.3.1國(guó)外研究現(xiàn)狀在信息化浪潮席卷全球、日益滲透到社會(huì)生活各個(gè)領(lǐng)域的今天,數(shù)字化校園建設(shè)如火如荼。特別是,歐美、日本等發(fā)達(dá)國(guó)家高度重視信息化建設(shè),早在20世紀(jì)90年代初幾乎所有的高校便建成了比較完善的校園網(wǎng),各個(gè)職能部門都基本實(shí)現(xiàn)了網(wǎng)絡(luò)化、信息化管理。目前國(guó)外在教務(wù)管理軟件的設(shè)計(jì)和開發(fā)方面處于領(lǐng)先地位,不論是在開發(fā)的方法上還是在軟件的使用率上都很成功。1.3.2國(guó)內(nèi)研究現(xiàn)狀我國(guó)的高等教育在近幾年發(fā)展很快,高校在管理工作中需要處理的任務(wù)越來(lái)越多,這樣不僅工作難度加大了而且落后的教育直接導(dǎo)致教學(xué)水平的提高困難。這些問(wèn)題的出現(xiàn)讓人們開始考慮換種方式來(lái)管理高校的教務(wù)工作,各高校紛紛啟動(dòng)并加快了數(shù)字化校園建設(shè)的步伐,相繼建成了校園網(wǎng),為管理軟件的應(yīng)用提供了硬件平臺(tái)。任何新生事物的發(fā)展都離不開啟蒙摸索、初見(jiàn)成效與加快發(fā)展的步驟,所以高校教育的信息化也不例外。通過(guò)不斷的摸索,不斷的嘗試,我國(guó)的高校教務(wù)管理工作逐漸開始不斷步入正規(guī)?,F(xiàn)在,我國(guó)的各高校的教務(wù)管理工作還在不斷的集成發(fā)展,許多高校也建立了各具特色的管理系統(tǒng),這些改革都給高校的管理帶來(lái)了一定的好處與方便。譬如人力資源的解放以及工作中的準(zhǔn)確度的提高。但是,事物的發(fā)展都具有雙面性,教務(wù)管理信息系統(tǒng)的快速發(fā)展還存在一定的缺陷,如功能的不全面,不能將所有的教務(wù)管理工作在一個(gè)系統(tǒng)中體現(xiàn),而且功能的效率不高,有時(shí)候還存在一定的缺陷,對(duì)于一些特殊的問(wèn)題沒(méi)有提供很好的解決方案等等的一些問(wèn)題,這些問(wèn)題都需要在以后的不斷發(fā)展中做出改進(jìn)。2關(guān)鍵技術(shù)2.1開發(fā)工具簡(jiǎn)介2.1.1QtCreator集成開發(fā)環(huán)境QtCreator是跨平臺(tái)的QtIDE,QtCreator是Qt被Nokia收購(gòu)后推出的一款新的輕量級(jí)集成開發(fā)環(huán)境(IDE)。此IDE能夠跨平臺(tái)運(yùn)行,支持的系統(tǒng)包括Linux(32位及64位)、MacOSX以及Windows。根據(jù)官方描述,QtCreator的設(shè)計(jì)目標(biāo)是使開發(fā)人員能夠利用Qt這個(gè)應(yīng)用程序框架更加快速及輕易的完成開發(fā)任務(wù)。QtCreator主要是為了幫助新Qt用戶更快速入門并運(yùn)行項(xiàng)目,還可提高有經(jīng)驗(yàn)的Qt開發(fā)人員的工作效率。使用強(qiáng)大的C++代碼編輯器可快速編寫代碼。語(yǔ)法標(biāo)識(shí)和代碼完成功能輸入時(shí)進(jìn)行靜態(tài)代碼檢驗(yàn)以及提示樣式上下文相關(guān)的幫助代碼折疊括號(hào)匹配和括號(hào)選擇模式高級(jí)編輯功能。采用C++語(yǔ)言設(shè)計(jì),編碼規(guī)范清晰,關(guān)鍵算法或處理須加注釋說(shuō)明。QtCreator是一款跨平臺(tái)的集成開發(fā)環(huán)境,特別針對(duì)Qt開發(fā)者,是QtSDK組成的一部分,可運(yùn)行于Windows,Linux/X11及MacOSX等桌面操作系統(tǒng),允許開發(fā)者為多桌面環(huán)境及移動(dòng)設(shè)備平臺(tái)創(chuàng)建應(yīng)用程序。它包括一個(gè)可視化調(diào)試工具和集成的GUI版面和外形設(shè)計(jì)師。這個(gè)編輯器的功能包括語(yǔ)法高亮度顯示和自動(dòng)完成。QtCreator在Linux上,使用GCC的C++編譯器。在Windows,默認(rèn)安裝它可以使用MinGW或MSVC。從源代碼編譯時(shí),也可以使用cdb。QTCreator是一個(gè)跨平臺(tái)的C++GUI應(yīng)用構(gòu)架,它提供了豐富的窗口控件,具有面向?qū)ο?、易于擴(kuò)展、組件編程等特點(diǎn),最為引人注目的是目前在Linux上最為流行的KDE的桌面環(huán)境,它就是建立在QT庫(kù)的基礎(chǔ)之上。QT支持多種平臺(tái),隨著KDE的快速發(fā)展普及,QT很有可能成為L(zhǎng)inux系統(tǒng)窗口平臺(tái)上進(jìn)行軟件開發(fā)的GUI首選工具。信號(hào)和槽是QT的核心機(jī)制,要學(xué)會(huì)QT編程那么就必須對(duì)信號(hào)和槽機(jī)制有所了解。信號(hào)和槽機(jī)制是一種接口,應(yīng)用在對(duì)象之間的通信,是QT的核心特性,同時(shí)也是QT區(qū)別于其它種類工具包的重要地方。信號(hào)和槽機(jī)制是QT自行定義的一種通信機(jī)制,它獨(dú)立于標(biāo)準(zhǔn)的C/C++語(yǔ)言,所以必須要正確的處理好信號(hào)和槽機(jī)制,這里借助moc(MetaObjectCompiler)工具,該moc工具是一個(gè)C++的預(yù)處理工具,為事件處理自動(dòng)生成所需要的附加處理代碼。在我們所熟知的多種GUI工具包中,窗口小控件(widget)都有一個(gè)回調(diào)函數(shù)用來(lái)響應(yīng)它們能觸發(fā)的動(dòng)作,這個(gè)回調(diào)函數(shù)通常是一個(gè)指針,它指向某個(gè)函數(shù)。但是,在QT中信號(hào)和槽機(jī)制取代了這些函數(shù)指針,使得人們?cè)诰帉戇@些通信程序時(shí)更為簡(jiǎn)潔明了。信號(hào)和槽機(jī)制能使用任意數(shù)量、任意類型的參數(shù)。在這里我設(shè)計(jì)的主窗口命名為:mainwindow。所有從QObject或其子類(例如Qwidget)派生的類都可以包含信號(hào)和槽機(jī)制。當(dāng)對(duì)象改變狀態(tài)時(shí),信號(hào)就由該對(duì)象發(fā)射出去,這就是對(duì)象所要做的事情,但它不知道另一端是誰(shuí)在接收這個(gè)信號(hào),這就是所謂的信息封裝,它保證對(duì)象被當(dāng)作一個(gè)真正的組件來(lái)使用。槽被用來(lái)接收信號(hào),它們是對(duì)象成員函數(shù),稱為槽函數(shù)。但槽函數(shù)并不知道是否有信號(hào)和自己相連。而且,對(duì)象也不了解具體的通信機(jī)制。在編程時(shí)可以將多個(gè)信號(hào)與單個(gè)槽函數(shù)進(jìn)行連接,也可以將單個(gè)信號(hào)與多個(gè)槽函數(shù)進(jìn)行連接,甚至也可以將一個(gè)信號(hào)和另外一個(gè)信號(hào)相連,這時(shí)無(wú)論第一個(gè)信號(hào)在何時(shí)發(fā)武漢理工大學(xué)武漢理工大學(xué)武漢理工大學(xué)武漢理工大學(xué)武漢理工大學(xué)武漢理工大學(xué)射,那么都將立刻發(fā)射第二個(gè)信號(hào)。總之,信號(hào)與槽機(jī)制構(gòu)成了一個(gè)很強(qiáng)大的控件編程機(jī)制。2.1.2Sqlite簡(jiǎn)介SQLite,是一款輕型的數(shù)據(jù)庫(kù),是關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它的設(shè)計(jì)目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時(shí)能夠跟很多程序語(yǔ)言相結(jié)合,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源世界著名的數(shù)據(jù)庫(kù)管理系統(tǒng)來(lái)講,它的處理速度比他們都快。SQLite是遵守ACID[2]的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它包含在一個(gè)相對(duì)小的C庫(kù)中。它是D.RichardHipp建立的公有領(lǐng)域項(xiàng)目。不像常見(jiàn)的客戶-服務(wù)器范例,SQLite引擎不是個(gè)程序與之通信的獨(dú)立進(jìn)程,而是連接到程序中成為它的一個(gè)主要部分。所以主要的通信協(xié)議是在編程語(yǔ)言內(nèi)的直接API調(diào)用。這在消耗總量、延遲時(shí)間和整體簡(jiǎn)單性上有積極的作用。整個(gè)數(shù)據(jù)庫(kù)(定義、表、索引和數(shù)據(jù)本身)都在宿主主機(jī)上存儲(chǔ)在一個(gè)單一的文件中。它的簡(jiǎn)單的設(shè)計(jì)是通過(guò)在開始一個(gè)事務(wù)的時(shí)候鎖定整個(gè)數(shù)據(jù)文件而完成的。同時(shí)它還支持事務(wù)處理功能等等。也有人說(shuō)它象Microsoft的Access,有時(shí)候真的覺(jué)得有點(diǎn)象,但是事實(shí)上它們區(qū)別很大。比如SQLite支持跨平臺(tái),操作簡(jiǎn)單,能夠使用很多語(yǔ)言直接創(chuàng)建數(shù)據(jù)庫(kù),而不象Access一樣需要Office的支持。如果你是個(gè)很小型的應(yīng)用,或者你想做嵌入式開發(fā),沒(méi)有合適的數(shù)據(jù)庫(kù)系統(tǒng),那么你可以考慮使用SQLite。到2013年10月17日最新版本是3.8.1。它的官方網(wǎng)站是:或者,能在上面獲得源代碼和文檔。同時(shí)因?yàn)閿?shù)據(jù)庫(kù)結(jié)構(gòu)簡(jiǎn)單,系統(tǒng)源代碼也不是很多,也適合想研究數(shù)據(jù)庫(kù)系統(tǒng)開發(fā)的專業(yè)人士。2.2開發(fā)語(yǔ)言簡(jiǎn)介2.2.1C++C++語(yǔ)言是一種使用非常廣泛的計(jì)算機(jī)編程語(yǔ)言。C++是一種基于靜態(tài)數(shù)據(jù)類型檢查的、支持多重編程范式的程序設(shè)計(jì)語(yǔ)言。C++語(yǔ)言支持過(guò)程化程序設(shè)計(jì)、數(shù)據(jù)抽象、面向?qū)ο蟪绦蛟O(shè)計(jì)、泛型程序設(shè)計(jì)等多種程序設(shè)計(jì)風(fēng)格。C++語(yǔ)言的設(shè)計(jì)目標(biāo),就是要讓C++既具有適合于系統(tǒng)程序設(shè)計(jì)的C語(yǔ)言所具有的可適應(yīng)性和高效性,又能在其程序組織結(jié)構(gòu)方面具有像Simula那樣的語(yǔ)言設(shè)施(Simula所支持的這種程序組織結(jié)構(gòu)通常被稱為面向?qū)ο蟪绦蛟O(shè)計(jì)風(fēng)格)。在設(shè)計(jì)的時(shí)候,還做了很大的努力,使得引借自Simula的高層次的程序設(shè)計(jì)技術(shù)能夠應(yīng)用于系統(tǒng)程序設(shè)計(jì)之中。這即是說(shuō),C++所提供的抽象機(jī)制能夠被應(yīng)用于那些對(duì)效率和可適應(yīng)性具有極高要求的程序設(shè)計(jì)任務(wù)之中。采用C++面向?qū)ο笳Z(yǔ)言,利用抽象和封裝等機(jī)制,借助類、對(duì)象、繼承、傳遞等技術(shù)進(jìn)行構(gòu)造的軟件開發(fā)方法,它的出發(fā)點(diǎn)和目標(biāo)就是使人們?cè)谙胍粋€(gè)問(wèn)題的過(guò)程和方法時(shí)與分析、設(shè)計(jì)和實(shí)現(xiàn)系統(tǒng)的過(guò)程和方法盡最大可能的一致,即描述問(wèn)題的認(rèn)知空間以及解決問(wèn)題的方法空間要在結(jié)構(gòu)上盡可能的一致,這樣面向?qū)ο蠓椒ㄗ匀坏啬M了人類認(rèn)知世界的方式,所以這是一個(gè)很好的思維認(rèn)知的方法,也是特別好的一種軟件開發(fā)方法。1998的C++標(biāo)準(zhǔn)分為兩個(gè)部分:核心語(yǔ)言和C++標(biāo)準(zhǔn)程序庫(kù);后者包含了大部分標(biāo)準(zhǔn)模板庫(kù)和C標(biāo)準(zhǔn)程序庫(kù)的稍加修改版本。存在許多不屬于標(biāo)準(zhǔn)部分的C++程序庫(kù),且使用外部鏈接,程序庫(kù)甚至可以用C撰寫。C++標(biāo)準(zhǔn)程序庫(kù)充分吸收了C標(biāo)準(zhǔn)程序庫(kù),并佐以少許的修改,使其與C++良好的運(yùn)作。另一個(gè)大型的程序庫(kù)部分,是以標(biāo)準(zhǔn)模板庫(kù)(STL)為基礎(chǔ),STL于1994年2月正式成為ANSI/ISOC++。它提供了實(shí)用的工具,如容器(如:矢量和鏈表),迭代器(廣義指針)提供容器以類似數(shù)組的訪問(wèn)方式,以及算法進(jìn)行搜索和排序的運(yùn)算。此外還提供了(multi)map(關(guān)系數(shù)組)和(multi)set,它們都使用兼容的界面。因此,以下成為可能,使用模板撰寫泛型算法,它可以和任何容器或在任何以迭代器定義的串行上運(yùn)作。如同C,使用#include指令包含標(biāo)準(zhǔn)表頭,即可訪問(wèn)程序庫(kù)里的功能。C++提供69個(gè)標(biāo)準(zhǔn)表頭,其中19個(gè)不再贊成使用。使用標(biāo)準(zhǔn)庫(kù)(例如:使用std::vector或std::string來(lái)取代C風(fēng)格的數(shù)組)有助于導(dǎo)向更安全和更靈活的軟件。STL在納入C++標(biāo)準(zhǔn)以前,是來(lái)自HP和后來(lái)的SGI的第三方程式庫(kù),標(biāo)準(zhǔn)中并未稱之為“STL”,它只是標(biāo)準(zhǔn)庫(kù)中的一部分,但仍有許多人使用這個(gè)名稱,以別于其它的標(biāo)準(zhǔn)庫(kù)(輸入/輸出流、國(guó)際化、診斷、C程序庫(kù)子集,等等)。和C語(yǔ)言相比,C++引入了更多的特性,包括:陳述性聲明,類似函數(shù)的強(qiáng)制轉(zhuǎn)型,new/delete操作符,布林類型,參考類型,默認(rèn)參數(shù),函數(shù)重載,命名空間,類型(包括所有和類型相關(guān)的特性,如繼承、成員函數(shù)、虛函數(shù)、抽象類型和構(gòu)造函數(shù)),操作符重載,模板,::操作符,異常處理和運(yùn)行時(shí)期識(shí)別。和普遍認(rèn)為的相反,C++不是第一個(gè)正式引入const關(guān)鍵字的語(yǔ)言。80年代早期,BjarneStroustrup和DennisRetchie討論之后提供了在C語(yǔ)言中readonly/writeonly的實(shí)現(xiàn)機(jī)制,并在帶類型的C中取得了一定經(jīng)驗(yàn)。關(guān)鍵字const正式引入C語(yǔ)言是在ANSIC89。這早于第一個(gè)C++國(guó)際標(biāo)準(zhǔn)近十年,但此時(shí)const已被C++實(shí)現(xiàn)普遍采用。C++在某些案例中(見(jiàn)下“與C不兼容之處”),進(jìn)行比C還要多的類型檢查。以“//起始”作為注解起源自C的前身BCPL,而后被重新引入到C++。C++的一些特性,C不久之后也采用了,包括在for循環(huán)的括號(hào)中聲明,C++風(fēng)格的注解(使用//符號(hào),和inline,雖然C99定義的inline關(guān)鍵字與C++的定義不兼容。不過(guò),C99也引入了不存在于C++的特性,如:可變參數(shù)宏,和以數(shù)組作為參數(shù)的較佳處理;某些C++編譯器可能實(shí)現(xiàn)若干特性,以作為擴(kuò)展,但其余部分并不符合現(xiàn)存的C++特性)一個(gè)常見(jiàn)的混淆其實(shí)只是一個(gè)微妙的術(shù)語(yǔ)問(wèn)題:由于它的演化來(lái)自C,在C++中的術(shù)語(yǔ)對(duì)象和C語(yǔ)言一樣是意味著存儲(chǔ)器區(qū)域,而不是類的實(shí)例,在其它絕大多數(shù)的面向?qū)ο笳Z(yǔ)言也是如此。舉例來(lái)說(shuō),在C和C++中,語(yǔ)句inti;定義一個(gè)int類型的對(duì)象,這就是變量的值i將在賦值時(shí),所存入的存儲(chǔ)器區(qū)域。C++主要有三個(gè)編譯階段:預(yù)處理、轉(zhuǎn)譯成目標(biāo)代碼和鏈接(最后的兩個(gè)階段一般才視為真正的“編譯”)。在第一階段,預(yù)處理,會(huì)將預(yù)處理器指令替換成源代碼,然后送到下一個(gè)編譯階段。預(yù)處理指令的運(yùn)作方式是根據(jù)用戶定義的規(guī)則,簡(jiǎn)單的把記號(hào)字符串行置換成其它的記號(hào)字符串行。它們進(jìn)行宏置換、含入其它的文件(由底層至高級(jí)的特性,例如包含模塊/包/單元/組件)、條件式編譯和條件式含入。2.2.2SQLSQL全稱是“結(jié)構(gòu)化查詢語(yǔ)言(StructuredQueryLanguage)”。SQL語(yǔ)言結(jié)構(gòu)簡(jiǎn)潔,功能強(qiáng)大,簡(jiǎn)單易學(xué),所以自從IBM公司1981年推出以來(lái),SQL語(yǔ)言得到了廣泛的應(yīng)用。目前,SQL語(yǔ)言已被確定為關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的國(guó)際標(biāo)準(zhǔn),被絕大多數(shù)商品化關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)采用,如Oracle、Sybase、DB2、Informix、SQLServer這些數(shù)據(jù)庫(kù)管理系統(tǒng)都支持SQL語(yǔ)言作為查詢語(yǔ)言。結(jié)構(gòu)化查詢語(yǔ)言SQL是一種介于關(guān)系代數(shù)與關(guān)系演算之間的語(yǔ)言,其功能包括查詢、操縱、定義和控制四個(gè)方面,是一個(gè)通用的功能極強(qiáng)的關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言。在SQL語(yǔ)言中不需要告訴SQL如何訪問(wèn)數(shù)據(jù)庫(kù),只要告訴SQL需要數(shù)據(jù)庫(kù)做什么。結(jié)構(gòu)化查詢語(yǔ)言包含6個(gè)部分:一:數(shù)據(jù)查詢語(yǔ)言(DQL:DataQueryLanguage)其語(yǔ)句,也稱為“數(shù)據(jù)檢索語(yǔ)句”,用以從表中獲得數(shù)據(jù),確定數(shù)據(jù)怎樣在應(yīng)用程序給出。保留字SELECT是DQL(也是所有SQL)用得最多的動(dòng)詞,其他DQL常用的保留字有WHERE,ORDERBY,GROUPBY和HAVING。這些DQL保留字常與其他類型的SQL語(yǔ)句一起使用。二:數(shù)據(jù)操作語(yǔ)言(DML:DataManipulationLanguage)其語(yǔ)句包括動(dòng)詞INSERT,UPDATE和DELETE。它們分別用于添加,修改和刪除表中的行。也稱為動(dòng)作查詢語(yǔ)言。三:事務(wù)處理語(yǔ)言(TPL)它的語(yǔ)句能確保被DML語(yǔ)句影響的表的所有行及時(shí)得以更新。TPL語(yǔ)句包括BEGINTRANSACTION ,COMMIT和ROLLBACK。四:數(shù)據(jù)控制語(yǔ)言(DCL)它的語(yǔ)句通過(guò)GRANT或REVOKE獲得許可,確定單個(gè)用戶和用戶組對(duì)數(shù)據(jù)庫(kù)對(duì)象的訪問(wèn)。某些RDBMS可用GRANT或REVOKE控制對(duì)表單個(gè)列的訪問(wèn)。五:數(shù)據(jù)定義語(yǔ)言(DDL)其語(yǔ)句包括動(dòng)詞CREATE和DROP。在數(shù)據(jù)庫(kù)中創(chuàng)建新表或刪除表(CREATTABLE或DROPTABLE);為表加入索引等。DDL包括許多與人數(shù)據(jù)庫(kù)目錄中獲得數(shù)據(jù)有關(guān)的保留字。它也是動(dòng)作查詢的一部分。六:指針控制語(yǔ)言(CCL)它的語(yǔ)句,像DECLARECURSOR ,F(xiàn)ETCHINTO和UPDATEWHERECURRENT用于對(duì)一個(gè)或多個(gè)表單獨(dú)行的操作。3系統(tǒng)總體設(shè)計(jì)的實(shí)現(xiàn)3.1系統(tǒng)模塊結(jié)構(gòu)的設(shè)計(jì)3.1.1軟件模塊結(jié)構(gòu)的設(shè)計(jì)根據(jù)系統(tǒng)分析的結(jié)果,按照結(jié)構(gòu)化的系統(tǒng)設(shè)計(jì)方法,教學(xué)事務(wù)管理系統(tǒng)從功能由課程管理子系統(tǒng)、學(xué)籍管理子系統(tǒng)、成績(jī)管理子系統(tǒng)組成。各子系統(tǒng)的簡(jiǎn)要功能說(shuō)明如表3-1。表3-1各子系統(tǒng)的簡(jiǎn)要功能概述模塊名模塊名功能簡(jiǎn)介班級(jí)管理維護(hù)學(xué)校的每個(gè)班級(jí)的基本信息,包括班級(jí)名、班級(jí)號(hào)、專業(yè)、輔導(dǎo)員等相關(guān)信息。學(xué)籍管理完成對(duì)學(xué)生的學(xué)籍管理,包括學(xué)籍錄入、學(xué)籍修改、學(xué)籍查詢等相關(guān)功能。成績(jī)管理管理每個(gè)學(xué)生所修課程的成績(jī),包括成績(jī)錄入、成績(jī)修改、成績(jī)查詢、成績(jī)修改等相關(guān)功能。教師信息管理每個(gè)老師的基本信息,包括老師基本信息錄入、修改、查詢等相關(guān)功能。系統(tǒng)管理功能包括系統(tǒng)的一些基本功能,如修改密碼、查詢用戶基本信息、重新登陸等。3.1.2軟件模塊總體處理流程根據(jù)各個(gè)子系統(tǒng)的功能劃分,畫出本軟件的頂層數(shù)據(jù)流圖,如圖3-1所示。用戶在登陸界面登陸中輸入所需的登陸信息后需要在程序的后臺(tái)進(jìn)行用戶身份的驗(yàn)證,當(dāng)這些驗(yàn)證都通過(guò)后才可以由用戶去操作相應(yīng)的功能,主要有學(xué)生管理、教師管理、成績(jī)管理、班級(jí)管理和系統(tǒng)管理。在這些管理模塊中需要設(shè)計(jì)到數(shù)據(jù)庫(kù)的交互的操作,需要進(jìn)行數(shù)據(jù)的操作后將輸出結(jié)果更新數(shù)據(jù)庫(kù)文件,如果需要的話,操作結(jié)果也會(huì)在用戶操作界面中進(jìn)行展示。圖圖3-1頂層數(shù)據(jù)流程本軟件的二層數(shù)據(jù)流圖如圖3-2所示,在這個(gè)數(shù)據(jù)流圖中詳細(xì)的描述了程序中數(shù)據(jù)的處理流程,從得到數(shù)據(jù)到數(shù)據(jù)的處理以及數(shù)據(jù)的輸出都做了詳細(xì)的描述。用戶登錄用戶驗(yàn)證用戶名密碼錯(cuò)誤信息數(shù)據(jù)庫(kù)文件判斷用戶類別數(shù)據(jù)庫(kù)操作學(xué)生管理系統(tǒng)管理班級(jí)管理成績(jī)管理教師管理教師資料管理學(xué)生資料管理系統(tǒng)資料管理添加,刪除添加,刪除添加,刪除班級(jí)資料管理學(xué)生成績(jī)查詢教師表教師信息單學(xué)生信息表學(xué)生信息單系統(tǒng)信息表系統(tǒng)信息班級(jí)信息表成績(jī)信息表班級(jí)信息成績(jī)信息學(xué)號(hào)添加刪除圖3-2二層數(shù)據(jù)流程圖3.1.3功能分配本系統(tǒng)中各功能需求與程序模塊(組件)之間的關(guān)系如下表3-2所示。表3-2功能需求與程序模塊關(guān)系表功能需求功能需求課程管理系統(tǒng)管理教師信息查詢教師添加教師修改教師刪除學(xué)生信息查詢學(xué)生添加學(xué)生修改學(xué)生刪除成績(jī)錄入成績(jī)修改成績(jī)刪除成績(jī)信息查詢班級(jí)信息查詢班級(jí)錄入班級(jí)刪除班級(jí)修改用戶信息修改密碼重新登陸如表3-2所示,使用表的形式將各個(gè)管理模塊的功能進(jìn)行了描述,通過(guò)這個(gè)表可以快速直觀的了解各個(gè)管理模塊的功能,不同的模塊對(duì)應(yīng)著不同的功能,有些功能模塊在其它的管理模塊中可以借用,只需要將這個(gè)模塊的實(shí)現(xiàn)函數(shù)進(jìn)行封裝,并且向外部模塊提供一個(gè)接口,外部模塊通過(guò)這個(gè)接口來(lái)調(diào)用這個(gè)功能來(lái)實(shí)現(xiàn)另外的功能。3.2系統(tǒng)功能總體設(shè)計(jì)根據(jù)對(duì)系統(tǒng)的分析,將系統(tǒng)的功能機(jī)構(gòu)圖再次細(xì)分,得到如下結(jié)構(gòu),如圖3-3所示。教務(wù)管理系統(tǒng)教務(wù)管理系統(tǒng)管理員管理學(xué)生信息管理通用功能模塊教師信息管理查看學(xué)籍信息查看成績(jī)信息查看班級(jí)信息教師信息操作賞罰管理學(xué)生信息操作添加用戶教師相關(guān)信息查詢班級(jí)信息查詢學(xué)生相關(guān)信息查詢學(xué)生成績(jī)信息操作查看幫助信息修改當(dāng)前用戶密碼學(xué)生信息查詢學(xué)生信息修改學(xué)生信息刪除學(xué)生信息增加教師信息查詢教師信息修改教師信息刪除教師信息增加學(xué)生成績(jī)信息查詢學(xué)生成績(jī)信息修改學(xué)生成績(jī)信息刪除學(xué)生成績(jī)信息增加圖3-3系統(tǒng)的總體功能圖在這個(gè)教務(wù)管理系統(tǒng)中,主要分為了四大模塊,分別是學(xué)生管理模塊、教師管理模塊、管理員管理模塊以及通用模塊。在通用模塊中是一些所有用戶都有的操作,在后面代碼的具體實(shí)現(xiàn)中為了布局的美觀這個(gè)通用模塊中的功能會(huì)分散開來(lái)安排;其余的三個(gè)模塊都是對(duì)信息的一些處理,但他們最大的區(qū)別在于有嚴(yán)格的操作權(quán)限控制,不同的用戶不能對(duì)信息的處理越級(jí),這樣會(huì)有很大的安全隱患。學(xué)生的功能主要集中在查看,查看成績(jī)、查看學(xué)籍、查看班級(jí)等一些普通的操作,教師的主要任務(wù)是對(duì)學(xué)生成績(jī)的操作,這類用戶對(duì)學(xué)生的成績(jī)有最大的權(quán)限。管理員用戶擁有學(xué)生與老師的全部權(quán)限,但管理員用戶最大的功能是管理用戶,即管理員來(lái)控制可以什么樣的人登錄到系統(tǒng)中來(lái),這樣管理員就可以通過(guò)修改用戶的登錄信息或者是刪除登錄信息來(lái)控制系統(tǒng)的使用權(quán)的歸屬問(wèn)題,這樣的設(shè)計(jì)對(duì)與系統(tǒng)的安全性有積極的作用。此外,系統(tǒng)的設(shè)計(jì)還要考慮數(shù)據(jù)庫(kù)的問(wèn)題,設(shè)計(jì)一個(gè)安全可靠的數(shù)據(jù)庫(kù)是非常有必要的。此外,作為一個(gè)教務(wù)管理系統(tǒng),獎(jiǎng)懲模塊是必須的。在這個(gè)系統(tǒng)中,獎(jiǎng)懲模塊只有管理員可以操作,其它用戶是沒(méi)法進(jìn)行管理的,其它用戶可以進(jìn)行查詢這些獎(jiǎng)懲,包括獎(jiǎng)學(xué)金、助學(xué)金、以及其它的一些獎(jiǎng)勵(lì);也可以將對(duì)學(xué)校的懲罰寫入系統(tǒng)中,如作弊、打架、以及其它的一些違法學(xué)校規(guī)章制度的行為。3.3系統(tǒng)的總體界面設(shè)計(jì)介紹如圖3-4所示是系統(tǒng)的總體初步界面。圖3-4圖3-4系統(tǒng)的總體初步界面控件,這個(gè)控件提供用戶登錄類型的選擇,分別有管理員、學(xué)生、教師。在界面上會(huì)有來(lái)個(gè)Qlabel標(biāo)簽來(lái)提示用戶輸入用戶名與密碼,代碼部分會(huì)獲得它們的text(),通過(guò)與數(shù)據(jù)庫(kù)中的記錄相比對(duì)來(lái)判斷用戶是否有權(quán)限來(lái)登錄系統(tǒng)。此外還有確認(rèn)登錄與取消登錄的QpushButton按鈕。在代碼的實(shí)現(xiàn)部分會(huì)給這倆個(gè)按鈕注冊(cè)槽函數(shù)來(lái)響應(yīng)它們的點(diǎn)擊事件clicked()。根據(jù)不同的用戶提供不同的界面,但是在操作的主界面中界面的總體設(shè)計(jì)是一樣的,或者是說(shuō)不同的用戶是通過(guò)對(duì)控件的可用與否來(lái)達(dá)到權(quán)限的控制,但控件在不同的界面中會(huì)有相同的位置。將不同屬性的控件放在不同的QWidget中,這樣在布局中是很好操作的,也是很方便的。不同的用戶類型type對(duì)應(yīng)著不同的操作界面,管理員的登錄會(huì)給提供最全面的操作,包括一組管理員特有的按鈕QPushButton,包括對(duì)用戶的管理與老師、學(xué)生信息的增加、修改、刪除等,在這些操作中都會(huì)操作到數(shù)據(jù)庫(kù)文件,所以數(shù)據(jù)庫(kù)文件的安全設(shè)計(jì)是非常至關(guān)重要的。此外在程序的主界面的左下角會(huì)有一個(gè)QtoolBox控件,通過(guò)這個(gè)控件可以達(dá)到功能集中化的效果,QToolBox可以容納不同的控件,這里我添加的是QlistWidget,這是為了讓QlistWidget的不同選擇條目對(duì)于與界面右下角部分的QStackWidget的不同界面,這樣就達(dá)到了不同的條目對(duì)于與不同的功能操作界面,也回避了彈出式的界面操作,那樣的界面容易造成操作紊亂。程序界面的右下角我設(shè)計(jì)的是在一個(gè)QWidget的加入一個(gè)QStackWidget控件,然后用QStackWidget的頁(yè)面數(shù)對(duì)應(yīng)于我左下角的QToolBox控件的條目數(shù),這樣就可以利用這倆個(gè)控件的currentRowChanged(int)事件與相應(yīng)setCurrentIndex(int)槽函數(shù)來(lái)達(dá)到界面功能的跳轉(zhuǎn)。在QstackWidget的每個(gè)界面中可以繼續(xù)添加QstackWdiget控件,這樣又可以對(duì)應(yīng)于左邊中QToolBox控件的子界面中添加的QlistWidget的條目數(shù),使得功能再加以細(xì)化,界面的功能設(shè)計(jì)也更加的完善與合理。如果是學(xué)生與老師登錄到系統(tǒng),代碼部分的設(shè)計(jì)會(huì)使得這倆類的用戶無(wú)法使用左下角的控件,這時(shí),在程序界面的中間部分會(huì)給用戶提供相應(yīng)的操作按鈕。這樣的設(shè)計(jì)不僅會(huì)使得程序的安全性得到保障,也會(huì)使得系統(tǒng)用戶的功能得到完整的體現(xiàn)。但是學(xué)生與老師的操作權(quán)限還是有所區(qū)別,所以可以用QpushButton的enable()函數(shù)來(lái)設(shè)置按鈕是否可用,如果登錄到系統(tǒng)的用戶沒(méi)有使用該控件功能的權(quán)限,這時(shí)可以將QpushButton的enable()參數(shù)值設(shè)置為false,這樣就保障了權(quán)限的不外露。在此系統(tǒng)中,管理員有倆個(gè)獨(dú)特的功能,管理用戶與獎(jiǎng)賞功能模塊。在這倆個(gè)模塊實(shí)現(xiàn)中,將所有的功能集中化處理,使用QsqlTableModel的對(duì)象的特性,將它與Qtableview綁定到一起,在Qtableview中將信息進(jìn)行直觀的操作,然后點(diǎn)擊下方的QpushButton來(lái)實(shí)現(xiàn)數(shù)據(jù)的操作,這樣的設(shè)計(jì)可以方便、直觀的進(jìn)行操作,并且將功能集中起來(lái)操作簡(jiǎn)單。在功能區(qū)域中左邊是一個(gè)類似與QQ分類的設(shè)計(jì),這樣的設(shè)計(jì)是將功能集中化并且可以節(jié)省空間,在系統(tǒng)功能區(qū)的上半部分是一排按鈕,這些按鈕提供的一些常用的功能,并且這些按鈕是與其它系統(tǒng)用戶所共同擁有的。將他們分離出來(lái)一方面是為了方便操作;另一方面也可以比較方便的進(jìn)行操作限制,通過(guò)設(shè)置這些按鈕是否能用來(lái)區(qū)別系統(tǒng)的其它用戶,這點(diǎn)會(huì)在接下來(lái)的圖片中所展示。系統(tǒng)中將會(huì)使用背景色與背景圖片來(lái)使系統(tǒng)達(dá)到美觀的目的,并且控制控件的大小以及控件的擴(kuò)展策略,這樣可以防止窗口的大小變化的時(shí)候圖片的沒(méi)規(guī)律的擴(kuò)展。在文本框中需要輸入內(nèi)容的時(shí)候需要控制輸入的內(nèi)容,在這個(gè)系統(tǒng)中,我設(shè)計(jì)的是只能輸入數(shù)字,并且是10位的數(shù)字,這樣可以減少后期數(shù)據(jù)的處理與數(shù)據(jù)庫(kù)中數(shù)據(jù)的紊亂。此外,在系統(tǒng)界面的整體布局中要特別注意對(duì)布局管理器的使用,將控件加到容器中,再對(duì)容器界面設(shè)計(jì)布局管理器,最后設(shè)計(jì)整體容器的布局管理器,盡最大的努力來(lái)使得界面達(dá)到整潔美觀的效果。在界面出現(xiàn)后有的時(shí)候需要改變界面的大小,這種就需要在界面的控件上設(shè)置控件的擴(kuò)展策略,保證界面中的控件能夠正常的顯示,并且在縮放界面的時(shí)候界面中的控件保持它們的相對(duì)位置不變。3.4數(shù)據(jù)庫(kù)的設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)是構(gòu)建一個(gè)系統(tǒng)的關(guān)鍵。這是因?yàn)閿?shù)據(jù)庫(kù)設(shè)計(jì)的優(yōu)劣將直接影響系統(tǒng)數(shù)據(jù)的安全性、可靠性。在數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程中,需要遵循的一般原則是:數(shù)據(jù)庫(kù)各表的設(shè)計(jì)要反應(yīng)現(xiàn)實(shí)中的事物。數(shù)據(jù)表中的字段類型和大小要符合使用習(xí)慣。較少數(shù)據(jù)庫(kù)的榮譽(yù)和數(shù)據(jù)的不一致性。書庫(kù)應(yīng)用的一個(gè)特點(diǎn)是對(duì)數(shù)據(jù)庫(kù)的頻繁操作,每次操作可能只會(huì)設(shè)計(jì)一個(gè)表,也可以同時(shí)設(shè)計(jì)多個(gè)表,也有可能對(duì)一個(gè)數(shù)據(jù)表進(jìn)行多個(gè)操作,在這種情況下,由于數(shù)據(jù)冗余和數(shù)據(jù)不一致時(shí),可能會(huì)引起錯(cuò)誤。要有助于提高數(shù)據(jù)處理速度。程序訪問(wèn)數(shù)據(jù)庫(kù)的速度依賴于硬件的速度,數(shù)據(jù)量的大小和數(shù)據(jù)表設(shè)計(jì)的優(yōu)劣,而前兩個(gè)因素是很難更改的。要包成數(shù)據(jù)庫(kù)的安全。安全性是數(shù)據(jù)庫(kù)應(yīng)用軟件的重要要求。本教務(wù)管理系統(tǒng)涉及的實(shí)體包括:用戶:用戶類型、用戶名、密碼。學(xué)生:學(xué)號(hào)、姓名、性別、年齡、班級(jí)、聯(lián)系電話、家庭住址、備注。教師:職工號(hào)、姓名、性別、年齡、職稱、聯(lián)系電話。班級(jí):班級(jí)id、班級(jí)名、年級(jí)、學(xué)制、專業(yè)、班主任、備注。成績(jī)單:課程編號(hào)、學(xué)號(hào)、學(xué)年、學(xué)期、分?jǐn)?shù)。獎(jiǎng)懲信息:學(xué)號(hào)、獎(jiǎng)懲名、獎(jiǎng)懲內(nèi)容。3.5數(shù)據(jù)庫(kù)表的實(shí)體圖概念結(jié)構(gòu)設(shè)計(jì)是將需求分析得到的用戶需求抽象為信息結(jié)構(gòu)的過(guò)程。它是整個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)的關(guān)鍵。為了把問(wèn)題清楚的表達(dá)出來(lái),通常要建立一個(gè)概念性的數(shù)據(jù)模型。概念性的數(shù)據(jù)模型是面向問(wèn)題的數(shù)據(jù)模型。最常用的表示概念性數(shù)據(jù)模型的方法是實(shí)體-聯(lián)系方法。這種方法用實(shí)體圖描述現(xiàn)實(shí)世界中的實(shí)體,而不涉及這些實(shí)體在系統(tǒng)中的實(shí)現(xiàn)方法。用這種方法表示的概念性數(shù)據(jù)模型又稱為實(shí)體模型。實(shí)體模型中包含“實(shí)體”,“聯(lián)系”和“屬性”。描述各個(gè)實(shí)體的實(shí)體圖如下所示。圖3-5用戶實(shí)體圖如圖3-5所示是用戶的實(shí)體圖,實(shí)體用戶的屬性有用戶類型type、用戶名id以及密碼passwd。圖3-6學(xué)生信息實(shí)體圖如圖3-6所示是學(xué)生的實(shí)體圖,實(shí)體學(xué)生的屬性有學(xué)號(hào)id、姓名name、性別sex、年齡age、班級(jí)classname、聯(lián)系電話telnum、家庭住址address和備注remark。圖3-7教師信息實(shí)體圖如圖3-7所示是教師的實(shí)體圖,實(shí)體教師的屬性有職工號(hào)id、姓名teachname、性別teachsex、年齡teachage、職稱teachjob以及聯(lián)系電話teachtelnum。圖3-8班級(jí)信息實(shí)體圖如圖3-8所示是班級(jí)的實(shí)體圖,實(shí)體班級(jí)的屬性有班級(jí)號(hào)id、班級(jí)名classname、年級(jí)grade、學(xué)制schoolsystem、專業(yè)major、班主任boss、備注remark。圖3-9獎(jiǎng)罰信息的實(shí)體圖如圖3-9所示是懲罰信息的實(shí)體圖,實(shí)體獎(jiǎng)懲信息的屬性有學(xué)號(hào)id、獎(jiǎng)懲類型type、獎(jiǎng)懲內(nèi)容content。圖3-10成績(jī)信息的實(shí)體圖如圖3-10所示是學(xué)生成績(jī)單的實(shí)體圖,實(shí)體學(xué)生成績(jī)單的屬性有學(xué)生學(xué)號(hào)id、課程編號(hào)Sid、學(xué)年schoolyear、學(xué)期term、分?jǐn)?shù)score。對(duì)于這些數(shù)據(jù)庫(kù)表中的屬性,根據(jù)它們的實(shí)際情況在實(shí)現(xiàn)數(shù)據(jù)庫(kù)表的時(shí)候?qū)崿F(xiàn)每個(gè)表的屬性,并且在表中設(shè)置它們接收數(shù)據(jù)的條件,使存入數(shù)據(jù)庫(kù)中的數(shù)據(jù)更加合理化。圖3-10中所示的學(xué)生成績(jī)單的實(shí)體圖在實(shí)現(xiàn)的時(shí)候根據(jù)實(shí)際情況將課程編號(hào)與學(xué)號(hào)設(shè)置為這個(gè)表的復(fù)合主鍵,防止出現(xiàn)了學(xué)生成績(jī)錯(cuò)誤的情況。所以,在實(shí)際的開發(fā)過(guò)程中需要建立名為manage.db的數(shù)據(jù)庫(kù),然后在這個(gè)數(shù)據(jù)庫(kù)中加入這五張表,信息從這些數(shù)據(jù)表中取出,然后經(jīng)過(guò)程序使用再寫入數(shù)據(jù)庫(kù)中。由于使用的是SQLite數(shù)據(jù)庫(kù),可以使用可視化界面來(lái)查看數(shù)據(jù)庫(kù)中的信息是否正確的設(shè)置。3.6系統(tǒng)數(shù)據(jù)出錯(cuò)處理設(shè)計(jì)3.6.1系統(tǒng)的出錯(cuò)信息以及處理方法如表3-3所示,系統(tǒng)的出錯(cuò)信息以及處理方法一覽表。 表3-3系統(tǒng)的出錯(cuò)信息以及處理方法出錯(cuò)名出錯(cuò)名稱系統(tǒng)輸出信息處理方法用戶名輸入錯(cuò)誤“登陸信息有誤”進(jìn)入登錄頁(yè)面前三次密碼錯(cuò)誤“登陸信息有誤”進(jìn)入登錄頁(yè)面密碼錯(cuò)數(shù)次數(shù)超過(guò)三次“信息有誤,請(qǐng)您確認(rèn)信息后登陸”進(jìn)入默認(rèn)登錄頁(yè),并半小時(shí)內(nèi)禁止該用戶進(jìn)行登錄。輸入數(shù)據(jù)格式錯(cuò)誤禁止用戶輸入不允許為空的輸入框輸入空字符彈回原輸入頁(yè)面的輸入處在表3-3中描述了一些系統(tǒng)中需要處理的一些出錯(cuò)信息,系統(tǒng)中有各種各樣的不同錯(cuò)誤信息,系統(tǒng)需要有相應(yīng)的錯(cuò)誤處理方法,如果用戶在使用系統(tǒng)的時(shí)候出現(xiàn)了錯(cuò)誤,系統(tǒng)可以提供相應(yīng)的錯(cuò)誤提示或者系統(tǒng)自動(dòng)的進(jìn)行錯(cuò)誤處理。3.6.2補(bǔ)救措施由于數(shù)據(jù)在數(shù)據(jù)庫(kù)中已經(jīng)有備份,故在系統(tǒng)出錯(cuò)后可以依靠數(shù)據(jù)庫(kù)的恢復(fù)功能,并且依靠日志文件使系統(tǒng)再啟動(dòng),就算系統(tǒng)崩潰用戶數(shù)據(jù)也不會(huì)丟失或遭到破壞。但有可能占用更多的數(shù)據(jù)存儲(chǔ)空間,權(quán)衡措施由用戶來(lái)決定。3.6.3安全保密設(shè)計(jì)數(shù)據(jù)庫(kù)安全保密就是保證數(shù)據(jù)庫(kù)中數(shù)據(jù)的保密性、正確性。即保護(hù)數(shù)據(jù)庫(kù)中的數(shù)據(jù)不被非法用戶獲取,不因?yàn)椴僮鲉T失誤或者軟硬件故障導(dǎo)致數(shù)據(jù)錯(cuò)誤。當(dāng)前,數(shù)據(jù)庫(kù)受到的主要威脅有:對(duì)數(shù)據(jù)庫(kù)的不正確訪問(wèn),引起數(shù)據(jù)庫(kù)數(shù)據(jù)的錯(cuò)誤;為了某種目的,故意破壞數(shù)據(jù)庫(kù),使其不能恢復(fù);非法訪問(wèn)數(shù)據(jù)庫(kù)信息;用戶通過(guò)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)庫(kù)訪問(wèn)時(shí),有可能受到種技術(shù)的攻擊;未經(jīng)授權(quán)非法修改數(shù)據(jù)庫(kù)數(shù)據(jù),使其失去正確性;硬件毀壞、自然災(zāi)害、磁干擾等。本系統(tǒng)用戶管理保證了只有授權(quán)的用戶才能進(jìn)入系統(tǒng)進(jìn)行數(shù)據(jù)操作,而且對(duì)一些重要數(shù)據(jù),系統(tǒng)設(shè)置為只有更高權(quán)限的人員方可讀取或是操作。系統(tǒng)安全保密性較高。武漢理工大學(xué)武漢理工大學(xué)武漢理工大學(xué)武漢理工大學(xué)武漢理工大學(xué)武漢理工大學(xué)4詳細(xì)設(shè)計(jì)4.1系統(tǒng)的主程序intmain(intargc,char*argv[]){QApplicationa(argc,argv);QFontfont("Times",15,QFont::Bold);a.setFont(font);//添加一下四行代碼用來(lái)解決中文顯示亂碼的問(wèn)題QTextCodec*codec=QTextCodec::codecForName("GB2312");QTextCodec::setCodecForLocale(codec);QTextCodec::setCodecForCStrings(codec);QTextCodec::setCodecForTr(codec);RegActionw;//不需要w.show();否則會(huì)生成一個(gè)空白的界面。returna.exec();}這是系統(tǒng)的主函數(shù),系統(tǒng)所有的運(yùn)行都是從這個(gè)函數(shù)開始,所以在這個(gè)函數(shù)中的設(shè)置都是全局的,將會(huì)影響到整個(gè)系統(tǒng)的設(shè)置。所以對(duì)于一些在整個(gè)系統(tǒng)中都需要進(jìn)行設(shè)計(jì)的參數(shù)一般都會(huì)在這里進(jìn)行設(shè)計(jì)。系統(tǒng)在運(yùn)行時(shí)會(huì)有系統(tǒng)默認(rèn)的字體,如果需要可以在這個(gè)函數(shù)中進(jìn)行設(shè)置,這樣可以使系統(tǒng)看起來(lái)更加美觀;此外,系統(tǒng)在運(yùn)行時(shí)由于語(yǔ)言環(huán)境的不同或者文化的差異,這將導(dǎo)致系統(tǒng)的字體在顯示時(shí)與設(shè)計(jì)的初衷不一樣,所以在這個(gè)主函數(shù)中進(jìn)行設(shè)置,這樣就不會(huì)出現(xiàn)顯示亂碼的情況。4.2程序初始化界面的實(shí)現(xiàn)界面的初始化是通過(guò)QtCreator來(lái)拖拽來(lái)實(shí)現(xiàn)的,再加上后期代碼中對(duì)界面的修飾,這樣就成了最后的效果圖。this->setWindowFlags(Qt::Dialog|Qt::WindowMinimizeButtonHint);this->setAutoFillBackground(true);QPalettepalette;QPixmappixmap(":/D:/5.jpg");palette.setBrush(QPalette::Window,QBrush(pixmap));this->setPalette(palette);對(duì)setWindowFlags()函數(shù)參數(shù)的設(shè)置來(lái)控制界面中大小的設(shè)置,屏蔽還原按鈕,這樣的設(shè)計(jì)對(duì)于只提供登錄的窗口來(lái)說(shuō)是比較好的,其次可以通過(guò)控制QPalette的屬性來(lái)設(shè)置窗口的背景圖片,但前提是界面的自動(dòng)填充得設(shè)置為真,否則設(shè)置不會(huì)生效。在使用圖片的時(shí)候需要注意將圖片做成資源文件,這樣就可以很好的進(jìn)行移植,當(dāng)系統(tǒng)在其它電腦上運(yùn)行的時(shí)候也可以顯示出圖片。信號(hào)與槽函數(shù):connect(ui->quit_btm,SIGNAL(clicked()),this,SLOT(close()));退出按鈕的clicked()信號(hào)與本界面的close()函數(shù)相結(jié)合來(lái)達(dá)到窗口的退出功能。connect(this->loginwidget->ui->log_btm,SIGNAL(clicked()),this,SLOT(log_fun()));新建一個(gè)類,在這個(gè)類中的公有部分設(shè)置一個(gè)登錄窗口的對(duì)象,這樣可以通過(guò)這個(gè)對(duì)象來(lái)操作登錄類中的控件,這樣的設(shè)計(jì)符合邏輯結(jié)構(gòu)的分層,避免太多的數(shù)據(jù)堆積到一起造成數(shù)據(jù)操作時(shí)紊亂。在這個(gè)教務(wù)系統(tǒng)中,有大量的點(diǎn)擊信號(hào)與槽函數(shù),對(duì)于發(fā)出這些信號(hào)的控件都有自己獨(dú)特的名字,然后根據(jù)它們的名字進(jìn)行函數(shù)的命名,并且在編程中信號(hào)與槽函數(shù)的連接都有相應(yīng)的注釋。信號(hào)和槽機(jī)制是QT的主流核心技術(shù),在程序運(yùn)行的時(shí)候,有的信號(hào)槽就沒(méi)有指到恰當(dāng)?shù)牡胤?,所以?dǎo)致的結(jié)果就是在點(diǎn)擊按鍵的時(shí)候沒(méi)有出現(xiàn)預(yù)期的結(jié)果,所以每一個(gè)都有對(duì)應(yīng)的信號(hào)和槽,代碼量比較多,在編寫的時(shí)候稍微不小心就會(huì)導(dǎo)致connect()函數(shù)的實(shí)效,所以一定要小心每個(gè)按鍵在編寫時(shí)要保證它的有效。圖4-1登錄流程圖如圖4-1所示的流程圖所示,登錄按鈕的槽函數(shù)log_fun()負(fù)責(zé)采集登錄窗口的數(shù)據(jù),并且對(duì)數(shù)據(jù)進(jìn)行判斷,對(duì)于不正確的登錄信息予以拒絕訪問(wèn)。這時(shí)就要與數(shù)據(jù)庫(kù)中的表進(jìn)行交互,本程序使用的Sqlite數(shù)據(jù)庫(kù),并且調(diào)用QT中封裝的數(shù)據(jù)庫(kù)的操作來(lái)完成與數(shù)據(jù)庫(kù)的數(shù)據(jù)交流。voidRegAction::log_fun(){QStringtype=this->loginwidget->ui->type_combobox->currentText();QStringname_string=this->loginwidget->ui->name_LineTxt->text();QStringpasswd=this->loginwidget->ui->passwd_LineTxt->text();if(!sql.connectionDB()){QMessageBox::warning(this,"fail","數(shù)據(jù)庫(kù)打開失敗!");}if(this->loginwidget->ui->type_combobox->currentIndex()==0||this->loginwidget->ui->name_LineTxt->text().isEmpty()||this->loginwidget->ui->passwd_LineTxt->text().isEmpty()){QMessageBox::warning(this,"fail","登錄信息有誤");}else{if(!sql.selectuser(type,name_string,passwd))QMessageBox::warning(this,"fail","登錄失敗");else{sql.db.close();QStringtype=this->loginwidget->ui->type_combobox->currentText();intid=this->loginwidget->ui->name_LineTxt->text().toInt();QSqlTableModel*model=sql.queryuserinfo(id,type);this->mainface->ui->usertable->setModel(model);this->mainface->show();if(pare("學(xué)生")==0){this->mainface->ui->left_widget->setEnabled(false);this->mainface->ui->queryAllClass->setEnabled(false);this->mainface->ui->queryAllRecord->setEnabled(false);this->mainface->ui->queryAllScore->setEnabled(false);this->mainface->ui->updscore_btm->setEnabled(false);this->mainface->ui->addscore_btm_2->setEnabled(false);this->mainface->ui->delscore_btm->setEnabled(false);this->mainface->ui->managuser_btm->setEnabled(false);mainface->show();}elseif(pare("管理員")==0){this->mainface->ui->left_widget->setEnabled(true);this->mainface->ui->queryAllClass->setEnabled(true);this->mainface->ui->queryAllRecord->setEnabled(true);this->mainface->ui->queryAllScore->setEnabled(true);this->mainface->ui->updscore_btm->setEnabled(true);this->mainface->ui->addscore_btm_2->setEnabled(true);this->mainface->ui->delscore_btm->setEnabled(true);this->mainface->ui->managuser_btm->setEnabled(true);mainface->show();}elseif(pare("教師")==0){this->mainface->ui->left_widget->setEnabled(false);this->mainface->ui->queryAllClass->setEnabled(true);this->mainface->ui->queryAllRecord->setEnabled(true);this->mainface->ui->queryAllScore->setEnabled(true);this->mainface->ui->updscore_btm->setEnabled(true);武漢理工大學(xué)武漢理工大學(xué)武漢理工大學(xué)武漢理工大學(xué)武漢理工大學(xué)武漢理工大學(xué)this->mainface->ui->addscore_btm_2->setEnabled(true);this->mainface->ui->delscore_btm->setEnabled(true);this->mainface->ui->managuser_btm->setEnabled(false);mainface->show();}}}}由以上代碼可以看出,不同的登錄對(duì)象對(duì)應(yīng)于不同的操作界面的設(shè)置是在頁(yè)面的顯示時(shí)動(dòng)態(tài)生成的,在界面重新登錄時(shí)可以保證提供給用戶正確的界面。系統(tǒng)先獲得在登錄界面中Qlineedit中的數(shù)據(jù),然后將這些用戶信息跟數(shù)據(jù)庫(kù)中存放的用戶信息相比對(duì),并且使用if嵌套來(lái)判斷不同的情況。對(duì)于信息錯(cuò)誤的信息,系統(tǒng)會(huì)彈出一個(gè)QMessageBox來(lái)提示用戶輸入有誤,并且用戶可以重新輸入;對(duì)于正確的信息,系統(tǒng)將對(duì)信息做出判斷,根據(jù)不同的用戶來(lái)配置不同的用戶界面,即通過(guò)將一些控件禁用來(lái)實(shí)現(xiàn)。QRegExpregExp("[0-9]{1,10}");QRegExpValidator*pRegExpValidator=newQRegExpValidator(regExp,this);ui->name_LineTxt->setValidator(pRegExpValidator);ui->passwd_LineTxt->setEchoMode(QLineEdit::Password);在登錄界面中需要輸入用戶名以及密碼,出于安全的考慮,在輸入用戶名的文本框中設(shè)置了輸入限制,根據(jù)正則表達(dá)式的規(guī)范,在這個(gè)文本框中將無(wú)法輸入數(shù)字之外的其它字符,并且有字?jǐn)?shù)限制,此處根據(jù)我的實(shí)際情況設(shè)置成了最多十位的輸入。而且密碼框的輸入字符會(huì)顯示為小黑點(diǎn),這樣就可以避免密碼在無(wú)意之間泄漏。4.3數(shù)據(jù)庫(kù)的操作上面的代碼中涉及到了數(shù)據(jù)庫(kù)的操作,對(duì)于數(shù)據(jù)庫(kù)的操作,可以新建一個(gè)封裝數(shù)據(jù)庫(kù)操作的類,在這個(gè)類中完成對(duì)數(shù)據(jù)庫(kù)的交互部分。一般數(shù)據(jù)庫(kù)鏈接有五大步驟,分別是:1.加載(注冊(cè))數(shù)據(jù)庫(kù)2.建立鏈接3.執(zhí)行SQL語(yǔ)句4.處理結(jié)果5.關(guān)閉數(shù)據(jù)庫(kù)boolsql_reg::connectionDB(){db=QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName("manager.db");if(db.open()){qDebug()<<"數(shù)據(jù)庫(kù)打開成功";returntrue;}else{qDebug()<<"數(shù)據(jù)庫(kù)打開失敗";db.lastError();qDebug()<<"****************";returnfalse;}}這是一個(gè)連接數(shù)據(jù)庫(kù)的函數(shù)。對(duì)于要執(zhí)行數(shù)據(jù)操作的程序來(lái)說(shuō),所有的操作都是基于數(shù)據(jù)庫(kù)的連接成功,所以將數(shù)據(jù)庫(kù)的連接部分單獨(dú)分為一個(gè)函數(shù),并且在這個(gè)函數(shù)中添加了一些輸出語(yǔ)句;如果出錯(cuò),可以通過(guò)db.lastError()來(lái)提供出錯(cuò)的信息,并且可以通過(guò)使用qdebug來(lái)定外錯(cuò)誤的位置,這樣可以給程序員的檢錯(cuò)提供幫助,使程序員快速的發(fā)現(xiàn)錯(cuò)誤以至解決錯(cuò)誤。boolsql_reg::selectuser(QStringtype,QStringid,QStringpasswd){bool*ok;id.toInt(ok,10);QSqlQueryquery;query.exec(QString("select*fromuserwheretype='%1'andid=%2andpasswd='%3'").arg(type).arg(id).arg(passwd));//qDebug()<<QString("select*fromuserwheretype='%1'andid=%2andpasswd='%3'").arg(type).arg(id).arg(passwd);if(!query.next()){qDebug()<<"none";qDebug()<<"selectusererror";qDebug()<<query.lastError();qDebug()<<"************";returnfalse;}else{qDebug()<<query.value(0).toInt()<<query.value(1).toString();returntrue;}} 查詢用戶,這是點(diǎn)擊登錄按鈕后的槽函數(shù)要調(diào)用的函數(shù),將用戶在登錄界面提供的信息傳參到這個(gè)函數(shù),這個(gè)函數(shù)負(fù)責(zé)將傳入的信息與數(shù)據(jù)庫(kù)中的信息進(jìn)行比對(duì),并且返回比對(duì)結(jié)果;如果比對(duì)結(jié)果發(fā)現(xiàn)數(shù)據(jù)正確,返回true,否則返回false,程序根據(jù)函數(shù)的不同返回結(jié)果來(lái)選擇不同的程序流程走向。//查詢用戶信息QSqlTableModel*sql_reg::queryuserinfo(intid,QStringtype){QSqlTableModel*model=newQSqlTableModel;model->setTable("user");model->setEditStrategy(QSqlTableModel::OnManualSubmit);//添加過(guò)濾器model->setFilter(QObject::tr("id=%1andtype='%2'").arg(id).arg(type));model->select();//選取整個(gè)表的所有行model->lastError();//ui->tableView->setModel(model);returnmodel;} 這個(gè)函數(shù)查詢用戶在數(shù)據(jù)庫(kù)中的信息,程序根據(jù)函數(shù)返回結(jié)果QsqlTab
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《數(shù)字信號(hào)處理-基于數(shù)值計(jì)算》課件-第2章
- 《氧化還原反應(yīng)預(yù)習(xí)》課件
- 合同備注無(wú)效最簡(jiǎn)單三個(gè)步驟
- 投資花卉種植項(xiàng)目合同模板
- 工程施工合同實(shí)例
- 2025年涼山州貨運(yùn)從業(yè)資格證考試卷
- 2025年寧夏貨運(yùn)從業(yè)資格證考試題庫(kù)
- 2025年福建貨運(yùn)從業(yè)資格證模擬考試題答案大全
- 《氧化還原用》課件
- 《城市交通特性》課件
- 機(jī)電工程規(guī)范
- 攝影器材借還管理登記表Excel模板
- 中國(guó)風(fēng)兒童滿月紀(jì)念相冊(cè)PPT模板
- 楊柳煤礦“三量”動(dòng)態(tài)變化情況分析報(bào)告(3)
- 醫(yī)療垃圾收集辦法及流程圖
- 復(fù)古中古風(fēng)非遺之蘇繡文化介紹PPT模板
- 大氣課程設(shè)計(jì)-—袋式除塵器
- 手衛(wèi)生流程圖
- 叉車自檢報(bào)告模板(1)
- 水泥攪拌樁水灰比及漿液用量計(jì)算表(自動(dòng)計(jì)算)
- 建筑物放線驗(yàn)線技術(shù)報(bào)告
評(píng)論
0/150
提交評(píng)論