数据库课程设计.docx
《数据库课程设计.docx》由会员分享,可在线阅读,更多相关《数据库课程设计.docx(40页珍藏版)》请在冰豆网上搜索。
数据库课程设计
《数据库课程设计》
题目:
学生管理系统
学号:
班级:
姓名:
指导教师:
日期:
2007年1月12日星期五
第一章需求分析
1.1学生管理系统应具有的主要功能
1.1.1系统需求
通过调查,要求系统需要有以下功能:
由于操作人员的计算机知识普遍较差,要求有良好的人机界面;
由于该系统的使用对象多,要求有较好的权限管理;
原始数据修改简单方便,支持多条件修改
方便的数据查询,支持多条件查询;
在相应的权限下,删除数据方便简单,数据稳定性好;
数据计算自动完成,尽量减少人工干预;
1.1.2可行性分析
由于本系统管理的对象单一,都是在校学生,且每个数据内容具有较强的关联性,涉及的计算过程不是很复杂。
因此,比较适合于采用数据库管理。
且学校用于学生管理的微机都是PIII以上的机器,在存储量、速度方面都能满足数据库运行的要求。
在技术难度方面,由于有指导老师的指导和相关参考文献,特别是网上资料,特别是参考其它程序的功能,因此完全可以实现。
本系统的设计是在WindowsXP中文版操作系统环境下,使用VisualBasic6.0中文版开发成功的。
数据库是MIS中的重要支持技术,在MIS开发过程中,如何选择数据库管理是一个重要的问题,目前,数据库产品较多,每种产品都具有各自的特点和适用范围,因此,在选择数据库时,应考虑数据库应用的特点及适用范围,本系统选用的数据库语言介绍如下:
VisualBasic语言
VisualBasic是一种可视化的、面对对象和条用事件驱动方式的结构化高级程序设计,可用于开发Windows环境下的种类应用程序。
它简单易学、效率高,且功能强大,可以与Windows的专业开发工具SDK相媲美,而且程序开发人员不必具有C/C++编程基础。
在VisualBasic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的应用程序接口(API)函数,以及动态链接库(DLL)、动态数据交换(DDE)、对象的链接与嵌入(OLE)、开放式数据访问(ODBC)等技术,可以高效、快速地开发出Windows环境下功能强大、图形界面丰富的应用软件系统。
总的来说,VisualBasic具有以下特点:
可视化编程:
用传统程序设计语言设计程序时,都是通过编写程序代码来设计用户界面,在设计过程中看不到界面的实际显示效果,必须编译后运行程序才能观察。
如果对界面的效果不满意,还要回到程序中修改。
有时候,这种编程-编译-修改的操作可能要反复多次,大大影响了软件开发效率。
VisualBasic提供了可视化设计工具,把Windows界面设计的复杂性“封装”起来,开发人员不必为界面设计而编写大量程序代码。
只需要按设计要求的屏幕布局,用系统提供的工具,在屏幕上画出各种“部件”,即图形对象,并设置这些图形对象的属性。
VisualBasic自动产生界面设计代码,程序设计人员只需要编写实现程序功能的那部分代码,从而可以大大提高程序设计的效率。
面向对象的程序设计
4.0版以后的VisualBasic支持面向对象的程序设计,但它与一般的面向对象的程序设计语言(C++)不完全相同。
在一般的面向对象程序设计语言中,对象由程序代码和数据组成,是抽象的概念;而VisualBasic则是应用面向对象的程序设计方法(OOP),把程序和数据封装起来作为一个对象,并为每个对象赋予应有的属性,使对象成为实在的东西。
在设计对象时,不必编写建立和描述每个对象的程序代码,而是用工具画在界面上,VisualBasic自动生成对象的程序代码并封装起来。
每个对象以图形方式显示在界面上,都是可视的。
结构化程序设计语言
VisualBasic是在BASIC语言的基础上发展起来的,具有高级程序设计语言的语句结构,接近于自然语言和人类的逻辑思维方式。
VisualBasic语句简单易懂,其编辑器支持彩色代码,可自动进行语法错误检查,同时具有功能强大且使用灵活的调试器和编译器。
VisualBasic是解释型语言,在输入代码的同时,解释系统将高级语言分解翻译成计算机可以识别的机器指令,并判断每个语句的语法错误。
在设计VisualBasic程序的过程中,随时可以运行程序,而在整个程序设计好之后,可以编译生成可执行文件(.EXE),脱离VisualBasic环境,直接在Windows环境下运行。
事件驱动编程机制
VisualBasic通过事件来执行对象的操作。
一个对象可能会产生多个事件,每个事件都可以通过一段程序来响应。
例如,命令按钮是一个对象,当用户单击该按钮时,将产生一个“单击“(CLICK)事件,而在产生该事件时将执行一段程序,用来实现指定的操作。
在用VisualBasic设计大型应用软件时,不必建立具有明显开始和结束的程序,而是编写若干个微小的子程序,即过程。
这些过程分别面向不同的对象,由用户操作引发某个事件来驱动完成某种特定的功能,或者由事件驱动程序调用通用过程来执行指定的操作,这样可以方便编程人员,提高效率。
访问数据库
VisualBasic具有强大的数据库管理功能,利用数据控件和数据库管理窗口,可以直接建立或处理MicrosoftAccess格式的数据库,并提供了强大的数据存储和检索功能。
同时,VisualBasic还能直接编辑和访问其他外部数据库,如dBASE,FoxPro,Paradox等,这些数据库格式都可以用VisualBasic编辑和处理。
VisualBasic提供开放式数据连接,即ODBC功能,可通过直接访问或建立连接的方式使用并操作后台大型网络数据库,如SQLServer,Oracle等。
在应用程序中,可以使用结构化查询语言SQL数据标准,直接访问服务器上的数据库,并提供了简单的面向对象的库操作指令和多用户数据库访问的加锁机制和网络数据库的SQL的编程技术,为单机上运行的数据库提供了SQL网络接口,以便在分布式环境中快速而有效地实现客户/服务器(client/server)方案。
动态数据交换(DDE)
利用动态数据交换(DynamicDataExchange)技术,可以把一种应用程序中的数据动态地链接到另一种应用程序中,使两种完全不同的应用程序建立起一条动态数据链路。
当原始数据变化时,可以自动更新链接的数据。
VisualBasic提供了动态数据交换的编程技术,可以在应用程序中与其他Windows应用程序建立动态数据交换,在不同的应用程序之间进行通信。
对象的链接与嵌入(OLE)
对象的链接与嵌入(OLE)将每个应用程序都看做是一个对象(object),将不同的对象链接(link)起来,再嵌入(embed)某个应用程序中,从而可以得到具有声音、影像、图像、动画、文字等各种信息的集合式的文件。
OLE技术是Microsoft公司对象技术的战略,它把多个应用程序合为一体,将每个应用程序看做是一个对象进行链接和嵌入,是一种应用程序一体化的技术。
利用OLE技术,可以方便地建立复合式文档(compounddocument),这种文档由来自多个不同应用程序的对象组成,文档中的每个对象都与原来的应用程序相联系,并可执行与原来应用程序完全相同的操作。
动态链接库(DLL)
VisualBasic是一种高级程序设计语言,不具备低级语言的功能,对访问机器硬件的操作不太容易实现。
但它可以通过动态链接库技术将C/C++或汇编语言编写的程序加入到VisualBasic应用程序中,可以像调用内部函数一样调用其他语言编写的函数。
此外,通过动态链接库,还可以调用Windows应用程序接口(API)函数,实现SDK所具有的功能。
1.1.3系统的功能简介
本系统主要可以实现以下的管理功能:
班级管理、学生档案管理、学生交费管理、课程管理、成绩管理等等。
项目规划
学生信息管理系统是一个典型的数据库应用程序,由班级管理、学生档案管理、学生交费管理、课程管理、成绩管理等模块组成,特规划如下:
系统管理模块(CTRL+O)
该模块的主要任务是维护系统的正常运行和安全性设置,包括添加用户(快捷键:
CTRL+A)、修改密码(快捷键:
CTRL+B)、重新登录(快捷键:
CTRL+F1)等等。
班级管理模块(CTRL+P):
该模块的功能是实现对全校班级的管理工作,包括:
班级游览、班级添加、班级查询等,这三个功能模块各自独立,完成学校的全部班级的管理。
学生档案管理模块(CTRL+T):
该模块的主要功能是实现对学生的个人信息的管理工作,包括档案添加、档案浏览、档案查询等功能,从而方便学校管理部门对学校的基本情况的快速查询和了解。
课程管理模块(CTRL+R):
该模块对各个班级的课程进行设置,并可在其中设置各门课程的教材选用情况,方便了学校教材管理部门和教务处的教学管理人员的工作。
该模块包括基本课程设计和班级课程设置两个模块。
成绩管理模块(CTRL+F):
学校的成绩管理工作是检验学生学习情况的一个主要手段,本模块包括考试类型设置,共有期中考试和期未考试两种类型,还设置了成绩添加、成绩游览、成绩查询等功能模块。
1.2系统开发的目标
出于本系统是学校学生管理的一个综合性的系统,本系统的设计目标将最终定位于完成以上所述的系统主要业务的基本模型上。
第2章数据库设计
2.1数据库的概念设计
1、数据模型设计。
首先来做出学生成绩管理系统的E-R图,分析这个问题的实体,从系统分析可以知道,学生的成绩是由任课教师按照课程给出的,学生、课程、教师组成了这个系统的三个实体。
2、再分析三个实体之间的联系。
首先,这三个实体不是一个统一体,学生成绩与教师没有内在联系,教师必须通过课程实体才能与学生建立联系,因而先不考虑。
课程与学生这两个实体是多对多联系;一位学生要学习多门课程,一门课程有多位学生共同学习。
而学习成绩是这两个实体“学生”和“成绩”共有的属性,应填在二者的联系“学习”边。
因为成绩既不是学生独有的,也不是课程独有的;“学生甲70分”或“英语70分”是不完全的,说“学生甲英语70分”才是正确的,因为70分是学生甲和英语课二者共有的。
这个E-R图可画成下图。
学生成绩管理系统中学生与课程的E-R图
教师与课程这两个实体之间,是一对多联系;一位教师可以都多门课程,而一门课程对于学生成绩来说只能有一位教师(英语、高等数学有多位教师教,但对某个固定的学生来说只能有一位教师)。
其E-R图,如下所示。
教师与课程的E-R图组合到一起,得到最后的E-R图,有了E-R图,就可以设计数据库。
下图为数据模型图。
2.2学生管理系统的逻辑结构设计
班级管理业务流程图:
档案管理业务流程图:
课程管理业务流程图:
成绩管理业务流程图:
2.3学生管理系统的物理结构设计
数据库采用了Microsoft推出的Access数据库,这是微软集成到Office中的一个桌面数据库,能够快速方便的和Office的其他套件综合使用。
由于Access具有显著的简易性和有效性,大量的桌面数据库系统都采用Access作为后台数据库。
使用Access的好处还在于,如果你的系统扩展到Client/Server模式的时候,可以使用Microsoft的数据库服务器软件SQLServer,此时,程序只需要简单的修改一下链接(ADO的数据源)就可以,这样,为程序的平滑扩展提供了非常有力的条件。
2.3.1本系统中所涉及到的主要实体共有九个数据表:
allkecheng表:
{课程名称,教材}
cj表:
{学号,学期,类型,课程名称,分数}
class表:
{年级,班级,教室,年制,专业,班主任,备注}
classkecheng表:
{年级,专业,年制,学期,课程名称}
jf表:
{学号,学期,交费,欠费,日期,操作员}
kaoshileixing表:
{类型}
use表:
{username,password,admin,readonly,qx1,qx2,qx3,qx4}
xj表:
{学号,姓名,性别,班级,出生年月,家庭住址,邮政编码,联系电话,入学时间,备注}
suefei表:
{年级,专业,年制,学期,学费}
2.3.2各表的物理结构如下:
allkecheng表:
字段名称
类型
宽度
小数位
课程名称
文本
20
教材
文本
30
Cj表:
字段名称
类型
宽度
小数位
学号
文本
10
学期
文本
50
类型
文本
16
课程名称
文本
20
分数
单精度型数字
自动
Class表:
字段名称
类型
宽度
小数位
年级
文本
16
班级
文本
20
教室
文本
5
年制
文本
8
专业
文本
16
班主任
文本
8
备注
备注
Classkecheng表:
字段名称
类型
宽度
小数位
年级
文本
16
专业
文本
12
年制
文本
8
学期
文本
50
课程名称
文本
20
Jf表:
字段名称
类型
宽度
小数位
学号
文本
5
学期
文本
50
交费
货币
自动
欠费
货币
自动
日期
日期/时间
操作员
文本
10
Kaosileixing表:
字段名称
类型
宽度
小数位
类型
文本
10
Use表:
字段名称
类型
宽度
小数位
username
文本
20
password
文本
20
Admin
文本
2
Readonly
文本
2
Qx1
文本
2
Qx2
文本
2
Qx3
文本
2
Qx4
文本
2
xj表:
字段名称
类型
宽度
小数位
学号
文本
9
姓名
文本
8
性别
文本
2
班级
文本
10
出生年月
日期/时间
家庭住址
文本
30
邮政编码
数字(长整型)
联系电话
数字(长整型)
入学时间
日期/时间
备注
备注
xuefei表:
字段名称
类型
宽度
小数位
年级
文本
16
专业
文本
50
年制
文本
20
学期
文本
40
学费
货币
自动
第三章总体设计
3.1学生管理系统的整体框架图
第4章详细设计
本部分主要内容为本系统的运行界面以及主要界面的源代码。
4.1系统登陆界面:
本界面的主要功能是为了对系统进行安全性管理,本系统的用户名和密码保存在USE表中,本系统根据不同的用户而设置了不同的权限,可以用909;909为用户名和密码来登陆本系统。
PrivateSubCommand1_Click()
DimmrcAsADODB.Recordset
txtsql="selectusernamefromusewhereusername='"&Trim(Text1.Text)&"'"
Setmrc=ExecuteSQL(txtsql)
Ifmrc.EOF=TrueThen
MsgBox"用户名错误!
",vbExclamation+vbOKOnly,"警告"
Text1.SetFocus
Text1.SelStart=0
Text1.SelLength=Len(Text1.Text)
ExitSub
EndIf
username=mrc.Fields(0)
txtsql2="selectusernamefromusewherepassword='"&Trim(Text2.Text)&"'"
Setmrc=ExecuteSQL(txtsql2)
Ifmrc.EOF=TrueThen
MsgBox"密码错误!
",vbExclamation+vbOKOnly,"警告"
Text2.SetFocus
Text2.SelStart=0
Text2.SelLength=Len(Text2.Text)
ExitSub
EndIf
txtsql="selectusernamefromusewhereusername='"&Trim(Text1.Text)&"'andpassword='"&Trim(Text2.Text)&"'"
Setmrc=ExecuteSQL(txtsql)
Ifmrc.EOF=TrueThen
MsgBox"用户名称和密码不匹配!
",vbExclamation+vbOKOnly,"警告"
ExitSub
EndIf
MDIForm1.Show
frmcpass.Text1.Text=Text1.Text
UnloadMe
EndSub
PrivateSubCommand2_Click()
UnloadMe
EndSub
PrivateSubForm_Load()
EndSub
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then
Text2.SetFocus
EndIf
EndSub
PrivateSubText2_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then
Command1.SetFocus
EndIf
EndSub
4.2系统主界面:
本模块是本系统的应用界面,在本界面上集成了本系统的所有功能,共有6个功能菜单和19个子菜单(功能模块),从而实现了本系统从班级管理、档案管理、缴费管理、课程管理、成绩管理等系统的具体功能,同时,在系统管理模块中可以完成对本系统的安全性管理。
PrivateDeclareFunctionSetWindowPosLib"user32"(ByValhwndAsLong,ByValhWndInsertAfterAsLong,ByValXAsLong,ByValYAsLong,ByValcxAsLong,ByValcyAsLong,ByValwFlagsAsLong)AsLong
Dimfind1AsInteger
Dimliulan1AsInteger
PrivateSubadd_Click()
qxstr=Executeqx
(2)
Ifqxstr="false"Orqxstr="readonly"Then
ss=MsgBox("对不起,你没有管理本功能的权限,请与管理员联系!
",vbInformation+vbOKOnly,"警告")
ExitSub
EndIf
Form1.Show
modi=False
Form1.ZOrder(0)
EndSub
PrivateSubcjadd_Click()
fenshumodi=False
qxstr=Executeqx(4)
Ifqxstr="false"Orqxstr="readonly"Then
ss=MsgBox("对不起,你没有管理本功能的权限,请与管理员联系!
",vbInformation+vbOKOnly,"警告")
ExitSub
EndIf
frmcj2.Show
frmcj2.ZOrder0
EndSub
PrivateSubcjbrowse_Click()
qxstr=Executeqx(4)
Ifqxstr="false"Then
ss=MsgBox("对不起,你没有管理本功能的权限,请与管理员联系!
",vbInformation+vbOKOnly,"警告")
ExitSub
EndIf
frmcj1.Show
frmcj1.ZOrder0
EndSub
PrivateSubclaasfind_Click()
qxstr=Executeqx
(2)
Ifqxstr="false"Then
ss=MsgBox("对不起,你没有管理本功能的权限,请与管理员联系!
",vbInformation+vbOKOnly,"警告")
ExitSub
EndIf
Form4.Show
Form4.ZOrder(0)
i=SetWindowPos(Form4.hwnd,-1,0,0,0,0,3)
EndSub
PrivateSubclassapp_Click()
qxstr=Executeqx
(2)
Ifqxstr="false"Orqxstr="readonly"Then
ss=MsgBox("对不起,你没有管理本功能的权限,请与管理员联系!
",vbInformation+vbOKOnly,"警告")
ExitSub
EndIf
Formclass1.Show
classmodi=False
Formclass1.classload
Formclass1.ZOrder(0)
EndSub
PublicSubclabrowse()
txtsql="select*fromclass"
Formclass2.ZOrder(0)
Formclass2.Caption="浏览班级设置"
Formclass2.classshowtitle
Formclass2.classshowdata
EndSub
PrivateSubclassbrowse_Click()
qxstr=Executeqx
(2)
Ifqxstr="false"Then
ss=MsgBox("对不起,你没有管理本功能的权限,请与管理员联系!
",vbInformation+vbOKOnly,"警告")
ExitSub
EndIf
Formclass2.Show
EndSub
PrivateSubclassfind_Click()
qxstr=Executeqx
(2)
Ifqxstr="false"Then
ss=MsgBox("对不起,你没有管理本功能的权限,请与管理员联系!
",vbInformation+vbOKOnly,"警告")
ExitSub
EndIf
Formclass3.Show
Formclass3.ZOrder(0)
EndSub
PrivateSubfind_Click()
EndSub
PrivateSubclassk