VFP课程设计_学生成绩管理系统
镇江高等专科学校
课程设计
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
书
题 目: 学生成绩管理系统 系 部: 电子信息系
专 业: 计算机应用技术
班 级: 微机D07 姓 名:
学 号:
2008年 12 月 24 日
目录
第1章 系统简介……………………………………………………….4
第2章 系统可行性分析………………………………………………4
2.1 技术可行性……………………………………………………….4
2.2 实施可行性……………………………………………………….4 第3章 系统设计……………………………………………………….4
3.1 目标设计………………………………………………………….4
3.2 开发设计思想……………………………………………………...5
3.3 开发和运行环境选择………………………………………………..5
3.4 系统结构图……………………………………………………….5
3.5 系统模块功能介绍 ………………………………………………..7
3.5.1 系统主界面………………………………………………7
3.5.2 验证界面………………………………………………..7
3.5.3 查询模块 ……………………………………………….7
2
学生成绩管理系统
3.5.4 维护模块………………………………………………..7
3.5.5 报表模块……………………………………………….7
3.5.6 退出系统……………………………………………7
3.6 数据库设计……………………………………………………..8
3.6.1 数据库概念设计…………………………………………8
3.6.2 数据库逻辑设计…………………………………………9
3.6.3 数据库物理设计…………………………………………9
3.6.4 建立索引和永久关系…………………………………….11
3.7 主要模块的创建…………………………………………………12
3.7.1 开始界面设计………………………………………….12
3.7.2 退出界面设计………………………………………….13
3.7.3 验证界面设计………………………………………….15
3.7.4 学生成绩查询表
第 3 页 共 37 页
单………………………………………17
3.7.5 浏览学生信息表单………………………………………18
3.7.6 浏览课程表表单………………………………………..19
3.7.7 学生查询界面…………………………………………20
3.7.8 维护成绩表界面……………………………………….22
3.7.9 菜单设计……………………………………………..23
3.7.10 报表设计……………………………………………..24
3.7.11 主程序设计……………………………………………25 第4章 开发中的难点与解决技巧………………………………27
附录代码...................................................................................................28
4
学生成绩管理系统
第1章 系统简介
随着社会的发展,资讯的迅速发展便得我们从过去繁重的劳作中得以解脱,所以编写一个完善的学生成绩管理系统的任务就显得很必要了。学生成绩管理系统解决了过去手记成绩,现在它更快速的对学生成绩进行管理,如查询、修改、增加、删除。
第2章 系统可行性分析
2.1技术可行性
该系统可以通过使用VFP6.0数据库软件作为开发工具进行开发,开发出的系统是一个数据库应用管理系统,该系统安全,可靠,稳定,完全可以满足任务要求。
2.2实施可行性
该系统可以设计一系列便于操作的窗口界面,操作人员只需稍经
培训
焊锡培训资料ppt免费下载焊接培训教程 ppt 下载特设培训下载班长管理培训下载培训时间表下载
就可以进入工作状态。同时,可以对目前手工记录学生成绩,查询,修改,编制报表等工作进行彻底改革,使各项工作都能够通过计算机来完成,使学生成绩管理实现自动化,极大的提高了工作效率。
第3章 系统设计
第 5 页 共 37 页
3.1 目标设计
本章旨在抛砖引玉,通过开发一个简化的学生成绩管理系统,展示Visual FoxPro的强大功能。同时,希望有兴趣的可以在此基础上设计开发出功能更多更强大的学生成绩管理系统。
3.2 开发设计思想
本系统开发设计思想:
, 尽量采用学校现有软硬件环境,及先进的管理系统开发
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
,从而
达到充分利用学校现有的资源,提高系统开发水平和应用效果的目
的。
, 系统应符合学校学生成绩管理的规定,满足对学校学生日常管理的
需要,并达到操作过程中的直观、方便、实用、安全等要求。
, 系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,
又便于未参与开发的技术维护人员补充、维护。
, 系统应具备数据库维护功能,及时根据用户需求进行数据的添加、
删除、修改、备份等操作。
3.3 开发和运行环境选择
开发工具:Visual FoxPro 6.0
运行环境:Windows9x、Windows NT或Windows 2000操作系统。 3.4 系统结构图
采用模块化设计思想,可以大大提高设计的效率,并且可以最大限度地减少不必要的错误。其系统结构图如下所示:
6
学生成绩管理系统
验 开
证 始
用 界
户 面
是否合法
进入主窗口退出系统 界面
第 7 页 共 37 页
学生成绩管理系统
报 查 维 菜 退
表 询 护 单 出 学课成成学成
生程绩绩生绩
表表表查查表
询 询 浏浏浏维
览 览 护 览
3.5 系统模块功能介绍
本系统主要用于学校学生成绩管理,主要任务是用计算机对学生成绩进行日常管理,如查询、修改、增加、删除。针对这些要求,设计了本学生成绩管理系统。该系统主要进行学生成绩的查询、浏览、维护。
系统主界面
该模块是学生成绩管理系统的主界面,是主系统的唯一入口和出口。
该界面可调用各子模块。实现对学生相关信息的浏览,查询,修改
和报表。
验证界面
8
学生成绩管理系统 验证界面是验证用户名,只有当使用者正确的输入用户名和密码后才能进入系统。
查询模块
本模块的目的在于快速浏览学生信息,学生的成绩和课程表。
维护模块
本模块的目的在于对系统的各个数据库进行维护,对课程表、学生表、成绩表进行增加、删除,以便及时更新数据进行查询。
报表模块
本模块的目的在于对学生表、课程表、成绩表的报表浏览,能够通过打印机将它们打印出来。
退出系统
本模块设计的目的是当用户退出系统时显示感谢词,画面停留两秒后自动退出.
3.6 数据库设计
, 数据库概念设计
E—R图是E—R模型的图形表示法,它是直接表示概念模型的有
力工具。我们用E—R图来说明学生成绩管理系统的数据库概念
模式,如下图所示。
第 9 页 共 37 页
姓名
学号 学生 性别
出生年月 班级
(a)
课程编号
课程 课程名 学分
任课老师
( b )
学号 成
分数
绩
课程编号
( c )
10
学生成绩管理系统
成绩 学生 考试
课程 学习
( d )
, 数据库逻辑设计
将以上E—R转换成如下关系模式:
学生表(学号,姓名,性别,出生年月,班级)
课程表(课程名,课程编号,学分,任课教师)
成绩表(学号,课程编号,分数)
, 数据库物理设计
本系统中包括三个数据表:学生表、课程表、成绩表,表结构如下图:
学生表结构
字段类
字段
型与长字段规则与说明 默认值 标题
名
度
“8199100XH C(8) 学号
1”
XM C(8) 姓名
第 11 页 共 37 页
XB C(2) “性别只能是男或女” “女” 性别
“年龄在18至22岁之
CSRQ D 出生年月
间”
BJ C(10) 班级
课程表结构
字段字段类型与字段规则与
默认值 标题
名 长度 说明
KCH C(4) 课程编号
KCM C(14) 课程名
JS C(8) 任课教师
“学分大于
XF N(3,1) 1 学分
0"
成绩表结构
字段字段类型字段规则与说
默认值 标题
名 与长度 明
XH C(8) 学号
KCH C(4) 课程号
CJ N(5,1) “成绩大于0” 60 成绩 , 建立索引和永久关系
建立索引
12
学生成绩管理系统 数
据
表索引名称 索引类型 索引表达式 名
称
学NO 主索引 XH 生
NAME 普通索引 XM 表
课SUB_NO 主索引 KCH 程
SUB_NAME 普通索引 KCM 表
成XH+KCH+STR(CJ,4,1
STUDENT 主索引
) 绩
表 MARK 普通索引 CJ
建立学生表与成绩表,课程表与成绩表的关联,关键字是分别是XH字段
和KCH字段。
第 13 页 共 37 页
3.7 主要模块的创建
, 开始界面设计
设计该表单的主要功能是当用户启动使用“学生成绩管理系统”
时,显示欢迎界面,开始界面上的欢迎词每个1秒闪烁一次。用
户按下键盘上任一键时,系统自动进入下一级表单。设计该模块
比较简单,利用一个表单就可实现其功能。以下是这一模块的设
计步骤。
首先新建一个表单,保存为“welcome”。将该表单的“Caption”
属性设为“欢迎界面”,“Desktop”属性设置为“.T.-True”。为了
给该表单添加一张图片背景,设其“Picture”属性为所要添加图
片的地址。然后为该表单添加一个“Timer1”控件和一个“Label1”
控件。
修改“Timer1”控件的“Interval”的属性为“1000”,这样当每
间隔一秒钟将触发一次“Timer Event”事件。
14
学生成绩管理系统
“Label1”控件的相关属性的内容如下表。
“Label1”控件中主要属性
属性名称 属性值 Caption 欢迎使用学生成绩管理系统 BackStyle 0-Transparent
FontBold .T.
FontName 隶书
FontSize 20
ForeColor 16711935
开始界面的设计结果如下图所示。
, 退出界面设计
当用户退出系统时显示感谢词,两面停留两秒后自动退出。这一
表单也比较简单,利用一个表单就可实现其功能。
退出界面的设计方法同开始界面的设计方法类似。表单中所用的
第 15 页 共 37 页
各控件属性如下表所示。
“Form1”表单主要属性
属性名称 属性值 Caption 退出界面 Desktop .T.
Picture
“Label1”控件中主要属性
属性名称 属性值 Caption 欢迎使用 BackStyle 0-Transparent FontBold .T.
FontName 隶书 FontSize 32
ForeColor
“Label2”控件中主要属性
属性名称 属性值 Caption 谢谢您的支持 BackStyle 0-Transparent FontBold .T.
FontName 隶书 FontSize 30
FontColor
“Timer1”控件中主要属性
16
学生成绩管理系统
属性名称 属性值
Interval 2000
退出界面设计结果如下图所示。
, 验证界面设计
为了确保数据库的安全性设计的,只有合法的用户才可以进行登
录。如果用户名或密码输入不正确,可以取消重新输入。该表单
包括两个LABLE控件,两个TEXT控件,和三个COMMAND
控件。表单中的各控件属性如下表所示。
“Form1”表单主要属性
属性名称 属性值
Caption 验证界面
Desktop .T.
Picture
第 17 页 共 37 页
“Label1”控件中主要属性
属性名称 属性值 Caption 用户名
BackStyle 0-Transparent FontBold .T.
FontName 宋体
FontSize 20
“Label2”控件中主要属性
属性名称 属性值 Caption 密码
BackStyle 0-Transparent FontBold .T.
FontName 宋体
FontSize 20
Command 控件主要属性
控件名称 属性名称 属性值 Command1 Caption 确定 Command2 Caption 取消 Command3 Caption 退出 验证界面设计结果如下图所示。
18
学生成绩管理系统
, 学生成绩查询表单
这一模块实现了最基本而又很重要的功能,它让用户方便快捷、多角度地得知想要查询的情况。该模块是对学生成绩的查询,可以查询所有学生的成绩,也可以根据学号进行查询。这一模块所包含的控件属性所下表。
控件名称 属性 属性值
Form1 Caption 成绩查询
Caption 学号
FontName 楷体 Lable1 FontBold .T.
Fontsize 20
Backstyle 0 - 透明
第 19 页 共 37 页
Caption 查询
FontSize 12 Command 1
ForeColor (0,0,255)
FontName 楷体
Caption 退出
ForeColor (0,0,255) Command2
FontName 楷体
FontSize 12
学生成绩查询设计结果如下图所示。
, 浏览学生信息表单
这一模块设计的目的主要是迅速的浏览学生信息。表单中包含的
控件属性如下表。
20
学生成绩管理系统
控件名称 属性 属性值 Form1 Caption 学生信息浏览
Caption 学生信息表
FontBold .T.
FontName 楷体 Lable1
FontSize 25
ForeColor (0,255,0)
BackStyle 0 - 透明
学生信息浏览表单设计结果如下图所示。
, 浏览课程表表单
这一模块设计的目的主要是快速浏览课程表,表单中所包含的控
第 21 页 共 37 页
件属性如下表。
控件名称 属性 属性值 Form1 Caption 学生课程浏览
Caption 学生课程表
FontName 楷体
FontBold .T. Lable1
Fontsize 28
ForeColor (255,0,128)
Backstyle 0 - 透明
, 学生查询界面
本模块的目的在于快速浏览学生的基本情况。目标界面如下图所示。
22
学生成绩管理系统
表单中所包含的控件属性如下表。
控件名称 属性 属性值
Form1 Caption 学生查询
Caption 学号
Fontsize 16
Lable1
FontBold .T.
Backstyle 0 - 透明 Command 1 Caption 查询 Command2 Caption 取消
控件Lable2、Lable3、Lable4、Lable5属性设置同Lable1相同。
第 23 页 共 37 页
, 维护成绩表界面
本模块的目的在于对系统的各个数据库进行维护,对成绩表进行增加、删除,以便及时更新数据进行查询。表单中包含的所有控件的属性设置如下表。
控件名称 属性 属性取值
Form1 Caption 成绩表维护
Caption 成绩表
FontBold .T.
Lable1
Fontsize 30
Backstyle 0 - 透明
Caption 学号
Lable2 Backstyle 0 - 透明
Fontsize 15 Command 1 Caption 前一条 Command 2 Caption 下一条 Command 3 Caption 修改 Command 4 Caption 取消
控件Lable3、Lable4属性与Lable2属性一置。在点击“修改”命令按钮时,会出现“是否确定要修改该记录”。选择“是”会出现下面图。
24
学生成绩管理系统
这一模块设计的结果如下图。
, 菜单设计
菜单以横向排列在主窗口顶部的标题栏之下,它方便而快捷地完成了各项工作。要做菜单先要打开菜单设计器,在菜单设计器中输入菜单名称,选择“结果”。如需要编辑子菜单,进入子菜单进行编辑菜单名称。下图是该模块的菜单设计器和该模块结果设计。
第 25 页 共 37 页
, 报表设计
报表用于在打印文档中显示或总结数据。报表的数据源定义了报
表中数据的来源,通常是表、视图、查询、临时表等,报表的布
局定义了报表的打印格式。
这一模块是通过报表向导,选择所做报表的字段, 选择报表样
式为经营式,报表布局,和排序记录为学号,最后保存为学生表。
如下图。
下图是学生报表的缩小图。
26
学生成绩管理系统
, 主程序设计
系统要执行,需要有一个主程序。由主程序设置系统的环境后,打开程序主表单,等待使用者的操作。
主程序将调用应用程序框架中的各个功能组件,然后由这些组件调用应用程序的其他部分。主应用程序对象必须做的第一件事就是对应用程序的环境进行初始化。在打开VFP时,默认得的VFP
第 27 页 共 37 页
开发环境将建立SET命令和系统变量的值。一个比较好的设计方法是将初始的环境设置保存起来,在启动代码中为程序建立特定的环境设置。此外,在一个应用程序特定的环境下,可能需要使用代码一下操作。
在“
项目管理
工程项目管理制度介绍工程项目管理课程设计政府投资项目管理意见建设工程项目管理合同工程项目管理培训总结
器”中选择“代码”中的“程序”,点击“新建”按钮,为系统新建一个主程序。为主程序编写代码,存储为mainprg。
Clear screen
Clear events
*打开数据库
Open database database\salary *执行开始表单
Do form form\ksjm
设置系统环境配置
Do setting
*开始响应事件
Read events
*收到“clear events”命令后关闭数据库,还原系统环境配置 Close database
Do reset
将mainprg.prg程序设置为主文件,如下图所示.
28
学生成绩管理系统
第四章 开发中的难点与解决技巧
, 报表的使用
在系统设计时发现,设计好报表后,有时无论怎么预览都无法看
到报表,像报表一预览就消失一样。经过几次调试才确定不是程
序问题。
后来发现,当该报表数据环境中的表是一个空表时就会遇到无法
预览的情况。解决这个问题一个方法就是在该表中输入 几个数
据,这样报表就可以预览了。
, 常见的代码错误
当编写VFP应用程序时可能产生许多个错误,至少它会爆出许多
出错信息。有些错误比较常见,而有些错误则相当神秘。许多错
误与句法相关,而且往往是简单的录入错误造成的。所以我们要
在编写程序时一定要注意录入,避免错误。
第 29 页 共 37 页
附录代码
欢迎界面
计时器timer1的代码:
if nTime=0
thisform.Label1.visible=.t.
nTime=1
else
thisform.Label1.visible=.f.
nTime=0
endif
退出界面
计时器timer1的代码:
thisform.release
CLEAR EVENT
*释放表单并停止由READ EVENT 开始的事件处理 *令程序从READ EVENT的下一条程序行继 验证界面
“确定”按钮的代码:
sele adminer
use student\database\adminer
30
学生成绩管理系统
*此为管理员信息数据表的(adminer)的相对路径
cx=alltrim(thisform.text1.value) cy=alltrim(thisform.text2.value) *获得文本框1、2的输入信息
set order to 用户名
seek cx
*查找输入的信息
if alltrim(adminer.用户名)!=cx
cMessageTitle='设备管理系统'
cMessageText='用户名错误,请重新输入'
nDialogType=4+32
nAnswer=messagebox(cMessageText,nDialogType,cMessageTitle)
do case
case nAnswer=6
thisform.text1.value=''
thisform.text1.setfocus *选择“是”时的操作
case nAnswer=7
cMessageTitle='设备管理系统'
cMessageText='不要乱来'
messagebox(cMessageText,nDialogType,cMessageTitle)
thisform.release
*选择“否”时的操作
第 31 页 共 37 页
endcase
else
if alltrim(adminer.密码)!=cy
*判断输入的信息是否与密码符合
cMessageTitle='设备管理系统'
cMessageText='密码错误,请重新输入'
nDialogType=4+32
nanswer=messagebox(cMessageText,nDialogType,cMessageTitle)
do case
case nAnswer=6
thisform.text2.value=''
thisform.text2.setfocus
择“是”时的操作
case nAnswer=7
cMessageTitle='设备管理系统'
cMessageText='不要乱来'
messagebox(cMessageText,nDialogType,cMessageTitle)
thisform.release
*选择“否”时的操作
endcase
else
thisform.release
do case
32
学生成绩管理系统
case tablesc=1
do form student\form\deptstu
*根据变量不同打开不同的表单
case tablesc=2
do form student\form\weihu
endcase
endif
endif
“取消”按钮的代码:
thisform.text1.value=''
thisform.text2.value=''
*清空文本框的内容
thisform.text1.setfocus
“退出”按钮的代码:
thisform.release
*释放本表单
成绩表维护界面
“前一条”按钮的代码:
if reccount()>0
第 33 页 共 37 页
skip -1
if bof()
go top
endif
thisform.refresh
if recno()=1
thisform.command1.enabled=.f.
thisform.command2.enabled=.t.
else
thisform.command1.enabled=.t.
thisform.command2.enabled=.t.
endif
endif
“下一条”按钮的代码:
ttt=1
if reccount()>0
skip
if eof()
go bottom
ttt=recn()
endif
thisform.refresh
34
学生成绩管理系统 if recno()=ttt
thisform.command1.enabled=.t. thisform.command2.enabled=.f. else
thisform.command1.enabled=.t. thisform.command2.enabled=.t. endif
endif
“修改”按钮的代码:
set multilocks on
cursorsetprop("buffering",2) tableupdate(.f.)
ys=messagebox("是否确定要修改该记录",4+32,"学生成绩管理系统!!") if ys=6
=messagebox("记录已经修改",48,"
通知
关于发布提成方案的通知关于xx通知关于成立公司筹建组的通知关于红头文件的使用公开通知关于计发全勤奖的通知
")
endif
thisform.refresh
“取消”按钮的代码:
thisform.release
学生成绩查询界面
“查询”按钮的代码:
第 35 页 共 37 页
if empty(alltrim(thisform.text1.value)) messagebox("请输入学生学号!",48,"学生成绩管理系统")
thisform.text1.setfocus
else
locate for alltrim(xh)==alltrim(thisform.text1.value)
if found()
set filter to
set filter to xh=alltrim(thisform.text1.value) thisform.refresh
else
messagebox("查无此人!",48,"学生成绩管理系统")
endif
endif
“退出”按钮的代码:
thisform.release
学生查询界面
“查询”按钮的代码:
if empty(alltrim(thisform.text1.value)) messagebox("请输入学生学号!",48,"学生成绩管理系统")
thisform.text1.setfocus
36
学生成绩管理系统 else
use 学生表.dbf
locate for alltrim(xh)==alltrim(thisform.text1.value)
if found()
thisform.text2.value=xh thisform.text3.value=xm thisform.text4.value=xb thisform.text5.value=bj thisform.text6.value=csrq else
messagebox("查无此人!",48,"学生成绩管理系统") endif
endif
“取消”按钮的代码:
thisform.release
第 37 页 共 37 页