数据库学生成绩管理系统课程设计(共13页).doc
精选优质文档-倾情为你奉上河南理工大学计算机科学与技术学院课程设计报告200 7 200 8 学年第 二 学期课程名称 数据库课程设计 设计题目 学生成绩管理系统 学生姓名 0 学 号 专业班级 指导教师 申自浩 2008 年 7 月 1 日专心-专注-专业 1 问题描述 1.1 背景 1)某大学有学生若干万名,每个学生每学期必须学习若干门课程。 2)每个学生有学号、姓名、性别、班级、出生日期等基本信息。 3)每门课程有课程号,课程名称、任课教师、学分等信息。 4)学校需要对每个学生的基本信息、所学课程、成绩进行统一管理,以便于对信息进行查询、浏览和修改。1.2 数据需求 学生成绩管理系统主要用于学生成绩信息管理,据分析学生成绩管理系统的数据表可浓缩为:学生基本信息表、课程基本信息表和学生成绩信息表。根据学校的情况,可按下面的步骤来分析:(1) 确定学生所在的院系、所学的专业以及所在的班级。(2) 确定学生所在班级的课程以及该课程学生的成绩;另外还需要知道学生所在班级、学号和学期。(3) 分析学生的基本信息,如姓名、性别、出生年月、家庭住址、联系电话。(4) 用户信息分析,通常包括用户名和密码。 2 解决方案 ( 或数据库系统设计 ) 性别2.1 E-R 模型设计 课程学生班级学号出生日期姓名查询成绩任课教师课程号课程名称学分成绩 根据ER图,将其转化为如下数据实体,数据库:学生成绩管理系统.dbc,包括如下的表和视图:1) 学生登记表学生表.dbf。字段名称 字段类型 字段宽度xh 字符型 10xm 字符型 6xb 字符型 2csrq 日期型 8bj 字符型 42) 课程登记表课程表.dbf。 字段名称 字段类型 字段宽度kch 字符型 2kcm 字符型 10js 字符型 10xf 字符型 103) 成绩登记表成绩表.dbf字段名称 字段类型 字段宽度xh 字符型 10kch 字符型 2cj 数值型 34) 借书视图(lyxview)。为了进行浏览总表的需要,需要设计了一个总表浏览视图,该视图从学生表.dbf等3个表中提取了10个字段的数据:学生表.xh学生表.xm学生表.xb学生表.csrq学生表.bj课程表.kch课程表.kcm课程表.js课程表.xf成绩表.cj其视图关系可由以下SQL语句定义:SELECT 学生表.*, 课程表.*, 成绩表.cj; FROM 学生成绩管理系统!学生表, 学生成绩管理系统!课程表,; 学生成绩管理系统!成绩表; WHERE 学生表.xh = 成绩表.xh; AND 课程表.kch = 成绩表.kch所建数据库如下图所示:2.2 数据表 本系统需要使用的数据如下:3 系统实现 3.1 开发环境 本系统由SQL语言编写,在Visual Foxpro 6.0软件环境下可以正常运行3.2 系统流程图 系统流程图模块主要由刘龙洋同学设计,而系统的功能设计主要由李江滨同学完成,我主要负责程序主要功能界面的设计,下面是部分流程图:开始用户登陆界面总表浏览成绩报表课程报表学生报表版权所有查询维护表记录浏览成绩浏览课程浏览学生更改口令系统维护浏览查询报表帮助、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;第二步:添加lable1lable5,其caption的属性如下图所示 ;第三步: 添加文本框text1text5,并设置相关属性;第四步:添加“院系”、“专业”、“班级”和“学期”列表框;第五步:添加类,并设置相关属性,用于增添和修改学生基本信息;第六步:添加文本框text6,并设置相关属性;第七步:添加command1command10,并设置相关属性;第八步:添加“返回”按钮,其功能是关闭此界面;第九步:执行运行命令,并进行测试。4、课程信息维护表单的设计:第一步:创建表单,并保存为课程表.scx;第二步:添加lable1lable4,其caption的属性如下图所示 ;第三步: 添加文本框text1text4,并设置相关属性;第四步:添加类,并设置相关属性,用于增添和修改课程基本信息;第五步:添加command1command10,并设置相关属性5、学生成绩信息维护表单的设计:第一步:创建表单,并保存为成绩表.scx;第二步:添加lable1lable3,其caption的属性如下图所示 ;第三步: 添加文本框text1text3,并设置相关属性;第四步:添加类,并设置相关属性,用于增添和修改学生成绩基本信息;第五步:添加command1command10,并设置相关属性;第六步:执行运行命令,并进行测试 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;第二步:添加lable1lable3,其caption的属性如下图所示 ;第三步: 设置其picture属性,选择背景图片。 运行界面如下:3.4程序调试情况 本系统在设计好之后,初次调试过程中一直出现编译不成功的现象,系统总是显示你所编译的目标文件不存在,找不到你所编译的目标文件路径,后来通过查资料才知道,Visual Foxpro 6.0软件在对程序编译的时候默认路径为D盘,随后我们将原vf软件装入D盘,才编译成功。编译成功之后生成可执行文件的过程如下:第一步:在“项目管理器”中设计完成相应的数据库、数据表、各种应用界面、菜单以及主控程序“主程序.prg”,并将“主程序.prg”设置为主文件;第二步:生成可执行文件。在项目管理器中 执行“连编可执行文件”创建可执行文件(.exe),单击“确定”按钮后系统打开“另存为”对话框。将文件另存为“学生成绩管理系统”,然后单击“保存”按钮,系统将自动对项目中的所有程序进行编译。3.5 结论 在本次课程设计中,我主要负责学生成绩管理系统的界面设计。界面设计非常重要,它是一套系统展现在使用者没面前的最终东西,它的好坏将直接影响到使用者对本套系统的认可,良好的仕途效果与平面设计,以及好的布局能给人留下深刻的印象。在设计过程中碰到了好多问题,但最终在同学和老师的帮助下都得到了解决,在设计学生成绩管理界面时,我学会了好多在课本上学不到的东西,通过本次课程设计我也能将课本上的知识融会贯通,提到很好的辅助学习效果。 结束语 通过做课程设计,我确实学到了相当多的东西。眼高手低是同学们的通病,有些事情看起来很同意,但做起来并不是如此。在做本次数据库课程设计之前,我已经将课本上的东西熟练掌握,自认为做一个很简单的课程设计应该很容易,然而真正操作起来却遇到了很多的麻烦。首先,在开始做课程设计时对整个模块的把握不够好,以至于浪费了好多时间而没能按想象中的顺利完成。其次,在编写各个模块的程序代码时,真正感觉到了难度相当大,每次编写出来的代码都需要经过好几次修改才能顺利运行,而且在编写代码时常常会遇到一些很难解决的问题。但是我总相信一句话“只要坚持,一千次失败过后,被会有一次闪亮的成功,凡事不能一蹴而就,对待学问、对待科研更是如此”,在做完这次课程设计之后,我也体会到了一种成功的喜悦。同时这次课程设计也让我查到了许多在数据库学习中的漏洞,我也通过这次的实践机会完善了自己的知识,起到了很好的查缺补漏的效果。参考文献1、关系数据库原理与系统,宋瀚涛,梁允荣,北京理工大学出版社,19922、数据库系统设计及其应用案例分析,刘秋生,东南大学出版社,20053、数据库系统概论(第3版),王珊,高等教育出版社,20024、SQL Server数据库原理及应用教程,张丽,王强,清华大学出版社,20035、visual foxpro应用于开发案例教程,徐谡, 清华大学出版社20056、,胡晓燕, 西安电子科技大学出版社7、Visual FoxPro 6.0程序设计教程,刘瑞新, 文成林 机械工业出版社附录:源代码清单 1、主程序clear allclose allset sysm offset sysm toset noti offset stat bar offset pale offset bell onset esca onset keyc to windset carr onset conf onset exac on /offset near onset ansi offset dele onset opti onset talk offset safety off*set defa to "D:vf作业"public xtbtxtbt="学生成绩管理系统"_screen.caption=xtbt_screen.icon="linux.ico"do form 学生成绩管理系统.scxread eventsreturn2.查询成绩clear*set exact off*set defa to "D:vf作业"open database 学生成绩管理系统.dbcpublic skcmskcm=thisform.pageframe1.page1.text1.textselect 学生表.xh,学生表.xm,学生表.xb,学生表.csrq,学生表.bj,课程表.kcm,课程表.js,课程表.xf,成绩表.cj from 学生表 join 成绩表 join 课程表;on 课程表.kch=成绩表.kch on 学生表.xh=成绩表.xh where 成绩表.xh = skcmrelease thisformclear*set defa to "D:vf作业"open database 学生成绩管理系统.dbcpublic skcmskcm=thisform.pageframe1.page2.text1.textselect * from lyxview where kch=skcmrelease thisform3.登陆clear*set defa to "D:vf作业"use mm.dbf exclloca all for alltrim(mm)=alltrim(thisform.Text1.text)if .not.eof()messagebox("登陆成功!")do 主菜单.MPRdo form 背景.scxrele thisformelsemessagebox("密码错误",48,"警告")endifquit4、修改密码clearclose alluse mm.dbf exclif thisform.text2.text!=thisform.text3.Textmessagebox("两次密码输入不同",48,"警告")else loca all for alltrim(Mm)=alltrim(thisform.Text1.text)if .not.eof() replace Mm with thisform.text2.text messagebox("密码修改成功",64,"恭喜")else messagebox("密码错误",48,"警告")endifendifrele thisformclose all5.浏览close allopen database 学生成绩管理系统.dbcselect * from lyxviewselect xh as 学号,xm as 姓名,xb as 性别,bj as 班级,csrq as 出生日期,kch as 课程号,kcm as 课程名,xf as 学分,js as 教师,cj as 成绩 from lyxviewclear*set defa to "D:vf作业"open database 学生成绩管理系统.dbcpublic skcmskcm=thisform.pageframe1.page2.text1.textselect * from lyxview where kcm=skcmclear*set defa to "D:vf作业"open database 学生成绩管理系统.dbcpublic skcmskcm=bo1.valuethisform.refresh()select * from lyxview where bj=skcm6、查找按班级名查找学生:clear*set defa to "D:vf作业"open database "data学生成绩管理系统.dbc"public skcmskcm=thisform.pageframe1.page2.text1.textselect 学生表.xh,学生表.xm,学生表.xb,学生表.csrq,学生表.bj,课程表.kcm,课程表.js,课程表.xf,成绩表.cj from 学生表 join 成绩表 join 课程表;on 课程表.kch=成绩表.kch on 学生表.xh=成绩表.xh where 学生表.bj=skcm*clear*set defa to "D:vf作业"open database 学生成绩管理系统.dbcpublic skcmskcm=thisform.pageframe1.page2.text1.textselect * from lyxview where bj=skcm*skcm=bo1.value*按课程名查找课程:clear*set defa to "D:vf作业"open database "data学生成绩管理系统.dbc"public skcmskcm=thisform.pageframe1.page2.text1.textselect 学生表.xh,学生表.xm,学生表.xb,学生表.csrq,学生表.bj,课程表.kcm,课程表.js,课程表.xf,成绩表.cj from 学生表 join 成绩表 join 课程表;on 课程表.kch=成绩表.kch on 学生表.xh=成绩表.xh where 课程表.kcm=skcm查询菜单中的按学号查成绩:clear*set defa to "D:vf作业"open database "data学生成绩管理系统.dbc"public skcmskcm=thisform.pageframe1.page1.text1.textselect 学生表.xh,学生表.xm,学生表.xb,学生表.csrq,学生表.bj,课程表.kcm,课程表.js,课程表.xf,成绩表.cj from 学生表 join 成绩表 join 课程表;on 课程表.kch=成绩表.kch on 学生表.xh=成绩表.xh where 成绩表.xh=skcm查询菜单中的按课程号查成绩:clear*set defa to "D:vf作业"open database "data学生成绩管理系统.dbc"public skcmskcm=thisform.pageframe1.page2.text1.textselect 学生表.xh,学生表.xm,学生表.xb,学生表.csrq,学生表.bj,课程表.kch,课程表.kcm,课程表.js,课程表.xf,成绩表.cj from 学生表 join 成绩表 join 课程表;on 课程表.kch=成绩表.kch on 学生表.xh=成绩表.xh where 课程表.kch=skcm7.登陆窗口动画timer1.timerif thisform.label1.left+thisform.label1.width<0thisform.label1.left=thisform.widthelsethisform.label1.left=thisform.label1.left-10endifthisform.refresh()