唐聞新
(安徽中醫藥大學, 安徽 合肥230031)
畢業資格審核系統的設計
唐聞新
(安徽中醫藥大學, 安徽 合肥230031)
為了改善學校目前的本科生畢業資格的審核中大量采用手工方式審核的現狀.課題組成員通過分析學校的畢業資格審核工作過程和現有管理系統的優缺點和可提供的數據.最終結合學校的相關文件中的關于學生畢業資格審核的規定,設計了一款簡單實用的畢業資格審核系統,設計的系統能夠完成我校在畢業資格審核工作中所需要做的所有工作,并能處理我校的各類特殊情況.
畢業資格;VFP;系統設計
我們學校每年都要進行本科生的畢業資格審核工作,主要審核學生的畢業資格和學位授予資格.目前我校的學生在校信息雖然都已經實行了計算機輔助管理,但在具體的畢業資格審定中還是需要人工逐一對每個學生進行審核.學校現已有一個成績管理系統.但是這個管理系統目前主要完成的功能是管理學生在校期間所有課程學習的成績,不適合直接用于審核畢業資格.為了能更好的發揮計算機的強大功能,課題組成員在不使用現有系統內部數據庫的基礎上設計了一款簡單實用且通用性比較好的畢業資格審核系統.
系統設計前首先對可利用的資源進行了分析,現有的管理系統為利用VFP開發的,因此仍然選用VFP開發審核系統.在數據方面,所能利用的數據只有從原有管理庫中導出的三張EXCEL表格:總成績表、四六級計算機成績表和學期不及格記錄表.這些EXCEL表格的具體內容(如:課程名稱)在設計系統的時候是未知的,因此在設計導入程序時需要利用“CREATEOBJECT('Excel.application')”建立對象并生成全新的數據表.
1.1 總成績表
總成績表中含有的信息為:學號、姓名、課程名稱、成績.這張表是學生在校課程學習的總記錄,也是學生畢業資格審核的主要基礎依據.
但是這張表有一些問題需要處理:⑴有轉專業的學生將在其他專業學習的課程帶入了這個專業的成績表,這些課程需要從表格中刪除.⑵有的學生因為有統一安排的中長期的校外學習,造成對應學期的在校課程沒有成績.⑶成績表中缺少課程類型信息,原有的管理庫中也只有考試形式的分類,缺少課程類型和開課學期信息,這些信息在各類學分計算和主干課績點的計算中都是必須要用到的.
解決的方法是:從導入的總成績表中分別提取課程名稱和學號、姓名信息存于課程信息和學生基本信息表.在課程信息表中設置課程的類型,如:專業課、必修課、任選課和學分、開課學期等課程信息并刪除多余課程,在學生基本信息表中設置因各種原因而形成的免修課程的學期信息.
1.2 四六級計算機成績表
四六級計算機成績表中的信息有:學號、姓名和在校期間歷次的英語和計算機等級考試的成績.在學位資格審核中需要考慮這兩項的成績.這張表在處理時的問題有:⑴對應成績前有漢字不能直接用.⑵英語等級字段中的成績大多有多次考試形成的多條記錄.⑶導入之后的成績字段為字符型字段.
解決的方法是:利用在導入的四六級計算機成績表中的歌詞考試成績都用括號分開的條件,提取字段中括號內的數字從而刪除其它字符提取出成績,再將提取的成績轉換成數字型字符,并對多條英語成績進行判斷保留最高成績.這里雖然在學位條例中是對四級成績有要求,但不需要考慮英語的成績提取出來的是否為四級成績,因為如果有六級考試的成績就證明四級成績已達到最高要求.
1.3 學期不及格記錄表
學期不及格記錄表只在審核學位資格時使用,表中的信息有:班級、課程、姓名.這張表格主要是用來檢查主干課補考記錄數是否符合要求.同時這里的班級信息可以作為系統中專業的識別信息.但同樣需要處理的問題有:⑴需要將非主干課剔除.⑵有些不及格記錄因為重修留級等原因是不需要計算的也需要排除不計.⑶表格中僅有的信息無法滿足自動判斷和取舍不需要計數的主干課補考記錄.
解決的方法是:通過查詢課程類型將導入的不及格記錄中非主干課程的記錄刪除,并將記錄改成一條記錄只有一個人一門課的形式.便于單獨刪除不需要計算的記錄.
課題組最終設計出了一款簡單實用,且不介入原有管理系統內部的畢業資格管理系統.系統最后生成專業匯總信息表和個人的學位審批表.為了操作人員能夠直觀感受到資格審核工作的流程,系統的主界面設計如圖1所示.
主界面中的各功能鍵的active屬性根據工作的進度實時調整,避免信息前后不一致造成審核結果出錯.系統所完成的主要審核功能有:

圖1 系統主界面
2.1 課程成績的分類統計
系統首先從總成績表中提取所有課程名稱,再根據專業培養方案對每門課程的類型進行設置.這些信息包括:修業類型(必修、限選、任選)、課程性質(公共基礎課、專業基礎課、專業課)、是否為主干課和學分及修業學期等.同時刪除各種原因帶來多余課程,比如轉專業來的同學就會將在其他專業已學的課程帶入總成績表.課程的各類信息設置好之后為后期的分類統計奠定了基礎.
結合課程類型信息將總成績表中的各科成績按照公共必修、公共限選、基礎必修、基礎限選、專業必修、專業限選、任選課、主干課分成不同的成績表.這樣可以很方面的計算不同課程類型的學分信息,以便和學位條例中的規定進行逐一比較.
2.2 英語和計算級等級考試及其它各類免修設置
在我校的學位條例中規定,英語四級和計算機省二級的考試成績達到合格要求的學生,在校內的英語課程考試和非計算機專業的計算機課程考試成績如有不及格則不計,也就是如果不及格則對應課程免修.
其它可能出現免修的情況主要有:⑴轉專業.這些同學應為之前未在本專業學習所以有部分課程未修,但因為對同時間段的課程成績要求較高,條例規定對應的未修課程可以免修.⑵留學和交換生.我校和國內與國外的學校均有交換學習的學生.國內交換學習的時間長短不一,多為幾個月,留學的學生一般為1年左右.這些學生在對方學校的學習成績合格后,對應學期的課程也列為免修課程.
當出現這些免修情況時,分學期設置學生是否免修.當英語、計算機或某個學期滿足免修條件時,檢查對應課程的成績是否及格如及格則不作任何操作,如果不及格則將成績改為60分(及格),這樣就不會造成無法計算學分的尷尬.
2.3 畢業資格的審核
審核畢業資格當然是這個這個系統的必備功能了.我校畢業證的獲取條件為所有在校期間的各類考核均合格.學位證的獲取資格較為復雜:在獲得畢業證的基礎上要求計算機具有二級或以上合格證書,英語要求四級成績不低于285分,公共必修、公共限選、基礎必修、基礎限選、專業必修、專業限選和任選課的學分均有不同的要求,主干課的不及格記錄必須少于2條.但是如果主干課的不及格數在3條以上,同時主干課的平均學分績點達到2.5以上的也可以授學位.在對各個條件進行逐一判斷后就可以得到每位學生的畢業資格審核結果了,結果分別以專業匯總表和學位審批表的形式打印輸出以便供學生校對和上報.
專業匯總信息表如圖2所示:

圖2 專業匯總信息表
個人學位審批表如圖3所示:

圖3 個人學位審批表(部分)
3.1 導入成績表:
Efn=getfile("xls")
Exl=CREATEOBJECT('Excel.application')
Exl.Workbooks.Open('&Efn')
h=Exl.SHEETS(1).UsedRange.ROWS.COUNT
i=Exl.SHEETS(1).UsedRange.COLUMNS.COUNT
Exl.Cells(h,i).Select
Exl.Columns.AutoFit
Exl.DisplayAlerts=.F.
Exl.ActiveWorkbook.SaveAs('c:xw.dbf',8)
Exl.ActiveWorkbook.saved=.t.
Exl.Workbooks.close
Exl.quit
RELEASE Exl
3.2 提取做為字段名存在的課程名稱:
use總成績表
for i=3 to fcount()
course=field(i)
use課程類型
append blank
replace課程簡稱with course
use總成績表
endfor
3.3 提取專業限選課的成績:
use課程類型
locat for課程簡稱=course
j=課程分類
l=修業類型
if j='專業課'and l='限選課'
k=k+1
use專業限選
else
use專業限選
alter table專業限選.dbf drop&h
endif
4.1 查看導入后的字段
導入EXCEL生成新的DBF文件后,別忘了查看一下字段的類型和長度.前面提到的導入成績表就是將一個EXCEL表格導成一個新的DBF文件,并且以EXCEL表格的第一行各列的內容作為新表的每個字段名.但是在后期的程序設計中發現了兩處問題:首先是學號,學校的學號是個8位的數字,但新表的學號字段的長度確為9個字符.再有就是作為字段名存在的課程名稱,我們都知道字段名是只能有5個漢字,但是當把這些課程名稱提取出來時卻發現這5個漢字的變量的長度卻是11個字符.所以在必要的時候檢查程序生成的字段和變量的長度也是很有必要的.
4.2 以數字為內容的字段
在表格設計時并不是數值形式內容的字段就一定要設置為數值類型.初學VFP時有人會說數值形式的內容,如果以后不需要對其進行計算,可以直接設置為字符形式.當時不能理解為什么,直到后來設計報表的時候才知道為什么在有的時候這樣做是必須的.那就是當這個字段不輸入任何信息時,如果是數值型字段,生成的報表中會有一個“0”,但是如果是字符型字段就會是空白,因此當不想打印這個“0”時就把它變成字符吧.
4.3 索引
索引很重要,但并不是一定要在設計表的結構時就要把索引都建好.索引是相對復雜的系統中必須要使用的,這樣能大大簡化程序的設計過程.可很多時候在設計數據庫表的初期我們并不清楚哪些索引是必須要建立的.其實不必著急,先可以不用把索引都建好,在需要的時候再做.比如在系統設計最后的學位審核表的報表設計中就需要將審批表和審核結果表的信息逐一調出使用,但大家都沒建索引.不著急,當在數據環境中點住審批表的學號字段拉到審核結果表中的學號字段時系統會提示建立索引,單擊“確定”就可以搞定了,其實索引也只是在審核結果表中建立了,而審批表中并沒有.如圖4所示:

圖4 在數據環境中直接建立索引和關聯
4.4 多表操作時的變量
初學者有時在一個工作區中輪流操作幾張表,這時就需要注意有些變量的變化.比如表1的第3個字段名是“英語”,表2的第3個字段名是“畢業資格”,當執行:
use表1
x=field(3)
?x
這時輸出的結果是:英語
但再執行:
use表2
?x
這時的輸出結果是:畢業資格
這也是為什么當需要對多個表同時進行操作時還是多用用其他工作區的原因.對于規模不大的程序,通常情況下VFP的可用工作區足夠打開整個系統的所有表格.
4.5 報表中部分不確定項的處理
設計的系統最后能夠打印每個學生的學位審批表.但當時在報表的的設計時卻碰到了一個困難.就是在設計主要課程成績信息時,不同的專業的主要課程的名稱和數量都不一樣,并且由于有哪些專業都是未知的,所以就更沒辦法將課程名稱預先設計好.解決的辦法也簡單,那就是把課程名稱和成績都作為變量分別存在各自的表中,因為課程的數量上限是已知的,所以報表中的這個塊內容就按上限數設計就可以了.在打印出的表單中只不過是多幾個沒有內容的空格而已.實際中主要課程的數量按照30門課的上限進行設計.報表的設計如圖5:

圖5 報表中主要科目考試成績部分的設計
經過試用,設計出的系統能夠完成我校在畢業資格審核工作中所需要做的所有工作,并能處理我校的各類特殊情況.但由于系統的設計基礎是不使用原有系統的內部數據庫,這使得系統在設計和使用時必須要對一些重要信息進行手工設置,這其實是系統不可避免的設計缺陷.今后計劃和學校有關部門合作對學校現有的管理系統進行升級更新,讓畢業資格審核工作實現一鍵式操作.
〔1〕謝忠.Excel表格數據導入VFP表的動態實現[J].九江學院學報(自然科學版),2012(1):50-53.
〔2〕杜春敏.Visual FoxPro程序設計[M].北京:水利水電出版社,2012.
〔3〕楊松濤.Visual FoxPro程序設計實訓與考試指導[M].北京:水利水電出版社,2012.
〔4〕陶偉.基于VFP的畢業資格審核系統設計與實現.安徽農業大學學報,2011,38(3):479-485.
〔5〕張萍.高校實行學分制后教務管理模式的探討[J].黑龍江高教研究,2004(5):73-74.
〔6〕陶偉.學分制下成績管理體系的研究與實踐[J].科技信息, 2010(21):164-165.
〔7〕賀超凱.SQL語句在畢業資格審核中的應用[J].電腦知識與技術,2007(20):398.
〔8〕張月玲.教學評價系統數據庫的設計與實現[J].聊城大學學報(自然科學版),2006,19(4):94-96.
TP319
A
1673-260X(2014)07-0025-03
安徽中醫藥大學校級質量工程項目(zlgc201107),安徽中醫藥大學校級教研項目(zd201222-zc)