<style id="uedzd"></style>
  • <style id="uedzd"></style>
  • <dfn id="uedzd"></dfn>
  • <dfn id="uedzd"></dfn>
    1. <ruby id="uedzd"></ruby>
      <ruby id="uedzd"></ruby>
    2. 案例庫(kù)
      您當(dāng)前的位置: 首頁(yè)>案例庫(kù)

      綜合案例七
      學(xué)生成績(jī)管理系統(tǒng)

      發(fā)布時(shí)間: 2019-01-16      信息來(lái)源:       閱讀次數(shù):

      綜合案例七  學(xué)生成績(jī)管理系統(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.掌握查詢與視圖的創(chuàng)建與使用

      6.掌握程序設(shè)計(jì)的基本方法

      7.掌握表單及其表單中各種控件的設(shè)計(jì)與使用

      8.掌握菜單的創(chuàng)建和使用

      【實(shí)驗(yàn)要求】

      根據(jù)實(shí)際需要,編寫(xiě)班級(jí)學(xué)生成績(jī)管理系統(tǒng),解決傳統(tǒng)手工方式的成績(jī)管理,達(dá)到減少工作量、方便進(jìn)行成績(jī)查詢、實(shí)現(xiàn)自動(dòng)的成績(jī)統(tǒng)計(jì),提高效率的目的。

      具體如下:

      1 班級(jí)學(xué)生基本信息維護(hù):包括班級(jí)學(xué)生基本信息的錄入、修改、刪除、查詢等

      2 班級(jí)學(xué)生成績(jī)信息維護(hù):包括班級(jí)學(xué)生成績(jī)信息的錄入、修改、刪除等

      3 成績(jī)查詢:包括按學(xué)號(hào)、姓名兩種方式進(jìn)行成績(jī)查詢

      4 成績(jī)統(tǒng)計(jì):包括個(gè)人成績(jī)、課程成績(jī)、班級(jí)成績(jī)統(tǒng)計(jì)

      【系統(tǒng)功能模塊】

         本系統(tǒng)設(shè)計(jì)了一個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù),學(xué)生基本信息、學(xué)生成績(jī)信息,即能基本滿足班級(jí)成績(jī)管理的要求。系統(tǒng)主要分為五個(gè)模塊:

      (1) 學(xué)生基本信息維護(hù)模塊:在此模塊中,班級(jí)成績(jī)管理員可以對(duì)學(xué)生基本信息如學(xué)號(hào)、姓名、性別等進(jìn)行維護(hù),可以新增、修改、刪除或查詢學(xué)生基本信息。

      (2) 成績(jī)錄入模塊:在此模塊中,班級(jí)成績(jī)管理員可以進(jìn)行班級(jí)學(xué)生成績(jī)的錄入。

      (3) 成績(jī)查詢模塊:每個(gè)學(xué)生可以在此模塊中通過(guò)學(xué)號(hào)或姓名來(lái)進(jìn)行個(gè)人成績(jī)的查詢。

      (4) 成績(jī)修改模塊:班級(jí)成績(jī)管理員可以在此模塊中進(jìn)行學(xué)生成績(jī)的修改。

      (5) 成績(jī)刪除模塊:班級(jí)成績(jī)管理員在此模塊中刪除學(xué)生成績(jī)信息。

      (6) 成績(jī)統(tǒng)計(jì)模塊:每個(gè)學(xué)生可以在此模塊中查看個(gè)人成績(jī)、課程成績(jī)、班級(jí)成績(jī)的統(tǒng)計(jì)結(jié)果。

      /xcxxgc_jpkc/upload/images/2019/1/1610839520.jpg

      【實(shí)驗(yàn)內(nèi)容】

      1、 數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)

      按照系統(tǒng)不同的功能模塊,需要不同的表來(lái)存儲(chǔ)信息,數(shù)據(jù)庫(kù)設(shè)計(jì)如下:

      (1) 學(xué)生基本信息表STUINFO

      名稱

      字段名稱

      數(shù)據(jù)類(lèi)型

      主鍵

      非空

      學(xué)號(hào)

      XH

      Char3

      Yes

      Yes

      姓名

      XM

      Char8

      No

      Yes

      性別

      XBr

      Char2

      No

      (2) 學(xué)生成績(jī)信息表SCORE

      名稱

      字段名稱

      數(shù)據(jù)類(lèi)型

      主鍵

      非空

      學(xué)號(hào)

      XH

      Char3

      Yes

      Yes

      語(yǔ)文

      YUWEN

      Numeric3,0

      NO

      Yes

      數(shù)學(xué)

      SHUXUE

      Numeric3,0

      NO

      Yes

      英語(yǔ)

      YINGYU

      Numeric3,0

      NO

      Yes

      平均分

      PINGJUNFEN

      Numeric5,1

      NO

      一、詳細(xì)設(shè)計(jì)

      1、 主界面模塊

      /xcxxgc_jpkc/upload/images/2019/1/1610839832.jpg

       

      2 學(xué)生基本信息維護(hù)

      該模塊實(shí)現(xiàn)學(xué)生基本信息的維護(hù),包括增加、刪除、修改等維護(hù)數(shù)據(jù)的操作。由于學(xué)生的基本信息僅僅是成績(jī)管理系統(tǒng)中的輔助數(shù)據(jù),信息內(nèi)容簡(jiǎn)單,數(shù)據(jù)變動(dòng)不大,維護(hù)操作較簡(jiǎn)單,故直接使用VFP中的表單向?qū)稍摫韱?,運(yùn)行界面如下:

      /xcxxgc_jpkc/upload/images/2019/1/1610839926.jpg

      3、 成績(jī)錄入

      該模塊實(shí)現(xiàn)班級(jí)學(xué)生成績(jī)的錄入。一個(gè)學(xué)生一條成績(jī)記錄。已錄入成績(jī)的學(xué)生不能再進(jìn)行成績(jī)的錄入,只能做修改等其它操作。所以在錄入成績(jī)時(shí),只能在學(xué)號(hào)下拉框中進(jìn)行未曾錄入成績(jī)的學(xué)生學(xué)號(hào)的選擇,同時(shí)在姓名文本框中確認(rèn)是否待錄入成績(jī)的學(xué)生。確認(rèn)該生后,錄入其成績(jī)數(shù)據(jù)。運(yùn)行界面如下:

      /xcxxgc_jpkc/upload/images/2019/1/161084019.jpg

      程序代碼:

      FrmsrLoad事件代碼:

      public dimension no(100)

      for i=1 to 100

      no(i)=.f.

      endfor

      open data student

      select 1

      use stuinfo

      select 2

      use score

      select 1

      i=1

      scan

      select 2

      locate for xh=a.xh

      if not found()

       no(i)=a.xh

       i=i+1

      endif

      select 1

      endscan

      FrmsrInit事件代碼:

      thisform.combo1.clear

      i=1

      do while type('no(i)')!='L'

      thisform.combo1.additem(no(i))

      i=i+1

      enddo

      FrmsrRelease事件代碼:

      select 1

      use

      select 2

      use

      close database

      CmdokClick事件代碼:

      select 2

      append blank

      replace xh with thisform.combo1.value

      if len(alltrim(thisform.text3.value))>0

      replace yuwen with val(thisform.text3.value)

      else

      replace yuwen with 0

      endif

      if len(alltrim(thisform.text4.value))>0

      replace shuxue with val(thisform.text4.value)

      else

      replace shuxue with 0

      endif

      if len(alltrim(thisform.text5.value))>0

      replace yingyu with val(thisform.text5.value)

      else

      replace yingyu with 0

      endif

      replace pingjunfen with (yuwen+shuxue+yingyu)/3

      thisform.release

      CmdcancelClick事件代碼:

      thisform.release

      4、 成績(jī)查詢

         該模塊實(shí)現(xiàn)班級(jí)學(xué)生各門(mén)課程成績(jī)的查詢??梢园磳W(xué)號(hào)、姓名兩種方式來(lái)進(jìn)行查詢。查詢結(jié)果是不允許修改的,所有顯示查詢結(jié)果的文本框的ReadOnly屬性均為.T.。運(yùn)行界面如下:

      /xcxxgc_jpkc/upload/images/2019/1/1610840128.jpg/xcxxgc_jpkc/upload/images/2019/1/1610840175.jpg

      程序代碼:

      Frmxhcx1

      CmdokClick事件代碼:

      cxxh=alltrim(thisform.text1.value)

      open data student

      select 1

      use score

      loca for alltrim(xh)==cxxh

      if found()

       do form newcx1

       thisform.release

      else

       messagebox('沒(méi)有此學(xué)號(hào)!',0+48+0,'錯(cuò)誤')

       thisform.text1.setfocus

      endif

      CmdcancelClick事件代碼:

      thisform.release

      Frmxhcx2

      Text1Text5ControlSource屬性要修改為相應(yīng)數(shù)據(jù)表的字段名,將相應(yīng)數(shù)據(jù)與文本框綁定在一起,可以在運(yùn)行期間顯示數(shù)據(jù)的值,修改文本框的值也會(huì)反應(yīng)到數(shù)據(jù)表中。如:Text1.ControlSource=score.xh。

      Frmxhcx2Load事件代碼:

      select 2

      use stuinfo

      locate for xh=a.xh

      CmdokClick事件代碼:

      select 1

      use

      select 2

      use

      close data

      thisform.release

      /xcxxgc_jpkc/upload/images/2019/1/1610840222.jpg

      程序代碼:

      Frmxmcx1

      CmdokClick事件代碼:

      cxxm=alltrim(thisform.text1.value)

      open data student

      select 1

      use stuinfo

      loca for alltrim(xm)==cxxm

      if found()

       do form newcx2

       thisform.release

      else

       messagebox('沒(méi)有此姓名!',0+48+0,'錯(cuò)誤')

       thisform.text1.setfocus

      endif

      CmdcancelClick事件代碼:

      thisform.release

      Frmxmcx2

      Text1Text5ControlSource屬性同樣要修改為相應(yīng)數(shù)據(jù)表的字段名。

      Frmxmcx2Load事件代碼:

      select 2

      use score

      locate for xh=a.xh

      CmdokClick事件代碼:

      select 1

      use

      select 2

      use

      close data

      thisform.release

      5、 成績(jī)修改

      該模塊實(shí)現(xiàn)班級(jí)學(xué)生各門(mén)課程成績(jī)數(shù)據(jù)的修改??梢园磳W(xué)號(hào)、姓名兩種方式來(lái)進(jìn)行修改,兩種方式類(lèi)似。以按學(xué)號(hào)進(jìn)行修改為例,運(yùn)行界面如下:

      /xcxxgc_jpkc/upload/images/2019/1/1610840316.jpg

      Frmxhxg1

      CmdokClick事件代碼:

      cxxh=alltrim(thisform.text1.value)

      open data student

      select 1

      use score

      loca for alltrim(xh)==cxxh

      if found()

       do form newxg1

       thisform.release

      else

       messagebox('沒(méi)有此學(xué)號(hào)!',0+48+0,'錯(cuò)誤')

       thisform.text1.setfocus

      endif

      CmdcancelClick事件代碼:

      thisform.release

      Frmxhxg2

      Frmxmsc2Load事件代碼:

      由于進(jìn)行了數(shù)據(jù)綁定,對(duì)文本框內(nèi)容的修改會(huì)直接反應(yīng)到數(shù)據(jù)表中。確認(rèn)修改無(wú)需做特別工作,但是取消修改需要恢復(fù)修改前的原值。故在此使用了數(shù)組a來(lái)保存修改前的原始值。在恢復(fù)修改中,使用gather from a恢復(fù)原值。

      select 2

      use stuinfo

      locate for xh=a.xh

      public declare a(4)

      select 1

      scatter to a

      CmdokClick事件代碼:

      select 1

      replace pingjunfen with (yuwen+shuxue+yingyu)/3

      use

      select 2

      use

      close data

      thisform.release

      CmdcancelClick事件代碼:

      select 1

      gather from a

      use

      select 2

      use

      close data

      thisform.release

      6、 成績(jī)刪除

      該模塊實(shí)現(xiàn)班級(jí)學(xué)生各門(mén)課程成績(jī)數(shù)據(jù)的刪除??梢园磳W(xué)號(hào)、姓名兩種方式來(lái)進(jìn)行刪除,兩種方式類(lèi)似。以按姓名進(jìn)行刪除為例,運(yùn)行界面如下:

      /xcxxgc_jpkc/upload/images/2019/1/1610840409.jpg

      Frmxmsc1

      CmdokClick事件代碼:

      cxxm=alltrim(thisform.text1.value)

      open data student

      select 1

      use stuinfo

      loca for alltrim(xm)==cxxm

      if found()

       do form newsc2

       thisform.release

      else

       messagebox('沒(méi)有此姓名!',0+48+0,'錯(cuò)誤')

       thisform.text1.setfocus

      endif

      CmdcancelClick事件代碼:

      thisform.release

      Frmxmsc2

      Frmxmsc2Load事件代碼:

      select 2

      use score

      locate for xh=a.xh

      CmdokClick事件代碼:

      select 2

      dele

      pack

      use

      select 1

      use

      close data

      thisform.release

      CmdcancelClick事件代碼:

      select 1

      use

      select 2

      use

      close data

      thisform.release

      7、 成績(jī)統(tǒng)計(jì)

      /xcxxgc_jpkc/upload/images/2019/1/1610840503.jpg

      /xcxxgc_jpkc/upload/images/2019/1/1610840565.jpg

      個(gè)人成績(jī)統(tǒng)計(jì)中,使用了四個(gè)視圖:YW、SX、YYPJF,以取該生的語(yǔ)文、數(shù)學(xué)、英語(yǔ)及總分在班級(jí)中的排名次序。

      Frmgrtj1

      CmdokClick事件代碼:

      xhxm=alltrim(thisform.text1.value)

      open data student

      select 2

      use studscore

      loca for alltrim(xh)==xhxm

      if found()

       do form newgrtj2

       thisform.release

      else

       loca for alltrim(xm)==xhxm

       if found()

         do form newgrtj2

         thisform.release

       else  

         messagebox('沒(méi)有此學(xué)號(hào)或姓名!',0+48+0,'錯(cuò)誤')

         thisform.text1.setfocus

       endif

      endif

      CmdcancelClick事件代碼:

      thisform.release

      Frmgrtj2

      Frmgrtj2Activate事件代碼:

      set talk off

      select 2

      xuehao=studscore.xh

      thisform.text6.value=alltrim(studscore.xh)

      thisform.text7.value=alltrim(studscore.xm)

      thisform.text8.value=alltrim(str(studscore.yuwen))

      thisform.text9.value=alltrim(str(studscore.shuxue))

      thisform.text10.value=alltrim(str(studscore.yingyu))

      thisform.text4.value=alltrim(str(studscore.pingjunfen))

      select 3

      use yw

      loca for xh=xuehao

      mc1=recno()

      thisform.text1.value=mc1

      select 4

      use sx

      loca for xh=xuehao

      mc2=recno()

      thisform.text2.value=mc2

      select 5

      use yy

      loca for xh=xuehao

      mc3=recno()

      thisform.text3.value=mc3

      select 6

      use pjf

      loca for xh=xuehao

      thisform.text5.value=recno()

      CmdokClick事件代碼:

      select 1

      use

      select 2

      use

      select 3

      use

      select 4

      use

      select 5

      use

      select 6

      use

      close data

      set talk on

      thisform.release

      /xcxxgc_jpkc/upload/images/2019/1/1610840612.jpg/xcxxgc_jpkc/upload/images/2019/1/1610840659.jpg

      Frmkctj1

      CmdokClick事件代碼:

      public kcm

      kcm=alltrim(thisform.combo1.value)

      do form newkctj2

      thisform.release

      CmdcancelClick事件代碼:

      thisform.release

      Frmkctj2

      Frmkctj2Activate事件代碼:

      set talk off

      do case

       case kcm='語(yǔ)文'

         kc='yuwen'

       case kcm='數(shù)學(xué)'

         kc='shuxue'

       case kcm='英語(yǔ)'

         kc='yingyu'

      endcase

      open data student

      use score

      count all to zrs

      count for &kc<60 to bjg1

      count for &kc<70 and &kc>=60 to jg1

      count for &kc<80 and &kc>=70 to zhong1

      count for &kc<90 and &kc>=80 to liang1

      count for &kc<=100 and &kc>=90 to you1

      bjg2=str(bjg1/zrs*100,5,1)+'%'

      jg2=str(jg1/zrs*100,5,1)+'%'

      zhong2=str(zhong1/zrs*100,5,1)+'%'

      liang2=str(liang1/zrs*100,5,1)+'%'

      you2=str(you1/zrs*100,5,1)+'%'

      calculate max(&kc) all to zgf

      calculate min(&kc) all to zdf

      average &kc all to pjf1

      pjf=str(pjf1,5,1)

      CmdokClick事件代碼:

      use

      close data

      thisform.release

      /xcxxgc_jpkc/upload/images/2019/1/1610840721.jpg

      FrmbjtjLoad事件代碼:

      set talk off

      open data student

      drop table stuscore

      select 1

      use stuinfo

      set order to xh

      select 2

      use score

      join with a to stuscore for a.xh=b.xh fields a.xh,a.xm,yuwen,shuxue,yingyu,pingjunfen

      add table stuscore

      use stuscore

      sum yuwen to a

      sum shuxue to b

      sum yingyu to c

      count all to d

      zjf=str((a+b+c)/d/3,5,1)

      count for yuwen<60 to aa

      count for shuxue<60 to bb

      count for yingyu<60 to cc

      bjgrs=aa+bb+cc

      bjgl1=(aa+bb+cc)/3/d*100

      bjgl=str(bjgl1,5,1)+'%'

      jgl=str(100-bjgl1,5,1)+'%'

      go top

      CmdokClick事件代碼:

      select 1

      use

      select 2

      use

      close data

      thisform.release


      日韩无码第一页,一区_97资源人妻碰碰碰_有码无码人妻Av_午夜亚洲国产理论片2020网站 亚洲无码片AV一级 岛国av无码专区免费看
      <style id="uedzd"></style>
    3. <style id="uedzd"></style>
    4. <dfn id="uedzd"></dfn>
    5. <dfn id="uedzd"></dfn>
      1. <ruby id="uedzd"></ruby>
        <ruby id="uedzd"></ruby>