《刘文洲数据库课程设计.doc》由会员分享,可在线阅读,更多相关《刘文洲数据库课程设计.doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流刘文洲数据库课程设计.精品文档.数据库原理课程设计一、概述 数据库的普及,学校利用数据库,设计的学生管理系统,大大减少了学校学生管理的工作量。通过对学校日常教学管理中的课程、选课、学生、班级、教师、成绩等相关内容进行分析,完成具有学生管理、成绩管理、班级管理、教师管理、课程管理等相关功能的小型数据库管理应用系统。 通过课程设计,使学生掌握数据库的基本概念,结合实际的操作和设计,巩固课堂教学内容,使学生掌握数据库系统的基本概念、原理和技术,将理论与实际相结合,应用现有的数据建模工具和数据库管理系统软件,规范、科学地完成一个小型数据库的设计与实现
2、,把理论课与实验课所学内容做一综合,并在此基础上强化学生的实践意识、提高其实际动手能力和创新能力。设计环境:本学期学习了PB,在这里就采用PB环境进行数据库原理课程设计。二、需求分析1、问题的提出:为了对数据库的学习进行深入的理解和使用,做一个高效率的学生信息管理管理系统,进行本次的数据库课程设计。2、需完成的功能: 通过对学校日常教学管理中的课程、选课、学生、班级、教师、成绩等相关内容进行分析,完成具有学生管理、成绩管理、班级管理、教师管理、课程管理等相关功能的小型数据库管理应用系统。3、E-R图:课程信息表学分教师号课程号课程名学时学生信息表学号姓名专业年龄系别性别选课成绩课程号学号教师信
3、息表教师号教师名教师性别教课教师系别成绩三、数据表:数据项是数据库的关系中不可再分的数据单位,下表分别列出了数据的名称、数据类型、长度、取值能否为空。设计学生成绩管理数据库,包括课程、学生、教师、成绩四个关系, 其关系模式中对每个实体定义的属性如下:课程信息表course:(课程号,课程名,教师号,学分,学时)学生信息表info:(学号,姓名,性别,年龄,专业,系别)成绩信息表Exam:(学号号,课程名,成绩)教师信息表Teacher:(教师号,教师名,教师性别,教师系别)1、课程信息表(course)字段名描述数据类型字段限制cno课程号char(10)主关键字cname课程名char(10
4、)不能为空teano教师号char(10)不能为空credit学分char(4)不能为空ctime学时char(50)不能为空2、学生信息表(info)字段名描述数据类型字段权限sno学号char(10)主关键字sname姓名char(10)不能为空ssex性别char(2)不能为空sage 年龄char(2)不能为空major专业char(10)不能为空depart系别char(10)不能为空3.教师表(teacher)字段名属 性数据类型字段权限teano教师号char(10)主关键字tname教师名char(10)不能为空Tsex教师性别char(2)不能为空Tdepart教室系别cha
5、r(10)不能为空4.成绩表(Exam)字段名属 性数据类型字段权限sno学号char(10)主关键字cno课程名char(10)不能为空degree成绩char(10)不能为空四、视图,索引,数据库权限:createviewtemp(sno,sname,cname,score)asselectinfo.sno,info.sname,ame,exam.scorefrominfo,exam,coursewhereinfo.sno=exam.snoando=oCREATEUNIQUEINDEXSTUSNOONinfo(sno);GRANTSELECTONTABLEexamTOPUBLIC;五、软件
6、功能设计功能表: 系统维护(下设系统退出) 信息录入(下设学生基本信息录入|学生成绩录入) 信息查询(下设学生基本信息查询|学生成绩查询*) 报表功能描述:退出系统:退出程序。学生数据输入:输入学号、姓名、性别、年龄、出生年月等学生基本信息。成绩输入:输入各学期学生考试成绩。学生信息查询:查询学生基本信息。学生成绩查询:查询学生考试成绩。按年级输出报表:输出全年级学生各科目考试成绩。按班级输出报表:输出全班学生各科目考试成绩。六、程序代码及控件描述启动封面:(w_start)Open事件代码:SQLCA.dbms=ODBCSQLCA.database=SQLCA.userid=SQLCA.db
7、pass=SQLCA.logid=SQLCA.logpass=SQLCA.dbparm=ConnectString=DSN=student;UID=dba;PWD=sqlSQLCA.lock=SQLCA.autocommit=falseconnectusingSQLCA;IFSQLCA.Sqlcode0thenmessagebox(无法连接数据库!,SQLCA.sqlerrtext)close(w_start)/else/open(w_startscc)endifCommandButton.text=“进入系统”CommandButtonclicked事件代码:open(w_main)clos
8、e(w_start)主程序窗口(w_main):title=“学生信息管理系统”包含菜单m_main窗口(w_infoinput)Open事件代码:dw_1.SetTransObject(SQLCA)dw_1.Retrieve()控件datawindow的dataobject属性:i_info(一个freeform风格的数据窗口对象,显示info表的全部列)commandbutton(text属性:保存)clicked事件的代码:dw_1.Update()commandbutton(text属性:取消)clicked事件的代码:dw_1.Retrieve()commandbutton(text
9、属性:插入)clicked事件的代码:dw_1.InsertRow(dw_1.GetRow()commandbutton(text属性:删除)clicked事件的代码:dw_1.DeleteRow(dw_1.GetRow()窗口(w_scoreinput)Open事件代码:dw_1.SetTransObject(SQLCA)dw_1.Retrieve()控件datawindow的dataobject属性:i_score(一个freeform风格的数据窗口对象,显示exam表的全部列)commandbutton(text属性:保存)clicked事件的代码:dw_1.Update()comman
10、dbutton(text属性:取消)clicked事件的代码:dw_1.Retrieve()commandbutton(text属性:插入)clicked事件的代码:dw_1.InsertRow(dw_1.GetRow()commandbutton(text属性:删除)clicked事件的代码:dw_1.DeleteRow(dw_1.GetRow()窗口(w_query)控件statictext的text属性:“请输入学号:”控件groupbox包含24个statictext控件,它们的text属性分别对应info表的字段名和查询结果控件SingleLineEdit的text属性为nullco
11、mmandbutton(text属性:查询)clicked事件的代码:Connect;ifSQLCA.SQLCode0THENMessageBox(数据库错误,SQLCA.SQLErrText,Exclamation!)ENDIF窗口(w_squery)控件groupbox(text属性为:“选择查询模式”)包含2个RadioButton控件,它们的text属性分别为按年级查询和按班级查询控件SingleLineEdit(text属性为Null)功能为获得输入的年级/班级编号控件CommandButton(text属性为确定)的Clicked事件代码:integernintegerslensl
12、en=Len(sle_1.text)n=asc(sle_1.text)-48if(slen1orslen=0)thenmessagebox(错误,数据非法!)sle_1.text=elseif(n9)thenmessagebox(错误,数据非法!)endifconnectusingSQLCA;ifrb_1.checked=truethenselectinfo.sno,info.sname,o,ame,exam.scorefrominfo,course,examwhereinfo.sno=exam.snoand,o=oandinfo.grade=nendififrb_2.checked=true
13、thenselectinfo.sno,info.sname,o,ame,exam.scorefrominfo,course,examwhereinfo.sno=exam.snoand,o=oandinfo.class=nendif窗口(w_table)控件groupbox(text属性为:“选择模式”)包含2个RadioButton控件,它们的text属性分别为按年级输出和按班级输出控件SingleLineEdit(text属性为Null)功能为获得输入的年级/班级编号控件CommandButton(text属性为确定)的Clicked事件代码:integernintegerslenslen=
14、Len(sle_1.text)n=asc(sle_1.text)-48if(slen1orslen=0)thenmessagebox(错误,数据非法!)sle_1.text=elseif(n9)thenmessagebox(错误,数据非法!)endifconnectusingSQLCA;ifrb_1.checked=truethenselect*fromdep_exam,infowhereinfo.grade=nendififrb_2.checked=truethenselect*fromdep_exam,infowhereinfo.class=n主菜单(m_main)代码:退出系统click
15、ed事件的代码:close(w_main)学生基本信息输入clicked事件的代码:Open(w_infoinput)学生成绩输入clicked事件的代码:Open(w_scoreinput)学生基本信息查询clicked事件的代码:Open(w_query)学生成绩查询clicked事件的代码:Open(w_squery)报表clicked事件的代码:Open(w_table)七、设计心得 通过这次课程设计,学到很多很多以前没有接触过的东西,除了提高了自己开发数据库系统的能力,培养了多方面思考问题的能力,是我这次课程设计最大的收获。在设计的过程中遇到过各种各样的问题,因为这个学期初次接触po
16、werbuilder,而且在平常的上机实验过程中没有涉及到学习过这个软件,一开始确实是感觉到不知所措,无从下手,但是借助参考图书馆的资料和以前别人开发的例子,还是慢慢的对它熟悉起来,最终完成了学校日程管理系统课程设计。 通过这次课程设计加深了我对数据库基础理论和基本知识的理解,使我很好的掌握了数据库应用系统设计开发的基本方法,并且提高了我综合运用所学知识和增强实际动手能力。 通过这个设计,我了解到一个大型的计算机管理系统必须有一个正确的设计指导思想,通过合理的选择数据结构,操作系统以及开发环境,构成一个完善的系统,才能充分发挥计算机信息管理优势。因为数据库的设计需要人性化,考虑各个方面的问题,这就需要设计者本身有这方面的能力。同时也反映出自己的许多不足,掌握知识不是很牢固,很难把书本上的知识运用到实际,这是自己的一个缺点和不足,同时我还发现自己考虑问题不够全面,有的问题是实际操作中会遇到的,但是自己却很难把这一问题体现在设计中并很好的解决它。这是以后学习中需要引以为戒的地方。这个系统的功能虽然有所欠缺,但是心理还是比较高兴的,因为这是到目前为止自己开发的第一个实用系统,在以后的学习中一定回经常复习数据库的知识,一步步的提高自己的开发数据库系统的能力。