




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、信 息 工 程 系課程設(shè)計(jì)報(bào)告課程名稱(chēng): 數(shù)據(jù)庫(kù)原理及vfp 設(shè)計(jì)課題: 學(xué)籍管理系統(tǒng) 班 級(jí): 07計(jì)應(yīng)大專(zhuān) 姓 名: 指導(dǎo)教師: 設(shè)計(jì)時(shí)間: 2009.6.17 課程設(shè)計(jì)任務(wù)書(shū)專(zhuān)業(yè): 計(jì)算機(jī)應(yīng)用 班級(jí): 07計(jì)應(yīng)大專(zhuān) 設(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é)生有大專(zhuān)、中專(zhuān)等不同的層次,各個(gè)層次由設(shè)多個(gè)專(zhuān)業(yè),每個(gè)專(zhuān)業(yè)開(kāi)多門(mén)課程,每個(gè)專(zhuān)業(yè)有多個(gè)班級(jí),每個(gè)班有多名學(xué)生。二、 功能要求:1 系部、專(zhuān)業(yè)、學(xué)生層次、課程、班級(jí)、學(xué)生等信息的錄入。2 每學(xué)期學(xué)生成績(jī)錄入并打印輸出。3
2、 按學(xué)號(hào)和姓名查詢(xún)學(xué)生的個(gè)人情況并打印輸出。4 按學(xué)號(hào)和姓名查詢(xún)學(xué)生的個(gè)人成績(jī),并打印輸出。5 按班級(jí)查詢(xún)各門(mén)課程全班同學(xué)的成績(jī),并打印輸出。6 登錄界面、菜單。課程設(shè)計(jì)報(bào)告內(nèi)容要求內(nèi)容:1. 需求分析。2. 數(shù)據(jù)庫(kù)設(shè)計(jì)1) 概念模型2) 數(shù)據(jù)庫(kù)模型(基本表、視圖表)3) 程序設(shè)計(jì)4) 包括過(guò)程、表單、菜單、報(bào)表等要求:主要敘述各功能模塊的設(shè)計(jì)思路 用a4紙張,小四號(hào)宋體排版指導(dǎo)教師評(píng)語(yǔ)課程設(shè)計(jì)成績(jī)指導(dǎo)教師簽字 年 月 日目 錄需求分析及數(shù)據(jù)庫(kù)設(shè)計(jì)1系部設(shè)置3專(zhuān)業(yè)設(shè)置7班級(jí)設(shè)置10類(lèi)別設(shè)置14課程設(shè)置16學(xué)生個(gè)人信息19學(xué)生成績(jī)表單24成績(jī)錄入表單26按班級(jí)查詢(xún)成績(jī)33學(xué)生個(gè)人信息查詢(xún)36登錄
3、界面44主菜單46信息工程系計(jì)算機(jī)應(yīng)用技術(shù)20721班數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告題目:學(xué)籍管理系統(tǒng)要求:a. 需求分析 一個(gè)學(xué)校有多個(gè)系部,培養(yǎng)學(xué)生有打?qū)?、中?zhuān)等不同的層次,各個(gè)層次由設(shè)多個(gè)專(zhuān)業(yè),每個(gè)專(zhuān)業(yè)開(kāi)多門(mén)課程,每個(gè)專(zhuān)業(yè)有多個(gè)班級(jí),每個(gè)班有多名學(xué)生。 數(shù)據(jù)庫(kù)設(shè)計(jì)器圖如下:項(xiàng)目管理器如圖所示:b. 數(shù)據(jù)庫(kù)設(shè)計(jì) 概念模型a) 對(duì)象系部(系號(hào),系名,主任)專(zhuān)業(yè)(專(zhuān)業(yè)號(hào),專(zhuān)業(yè)名)類(lèi)別(類(lèi)別號(hào),類(lèi)別名)課程(課程號(hào),課程名)班級(jí)(班級(jí)名,入學(xué)年份)學(xué)生(學(xué)號(hào),姓名,性別,年齡,出生日期,入學(xué)成績(jī),籍貫,家庭成員,民族,政治面貌,個(gè)人簡(jiǎn)歷,婚否,照片)(2)er圖含有類(lèi)別課程學(xué)生1n1nnn1nn設(shè)有設(shè)有成績(jī)
4、績(jī)績(jī) 選修專(zhuān)業(yè)班級(jí) 設(shè)有包含系部b) 關(guān)系模型系部(系號(hào),系名,主任)專(zhuān)業(yè)(專(zhuān)業(yè)號(hào),專(zhuān)業(yè)名,系部)類(lèi)別(類(lèi)加號(hào),類(lèi)別名,專(zhuān)業(yè))課程(課程號(hào),課程名,專(zhuān)業(yè))班級(jí)(班名,專(zhuān)業(yè),入學(xué)年份)學(xué)生(學(xué)號(hào),姓名,年齡,民族,性別,出生日期,入學(xué)成績(jī),籍貫,家庭成員,政治面貌,個(gè)人簡(jiǎn)歷,婚否,照片,班級(jí))選修(課程,學(xué)號(hào),成績(jī))c、程序設(shè)計(jì)一、應(yīng)用實(shí)例:“系部設(shè)置”表單設(shè)計(jì)表單文件名: xbsz.scx功能:為數(shù)據(jù)庫(kù)表xb.dbc 追加數(shù)據(jù)界面:設(shè)計(jì)步驟:1、 新建表單2、 添加數(shù)據(jù)環(huán)境:數(shù)據(jù)庫(kù)表xb.dbc3、 界面設(shè)計(jì):l 4個(gè)標(biāo)簽:字體、字號(hào)、背景色、對(duì)齊方式l 1個(gè)表格:數(shù)據(jù)源數(shù)據(jù)庫(kù)表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、 事件過(guò)程l form1.load 過(guò)程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過(guò)程if m_xg=.f. &判斷是否修改操作xjl(1)=allt(xjl(1) &去掉字符數(shù)據(jù)的左右空格seek xjl(1) &索引查詢(xún)if !eof()=messagebox(代號(hào)重復(fù),0,錯(cuò)誤) &對(duì)話(huà)框 xjl(1)=thisform.txtxh.setfocus &設(shè)置焦點(diǎn)即光標(biāo)位置thisform.refresh &重畫(huà)表單或控件,并刷新所有值endifendifl command1.click 過(guò)程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 過(guò)程thisform.release &從內(nèi)存中釋放表單集或表單l command3.click 過(guò)程 m_xh=xh &記錄當(dāng)前記錄的主碼值delete from xb where xh=m_xh &刪除記錄thisform.refreshl command4.click 過(guò)程m_xg=.t. &修改標(biāo)志thisform.grdxb.enabled=.f. &表
8、格不可操作,為不讓用戶(hù)改變當(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 過(guò)程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二、專(zhuān)業(yè)設(shè)置表單功能:為基本表 zy.dbf 追加記錄設(shè)計(jì)思路:該表單的重點(diǎn)是如何保證兩表的參照完整性?!眤y”表中的外碼“xb”讓用戶(hù)在已有的(“xb”表)值中進(jìn)行選擇,不要從鍵盤(pán)輸入。為此采用一個(gè)組合框來(lái)實(shí)現(xiàn)。另外用組合框和表格實(shí)現(xiàn)1:n聯(lián)系的兩表中數(shù)據(jù)的
10、關(guān)聯(lián),來(lái)顯示各系部已有的專(zhuā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(代號(hào)重復(fù),0,錯(cuò)誤) &對(duì)話(huà)框 xjl(1)= thisform.text1.setfocus &設(shè)置焦點(diǎn)即光標(biāo)位置
14、 thisform.refresh &重畫(huà)表單或控件,并刷新所有值endifthisform.refreshendprocprocedure command2.clickrelease thisformendproc三、視圖應(yīng)用實(shí)例:班級(jí)設(shè)置表單:功能:向基本表bj中追加記錄界面設(shè)計(jì):數(shù)據(jù)環(huán)境:xb,zy,lb3個(gè)基本表和 bj_zy 視圖,重點(diǎn):通過(guò)視圖向基本表中追加記錄,另外是專(zhuān)業(yè)名稱(chēng)在組合框中所列內(nèi)容要隨系部而變,已有班級(jí)在表格中顯示時(shí)也要隨專(zhuān)業(yè)和學(xué)生類(lèi)別而變,為此將以上組合框和表格的數(shù)據(jù)源都設(shè)置成sqlselect語(yǔ)句視圖bj_zy定義的select語(yǔ)句如下: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更新字段和更新條件如下圖所示:主要控件的屬性及事件過(guò)程如下: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事件過(guò)程“procedure interactivechangethisform.grdbj.refreshendproc組合框(專(zhuān)業(yè)名稱(chēng)):combo2主要屬性:boundcolumn = 2columncount = 2rowsourcetype = 3 & sql語(yǔ)句rowsource = select zym,zyh from zy where xb=xb.xh into cursor aacontrolsource = name = combo2事件過(guò)程: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é)生類(lèi)別):combo3主要屬性:boundcolumn = 2columncount = 2rowsourcetype = 6rowsource = lb.lbm,lbhcontrolsource = name = combo3事件過(guò)程: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事件過(guò)程: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(班級(jí)名稱(chēng)重復(fù),0,錯(cuò)誤) m_bm= thisform.text1.setfocus thisform.refresh endifthisform.refreshendifthisform.refreshendprocprocedure command2.clickrelease thisformend
22、proc四、類(lèi)別設(shè)置表單表單文件名:lbsz.scx功能:為數(shù)據(jù)庫(kù)存表lb.dbc追加數(shù)據(jù)界面: 設(shè)計(jì)步驟:1新建表單2添加數(shù)據(jù)環(huán)境:數(shù)據(jù)庫(kù)表lb.dbc3界面設(shè)計(jì):l 3個(gè)標(biāo)簽:字體、字號(hào)、背景色、對(duì)齊方式l 1個(gè)表格:數(shù)據(jù)源數(shù)據(jù)庫(kù)表lb.dbcl 3個(gè)文本框:主要屬性 controlsource:分別為全局變量:xjl(1),xjl(2)l 2個(gè)命令按鈕 command1( 追加)、command2(結(jié)束) 4事件過(guò)程procedure loadselect lbset order to lbhpublic xjl(2)xjl=set delete on &設(shè)置邏輯刪除有效endprocl
23、 command1.click 過(guò)程xjl(2)=allt(xjl(2)if len(xjl(2)=0 =messagebox(類(lèi)別名不能空!,0,錯(cuò)誤) thisform.text2.setfocus else insert into lb from array xjl xjl= thisform.text1.setfocus endif thisform.refreshl command2.click 過(guò)程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(代號(hào)重復(fù),0,錯(cuò)誤) &對(duì)話(huà)框 xjl(1)= thisform.kh.setfocus &設(shè)置焦點(diǎn)即光標(biāo)位置 thisform.refresh &重畫(huà)表單或控件,并刷新所有值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三、主要對(duì)象的屬性及事件過(guò)程1、表單的init(創(chuàng)建表單時(shí)發(fā)生)事件過(guò)程: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:分別用來(lái)確定所錄入的學(xué)生信息所在的系部、專(zhuān)業(yè)、類(lèi)別和編輯。主要屬性:l 系部:combo1屬性:columncount = 0columnwidths = rowsourcetype = 6rowsource = xb.xmfirstelement = 1height = 25left = 73numberofelements = 0tabindex = 1top = 25width = 85name = combo1l 專(zhuān)業(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 類(lèi)別:combo3屬性:rowsourcetype = 6rowsource = lb.lbmheight = 24left = 371tabindex = 3top = 25width = 96name = combo3l 班級(jí):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事件過(guò)程:procedure interactivechange thisform.pageframe1.page1.txtxh.setfocusendproc3、頁(yè)表:pageframe1頁(yè)表為容器類(lèi)對(duì)象,一個(gè)頁(yè)表可以包含多頁(yè),由屬性pagecount設(shè)置頁(yè)表中的頁(yè)數(shù),每一頁(yè)中又可放置各種對(duì)象。該表單中的頁(yè)表pageframe1中有3頁(yè),第
32、一頁(yè)中主要是學(xué)生的基本信息,第二頁(yè)中為學(xué)生的個(gè)人簡(jiǎn)歷,第三頁(yè)中為學(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è)人簡(jiǎn)歷page2.forecolor = 255,0,0page2.name = page2page3.fontbold = .t.page3.fontname = 新宋體page3.fontsize = 12page3.caption = 家庭成員page3.forecolor = 255,0,0page3.name = page3事件過(guò)程:rocedure page1.click thisform.pageframe1.page1.txtxh.setfocusendprocprocedure page2.clickthisform.pageframe1.page2.edtjl.s
34、etfocus endprocprocedure page3.clickthisform.pageframe1.page3.edtjtcy.setfocus endproc頁(yè)框中的控件:1) 文本框:txtxh的事件過(guò)程: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事件過(guò)程: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事件過(guò)程: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é)號(hào)重復(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事件過(guò)程:procedure clickthisform.release endproc七、應(yīng)用實(shí)例:學(xué)生成績(jī)表單設(shè)計(jì)表單文件名: cjsz.
39、scx功能:為數(shù)據(jù)庫(kù)表cj.dbc 追加數(shù)據(jù)界面:設(shè)計(jì)步驟:1新建表單2添加數(shù)據(jù)環(huán)境:數(shù)據(jù)庫(kù)表cj.dbc3界面設(shè)計(jì):l 4個(gè)標(biāo)簽:字體、字號(hào)、背景色、對(duì)齊方式l 1個(gè)表格:數(shù)據(jù)源數(shù)據(jù)庫(kù)表cj.dbcl 3個(gè)文本框:主要屬性name分別 : txtxh, txtkh, txtcjcontrolsource:分別為全局變量:xjl(1),xjl(2),xjl(3)l 2個(gè)命令按鈕 command1( 追加)、command2(結(jié)束)4事件過(guò)程l form1.load 過(guò)程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 過(guò)程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 過(guò)程thisform.release &從內(nèi)存中釋放表單集或表單
41、八、成績(jī)錄入表單功能:向基本表cj.dbf中追加記錄,界面如下:要求:按班級(jí)錄入單科成績(jī),選擇班級(jí)和課程后,由程序向成績(jī)表(cj.dbf)中插入所選班級(jí)所有學(xué)生的學(xué)號(hào)與所選課程課號(hào)兩個(gè)字段,成績(jī)字段由鍵盤(pán)輸入,界面要顯示學(xué)號(hào)和姓名,并且可以打印成績(jī)報(bào)表。設(shè)計(jì)思路:1、 建立一個(gè)視圖,包括班級(jí)、學(xué)號(hào)、姓名、課號(hào)、課名、成績(jī),通過(guò)視圖向成績(jī)表(cj.dbf)中追加數(shù)據(jù)。2、 當(dāng)用戶(hù)選定“班級(jí)”和“課程”后,即可獲得“bj”和“kh”兩個(gè)字段的值,通過(guò)“bj”字段的值即可到“xs”表中查得該班級(jí)的所有學(xué)生的學(xué)號(hào)(xh),再通過(guò)selectsql語(yǔ)句得到所有的所有該班級(jí)每個(gè)學(xué)生的學(xué)號(hào)(xh)分別與所選
42、課號(hào)(kh)的組合,而后通過(guò)視圖插入成績(jī)(cj)表中。3、 由于視圖打開(kāi)時(shí)通過(guò)查詢(xún)將物理表中的數(shù)據(jù)放在內(nèi)存中了,在視圖打開(kāi)期間對(duì)物理表進(jìn)行的更新的結(jié)果是不會(huì)在視圖中表現(xiàn)的,只有重新打開(kāi)視圖時(shí)才能表現(xiàn)出來(lái)。為此,該功能模塊用兩個(gè)表單來(lái)完成,在第一個(gè)表單(cjlr)的“成績(jī)錄入”命令按鈕的click事件中,完成xh、kh插入操作后將視圖bj_cj 關(guān)閉,通過(guò)調(diào)用下一個(gè)表單(cjlr2)重新打開(kāi)bj_cj視圖。在子表單cjlr2中用一個(gè)表格控件完成顯示已追加的學(xué)號(hào)和課號(hào)兩列數(shù)據(jù)成績(jī)列數(shù)據(jù)由鍵盤(pán)輸入,放置一個(gè)“打印”按鈕,在其click事件過(guò)程中調(diào)用報(bào)表(dkcjbb.frt)完成報(bào)表輸出。4、 以上
43、兩個(gè)表單采用了主叢關(guān)系(多文檔界面),cjlr2表單屬于cjlr的子表單。5、 由于視圖bj_cj中的數(shù)據(jù)是所以學(xué)生所以課程的成績(jī),但在錄入成績(jī)時(shí)是按班級(jí)錄入某一門(mén)課程的成績(jī),這就需對(duì)視圖中的數(shù)據(jù)進(jìn)行篩選,為此在表單cjlr2的init事件過(guò)程中按班級(jí)和課號(hào)設(shè)置一個(gè)過(guò)濾器。語(yǔ)句格式為: set filter to 6、 為了給報(bào)表傳遞“主考教師”和“考試日期”在主表單中定義兩個(gè)全局內(nèi)存變量m_zkjs,m_ksrq,其值通過(guò)文本框由用戶(hù)輸入。主要設(shè)計(jì)步驟:1. 建立視圖:bj_cj生成視圖的查詢(xún)語(yǔ)句如下: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) 過(guò)程:procedure initpublic m_zkjs, m_ksrqm_zkjs =m_ksrq =date()endproc3) 主要控件的屬性及時(shí)間過(guò)程:l 系部選擇組合框(combo1)屬性:columnc
45、ount = 0rowsourcetype = 6rowsource = xb.xm,xhtabindex = 1name = combo1l 專(zhuān)業(yè)選擇組合框(combo2)屬性:coundcolumn = 2columncount = 2rowsourcetype = 3rowsource = select zym,zyh from zy into cursor aa where xb=xb.xhtabindex = 2name = combo2l 類(lèi)別選擇組合框(combo3)屬性:rowsourcetype = 6rowsource = lb.lbmtabindex = 3name =
46、combo3l 班級(jí)選擇組合框(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 成績(jī)錄入按鈕(command1)的click事件中過(guò)程procedure clickselect * from bj_cj into cursor lsb where kh=cc.kh and bj=bb.bmif _tally=0 begin transaction &事件開(kāi)始 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(沒(méi)有該班級(jí)的學(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處于打開(kāi)狀態(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è)表格對(duì)象):l 表單主要屬性:showwindow = 1 &窗口顯示在頂層窗口中borderstyle = 2 &窗體的邊框樣式為固定對(duì)話(huà)框desktop = .f. &表單不包含在vfp主窗口中l(wèi) 數(shù)據(jù)環(huán)境:視圖bj_cjl 事件過(guò)程:procedure init set filter to bj=bb.bm and kh=cc.kh &設(shè)置過(guò)濾器 go top &移動(dòng)記錄指針到第一條記錄endprocl 表格對(duì)象:grdbj_cj主要屬性:columncount = 3re
50、cordsource = bj_cjrecordsourcetype = 1gridlines = 3 &表格控件顯示垂直滾動(dòng)條l 打印按鈕:command1事件過(guò)程:procedure clickthisform.width=650thisform.height=1000thisform.left=50report form dkcjbbendproc4. 報(bào)表設(shè)計(jì):l 數(shù)據(jù)環(huán)境:xsxx視圖l 頁(yè)面大?。篴4l 設(shè)計(jì)界面:l 打印效果:九、按班級(jí)查詢(xún)成績(jī)功能:所查信息包括學(xué)生的所有個(gè)人信息及所修課程的成績(jī),并能打印輸出。界面如下:1. 打印功能由兩個(gè)報(bào)表來(lái)完成,“打印”命令按鈕完成學(xué)生個(gè)人情
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 多媒體應(yīng)用設(shè)計(jì)師職業(yè)生涯規(guī)劃試題及答案
- 中級(jí)社會(huì)工作者考試的綜合素養(yǎng)培養(yǎng)途徑及試題及答案
- 多媒體應(yīng)用設(shè)計(jì)師考試的多機(jī)制試題及答案
- 患者用藥后觀察與處置試題及答案
- 2025藥店專(zhuān)柜租賃合同
- 系統(tǒng)集成項(xiàng)目管理中的費(fèi)用控制技巧試題及答案
- 追尋夢(mèng)想的初級(jí)社會(huì)工作者考試試題及答案
- 云和社??荚囶}目及答案
- 買(mǎi)賣(mài)果園合同協(xié)議書(shū)范本
- 公益大講堂考試題及答案
- 關(guān)建過(guò)程明細(xì)表
- 《飛翔的女武神》課件
- 胎盤(pán)早剝預(yù)案演練腳本
- 中鐵項(xiàng)目XXXX年2月份經(jīng)濟(jì)活動(dòng)分析
- 老年患者術(shù)前評(píng)估中國(guó)專(zhuān)家建議
- 朗文定義詞匯表中英對(duì)照
- 2022年學(xué)??照{(diào)使用管理制度
- 抗震支架設(shè)計(jì)流程
- 塑料包裝袋購(gòu)銷(xiāo)合同
- 生產(chǎn)良率系統(tǒng)統(tǒng)計(jì)表
- 代理機(jī)構(gòu)服務(wù)質(zhì)量考核評(píng)價(jià)表
評(píng)論
0/150
提交評(píng)論