綜合案例五 學生學籍系統(tǒng)
【實驗目的與要求】
1.熟練使用VFP的操作環(huán)境
2.熟練使用項目管理器管理各種文件
3.掌握數(shù)據(jù)庫的設計方法和步驟
4.熟練掌握數(shù)據(jù)庫表及其表之間關系的創(chuàng)建與使用
5.掌握查詢與視圖的創(chuàng)建與使用
6.掌握程序設計的基本方法
7.掌握表單及其表單中各種控件的設計與使用
8.掌握菜單的創(chuàng)建和使用
【實驗要求】
要設計一個性能良好的管理系統(tǒng),明確用戶的應用環(huán)境對系統(tǒng)的要求是首要的和基本的。本系統(tǒng)從以下四個方面對用戶需求進行了分析:
⑴用戶的信息需求:能查詢班級信息、學生基本信息、課程信息、學生成績及補考信息。
⑵用戶的處理要求:要能錄入班級信息、學生基本信息、學生注冊登記、對專業(yè)或班級的課程設置、課程信息、學生成績錄入與修改查詢、補考成績錄入修改查詢等。
⑶對系統(tǒng)的適應性要求:要求系統(tǒng)能夠不受未來課程設置變化的影響及班級變動的影響,仍能照常使用。
⑷對系統(tǒng)的安全性要求,要求進入系統(tǒng)必須進行口令校驗。
【系統(tǒng)功能模塊】
【功能模塊說明】
1. 其功能主要分為四大類:
課程管理:用于對各學期課程的開設和修改。
成績管理:用于對成績的輸入、修改、匯總及排名。
班級管理:用于對班級的錄入與修改。
打印功能:用于打印所需數(shù)據(jù)。
本系統(tǒng)性能力求易于使用,具體有較高的擴展性和可維護性。
2.系統(tǒng)功能分析
錄入功能:為一般用戶提供相應的錄入功能,為超級用戶提供對所有信息的錄入功能。
查詢功能:為所有用戶提供查詢的功能,可查詢允許范圍內(nèi)的所有信息。
維護功能:為一般用戶提供查詢及相應的修改,刪除功能,為用戶提供對所有信息的修改刪除功能。
打印功能:能打印全校學生的信息及積各班信息,科目成績等。
退出功能:結(jié)束并關閉系統(tǒng)。
【實驗內(nèi)容】
1.1學籍管理中所涉及到的主要實體集及其屬性
1、班級﹛班級編號,班級名稱,專業(yè)代碼,學制,收費金額,班主任姓名,入學時間﹜;
2、班級課程﹛班級編號,學期,課程名稱,講授學時,上機學時,講授教師﹜;
3、補考﹛學號,學期,課程名稱,補考1,補考2,原因,未到原因﹜;
4、成績信息﹛學號、學期、課程名稱、成績﹜;
5、學生基本信息﹛學號,姓名,性別,出生日期,政治面貌,身份證號,班級編號,入學時間,QQ號碼、聯(lián)系電話、e_mail地址、英語等級﹜
6、教學計劃﹛專業(yè)代碼,學期,課程編號﹜;
7、注冊﹛學號、學年、注冊否﹜;
8、課程信息﹛課程編號,課程名稱﹜;
9、專業(yè)信息﹛專業(yè)代碼、專業(yè)名稱﹜
1.2、主程序
先建一個項目管理器,命名為“學籍管理.pjx”。按照前面幾章系統(tǒng)分析及設計的結(jié)果,建立一個名稱為“學籍庫.dbc”的數(shù)據(jù)庫并添加系統(tǒng)所涉及的各個表。然后根據(jù)功能模塊結(jié)構(gòu)設計的結(jié)果建立一個菜單,并設置相應的菜單項的單擊事件。再建立一個主控程序,命名為“主程序.prg”。
主界面
主程序.prg的代碼如下:
_SCREEN.WINDOWSTATE=2
_SCREEN.CAPTION='學籍管理系統(tǒng)'
_SCREEN.CONTROLBOX=.F.
_SCREEN.BACKCOLOR=RGB(50,100,128)
SET SYSMENU OFF
SET TALK OFF
SET SAFETY OFF
SET STATUS BAR OFF
DO FORM 封面 TO NUM
IF NUM
DO 菜單.mpx
READ EVENT
ENDIF
1.3、系統(tǒng)密碼校驗模塊
1、流程圖:
2、程序界面設計:
1.4、菜單設計
相關代碼如下:
退出: ??CHR(7)
RE=MESSAGEBOX('是否退出學籍管理系統(tǒng)?',4+32+256,'信息窗口')
IF RE=6
CLEAR EVENT
ENDIF
2、相關代碼如下:
(添加按鈕)
THIS.CAPTION='繼續(xù)'
Thisform.班級編號1.VALUE=SPACE(3)
Thisform.班級名稱1.VALUE=SPACE(6)
Thisform.專業(yè)代碼1.VALUE='07070'
Thisform.學制1.VALUE='3'
Thisform.收費金額1.VALUE=1800.00
Thisform.班主任名1.VALUE=SPACE(8)
Thisform.入學時間1.VALUE=CTOD('//')
Thisform.班級編號1.ENABLED=.T.
Thisform.班級名稱1.ENABLED=.T.
Thisform.專業(yè)代碼1.OPTION1.ENABLED=.T.
Thisform.專業(yè)代碼1.OPTION2.ENABLED=.T.
Thisform.專業(yè)代碼1.OPTION3.ENABLED=.T.
Thisform.專業(yè)代碼1.OPTION4.ENABLED=.T.
Thisform.專業(yè)代碼1.ENABLED=.T.
Thisform.收費金額1.ENABLED=.T.
Thisform.班主任名1.ENABLED=.T.
Thisform.入學時間1.ENABLED=.T.
THISFORM.班級編號1.SETFOCUS
THIS.ENABLED=.F.
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND3.ENABLED=.T.
THISFORM.COMMAND4.ENABLED=.F.
THISFORM.REFRESH
1.5、修改密碼(代碼)
(確認按鈕)
RESTO FROM PASS1.MEM ADDI
LOCAL MM1,MM2
MM1=PASS1
MM2=THISFORM.TEXT1.VALUE
SET EXACT ON
IF ALLT(MM1)<>ALLT(MM2)
THISFORM.NO=THISFORM.NO+1
=MESSAGEBOX('原密碼錯誤!',48+0+0,'錯誤')
IF THISFORM.NO=3
=MESSAGEBOX('三次密碼錯誤,將自動退出修改!',4+16+2,'退出')
THISFORM.COMMAND2.CLICK
ENDIF
THISFORM.TEXT1.VALUE=''
THISFORM.TEXT2.VALUE=''
THISFORM.TEXT1.SETFOCUS
ELSE
PASS1=THISFORM.TEXT2.VALUE
SAVE TO PASS1.MEM ALL LIKE PASS1
=MESSAGEBOX('密碼修改成功!',48+0+0,'恭喜')
THISFORM.RELEASE
ENDIF
SET EXACT OFF
1.6、學生補考查詢
1、界面設計:
2、相關代碼:
(開始查詢按鈕)
IF EMPTY(THISFORM.COMBO1.VALUE)
=MESSAGEBOX('請輸入班級編號!',48+0+0,'信息窗口')
THISFORM.COMMAND2.CLICK
ELSE
IF EMPTY(THISFORM.COMBO2.VALUE)
=MESSAGEBOX('請輸入學期!',48+0+0,'信息窗口')
THISFORM.COMMAND2.CLICK
ELSE
SELE 補考成績
SET FILT TO ALLT(LEFT(學號,2)+SUBS(學號,4,1))==ALLT(BJBH).AND.ALLT(學期)==ALLT(XQ)
GO TOP
IF EOF()
=MESSAGEBOX('沒有參加補考的學生信息!',48+0+0,'信息')
THISFORM.COMMAND2.CLICK
ELSE
THISFORM.GRID1.REFRESH
THISFORM.REFRESH
*IF EMPTY(THISFORM.GRID1.COLUMN4.TEXT1.VALUE)
* =MESSAGEBOX('有未錄入的補考成績!',48+0+0,'信息')
*ENDIF
THIS.ENABLED=.F.
THISFORM.COMMAND2.ENABLED=.T.
ENDIF
ENDIF
ENDIF
1.7、打印輸出-學期課程表
1、界面設計:
2、相關代碼:
(開始按鈕)
THIS.CAPTION='繼續(xù)'
THISFORM.BJBH.VALUE=''
THISFORM.BJBH.ENABLED=.T.
THISFORM.BJBH.SETFOCUS
(預覽按鈕)
IF EMPTY(THISFORM.BJBH.VALUE)
=MESSAGEBOX('請輸入班級編號!',48+0+0,'信息')
THISFORM.COMMAND6.CLICK
ELSE
SELE 班級學期課程表
SET FILT TO 班級編號=BJBH
GO TOP
IF EOF()
=MESSAGEBOX('相關信息不存在,請先設置課程信息!',48+0+0,'信息')
ELSE
REPO FORM 班級學期課程表 PREVIEW
ENDIF
ENDIF
(打印按鈕)
??CHR(7)
WAIT WIND '請安裝好打印紙,然后按任意鍵打印!' AT 20,20
REPO FORM 班級學期課程表 TO PRIN
(退出按鈕)
THISFORM.BJBH.VALUE=''
THISFORM.BJBH.ENABLED=.F.
THISFORM.RELEASE