数据库学生成绩管理系统课程设计.docx
《数据库学生成绩管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《数据库学生成绩管理系统课程设计.docx(18页珍藏版)》请在冰豆网上搜索。
数据库学生成绩管理系统课程设计
辽宁工业大学
数据库原理与应用系统设计说明书
题目:
数据库学生成绩管理
院(系):
专业班级:
学号:
学生姓名:
指导教师:
目录
第1章系统概述1
1.1开发背景1
1.2设计理念1
1.3……1
第2章需求分析2
2.1功能需求2
2.2数据流图2
2.3数据字典2
2.42
2.5……2
第3章系统设计3
3.1系统结构3
3.2数据库ER图3
3.3数据库实现3
3.43
3.5……3
第4章总结4
参考文献5
第一章系统概述
1.1开发背景
1)某大学有学生若干万名,每个学生每学期必须学习若干门课程。
2)每个学生有学号、姓名、性别、班级、出生日期等基本信息。
3)每门课程有课程号,课程名称、任课教师、学分等信息。
4)学校需要对每个学生的基本信息、所学课程、成绩进行统一管理,以便于对信息进行查询、浏览和修改。
1.2设计理念
对用户要求描述的现实世界(可能是一个工厂、一个商场或者一个学校等),通过对其中诸处的分类、聚集和概括,建立抽象的概念数据模型。
这个概念模型应反映现实世界各部门的信息结构、信息流动情况、信息间的互相制约关系以及各部门对信息存储、查询和加工的要求等。
所建立的模型应避开数据库在计算机上的具体实现细节,用一种抽象的形式表示出来。
以扩充的实体—(E-R模型)联系模型方法为例,第一步先明确现实世界各部门所含的各种实体及其属性、实体间的联系以及对信息的制约条件等,从而给出各部门内所用信息的局部描述(在数据库中称为用户的局部视图)。
第二步再将前面得到的多个用户的局部视图集成为一个全局视图,即用户要描述的现实世界的概念数据模型。
1.3运行环境
本系统由SQL语言编写,在VisualFoxpro6.0软件环境下可以正常运行
第二章需求分析
2.1功能需求
学生成绩管理系统主要用于学生成绩信息管理,据分析学生成绩管理系统的数据表可浓缩为:
学生基本信息表、课程基本信息表和学生成绩信息表。
根据学校的情况,可按下面的步骤来分析:
确定学生所在的院系、所学的专业以及所在的班级。
确定学生所在班级的课程以及该课程学生的成绩;另外还需要知道学生所在班级、学号和学期。
分析学生的基本信息,如姓名、性别、出生年月、家庭住址、联系电话。
用户信息分析,通常包括用户名和密码。
第三章系统设计
3.1E-R模型设计
根据E—R图,将其转化为如下数据实体,数据库:
学生成绩管理系统.dbc,包括如下的表和视图:
1)学生登记表——学生表.dbf。
字段名称字段类型字段宽度
xh字符型10
xm字符型6
xb字符型2
csrq日期型8
bj字符型4
2)课程登记表——课程表.dbf。
字段名称字段类型字段宽度
kch字符型2
kcm字符型10
js字符型10
xf字符型10
3)成绩登记表——成绩表.dbf
字段名称字段类型字段宽度
xh字符型10
kch字符型2
cj数值型3
4)借书视图(lyxview)。
为了进行浏览总表的需要,需要设计了一个总表浏览视图,该视图从学生表.dbf等3个表中提取了10个字段的数据:
学生表.xh
学生表.xm
学生表.xb
学生表.csrq
学生表.bj
课程表.kch
课程表.kcm
课程表.js
课程表.xf
成绩表.cj
其视图关系可由以下SQL语句定义:
SELECT学生表.*,课程表.*,成绩表.cj;
FROM学生成绩管理系统!
学生表,学生成绩管理系统!
课程表,;
学生成绩管理系统!
成绩表;
WHERE学生表.xh=成绩表.xh;
AND课程表.kch=成绩表.kch
所建数据库如下图所示:
3.2数据表
本系统需要使用的数据如下:
3.3数据库实现
3.3.1开发环境
本系统由SQL语言编写,在VisualFoxpro6.0软件环境下可以正常运行
3.3.2系统流程图
系统流程图模块主要由刘龙洋同学设计,而系统的功能设计主要由李江滨同学完成,我主要负责程序主要功能界面的设计,下面是部分流程图:
、
3.3.3程序主要功能界面
1、登录界面的设计:
第一步:
在表单上单击鼠标右键,并在弹出菜单中选择“数据环境”项,打开数据环境设计器,添加数据表mm.dbf;
第二步:
创建表单并保存为“登录”;
第三步:
添加lable1,并设置其caption属性为“欢迎使用学生成绩管理系统!
”;
第四步:
添加lable2和text1并设置相关属性;
第五步:
添加timer控件,并设置其Enabled属性为“真”,用于设计窗口动画。
登录界面如下图所示:
2、修改密码表单的设计:
第一步:
在表单上单击鼠标右键,并在弹出菜单中选择“数据环境”项,打开数据环境设计器,添加数据表mm.dbf;
第二步:
创建表单并保存为“修改密码”;
第三步:
添加label1、label2、label3,并设置其caption属性分别为“请输入旧密码”、“请输入新密码”、“请确认新密码”;
第四步:
添加text1、text2、text3,并设置相关属性;
第五步:
添加command1和command2,并设置其caption属性分别为“确认”和“取消”;
修改密码表单如下图:
3、学生基本信息维护表单的设计:
第一步:
创建表单,并保存为学生表.scx;
第二步:
添加lable1~lable5,其caption的属性如下图所示;
第三步:
添加文本框text1~text5,并设置相关属性;
第四步:
添加“院系”、“专业”、“班级”和“学期”列表框;
第五步:
添加类,并设置相关属性,用于增添和修改学生基本信息;
第六步:
添加文本框text6,并设置相关属性;
第七步:
添加command1~command10,并设置相关属性;
第八步:
添加“返回”按钮,其功能是关闭此界面;
第九步:
执行运行命令,并进行测试。
4、课程信息维护表单的设计:
第一步:
创建表单,并保存为课程表.scx;
第二步:
添加lable1~lable4,其caption的属性如下图所示;
第三步:
添加文本框text1~text4,并设置相关属性;
第四步:
添加类,并设置相关属性,用于增添和修改课程基本信息;
第五步:
添加command1~command10,并设置相关属性
5、学生成绩信息维护表单的设计:
第一步:
创建表单,并保存为成绩表.scx;
第二步:
添加lable1~lable3,其caption的属性如下图所示;
第三步:
添加文本框text1~text3,并设置相关属性;
第四步:
添加类,并设置相关属性,用于增添和修改学生成绩基本信息;
第五步:
添加command1~command10,并设置相关属性;
第六步:
执行运行命令,并进行测试
6、浏览学生表单的设计:
第一步:
创建表单,并保存为“浏览学生.scx”;
第二步:
使用组合框生成器来生成编辑组合框,其操作步骤是:
首先选择要编辑的组合框,然后单击鼠标右键,在弹出的快捷菜单中选择“生成器”菜单项,屏幕上弹出组合框生成器窗体,设置数据环境为“学生表.dbf”。
第三步:
添加label1和列表框,并设置相关属性;
第四步:
添加command1,并设置其caption属性为“查找”。
7、浏览成绩表单的设计:
第一步:
创建表单,并保存为“浏览成绩.scx”;
第二步:
使用组合框生成器来生成编辑组合框,其操作步骤是:
首先选择要编辑的组合框,然后单击鼠标右键,在弹出的快捷菜单中选择“生成器”菜单项,屏幕上弹出组合框生成器窗体,设置数据环境为“成绩表.dbf”。
第三步:
添加label1和列表框,并设置相关属性;
第四步:
添加command1,并设置其caption属性为“查找”。
运行界面如下:
8、查询成绩表单的设计:
第一步:
创建表单,并保存为“查询成绩.scx”;
第二步:
使用组合框生成器来生成编辑组合框,其操作步骤是:
首先选择要编辑的组合框,然后单击鼠标右键,在弹出的快捷菜单中选择“生成器”菜单项,屏幕上弹出组合框生成器窗体,设置数据环境为“成绩表.dbf”。
第三步:
添加label1,并设置其caption属性为“浏览学生成绩”;
第四步:
添加command1、command2,并设置其caption属性为“查询”和“退出”。
运行界面如下:
9、学生表报表的设计:
学生表报表的设计过程说明如下:
报表数据源学生表.dbf,该表已在前面做了说明。
报表分组条件学生表.bj
报表排序条件学生表.xh
该报表由向导程序生成,其后进行了一些格式美化的调整修改工作,关键问题是要先定义好作为数据源的表文件,运行界面如下:
10、课程表报表的设计:
学生表报表的设计过程说明如下:
报表数据源课程表.dbf,该表已在前面做了说明。
报表排序条件课程表.kch
该报表由向导程序生成,其后进行了一些格式美化的调整修改工作,关键问题是要先定义好作为数据源的表文件,运行界面如下:
11、成绩表报表的设计:
成绩表报表的设计过程说明如下:
报表数据源成绩表.dbf,该表已在前面做了说明。
报表分组条件成绩表.kcm
报表排序条件学生表.xh
该报表由向导程序生成,其后进行了一些格式美化的调整修改工作,关键问题是要先定义好作为数据源的表文件,运行界面如下:
12、帮助表单的设计:
第一步:
创建表单,并保存为版权.scx;
第二步:
添加lable1~lable3,其caption的属性如下图所示;
第三步:
设置其picture属性,选择背景图片。
运行界面如下:
3.3.4程序调试情况
本系统在设计好之后,初次调试过程中一直出现编译不成功的现象,系统总是显示你所编译的目标文件不存在,找不到你所编译的目标文件路径,后来通过查资料才知道,VisualFoxpro6.0软件在对程序编译的时候默认路径为D盘,随后我们将原vf软件装入D盘,才编译成功。
编译成功之后生成可执行文件的过程如下:
第一步:
在“项目管理器”中设计完成相应的数据库、数据表、各种应用界面、菜单以及主控程序“主程序.prg”,并将“主程序.prg”设置为主文件;
第二步:
生成可执行文件。
在项目管理器中执行“连编可执行文件”创建可执行文件(.exe),单击“确定”按钮后系统打开“另存为”对话框。
将文件另存为“学生成绩管理系统”,然后单击“保存”按钮,系统将自动对项目中的所有程序进行编译。
第四章总结
在本次课程设计中,我主要负责学生成绩管理系统的界面设计。
界面设计非常重要,它是一套系统展现在使用者没面前的最终东西,它的好坏将直接影响到使用者对本套系统的认可,良好的仕途效果与平面设计,以及好的布局能给人留下深刻的印象。
在设计过程中碰到了好多问题,但最终在同学和老师的帮助下都得到了解决,在设计学生成绩管理界面时,我学会了好多在课本上学不到的东西,通过本次课程设计我也能将课本上的知识融会贯通,提到很好的辅助学习效果。
通过做课程设计,我确实学到了相当多的东西。
眼高手低是同学们的通病,有些事情看起来很同意,但做起来并不是如此。
在做本次数据库课程设计之前,我已经将课本上的东西熟练掌握,自认为做一个很简单的课程设计应该很容易,然而真正操作起来却遇到了很多的麻烦。
首先,在开始做课程设计时对整个模块的把握不够好,以至于浪费了好多时间而没能按想象中的顺利完成。
其次,在编写各个模块的程序代码时,真正感觉到了难度相当大,每次编写出来的代码都需要经过好几次修改才能顺利运行,而且在编写代码时常常会遇到一些很难解决的问题。
但是我总相信一句话“只要坚持,一千次失败过后,被会有一次闪亮的成功,凡事不能一蹴而就,对待学问、对待科研更是如此”,在做完这次课程设计之后,我也体会到了一种成功的喜悦。
同时这次课程设计也让我查到了许多在数据库学习中的漏洞,我也通过这次的实践机会完善了自己的知识,起到了很好的查缺补漏的效果。
参考文献
[1]徐亲知,陈淑华.石油经济学.第二版.哈尔滨:
黑龙江人民出版社,1988:
38-135
[2]米契尔·卡特,罗德尼·马多克.合理预期理论.余永定译.北京:
中国金融出版社,1988:
43-85
[3]张文中.论石油价格与石油工业发展.世界石油经济,1990
(2):
14-21
[4]齐中英,叶元煦.对我国能源问题的回顾与思考.邱大雄.市场经济与中国能源发展战略论文集.北京:
原子能出版社,1992:
53-58
[5]黄良君.大庆地区经济发展战略研究.哈尔滨工业大学硕士学位论文.1994:
23-30
[6]李欣.世界石油市场发展趋势预测.国务院发展研究中心信息网:
[7]AllamarajuSubrahmanyam.ProfessionalJavaServerProgrammingJ2EEEdition.WroxPress,2001
[8]Harvard,Gareth.ThematicNetworkinteachereducationinEurope.XXXJJournalofEducationforteaching,Vol.23,No.1,1997
注意:
中文用小四宋体,英文用小四TimesNewRoman。
附录:
源代码清单
1、主程序
clearall
closeall
setsysmoff
setsysmto
setnotioff
setstatbaroff
setpaleoff
setbellon
setescaon
setkeyctowind
setcarron
setconfon
setexacon//off
setnearon
setansioff
setdeleon
setoption
settalkoff
setsafetyoff
*setdefato"D:
\vf作业\"
publicxtbt
xtbt="学生成绩管理系统"
_screen.caption=xtbt
_screen.icon="linux.ico"
doform学生成绩管理系统.scx
readevents
return
2.查询成绩
clear
*setexactoff
*setdefato"D:
\vf作业\"
opendatabase学生成绩管理系统.dbc
publicskcm
skcm=thisform.pageframe1.page1.text1.text
select学生表.xh,学生表.xm,学生表.xb,学生表.csrq,学生表.bj,课程表.kcm,课程表.js,课程表.xf,成绩表.cjfrom学生表join成绩表join课程表;
on课程表.kch=成绩表.kchon学生表.xh=成绩表.xhwhere成绩表.xh=skcm
releasethisform
clear
*setdefato"D:
\vf作业\"
opendatabase学生成绩管理系统.dbc
publicskcm
skcm=thisform.pageframe1.page2.text1.text
select*fromlyxviewwherekch=skcm
releasethisform
3.登陆
clear
*setdefato"D:
\vf作业\"
usemm.dbfexcl
locaallforalltrim(mm)=alltrim(thisform.Text1.text)
if.not.eof()
messagebox("登陆成功!
")
do主菜单.MPR
doform背景.scx
relethisform
else
messagebox("密码错误",48,"警告")
endif
quit
4、修改密码
clear
closeall
usemm.dbfexcl
ifthisform.text2.text!
=thisform.text3.Text
messagebox("两次密码输入不同",48,"警告")
else
locaallforalltrim(Mm)=alltrim(thisform.Text1.text)
if.not.eof()
replaceMmwiththisform.text2.text
messagebox("密码修改成功",64,"恭喜")
else
messagebox("密码错误",48,"警告")
endif
endif
relethisform
closeall
5.浏览
closeall
opendatabase学生成绩管理系统.dbc
select*fromlyxview
selectxhas学号,xmas姓名,xbas性别,bjas班级,csrqas出生日期,kchas课程号,kcmas课程名,xfas学分,jsas教师,cjas成绩fromlyxview
clear
*setdefato"D:
\vf作业\"
opendatabase学生成绩管理系统.dbc
publicskcm
skcm=thisform.pageframe1.page2.text1.text
select*fromlyxviewwherekcm=skcm
clear
*setdefato"D:
\vf作业\"
opendatabase学生成绩管理系统.dbc
publicskcm
skcm=bo1.value
thisform.refresh()
select*fromlyxviewwherebj=skcm
6、查找
按班级名查找学生:
------------
clear
*setdefato"D:
\vf作业\"
opendatabase"data\学生成绩管理系统.dbc"
publicskcm
skcm=thisform.pageframe1.page2.text1.text
select学生表.xh,学生表.xm,学生表.xb,学生表.csrq,学生表.bj,课程表.kcm,课程表.js,课程表.xf,成绩表.cjfrom学生表join成绩表join课程表;
on课程表.kch=成绩表.kchon学生表.xh=成绩表.xhwhere学生表.bj=skcm
*************************
clear
*setdefato"D:
\vf作业\"
opendatabase学生成绩管理系统.dbc
publicskcm
skcm=thisform.pageframe1.page2.text1.text
select*fromlyxviewwherebj=skcm
*****************************
skcm=bo1.value
*********************************
按课程名查找课程:
clear
*setdefato"D:
\vf作业\"
opendatabase"data\学生成绩管理系统.dbc"
publicskcm
skcm=thisform.pageframe1.page2.text1.text
select学生表.xh,学生表.xm,学生表.xb,学生表.csrq,学生表.bj,课程表.kcm,课程表.js,课程表.xf,成绩表.cjfrom学生表join成绩表join课程表;
on课程表.kch=成绩表.kchon学生表.xh=成绩表.xhwhere课程表.kcm=skcm
查询菜单中的按学号查成绩:
clear
*setdefato"D:
\vf作业\"
opendatabase"data\学生成绩管理系统.dbc"
publicskcm
skcm=thisform.pageframe1.page1.text1.text
select学生表.xh,学生表.xm,学生表.xb,学生表.csrq,学生表.bj,课程表.kcm,课程表.js,课程表.xf,成绩表.cjfrom学生表join成绩表join课程表;
on课程表.kch=成绩表.kchon学生表.xh=成绩表.xhwhere成绩表.xh=skcm
查询菜单中的按课程号查成绩:
clear
*setdefato"D:
\vf作业\"
opendatabase"data\学生成绩管理系统.dbc"
publicskcm
skcm=thisform.pageframe1.page2.text1.text
select学生表.xh,学生表.xm,学生表.xb,学生表.csrq,学生表.bj,课程表.kch,课程表.kcm,课程表.js,课程表.xf,成绩表.cjfrom学生表join成绩表join课程表;
on课程表.kch=成绩表.kchon学生表.xh=成绩表.xhwhere课程表.kch=skcm
7.登陆窗口动画
timer1.timer
ifthisform.label1.left+thisform.label1.width<0
thisform.label1.left=thisform.width
else
thisform.label1.left=thisform.label1.left-10
endif
thisform.refresh()