目 錄
摘 要 ...I
Abstract II
1綜述 1
1.1系統編寫目的 1
1.2系統建設背景 1
1.3系統發展趨勢 2
1.4文章組織結構 3
2需求分析 5
2.1角色功能需求分析 5
2.1.1系統管理需求分析 5
2.1.2學生管理需求分析 6
2.1.3身份驗證需求分析 6
2.2系統功能需求分析 7
2.2.1信息管理需求分析 7
2.2.2培養管理需求分析 8
2.2.3檔案管理需求分析 9
2.2.4數據檢索需求分析 9
2.2.5權限管理需求分析 9
2.3系統功能用例分析 10
2.3.1角色模塊用例分析 10
2.3.2信息管理用例分析 12
2.3.3培養管理用例分析 14
2.3.4檔案管理用例分析 14
2.3.5數據維護用例分析 15
2.4數據流程分析 16
2.4.1數據流程圖 16
2.4.2數據字典 17
2.5本章小結 19
3系統設計 20
3.1功能結構設計 20
3.1.1個人信息管理功能設計 20
3.1.2培養信息管理功能設計 21
3.1.3學生工作管理功能設計 21
3.1.4畢業信息管理功能設計 22
3.1.5學位檔案管理功能設計 22
3.1.6系統信息維護功能設計 23
3.2技術架構設計 24
3.3系統詳細設計 27
3.3.1層次架構 27
3.3.2調用邏輯 27
3.3.2目錄結構 29
3.4數據庫設計 29
3.5.1概念結構設計 29
3.4.2 E-R關系設計 30
3.4.3數據庫表設計 33
3.5本章小結 36
4系統實現 37
4.1系統頁面實現 37
4.1.1權限控制模塊實現 37
4.1.2個人信息管理實現 38
4.1.3學生工作管理實現 39
4.1.4培養信息管理實現 40
4.1.5學位檔案管理實現 42
4.1.6部分關鍵代碼實現 43
4.2系統運行維護 50
4.2.1系統的測試步驟 50
4.2.2系統的維護方法 51
4.3本章小結 52
結 論 53
附錄 54
參考文獻 61
致 謝 63
1綜述
1.1系統編寫目的
基于MVC和ExtJS的高校學生信息管理系統采用計算機技術和數據儲存技術,將 學生信息才用計算機語言的形式管理起來,提高了學生信息的管理效率,并能準確地發 現錯誤和糾正,從而使信息的有效管理,規范高校對學生信息的管理。同時可以滿足學 生管理一體化的信息管理需求,提供一個安全和有效的實施方法,對高校學生信息進行 高校的管理,以提高高校學生管理的信息化程度,使高校學生管理力度和管理標準得到 增強。具體表現為以下幾個方面:
1•使用學生信息管理系統對學生信息的管理更加科學、規范,更加實用方便。
2.使用網絡訪問的方式隨時訪問學生信息,為信息的修改錄入提供方便。因此,不 管學生和老師在不在高校里,都可以通過訪問網絡的方式,使用用戶名和密碼來登錄自 己的系統,進行基本信息的修改,提高了學生信息的實時性和準確性。
3.提高學生工作的工作效率。學生的信息存儲在數據庫中,對于管理者來說,查找, 更改學生的信息會變得十分容易,這樣可以大大提高工作效率。
1.2系統建設背景
隨著計算機、網絡和信息技術的發展,社會進入了一個信息化的時代,信息在人們 日常生活中的地位越來越高。同時,全國高校的大范圍擴招,高校的辦學規模和學生數 量不斷增加,由于辦學規模和學生數量的不斷增加是的教學資源和信息資源變的越來越 緊張,給高校的教學管理和學生管理工作增加了很大的難度。怎樣才能提高信息和資源 的利用率,是高校的教學管理和學生管理工作做到規范化、科學化和便捷化,已經成了 現在高校學生信息管理甚至是對整個高校進行管理的重點[“】。
之前高校對學生的管理全靠人力完成•有時因為管理人員的疏忽造成高校學生信息 的丟失,高校學生的價值沒有得到應有發揮•我們經過考察各高校的學生信息的管理工 作,幾乎所有學生信息管理均沒有形成成套的管理體系多學生信息進行統一的管理工作 卩叨。甚至有的高校還在使用手工的管理方式進行管理,這樣既復雜又不方便,工作效 率低,也容易出錯。為了方便高校對學生信息的統一管理,這就萌發了我們想開發一個 高校學生信息管理系統軟件的想法
目前在國內學生管理信息系統中,很少學生管理信息系統可以從全體使用者的角度 出發,為用戶提供快速的邊界一站式服務。現在的學生信息管理系統只能實現單點訪問 登陸,不能提供全面的學生信息資料服務,實現學生信息的服務系統的一體化。從用戶 的角度出發,為實現方便快捷的綜合性服務,以及把快速服務作為出發點度,針對目前 沒有被提出的,使用新一代身份認證模式的學生信息服務系統,所以快速服務和新一代 身份識別的結合使學生信息建立快捷服務的系統,將給高校帶來極大的方便。本文的主 要工作是著手構造一個學生信息的綜合管理信息服務系統,通過一卡通建設和身份驗證 單點登錄完成學生信息管理功能,實現快捷方便的學生信息管理系統。
因此,本論文結合高校學生管理工作,査找具體工作中的問題,在對系統進行開發 時通過調研對抽象出系統的模型,對學生信息進行綜合管理;并且給出具體的系統設計 分析,以及基于MVC和ExtJS的高校學主信息管理系統的設計、開發和實現的方法,并 使用ExtJS技術和MVC框架對高校學生信息管理系統進行實現。基于MVC和ExtJS的高 校學生信息管理系統采用MVC技術與EXTJS前端技術結合的方式進行開發,將大量的學 生信息使用數據化的方式存放到數據庫中,提供人機友好的交互界面,是信息的錄入速 度有了很大的提高,同時論文中主要的工作是對高校學生信息管理系統的實現提出了使 用ExtJS技術和MVC框架進行實現的設計方法和理念,應進行了深入的研究。采用ExtJS 技術和MVC框架對系統進行開發,使用Struts來實現MVC結構,使用Hibernate管理 數據集,并使用ExtJS技術開發學生信息管理系統的頁面建立基于MVC和ExtJS 的高校學生信息管理系統的開發模型,并采取軟件工程的管理方法對基于MVC和ExtJS 的高校學生信息管理系統項目的開發進行開發流程、業務流程的管理和文檔描述,實現 開發的專業化。
1.3系統發展趨勢
現在,隨著高校招生數量的繼續增加,學生,教師和工作人員的數量也越來越多, 這就造成學生信息的數量急劇增加,因此在處理這項工作的統籌管理時,工作人員需要 花費很多努力,才能確保工作的正確性和可靠性,因此,學生管理信息系統的實施具有 迫切性和緊迫性,但在現有的資源和條件下就產生了對高校學生信息管理系統的需求。 十幾年來高校學生的管理全靠人力de】.有時因為工作人員的疏忽造成高校學生信息的 丟失損害現象相當嚴重,髙校學生的價值沒有得到應有發揮•我們經過考察各高校的學生 信息的管理工作,幾乎所有學生信息管理均沒有形成成套的管理體系多學生信息進行統 一的管理工作。甚至有的高校還在使用手工的管理方式進行管理,這樣既復雜又不方便, 工作效率低,也容易出錯。為了方便高校對學生信息進行的統一管理,說以就產主了開 發一個高校學生信息管理系統的想法。
所以綜上所述,本學生管理信息系統的開發實施是可行的。從技術研究背景方面講, 筆者準備使用MVC和ExtJS技術對系統進行構建,MVC(Model View Controller)框架㈣創] 和ExtJS框架都是現在軟件工程開發所使用的主流技術,下面分別給出簡單介紹:
MVC是一個系統的體系結構框架應用程序的輸入,處理,輸出流量按照型號,視 圖,控制器相互隔離的方式,這樣的應用程序分為三個層-模型層,視圖層,控制層, 讓你可以減少耦合的軟件工程項目開發和維護了很大的方便程度。MVC是Xerox PARC 在八十年代為編程語言Smalltalk發明的一種軟件設計模式,至今已被廣泛使用。最近 幾年被推薦為Oracle旗下Sun公司JavaEE系統的設計模式[31'32],并且受到越來越多的 使用ColdFusion和PHP的開發者的歡迎。
ExtJS是一個主要的前端用戶界面編寫工具,用于創建與技術無關的ajax前端框架, 這是一個基于Web的富客戶端框架,它是完全基于標準的W3C技術結構的建設,使用 所有的DIV, HTML, CSS等技術。ExtJS的最突出的地方,是開發了一系列非常簡 單易用的控件和組件,我們只需要使用這些組件可以實現各種豐富多彩的UI開發,使 用起來非常方便,可以使用它簡單地做出十分優雅美觀的頁面,所以被廣泛使用。
總之,實現基于MVC和ExtJS的學生信息管理系統的主要目的是,以滿足學生管 理一體化的信息管理需求,提供一個安全和有效的實施方法,對高校學生信息進行高校 的管理,以提高高校學生管理的信息化程度,使高校學生管理力度和管理標準得到增強。 其意義在于:1.管理更加科學,有規范性。使用學生信息管理系統對學生信息的管理更 加規范,更加實用方便。2.使用網絡訪問的方式隨時訪問學生信息,為信息的修改錄 入提供方便。因此,不管學生和老師在不在高校里,都可以通過訪問網絡的方式,使用 用戶名和密碼來登錄自己的系統,進行基本信息的修改,提高了學生信息的實時性和準 確性。3.提高學生工作的工作效率。學生的信息存儲在數據庫中,對于管理者來說,查 找,更改學生的信息會變得十分容易,這樣可以大大提高工作效率。
1-4文章組織結構
論文被分為五個章節。本文主要介紹基于MVC和ExtJS的學生信息管理系統的設 計和實現,以及具體的系統設計分析,以及基于MVC和ExtJS的高校學生信息管理系 統的設計、開發和實現的方法。
第一章綜述。說明了在開發該系統的主要工作和論文的背景,組織結構。介紹了系 統的開發背景,系統的應用現狀,系統的研究現狀和應用相關的技術簡介。
第二章是需求分析。對基于MVC和ExtJS的學生信息管理系統的整體業務服務進 行了描述,同時,描述了需求分析,系統的分析,根據該系統的需求。
第三章是系統設計。提出了系統的設計原則和要求,介紹了整個系統的設計,應用 系統的技術架構,功能設計和詳細設計的需求,并數據庫設計的基礎上,給出整體方案 系統設計,功能設計。
第四章是系統實現。本章系統業務系統的實施為實現這個項目,并通過可視化界面 的代碼描述。此外,本章還對需要的一些關鍵技術的實現進行說明,并簡要介紹了系統 功能在應用程序中的具體代碼。
第五章是總結和展望。對于這個文章進行總結并指出不足和下一步工作。
2需求分析
本章介紹基于MVC和ExtJS的學生信息管理系統的分析和系統的功能需求分析。 分析前先對學生管理工作的業務邏輯進行調査和研究,把學生管理職能崗位分解成各種 業務信息管理服務,完成業務功能需求分析。這種信息管理服務是,面向學生和老師的 應用,信息服務業務流程的狀態需要滿足學生信息管理的數據操作要求,需求分析是對 這些業務過程進行分類總結,形成文件形式的詳細描述,即文檔。同時,把用戶需求抽 象成系統開發需要的需求定義描述,從而形成程序人員容易理解的開發需求文檔。系統 的需求分析是否完整,能否滿足用戶的需求是系統開發成功與否的關鍵。
2.1角色功能需求分析
根據用戶對基于MVC和ExtJS的學生信息管理系統的實際的需求情況,可以把系 統角色分為:系統管理員,學生。下面分別進行介紹:
2.1.1系統管理需求分析
(1) 學生信息管理。對于在校學生的獎勵和處罰的條件,學生信息的刪除,修改 等。
(2) 畢業生信息管理。畢業生有資格畢業的審計,包括:在高校的情況,是否受 到處罰準予畢業等。同時,提供成績管理,打印學生成績單。
(3) 管理考試信息。管理員根據學生的考試成績不及格信息來獲得學生和學科名 單,并安排重建和重修考試。
(4) 課程的信息化管理。要設置為每門課程的學期開始,班級,課程,任課教師。
(5) 信息管理為貧困學生。對于學生誰想要申請助學貸款,貸款金額和欠款金額 統計,同時安排勤工儉學工作。
(6) 經理來管理。系統管理員分為:系統管理員,院系輔導員,任課教師。其中, 系統管理員可以為整個系統,包括信息和所有的學生,教師,案件處理和修改;輔導員的 學生只能修改信息,任課教師講授的課程主要是對結果的信息集每學期我教課程成功 率,而報名結果,并保存,打印等操作。
(7) 進行用戶管理。新入校的學生時,新的學生上學,放學的管理員設置提供了 許多要導入的頁面,在相同的時間處,年級,班級的學生數,學生數按照作為一個學生 著陸系統使用的用戶名。同樣,對于第一份工作或新轉入高校教師,管理員要設置工作 號,工號作為一名教師登錄系統的用戶名。同時,管理員可以查詢所有用戶的密碼,可 以修改它。
2.1.2學生管理需求分析
(1)個人信息。學生登陸此系統后,需要提供個人基本信息填寫的頁面,包含學生所 需要填寫的基本內容,包括:姓名、性別、民族、出生日期、政治面貌、籍貫、身份證 號、聯系電話、所在班級、所學專業、所在系、家庭住址、父母及家庭情況等。除此之 外,并對原始默認密碼進行修改。
(2)班級信息。學生可對本人所在的班級及課程信息進行査詢搜索,包括:系別,所 修課程等。
(3)成績信息。學生可查詢己修課程的成績,對于需重修的課程可獲取需重修課程的 名稱以及相應的上課時間、地點等,以便做好補考準備。
(4)貸款信息。學生可査詢個人在校期間貸款與否以及貸款金額,査詢頁面中應包括 學生貸款金額和欠款金額等信息。如果沒有貸款,則頁面中顯示“無記錄”
(5)畢業審核信息。學生可査詢對個人在校期間所獲學分及獎懲信息,同時亦可査詢 是否通過畢業審核,是否達到畢業要求等信息。
2.1.3身份驗證需求分析
該系統是高校獨立于外界而對學生信息進行統一管理的應用軟件,使用范圍僅限于 本校未畢業的學生及在職的教職工人員,因此在進入本系統之前需要驗證身份。所有使 用者第一次在使用本系統時,需按管理員所注明的統一標碼的用戶名及密碼進行首次登 錄。
登錄時使用者需根據自己的身份選擇登錄權限:管理員、輔導員、教師、學生。登 錄后,使用者需修改原始密碼,以防止其他人使用個人帳號,修改后的密碼需要個人牢 記,若有遺忘,需要到管理員處查詢修改。
在以上四個登錄權限中,管理員的權限大于其他三個,管理員有權設置系統中其他 成員的權限,并修改、刪除系統所有信息,對系統起到維護修復的作用。
輔導員權限登錄本系統后,可對本學年度管理學生的信息進行修改維護并可査詢其 他一些信息。
教師權限僅限于根據自身課程的要求設置該科目的考試形式。并給予學生最終的成 績。
學生權限則是對自身實際情況對自身的信息進行改正并上傳,同時査詢其他相關信 息。
2.2系統功能需求分析
學生信息管理系統主要的業務功能分為:
(1)系統可通過用戶的自身填寫儲存并上傳至數據庫的過程,從而實現對全校在校學 生的信息綜合性管理。
(2)系統在統一學生信息后,可實現一對一的查詢功能,只需輸入名字或學號或院系 名稱等查詢內容,自動搜索數據庫中相匹配信息,實現快速準確定位。
(3)對于學生信息庫中錯填,畢業,轉學等需進行添加、修改、刪除時,則可通過管 理員系統實現對信息的添加、修改、刪除等功能。
綜上所述,對于學生信息管理系統需求抽象總結歸納,把功能用例分為五個方面: 學生信息管理系統的角色模塊用例分析、信息管理用例分析、培養用例分析,數據維護 用例分析和檔案管理用例分析,下面進行具體介紹。
2. 2.1信息管理需求分析
(1)基本信息管理模塊。
新生入學前,需要由管理員進行新一批學生的學號作為賬號并設置原始登錄密碼。 新生開學后,按照指示登錄系統,填寫個人基本信息,并上傳以便建立自身檔案,屬于 學生學籍檔案管理的主要部分。由此,本模塊可實現對學生以上基本信息的管理,通過 本模塊的運行,實現對學生個人基本信息的査詢、修改、刪除以及打印等功能。
①導入學號信息:管理員統一錄入新生學號作為登錄賬號,新生入學后由其本院系 告知自身學號信息,由此登錄系統進行個人信息的錄入。
②査詢基本信息:根據登陸時不同的權限設定,登錄人員可對系統中的信息實現查 詢功能,其查詢類別有學生學號、姓名、年級或專業等。
③修改基本信息:對于系統中的上傳錯誤,或錯填及一些意外失誤等,需要對系統 中的信息進行修改功能。根據系統中所設定登錄人員的不同,所修改的權限亦不相同。 除系統管理人員可對全部信息進行修改外,其他人員只能對所能管轄范圍內的信息進行 修改。
④學籍變動情況:在校學生無權限對學籍變動進行修改,可進行修改的權限僅包括 管理教師或系統管理人員,修改內容包括學生在校期間的休學、退學及獎懲情況。對于 己畢業學生,有權限人員可“按班級”為單位對整體學籍信息進行刪除,以便減少信息 庫中不必要的存儲。
⑤打印基本信息:根據以上系統功能,系統自動生成表格的形式查詢結果,并由需 打印人員自行選擇打印方式。
(2)貧困生信息管理
針對需申請貧困補助的學生可使用此項功能,由學生及管理人員填寫輸入信息,上 傳并進行統一的信息管理,本模塊可實現貧困生的家庭基本情況,申請助學貸款金額以 及在校期間補助發放情況的統計及信息的統一。
家庭自然情況:包括父母親及兄弟姐妹的職業、健康情況,所患疾病及疾病的種類, 該生本年度家庭遇到的具體困難,外借財務金額等,以便管理貧困生家庭基本狀況。家 庭情況查詢:實現對貧困生按照姓名、班級或專業款項進行査詢。家庭情況修改:由學 生提交修改內容于管理教師或系統管理人員,經審核后對所需修改信息進行修改,并限 定修改次數。用戶記錄刪除:刪除不再需要申請貧困生補助的學生記錄。補助發放情況: 顯示貧困生在校勤工助學信息,并統計高校內外為貧困生所發放的補助金額,以便于補 助的分配均勻。申請貸款數額:統計貧困生在校期間按個人所需申請的貸款金額及還款情 況。
(3)班級信息管理模塊
本模塊用于管理學生所在班級的信息,具體包括:班級信息填寫、査詢、修改和打 印。
2. 2. 2培養管理需求分析
培養管理模塊所實現的功能主要在于針對學生在校期間的學習成績的統一管理和 用戶的單方向査詢和修改等。其主要實現內容包括輸入、査詢、修改、刪除、打印和統 計。
(1)成績錄入:此模塊主要由教師使用,系統可實現由教師進行成績錄入,保存, 系統自動統計成績分數并排名。其中,學習成績在統計中按三部分進行劃分統計,包括 平時成績、期中成績和期末成績。教師在錄入成績時,系統可自動彈出該生以往成績, 由教師評定以上三部分分數所占比例,由系統計算并確定最終總分。
(2)成績的査詢、修改和打印:此模塊按學生所學課程或學生所處班級,院系, 專業以及姓名和學號進行査詢,調出該生所得成績,并實現成績單的修改或打印功能, 其中修改部分需要權限限制。
(3)成績信息統計:系統自動實現各課程按學生所在院系,班級以及年級的成績 排名和最高最低分數。對于必修以及選修未及格的學生信息進行標記,統計并給予相應 的通知,以方便學生査詢了解。
2. 2. 3檔案管理需求分析
畢業生的檔案管理信息的管理由系統中檔案管理模塊進行管理。檔案管理模塊所實 現功能為對畢業生的審核(包括成績以及獎懲情況),畢業生檔案的查詢和打印。
(1) 檔案審核:在畢業前,對每一名畢業生檔案進行審核,包括成績以及處分的 審核,按高校畢業標準,不符合畢業標準的學生檔案,系統自動濾出不準許畢業。
(2) 檔案審核査詢:經系統對學生的檔案按標準審核后,學生登錄該系統自行查 詢審核結果。
(3) 成績査詢及成績表:系統可實現橫縱向成績查詢,按個人總成績查詢或每學 年進行查詢各科成績,查詢結果可自動生成打印模式進行打印。
2. 2.4數據檢索需求分析
學生管理服務系統需求主要滿足的客戶群體是學生管理人員和使用該系統的老師 和學生,學生館的高層管理者同樣可以通過系統,對學生信息進行查詢,提供相應的信 息查詢服務。因此,學生管理服務系統的最重要的業務處理邏輯就是數據管理,這也是 學生管理人員最基本的操作。當然這里所說的學生信息數據的管理就是指的對基本的學 生信息的的增加,修改,刪除等功能。學生管理需要用合理的、直觀的方式把用戶所需 要的正確信息展示給用戶。根據用戶對學生管理服務系統功能的需要進行考慮就成了一 項非常重要的工作。
2. 2. 5權限管理需求分析
權限管理模塊的作用是對該系統內已注冊的用戶的信息進行管理和統計。
(1) 添加用戶:對于增加的用戶,可根據已注冊用戶名給予相應的權限進行信息 的錄入和查閱。新增添用戶可根據管理人員所錄入的用戶名進行相應權限的使用和操 作,并且不能越權。
(2) 修改密碼:屬于個人隱私和遵循保密原則,用戶在初始登錄后自行修改原始 密碼為個人密碼。
(3) 刪除用戶:對一些因特殊情況而產生的無效多余和過期的用戶賬號提供可以 刪除的功能。
不同權限的用戶使用,可由不同權限人員登錄所呈現頁面上方系統導航欄內導航, 從而進行相應權限的操作。
2.3系統功能用例分析
基于對學生和員工的需求,學生工作的各業務環節管理,學生管理職能需要各方面 的管理,并能夠管理系統與其他部門整合協作。允許學生和工作人員能夠輕松快速地管 理學生的信息,使學生得到合理應用和管理信息。
通過用例分析和系統實施者來描述系統需求分析。執行人是指一個人或其他人,應 使用軟件應用程序或硬件進行系統交互,來完成一定的目標。學生信息管理系統的基礎 上的需求的范圍內,可以確定兩個參與者:系統管理員和學生。
2. 3.1角色模塊用例分析
為了保證基于MVC和ExUS的高校學生信息管理系統的用例分析的正確性,在分 析的基礎上,我們要建立用例分析模型,描述出A角色與用例分析間的關系,從頂層用 例分析開始抽象,這里可以把角色模塊分為兩個用例分析:“系統后臺管理”和“信息 査詢”,其中,用例分析:信息査詢是與角色“學生”進行交互的;用例分析:系統后 臺管理是與角色“系統管理員”進行交互的。
用例分析中的“信息査詢”可以進行再次劃分,包括一下幾個部分:班級信息、基 本信息、貸款信息、成績信息、畢業審核信息等5個用例分析。并且在這也功能進行使 用時,都需要對用戶的身份進行驗證。如圖2.1所示。
圖2. 1信息査詢Use Case圖
Fig. 2. 1 The Use Case diagram of Information query
下面對用例分析“系統后臺管理”進行再次劃分,主要包括:貧困生管理、學生信 息管理、管理者管理、成績管理、用戶管理、課程管理、畢業生審核管理等七個用例分 析case,并且只有在通過管理員身份驗證后才可以使用。
系統后臺管理用例分析case如圖2.2所示。
(1)用例分析''性能信息”:學生進入系統,對査詢結果的信息。
(2) 進入系統后,使用用例分析“類信息”:學生類信息搜索。
(3) 用例分析“基本信息”:學生進入系統,您可以填寫個人信息,查詢,修改 等操作。
(5) 用例分析“用戶管理”:管理員對系統的訪問,可以進行用戶名、初始密碼 設置。
(6) 用例分析“畢業審核信息”:學生進入系統,査詢自己是否通過畢業審核的 情況。
(7) 用例分析“課程管理”:管理員對系統的訪問,您可以編程學期學期,高校 上課,任課教師,高校的位置和其他設置,刪除,修改和其他操作。
(8) 用例分析“學生信息管理”:管理員進入系統后,學生基本信息的查詢,修 改,刪除等操作。
(9) 用例分析“貧困生管理”:管理員進入系統后,申請助學貸款的學生填寫的 貸款金額,還款等。
(10) 用例分析“績效管理”:在進入系統管理員,您可以管理每個學生的表現, 包括:為成績不及格的同學安排補考的時間和地點,重修考試時間,其所取得的成績應 該同時計入總成績,增加相應的學分。
(11) 用例分析“管理員管理”:該系統包括四個權限:輔導員,管理員,學生 及任課教師。
(12) 用例分析“畢業生審核管理”:管理員對系統的訪問,需要進行高級審計 的信息,包括:基本信息,受到的獎勵,懲罰等,無論是研究生學歷還是選擇優秀畢業 生。
2.3.2信息管理用例分析
信息管理包括兩個部分,一是個人信息管理,二是畢業信息管理。
個人信息管理包括學籍信息管理、在校表現信息、家庭信息維護、基本信息維護、 個人信息維護、修改個人密碼等功能。
畢業信息管理包括學位信息管理、畢業學位的狀態、學位信息確認、畢業信息核對、 學位信息核對、答辯信息管理等功能。
(1)個人信息管理
個人信息管理用例圖如圖2.3所示:
圖2. 3個人信息管理用例分析圖
Fi& 2.3 The Use Case diagram of Personal information management
(2)畢業信息管理
畢業信息管理用例圖如圖2.4所示:
圖2. 4畢業信息管理用例分析圖
Fig . 2. 4 The Use Case diagram of Graduate information management
2. 3.3培養管理用例分析
培養管理功能主要分為:學籍和培養管理、培養方案和個人計劃、課程選課信息、 成績管理等基本功能,其中,學籍和培養管理包括學籍變動申請、打印在校證明、査看 個人學籍信息,査看學籍信息;培養方案和個人計劃包括申請導師、制定培養計劃、個 人選修計劃、培養計劃修改;課程選課信息包括課程選課,選課結果査詢、査看課表、 考試報名。
培養管理功能用例分析圖如圖2.5所示:
2.3.4檔案管理用例分析
檔案信息管理功能主要分為:畢業論文管理和檔案信息管理,其中,畢業論文管理 可以分為論文提交、畢業信息、論文信息査詢;檔案信息管理可分為檔案信息査詢,檔 案歸檔管理,填寫卷內目錄等功能。
檔案信息管理用例分析圖如圖2.6所示:
Fig? 2.6 The Use Case diagram of archives information management
2.3.5數據維護用例分析
數據維護用例如圖2.7所示:
數據維護包括兩個方面的功能,一是基礎信息維護,二是系統信息維護。其中基礎 信息維護包括:學生信息、貸款信息、畢業信息、成績信息、檔案信息、用戶信息。系 統信息維護包括,系統備份、操作員管理、系統整理,系統異常維護。
2.4數據流程分析
2. 4.1數據流程圖
實現的步驟為7步:
(1) 作為一個整體的系統的功能,定義了輸入和輸出信息。
(2) 找到系統的外部實體。一旦找到外部實體,可確定系統與外界的接口,該系 統數據流的源和目標會發現一個。
(3) 外部實體,以確定輸入數據流和輸出數據流。
(4) 在圖中所示的系統的邊緣。
(5) 輸入流從外部實體(源)的方式,根據需要繪制一系列的邏輯過程的步驟, 外部實體,直到你找到所需的輸出流的過程中,一個封閉的形式對數據流的系統邏輯。
(6) 系統的內部數據的處理和作為整體的功能,再次信息處理,傳輸,存儲過程 能夠被看見。
(7)解析這樣的一個人,直到所有的處理步驟是非常具體的。 系統數據流圖如下:
圖2. 9數據流圖
Fig . 2. 9 Data flow diagram
2. 4. 2數據字典
學生信息管理系統中的數據字典用表的形式描述如下:
(1)數據流描述
上圖所示的數據流圖中,包含“學生名單”,“變動成績要求”,“刪除成績要求”, “添加成績要求”,“新增的成績",“原成績”,“刪除的成績”,“修改后的成績” 等數據流。
數據流名稱:班級學生名單。
說明:某班全部學生的名單。
數據流來源:學生信息。
數據流去向:班級學生名單顯示。
組成:班級、學號、姓名。
平均流量:
高峰期流量:
(2) 數據存儲的描述
上圖所示的數據流圖中,包含“學生信息”和“考試成績”等數據存儲。
數據存儲:考試成績。
說明:保存學生各門功課的考試成績。
流入數據流:新增的成績、修改后的成績。
流出數據流:原成績。
組成:學號、姓名、成績。
數據量:30000 (學生)*15 (課程)。
存儲方式:隨機存儲。
(3) 數據項的描述
數據項名稱:學號。
含義說明:唯一標識每個學生。
別名:學生編號。
類型:字符型。
長度:5。
取值范圍:0000000000-9999999999。
取值含義:
(5)處理過程的描述
在圖4所示的成績錄入數據流圖中,包含“班級學生名單査詢”、“增加成績”、 “修改成績”、“刪除成績”、“成績查詢”等處理過程。
處理過程:增加成績。
說明:錄入一個學生某門課程的考試成績。
輸入:學號、課程、成績。
輸岀:考試成績。
處理:在“考試成績”數據存儲中增加一個學生的考試成績。
2.5本章小結
本章分析了當前形勢下的學生管理,學生信息管理系統的設計和開發完成的學生信 息管理系統,通過研究和分析,需求分析,提供足夠的準備。本章主要是通過學生信息 管理系統的需求分析,學生信息管理系統被分解成幾個主要功能模塊,然后對各個功能 模塊需要在系統使用案例分析的形式,進行了詳細的介紹,用例圖設計和實施的后續工 作奠定了基礎。
3系統設計
根據軟件工程的思想,對基于MVC輕量級框架的學生信息管理系統進行開發時, 首先要定義一套完整的形式化的結構框架,當然結構框架的設計是根據系統需求分析所 得到的需求進行的。在系統設計中,主要工作是首先對學生信息管理系統的功能結構進 行設計,完成各功能模塊的概要設計,然后對技術架構進行設計,明確系統的技術架構, 以及不同的接口之間的調用方式,最后對數據庫進行設計,完成實體關系對應,完善數 據庫的完整性功能需求。開發使用sql2000數據以及tomcat web服務器,并使用ExtJS 對學生信息管理系統進行框架模版式呈現,后臺業務邏輯處理使用MVC的小型輕量級 xueshengrts框架,這樣就完成了整個學生信息管理系統的系統設計工作。
3.1功能結構設計
在本小節主要對基于EXTJS技術和MVC輕量級框架的學生信息管理系統的功能結 構設計進行了詳細的介紹,然后針對基于EXTJS技術和MVC輕量級框架的學生信息管 理系統的功能結構設計中的一些重要的功能和一些技術上的難點進行了詳細的介紹,把 基于EXTJS技術和MVC輕量級框架的學生信息管理系統的功能設計的結構設計完成。 在基于EXTJS技術和MVC輕量級框架的學生信息管理系統的功能結構設計過程中采用 整體化的方法進行功能結構設計,并同通過功能結構圖的形式表達出來,使功能結構設 計更加直觀易懂。同時,在基于EXTJS技術和MVC輕量級框架的學生信息管理系統的 設計時采用逐層分解的方法,釆用把相似的功能模塊化的核心思想,自頂向下把整個基 于EXTJS技術和MVC輕量級框架的學生信息管理系統劃分成多個功能模塊。這樣基于 EXTJS技術和MVC輕量級框架的學主信息管理系統的功能結構設計是為了區分不同的 模塊之間的功能,每一個模塊按照不同的功能進行劃分,完成不同的業務邏輯功能,從 而實現業務功能的獨立性。基于EXTJS技術和MVC輕量級框架的學生信息管理系統的 功能由軟件來實現時,可以分為以下七個功能模塊,這樣不僅降低了系統設計的復雜性 而且還降低了系統開發的難度。各模塊在這些關系的約束下共同構成一個統一的整體. 完成系統的功能。下面對學生信息管理系統的功能設計進行詳細的介紹。
3.1.1個人信息管理功能設計
在高校學生信息管理系統中個人信息管理的主要工作是實現學籍信息管理、基本信 息維護、個人信息維護、家庭信息維護、在校表現信息、修改個人密碼等功能。個人信 息的功能模塊圖如下。
3.1.2培養信息管理功能設計
在系統的培養管理功能的主要工作是對培養信息進行管理,如學籍和培養管理、培 養方案和個人計劃、課程選課信息、成績管理等基本功能,其中,學籍和培養管理包括 學籍變動申請、打印在校證明、查看個人學籍信息,査看學籍信息;培養方案和個人計 劃包括;課程選課信息包括課程選課,選課結果查詢、査看課表、考試報名。培養管理 功能結構圖如下所示。
圖3. 2培養管理功能結構圖
Fig .3.2 Functional structure of Training management
3.1.3學生工作管理功能設計
系統中學生工作管理的主要工作是對學生日常管里中的信息進行管理,這也要求這 個模塊對于査詢篩選功能的的要求更加強烈。其功能主要包括:外出管理、德育考核管 理、獎學金信息管理、助管信息管理、助學金貸款管理、出國留學管理等功能。其中貸 款管理可以分為:填寫貸款信息、提交貸款申請、填寫還款信息、填寫展期信息、提交
還款申請、提交展期申請、貸款信息查詢。出國留學管理包括:公派申請、出國審批、 出國狀態査詢、短期交流項目等。
報表管理更能結構圖如下所示。
~學生工作管理~
出國留學管理
圖3. 3學生工作管理功能結構圖
Fig .3.3 Functional structure of Xueshengdent work management
3.1.4畢業信息管理功能設計
在學生信息管理系統中畢業信息管理的主要功能主要包括:學位信息管理、畢業學 位狀態、學位信息確認、畢業信息核對、學位信息核對、答辯信息管理等。檢索統計功 能結構圖如下。
畢業信息管理
圖3. 4畢業信息管理功能結構圖
Fig. 3.4 Functional structure of Graduate information management
3.1.5學位檔案管理功能設計
在學生信息管理系統中學位檔案管理功能的主要工作是畢業論文管理和檔案信息 管理功能。其功能主要包括:論文提交、論文信息査詢、畢業信息査詢、填寫卷內目錄、 檔案信息査詢、檔案歸檔管理等功能。
學位檔案管理功能結構圖如圖3.5所示。
圖3. 5學位檔案管理功能結構圖
Fig .3.5 Functional structure of archives information management
3.1.6系統信息維護功能設計
在學生信息管理系統中系統維護的主要工作包括兩個方面,一是基礎信息維護,二 是系統信息維護。其中基礎信息維護包括:學生信息、畢業信息、成績信息、檔案信息、 用戶信息、貸款信息。系統信息維護包括,系統整理、操作員管理系統備份,系統異常 維護。這些項目在系統設計時,就己經進行了設置,只有系統管理員權限才可以對這些 基本數據進行維護,系統維護的功能結構圖如圖3.6所示。
3.2技術架構設計
基于MVC和ExUS技術的學生信息管理系統的應用體系框架,首先是采用Struts2 框架輕量級框架實現的,是MVC的設計思想。在Struts2中采用MVC的思想將業務邏 輯層和表示層分離,并使用攔截器對頁面請求信息進行截取。Struts2的核心控制器文件 是Struts-config. Xml,使用Struts2框架時,首先對在Struts-config. Xml文件中添加映 射信息的配置,然后完成請求對應的action和severlet的編寫。在用戶對服務器提交請 求時,服務器會根據Struts-config. Xml的配置信息,對請求信息進行截取,然后根據 任務映射完成任務分流工作,使用不同的業務邏輯action和視圖severlet為截取到的用 戶提交信息提供服務,跳轉到不同的功能頁面。下面給出系統應用體系框架圖,如圖3.7:
圖3. 7系統應用體系框架圖
Fig. 3.7 Application system frame
基于MVC輕量級框架的學生信息管理系統中使用MVC的三層結構模式,MVC結 構的解釋如下:
V (view)視圖或表示邏輯層,視圖是用戶看到并與之交互的界面。對于過去的 Web應用程序,視圖幾乎就是HTML元素組成的界面,對于新類型的Web應用程序中 的HTML元素來說,HTML仍然是在視圖中,起著重要的作用,但一些新技術已初露 端倪,并得到了大量應用,它們包括Adobe Flash和象XHTML XML/XSL, WML標記 語言和其他一些Web服務。
M(model)是一個模型,模型表示企業數據和業務規則。MVC三部分中,模型擁有大 部分的處理任務。例如,它可以用于諸如EJB和ColdFusion組件成員對象來處理數據庫, 模型返回的數據是中立的,數據格式的模型,這種模型可以提供多個視圖的數據,應用到模 型只需要編寫一個代碼,可以重復使用多個視圖,所以減少了重復代碼。
C(Controller)控制器,控制器接受用戶的輸入并調用模型和觀點,來完成用戶的需求, 所以當你點擊超鏈接在網頁和發送HTML表單,控制器本身不做任何與任何輸出。它只 是接收請求并決定調用模型組件來處理請求,然后決定視圖顯示返回的數據。
系統MVC調用處理原理圖如圖3.8所示:
圖3.8系統MVC調用處理原理圖
Fig. 3.8 The principle diagram of the system call MVC processing
上面對MVC的技術架構進行了分析,下面就結合高校學生信息管理系統實際開發, 對高校學生信息管理系統的應用體系架構進行設計。
在 Struts + Spring + Hibernate 的組合框架模式中,Struts、Spring 和 Hibernate 都 有各自的特點,開發起來十分的方便,下面對各自的特點進行介紹:
Struts的MVC設計模式可以使我們的邏輯變得非常清晰。
Spring的IOC , AOP可以使我們的產品在最大程度上脫鉤。
hibernate的實體對象,當然是持久性
Web層是MVC模式里面的“ C ”(控制器),商業邏輯層和表示層負責聯動控 制,調用業務邏輯和業務數據使用Struts MVC表示層組織系統的性能的框架。
服務層(業務邏輯),負責實現業務邏輯。業務邏輯DAO層的基礎上,通過積極 的模式包裝DAO組件,完成系統需要的業務邏輯。
DAO層負責系統的持久化對象的數據交互。該層封裝了數據,并實現對數據的添, 刪,查,改等操作。
PO ,是系統的持久化對象。它的主要任務是實現實體類到關系型數據庫的映射, 這個映射工具把類對象映射到關系數據庫中的數據對象,為面向對象變成提供了方便的 數據庫操縱,并且實現起來很容易,本系統是采用Hibernate作為ORM框架來實現的。
Spring的整個的中間層,網絡層,服務層,DAO層及P0無縫集成,其數據服務 層的作用是用來存儲數據。
學生信息管理系統的技術架構圖,如圖3.9所示:
/ 一 —一 /
18/* pc
瀏覽器 盯
貝面里現
圖3?9技術架構圖
Fig .3.9 Technical architecture diagram
3.3系統詳細設計
本節的主要的任務是在對高校學生信息管理系統的需求分析和總體設計的基礎上, 針對系統的架構設計進行細化,完成了高校學生信息管理系統實現中的對象和類的詳細 設計,并對設計的類和對象進行了詳細的分析,并確定了這些類的屬性和方法。
3. 3.1層次架構
學生信息管理系統的整體框架采用MVC模式的思想,使用Struts2的編程模式編寫。 技術架構采用SH架構,即Struts和Hibernate的結合。
其系統技術架構如圖3.10所示。
客戶端 [ 表示層 ’;業務邏輯層 集成層 ? 數據庫
圖3.10層次架構圖
Fig. 3.10 Hierarchical architecture diagram
系統在用戶對服務器提交請求時,服務器會根據Struts-config. Xml的配置信息, 對請求信息進行截取,然后根據任務映射完成任務分流工作,使用不同的業務邏輯action 和視圖severlet為截取到的用戶提交信息提供服務,跳轉到不同的功能頁面。如服務器 在接受到用戶的add.do請求時,就會返回給用戶跳轉到用戶添加頁面的信息,并在后臺 進行相應的action類進行處理。
3.3.2調用邏輯
系統邏輯處理類的具體功能:
(1)Servant接口:系統提供一個接口,用于提供業務邏輯處理業務邏輯處理這個 借口時,他們需要被調用的入口處。
(2)ActionParser接口 :系統解析配置文件條目。
(3)XXXAction類:類表示一個范圍內的業務流程,不同的業務,不同類型的治 療,需要實現lAction接口,下層DAO接口和工具調用。它是一種系統服務處理邏輯控 制器。
(4)DAO接口:包數據庫和事務操作。
具體的業務邏輯處理類圖設計,如圖3.11所示:
解析配置文件, 獲取Action的入口條 />!
O
I XXXAction |
3
圖3. 11框架類調用邏輯圖
Fig. 3.11 Framework banji call logic diagram
3. 3. 3目錄結構
主要目錄結構如下:
配置文件路徑 processes/mobilzhuanyeay/
源代碼路徑 com/aspire/comp/biz/mobilzhuanyeay/
配置文件:processes/mobilzhuanyeay/mobilzhuanyeayprocesses.xml
SQL 文件:processes/mobilzhuanyeay/sql_mobilzhuanyeay.xml
Action 類:com/aspire/comp/biz/mobilzhuanyeay/action/PayAction.java
DAO 類:com/aspire/comp/biz/mobilzhuanyeay/dao/PayDAO.java
Service 類:com/aspire/comp/biz/mobilzhuanyeay/service/PayService.java
Util 類:com/aspire/comp/biz/mobilzhuanyeay/util/MobilzhuanyeayUtils.java
Web
| ——build
| ——| ——build.cmd
| — | ——build.xml
| ——conf
|——db
| ——doc
| ——src
| ——| ——com/aspire/ comp/biz/xxx
| ——| —processes/xxx
圖3.12目錄結構圖
Fig?3?12 The directory structure
3. 4數據庫設計
在基于MVC輕量級框架的學生信息管理系統軟件的開發中,數據庫的設計使用 Hibernate技術對數據模型的操作。下面對學生信息管理系統的數據庫設計進行介紹。
3.4.1概念結構設計
描述概念模型的有力工具是E-R模型,現根據系統數據流程圖和對數據項的描述, 對系統中主要實體如圖3.13進行設計。
圖3. 13系統中各實體E-R
Fig. 3.13 Each entity E - R in the system
3. 4. 2 E-R關系設計
&R圖,是實體-關系圖,它可以提供了表示實體的屬性和實體之間的聯系的方法。 實體-關系圖是用來描述現實世界概念模型的。系統的用戶實體聯系如圖3.14所示。
圖3. 14用戶實體聯系圖
Fig .3.14 The yonghu entity relationship diagrams
其中。管理員可以對教師、學生實體進行創建。教師實體和班級實體是一對多的關 系,即一個教師實體可以對應多個班級實體,而一個班級實體只能有一個教師實體對應, 因為一個老師可以負責多個班級,而一個班級只能由一個老師負責。學生實體和班級實 體是多對一的關系,即一個班級實體可以對應多個學生實體,而一個學生實體只能有一 個班級實體對應,因為一個學生只能屬于一個班級,而一個班級卻可以有很多學生。
用戶的屬性如圖3.15:
Fig. 3.15 The attribute of the yonghu 學生的屬性如圖3.16:
Fig. 3. 16 The attribute of the students 教師的屬性如圖3.17:
圖3. 17教師的屬性
Fig. 3.17 The attribute of teacher 課程的屬性如圖3.18:
選課表屬性如圖3.19:
圖3.19排課屬性
Fig . 3. 19 Arranging properties
排課及成績屬性如圖3.20:
Fig. 3.20 Course selection and chengji table properties
3.4. 3數據庫表設計
系統在數據表中遵循三個原則:
(1) 數據表中的主鍵字段號碼的組合成為可能,從而使系統可以保存該查詢的數 據設計的運行時間,而且還可以節省一個數據庫索引的存儲空間。
(2) 數據庫的設計,盡可能表的數量,不僅能夠避免數據冗余,但也客觀世界的 抽象,簡化ER圖形式的高度。
(3) 在數據表設計中,盡可能的不增加表中的數據域的數目,從而減少了數據冗 余。
基于Ext js技術和mvc框架的學生信息管理系統的數據庫設計的結果在下面的表中 所示的表中。每個表是一個數據庫中的表。據的數據流,對其中的數據項被描述如下:
⑴學生登陸信息:包括密碼、學號、權限、用戶名。對數據類型進行設計。設計 結果如表3.1所示。
表3.1學生登陸信息表
Tab? 3?1 Table of Student login information
列名 數據類型 非空 含義
Yonghu_ID Integer(4) 學生學號(主鍵)
Yonghu_qx Char (4) 用戶權限
Yonghu_code Integer(4) 用戶密碼
Yonghu name Char(50) 學生姓名
(2)學生基本信息包含學號、姓名、性別、出生日期、籍貫、政治面貌、身份證號、 聯系電話、班級、系部、家庭住址。同時給出其數據類型及其含義。設計結果如表3.2 所示。
(3)班級信息包含學號、姓名、系部、年級、班級、所學課程。并對其含義根據類 型進行設計。設計結果如表3.3所示。
表3. 3班級信息表
Tab. 3. 3 Table of The banji information
列名 數據類型 非空 含義
Class_course Char(50) 所學課程
Xuesheng^_class Char(50) 是 所在班級
Class_grade Char(50) 所在年級
Yonghu_ID Integer(4) 學生學號(主鍵)
Xuesheng_dbumenaer Char(50) 所在系
Yonghu name Char(50) 學生姓名
(4)教師信息:工號、 姓名、所教課程、 課程所在學期。
設計結果如表3.4所示。
表3. 4教師信息表
Tab. 3.4 Table of Laoshiers' information
列名 數據類型 非空 含義
Teach _dbumenaer Char(50)
Class_course Char(50)
Teach _name Char(50)
Chengji_term Char(50)
Teach ID Integer(4)
(5)成績信息:姓名、學號、考核方式、所學課程、平時成績、課程所在學期、期 末成績占總成績比例、期末成績、期末占總成績比例、及格情況、總成績、學分。設計 結果如表3.5所示。
(6)貧困生信息:學號、姓名、班級、申請情況、貸款數額、是否減免、減免金額。 設計結果如表3.6所示。
表3. 6貧困生的信息表
Tab. 3? 6 Table of Pinkunsheng information
列名 類型 非空 含義
Pinkunsheng^retu Boolean 是否還完貸款
Pinkunsheng_ream Long(10) 減免金額
Pinkunsheng^rkechengce Boolean 學費是否減免
Pinkunsheng_amount Long(10) 貸款數額
Pinkunsheng_app Boolean 是否申請
Xuesheng_class Char(50) 所在班級
Yonghu_name Char(50) 學生姓名
Yonghu ID Integer(4) 學生學號(主鍵)
(7)獎懲信息:學號、姓名、班級、三好學生、獎學金、國家獎勵名稱、省獎勵名稱、 校級獎勵名稱、記過處分、退學、休學、轉學。設計結果如表3.7所示。
表3. 7獎懲信息表
Tab. 3. 7 Table of Rewards and punishments information
列名 類型 非空 含義
BUMEN_chan Char(50) 學籍變動
BUMEN_puni Char(50) 受過何種處罰
BUMEN_enco Char(50) 受過何種獎勵
Xuesheng^class Char(50) 所在班級
Yonghu_name Char(50) 學生姓名
Yonghu ED Integer(4) 學生學號(主鍵)
(8)畢業信息:學號、姓名、成績是否合格、能否畢業。設計結果如表3.8所示。
表3. 8畢業信息表
Tab. 3. 8 Table of The graduation information
列名 題 ® 含義
3. 5本章小結
本章主要介紹系統的總體設計,功能結構設計,技術架構設計,系統的詳細設 計,以及數據庫設計,為系統實現提供了一整套切實可行的解決方案.
4系統實現
本章對基于mvc框架和extjs技術的學生信息管理系統的幾個功能模塊的實現描述, 并給出了系統實現的解決方法進。主要分為權限控制實現、個人信息管理實現、學生工 作管理實現、培養信息管理實現、學位檔案信息管理實現、系統維護實現、以及關鍵代 碼代碼設計的實現。
4. 1系統頁面實現
由于基于MVC框架和Extjs技術的學生信息管理系統的實現模塊較多,在此不進 行全面的描述,本小節僅僅對部分比較關鍵的模塊進行介紹,以具有代表性的模塊為例 進行詳細的描述。
4. 1. 1權限控制模塊實現
該系統是獨立于外面的世界,而高校的學生信息進行統一管理的應用軟件,使用僅 限于誰沒有畢業從高校的教師和在職人員,所以在進入系統需要驗證身份的學生。所有 用戶第一次使用這個系統,調整應規定統一的標準代碼的用戶名和密碼,首次登錄的管 理員。
登錄用戶需要根據自己的身份選擇注冊表權限:管理員,輔導員,教師,學生。登 錄后,用戶需要修改原來的密碼,以防止他人使用個人帳戶,修改密碼需要記住,如果 忘記了,管理員需要修改査詢的個人信息。
輔導員權限登錄本系統后,可對本學年度管理學生的信息進行修改維護并可查詢其 他一些信息。
教師權限僅限于根據自身課程的要求設置該科目的考試形式。并給予學生最終的成 績。學生權限則是對自身實際情況對自身的信息進行改正并上傳,同時查詢其他相關信 息。系統登錄界面如圖4.1所示。
用戶名: 201113919
密碼: ••••••
團記住密碼
;登錄 |忘記密疤|
圖4.1登錄實現圖
Fig . 4. 1 Figure of Login
登錄模塊可能要考慮很多的擴展,登錄頁面也可以是一個單獨的網頁制作,這些頁 面包括基本的TextBox和Label控件繪制基木的頁面信息必須可以用來顯示用戶的登錄 信息,包括用戶如何指引填寫適當的名稱,并提示用戶是否存在,該頁面還包括兩個 TextBox控件,供用戶填寫相關信息,以驗證用戶輸入正確使用驗證控件的頁面,用戶 輸入控制。
登錄頁面部分關鍵代碼見附錄lo
4. 1. 2個人信息管理實現
個人信息管理的實現效果,如圖4.2所示:
圖4. 2個人信息管理實現圖
Fig. 4. 2 Figure of Persorml infonnation management
個人信息管理實現的功能是對寫牛個人信息的各項基礎信息的管理,例如個人登錄 密碼、個人聯系方式、入學信息等。
部分關鍵代碼如下:
sub _test_book {
my $self = shift;
my $dbh = $selP>{dbh};
my $books = $selP>{meta}[BOOK];
#生產的操作sth
my %book_sth;
for my $name (keys %$books) {
my $nhash = { %{$books->{$name}->[BOOK_NHASH]} };
delete $nhash->{TS_C};
my %nhash = reverse %$nhash;
my @idx = sort { $a <=> $b } keys %nhash;
my @fld = @nhash{@idx};
my $sth_sel = $dbh->przhuanyeare(nselect". join(',@fld)." from book_$name order by id”);
my $sth_del = $dbh->przhuanyeare("delete from book_$name where id < 99999999999n);"
$book_sth {$name} = {
'select' => $sth_sel,
'delete* => $sth_del,
};
}
$sel f-> {test_book} = \%book_sth;
return $self;
}
#
#增加jzpz:
#1.清理 statement
#2. select
#
sub _testjzpz {
my Sself = shift;
my $dbh = $self->{dbh};
my %jzpz_sth =(
select => $dbh->przhuanyeare("select id, j」d, d」d, jb_id, db_id, ys_type, ys_id, fid, period from jzpz order by id"),
delete => $dbh->przhuanyeare("delete from jzpz where id < 99999999999'*),
);
$self^>{testjzpz} = \%jzpz_sth;
return $self;
}
4. 1.3學生工作管理實現
序號 姓名 學號
1
豈作
■'書卜出⑥里
'!'外出清假申請
V :慕健囪考核富渥
■!宰優秀研究生獎學金慎息管輝
丨1童看個人優秀獎學金申i青 i常刪信慰言遲
1 I童看個人助愉崗位申請
-助玄信息鬣理
•適看個人助營商位申請 i豈國家助孚貸募
;學生填寫貸隸ffi息
|犍交貸款申請
卜填寫展期信息
1攜交軸延期申請
丨提交還^申請
!貸款狀態査看
I 學生信息確認
圖4. 3學生匚作管理實現圖
Fig. 4. 3 Figure of Xueshengdent work management
學生工作管理模塊有學生信息管理、德育考核管理、獎學金管理、助學貸款信息管 理等功能。
學生工作管理實現效果,如上圖4.3所示:
(1)學生信息管理
主要用于學生基本信息的管理,供用戶査詢。學生只能査詢他們自己的信息,學生 輔導員進行信息査詢,管理員可以査詢所有學生的信息。學生點擊査詢,顯示自己的基 本信息。輔導員和管理員進入界面,査詢號碼,名稱等,點擊“査詢”按鈕,生成學生 信息査詢。管理員査詢,例如,在CX_click click事件觸發SQLxueshenginfb類來訪問 數據庫獲取所需的信息,并顯示相應的控件在頁。
(2)助學貸款信息管理
針對需申請貧困補助的學生可使用此項功能,由學生及管理人員填寫輸入信息,上 傳并進行統一的信息管理,本模塊可實現貧困生的家庭基本情況,申請助學貸款金額以 及在校期間補助發放情況的統計及信息的統一。
家庭自然情況:包括父母親及兄弟姐妹的職業、健康情況,所患疾病及疾病的種類, 該生本年度家庭遇到的具體困難,外借財務金額等,以便管理貧困生家庭基本狀況。(1) 家庭情況査詢:實現對貧困生按照姓名、班級或專業款項進行査詢。(2)家庭情況修改: 由學生提交修改內容于管理教師或系統管理人員,經審核后對所需修改信息進行修改, 并限定修改次數。
(3)用戶記錄刪除:刪除不再需要申請貧困生補助的學生記錄。補助發放情況:顯示 貧困生在校勤工助學信息,并統計高校內外為貧困生所發放的補助金額,以便于補助的 分配均勻。申請貸款數額:統計貧困生在校期間按個人所需申請的貸款金額及還款情況。
助學貸款信息管理部分關鍵代碼見附錄2。
4.1.4培養信息管理實現
這個功能是由任課教師完成第一學期任課教師選擇的名稱和類,JS_click事件類的 學生進入課堂的學生人數,姓名,然后設置任課老師平時的表現,中期成績,比例的操 作最終成績,完成后,按“確定”,成就條目,根據教師的比例計算總成績的學生科設 置,系統設置,輸入完成后,選擇“保存”按鈕的作用性能信息被保存到數據庫中,學 生可以査詢他們的結果。
培養信息管理實現效果,如圖4. 4所示:
耀糾鈕.聊陛泵Nii雖譎
珈管理
乙鋤和培粽囂理
「標時確
!切變動申請
! !gg個人系統狀態 現在位務 —— 選課結果查詢
迭課結果直詢1:
下載上學年無必修課證明 學期下拉選擇:全部 -
r導師與學生
![申謂諭
t培嫌方案和學生個人計劃 占課程和選灤
1 :英語聽說迭課 課程號 課程名 課序號 課程彳
MP0809001 馬克思主義理論(理工醫) 12 學位
MP0864001 醫學統計學 2 學位
i卜學生選踝結果查®
!卜學生課鑽看
CET寵試根名 M08067019 皮膚粘膜病 1 非學£
M08067016 口腔免疫學 1 非學£
-成績管理 MP0891001 第一外國語(英) 24 學位
學生魚看成線 C08060026 現代分子生物學技術 2 非學£
MP0847003 計算機應用(醫) 1 非學t
圖4. 4培養管理實現圖
Fig . 4. 4 Figure of Training management
為了方便不同的用戶顯示不同的內容,你可以使用內置的對象所提供的ASP.NET 編程和判斷,例如,當您登錄,如果登錄成功后,系統會為用戶建立配置Session對象。 會話內置在用戶的瀏覽器內的過程中提出的對象,在關閉瀏覽器的過程中,如果用戶或 用戶不工作很長一段時間,那么Session將被取消內置對象。
其中,代碼在頁面中添加一個Label控件和一個圖像控件,這兩個控件呈現給不同 的用戶不同的效果。
I 信恿試團脣養閭里I畢址和學位創里I畢11論丈菅理I出國菅團 研宅生工作I信息脈咅I詩案置劇創超金項目營理I
圖4. 5出國管理實現圖
Fig. 4.5 Figure of Management abroad
在學生信息管理系統中培養管理功能的主要工作是對書刊信息進行編造目錄,如學 籍和培養管理、培養方案和個人計劃、課程選課信息、成績管理等基木功能,其中,學 籍和培養管理包括學籍變動申請、打印在校證明、查看個人學籍信息,查看學籍信息; 培養方案和個人計劃包括;課程選課信息包括課程選課,選課結果查詢、查看課表、考 試報名。
培養管理部分存儲過程重要代碼見附錄3
4. 1.5學位檔案管理實現
在學生信息管理系統中學位檔案管理功能的主要工作是畢業論文管理和檔案信息 管理功能。其功能主要包括:論文提交、論文信息查詢、畢業信息查詢、填寫卷內目錄、 檔案信息查詢、檔案歸檔管理等功能。
學位檔案管理的實現,如圖4.6至4.8所示。
材料鮪 形成時間—x
VuZl&Xi-.?# 申済書
嚴 ii
bo •• . J IJZ.T'IKl U
學位論文評閱書(如有緩期申請學位審批裏、學位 論文修改申訴情況表的Pfl后〉 —
論文答揶記錄
論文咎旃夷決票
圖4. 6檔案管理實現圖
Fig .4.6 Figure of File management
丨個人信息菅理I培般團畢廚隨團畢業論姻II騷團笳注I作I信息酈I檔籍團瀾竝頃目解I |
論刃0目
選題方式 請選擇 ▼
論文類型 請選擇▼
課題研究設計選題簡介
圖4. 7畢業論文管理實現圖
Fig. 4. 7 Figure of Graduation thesis management
•學位信島S對
董看申請學位論文岌表情;兄 遷留人員狀態查詢
圖4. 8畢業和學位管理實現圖
Figure of Graduation and degree in management
主要用于學生在所有科目的審計綜合成績及格科目超過指定數量的高校或在校期 間,如果沒有修復的高校沒有留出足夠的畢業學分,如果及格科目的數量,但不超過指 定數量的高校在畢業前仍然是失敗的科目,系統將通知學生在畢業前化妝。Page_Load 事件提出在頁面加載時,援引SQLgradu類來訪問數據庫,以獲取有關學生成績。
學位檔案管理部分關鍵代碼見附錄4
4.1.6系統部分關鍵代碼實現說明
在本節結合的系統實施過程中的例子實際使用了一些獨特的,關鍵的類進行了介 紹,并給出了實例代碼。代碼實現了框架的配置信息如圖4.9所示:
圖4. 9配置框架實現圖
Fig .4.9 Figure of Con figuration framework
在上面的配置框架圖,使用了 Hibernate的數據持久化技術。Hibernate的技術實施 條件中使用變量封裝一組搜索條件,然后調用Hibernate框架getObjectForm的方法來査 詢從數據庫中査詢得到的數據,并返回數據封裝在對象類型。
數據封裝在Object類型的部分關鍵代碼如下:
sub object {
my ($self; $req) = @_;
#Data::Dump->dump($self->{cfg}{batch}->jobs(l));
my $rtn = {
status => 0,
## if zkemel->prcess_count() > 16 ,
#{ status => 1, errmsg => Vesubmit it later, system busy*}
#my $date = $req->{ param} {date};
$date ~ s/-//g if $date;
#下載文件
if($req->{action} /Adown_file/) {
my $name = 'Zbatch'.
.$date ?
.$req->{param} {type}.
?'down:
my $rtn = zkemel->process_submit(
$name,
{
code => \&child,
para => [ $req ],
reap => 0, size => 1,
},
);
}
#分配任務
elsif($req-> {action} =- /Aassignjob/) {
my Sname = Nbatch,.
? $date.
.$req->{param} {type}.
.'assign';
my $rtn = zkemel->process_submit(
$name,
{
code => \&child,
para => [ $req ],
reap => 0, size => 1,
},
);
}
#運行任務
elsif ($req->{action} j /^runjob/) {
my $job = $self->{cfg} {batch}->job($req->{param} {job_id}); my $name = Zbatch'.
?$date?
□ . $req->{param} {type}?
□?'load'?
u. $job->{index};
my $rtn = zkemel->process_submit(
$name3
{
code => \&child,
para => [ $req ],
reap => 0,
size => 1,
},
);
}
#運行工作
elsif ( $req->{action} =- /run_mission/) { warn "begin get jobs id…??M if DEBUG; my $jobs = $self->{cfg} {batch}->jobs($req->{param} {mission_id}); Data::Dump->dump($req->{param} {missioned}) if DEBUG; warn ”run ids: \nH. Data::Dump->dump($jobs) if DEBUG; for (@$jobs) {
my $name = 'Zbatch1.
?$date.
?$req->{param} {type}.
u ?'load'?
□ • $_->{ index};
my $submit = {
action => 'runjob',
param => {
type => $req->{param} {type},
job_id =>
oper_yonghu => $req->{param} {oper^onghu}, },
};
zkemel->process_submit(
Sname,
{
code => \&child,
para => [ Ssubmit ],
reap => 0, size => 1,
} ); }
}
elsif ( $req->{action} =- /getjog/) {
$rtn->{ret} = $self->{cfjg}{batch}->getjog($req->{param});
} 一
elsif ( $req->{action}亠 /pack/) {
if (my $pm_id = $self->{cfjg} {pack}->pack_mission( { sm_date =>
$req->{param}{date} })) {
$req->{param} {pmission_id} = $pm_id;
my $name = 'Zpack1.
. $date;
my $rtn = zkemel->process_submit(
$name,
{
code => \&child,
para => [ $req ],
req? => 0, size => 1,
}, ); }
else {
$rtn->{ status} = 1;
$rtn->{errmsg} = "pack error'*;
}
}
else {
zlogger->error(ninvalid action[$req->{action}]*');
$rtn->{status} = 1;
$rtn->{errmsg} = "invalid action[$req-> {action} ]n;
}
return $rtn;
)
如果需要使用Hibernate的事務處理技術通過一組數據得到的,這就需要使用
Hibernate提供的技術框架getList方法,相同的條件下,只要要添加查詢參數的參數査 詢多個數據集時,Hibernate框架將査詢列表返回到業務邏輯層數據封裝在一組。
數據査詢的實現類的名稱GETDATE類是相關的數據査詢功能,其部分源代碼如
下:
#處理配置目錄 mkpath("$self->{output}/$self->{project}/conf7proc"), mkpath("$self->{output}/$self->{project}/etc"); mkpath("$self->{output}/$self->{project}/log"); mkpath("$self->{output}/$self->{project}/libexec"); mkpath("$self->{output}/$self->{project}/lib"); mkpath("$self->{output}/$self->{project}/sbin");
#sql目錄 mkpath("$self->{output}/$self->{project}/sql/table/book"); mkpath("$self->{output}/$self->{project}/sql/table/yspz"); mkpath("$self->{output}/$self->{project}/sql/table/dim"); mkpath("$self-> {output}/$self-> {project} /sql/table/dict"); mkpath("$self->{output}/$self->{project}/sql/view");
#模板目錄 mkpath("$self->{output}/$self->{project}/t");
#測試目錄 mkpath("$self->{output}/$self->{project}/template/test/yspz");
mkpath(n$self->{output}/$self->{prqject}/tempiate/test/bookn); #解析配置
Ssel^config^dimO or return; $self->config_bookO or return; $self>configjspz() or return; $self->config_proc() or return;
#模板工具
# $self>{tpl} = Text::Template->new(); return $self;
}
#文件目錄檢査檢査
sub check {
my ($self) =@_; warn "input is not defined" and return unless $self->{input}; warn "output is not defined'* and return unless $self->{output};
warn ”project is not defined'1 warn "dir[$self-> {input} ] does not exists"
warn Mfile[$self->{base}/dim.dat] does not exists" n$self->{base}/dim.datM;
warn "dir [Eself^easel/book] does not exists1* M$self->{base}/bookn;
warn "dir [$selfA{input}/yppz] does not exists" H$self->{input}/yspzf';
warn "dir [$self->{output}] does not exists'1 return 1;
}
#Performance is very important for something as often used as accessors,
#so we optimize them by compiling our own code, don't be scared, we have
#tests for every single case
sub attr {
my (Sclass, $attrs, $default) =
return unless (Sclass = ref$class"ji $class) && $attrs;
Carp::croak 'Default has to be a code reference or constant value*
if ref $default && ref$defaultne "CODE1;
# Compile attributes
for my $attr (@{ref $attrs eq 'ARRAY' ? $attrs : [$attrs]}) {
Carp::croak qq{Attribute H$attrH invalid} unless $attr /A[a-zA-Z_J\w*$/;
#Header (check arguments)
my $code = "package $class;\nsub $attr {\n if (\@_ = 1) {\nn;
#No default value (return value)
unless (defined Sdefault) { $code 嚴” return \$_[0]{,$attr,};n}
#Default value
else {
#Return value
$code .= ” return \$_[0]{ 'Sattr1} if exists \$_[0] {'$attr‘} ;\nH;
#Return default value
$code = n return \$_[0]{'$attr'} = H;
$code .= ref$default eqYODE' ? ^default-^SJO]);': ^default;1;
} "
#Store value
$code = M\n }\n \$_[0]{'$attr'} = \$_[l];\nH;
#Footer (return invocant)
$code =H \$J0];\n}n;
#We compile custom attribute code for speed
no strict 'refs';
warn Attribute $attr in $class\n$code\n\nn if $ENV {ZETA_BASE_DEBUG};
Carp::croak nMojo::Base error: $@” unless eval "$code;l”;
}
在系統中,學生的身份進入系統管理,系統需要實現的Action類下面的描述,首先 需要學生管理Action類的DispatchAction類的方法和接口繼承和實現,重寫這個實現 Struts2的處理同時對多業務運營的要求。的DispatchAction類用戶需要設置多個 ObjectDao類型的對象,實現對數據的操作,同時實現多個如setDispatch()和getDispatch O方法操作這些對象的get和set方法。這些方法的實現特定類別中的封裝類調用方 法實現Object對象進行操作,以達到各種操作系統數據。
如下實現代碼所示:
sub page_data {
my $self = shift;
my $sql = shift;
my Sindex = shift;
my @data;
my $size = $self->configure-> {page_size};
my Sstart = ( Sindex -1 ) * $size + 1;
my Send = (Sstart + $size );
my $sql_data =
"select * from ($sql) where rowid>=$start and rowid < $endH;
my $sql_count = "select count(*) from ($sql)";
#wam $sql_data;
#wam $sql_count;
my $dbh = $self->dbh;
my $dh = $dbh->przhuanyeare($sql_data);
my $ch = $dbh->przhuanyeare($sql_count);
$dh->execute;
while (my $row = $dh->fetchrow_hashref) {
$self->decode_ch($row);
push @data, $row;
}
$dh->finish;
$ch->execute;
my $count = $ch->fetchrow_arrayref->[0];
my ($total_page, $prev_page, $next_page ) = ( 1,1,1 );
use Intagereger;
if ($count % $size) {
$total_page = 1 + {count / Ssize;
}
else {
$total_page = $count / $size;
}
$totaljpage = 1 unless $total_page;
$prev_page = ( $index -1 )>0? $index -1:1; $next_page =
($index + 1 )<= $total_page ? $index + 1 : $total_page; return { data => \@data,
index => Sindex, count => Scoxint, prev_page => $prev_page, next_page => $next_page, total_page => $total_page
};
}
sub select {
my $self = shift;
my $sql = shift;
#use Data::Dump;
my $data;
$sql = $self->dbh->przhuanyeare($sql);
$sql->execute;
while (my $row = $sql->fetchrow_hashref) { $self->decode_ch($row);
push @$data, $row;
}
$sql->finish;
return $data;
}
sub update {
my $self = shift;
my $sql = shift;
$self->dbh->do($sql) or $self->errhandle($sql); $self->dbh->commit;
return 0;
}
sub errhandle {
my $self = shift;
my $sql = shift;
$self->dbh->rollback;
die "can't do [$sql]:H.$self->dbh->errstr; return 0;
}
#Performance is very important for something as often used as accessors,
#so we optimize them by compiling our own code, don't be scared, we have
#tests for every single case
sub attr {
my ($class, $attrs9 $default) =
return unless ($class = ref$class || $class) && Sattrs;
Carp::croak default has to be a code reference or constant value' if ref {default && ref Sdefault ne 'CODE*;
# Compile attributes
for my $attr (@{ref$attrs eq 'ARRAY* ? Sattrs : [$attrs]}) {
Carp::croak qq{Attribute H$attrH invalid} unless $attr =*- /A[a-zA-Z_J\w*$/;
#Header (check arguments)
my $code = "package $class;\nsub $attr {\n if (\@_ = 1) {\n”;
#No default value (return value)
unless (defined Sdefault) { $code = " return \$_[0]{f$attr'};" }
#Default value
else {
#Return value
$code .= ” return \$_[0]{'$attr'} if exists \$_[0]{'$attr'};\nH;
#Return default value
$code =" return \$_[0]{'$attr'}= ”;
$code .= ref Sdefault eq 'CODE' ? '$default->($_[0]);': 'Sdefaultf;
} _
#Store value
$code = ”\n }\n \$_[0]{'$attr*} = \$_[l];\nn;
#Footer (return invocant)
$code =" \$_[0];\n}";
#We compile custom attribute code for speed
no strict 'refs';
warn "- Attribute $attr in $class\n$code\n\nn if $ENV {ZETA_BASE_DEBUG}; Carp::croak nMojo::Base error: $@H unless eval n$code;l";
}
4.2系統運行維護
4. 2. 1系統的測試步驟
每個邏輯的每個步驟都是和系統測試的過程和系統的過程是相似的,同樣是分割成 多個步驟來完成。因此,在系統中測試包括模塊測試,系統測試,驗收測試三個步驟, 下面進行詳細的介紹。
(1)模塊測試
模塊測試是整體測試的重點,因為只有確保每個模塊可以的功能沒有問題,才可以 保證整個系統的運行。在對系統進行設計時,對每個模塊的子功能吃都進行了明確定義。 模塊測試的目的就是保證每一個模塊都是可以完成單元功能的功能單元。雖然在實際的 系統測試過程中,測試的時間是十分有限的,但是在我們進行測試的過程中也是盡可能 的對模塊進行全面的測試。模塊測試的測試重點是特殊功能模塊,并且使用具有代表性 的特殊的數據進行檢測,査看系統模塊的健壯性。如:系統登陸模塊,學生的個人信息 模塊,畢業信息模塊等。發現有的逐條執行的語句中的每個模塊的操作的編碼和設計在 測試過程中的錯誤,并且它們已被修改的每個期間。
(2) 系統測試
系統測試是作為一個完整的系統測試子裝配和測試。在這個過程中,發現的設計和 編碼錯誤,要修改的程序中出現問題,而且還要驗證,該系統可以實現的設計特點,以 確保系統的正常運行,同時確保系統的功能中可以完成要求的功能。
(3) 驗收測試
驗收測試的目的是驗證系統確實能夠滿足用戶的需求。在測試過程中,系統被充分 利用,例如:根據一組有效的用戶名和初始密碼,進入系統主頁,因為這個系統是需要 輸入用戶名和密碼,所以在測試過程中,和初始密碼已被修改。
總的來說,這套系統已經超過了幾步測試,雖然發現了一些問題,比如如何保持數 據庫的數據一致性,也有未經授權的用戶訪問等問題,但它已被修改,基本使用方法系 統可以保證,也達到了對系統的要求設計。
4. 2. 2系統的維護方法
系統投入使用后,總是會有一些意想不到的問題,以改正錯誤或滿足新的需求和修 改軟件,那么我們就應定期進行維護系統。維護主要應包括以下幾個方面:
(1) 系統維護:是指系統在日常使用過程中出現的各種問題,應及時維修和改造。 此外,由于高校的發展,改變或指定學生人數增多。因此,也需要定期升級系統,更新 和維護操作等。
(2) 數據文件維護:系統的維護起著重要的作用,包括建立一個新的數據文件, 修改文件等的原始數據。具體包括以下幾個方面:
①數據庫的安全性,完整性控制。在數據庫中運行,由于外部條件的不斷變化,所 以數據庫的要求會有所不同,這就需要頻繁的對數據庫的修改,以滿足用戶的要求。
②數據庫轉儲和恢復后的系統運行,以確保數據庫的備份和恢復功能。例如:每年 都會有新入校的學生,轉校,個別學生輟學,畢業年級的學生。因此,包括產生新生的 高校,畢業生信息歸檔,學籍變動的學生信息及其他信息必須經常進行相應的處理,維 護。
③重新組織和重新數據庫結構:在工作一定時間后,系統數據繼續被修改,更改數 據庫或損壞的儲存條件下的速度,從而減少數據訪問的效率和性能時,重建數據庫,確 保數據庫根據原設計要求實現功能,刪除不必要的垃圾數據,以提高速度和系統性能。
④數據庫的性能,監測,分析:常規數據庫的升級,更新等操作,確保跟上數據庫 和其他系統的要求。
4.3本章小結
本章主要介紹了系統的具體實現方法和頁面的詳細設計,然后又給出了代碼的設計 和實現,經過功能測試和運行維護,完成了系統的開發任務。
結 論
信息化是高校管理的必然趨勢,其中學生信息管理系統是重要的組成部分。為此, 本文針對高校學生信息管理中的問題,設計并實現了基于MVC和ExtJS的高校學生信 息管理系統,可以初步滿足高校學生信息管理的需求。本系統在設計與實現的過程中充 分考慮了系統的未來需求變動、系統功能擴展、系統功能升級等要求,具有代碼重用性、 系統擴展性好、系統安全性高的特點,功能比較完善。
從需求調研、數據庫的設計到編碼實現,我收獲很大。如在數據庫設計方面改變了 以前對數據庫的認識,鍛煉了對E-R圖的使用;在對系統進行完需求分析以后,根據 E-R圖建表,建岀的表更合理,也更能滿足需求。在技術方面,對Extjs技術以及MVC 框架有了更加深入的了解,加強了使用技能的鍛煉,特別是sturts2中的函數,ResultSet, Calendar Date等。總之,通過這個系統的開發在軟件工程領域里得到了全方面的提高。
在論文研究工作中遇到一些問題,如在對需求進行分析時,高校的管理人員對需求 描述很不清晰,導致開發的軟件友好性不強,所以這是采用了反復調研的方式,先給出 一套解決方案,讓用戶給出缺點和不滿意的地方,然后進行修改,最后得到人機交互友 好性好的系統模型。在技術方面,剛確定題目時,在對MVC框架的認識方面存在一些 問題,理解不夠深刻,通過查資料向別人請教的方式現在已經基本掌握。今后,還會完 成高速掃描錄入的功能和研發與高校一卡通的接口,使之更加完善。
附錄1登錄頁面部分關鍵代碼
sub clear {
my $self = shift;
my $book = shift;
#清理數據岸:ppz數據sequence
warn "begin alter seqjzpz'1 if DEBUG;
for (@$book) {
§sel化*{dbh}?>do("alter sequence seq_$_ restart with 1”); warn "begin clear if DEBUG;
$self->{test_book}->{$_}->{delete}->execute();
} ' "
warn "begin clear jzpz:…?"if DEBUG; $se^>{testjzpz}->{delete}->execute(); warn "begin commit....M if DEBUG; $self->{dbh}->commit();
$self->{dbh}->do(nalter sequence seqjzpz restart with l");my $self = shift; my $yspz = $self-> {meta} [Y SPZ];
for my Sycode (keys %$yspz) {
my $row = $yspz->{$ycode}; my $sql_upd =«EOF;
update yspz_$ycode set status = ? where period = ? and id = ? EOF ~
my $dstr =join ; ; map {lc $_ } @{$row->[YSPZ_FLIST]}; my $mark =join ; ; ('?) x @{$row->[YSPZ_FLIST]}; my $sql_ins =«EOF;
insert Intagero yspz_$ycode(id, $dstr, flag, ts_c) values(?, $mark, 0, current timestamp) EOF 一 -
my $sql_upd_rk =«EOF;
update yspz_$ycode set flag = ?, revoke_cause = ?, revoke_yonghu = ?, ts_revoke = ? where period = ? and id = ?
EOF
my $sql_sel =«EOF;
select ♦ from yspz_$ycode where period = ? and id = ?
EOF -
my $sql_sel_rs =«EOF;
select * from yspz_$ycode where period = ? and id = ? with rs for update
EOF -
my $sel_yspz_ctrl =«EOF;
select cur from seq_yspz_ctrl where key = '$ycode‘ with rs for update
EOF _
my $upd_yspz_ctrl =«EOF;
update seq_yspz_ctrl set cur = ?, ts_c = current timestamp where key = Sycode' EOF 一 -
chomp($sql_ins); chomp($sql_upd); chomp($sql_upd__rk);
chomp($sql_sel); chomp($sel_yspz__ctrl); chomp($upd__yspz_ctrl);
warn nsql_ins[$sql_ins]n if DEBUG;
warn nsql_upd[$sql_upd]n if DEBUG;
warn Hsql_upd_rk[$sql_upd_rk]n if DEBUG;
warn ”sq匸sel[§sql_selF ifDEBUG;
warn Msql_sel_rs[$sql_sel_rs]" if DEBUG;
$row->[YSPZ_INS] = $selfA{dbh}?>przhuanyeare($sql_ins);
$row->[YSPZ_UPD] = $self->{dbh}->przhuanyeare($sql_upd);
$row->[YSPZ_UPD_RK] = $self->{dbh}->przhuanyeare($sql_upd_rk); $row->[YSPZ__SEL] = $self->{dbh}->przhuanyeare($sql_sel);
$row->[YSPZ_CTRL_SEL] = $self->{dbh}->przhuanyeare($sel_yspz_ctrl); $row->[YSPZ_CTRL_UPD] = Ssel^fdbhJ^przhuanyeareCSupd^yspz^trl); $row->[YSPZ_SEL_RS] = $self->{dbh}->przhuanyeare($sql_sel_rs);
} ' return $self;
}
附錄2助學貸款信息管理部分關鍵代碼:
sub expect {
my $self = shift;
my $fell = shift;
my $meta_book = $self-> { meta} [BOOK];
#期望
my %exp; #總的期望值
my @expjzpz; #
for my $f (@$fall) {
$f^>{jzpz}->[3] =n. $meta_book->{$^{jzpz}->P]}[BOOK_ID]; # 調整 j_book ->jb_id
$f^>{jzpz}->[4] =H. $meta_book->{$f^>{jzpz}->[4]}[BOOK_ID]; # 調整 j_book ->jbjd
push @{$exp{$Q{j_book}}}, [map { V$_}
push @{$exp{$f->{d_book}}}, [ map {".$_} @{$f^>{d}}];
push @expjzpz, $f->{jzpz};
$exp{jzpz} = \@expjzpz;
}
return \%exp;
}
# sql目錄
mkpath(n$self->{output}/$self->{project}/sql/table/bookn);
#賬簿目錄
mkpath("$self->{output}/$self->{project}/sql/viewn); # 視圖目錄
#模板目錄
mkpath(n$selfl>{output}/$self->{project}/tn); # 測試目錄
#測試目錄
mkpath(”$self">{output}/$self">{prqject}/template/test/yspz”); mkpath(M$self-> {output}/$self-> {project} /template/test/bookM);
#解析配置
$self->config_dim() or return;
$self->config_book() or return;
$self->config_jyspz() or return;
$self->config_proc() or return;
#模板工具
# $self->{tpl} = Text::Template->new();
return $self;
}
#獲取結果
sub result {
my $self = shift;
my $book = shift;
#結果數據
my %result;
for (@$book) {
$result{$_} = $self->{dbh}->selectall_arrayref($self->{test_book}->{$_}->{select});
} ~ "
$result{jzpz} = $self->{dbh}->selectall_arrayref($self->{testjzpz}->{select}); return \%result;
}
#撤卸測試環境
sub dtor {
my $self = shift;
$self->SUPER::dtor();
for (keys %{$self->{test_book}}) {
$self->{test_book}->{$_}->{select}->finish();
$self->{test__book}->{$_}->{delete}->finish();
} " _
$self->{testjzpz}->{select}->finish();
$self->{testjzpz}->{delete}->finish();
return Sself;
}
附錄3培養管理模塊部分存儲過程:
sub params {
my Sself = shift;
my Sparams = shift;
my ( Scondition, $param )=(", ”);
if (exists $params-> {period} && (ref $params-> {period}) eq 'ARRAY') {
my $data = delete $params-> {period}; if($data->[l]){
$condition .= " and period>=$data->[l]H; Sparam = M&$data->[2]=$data->[ 1 ]H if $data->[2];
} if($data->[3]){ $condition ?=n and period<=$data->[3]H; Sparam = n&$data->[4]=$data->[3]n if $data->[4];
}
}
if (exists $params-> { status} && $params-> { status}) { Scondition .= n and status=n.delete $params->{status};
}
for my $key (keys %$params ) {
my Stype = ref $params->{$key}; if($type eq 'ARRAY'){
# 0: >= and <=
my $data = $params-> {$key}; if($data->[0]=0){ if ( $data->[l]) {
Scondition = n and $key>=$data->[l ]*'; $param ?="&$data->[2]=$data->[ 1 ]n if $data->[2];
} if($data->⑶){
Scondition = " and $key<=$data->[3]M; Sparam = "&$data->[4]=$data->[3]n if $data->[4];
}
}
elsif ( $data->[0] = 1) {
Scondition ?=” and $data->[ 1 ]=$data->⑵" if$data->[2];
Sparam = H&$data->[l]=$data->[3]n if $data->[2];
} elsif($data->[0] = 2){
Scondition = n and $key>=$data->[ 1 ]M if $data->[l]; $condition =n and $key<=$data->[2]M if $data->[2]; $param ?=n&$data->[3]=$data->[4]n
if$data->[l] || $data->[2];
}elsif($data->[0] = 3){ # a= b || aob
$condition •=" and $key=$data->[2]” if($data->[l]=l); {condition =n and $keyo$data->[2]n if($data->[l]=2);
}
} else { if (defined $params->{$key} && $params->{$key} ne ") { Scondition = H and $key=$params-> {$key}H; $param = "&$key=$params->{$key} n;
}
}
}
# sql目錄
mkpath("$selfL>{output}/$self->{project}/sql/table/book"); mkpath(”$self">{output}/$self">{project}/sql/table/yspz”); mkpath("$self->{output}/$self->{project}/sql/table/dim,'); mkpath("$self->{output}/$self->{prqject}/sql/table/dictn); mkpath(” $self>{output}/$self">{pn)ject}/sql/view");
#模板目錄
mkpath(n$self->{output}/$self->{prqject}/tH);
#測試目錄
mkpath(” $self->{output}/$self»>{prqject}/template/test/yspz"); mkpath(n$self->{output}/$self->{prqject}/template/test/book,');
#解析配置
$self->config_dim() or return; $self->config^_book() or return; $self->config_yspz() or return; $self->config__proc() or return;
#模板工具
# $self->{tpl} = T ext::T emplate->new();
return Sself;
}
Scondition =- s/A and // if Scondition;
Sparam =- s/A&// if Sparam;
Sparam =- s/7/g if $param;
Scondition =' where '. Scondition if Scondition;
return { condition => Scondition, params => Sparam };
}
附錄4學位檔案管理部分關鍵代碼:
sub updateRoutes{
my $self = shift;
my Sroutes = {};
my $data = $self->select("select route.route_regex as route_regex, role_route.role_id as id from tbl_route_inf route join tbl_role_route_map role_route on role_route.route_id=route.route_id order by id");
for my $row (@$data) {
$routes->{ $row->{id} } = [] unless exists $routes->{ $row->{id} };
push @{ $routes->{ $row->{id} } }, $row->{route_regex} if $row->{route_regex} ne
$self">memd?>setCroutes; Sroutes);
}
# sql目錄
mkpath(H$self->{output}/$self->{project}/sql/table/bookn); mkpath(n$self->{output}/$self->{prqject}/sql/table/yspz,'); mkpath("$self-> {output}/$self-> {project}/sql/table/dimM); mkpath("$self->{output}/$self->{project}/sql/table/dictn); mkpath(M$self->{output}/$self->{project}/sql/view");
#模板目錄 mkpath(n$self.>{output}/$self->{project}/tM);
#測試目錄 #賬簿目錄
#原始憑證目錄
#核算項相關目錄
#字典表相關目錄
#視圖目錄
#測試目錄
mkpath(n$self->{output}/$self->{project}/template/test/yspzH); mkpath("$self->{output}/$self->{project}/template/test/bookH);
#解析配置
$self->config__dim() or return;
$self->config_book() or return;
$self->config_yspz() or return;
Sself-^onfigjjrocO or return;
#模板工具
# $self->{tpl} = Text::Template->new();
return $self;
}
#更新用戶角色信息
sub updateYonghus{
my $self = shift;
my Syonghus = {};
my Syonghunames = {};
my $uids = {};
my $data = $self.>select(Hselect yonghu-yonghuname as yonghuname, yonghu.yonghu_id as yonghu_id, yonghu__role.role__id as role_id
from tbl_yonghuJnf yonghu
join tbl_yon函 u_n)le_m 塔 yonghu^role
on yonghu.yonghu_id=yonghu_role.yonghu__id order by yonghujdn);
for my $row (@$data) {
$yonghus->{ $row-> {yonghu_id} } = [] unless exists
$yonghus->{ $row->{yonghu_id} };
$yonghunames->{ $row->{yonghu_id} } = $row->{yonghuname}; $uids->{$row->{yonghuname}} = $row->{yonghu_id};
push @{$yonghus->{ $row->{yonghu_id} }}, $row->{role_id};
}
Ssel^memd^setCyonghus*, Syonghus);
$self4memd?>setfyonghunames; Syonghunames);
$self">memd->set°uids‘,$uids);
參考文獻
[1]冉林•學生信息管理系統的設計與實現[D],成都:電子科技大學,2007.
[2]孟倩,周延.UML在數據庫建模中的應用[J].計算機工程與應用.2005. (16): 52.
[3]David Sczhuanyepa. Microsoft ADO. NET. NewYork[J], Microsoft Press, 2002.
[4]周秉鋒.UML軟件建模[M].北京:北京大學出版社.2001.
[5]Silberschatz Azonic SB. Strategic directions in database systems-Breaking of the box [J],ACM Computing Surveys, 1996.
[6]Eriksson, H. Business Modeling with UML[M], China Machine Press, 2004.
[7]胡光富.學生管理信息系統的設計與實現.中國優秀博碩論文全文庫.2004, (10): 13-15.
[8]Reagan Client/Server Computing, Upper Saddle[J]River, Nj:Pretice Hall, 2000.
[9]任美璇.基于校園網的學生信息管理系統[D],青島:中國海洋大學,2009.
[10]王方杰.基于C/S模式的學生綜合管理系統的實現[J],計算機與信息技術2009. 05:51-52
[11]顧明.MIS軟件開發過程的描述[J].計算機應用與軟件.2004, 2(3):21-22.
[12]徐寶文,周毓明盧紅敏.UML與軟件建模[M].北京:清華大學出版社.2006,3(6):13-22.
[13]Chamberlin D. D. Relational Database Management Systems [J], ACM Computing Surveys, 2000.13(9):130-138
[14]唐志軍,閔立清.基于校園網結構的高校教學管理信息系統設計[J]福建電腦,2009. 04: 56-61.
[15]王業賢.基于Web的學籍管理系統的設計與實現[D],大慶:大慶石油學院,200&
[16]屈喜龍.UML及面向對象的分析與設計的研究[J].計算機應用研究.2005, (9): 51-52.
[17]孟倩,周延.UML在數據庫建模中的應用[J].計算機工程與應用.2005, (16): 52.
[18]周秉鋒.UML軟件建模[M].北京:北京大學出版社.2001.
[19]范曉平.UML建模實例詳解[M].北京:清華大學出版社.2005.
[20]孫躍勇.面向對象的軟件測試研究[D].上海:復旦大學.2002.
[21]俞盤祥.ORACLE數據庫系統基礎[M].北京:清華大學出版社.1995.
[22]梁為,凌懷新,張曉鋼,潘文輝.基于Oracle的日志分析器•計算機應
用.2003,23(7): 121-123
[23]BEA 公司.http://www. bea. com. cn/products/bea webtuxedo/. 2003
[24]scott.構建XML Web服務一一基于MICROSOFT . NET系統[M].北京:清華大學出版社.2002
[25]Jiawei Han, Micheline Kamber.數據挖掘概念與技術[M].北京:機械工業出版社,2001
[26]李燕風.瀏覽及訪問模式的過程[J].計算機工程.2003, 29(15):45-47
[27]Jakob Nielsen, Marie Tahin.專業主頁設計技術 50佳站點賞析[M].北京:人民郵電
出版社,2002
[28]Anthony Saunders, Credit Risk Measurement:the next great financial challenge, 2nd edition, amozon. com, p. 278
[29]左子葉,朱揚勇.基于數據挖掘聚類技術的信用評分評級[J].計算機應用與軟 件,2004,24(4): 1-2
[30]王軍.基于JMS的消息中間件設計與實現[J].計算機工程.2003, 23(8):64-67
[31]李勁.動態電子商務的ffEB服務[M].北京:清華大學出版社.2002
[32]徐德志,吳敏.XML數據庫的樹模型抽象及其査詢[J].計算機工程.2003, 29(14) : 12-14