案例库
您当前的位置: 澳门新葡京app>案例库

综合案例五
学生学籍系统

发布时间: 2019-01-16      信息来源:       阅读次数:

综合案例五  学生学籍系统

【实验目的与要求】  

1.熟练使用VFP的操作环境

2.熟练使用项目管理器管理各种文件

3.掌握数据库的设计方法和步骤

4.熟练掌握数据库表及其表之间关系的创建与使用

5.掌握查询与视图的创建与使用

6.掌握程序设计的基本方法

7.掌握表单及其表单中各种控件的设计与使用

8.掌握菜单的创建和使用

【实验要求】

要设计一个性能良好的管理系统,明确用户的应用环境对系统的要求是首要的和基本的。本系统从以下四个方面对用户需求进行了分析:

用户的信息需求:能查询班级信息、学生基本信息、课程信息、学生成绩及补考信息。

用户的处理要求:要能录入班级信息、学生基本信息、学生注册登记、对专业或班级的课程设置、课程信息、学生成绩录入与修改查询、补考成绩录入修改查询等。

对系统的适应性要求:要求系统能够不受未来课程设置变化的影响及班级变动的影响,仍能照常使用。

对系统的安全性要求,要求进入系统必须进行口令校验。

【系统功能模块

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

【功能模块说明】

 1. 其功能主要分为四大类:

   课程管理:用于对各学期课程的开设和修改。

   成绩管理:用于对成绩的输入、修改、汇总及排名。

班级管理:用于对班级的录入与修改。

打印功能:用于打印所需数据。

   本系统性能力求易于使用,具体有较高的扩展性和可维护性。

2.系统功能分析

  录入功能:为一般用户提供相应的录入功能,为超级用户提供对所有信息的录入功能。

查询功能:为所有用户提供查询的功能,可查询允许范围内的所有信息。

维护功能:为一般用户提供查询及相应的修改,删除功能,为用户提供对所有信息的修改删除功能。

打印功能:能打印全校学生的信息及积各班信息,科目成绩等。

退出功能:结束并关闭系统。

【实验内容】

1.1学籍管理中所涉及到的主要实体集及其属性

1、班级﹛班级编号,班级名称,专业代码,学制,收费金额,班主任姓名,入学时间﹜;

2、班级课程﹛班级编号,学期,课程名称,讲授学时,上机学时,讲授教师﹜;

3、补考﹛学号,学期,课程名称,补考1,补考2,原因,未到原因﹜;

4、成绩信息﹛学号、学期、课程名称、成绩﹜;

5、学生基本信息﹛学号,姓名,性别,出生日期,政治面貌,身份证号,班级编号,入学时间,QQ号码、联系电话、e_mail地址、英语等级

6、教学计划﹛专业代码,学期,课程编号﹜;

7、注册﹛学号、学年、注册否﹜;

8、课程信息﹛课程编号,课程名称﹜;

9、专业信息﹛专业代码、专业名称﹜

1.2、主程序

先建一个项目管理器,命名为“学籍管理.pjx”。按照前面几章系统分析及设计的结果,建立一个名称为“学籍库.dbc”的数据库并添加系统所涉及的各个表。然后根据功能模块结构设计的结果建立一个菜单,并设置相应的菜单项的单击事件。再建立一个主控程序,命名为“主程序.prg”。

主界面

/xcxxgc_jpkc/upload/images/2019/1/1610548731.png

主程序.prg的代码如下:

_SCREEN.WINDOWSTATE=2                

_SCREEN.CAPTION='学籍管理系统'        

_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、系统密码校验模块

1、流程图:

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

2、程序界面设计:

                           

1.4菜单设计

/xcxxgc_jpkc/upload/images/2019/1/161054927.png

相关代码如下:

退出:        ??CHR(7)

RE=MESSAGEBOX('是否退出学籍管理系统?',4+32+256,'信息窗口')

IF RE=6

CLEAR EVENT                    

ENDIF

/xcxxgc_jpkc/upload/images/2019/1/161054974.png

2、相关代码如下:

(添加按钮)

THIS.CAPTION='继续'                        

Thisform.班级编号1.VALUE=SPACE(3)          

Thisform.班级名称1.VALUE=SPACE(6)          

Thisform.专业代码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.专业代码1.OPTION1.ENABLED=.T.    

Thisform.专业代码1.OPTION2.ENABLED=.T.    

Thisform.专业代码1.OPTION3.ENABLED=.T.    

Thisform.专业代码1.OPTION4.ENABLED=.T.    

Thisform.专业代码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、界面设计:

/xcxxgc_jpkc/upload/images/2019/1/1610549137.png

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、界面设计:

/xcxxgc_jpkc/upload/images/2019/1/1610549183.png

2、相关代码:

(开始按钮)

THIS.CAPTION='继续'

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