《数据库技术》课程设计报告.pdf
目 录 一 课程设计的目的意义2 二 需求分析2 三 数据库系统设计4 四 系统设计与实现5 五 总结 13 -2-学生管理系统设计 一、系统设计的目的意义 学生是个庞大的社会群体,他们在校学习时间较长,因此为了实现学生个人信息以及成绩信息的有效管理,需要一个专门的系统来实现此项功能。所以学生管理系统的设计是必要的。二、系统需求分析 1用户的功能需求 从学生学籍和个人基本信息方面考虑,学生管理系统应该在这两方面有所体现,主要包括一下几项功能:(1)系统登录 为保证学生信息的安全,要求登录系统时有密码管理功能。本系统将它分为管理员和用户两种方式。(2)信息管理 用于对学生基本信息和成绩信息进行管理,可以增加或删除。(3)信息浏览 将所有学生的成绩信息或个人基本信息显示在界面上,已达到浏览的目的。(4)信息查询 该项功能可以实现对某个学生信息的精确查询,也可以实现模糊查询,即查询某一类学生信息,如姓王的学生的信息。(5)信息修改 对学生的个人信息和成绩进行必要的修改。(6)信息报表 将学生的个人信息和成绩信息以报表的形式表现出来,方便打印输出。(7)退出系统 从系统的使用状态中退出。2用户的安全性要求 为了保证学生信息的安全,在进入系统之前要求进行身份确认,该项功-3-能由登录界面实现。一旦身份验证成功就可以进入系统,如果三次进入都失败了,则会强行退出系统。3系统功能模块结构图 图 2-1系统功能模块图 信息管理:对学生的个人信息和成绩信息进行系统管理。该项功能可以通过逐个学生信息的浏览来详细了解学生信息,并对学生信息进行增加或删除操作。信息浏览:该项功能的实现采用了表格的显示方法,通过在表单中添加表格控件来实现学生信息的整体浏览。信息查询:从以上的结构图可以看出,查询功能可以有两种形式。通过模糊查询可以浏览到具有某些相同信息的学生的情况,便于对某一信息的整体把握。详细查询,则是查询某一个个人信息。用户登录界面 信息查询 信息报表 信息修改 信息浏览 信息管理 成绩信息管理 学生个人信息管理 成绩信息浏览 学生个人信息浏览 学生个人信息查询 成绩查询 学生个人信息修改 成绩修改 学生个人信息报表 成绩报表 模糊查询 详细查询 -4-信息修改:当学生的个人信息或成绩信息发生改变或原始记录有误时,可以用此项功能实现修正。信息报表:用报表的形式显示学生个人信息和成绩信息。三、数据库系统设计 根据系统需求分析,设计每个数据表的结构如下:密码表 学生成绩表 字段名 类型 宽度 小数位数 学号 字符型 10 0 姓名 字符型 10 0 班级 字符型 10 0 课程 字符型 20 0 学期 字符型 4 0 成绩 数值型 10 2 学生基本信息表 字段名 类型 宽度 姓名 字符型 10 性别 字符型 2 民族 字符型 10 出生日期 日期型 8 字段名 类型 宽度 密码 字符型 10 操作员 字符型 10 -5-学号 字符型 10 班级 字符型 10 政治面貌 字符型 10 籍贯 字符型 10 家庭住址 字符型 20 照片 通用型 4 备注 备注型 4 四、系统设计与实现 1系统登录功能实现 功能描述 运用表单显示登录界面,并在登录时进行身份验证,只有身份满足并且密码正确时,才能进入。在输入密码时,每个人都有三次机会,一旦三次都未能进入系统,就会强行退出。图 4-1 用户登录界面图 系统代码实现 登录按钮的 click 事件源代码:local czy,mm -6-czy=allt(bo1.value)mm=allt(thisform.text1.value)locate for(操作员)=czy if allt(操作员)=czy.and.allt(密码)=mm messagebox(欢迎+czy+进入本系统,0+48,提示信息)thisform.release else n=n+1 if n=2 messagebox(密码有误,你还有+str(3-n,2)+次机会,重新输入!,0+16,提示信息)thisform.text1.value=thisform.text1.setfocus else messagebox(您没有权利进入本系统!,0+16,提示信息)thisform.release endif endif 退出按钮的click事件:local qn qn=messagebox(确定退出,4+16+0,退出窗口)if qn=6 thisform.release endif 2数据录入删除功能实现 功能描述 同样采用表单显示界面,通过按钮上 caption 的提示可以进行相关的增删操作,并且在增删后提供保存功能。-7-图 4-2 数据录入删除界面 系统代码实现(以学生成绩信息为例)添加按钮的 click 事件源代码:locate for allt(学号)=if.not.found()append blank go bottom endif thisform.txt 学号.setfocus n=n+1 thisform.txt 姓名.value=thisform.txt 学号.value=thisform.txt 班级.value=thisform.txt 学期.value=thisform.txt 课程.value=thisform.txt 成绩.value=mand1.enabled=mand2.enabled=.f.-8-mand3.enabled=mand4.enabled=mand5.enabled=mand6.enabled=mand7.enabled=mand8.enabled=.t.thisform.refresh 保存按钮的 click 事件源代码:if empty(thisform.txt姓 名.value).or.empty(thisform.txt学号.value).or.empty(thisform.txt 班级.value);.or.empty(thisform.txt 学期.value).or.empty(thisform.txt课程.value).or.empty(thisform.txt 成绩.value)messagebox(记录不能为空,不能保存!)else go 1 locate next recno()-1for 学号=allt(thisform.txt 学号.value)if found()if messagebox(该记录已存在,要替换吗?,1+48,警告)=1 repl 姓名 with alltrim(thisform.txt 姓名.value)repl 学号 with alltrim(thisform.txt 学号.value)repl 班级 with alltrim(thisform.txt 班级.value)repl 课程 with alltrim(thisform.txt 课程.value)endif else go bottom repl 姓名 with alltrim(thisform.txt 姓名.value)repl 学号 with alltrim(thisform.txt 学号.value)repl 班级 with alltrim(thisform.txt 班级.value)repl 学期 with alltrim(thisform.txt 学期.value)-9-endif mand1.enabled=mand2.enabled=mand3.enabled=mand4.enabled=mand5.enabled=mand6.enabled=mand7.enabled=mand8.enabled=.t.endif thisform.refresh 删除按钮的 click 事件源代码:if messagebox(确实要删除该记录吗?,1+64+256,提示)=1 dele pack endif thisform.refresh 3.系统查询功能实现 功能描述 该项功能又细分为模糊查询和详细查询,可以满足用户不同的要求,模糊查询可以浏览具有相似部分的一类信息,而详细查询则精确到个体,并且在这种查询中,采用 optiongroup 实现不同方式的查询。-10-图 4-3 数据查询界面(详细查询)图 4-3 数据查询界面(模糊查询)系统代码实现(以学生成绩信息为例)详细查询按钮的 click 事件源代码:if empty(thisform.text1.value)messagebox(不能为空!)else do case case thisform.optiongroup1.value=1 locate for allt(xschengji.学号)=allt(thisform.text1.value)case thisform.optiongroup1.value=2 -11-locate for allt(xschengji.姓名)=allt(thisform.text1.value)endcase if.not.found()messagebox(没有符合条件的记录!,1+32,信息)endif endif thisform.refresh 模糊查询按钮的 click 事件源代码:local xm xm=allt(thisform.text1.value)select*from xschengji where xm$xschengji.姓名=.t.;order by xschengji.学号 thisform.release 4.信息浏览功能实现 功能描述 运用表格将全体有记录的学生信息显示出来。图 4-4 数据浏览界面 系统代码实现 该功能不涉及代码编写,但要正确添加数据环境。5.信息修改功能实现 -12-功能描述 当学生的个人信息或成绩信息发生改变或原始记录有误时,可以用此项功能实现修正。图 4-5 数据修改界面 系统代码实现(以学生成绩信息为例)修改按钮的 click 事件源代码:if empty(thisform.text1.value)messagebox(请输入学号!)else locate for allt(学号)=allt(thisform.text1.value)thisform.txt 姓名.setfocus if.not.found()messagebox(查无此人!)else thisform.txt 姓名.readonly=.t.thisform.txt 学号.readonly=.t.thisform.txt 班级.readonly=.t.thisform.txt 学期.readonly=.f.thisform.txt 课程.readonly=.f.-13-thisform.txt 成绩.readonly=mand1.enabled=mand2.enabled=mand3.enabled=.t.endif endif thisform.refresh 保存按钮的 click 事件源代码:repl 姓名 with alltrim(thisform.txt 姓名.value)repl 课程 with alltrim(thisform.txt 课程.value)repl 学号 with alltrim(thisform.txt 学号.value)repl 班级 with alltrim(thisform.txt 班级.value)repl 学期 with alltrim(thisform.txt 学期.value)mand1.enabled=mand2.enabled=mand3.enabled=.t.五、总结 本次课程设计,让我学到了很多新的知识点。中间也出现了很多问题,有些问题是书本上不曾提到的,通过和其他同学交流,均获得了成功的解答,但有些问题并不是在代码中可修改的,也就是说,有些部分涉及了很细节性的东西,比如说输入法的不同导致出错。在这次的设计过程中,出现了一个让我十分头疼的问题,就是在执行“删除”功能时,一直出现“文件必须以独占方式打开”的信息,但是通过检查在选择打开方式的复选框中确实选择的是“独占”。后来通过上网查资料,发现在添加数据环境时属性设置出错。这个问题给了我一个启示,在学习过程中,要仔细,应该经常动手实践,这样一来就能及早发现问题,解决问题。通过本次的课程设计,自己在数据库的理论和实践知识上,都有了一定程度的提高,也发现了许多学习过程中的纰漏,我将总结这一次的经验,在以后的学习中努力改正。