




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、學校信息管理系統成績查詢模塊第一章緒論前言計算機信息技術無所不在、無時不在地影響著社會生活的各個領域。信息技術的應用越來越廣泛,越來越普及。計算機已經成為我們必不可少的工具,在人類的社會生產活動中發揮著越來越重要的作用。同時人們對信息和數據的利用與處理也已進入自動化、網絡化和社會化的階段,計算機之所以如此流行的原因主要有以下幾個方面:首先,計算機運行速度非常高,可以大大的提高人們的工作效率,可以代替人工進行許多繁雜的勞動;其次,計算機可以節省管理使用等資金;第三,計算機可以使數據更加安全等等;第四,計算機可以讓人們更便捷、更全面地管理各項事務等等。作為計算機應用的一部分,使用計算機對學校信息進
2、行管理,具有著手工管理所無法比擬的優點.例如:檢索便捷、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優點能夠極大地提高學校信息管理的效率,也是學校的信息化、正規化管理,與世界接軌的重要條件。因此,開發這樣一套學籍管理軟件成為很有必要的事情。本軟件系統采用面向對象的開發工具,采用快速原型開發(rapid prototyping method)方法即根據用戶的要求,由用戶和開發者共同確定系統的基本要求和主要功能,利用系統快速生成工具,建立一個系統模型,再在此基礎上與用戶交流,將模型不斷補充、修改、完善,如此反復,最終直至用戶和開發者都比較滿意為止,從而形成一個相對穩定、較為理想的
3、管理信息系統。摘要本文總結了設計學校信息管理系統的技術實現途徑,在分析高校信息管理的實際需求基礎上,提出了該管理系統成績查詢的建設方案,對學校信息管理如何應用于實際工作進行了論述,側重于解決成績管理部分。該部分主要分為查詢課程成績,查詢班級成績,查詢學生成績,分別提供按課程、按班級、按學生查詢。具體查詢時須提供年級、班組、或學號。關鍵詞學校信息 visual basic6.0 access2000 第二章系統總體規劃分析2.1 系統需求分析社會生活的節奏越來越快,成本和管理的需要使計算機的應用已普及到經濟和社會生活的各個領域。計算機雖然與人類的關系愈來愈密切,還有人由于計算機操作不方便繼續用手
4、工勞動。為了現代化社會人們高度強烈的時間觀念,學籍管理系統軟件為教學辦公帶來了極大的方便。目前全國絕大多數高校中,學生的綜合教學管理都采用手工管理,工作起來效率低,并且不能及時掌握學生的基本信息,比如學生的成績等等,不便于動態調整學生信息的結構。另外手工管理還存在眾多弊端,由于不可避免的人為因素,經常造成數據的遺失、差錯等等,該成績管理模塊結合其他模塊完成一整套學校信息管理系統,有著存儲信息大、速度快、查找便捷、性能穩定等優點,適應各大高校的教學管理。2.2 技術路線從系統的技術路線考慮,開發工具采用visual basic6.0,數據庫采用microsoft access2000。windo
5、ws 2000 server 的網絡性能及穩定性的提高,并且他的易用性和可操作性越來越受企業單位的青睞,是它成為中小企業的網絡平臺。visual basic6.0是一個集成了編輯、測試、和調試等各種程序開發工具的集成開發環境(ide),它既繼承了basic語言簡單易學,操作方便等優點,又引入了面向對象的編程機制和可視化程序設計方法,從而極大地極高了應用程序的開發效率也是visual bsic語言是目前最為流行和通用的程序設計語言。access2000 就是關系數據庫開發工具,數據庫能匯集各種信息以供查詢、存儲和檢索。access 的優點在于它能使用數據表示圖或自定義窗體收集信息。數據表示圖提供
6、了一種類似于 excel 的電子表格,可以使數據庫一目了然。另外,access 允許創建自定義報表用于打印或輸出數據庫中的信息。access也提供了數據存儲庫,可以使用桌面數據庫文件把數據庫文件置于網絡文件服務器,與其他網絡用戶共享數據庫。access 是一種關系數據庫工具,關系數據庫是已開發的最通用的數據庫之一。如上所述,access 作為關系數據庫開發具備了許多優點,可以在一個數據包中同時擁有桌面數據庫的便利和關系數據庫的強大功能。學校信息管理系統基本功能模塊圖專業基本信息管理班級基本信息管理教師基本信息管理課程基本信息管理教師任課管理學生基本信息管理學生選課|初始化基本信息管理模塊學生成
7、績管理學生成績管理成績錄入成績修改總分換算學生成績查詢查詢課程成績查詢班級成績查詢學生成績2.3 軟件模塊圖2.4 軟件模塊介紹2.4.1 基本信息模塊1、專業基本信息管理要根據選擇的年級,添加、修改和刪除相應年級中的專業1、添加專業;2、修改專業,不能修改專業的編號profid字段。3、刪除專業;刪除專業時候要提示。 4、字段說明:專業標號profid,采用2個數字組成,如:01,02,03。專業表名稱為:profession2、班級基本信息管理班級表【class】字段說明:班級編號classid編號為6位:如:030201,其中前兩位03年級,中間兩位02專業編號,后兩位01班級序號;子模
8、塊設計具體功能:1、添加班級信息;2、修改班級信息;3、刪除班級信息;通過選擇年級和專業,自動生成班級編號。3、教師基本信息管理教師信息表【teacher】字段說明:教師編號teacherid,為5位,如10001,10002。子模塊設計具體功能:1、添加教師信息;2、修改教師信息,不允許修改教師編號;3、刪除教師信息,要刪除所有教師的任課記錄。4、查詢教師信息教師的職稱career為:助教、講師、副教授、教授4、課程基本信息管理課程編號:courseid組成:0 3 0 2 1 0 1前兩位0 3是年級編號,0 2是專業編號 1是學期,0 1是課程序號。專業相同,該專業的課程即固定。通過對年
9、級和專業的相應的結合,以及對學期的選擇來確實某個學校的課程情況。并對此作出相應的功能操作。主要功能:1、添加課程;添加時,課程編號要自動生成。2、修改課程,不允許修改課程編號;3、刪除課程;如果記錄為空則給出提示信息。5、學生基本信息管理學生表【student】字段說明:學號studid,共為8位,如,01 03 01 01,請兩位01年級,第三四位03專業,第五六位01班級編號,后兩位表示序號; 添加時,要先選擇年級,然后選擇專業,班級。添加時,學號可以自動生成。子模塊設計具體功能:1、添加學生;2、修改學生,學號不允許修改。3、刪除學生;6、教師任課信息管理數據表:教師任課表【teacou
10、rse】一名教師,一門課程,一個班級,通過這三個要素,決定教師的任課關年級。如下圖所示:一名教師一門課程一個教師任課關年級一個班級該表中包含以上三個字段,教師號teacherid、課程號courseid和班級編號classid來決定一個教師任課關年級。添加時,要結合教師表、班級表和課程表,表單設計要以下拉選擇的方式,用鼠標操作,簡單方便。7、學生選課初始化管理本模塊主要是通過學生表student和課程表course中的記錄,自動生成學生選課表selcourse中的初始化記錄,如下圖所示:studid是學生的學號,而courseid是課程的編號,兩者構成一條記錄,表示該學生選修了這門課程,sel
11、course表主要是為了記錄學生相關課程的成績。該表的初始化記錄必須通過student表和course表自動生成,這樣才能管理學生成績。初始化操作可以通過選擇一個年級,或者一個專業來進行初始化,例如:選擇一個專業下的班級學生和課程進行初始化,專業固定,學生固定,課程也固定,則可以通過本模塊實現初始化過程,實現學生表和課程表的多對多的關年級。二、學生成績管理模塊1、學生成績管理該模塊是本年級統的核心模塊,主要實現各年級、專業、班級學生的成績管理。主要針對學生選課表selcourse來實現:該表結構如下:學生選課,一個學生和一門課程,組成一條記錄,該記錄可以表示該生這門課的成績信息。如:期中、期末
12、、平時、總評和補考等成績信息。對學生成績管理之前,各項初始化工作必須已經完成,如學生、課程等都已經準備好,并且學生選課的初始化工作已經完成。該模塊只要對各項成績進行管理即可。可以按照表的關年級,建立視圖來進行維護。2、學生成績查詢學生成績查詢主要涉及到學生選課成績表(selcourse),以及專業表(profession)、班級表(class)、學生表(student)、課程表(course),為了便于維護建立【vsc】視圖。學生選課成績視圖【vsc】關系視圖:第三章學生成績查詢具體實現3.1 系統設計階段成績查詢部分分為查詢課程成績、查詢班級成績和查詢學生成績,可以按課程、班級、或學生進行查
13、詢。3.1.1 程序界面設計主界面窗口:按課程查詢成績:選擇年級選擇班級選擇學期選擇課程選擇類型查詢該門課的成績如圖所示:具體代碼如下:option explicitconst pie = dim tvindex as stringadd courseprivate sub addcourse(skey as string)cbocourse.cleardim grade as stringdim term as stringdim profid as stringgrade = trim(cbograde.text)term = trim(cboterm.text)if len(skey)
14、= 3 then profid = right(skey, 2)elseif len(skey) = 7 then profid = right(left(skey, 5), 2)end ifdim ssql as stringssql = select * from course where left(courseid,4)= & pie & grade & profid & piessql = ssql & and term= & pie & term & piewith adocourse .commandtype = adcmdtext .recordsource = ssql .re
15、freshend withwith adocourse.recordset if not (.bof and .eof) then .movefirst do while not (.eof) cbocourse.additem trim(!coursename) .movenext loop cbocourse.listindex = 0 end ifend withend subfilter grdscprivate sub filtersc(skey as string)dim sourceskey as stringsourceskey = skeydim grade as strin
16、gdim term as stringdim couname as stringcouname = trim(cbocourse.text)grade = trim(cbograde.text)term = trim(cboterm.text)debug.print sourceskey: & sourceskeydim ssql as stringif len(sourceskey) = 3 then ssql = select * from vsc where left(studid,4)= & pie & grade & right(sourceskey, 2) & pie ssql =
17、 ssql & and left(courseid,5)= & pie & grade & right(sourceskey, 2) & term & pie ssql = ssql & and coursename= & pie & couname & pieelseif len(sourceskey) = 7 then ssql = select * from vsc where left(studid,6)= & pie & right(sourceskey, 6) & pie ssql = ssql & and left(courseid,5)= & pie & right(left(
18、sourceskey, 5), 4) & term & pie ssql = ssql & and coursename= & pie & couname & pieend ifdebug.print ssql & ssqlwith adovsc .commandtype = adcmdtext .recordsource = ssql .refreshend withend subadd classprivate sub addclass(grade as string)dim ssql as stringdim pid as stringdim pname as stringdim cid
19、 as stringdim cname as stringwith adoprof.recordset if not (.bof and .eof) then .movefirst do while not (.eof) pid = trim(!profid) pname = trim(!profname) tv.nodes.add , , r & pid, pname ssql = select * from class where left(classid,2)= & pie & grade & pie ssql = ssql & and right(left(classid,4),2)=
20、 & pie & pid & pie with adoclass .commandtype = adcmdtext .recordsource = ssql .refresh end with with adoclass.recordset if not (.bof and .eof) then .movefirst do while not (.eof) cid = trim(!classid) cname = trim(!classname) tv.nodes.add r & pid, tvwchild, c & cid, cname .movenext loop end if end w
21、ith .movenext loop end ifend withend subprivate sub cbocourse_click()call filtersc(tvindex)call sbpanel(tvindex)end subprivate sub cbograde_click()tv.nodes.clearcall addclass(trim(cbograde.text)tvindex = tv.nodes(1).keycall addcourse(tvindex)call filtersc(tvindex)call sbpanel(tvindex)end subprivate
22、sub cbokind_click()dim i as integerdim kind as stringkind = trim(cbokind.text)for i = 0 to 6 grdsc.columns(i).visible = falsenextselect case kind case 全部 call navifilter(1111111) case 期中 call navifilter(1110000) case 期末 call navifilter(1101000) case 平時 call navifilter(1100100) case 總評 call navifilte
23、r(1111110) case 補考 call navifilter(1100001)end selectgrdsc.refreshend subprivate sub cboterm_click()call addcourse(tvindex)call filtersc(tvindex)call sbpanel(tvindex)end subnavi filterprivate sub navifilter(s as string)dim i as integerdim lens as integers = trim(s)lens = len(s)for i = 1 to lens if (
24、mid$(s, i, 1) = 1) then grdsc.columns(i - 1).visible = true else grdsc.columns(i - 1).visible = false end ifnextdoeventsend subprivate sub cmdexit_click()unload meend subprivate sub cmdref_click()call addcourse(tvindex)call filtersc(tvindex)call sbpanel(tvindex)end subprivate sub form_activate()tvin
25、dex = trim(tv.nodes(1).key)call addcourse(tvindex)call filtersc(tvindex)sbsb.panels(1).text = tv.nodes(1).text & 專業 第 & trim(cboterm.text) & 學期 & trim(cbocourse.text) & 課 & adovsc.recordset.recordcount & 名學生成績!grdsc.refreshend subsb.panels(1).textprivate sub sbpanel(skey as string)if len(skey) = 3 t
26、hen if skey = trim(tv.nodes(1).key) then sb.panels(1).text = tv.nodes(1).text & 專業 第 & trim(cboterm.text) & 學期 & trim(cbocourse.text) & 課 & adovsc.recordset.recordcount & 名學生成績! else sb.panels(1).text = tv.selecteditem.text & 專業 第 & trim(cboterm.text) & 學期 & trim(cbocourse.text) & 課 & adovsc.records
27、et.recordcount & 名學生成績! end ifelse sb.panels(1).text = tv.selecteditem.text & 班 第 & trim(cboterm.text) & 學期 & trim(cbocourse.text) & 課 & adovsc.recordset.recordcount & 名學生成績!end if end sub private sub form_load()dim iyear as integerdim i as integeradd gradeiyear = year(date)with cbogradefor i = 97 t
28、o 99 .additem inextfor i = 0 to 9 .additem 0 & inextcbograde.text = right(cstr(iyear), 2)end withadd termwith cboterm for i = 1 to 6 .additem i nextcboterm.listindex = 0end withadd kindwith cbokind .additem 全部 .additem 期中 .additem 期末 .additem 平時 .additem 總評 .additem 補考 .listindex = 0end withend subp
29、rivate sub tv_click()tvindex = trim(tv.selecteditem.key)call addcourse(tvindex)debug.print tvindexcall filtersc(tvindex)call sbpanel(tvindex)end sub按班級查詢成績:選擇年級選擇班級選擇學期選擇類型查詢該門課的成績如圖所示:option explicitconst pie = dim tvindex as stringprivate pterm as stringprivate pkind as stringprivate pgrade as str
30、ingprivate pclassid as stringprivate pclassname as stringprivate selcou() as doubleadd classprivate sub addclass(grade as string)dim ssql as stringdim pid as stringdim pname as stringdim cid as stringdim cname as stringwith adoprof.recordset if not (.bof and .eof) then .movefirst do while not (.eof)
31、 pid = trim(!profid) pname = trim(!profname) tv.nodes.add , , r & pid, pname ssql = select * from class where left(classid,2)= & pie & grade & pie ssql = ssql & and right(left(classid,4),2)= & pie & pid & pie with adoclass .commandtype = adcmdtext .recordsource = ssql .refresh end with with adoclass
32、.recordset if not (.bof and .eof) then .movefirst do while not (.eof) cid = trim(!classid) cname = trim(!classname) tv.nodes.add r & pid, tvwchild, c & cid, cname .movenext loop end if end with .movenext loop end ifend withend subprivate sub cbograde_click()tv.nodes.clearcall addclass(trim(cbograde.
33、text)sb.panels(1).text = trim(cbograde.text) & 年級,請選擇班級、學期和類型!end subprivate sub cbokind_click()pkind = trim(cbokind.text)call fillgrdsc(pclassid, pterm, pkind)debug.print kind: & tvindexif len(tvindex) = 7 then sb.panels(1).text = trim(cbograde.text) & 年級 & trim(tv.selecteditem.text) & 班 第 & trim(c
34、boterm.text) & 學期 & (grdsc.rows - 1) & 名學生 & trim(grdsc.cols - 2) & 門課程 & trim(cbokind.text) & 考試成績!end ifend subprivate sub cboterm_click()pterm = trim(cboterm.text)call fillgrdsc(pclassid, pterm, pkind)debug.print term: & tvindexif len(tvindex) = 7 then sb.panels(1).text = trim(cbograde.text) & 年級
35、 & trim(tv.selecteditem.text) & 班 第 & trim(cboterm.text) & 學期 & (grdsc.rows - 1) & 名學生 & trim(grdsc.cols - 2) & 門課程 & trim(cbokind.text) & 考試成績!end ifend subprivate sub cmdexit_click()unload meend subprivate sub cmdref_click()dim i, j as integerwith grdsc for i = 1 to .rows - 1 .row = i for j = 2 to
36、 .cols - 1 .col = j if not isnull(.text) then if val(.text) 60 then .cellforecolor = vbred else .cellforecolor = vbblack end if end if next j next iend withend subprivate sub form_load()dim iyear as integerdim i as integeradd gradeiyear = year(date)with cbogradefor i = 98 to 99 .additem inextfor i =
37、 0 to 9 .additem 0 & inextcbograde.text = right(cstr(iyear), 2)end withadd termwith cboterm for i = 1 to 6 .additem i nextcboterm.listindex = 0end withadd kindwith cbokind .additem 期中 .additem 期末 .additem 平時 .additem 總評 .additem 補考 .listindex = 0end withwith grdsc .rows = 2 .cols = 7 .row = 0 .col =
38、 0 .text = 學號 .row = 0 .col = 1 .text = 姓名end withend subfillgrdprivate sub fillgrdsc(classid as string, term as string, kind as string)dim i, j as integer查找課程dim cou() as stringdim totcourse as integerdim cousql as stringcousql = select * from course where left(courseid,5)= & pie & left(classid, 4)
39、 & term & piecousql = cousql & order by courseidwith adocourse .commandtype = adcmdtext .recordsource = cousql .refreshend withwith adocourse.recordset if not (.bof and .eof) then .movefirst .movelast totcourse = .recordcount redim cou(totcourse - 1) .movefirst i = 0 do while not (.eof) cou(i) = tri
40、m(!coursename) i = i + 1 .movenext loop with grdsc .cols = 2 + totcourse for i = 2 to totcourse + 1 .row = 0 .col = i .text = cou(i - 2) next end with else totcourse = 7 with grdsc .rows = 2 .cols = totcourse for i = 0 to 1 .row = i for j = 2 to totcourse - 1 .col = j .text = next j next i end with
41、end if end with查找學生dim stud() as stringdim totstud as integerdim studsql as stringstudsql = select * from student where left(studid,6)= & pie & trim(classid) & piestudsql = studsql & order by studidwith adostud .commandtype = adcmdtext .recordsource = studsql .refreshend withwith adostud.recordset i
42、f not (.bof and .eof) then .movefirst .movelast totstud = .recordcount redim stud(totstud - 1, 1) .movefirst i = 0 do while not (.eof) stud(i, 0) = trim(!studid) stud(i, 1) = trim(!name) i = i + 1 .movenext loop with grdsc .rows = totstud + 1 for i = 1 to totstud .row = i for j = 0 to 1 .col = j .te
43、xt = stud(i - 1, j) next j next i end with else with grdsc .rows = 2 .row = 1 for i = 0 to .cols - 1 .col = i .text = next end with end ifend with查找課程成績redim selcou(totstud, totcourse)dim selcousql as string selcousql = select * from selcourse where left(studid,6)= & pie & classid & pie selcousql = selcousql & and right(left(courseid,5),1)= & pie & term & pie selcousql = selcousql & order by studid,courseid with adosc .commandtype = adcmdtext .recordsource = selcousql .refreshend withwith ados
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版高考歷史一輪復習第二單元西方民主政治與社會主義制度的建立課題六羅馬法的起源與發展學案含解析新人教版
- 垂直傳播微生物的檢測及管理及試題及答案
- 全面提升行政管理知識的試題及答案
- 國際微生物檢測標準的演變試題及答案
- 中學省級課題申報書
- 一年級下數學教案數的順序-人教新課標
- 注冊會計師考試2025年企業績效考核指標設置試題及答案
- 2025年注冊會計師考試解題思路試題及答案
- 2024秋一年級語文上冊 漢語拼音 11 ie üe er教學設計 新人教版
- 2025年注冊會計師學習與工作結合的試題與答案
- GB 14907-2002鋼結構防火涂料
- 《不刷牙的小巨人》幼兒園PPT
- 十七年散文課件
- 抹灰石膏購銷合同
- 港口營運安全生產風險分級管控體系實施指南
- 住宅樓工程臨時用水專項施工方案
- 靜電感應現象PPT
- 簽名設計課件
- 科室醫院感染風險評估表
- 品質異常處罰細則及獎罰制度
- 技術工作交接制度
評論
0/150
提交評論