1、第12章 学生成绩管理系统开发实例,12.1 系统设计的一般过程,1.需求分析阶段 数据分析与功能分析 2.设计阶段 数据库设计:E-R图确定实体属性及之间的联系 功能设计:各模块功能,12.1 系统设计的一般过程,3.实施阶段 数据库设计 菜单设计 界面设计 功能模块设计 调试程序,12.1 系统设计的一般过程,4.测试阶段 (1)验证应用程序是否在不同条件下都能得到正确的结果 (2)检查系统是否完全满足用户的需求,在功能上有否遗漏 (3)检查在程序运行过程中对可能遇到的问题是否都有相应的解决措施,安全性,可靠性 5.运行维护阶段 在投入运行阶段不断修改、调试与完善,12.2 系统总体设计,
2、以学生成绩管理系统为例,12.3系统数据库设计,一、逻辑设计 (1) 成绩信息表:cj(学号,课程号,分数,学分)(2) 课程名表: kc(课程号,课程名称)(3) 系别表: xb(系号,系名,负责人)(4) 学生信息表: xs(学号,姓名,性别,系号,特长,出生日期,照片),二、物理设计,二、物理设计,12.4 系统功能模块设计,本系统共有四个模块:成绩输入、成绩查询、数据维护、数据输出 1.成绩输入:用于考试成绩的输入 2.成绩查询:实现条件查询成绩 3.数据维护:对学生、课程、系进行维护修改 4.数据输出:输出学生、系、课程、成绩报表,12.5 系统实施,12.5.1 创建项目 12.5
3、.2 创建数据库 12.5.3 创建数据库中的表 12.5.4 设置数据库中表之间关系 索引、完整性约束等,12.6 主要表单及其事件代码的实施,本系统共设计6个表单 一个主界面表单 三个数据维护表单 二个成绩输入与查询表单,12.6 主要表单及其事件代码的实施,12.6.1 使用表单向导创建表单 三个数据维护表单用向导生成,成绩录入表单(scoreinput),下图为设计与运行状态,12.6 2创建自定义表单,代码的实现,添加记录按钮的单击事件 thisform.text1.value= thisform.text2.value= thisform.text3.value= thisform
4、.text4.value=,保存记录单击事件 if thisform.text1.value=“ ” or thisform.text2.value=“ ” or thisform.text3.value=“ ” or thisform.text4.value=“ ” messagebox(所有项内容都不能为空,48,“提示信息“) else,locate for 成绩信息表.学号=alltrim(thisform.text1.value) and 成绩信息表.课程号=alltrim(thisform.text2.value) if found()messagebox(此学号与课号已经存在,重
5、新输入,48,“提示信息“)thisform.text1.value=“thisform.text1.setfocuselse insert into 成绩信息表 values(alltrim(thisform.text1.value),alltrim(thisform.text2.value),val(alltrim(thisform.text3.value),val(alltrim(thisform.text4.value) endif endif,学号组合框的单击事件 bo1.visible=.f. thisform.text1.visible=.t. thisform.text1.va
6、lue=bo1.text 学号组合框的lostfocus bo1.visible=.f. thisform.text1.visible=.t.课程号组合框和学号类似,学号文本框的单击事件 thisform.text1.visible=.f. bo1.top=thisform.text1.top bo1.left=thisform.text1.left bo1.visible=.t.课程号文本框单击事件和学号文本框单击事件类似。,学号成绩查询表单scoresearch,设计之前和设计之后状态,代码实现,第一个查询按钮的单击事件 select * from 成绩信息表 where ; alltri
7、m(bo1.text)=成绩信息表.学号第二个查询按钮的单击事件和第一个查询按钮相同浏览全部记录按钮的单击事件 sele * from 成绩信息表,第三个查询按钮的单击事件 if val(alltrim(thisform.text1.value)val(alltrim(thisform.text2.value) messagebox(“此值须大于0并且不能大于后面的值“,48,“信息窗口“) else if val(alltrim(thisform.text2.value)100messagebox(“此值须小于100“,48,“信息窗口“)elseif thisform.text1.valu
8、e=“” or thisform.text2.value=“” messagebox(“区间值不能为空”,48,“信息窗口“)elsesele * from 成绩信息表 where 成绩信息表.分数 between val(alltrim(thisform.text1.value) and val(alltrim(thisform.text2.value)endifendifendif,应用程序设计 主界面表单zjmbd.scx 进入系统代码(也可调用密码表单,再进入菜单) Do menu.mpr Thisfrom.release,报表设计 作四个数据表的报表 菜单设计,成绩输入 成绩查询 数
9、据维护 数据输出 退出学生信息 学生信息系别信息 系别信息课程信息 课程信息成绩信息 退出代码: close all set sysmenu to defa clear events,clear all close all set talk off clear windows set sysmenu off set sysmenu to set safety off set status bar off set defa to d:ma2 zoom windows screen max modi windows screen title 学生成绩管理系统 modi windows screen
10、 fill file d:ma2xs_027.jpg do form zjmbd.scx read events set talk on quit,主程序,应用程序的管理与发布,应用程序管理 项目管理器中的主文件 连编 文件的包含与排除,应用程序发布 发布准备 在项目管理器中生成一个.exe可执行程序 创建发布树(目录) 创建发布磁盘 磁盘映象由安装向导生成在硬盘的磁盘映象目录中,选定工具菜单的向导选项的安装命令。,小结 学生成绩管理系统共包含以下内容 一个项目 一个库,四个表 三个表单,zjmbd, cjlr, cjcx 四个报表,每个表一个报表 一个菜单 一个主程序(连编) 选作:密码表单,编辑表单,浏览表单等分组小计报表。,