![數(shù)據(jù)庫原理及VFP課程設(shè)計(jì)報(bào)告學(xué)籍管理系統(tǒng)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/20/67373433-bfd0-4428-aa4f-67c1ad0df8d1/67373433-bfd0-4428-aa4f-67c1ad0df8d11.gif)
![數(shù)據(jù)庫原理及VFP課程設(shè)計(jì)報(bào)告學(xué)籍管理系統(tǒng)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/20/67373433-bfd0-4428-aa4f-67c1ad0df8d1/67373433-bfd0-4428-aa4f-67c1ad0df8d12.gif)
![數(shù)據(jù)庫原理及VFP課程設(shè)計(jì)報(bào)告學(xué)籍管理系統(tǒng)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/20/67373433-bfd0-4428-aa4f-67c1ad0df8d1/67373433-bfd0-4428-aa4f-67c1ad0df8d13.gif)
![數(shù)據(jù)庫原理及VFP課程設(shè)計(jì)報(bào)告學(xué)籍管理系統(tǒng)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/20/67373433-bfd0-4428-aa4f-67c1ad0df8d1/67373433-bfd0-4428-aa4f-67c1ad0df8d14.gif)
![數(shù)據(jù)庫原理及VFP課程設(shè)計(jì)報(bào)告學(xué)籍管理系統(tǒng)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/20/67373433-bfd0-4428-aa4f-67c1ad0df8d1/67373433-bfd0-4428-aa4f-67c1ad0df8d15.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、信 息 工 程 系課程設(shè)計(jì)報(bào)告課程名稱: 數(shù)據(jù)庫原理及vfp 設(shè)計(jì)課題: 學(xué)籍管理系統(tǒng) 班 級: 07計(jì)應(yīng)大專 姓 名: 指導(dǎo)教師: 設(shè)計(jì)時(shí)間: 2009.6.17 課程設(shè)計(jì)任務(wù)書專業(yè): 計(jì)算機(jī)應(yīng)用 班級: 07計(jì)應(yīng)大專 設(shè) 計(jì) 課 題學(xué)籍管理系統(tǒng)指 導(dǎo) 教 師設(shè)計(jì)起止時(shí)間2009.6.8-2009.6.19共 2 周課程設(shè)計(jì)的目的與任務(wù)一、 信息需求: 一個(gè)學(xué)校有多個(gè)系部,培養(yǎng)學(xué)生有大專、中專等不同的層次,各個(gè)層次由設(shè)多個(gè)專業(yè),每個(gè)專業(yè)開多門課程,每個(gè)專業(yè)有多個(gè)班級,每個(gè)班有多名學(xué)生。二、 功能要求:1 系部、專業(yè)、學(xué)生層次、課程、班級、學(xué)生等信息的錄入。2 每學(xué)期學(xué)生成績錄入并打印輸出。3
2、 按學(xué)號和姓名查詢學(xué)生的個(gè)人情況并打印輸出。4 按學(xué)號和姓名查詢學(xué)生的個(gè)人成績,并打印輸出。5 按班級查詢各門課程全班同學(xué)的成績,并打印輸出。6 登錄界面、菜單。課程設(shè)計(jì)報(bào)告內(nèi)容要求內(nèi)容:1. 需求分析。2. 數(shù)據(jù)庫設(shè)計(jì)1) 概念模型2) 數(shù)據(jù)庫模型(基本表、視圖表)3) 程序設(shè)計(jì)4) 包括過程、表單、菜單、報(bào)表等要求:主要敘述各功能模塊的設(shè)計(jì)思路 用a4紙張,小四號宋體排版指導(dǎo)教師評語課程設(shè)計(jì)成績指導(dǎo)教師簽字 年 月 日目 錄需求分析及數(shù)據(jù)庫設(shè)計(jì)1系部設(shè)置3專業(yè)設(shè)置7班級設(shè)置10類別設(shè)置14課程設(shè)置16學(xué)生個(gè)人信息19學(xué)生成績表單24成績錄入表單26按班級查詢成績33學(xué)生個(gè)人信息查詢36登錄
3、界面44主菜單46信息工程系計(jì)算機(jī)應(yīng)用技術(shù)20721班數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告題目:學(xué)籍管理系統(tǒng)要求:a. 需求分析 一個(gè)學(xué)校有多個(gè)系部,培養(yǎng)學(xué)生有打?qū)?、中專等不同的層次,各個(gè)層次由設(shè)多個(gè)專業(yè),每個(gè)專業(yè)開多門課程,每個(gè)專業(yè)有多個(gè)班級,每個(gè)班有多名學(xué)生。 數(shù)據(jù)庫設(shè)計(jì)器圖如下:項(xiàng)目管理器如圖所示:b. 數(shù)據(jù)庫設(shè)計(jì) 概念模型a) 對象系部(系號,系名,主任)專業(yè)(專業(yè)號,專業(yè)名)類別(類別號,類別名)課程(課程號,課程名)班級(班級名,入學(xué)年份)學(xué)生(學(xué)號,姓名,性別,年齡,出生日期,入學(xué)成績,籍貫,家庭成員,民族,政治面貌,個(gè)人簡歷,婚否,照片)(2)er圖含有類別課程學(xué)生1n1nnn1nn設(shè)有設(shè)有成績
4、績績 選修專業(yè)班級 設(shè)有包含系部b) 關(guān)系模型系部(系號,系名,主任)專業(yè)(專業(yè)號,專業(yè)名,系部)類別(類加號,類別名,專業(yè))課程(課程號,課程名,專業(yè))班級(班名,專業(yè),入學(xué)年份)學(xué)生(學(xué)號,姓名,年齡,民族,性別,出生日期,入學(xué)成績,籍貫,家庭成員,政治面貌,個(gè)人簡歷,婚否,照片,班級)選修(課程,學(xué)號,成績)c、程序設(shè)計(jì)一、應(yīng)用實(shí)例:“系部設(shè)置”表單設(shè)計(jì)表單文件名: xbsz.scx功能:為數(shù)據(jù)庫表xb.dbc 追加數(shù)據(jù)界面:設(shè)計(jì)步驟:1、 新建表單2、 添加數(shù)據(jù)環(huán)境:數(shù)據(jù)庫表xb.dbc3、 界面設(shè)計(jì):l 4個(gè)標(biāo)簽:字體、字號、背景色、對齊方式l 1個(gè)表格:數(shù)據(jù)源數(shù)據(jù)庫表xb.dbcl
5、 3個(gè)文本框:主要屬性name分別 : txtxh, txtxm, txtzrcontrolsource:分別為全局變量:xjl(1),xjl(2),xjl(3)l 5個(gè)命令按鈕 command1( 追加)、command2(結(jié)束)、command3(刪除)、command4(修改)、command5(修改確認(rèn))4、 事件過程l form1.load 過程select xb &選擇當(dāng)前工作區(qū)set order to xh &設(shè)置主索引public xjl(3),m_xg &定義全局變量,默認(rèn)值為邏輯假xjl= & 為數(shù)組元素賦初值,字符型set delete on &設(shè)置邏輯刪除有效l txt
6、xm.gotfocus過程if m_xg=.f. &判斷是否修改操作xjl(1)=allt(xjl(1) &去掉字符數(shù)據(jù)的左右空格seek xjl(1) &索引查詢if !eof()=messagebox(代號重復(fù),0,錯(cuò)誤) &對話框 xjl(1)=thisform.txtxh.setfocus &設(shè)置焦點(diǎn)即光標(biāo)位置thisform.refresh &重畫表單或控件,并刷新所有值endifendifl command1.click 過程xjl(2)=allt(xjl(2)if len(xjl(2)=0 =messagebox(系部名不能空!,0,錯(cuò)誤) thisform.txtxm.setf
7、ocuselse insert into xb from array xjl &向表中追加插入數(shù)據(jù) xjl= thisform.txtxh.setfocusendif thisform.refreshl command2.click 過程thisform.release &從內(nèi)存中釋放表單集或表單l command3.click 過程 m_xh=xh &記錄當(dāng)前記錄的主碼值delete from xb where xh=m_xh &刪除記錄thisform.refreshl command4.click 過程m_xg=.t. &修改標(biāo)志thisform.grdxb.enabled=.f. &表
8、格不可操作,為不讓用戶改變當(dāng)前記錄scatter to xjl &將當(dāng)前記錄值賦給數(shù)組thisform.txtxh.enabled=.f. thisform.txtxm.setfocusmand1.visible=.f.mand3.visible=.f.mand4.visible=.f.mand5.visible=.t.thisform.refreshl command5.click 過程m_xg=.f. &取消修改標(biāo)志m_xh=xhupdate xb set xm=xjl(2),zr=xjl(3) where xh=m_xh &修改當(dāng)前記錄thisform.grdxb.enabled=.t.
9、thisform.txtxh.enabled=.t.scatter to xjl blankthisform.txtxh.setfocusmand1.visible=.t.mand1.visible=.t.mand3.visible=.t.mand4.visible=.t.mand5.visible=.f.thisform.refresh二、專業(yè)設(shè)置表單功能:為基本表 zy.dbf 追加記錄設(shè)計(jì)思路:該表單的重點(diǎn)是如何保證兩表的參照完整性?!眤y”表中的外碼“xb”讓用戶在已有的(“xb”表)值中進(jìn)行選擇,不要從鍵盤輸入。為此采用一個(gè)組合框來實(shí)現(xiàn)。另外用組合框和表格實(shí)現(xiàn)1:n聯(lián)系的兩表中數(shù)據(jù)的
10、關(guān)聯(lián),來顯示各系部已有的專業(yè)。數(shù)據(jù)環(huán)境:xb.dbf zy.dbf界面設(shè)計(jì):procedure loadpublic xjl(3)scatter to xjl blankendproc主要控件1、組合框:combo1步驟:新建組合框-右擊鼠標(biāo)-生成器-選定字段-選定值主要屬性boundcolumn = 2columncount = 2rowsourcetype = 6rowsource = xb.xm,xhcontrolsource = xb.xhfirstelement = 1name = combo12、表格:grdzy設(shè)計(jì)步驟:從數(shù)據(jù)環(huán)境中將表zy拖入表單-生成器-選定字段-選定值主要屬
11、性如下:bolumncount = 3childorder = xblinkmaster = xbrecordsource = zyrecordsourcetype = 1relationalexpr = xhname = grdzycolumn1.controlsource = zy.zyhcolumn1.name = column1column2.controlsource = zy.zymcolumn2.name = column2column3.controlsource = zy.xbcolumn3.name = column33、文本框:text1controlsource = x
12、jl(1)name = text14、文本框:text2controlsource = xjl(2)name = text25、命令按鈕組:commandgroup1buttoncount = 2name = commandgroup1command1.fontname = 楷體_gb2312command1.fontsize = 10command1.caption = 追加command1.forecolor = 255,0,0command1.name = command1command2.fontname = 楷體_gb2312command2.fontsize = 10command
13、2.caption = 退出command2.forecolor = 255,0,0command2.name = command2procedure command1.clickselect * from zy; where zyh =xjl(1); into cursor ssif _tally=0 &判斷查到記錄的數(shù)量insert into zy values(xjl(1),xjl(2),xb.xh)scatter to xjl blankelse =messagebox(代號重復(fù),0,錯(cuò)誤) &對話框 xjl(1)= thisform.text1.setfocus &設(shè)置焦點(diǎn)即光標(biāo)位置
14、 thisform.refresh &重畫表單或控件,并刷新所有值endifthisform.refreshendprocprocedure command2.clickrelease thisformendproc三、視圖應(yīng)用實(shí)例:班級設(shè)置表單:功能:向基本表bj中追加記錄界面設(shè)計(jì):數(shù)據(jù)環(huán)境:xb,zy,lb3個(gè)基本表和 bj_zy 視圖,重點(diǎn):通過視圖向基本表中追加記錄,另外是專業(yè)名稱在組合框中所列內(nèi)容要隨系部而變,已有班級在表格中顯示時(shí)也要隨專業(yè)和學(xué)生類別而變,為此將以上組合框和表格的數(shù)據(jù)源都設(shè)置成sqlselect語句視圖bj_zy定義的select語句如下:select bj.*,
15、zy.zym, lb.lbm; from xjgl!zy inner join xjgl!bj; inner join xjgl!lb ; on lb.lbh = bj.lb ; on zy.zyh = bj.zy更新字段和更新條件如下圖所示:主要控件的屬性及事件過程如下:procedure loadpublic m_bm,m_nfm_bm=m_nf=year(date()endproc組合框(所屬系部):combo1主要屬性:boundcolumn = 2columncount = 2rowsourcetype = 6rowsource = xb.xm,xhcontrolsource = x
16、b.xhname = combo1事件過程“procedure interactivechangethisform.grdbj.refreshendproc組合框(專業(yè)名稱):combo2主要屬性:boundcolumn = 2columncount = 2rowsourcetype = 3 & sql語句rowsource = select zym,zyh from zy where xb=xb.xh into cursor aacontrolsource = name = combo2事件過程:procedure interactivechangethisform.grdbj.record
17、source=select bm,rxnf,zym,lbm from bj_zy into cursor bb ;where zy=aa.zyh and lb=lb.lbhthisform.grdbj.refreshendproc組合框(學(xué)生類別):combo3主要屬性:boundcolumn = 2columncount = 2rowsourcetype = 6rowsource = lb.lbm,lbhcontrolsource = name = combo3事件過程:procedure interactivechangethisform.grdbj.recordsource=select
18、 bm,rxnf,zym,lbm from bj_zy into cursor bb ;where zy=aa.zyh and lb=lb.lbh thisform.grdbj.refreshendproc表格:去grdbj主要屬性:columncount = 4recordsource = select bm,rxnf,zym,lbm from bj_zy into cursor bb where zy=aa.zyh and lb=lb.lbhrecordsourcetype = 4name = grdbj文本框:text1inputmask = !name = text1微調(diào)控件:spin
19、ner1keyboardhighvalue = 2020keyboardlowvalue = 1990controlsource = m_nfname = spinner1命令按鈕:commandgroup1shuybuttoncount = 2backstyle = 0borderstyle = 0value = 1name = commandgroup1command1.fontname = 楷體_gb2312command1.fontsize = 11command1.caption = 追加command1.forecolor = 255,0,0command1.name = comm
20、and1command2.fontname = 楷體_gb2312command2.fontsize = 10command2.caption = 退出command2.forecolor = 255,0,0command2.name = command2事件過程:procedure command1.clickselect * from bj_zy where bm =m_bm into cursor ssif _tally=0 insert into bj_zy values(m_bm,m_nf,aa.zyh,lb.lbh,aa.zym,lb.lbm) thisform.grdbj.rec
21、ordsource=select bm,rxnf,zym,lbm from bj_zy into cursor bb where zy=aa.zyh and lb=lb.lbh thisform.grdbj.refreshm_bm=m_nf=year(date()else=messagebox(班級名稱重復(fù),0,錯(cuò)誤) m_bm= thisform.text1.setfocus thisform.refresh endifthisform.refreshendifthisform.refreshendprocprocedure command2.clickrelease thisformend
22、proc四、類別設(shè)置表單表單文件名:lbsz.scx功能:為數(shù)據(jù)庫存表lb.dbc追加數(shù)據(jù)界面: 設(shè)計(jì)步驟:1新建表單2添加數(shù)據(jù)環(huán)境:數(shù)據(jù)庫表lb.dbc3界面設(shè)計(jì):l 3個(gè)標(biāo)簽:字體、字號、背景色、對齊方式l 1個(gè)表格:數(shù)據(jù)源數(shù)據(jù)庫表lb.dbcl 3個(gè)文本框:主要屬性 controlsource:分別為全局變量:xjl(1),xjl(2)l 2個(gè)命令按鈕 command1( 追加)、command2(結(jié)束) 4事件過程procedure loadselect lbset order to lbhpublic xjl(2)xjl=set delete on &設(shè)置邏輯刪除有效endprocl
23、 command1.click 過程xjl(2)=allt(xjl(2)if len(xjl(2)=0 =messagebox(類別名不能空!,0,錯(cuò)誤) thisform.text2.setfocus else insert into lb from array xjl xjl= thisform.text1.setfocus endif thisform.refreshl command2.click 過程thisform.release &從內(nèi)存中釋放表單集或表單五、課程設(shè)置表單功能:為基本表 kc.dbf 追加記錄數(shù)據(jù)環(huán)境:xb.dbf kc.dbf界面設(shè)計(jì):procedure loa
24、dpublic xjl(3)scatter to xjl blankendproc主要控件1、組合框:combo1步驟:新建組合框-右擊鼠標(biāo)-生成器-選定字段-選定值主要屬性boundcolumn = 2rowsourcetype = 6rowsource = xb.xm,xhcontrolsource = xb.xhfirstelement = 1name = combo12、表格:grdkc設(shè)計(jì)步驟:從數(shù)據(jù)環(huán)境中將表kc拖入表單-生成器-選定字段-選定值主要屬性如下:columncount = 3childorder = xblinkmaster = xbrecordsource = kc
25、recordsourcetype = 1relationalexpr = xhname = grdkccolumn1.controlsource = kc.khcolumn1.name = column1column2.controlsource = kc.kmcolumn2.name = column23、文本框:text1controlsource = xjl(1)name = kh4、文本框:text2controlsource = xjl(2)name = km5、 命令按鈕command1.fontname = 楷體_gb2312command1.fontsize = 10comma
26、nd1.caption = 追加command1.forecolor = 255,0,0command1.name = command1command2.fontname = 楷體_gb2312command2.fontsize = 10command2.caption = 結(jié)束command2.forecolor = 255,0,0command2.name = command2procedure command1.clickselect * from kc; where kh =xjl(1); into cursor ssif _tally=0 &判斷查到記錄的數(shù)量insert into
27、kc values(xjl(1),xjl(2),xb.xh)scatter to xjl blankelse =messagebox(代號重復(fù),0,錯(cuò)誤) &對話框 xjl(1)= thisform.kh.setfocus &設(shè)置焦點(diǎn)即光標(biāo)位置 thisform.refresh &重畫表單或控件,并刷新所有值endif endifthisform.refreshendprocprocedure command2.clickthisform.releaseendproc六、學(xué)生個(gè)人信息追加表單一、功能:向 xs.dfb 表中追加記錄,界面如下:二、數(shù)據(jù)環(huán)境5個(gè)基本表:xb.dbf、zy.dbf、
28、lb.dbf、bj.dbf、xs.dbf三、主要對象的屬性及事件過程1、表單的init(創(chuàng)建表單時(shí)發(fā)生)事件過程:procedure initselect xsset order to xh &設(shè)置主索引*建立臨時(shí)表:lsbcreat cursor lsb(xh c(7),xm c(8),xb c(2),mz c(2),rxcj n(5,2),zzmm c(4),hf l,csrq d,; jg c(20),bj c(7),grjl m,jtcy m,zp g)append blankreplace mz with 漢,xb with 男 &為表中當(dāng)前記錄的字段賦值endproc2、四個(gè)組合框
29、combo1、combo2、combo3、combo4:分別用來確定所錄入的學(xué)生信息所在的系部、專業(yè)、類別和編輯。主要屬性:l 系部:combo1屬性:columncount = 0columnwidths = rowsourcetype = 6rowsource = xb.xmfirstelement = 1height = 25left = 73numberofelements = 0tabindex = 1top = 25width = 85name = combo1l 專業(yè):combo2屬性:coundcolumn = 2columncount = 2rowsourcetype = 3
30、rowsource = select zym,zyh from zy into cursor aa where xb=xb.xhheight = 25left = 222tabindex = 2top = 25width = 85name = combo2l 類別:combo3屬性:rowsourcetype = 6rowsource = lb.lbmheight = 24left = 371tabindex = 3top = 25width = 96name = combo3l 班級:combo4屬性:sourcetype = 3rowsource = select bm from bj i
31、nto cursor b where lb=lb.lbh and zy=aa.zyhcontrolsource = lsb.bjheight = 25left = 540tabindex = 4top = 25width = 72name = combo4事件過程:procedure interactivechange thisform.pageframe1.page1.txtxh.setfocusendproc3、頁表:pageframe1頁表為容器類對象,一個(gè)頁表可以包含多頁,由屬性pagecount設(shè)置頁表中的頁數(shù),每一頁中又可放置各種對象。該表單中的頁表pageframe1中有3頁,第
32、一頁中主要是學(xué)生的基本信息,第二頁中為學(xué)生的個(gè)人簡歷,第三頁中為學(xué)生的具體情況,其中控件分別與臨時(shí)表 lsb中的字段(處 性別字段:xb)綁定。主要屬性:pagecount = 3name = pageframe1page1.fontbold = .t.page1.fontname = 新宋體page1.fontsize = 12page1.caption = 基本信息page1.forecolor = 255,0,0page1.name = page1page2.fontbold = .t.page2.fontname = 新宋體page2.fontsize = 12page2.captio
33、n = 個(gè)人簡歷page2.forecolor = 255,0,0page2.name = page2page3.fontbold = .t.page3.fontname = 新宋體page3.fontsize = 12page3.caption = 家庭成員page3.forecolor = 255,0,0page3.name = page3事件過程:rocedure page1.click thisform.pageframe1.page1.txtxh.setfocusendprocprocedure page2.clickthisform.pageframe1.page2.edtjl.s
34、etfocus endprocprocedure page3.clickthisform.pageframe1.page3.edtjtcy.setfocus endproc頁框中的控件:1) 文本框:txtxh的事件過程:procedure lostfocuszpwjm=zp+allt(lsb.xh)+.jpg if file(zpwjm) append gener zp from &zpwjm else zpwjm=zp+allt(lsb.xh)+.bmp if file(zpwjm) append gener zp from &zpwjm else zpwjm=zp+allt(lsb.xh
35、)+.gif if file(zpwjm) append gener zp from &zpwjm endif endif endifendproc2) 單選按鈕組:option1屬性:buttoncount = 2value = 1name = optxboption1.fontbold = .t.option1.caption = 男option1.value = 1option1.name = option1option2.fontbold = .t.option2.caption = 女option2.name = option2事件過程:procedure clickif thisf
36、orm.pageframe1.page1.optxb.value=2 replace xb with 女endif endproc3) 組合框政治面貌:combo2其數(shù)據(jù)源為:“值”rowsourcetype = 1rowsource = 黨員,團(tuán)員,群眾controlsource = lsb.zzmmname = combo24、兩個(gè)命令按鈕command1:屬性:caption = 追 加tabindex = 10forecolor = 255,0,0name = command1事件過程:procedure clickif !empty(lsb.xh)select xsseek lsb.
37、xhif eof() m_bj=lsb.bj insert into xs values(lsb.xh ,lsb.xm ,lsb.xb,lsb.mz,lsb.rxcj,lsb.zzmm ,lsb.hf ,lsb.csrq,lsb.jg ,lsb.bj,lsb.grjl,lsb.jtcy,lsb.zp) creat cursor lsb(xh c(7),xm c(8),xb c(2),mz c(2),rxcj n(5,2),zzmm c(4),hf l,csrq d,jg c(20),bj c(7),grjl m,jtcy m,zp g) append blank replace mz with
38、 漢,xb with 男,bj with m_bjelse =messagebox(學(xué)號重復(fù)!,0,錯(cuò)誤)endif thisform.pageframe1.page1.txtxh.setfocus thisform.refresh endif thisform.pageframe1.page1.txtxh.setfocus endproccommand2屬性:caption = 結(jié) 束forecolor = 255,0,0name = command2事件過程:procedure clickthisform.release endproc七、應(yīng)用實(shí)例:學(xué)生成績表單設(shè)計(jì)表單文件名: cjsz.
39、scx功能:為數(shù)據(jù)庫表cj.dbc 追加數(shù)據(jù)界面:設(shè)計(jì)步驟:1新建表單2添加數(shù)據(jù)環(huán)境:數(shù)據(jù)庫表cj.dbc3界面設(shè)計(jì):l 4個(gè)標(biāo)簽:字體、字號、背景色、對齊方式l 1個(gè)表格:數(shù)據(jù)源數(shù)據(jù)庫表cj.dbcl 3個(gè)文本框:主要屬性name分別 : txtxh, txtkh, txtcjcontrolsource:分別為全局變量:xjl(1),xjl(2),xjl(3)l 2個(gè)命令按鈕 command1( 追加)、command2(結(jié)束)4事件過程l form1.load 過程select cj &選擇當(dāng)前工作區(qū)set order to xh &設(shè)置主索引public xjl(3),m_xg &定義全
40、局變量,默認(rèn)值為邏輯假xjl= & 為數(shù)組元素賦初值,字符型set delete on &設(shè)置邏輯刪除有效l command1.click 過程xjl(2)=allt(xjl(2)if len(xjl(2)=0 =messagebox(系部名不能空!,0,錯(cuò)誤) thisform.txtkh.setfocuselse insert into cj from array xjl &向表中追加插入數(shù)據(jù) xjl= thisform.txtxh.setfocusendif thisform.refreshl command2.click 過程thisform.release &從內(nèi)存中釋放表單集或表單
41、八、成績錄入表單功能:向基本表cj.dbf中追加記錄,界面如下:要求:按班級錄入單科成績,選擇班級和課程后,由程序向成績表(cj.dbf)中插入所選班級所有學(xué)生的學(xué)號與所選課程課號兩個(gè)字段,成績字段由鍵盤輸入,界面要顯示學(xué)號和姓名,并且可以打印成績報(bào)表。設(shè)計(jì)思路:1、 建立一個(gè)視圖,包括班級、學(xué)號、姓名、課號、課名、成績,通過視圖向成績表(cj.dbf)中追加數(shù)據(jù)。2、 當(dāng)用戶選定“班級”和“課程”后,即可獲得“bj”和“kh”兩個(gè)字段的值,通過“bj”字段的值即可到“xs”表中查得該班級的所有學(xué)生的學(xué)號(xh),再通過selectsql語句得到所有的所有該班級每個(gè)學(xué)生的學(xué)號(xh)分別與所選
42、課號(kh)的組合,而后通過視圖插入成績(cj)表中。3、 由于視圖打開時(shí)通過查詢將物理表中的數(shù)據(jù)放在內(nèi)存中了,在視圖打開期間對物理表進(jìn)行的更新的結(jié)果是不會在視圖中表現(xiàn)的,只有重新打開視圖時(shí)才能表現(xiàn)出來。為此,該功能模塊用兩個(gè)表單來完成,在第一個(gè)表單(cjlr)的“成績錄入”命令按鈕的click事件中,完成xh、kh插入操作后將視圖bj_cj 關(guān)閉,通過調(diào)用下一個(gè)表單(cjlr2)重新打開bj_cj視圖。在子表單cjlr2中用一個(gè)表格控件完成顯示已追加的學(xué)號和課號兩列數(shù)據(jù)成績列數(shù)據(jù)由鍵盤輸入,放置一個(gè)“打印”按鈕,在其click事件過程中調(diào)用報(bào)表(dkcjbb.frt)完成報(bào)表輸出。4、 以上
43、兩個(gè)表單采用了主叢關(guān)系(多文檔界面),cjlr2表單屬于cjlr的子表單。5、 由于視圖bj_cj中的數(shù)據(jù)是所以學(xué)生所以課程的成績,但在錄入成績時(shí)是按班級錄入某一門課程的成績,這就需對視圖中的數(shù)據(jù)進(jìn)行篩選,為此在表單cjlr2的init事件過程中按班級和課號設(shè)置一個(gè)過濾器。語句格式為: set filter to 6、 為了給報(bào)表傳遞“主考教師”和“考試日期”在主表單中定義兩個(gè)全局內(nèi)存變量m_zkjs,m_ksrq,其值通過文本框由用戶輸入。主要設(shè)計(jì)步驟:1. 建立視圖:bj_cj生成視圖的查詢語句如下:select cj.xh, cj.kh, xs.xm, kc.km, cj.cj, xs.
44、bj; from xjgl!xs inner join xjgl!cj; inner join xjgl!kc ; on kc.kh = cj.kh ; on xs.xh = cj.xh; order by xs.bj, cj.kh, cj.xh2. cjlr表單設(shè)計(jì)界面如下:1) 數(shù)據(jù)環(huán)境:基本表:xb、zy、lb、bj、kc 視圖:bj_cj2) 表單的事件 (init) 過程:procedure initpublic m_zkjs, m_ksrqm_zkjs =m_ksrq =date()endproc3) 主要控件的屬性及時(shí)間過程:l 系部選擇組合框(combo1)屬性:columnc
45、ount = 0rowsourcetype = 6rowsource = xb.xm,xhtabindex = 1name = combo1l 專業(yè)選擇組合框(combo2)屬性:coundcolumn = 2columncount = 2rowsourcetype = 3rowsource = select zym,zyh from zy into cursor aa where xb=xb.xhtabindex = 2name = combo2l 類別選擇組合框(combo3)屬性:rowsourcetype = 6rowsource = lb.lbmtabindex = 3name =
46、combo3l 班級選擇組合框(combo4)屬性:rowsourcetype = 3rowsource = select bm from bj into cursor bb where lb=lb.lbh and zy=aa.zyhcontrolsource = tabindex = 4name = combo4l 課程選擇組合框(combo5)屬性:coundcolumn = 2columncount = 2rowsourcetype = 3rowsource = select km,kh from kc into cursor cc where xb=xb.xh &按系部選擇課程name
47、 = combo5l 主考教師文本框(text1)controlsource = m_zkjsname = text1l 考試日期文本框(text1)controlsource = m_ksrqname = text2l 成績錄入按鈕(command1)的click事件中過程procedure clickselect * from bj_cj into cursor lsb where kh=cc.kh and bj=bb.bmif _tally=0 begin transaction &事件開始 on error rollback &事務(wù)回滾 select xh,kh from xs,kc
48、into array aa where bj=bb.bm and kh=cc.kh if _tally0 insert into bj_cj from array aa else =messagebox(沒有該班級的學(xué)生信息!,0,錯(cuò)誤) endif end transaction &事件結(jié)束 endif bo4.enabled=.f.bo5.enabled=.f.mand2.enabled=.t.mand1.enabled=.f.if used(bj_cj) &如果視圖bj_cj處于打開狀態(tài) select bj_cj &選擇“bj_cj”為當(dāng)前工作區(qū) use &關(guān)閉視圖:bj_cjendif
49、 do form cjlr2 & 調(diào)用表單“cjlr2”endproc3. cjlr2表單設(shè)計(jì)設(shè)計(jì)界面如下(只有一個(gè)表格對象):l 表單主要屬性:showwindow = 1 &窗口顯示在頂層窗口中borderstyle = 2 &窗體的邊框樣式為固定對話框desktop = .f. &表單不包含在vfp主窗口中l(wèi) 數(shù)據(jù)環(huán)境:視圖bj_cjl 事件過程:procedure init set filter to bj=bb.bm and kh=cc.kh &設(shè)置過濾器 go top &移動(dòng)記錄指針到第一條記錄endprocl 表格對象:grdbj_cj主要屬性:columncount = 3re
50、cordsource = bj_cjrecordsourcetype = 1gridlines = 3 &表格控件顯示垂直滾動(dòng)條l 打印按鈕:command1事件過程:procedure clickthisform.width=650thisform.height=1000thisform.left=50report form dkcjbbendproc4. 報(bào)表設(shè)計(jì):l 數(shù)據(jù)環(huán)境:xsxx視圖l 頁面大?。篴4l 設(shè)計(jì)界面:l 打印效果:九、按班級查詢成績功能:所查信息包括學(xué)生的所有個(gè)人信息及所修課程的成績,并能打印輸出。界面如下:1. 打印功能由兩個(gè)報(bào)表來完成,“打印”命令按鈕完成學(xué)生個(gè)人情
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中控員轉(zhuǎn)正申請書
- 特困戶申請書范文100
- 最標(biāo)準(zhǔn)的鄉(xiāng)醫(yī)申請書
- 緩交訴訟費(fèi)申請書
- 知產(chǎn)保護(hù)與企業(yè)社會責(zé)任的融合實(shí)踐
- 2025年度桶裝水智能調(diào)配與物流管理服務(wù)合同
- 二零二五年度貨運(yùn)駕駛員安全培訓(xùn)與聘用協(xié)議4篇
- 2025年度文化旅游合資成立合同范本
- 股權(quán)變更的申請書
- 好好說話-言語交際與人際溝通知到智慧樹章節(jié)測試課后答案2024年秋陜西工商職業(yè)學(xué)院
- 后印象派繪畫
- pcs-9611d-x說明書國內(nèi)中文標(biāo)準(zhǔn)版
- GB/T 1634.1-2004塑料負(fù)荷變形溫度的測定第1部分:通用試驗(yàn)方法
- 數(shù)據(jù)結(jié)構(gòu)英文教學(xué)課件:chapter4 Stacks and Queues
- 無人機(jī)航拍技術(shù)理論考核試題題庫及答案
- T∕CMATB 9002-2021 兒童肉類制品通用要求
- 工序勞務(wù)分包管理課件
- 暖通空調(diào)(陸亞俊編)課件
- 工藝評審報(bào)告
- 自動(dòng)化腹膜透析(APD)的臨床應(yīng)用課件
- 中國滑雪運(yùn)動(dòng)安全規(guī)范
評論
0/150
提交評論