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