学生信息管理系统.docx
《学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统.docx(37页珍藏版)》请在冰豆网上搜索。
学生信息管理系统
学生信息管理系统的设计方案
一、系统开发背景2
二、系统开发概述2
三、系统需求分析2
3.1系统功能需求2
3.2性能需求分析3
3.3逻辑模型建立3
3.3.1系统数据模型3
3.3.2系统数据流图4
3.3.3系统数据字典7
四、系统概要设计8
4.1系统功能结构设计8
4.2数据库设计8
五、系统详细设计10
5.1菜单设计10
5.2表单设计13
5.3主程序设计24
5.4系统运行演示25
六、系统实施34
6.1系统调试与运行34
6.2系统编译与发布34
一、系统开发背景
随着学校整体能力的提高,有一个好的学生信息管理系统对于学校各方面的发展有着巨大的意义。
因此需要建立一个完整的符合学校发展的学生管理系统以使学校管理工作变得高效、方便,以提高教学管理水平,实现教育和管理的信息化、现代化。
随着学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长,学生管理工作变得越来越复杂,消耗了大量的人力物力。
开发学校信息管理系统,建立基本的学生及相关信息数据库,实现资源共享和学生管理工作的计算机化,具有重大意义。
二、系统开发概述
在开发学生信息管理系统时,我们分析并比较了当前流行的集中系统开发方法,我们认为“生命周期法”是MIS开发的基本方法,尽管这种方法也有许多不足之处,但是他的基本思想、开发步骤、开发工具是可以遵循和使用的。
基于本系统规模小、功能简单的特点,所以仅用了生命周期法中的核心环节来实现,即:
系统调查与分析,运用结构分析法、数据流图、数据字典等工具,确定系统的功能。
系统物理(或详细)设计,根据确定的系统功能,选择合适的软硬件环境,确定模块结构与数据库的建立。
程序设计,选用MicrosoftVisualFoxPro6.0为开发工具,编制学生信息管理应用程序。
三、系统需求分析
3.1系统功能需求
在学生信息管理系统中,主要有用户登录、学生管理、课程管理、成绩管理和信息查询等几个部分,其主要功能描述如下:
1)用户登录:
学生信息管理系统采用用户名和密码验证模式。
进入系统前,用户必须在登录界面输入用户编号和密码,只有通过验证的用户才可进入系统进行操作。
2)学生管理:
可以增加学生信息、修改学生信息和删除学生信息。
3)课程管理:
可以增加课程信息、修改课程信息和删除课程信息。
4)成绩管理:
可以添加成绩、修改成绩。
5)信息查询:
可以按分别按学号和性别查询学生信息,按课程代号或全部查询课程信息,按学号或全部查询成绩信息。
3.2性能需求分析
1)系统易操作性
做开发的系统应做到操作简单,尽量使系统操作不受用户对电脑知识水平的限制。
2)系统具有可维护性
又有系统涉及的信息比较广,数据库中的数据需要定期修改,系统可利用的空间及性能也随之下降,为了使系统更好的运转,学院可以对系统数据及一些简单的功能进行独立的维护及调整。
3)系统具有开放性
该系统能够在开放的硬件体系结构中运行,并能与其他系统顺利连接,不会因外部系统的不同而要做大量的修改工作。
3.3逻辑模型建立
3.3.1系统数据模型
本系统主要有三个基本实体:
学生,课程,成绩。
各实体间的联系图如下图所示:
其中各实体的属性如下图
~
图所示:
学生属性图
课程属性图
成绩属性图
3.3.2系统数据流图
1)顶层数据流图
2)0层数据流图
2)1层数据流图
图1
图2
图3
图4
3.3.3系统数据字典
数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
下面列出了系统的主要数据字典。
名称:
学生表
别名:
无
描述:
记录学生信息
定义:
学生信息=学号+姓名+性别+出生日期+民族+籍贯+专业+学院
备注:
在系统功能扩充时可能增加定义项
名称:
课程表
别名:
无
描述:
记录所有课程的基本情况
定义:
课程信息=课程代号+课程名+课时数+必修课+学分
备注:
在系统功能扩充时可能增加定义项
名称:
学生成绩查询
别名:
无
描述:
查询学生的成绩情况
定义:
学生成绩查询=学号+课程代号+成绩
备注:
在系统功能扩充时可能增加种类
四、系统概要设计
4.1系统功能结构设计
系统功能结构如下:
4.2数据库设计
创建数据库xsgl.dbc,新建4个数据库表,表结构如下:
student.dbf学生信息表:
字段
字段名
类型
宽度
小数位
索引
Null
1
学号
字符型
9
升序(主)
否
2
姓名
字符型
8
否
3
性别
字符型
2
4
出生日期
日期型
8
5
民族
字符型
10
6
籍贯
字符型
8
7
专业
字符型
18
8
学院
字符型
20
course.dbf课程信息表:
字段
字段名
类型
宽度
小数位
索引
Null
1
课程代号
字符型
2
升序(主)
否
2
课程名
字符型
18
否
3
课时数
数值型
2
0
4
必修课
逻辑型
1
5
学分
数值型
1
0
score1.dbf成绩信息表:
字段
字段名
类型
宽度
小数位
索引
Null
1
学号
字符型
9
普通
否
2
课程代号
字符型
2
普通
否
3
成绩
数值型
5
1
user1.dbf用户信息表:
字段
字段名
类型
宽度
小数位
索引
Null
1
用户编号
字符型
5
升序(主)
否
2
用户名
字符型
8
否
3
口令
字符型
10
表间关系设置如下:
五、系统详细设计
5.1菜单设计
主菜单设计:
子菜单设计:
5.2表单设计
增加学生信息表单设计:
“增加”按钮的Click事件代码如下:
thisform.txtxh.value=""
thisform.txtxm.value=""
thisform.txtxb.value=""
thisform.txtcsrq.value=""
thisform.txtmz.value=""
thisform.txtjg.value=""
thisform.txtzy.value=""
thisform.txtxy.value=""
thisform.txtxh.setfocus
mand1.enabled=.f.
mand2.enabled=.t.
mand3.enabled=.t.
“保存”按钮的Click事件代码如下:
if!
empty(thisform.txtxh.value)
insertintostudent(学号,姓名,性别,出生日期,民族,籍贯,专业,学院)values(thisform.txtxh.value,thisform.txtxm.value,thisform.txtxb.value,ctod(thisform.txtcsrq.value),thisform.txtmz.value,thisform.txtjg.value,thisform.txtzy.value,thisform.txtxy.value)
else
=messagebox("学号不能为空!
")
endif
mand1.enabled=.t.
mand2.enabled=.f.
mand3.enabled=.f.
“取消”按钮的Click事件代码如下:
mand1.enabled=.t.
mand2.enabled=.f.
mand3.enabled=.f.
删除课程信息表单设计:
“上一个”按钮的Click事件代码如下:
skip-1
if!
bof()
thisform.refresh
mand2.enabled=.t.
else
=messagebox("已到首记录!
")
this.enabled=.f.
endif
“下一个”按钮的Click事件代码如下:
skip
ifrecno()=reccount()
thisform.refresh
=messagebox("已到最后一个记录!
")
this.enabled=.f.
endif
mand1.enabled=.t.
thisform.refresh
“删除”按钮的Click事件代码如下:
a=messagebox("确定要删除吗?
",4+32+256,"提示")
ifa=6
deletefromcoursewhere课程代号==alltrim(thisform.txtkcdh.value)
pack
skip
thisform.refresh
endif
“退出”按钮的Click事件代码如下:
Thisform.release
修改成绩表单设计:
“Txtxm”文本框的GotFocus事件代码如下:
xh1=thisform.cmbxh.value
selestudent
seekxh1ordertag学号
thisform.txtxm.value=姓名
thisform.cmbkcdh.setfocus
thisform.refresh
“Cmbkcdh”组合框的InteractiveChange事件代码如下:
xh1=thisform.cmbxh.value
kcdh1=thisform.cmbkcdh.value
selescore1
locafor学号==alltrim(xh1)and课程代号==alltrim(kcdh1)
iffound()
thisform.txtcj.value=成绩
selecourse
seekkcdh1ordertag课程代号
thisform.txtkcm.value=课程名
else
=messagebox('无相关信息!
',16,'Error')
withthisform
.cmbkcdh.value=''
.txtkcm.value=''
.txtcj.value=0
.cmbxh.setfocus
endwith
endif
thisform.refresh
“修改”按钮的Click事件代码如下:
xh1=thisform.cmbxh.value
kcdh1=thisform.cmbkcdh.value
cj1=thisform.txtcj.value
a=messagebox("确定要修改吗?
",4+32+256,"提示")
ifa=6
updatescore1set成绩=cj1where学号==alltrim(xh1)and课程代号==alltrim(kcdh1)
endif
=messagebox('修改成功!
','提示')
按性别查询学生信息表单设计:
选项按钮组的InteractiveChange事件代码如下:
ifthis.value="男"
thisform.grdstudent.recordsource='sele*fromstudentwherestudent.性别="男"intocursortmp1'
else
this.value="女"
thisform.grdstudent.recordsource='sele*fromstudentwherestudent.性别="女"intocursortmp2'
endif
thisform.refresh
按课程代号查询课程信息表单设计:
“查询”按钮的Click事件代码如下:
kcdh1=thisform.cmbkcdh.value
selecourse
locafor课程代号==alltrim(kcdh1)
iffound()
thisform.txtkcm.value=课程名
thisform.txtkss.value=课时数
thisform.chkbxk.value=必修课
thisform.txtxf.value=学分
else
=messagebox('无相关信息!
',16,'Error')
thisform.cmbkcdh.value=''
thisform.txtkcm.value=''
thisform.txtkss.value=''
thisform.chkbxk.value=.f.
thisform.txtxf.value=''
thisform.cmbkcdh.setfocus
endif
thisform.cmbkcdh.setfocus
thisform.refresh
全部成绩查询表单:
“Cmbxh”组合框的InteractiveChange事件代码如下:
this.value=this.displayvalue
thisform.txtxm.value=student.姓名
系统登录表单设计:
全部课程信息查询表单设计:
修改口令表单设计:
按学号查询学生信息表单设计:
修改学生信息表单设计:
增加课程信息表单设计:
5.3主程序设计
CLEAR
Closeall
IFSET('TALK')='ON'
SETTALKOFF
PUBLICgcOldTalk
gcOldTalk='ON'
ELSE
PUBLICgcOldTalk
gcOldTalk='OFF'
ENDIF
PUBLICgcOldDir,gcOldPath,gcOldClassLib,gcOldEscape,gTTrade
gcOldEscape=SET('ESCAPE')
gcOldDir=FULLPATH(CURDIR())
gcOldPath=SET('PATH')
gcOldClassLib=SET('CLASSLIB')
gTTrade=.T.
IFSetPath()
zoomwindowsscreenmax
modiwindowscreentitle"学生管理系统"
_screen.picture="clouds.jpg"
_screen.icon="PC.ICO"
doformstart.scx
readevents
ENDIF
CLEARALL
FUNCTIONSetPath()&&设置路径
LOCALlcSys16,lcProgram
lcSys16=SYS(16)
lcProgram=SUBSTR(lcSys16,AT(":
",lcSys16)-1)
CDLEFT(lcProgram,RAT("\",lcProgram))
SETPATHTOPROGS,FORMS,Class,MENUS,DATA,Pic,REPORTS,INCLUDE,HELP
ENDFUNC
恢复系统环境reset1.prg文件代码:
clearevents
_screen.picture=""
setsysmenutodefault
_screen.icon=""
modiwindowscreentitle"MicrosoftVisualFoxPro"
setsysmenuon
settalkon
setnotifyon
setexclusiveon
setsafetyon
5.4系统运行演示
系统运行界面如下:
六、系统实施
6.1系统调试与运行
如果程序中有语法性的错误,当程序运行到错误的语句时系统就会停下来,提示程序有错,并给出选择“取消”、“挂起”、“忽略”、“帮助”四个选择,它们的意思分别是:
取消——中止程序运行,回到命令窗口,相当于执行了cancel命令,在程序中创建的所有变量被释放(除公共变量),但数据库及数据表保持当时的状态。
挂起——暂停程序,相当于执行了suspend命令,程序中的所有变量都保持原值。
忽略——忽略所出现的错误,跳过出错的语句继续执行后面的语句。
帮助——显示有关出错的帮助信息,对于错误做更详细的说明。
如果知道问题所在,那么可以选择取消,然后进到程序中找出错误将其改正。
如果不知道问题出在程序的哪个地方,可以选择挂起,系统会弹出一个调试器窗口显示出错的语句,在跟踪窗口的黄色箭头所指的语句就是出错的语句。
这时先终止程序运行,按调试中的终止按钮,然后退出调试器,处理程序的出错语句。
6.2系统编译与发布
设置main.prg为主文件,点击“连编”按钮,打开连编对话框。
选择“连编可执行文件”,点击“确定”开始连编生成可执行文件。
VFP编译生成的EXE文件是不能直接在另一台电脑上运行的,除非该电脑中已经装有VFP系统,因为EXE文件的运行要依赖于安装在WINDOWS系统中的运行时刻库。
为此程序需要发布生成安装文件。
选择菜单上的“工具”-“向导”-“安装”,点击“发布树目录”后面的按钮,找到项目文件目录并选定,点击“下一步”。
选择VisualFoxpro运行库,下一步。
选择生成的安装文件的存放目录,此处选择本文预先设置的项目目录,然后选择安装方式,可以是1.44M盘、也可以是网络安装,或者二者都选。
在安装对话框和版权信息中输入适当内容,用于安装软件时显示的信息执行下一步。
输入安装的默认目录,在开始菜单的中的程序管理器组的名称,确定用户安装时是仅可以更改目录,还是目录与程序管理器组都可更改。
下一步,在文件列表中找到编译的可执行文件,在命令行中输入可执行的项目文件名如“%s\Xsgl.exe”,这是为了使软件安装在不同目录中也能正常运行,需要在文件前面加上“%s\”,点击确定,如果没有问题下一步就可以按下“完成”,如果存在问题,可以点击“上一步”返回查看;点击“完成”按钮,系统开始制作安装盘,安装盘制作成功,点击完成即可。