学籍管理系统数据库课程设计_第1页
学籍管理系统数据库课程设计_第2页
学籍管理系统数据库课程设计_第3页
学籍管理系统数据库课程设计_第4页
学籍管理系统数据库课程设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计报告科 目:设计题目:学生学籍管理系统专 业: 计算机系软件工程 0402班姓 名: XXXXX 学号: XXXXXXX绪论数据库设计1 .需求分析 .21.1 数据需求 .21.2 功能需求 .32 .数据库设计 .32.1 概念结构设计 .42.2 逻辑结构设计 .52.3 物理结构设计 .63 .系统功能设计 .84 .系统功能实现 .94.1 程序的运行环境 .94.2 系统的开发环境 .94.3 数据库的创建和链接 .94.4 运行界面及其对应的源代码 .105 .实验总结 .236 .参考文献 .23绪 论学生学籍管理是教育教学单位不可缺少的部分,它的内容对教学管理和学校的

2、决策者 都非常重要。给学校教学管理提供了很大的方便性,提高了工作效率。但是一直以来人们 用传统人工的方式管理文件文档,这种管理方式效率低,保密性差,出错不易更改,同时 也耗费了大量的人力财力,时间一长,将产生大量的文件数据,这对于查找,维护,更新 都带来了很大的困难。随着科学技术的不断发展,尤其是计算机软件水平的日益提高,使得以上问题得到了 很好的解决。使用计算机可以方便的对大量数据进行增加,删除,更新等操作。它有着人 工管理永远无法比拟的优点:检索迅速,查找方便,可靠性大,存储量大,保密性好,寿命长,成本低等。例如:通过校园网,我们可以方便的进行学生信息查询,学生成绩的 添加,以及最新的教务

3、通知等。当然,这些都离不开数据库技术和网络技术的支持。数据 库是数据管理的最新技术,是计算机计算机技术的重要分支,也是计算机领域发展最快的 学科之一。学生学籍管理系统就是数据库在网络上应用。综上,开发这样的一套软件十分必要。同时旧的人工管理机制必将被以计算机为基础 的信息管理所取代,从而实现对数据的高效,长久,安全的管理。数据库设计一.需求分析1 .数据需求:(1)数据字典主要涉及到以下几个表,分别为:学生基本信息表,课程表,专业信息表,课程设置 表,学生选课表,学生与专业之间的属于表以及管理人员的密码表。以下是数据字典:学生基本信息表专业信息表Sno学生的学号Sname学生姓名Ssex性别S

4、sbirth学生的出生年月课程表Cno课程号Cname课程名Cperiod学时学生选课表Sno学生的学号psenior学期cno课程编号grade成绩Pno专业编号Pname专业名称Pnum专业人数Pdept专业所在院系课程设置表Cno课程号Cname课程名Cperiod学时学生与专业的属于表sno学生的学号pno专业的编号管理人员密码表uname管理人员的编号upasw管理人员的密码(2)数据流图第一层第二层学生信息历次考试成绩班平均成绩 各科平均成绩第四层3.)L-统计成绩(成绩3.3)第五层学生信息*否升7升留级名单,a 4.1)成绩标准2.功能需求:(1)实现学生基本情况的录入,修改,

5、删除等基才(2)对学生基本信息提供灵活的查询方式。(3)完成一个班级的学期选课功能。(4)实现学生成绩的录入,修改,删除等基本操作(5)能方便的对学生的个人学期成绩进行查询。(6)具有成绩统计,排名等功能。(7)具有留级,休学等特殊情况的处理功能。/更新记录、 学生记录S操作。4(8)能输出常用的各种报表。(9)具有数据备份和数据恢复功能。二.数据库设计1.概念结构设计局部ER图学生G果程一生年月1专业 iQ果程名D(学时)课程整体的ER图2 .逻辑结构设计(1)ER图转换为关系模型学生,课程,和专业;三个关系:学生选课关系,由ER图可见:图中有三个实体:学生与专业之间的属于关系,专业的课程设

6、置。学生基本信息表: 课程基本信息表: 专业基本信息表: 对应的属性分别为:由于每个实体必须构造表,所以可以先得到三个实体的信息表,实体的码就是关系的 码,实体的属性即关系模型的属性:S (sno, sname, ssex, sbirth, spasw)C (cno, cname, cperiord)P (pno, pname, pnum, psdept)学号,姓名,性别,出生日期,登陆密码课程编号,课程名,学期专业编号,专业名,专业人数,所在院系对于多对多的关系来说,与该联系相连的实体的码以及本身的属性均转换为关系的以上ER图的三个联系为多属性,各实体之间的码组成关系的码或者关系的码的一部分

7、。 对多,所以转换为关系模式为:课程设置表:pc ( pno, psenior, cno)与设置相连的实体有专业和课程,根据多对多的 转换原则:专业的码pno,课程的码cno以及设置本身的属性共同构成该关系模式的码,所以该关系模式的码为全码。学生选课表:SC (sno, psenior, cno, graded选课相连的实体有学生和课程,同上由学生的码sno,课程的码cno以及选课本身的码psenior构成该关系模式的码,即grade。(sno,cno,psenior)。此外,选课表还有一个非主属性学生与专业的属于表:SP(sno,pnoT属于关系相联的实体是学生和专业。同上由学生的码sno,

8、专业白码pno构成该关系模式的码,由于此关系没有其他的码也就没有非主属性O(2)关系模式的优化:学生表 s (sno,sname,ssex,sbirth,spasw)该关系模式的码为sno,由于只有一个码,所以不存在非主属性对码的部分函数依赖,可以达到2NCF。另外,该关系模式的函数依赖为:sno - sname, sno - ssex, sno - ssex,sno - sbirth, sno - spasw,其间不存在传递依赖,故学生表可达到3NCF.课程表 C ( cno ,cname , cperiod)该关系模式的码为 cno, cname,设主码为cno,因为该关系模式中的码都是单

9、一的,即不存在有两个或者两个以上的属性组成的码,所以不存在非主属性对码的部分函数依赖,可以达到 2NCF。另外,该关系模式的 函数依赖为:cno-cname, cno-cperiod, cname -cno ,cname - cperiod. 因为 cno - cname, cname - cperiod I cno - cperiod, 所以该 关系模式中存在传递依赖,不能达到3NCF。故优化该表为:C1(cno,period),C2 (cname,cperiod).从而两表都达到了 3NCF。专业表 P (pno,pname,pnum,pdept)2NCF。另外,该关系模式的码为 pno,

10、pname淇中设定pno为主码。同课程表,该表不存在有两个或者两个以上属性组成的码,即不存在非主属性对码的部分函数依赖,故可达到此关系模式的函数依赖为:pno-pname, pno- pnum, pno - pdept , pname - pno, pname-pnum, pname - pdept; 由于存在传递依赖:pno - pname, pname-pnum, pno - pnum.,所以未能达到 3NCF。优化分解为: P1 (pno,pnum,pdept), P2 (pname,pnum,pdept)明显,两表都达到了3NCF.课程设置表 PC(pno,psenior,cno),该

11、关系模式的码为:(pno,psenior,cno)为全码,所以可直接达到3NCF学生选课表 SC(sno,psenior,cno,grade)该关系模式的码为:(sno,psenior,cno),因为不存在非主性 grade对码的部分函数依赖, 所以可达到2NCF ,由于不存在函数依赖(表中的函数依赖只有(sno,psenior,cno)- grade)故也达到了 3NCF属于表 SP(sno,pno)该关系模式的码(sno,pno)也是全码,所以也达到了3NCF用户表 U(uname,upasw)3NCF该表的码为uname,明显upasw对码uname是完全函数依赖白从而达到2NCF。另外

12、列名主码候选码外码被参照表允许空数据类型约束条件sno是否否无否Char(10)sname否否否无是Char(20)ssex否否否无是Char(2)只可取男或女sbirth否否否无是Char(20)spasw否否否无是Char(10)因为只有两个属性,所以不存在传递函数依赖,该表达到了3.物理结构设计(1)基本表学生表s课程表cl列名主码候选码外码被参照表允许空数据类型约束条件cno是否否无否Char(10)cperiod否否否无是smallint课程表c2列名主码候选码外码被参照表允许空数据类型约束条件cname是否否无否Char(20)cperiod否否否无是smallint专业表pl列名

13、主码候选码外码被参照表允许空数据类型约束条件pno是否否无否Char(10)pnum否否否无是smallintPnum =0psdept否否否无是Char(20)专业表p2列名主码候选码外码被参照表允许空数据类型约束条件pname是否否无否Char(20)pnum否否否无是smallintPnum =0psdept否否否无是Char(20)课程设置表 pc列名主码候选码外码被参照表允许空数据类型约束条件pno是否否无否Char(10)psenior是否否无否Char(10)cno是否否无否Char(10)学生选课表sc列名主码候选码外码被参照表允许空数据类型约束条件sno是否否无否Char(1

14、0)psenior是否否无否Char(10)cno是否否无否Char(10)grade否否否无是smallintgrade=0学生与专业属于表 sp列名主码候选码外码被参照表允许空数据类型约束条件sno是否否无否Char(10)pno是否否无否Char(10)管理人员密码表u列名主码候选码外码被参照表允许空数据类型约束条件uname是否否无否Char(20)upasw否否否无否Char(10)(2)视图,索引a.索引:本数据库中的表除了主键本身生成的主索引外,没有定义其他的索引。在查询 时即引用主索引即可。表s的主索引列为: 表cl的主索引列为 表c2的主索引列为 表pl的主索引列为 表p2的

15、主索引列为 表sc的主索引列为: 表sp的主索引列为: 表u的主索引列为:snocnocnamepnopname(pno,psenior,cno) (sno,pno)unameb.视图:虽然关系数据模型分析的结果表示该数据库需要定义不同的用户视图,但考虑到数据库与前台开发程序的连接比较复杂,所以该数据库中没有单独定义用户视图,不同的用户视图被有选择性的的select语句的结果集取.三.系统功能设计I学生学籍管理系统欢迎界面四.系统实现1.程序的运行环境类别标准配置最低配置计算机硬件Pentium (R) 4 CPU, 128MB 内存Pentium (R) 4 CPU 1.8GHZ, 128M

16、B 内存软件操作系统Windows XP ServicePack 1, Windows XPService Pack 2, and Windows 2000Windows 98ODBC数据源命名为wangjiaDSN的数据源,连接系统数据库wangjia其他2.系统开发环境类别标准配置最低配置计算机硬件Pentium (R) 4 CPU , 128MB 内存Pentium (R) 4 CPU 1.8GHZ, 128MB 内存软件操作系统Windows XP ServicePack 1, Windows XPService Pack 2, and Windows 2000Windows 98数据

17、库后 台程序Microsoft SQL Server2000前台开发 程序Microsoft Visual Basic 6.0ODBC数据源命名为wanjiaDSN的数据源,连接系统数据库wangjia其他3 .数据库的创建和链接本系统的前台开发工具为 Microsoft visual basic 6.0,除了一些常用 的控件 Commandbutton,Combobox,Textbox 和 Label 外,这里还使用了控件 ADO 和 DataGrid。ADO 用来链接数据库与前台开发程序,指定链接的数据源和要访问的数据,并通过绑定要使用的数据来显示所获得的数据。DataGrid控件的作用是

18、以表格的形式显示结果中的全部数据,但允许在表格中增加,删除和修改纪录。具体的链接过程如下:ADO (步骤)(1)选择“工程”菜单中的部件命令,打开部件对话框,在控件选项中选择MicrosoftADO Data Control 6.0(OLEDB)复选框,单击确定,工具栏中会出现ADO数据控件的图标,其微帮助名称为:Adodc。(2)在当前窗体上添加一个 ADO控件。(3)打开ADO的属性页,设置使用的ODBC数据资源的名称,(如果没有则新建一个) 即我所使用的数据库 wangjiaDSN ;设置身份验证,包括用户名称和密码;设置纪录源,命 令类型选择 adCmdTable.(因为我所用至ij的

19、记录源都是表,所以设置为该属性。adCmdTable.表示的是数据源的属性是一个表名,表示其结果级是对该表执行无条件查询后得到的结果),表名或存储过程名则选择自己所要用到的表。至IJ此,便链接成功。DataGrid (步骤)(1)同ADO控件一样,选择选择“工程”菜单中的部件命令,打开部件对话框,在控件选项中选择 Microsoft DataGrid Control 6.0(OLEDB)复选框,单击确定,工具栏中会出 现DataGrid数据控件的图标。(2)在当前窗体上添加一个DataGrid控件。(3)打开DataGrid的属性页,设置标题名,歹U,列标题与其对应的数据段。颜色,字体等可根据

20、需要设定。将DataGrid的Recordsource设置为该窗体对应的 Adodc;另外可检索字段和删除字段,这样可以显示自己想要的字段,而不是将adodc所对应的内容全部显示出来。至U此,链接成功。4.窗体及其所对应的源代码 欢迎界面登陆界面源代码Option ExplicitDim stuflag As Boolean 标记用户是否为学生Public LoginSucceeded As BooleanPrivate Sub cmdCancel_Click()设置全局变量为false不提示失败的登录LoginSucceeded = FalseMe.HideEnd SubPrivate Su

21、b cmdOK_Click()检查正确的密码Dim num1 As IntegerDim num2 As IntegerIf Len(txtUserName.Text) 0 And Len(txtPassword) 0 And stuflag = False Then 管 理人员Adodc1.Item(0).CommandType = adCmdTextAdodc1.Item(0).RecordSource = select * from wjuser where uname= &Trim(txtUserName.Text) & And upasw= & Trim(txtPassword.Te

22、xt) & Adodc1.Item(0).Refreshnum1 = Adodc1.Item(0).Recordset.RecordCountElse学生Adodc1.Item(1).CommandType = adCmdTextAdodc1.Item(1).RecordSource = select sname spasw from wjstudent where sname= & Trim(txtUserName.Text) & And spasw= & Trim(txtPassword.Text) & Adodc1.Item(1).Refreshnum2 = Adodc1.Item(1)

23、.Recordset.RecordCountEnd IfIf num1 = 0 And num2 = 0 ThenMsgBox 无效的密码,请重试!, , 登录 txtPassword.SetFocusSendKeys Home+EndElseLoginSucceeded = TrueMe.HideMDIForm1.ShowEnd IfEnd SubPrivate Sub Option1_Click(Index As Integer)If Index = 0 ThenIf stuflag = False Thenstuflag = TrueEnd IfElseIf stuflag = True

24、 Thenstuflag = FalseEnd IfEnd IfEnd Sub主界面添加用户界面源代码Private Sub Command1_Click()添加用户AdodcI.Recordset.AddNewEnd SubPrivate Sub Command2_Click()更新Adodc1.Recordset.Fields(uname) = Trim(Textl.Text)Adodc1.Recordset.Fields(upasw) = Trim(Text2.Text)AdodcI.Recordset.UpdateMsgBox 添加成功 匚,提示End Sub用户密码修改界面没有该用户

25、Lil重新输入源代码Private Sub Command1_Click()Command2.Enabled = False 使取消按钮不可用If Len(Text4.Text) 0 Then 查看输入用户是否存在Adodcl.CommandType = adCmdTextAdodc1.RecordSource = select * from wjuser where uname= & Trim(Text1.Text) & Adodc1.RefreshIf Adodc1.Recordset.RecordCount = 0 ThenMsgBox 没有该用户!,请重新输入提示ElseIf Len(

26、Text1.Text) 0 Then 查看旧密码是否正确Adodc1.CommandType = adCmdTextAdodc1.RecordSource = select * from wjuser where upasw= &Trim(Text4.Text) & ,Adodc1.RefreshIf Adodc1.Recordset.RecordCount = 0 Then MsgBox ”密码不正确,请重新输入 匚,提示ElseIf Len(Text2.Text) 0 Then确认密码并修改If Len(Text3.Text) 0 ThenIf Text2.Text Text3.Text

27、ThenMsgBox 您的输入不一致,请重新确认!,提示ElseAdodc1.Recordset.Fields(upasw) = Trim(Text3.Text)Adodc1.Recordset.Update MsgBox修改成功一提示 End IfEnd IfEnd IfEnd IfEnd IfEnd IfEnd IfEnd SubPrivate Sub Command2_Click()取肖Commandl.Enabled = False使修改按钮不可用AdodcI.Recordset.CancelUpdateEnd SubPrivate Sub Command3_Click()Unload

28、 MeEnd Sub学生密码修改界面密蚂不正确请重新输入!源代码Private Sub Command1_Click()修改Command2.Enabled = False 使取消按钮不可用If Len(Text4.Text) 0 Then 查看输入学号是否存在Adodc1.CommandType = adCmdTextAdodc1.RecordSource = select * from wjstudent where sno= & Trim(Text4.Text) & Adodc1.RefreshIf Adodc1.Recordset.RecordCount = 0 ThenMsgBox

29、没有该学号!,请重新输入提示ElseIf Len(Text1.Text) 0 Then 查看旧密码是否正确from wjstudent where spasw=Adodc1.CommandType = adCmdTextAdodc1.RecordSource = selectTrim(Text1.Text) & Adodc1.RefreshIf Adodc1.Recordset.RecordCount = 0 ThenMsgBox 密码不正确,请重新输入!, , 提示 ElseIf Len(Text2.Text) 0 Then确认密码并修改If Len(Text3.Text) 0 ThenIf

30、 Text2.Text Text3.Text ThenMsgBox 您的输入不一致,请重新确认!, , 提示 ElseAdodc1.Recordset.Fields(spasw) = Trim(Text3.Text)Adodc1.Recordset.UpdateMsgBox 修改成功, , 提示 End IfEnd IfEnd IfEnd IfEnd IfEnd IfEnd IfEnd SubPrivate Sub Command2_Click() 取消Adodc1.Recordset.CancelUpdateCommand1.Enabled = False使修改按钮不可用End SubPri

31、vate Sub Command3_Click() 退出Unload MeEnd Sub个人信息维护界面源代码Private Sub Command1_Click()第一条AdodcI.Recordset.MoveFirstEnd SubPrivate Sub Command2_Click()上一条AdodcI.Recordset.MovePreviousIf Adodc1.Recordset.BOF = True Then 如果已经移到了第一行之前,则指针定位在第一行AdodcI.Recordset.MoveFirstEnd IfEnd SubPrivate Sub Command3_Cli

32、ck()下一条Adodc1.Recordset.MoveNextIf Adodc1.Recordset.EOF = True Then 如果已经移到了最后一行之后,则指针定位在最后Adodc1.Recordset.MoveLastEnd IfEnd SubPrivate Sub Command4_Click()末一条Adodc1.Recordset.MoveLastEnd SubPrivate Sub Command5_Click()添力口Adodc1.Recordset.AddNewCommand5.Enabled = FalseCommand6.Enabled = FalseCommand

33、7.Enabled = TrueCommand8.Enabled = TrueEnd SubPrivate Sub Command6_Click() 删除Dim res As Integerres = MsgBox( 要删除此记录吗?, vbExclamation + vbYesNo + vbDefaultButton2) 提示用户If res = vbYes ThenAdodc1.Recordset.DeleteAdodc1.Recordset.MoveNextIf Adodc1.Recordset.EOF = True ThenAdodc1.Recordset.MoveLastEnd If

34、End IfEnd SubPrivate Sub Command7_Click() 更新Adodc1.Recordset.Fields(sno) = Trim(Text1.Text)Adodc1.Recordset.Fields(sname) = Trim(Text2.Text)Adodc1.Recordset.Fields(ssex) = Trim(Text3.Text)Adodc1.Recordset.Fields(sbirth) = Trim(Text4.Text)Adodc1.Recordset.UpdateCommand5.Enabled = True 使添加和删除按钮可用Comma

35、nd6.Enabled = TrueCommand8.Enabled = False 使取消按钮不可用End SubPrivate Sub Command8_Click()Adodc1.Recordset.CancelUpdateCommand5.Enabled = True 使添加和删除按钮可用Command6.Enabled = TrueCommand8.Enabled = False 使取消按钮不可用End SubPrivate Sub Command9_Click() 退出Unload MeEnd SubPrivate Sub Form_Load() 载入界面Command8.Enab

36、led = False 使取消按钮不可用End Sub成绩维护界面源代码Private Sub Command1_Click()添力口AdodcI.Recordset.AddNewCommandl.Enabled = False 使添加,修改,删除按钮不可用Command3.Enabled = FalseCommand6.Enabled = True 使添加退出可用Command4.Enabled = TrueEnd SubPrivate Sub Command2_Click()Adodc1.Recordset.MoveFirstEnd SubPrivate Sub Command3_Clic

37、k()删除Dim res As Integerres = MsgBox(要删除该纪录吗?, vbExclamation + vbYesNo + vbDefaultButton2) 提示用户If res = vbYes ThenAdodc1.Recordset.DeleteAdodc1.Recordset.MoveNextIf Adodc1.Recordset.EOF = True ThenAdodc1.Recordset.MoveLastEnd IfEnd IfEnd SubPrivate Sub Command4_Click()退出Unload MeEnd SubPrivate Sub Co

38、mmand5_Click()更新Adodc1.Recordset.Fields(sno) = Trim(Text1.Text)Adodc1.Recordset.Fields(cno) = Trim(Text2.Text)Adodc1.Recordset.Fields(grade) = Trim(Text3.Text)Adodc1.Recordset.UpdateCommand1.Enabled = True 使添加和删除按钮可用Command3.Enabled = TrueCommand6.Enabled = False 使取消按钮不可用End SubPrivate Sub Command6_

39、Click() 取消Adodc1.Recordset.CancelUpdateCommand1.Enabled = TrueCommand3.Enabled = TrueEnd SubPrivate Sub Command7_Click()Adodc1.Recordset.MovePreviousIf Adodc1.Recordset.BOF = True ThenAdodc1.Recordset.MoveFirstEnd IfEnd SubPrivate Sub Command8_Click()Adodc1.Recordset.MoveNextIf Adodc1.Recordset.EOF

40、= True ThenAdodc1.Recordset.MoveLastEnd IfEnd SubPrivate Sub Command9_Click()Adodc1.Recordset.MoveLastEnd Sub成绩统计源代码:Private Sub Command1_Click()If Len(Textl.Text) 0 ThenAdodcl.CommandType = adCmdTextAdodcI.RecordSource = select * from wjsc where sno= & Trim(Text1.Text) & Adodc1.RefreshIf Adodc1.Rec

41、ordset.RecordCount = 0 ThenMsgBox 该学号不存在!请重新输入“一提示Else求平均分和最高分Adodc1.RecordSource = select avg(grade) as avggrade,Max(grade) as high fromwjsc where sno= & Trim(Text1.Text) & and psenior= & Trim(Combo1.Text) & Adodc1.RefreshLabel4.Caption = Adodc1.Recordset.Fields(avggrade)Label6.Caption = Adodc1.Rec

42、ordset.Fields(high)Label4.Alignment = 2使文字居中Label6.Alignment = 2AdodcI.RecordSource = select * from wjsc where sno= & Trim(Textl.Text) & andpsenior= & Trim(Combol.Text) & and grade = 59 Adodcl.RefreshIf Adodcl.Recordset.RecordCount = 0 ThenMsgBox 该同学没有不及格的课程提示End IfEnd IfEnd IfEnd SubPrivate Sub Command2_Click()Unload MeEnd Sub信息查询源代码Dim nameflag As Boolean 标记是否按姓名查询Private Sub Command1_Click()个人信息查询Dim searchSQL As StringAdodc1.CommandType = adCmdTextIf nameflag = False Then按学号按姓名searchSQL = select * from wjstudent whe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论