第十一章实例--学生成绩管理系统设计第十一章实例--学生成绩管理系统设计211.1系统设计11.1.l设计思想本系统设计思想:系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于管理人员的维护。系统应具备数据库维护功能,及时根据用户需求进行数据的查询、添加、删除、修改等操作。第十一章实例--学生成绩管理系统设计311.1.2系统功能分析本系统用于学校学生成绩管理,主要任务是对成绩管理的各种信息进行日常管理,如查询、修改、增加、删除。针对这些要求,设计了本学生成绩管理系统。该系统主要包括两部分:“学籍数据维护”主要功能是系统维护人员对学生、课程和成绩等基本信息进行维护,包括输入、删除、修改等功能。这个功能主要为教务人员使用,故在使用时要核对用户名和口令。“学生成绩查询”主要功能是学生查询自己的各门课程成绩,按学号检索该学生的信息,其中包括所有的学生记录。第十一章实例--学生成绩管理系统设计411.1.3系统功能模块设计1.主界面模块:提供学籍管理系统的主界面,是本系统的唯一入口和出口。该界面提供用户选择并调用各子模块,对于进入学籍数据维护功能还要核对用户名和口令。2.查询模块:提供学生成绩查询界面,用户可以输入一个学号,该模块查询并显示该学生的各门课程成绩。3.数据维护模块:允许用户先选择一个维护对象(数据库表中如:学生、课程、成绩等),然后进行维护工作(输入、删除、修改)。4.用户验证模块:对于进入学籍数据维护功能的用户,进行用户名和口令的验证。对于用户输入的用户名和口令,如果错误显示相应的提示信息。第十一章实例--学生成绩管理系统设计511.2数据库设计11.2.1数据库表的结构本系统的数据库(学籍)中有四张表,分别是“管理员”、“学生”、“课程”和“成绩”。1.管理员表结构如下:字段名类型宽度小数位说明姓名字符型6登录名字符型8主码口令逻辑型1第十一章实例--学生成绩管理系统设计62.学生表结构如下:字段名类型宽度小数位说明学号字符型6主码,建主索引姓名字符型8性别逻辑型1出生日期日期型8奖学金数值型62简历备注型4第十一章实例--学生成绩管理系统设计73.课程表结构如下:字段名类型宽度小数位说明课程号字符型4主码,建主索引课程名字符型20学时数整型3学分数整型34.成绩表结构如下:字段名类型宽度小数位说明学号字符型6外码,普通索引课程号字符型4外码,普通索引成绩数值型51第十一章实例--学生成绩管理系统设计811.2.2数据库的建立1.创建项目:创建一个名为“学籍”的项目文件,保存在指定磁盘的文件夹中(比如C:\VFP中);2.创建数据库:在项目文件中新建一个名为“学籍”的数据库文件,保存在和项目文件同一个文件夹中;3.新建表:在数据库中分别新建“管理员”、“学生”、“课程”和“成绩”表,建立相应的索引(主索引和普通索引),设置表之间的永久性关联。第十一章实例--学生成绩管理系统设计911.2.3数据库完整性的实现1.实体完整性。在表“管理员”、“学生”、“课程”中,对于主关键字的取值设置不允许为空值(null),唯一性由主索引来保证;2.用户自定义完整性。在“成绩”表中,“成绩”字段的取值必须在0至110之间。在“学生”表中,“奖学金”字段的取值必须=0;3.参照完整性。数据库的参照完整性是指在“子表”当中实现关联的外部关键字,它的取值必需为“父表”中实现相应关联的主关键字值的子集。即在“学生”表与“成绩”表之间的参照完整性要求:在“成绩”表中,字段“学号”的取值必须是“学生”表“学号”字段取值当中已经存在的一个值。同时,在“课程”表与“成绩”表之间也必须遵守参照完整性的规则。第十一章实例--学生成绩管理系统设计1011.4编译应用程序11.4.1构造应用程序框架1.设置起始点将各个组件联结在一起,然后使用主文件为应用程序设置一个起始点。主文件作为应用程序执行的起始点,可以包含一个程序或者表单。当用户运行应用程序时,VisualFoxPro将为应用程序启动主文件,然后,主文件再依次调用所需要的应用程序其他组件。所有应用程序都必须包含一个主文件。一般说来,最好的方法是为应用程序建立一个主程序。设置应用程序的起始点的步骤如下:⑴在“项目管理器”中,选择要设置为主文件的文件;⑵从“项目”菜单中选择“设置主文件”命令。第十一章实例--学生成绩管理系统设计112.初始化环境主文件或者主应用程序对象必须做的第一件事情是对应用程序的环境进行初始化。有时,可能需要使用编写代码来进行初始化,有关步骤如下:⑴初始化变量;⑵建立一个默认的路径;⑶打开任意需要的数据库、自由表及索引;⑷添加外部库和过程文件。3.显示初始的用户界面。初始的用户界面可以是菜单,也可是表单或其他的用户组件。在主程序中,可使用DO命令运行一个菜单或使用DOFORM命令运行一个表单来对用户界面进行初始化。第十一章实例--学生成绩管理系统设计124.控制事件循环一旦建立了应用程序的环境,同时显示初始的用户界面,这时需要建立一个事件循环来等待用户的交互使用。执行READEVENTS命令,使VisualFoxPro开始处理像鼠标单击、键盘输入这样的事件。使用控制事件循环的步骤如下:⑴启动事件循环:如果在主文件中执行下面的两个命令,应用程序将显示表单STARTUP.SCX。DOFORMSTARTUP.SCXREADEVENTS⑵结束事件循环:结束事件循环可通过执行CLEAREVENTS命令实现。CLEAREVENTS命令将挂起VisualFoxPro的事件处理过程,同时将控制权返回给执行READEVENTS命令并开始事件循环的程序。第十一章实例--学生成绩管理系统设计135.恢复原始的开发环境。如果要恢复储存变量原来的值,可以将它们宏替换为原始的SET命令。例如,如果要在公共变量cTalkVal中保存SETTALK设置,可执行SETTALK&cTalkval命令。6.将一个程序结构化为主文件。如果在应用程序中使用一个程序文件(.PRG)作为主文件,必须保证该程序中包含一些必要的命令,这些命令可控制与应用程序的主要任务相关的任务。在主文件中,没有必要直接包含执行所有任务的命令。常用的一些方法是调用过程或者函数来控制像环境初始化和清除这样的任务。第十一章实例--学生成绩管理系统设计1411.4.2将文件加入到项目中下面的几个方法,可以向一个项目中添加文件:1.使用应用程序向导,可以建立项目和添加文件;2.如果要自动向一个项目中添加新的文件,可打开该项目,然后在“项目管理器”中建立新的文件;3.要向一个项目中添加已存在的文件,可打开项目,并使用“项目管理器”。第十一章实例--学生成绩管理系统设计1511.4.3为项目建立应用程序编译一个项目的最后一步是连编它。该过程的最终结果是将所有在项目中引用的文件合成为一个应用程序文件,并将应用程序文件和数据文件一起发布,发布后便可执行该文件运行应用程序。从项目建立应用程序的具体步骤如下:1.测试项目为了对程序中的引用和程序组件进行校验,可先对项目进行测试。测试一个项目的步骤如下:⑴在“项目管理器”中,选择“连编”;⑵在“连编选项”对话框中,选择“重新连编项目”;⑶选择所需的其他选项,并选择“确定”;第十一章实例--学生成绩管理系统设计162.将项目连编为一个应用程序文件⑴连编一个应用程序,步骤如下:在“项目管理器”中,选择“连编”按钮。在“连编选项”对话框中,选择“连编应用程序”,生成.APP文件;或者“连编可执行程序”来建立一个.EXE文件。选择所需的其他选项并选择“确定”按钮。⑵运行.APP应用程序从“程序”菜单中选择“执行”命令,然后选择要执行的应用程序即可。也可在“命令”窗口中,键入DO和应用程序文件名来执行应用程序。例如,要运行应用程序MYAPP,可键入:DOmyapp.app第十一章实例--学生成绩管理系统设计17⑶运行.EXE应用程序在建立了一个.EXE文件,就可使用如下几种方法运行该文件:在VisualFoxPro中,从“程序”菜单中选择“运行”,然后挑选一个应用程序文件;在“命令”窗口中,使用DO命令,该命令带有所要运行的应用程序名字。例如,要运行一个名字为MYAPP.EXE的.EXE文件,可键入:DOmyapp.exe在Windows中,双击该.EXE文件的图标即可运行该程序。