文亮



闡述通過一種基于Codeigniter框架的科研項(xiàng)目管理信息系統(tǒng)在開發(fā)和實(shí)現(xiàn)過程中,對(duì)其系統(tǒng)結(jié)構(gòu)和實(shí)現(xiàn)過程進(jìn)行了詳細(xì)描述。利用開源框架和MVC開發(fā)模式實(shí)現(xiàn)了系統(tǒng)主要功能。通過實(shí)踐分析在科研項(xiàng)目管理信息化過程中,總結(jié)出了信息管理系統(tǒng)開發(fā)過程中需要關(guān)注和涉及的一些問題。
科研對(duì)我國的綜合發(fā)展起著決定性的作用。高等學(xué)校既是科技人員集聚的重要基地,又承擔(dān)著科學(xué)技術(shù)發(fā)展所需科技人才的培養(yǎng)任務(wù)。在我國科學(xué)研究工作中,高等學(xué)校擁有的這支強(qiáng)大的科研力量在整個(gè)科技研發(fā)工作起著重要作用。隨著高校科研業(yè)務(wù)量不斷加大,如何將日常科研項(xiàng)目的管理工作規(guī)范化、科學(xué)化是學(xué)校科研管理單位需要思考的問題。
傳統(tǒng)的科研項(xiàng)目管理模式,主要依賴Excel、word等辦公軟件來處理大量的項(xiàng)目和成果數(shù)據(jù)的方式。過去采用傳統(tǒng)的手工辦法,難以及時(shí)有效的掌握最新的科研情況,而且每次查詢統(tǒng)計(jì)工作量浩大,通過項(xiàng)目管理系統(tǒng),所有的查詢統(tǒng)計(jì)可以很方便快捷的得到結(jié)果數(shù)據(jù)。
本文以西北工業(yè)大學(xué)明德學(xué)院在設(shè)計(jì),實(shí)現(xiàn)了一種基于Codeigniter框架的科研項(xiàng)目管理信息系統(tǒng)的過程為例,來分析和實(shí)踐科研項(xiàng)目管理信息化過程中需要關(guān)注和涉及的一些問題。
1、系統(tǒng)功能需求分析
西北工業(yè)大學(xué)明德學(xué)院是一所全日制普通本科高校,隨著科研項(xiàng)目的不斷增多以及科技成果數(shù)據(jù)的日益增大,科研管理部門迫切需要開發(fā)一套科研項(xiàng)目管理信息系統(tǒng),來對(duì)日常科研項(xiàng)目工作進(jìn)行管理。
整合學(xué)校日常科研項(xiàng)目管理工作流程,系統(tǒng)總體功能應(yīng)包括,科研項(xiàng)目申報(bào)通知發(fā)布、科研項(xiàng)目申報(bào)、項(xiàng)目立項(xiàng)管理、項(xiàng)目中期檢查、項(xiàng)目結(jié)題管理、項(xiàng)目及科研經(jīng)費(fèi)數(shù)據(jù)統(tǒng)計(jì)、科研人員用戶管理等主要功能模塊。(圖-1)
1.1科研項(xiàng)目管理相關(guān)信息發(fā)布。在日常的科研項(xiàng)目管理中,有大量的申報(bào)規(guī)范、管理制度以及項(xiàng)目管理通知需要在一定范圍內(nèi)公共發(fā)布。這就需要給管理人員提供一個(gè)發(fā)布信息的平臺(tái),同時(shí)對(duì)科研人員需要設(shè)計(jì)信息查詢及瀏覽的信息接收窗口。讓相關(guān)科研的信息規(guī)范文件方便快捷下達(dá),使科研人員及時(shí)了解和接收到相關(guān)信息,并能按照信息參與科研工作。
1.2項(xiàng)目申報(bào)。科研人員能夠按照統(tǒng)一的項(xiàng)目申報(bào)要求,通過網(wǎng)絡(luò)客戶端或移動(dòng)客戶端,填報(bào)科研項(xiàng)目申報(bào)表。系統(tǒng)能夠在申報(bào)時(shí)使各種數(shù)據(jù)的格式規(guī)范保持一致。同一科研人員可以申報(bào)單項(xiàng)或多項(xiàng)科研項(xiàng)目。同時(shí)可以在項(xiàng)目提交系統(tǒng)之前能夠進(jìn)行編輯、修改、撤銷.申報(bào)項(xiàng)目組成員、生成和打印項(xiàng)目申報(bào)表等操作。管理員可以通過該功能模塊,對(duì)審核通過立項(xiàng)的科研項(xiàng)目進(jìn)行立項(xiàng)管理。
1.3項(xiàng)目中期檢查。項(xiàng)目實(shí)施過程控制。在項(xiàng)目實(shí)施過程中通過中期檢查,可以了解和掌握各科研項(xiàng)目開展的基本情況,并可提供管理者數(shù)據(jù)參考,便于在管理中加強(qiáng)科研項(xiàng)目的實(shí)施管控。
1.4結(jié)題管理。通過中期檢查的科研項(xiàng)目或申請(qǐng)并獲批復(fù)的延期研究項(xiàng)目,可以通過這個(gè)管理模塊來控制是否能夠按期結(jié)題。
1.5項(xiàng)目信息數(shù)據(jù)統(tǒng)計(jì)。項(xiàng)目信息數(shù)據(jù)統(tǒng)計(jì)分析為管理者提供管理支撐的主要依據(jù)。統(tǒng)計(jì)分析是實(shí)現(xiàn)科學(xué)化管理和參與決策的有效手段。統(tǒng)計(jì)分析能夠客觀的反映項(xiàng)目研究的實(shí)際狀態(tài),同時(shí)也是促進(jìn)科研工作良好進(jìn)行的重要保證。該功能模塊不光能按使用者的統(tǒng)計(jì)焦點(diǎn)來完成科研項(xiàng)目數(shù)據(jù)的統(tǒng)計(jì)工作,還能按照時(shí)間周期生成對(duì)應(yīng)的數(shù)據(jù)報(bào)告,直接供管理者參考。
2、開發(fā)模式及工具的選取
2.1 MVC軟件層次開發(fā)模式
MVC軟件開發(fā)模式是當(dāng)前面向?qū)ο蟪绦蛟O(shè)計(jì)過程中,將軟件按照功能進(jìn)行抽象,即可實(shí)現(xiàn)層次分離的一種開發(fā)模式。這種開發(fā)模式層次之間的耦合性比較低,可以提高開發(fā)和維護(hù)的效率;同時(shí)高度關(guān)注重用性和可適用性;具有較低的生命周期成本,使降低開發(fā)和維護(hù)用戶接口的技術(shù)含量成為可能這種模式部署快速,使開發(fā)時(shí)長大大縮短可維護(hù)性強(qiáng)更易于維護(hù)和修改。所以這種模式目前廣泛應(yīng)用各種大中型軟件的開發(fā)。
常見的三層框架就比較合理。MVC中三層及Model(數(shù)據(jù)模型層)+View(視圖層)+Controller(控制調(diào)度層)。
2.1.1 Model數(shù)據(jù)模型。Model用于封裝與應(yīng)用程序業(yè)務(wù)邏輯相關(guān)的數(shù)據(jù),以及對(duì)數(shù)據(jù)的處理方法。數(shù)據(jù)模型接受視圖請(qǐng)求的數(shù)據(jù),并返回最終的處理結(jié)果,是MVC最主要核心。例如對(duì)數(shù)據(jù)庫的改、刪、增、查等操作后返回?cái)?shù)據(jù)的處理結(jié)果給視圖。
2.1.2 View視圖界面。View是能夠?qū)崿F(xiàn)數(shù)據(jù)有目的顯示的界面。代表用戶交互界面,也就是我們常見的Web頁面。在本系統(tǒng)的開發(fā)過程中視圖界面是通過Dreamweaver來進(jìn)行網(wǎng)頁設(shè)計(jì)制作。和傳統(tǒng)的PHP網(wǎng)站開發(fā)不同,MVC設(shè)計(jì)模式對(duì)于視圖的處理僅限于數(shù)據(jù)的采集和處理。
2.1.3 Control控制器。Control是在業(yè)務(wù)邏輯層面間起組織和調(diào)度作業(yè),用于控制應(yīng)用程序的流程。是模型、視圖以及其他任何處理Http請(qǐng)求所必須的資源之間的中介,同時(shí)將生成頁面返回給用戶。
本系統(tǒng)軟件開發(fā)中選取的Codeigniter框架就是這樣的一種MVC開發(fā)模式。
2.2 PHP開發(fā)CodeigIuter框架的選取
Codeigniter(簡稱CI框架)是一套給PHP語言網(wǎng)站開發(fā)者使用的應(yīng)用程序開發(fā)框架和工具包。它的目標(biāo)是讓你能夠更快速的開發(fā),它提供了日常任務(wù)中所需的大量類庫以及簡單的接口和邏輯結(jié)構(gòu)。通過減少代碼量,Codeigniter讓你更加專注于你的創(chuàng)造性工作。
CI框架是開放的、免費(fèi)的、輕量級(jí)的,通過MIT開源許可協(xié)議授權(quán),你可以任意使用。我們的核心系統(tǒng)只需要一些非常小的庫,而且?guī)於际歉鶕?jù)請(qǐng)求動(dòng)態(tài)加載。框架功能非常強(qiáng)大擁有全面的類庫,能滿足大多數(shù)Web開發(fā)任務(wù)的需要,例如:訪問數(shù)據(jù)庫,驗(yàn)證表單數(shù)據(jù),會(huì)話管理,處理圖像,處理XML-RPC數(shù)據(jù)等。CI框架的可擴(kuò)展性強(qiáng),系統(tǒng)可以非常簡單的通過你自己的類庫和輔助函數(shù)來擴(kuò)展,也可以通過類擴(kuò)展或系統(tǒng)鉤子來實(shí)現(xiàn)。CI框架是中小型管理信息系統(tǒng)軟件開發(fā)非常理想的框架選擇。
2.3 B/S應(yīng)用系統(tǒng)體系架構(gòu)(圖-2)
在綜合考慮了系統(tǒng)的使用主體和用戶需求,系統(tǒng)開發(fā)過程中選取了B/S的系統(tǒng)架構(gòu)。這種架構(gòu)由客戶端使用瀏覽器來直接訪問服務(wù)器端,并由服務(wù)器直接相應(yīng)用戶的各種請(qǐng)求并返回結(jié)果給用戶。這種模式簡單易于用戶使用。在目前大多移動(dòng)網(wǎng)絡(luò)終端上也不受限制,使用手機(jī)瀏覽器訪問無障礙,提高了系統(tǒng)的實(shí)際可用性。
3、數(shù)據(jù)庫設(shè)計(jì),數(shù)據(jù)模型建立
數(shù)據(jù)庫是信息系統(tǒng)的核心和基礎(chǔ)。它把信息系統(tǒng)中大量的數(shù)據(jù)按一定的模型組織起來,提供存儲(chǔ)、維護(hù)、檢索數(shù)據(jù)的功能,使得信息系統(tǒng)可以方便、及時(shí)、準(zhǔn)確地從數(shù)據(jù)庫中獲得所需的信息。綜合科研項(xiàng)目系統(tǒng)開發(fā)用戶需求,在系統(tǒng)設(shè)計(jì)中選取了MySOL數(shù)據(jù)庫來作為系統(tǒng)數(shù)據(jù)庫。
MySOL數(shù)據(jù)庫使用C和c++編程語言編寫,且可以使用多種編譯器進(jìn)行測試,保證源代碼的可移植性,安裝簡單小巧。支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Solaris、Windows等多種操作系統(tǒng)。能為多種編程語言提供了API。其中編程語言包括C、c++、Python、java、Perl、PHP、Eiffel、Ruby和Tcl等。支持多線程,使CPU資源得到充分利用。優(yōu)化的SOL查詢算法,有效提高查詢的速率。MySOL不僅能夠作為一個(gè)單獨(dú)的應(yīng)用程序應(yīng)用在客戶端服務(wù)器網(wǎng)絡(luò)環(huán)境中,也能作為一個(gè)庫而嵌入到其他的軟件中。提供多語言支持,常見的編碼如中文的GB2312、BIG5、UTF8等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名。在處理業(yè)務(wù)量方面,可以處理擁有上千萬條記錄的大型數(shù)據(jù)庫。使用標(biāo)準(zhǔn)的SOL數(shù)據(jù)語言形式,對(duì)PHP有很好的支持。MySOL能被眾多的中小型企業(yè)喜愛,我想是離不開這些優(yōu)點(diǎn)的,其不僅能滿足中小型企業(yè)對(duì)數(shù)據(jù)庫的需求,且免費(fèi)開源,故在系統(tǒng)庫設(shè)計(jì)時(shí)選用該數(shù)據(jù)庫作為系統(tǒng)數(shù)據(jù)庫。
數(shù)據(jù)庫建立和維護(hù)工具選取Navicat forMySOL工具,該工具使用簡單易用,能夠快速完成數(shù)據(jù)結(jié)構(gòu)的搭建和維護(hù)。(圖-3)
數(shù)據(jù)模型建立方式。
數(shù)據(jù)庫的運(yùn)算并不是在控制類中進(jìn)行的,而是在數(shù)據(jù)模型中,這樣他們就可以在后面很容易地被反復(fù)使用。數(shù)據(jù)模型就是對(duì)你的數(shù)據(jù)庫或其他數(shù)據(jù)存儲(chǔ)方式進(jìn)行取回、插入和更新的地方,它們的功能是展示你的數(shù)據(jù)。
打開CI框架目錄中application/models文件夾,新建一個(gè)數(shù)據(jù)模型文件research_model.php示例代碼如下:
<?php
class Research_model extends CI_Controller {
function_construct()
{ parent::_construct();
}
function get_yh($user){
{
$str=“SELECT*from user wherejgh=‘$user'";
$query= $this->db->query("$str");
retum $query;
}
}
這段代碼,它創(chuàng)建了一個(gè)繼承CI-Model的數(shù)據(jù)模型,并使用“$this->load->database()”來載人數(shù)據(jù)庫類。數(shù)據(jù)庫已經(jīng)系統(tǒng)配置文件config/database中進(jìn)行連接和配置,在使用時(shí)直接調(diào)用即可。以上代碼表示從user(用戶表)數(shù)據(jù)庫表中,獲取jgh(教工號(hào))為查詢數(shù)據(jù)變量“$user”的所有數(shù)據(jù)(用戶基本信息),并將查詢到的數(shù)據(jù)集賦給數(shù)組變量“$query”供系統(tǒng)調(diào)用。
4、表層設(shè)計(jì)
表層設(shè)計(jì)主要是WEB頁面的設(shè)計(jì),并將數(shù)據(jù)模型中獲取的數(shù)據(jù)表示在頁面中。在本系統(tǒng)設(shè)計(jì)過程中共設(shè)計(jì)生成36個(gè)系統(tǒng)WEB頁面。
這些頁面住主要通過Dreamweaver編輯,一般保存在框架目錄application/View中,由Control控制器在需要時(shí)進(jìn)行邏輯調(diào)取。調(diào)取時(shí)使用$this->load->view();調(diào)用。具體調(diào)用頁面方法,見以下示例代碼:
<?php class Jtgl extends CI_Controller {
function_construct()
{ parent: :_construct () ;
$this->load->model ('Research_model') ;
public function index()
{
$this - >load- >view('admin/admin_top.php',$data);
$this->lo ad->view('admin/menu/adminmenu.php') ;
$this - >load->view('admin/jtgl_view.php' , $data) ;
} }?>
5、系統(tǒng)開發(fā)過程中需要注意的問題
5.1用戶界面是信息系統(tǒng)的門面,界面友好美觀以及導(dǎo)航流程清晰、幫助系統(tǒng)完備、版面簡潔,功能易用等設(shè)計(jì),對(duì)網(wǎng)絡(luò)平臺(tái)來說起著十分重要的作用。
5.2網(wǎng)絡(luò)系統(tǒng)的安全問題需要考慮和規(guī)劃。通過采用各種技術(shù)和管理措施,使平臺(tái)正常運(yùn)行,確保數(shù)據(jù)的可用性、完整性、保密性、可審查性。系統(tǒng)維護(hù)、數(shù)據(jù)備份、以及服務(wù)器及網(wǎng)絡(luò)帶寬等在建設(shè)時(shí)都需進(jìn)行詳細(xì)規(guī)劃和設(shè)計(jì)。
5.3作為一個(gè)軟件產(chǎn)品,從需求分析、業(yè)務(wù)分析、數(shù)據(jù)模型、功能模型,到開發(fā)實(shí)現(xiàn)與測試,需要符合軟件工程的要求。并且需要經(jīng)過開發(fā)、應(yīng)用實(shí)踐到問題反饋,再修改,直到二次開發(fā)的一個(gè)過程。而且隨著發(fā)展趨勢與研究熱點(diǎn)信息技術(shù)的不斷發(fā)展.平臺(tái)也需要涉及平臺(tái)的二次開發(fā)問題,設(shè)計(jì)規(guī)劃時(shí)需考慮平臺(tái)的二次開發(fā)可能性和系統(tǒng)預(yù)留開發(fā)接口及數(shù)據(jù)庫升遷、移植等問題。
科研項(xiàng)目管理信息化是科研管理重要的管理手段。系統(tǒng)為科研人員和管理者之間架起一座橋梁,能夠?qū)γ總€(gè)項(xiàng)目的整個(gè)生命周期進(jìn)行管理。通過統(tǒng)一的數(shù)據(jù)模型,提供了與項(xiàng)目相關(guān)活動(dòng)的準(zhǔn)確的各角度視圖,使科研主管部門能夠?yàn)轫?xiàng)目分配合適的資源,確保項(xiàng)目執(zhí)行并跟蹤項(xiàng)目的成果,從而提升科研能力及效率。