河南理工大学计算机科学与技术学院课程设计报告2007—2008学年第二学期课程名称数据库课程设计设计题目学生成绩管理系统学生姓名^0^学号专业班级指导教师申自浩2008年7月1日•1问题描述1.1背景1)某大学有学生若干万名,每个学生每学期必须学习若干门课程。2)每个学生有学号、姓名、性别、班级、出生日期等基本信息。3)每门课程有课程号,课程名称、任课教师、学分等信息。4)学校需要对每个学生的基本信息、所学课程、成绩进行统一管理,以便于对信息进行查询、浏览和修改。1.2数据需求学生成绩管理系统主要用于学生成绩信息管理,据分析学生成绩管理系统的数据表可浓缩为:学生基本信息表、课程基本信息表和学生成绩信息表。根据学校的情况,可按下面的步骤来分析:(1)确定学生所在的院系、所学的专业以及所在的班级。(2)确定学生所在班级的课程以及该课程学生的成绩;另外还需要知道学生所在班级、学号和学期。(3)分析学生的基本信息,如姓名、性别、出生年月、家庭住址、联系电话。(4)用户信息分析,通常包括用户名和密码。•2解决方案(或数据库系统设计)2.1E-R模型设计课程学生班级学号出生日期姓名查询成绩任课教师课程号课程名称学分成绩性别根据E—R图,将其转化为如下数据实体,数据库:学生成绩管理系统.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语言编写,在VisualFoxpro6.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;第二步:添加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.4程序调试情况本系统在设计好之后,初次调试过程中一直出现编译不成功的现象,系统总是显示你所编译的目标文件不存在,找不到你所编译的目标文件路径,后来通过查资料才知道,VisualFoxpro6.0软件在对程序编译的时候默认路径为D盘,随后我们将原vf软件装入D盘,才编译成功。编译成功之后生成可执行文件的过程如下:第一步:在“项目管理器”中设计完成相应的数据库、数据表、各种应用界面、菜单以及主控程序“主程序.prg”,并将“主程序.prg”设置为主文件;第二步:生成可执行文件。在项目管理器中执行“连编可执行文件”创建可执行文件(.exe),单击“确定”按钮后系统打开“另存为”对话框。将文件另存为“学生成绩管理系统”,然后单击“保存”按钮,系统将自动对项目中的所有程序进行编译。3.5结论在本次课程设计中,我主要负责学生成绩管理系统的界面设计。界面设计非常重要,它是一套系统展现在使用者没面前的最终东西,它的好坏将直接影响到使用者对本套系统的认可,良好的仕途效果与平面设计,以及好的布局能给人留下深刻的印象。在设计过程中碰到了好多问题,但最终在同学和老师的帮助下都得到了解决,在设计学生成绩管理界面时,我学会了好多在课本上学不到的东西,通过本次课程设计我也能将课本上的知识融会贯通,提到很好的辅助学习效果。•结束语通过做课程设计,我确实学到了相当多的东西。眼高手低是同学们的通病,有些事情看起来很同意,但做起来并不是如此。在做本次数据库课程设计之前,我已经将课本上的东西熟练掌握,自认为做一个很简单的课程设计应该很容易,然而真正操作起来却遇到了很多的麻烦。首先,在开始做课程设计时对整个模块的把握不够好,以至于浪费了好多时间而没能按想象中的顺利完成。其次,在编写各个模块的程序代码时,真正感觉到了难度相当大,每次编写出来的代码都需要经过好几次修改才能顺利运行,而且在编写代码时常常会遇到一些很难解决的问题。但是我总相信一句话“只要坚持,一千次失败过后,被会有一次闪亮的成功,凡事不能一蹴而就,对待学问、对待科研更是如此”,在做完这次课程设计之后,我也体会到了一种成功的喜悦。同时这次课程设计也让我查到了许多在数据库学习中的漏洞,我也通过这次的实践机会完善了自己的知识,起到了很好的查缺补漏的效果。参考文献1、《关系数据库原理与系统》,宋瀚涛,梁允荣,北京理工大学出版社,19922、数据库系统设计及其应用案例分析,刘秋生,东南大学出版社,20053、数据库系统概论(第3版),王珊,高等教育出版社,20024、SQLServer数据库原理及应用教程,张丽,王强,清华大学出版社,20035、《visualfoxpro应用于开发案例教程》,徐谡,清华大学出版社20056、《VisualFoxPro6.0数据库原理与应用》,胡晓燕,西安电子科技大学出版社7、《VisualFoxPro6.0程序设计教程》,刘瑞新,文成林机械工业出版社附录:源代码清单1、主程序clearallcloseallsetsysmoffsetsysmtosetnotioffsetstatbaroffsetpaleoffsetbellonsetescaonsetkeyctowindsetcarronsetconfonsetexacon//offsetnearonsetansioffsetdeleonsetoptionsettalkoffsetsafetyoff*setdefatoD:\vf作业\publicxtbtxtbt=学生成绩管理系统_screen.caption=xtbt_screen.icon=linux.icodoform学生成绩管理系统.scxreadeventsreturn2.查询成绩clear*setexactoff*setdefatoD:\vf作业\opendatabase学生成绩管理系统.dbcpublicskcmskcm=thisform