数据库实习报告

数据库系统课程设计


学    号: 

学生姓名:

班    号:

指导教师:

中国地质大学信息工程学院

20## 3 3

=数据库实习报告

——教务管理系统

一、需求分析

1、 首先要明确各个实体间的属性:

    a.教师:工作证号,姓名,职称,电话,系别;

    b.学生:学号,性别,班级,系别,出生年月;

    d.系别:系代号,系名,系办,公室电话;

    e.课程:课序号,课名,学分,上课时间,名额。

2、各个实体之间的联系:

a. 每个学生都属于一个班;

. 每个教师也都属于一个系,每个班的班主任都由一名教师担任;

d. 一名教师可以教多门课,一门课可以有几位主讲老师;

e. 一名同学可以选多门课,一门课可被若干同学选中,一名同学选中的课若已学完,应该记录有相应成绩。

3、总需求:

本单位学生、教师都有重名,工作证号、学号可以作为标识。

教学系统主要提供数据维护、选课和信息查询。

常见的查询有:系统中各对象的基本信息查询; 查询指定班、系的学生信息(名单、人数等);查询学生的成绩、学分情况;查询教师授课情况和学生选课情况等。

二、概念设计

1、概念模型(E-R图):

a.授课关系E-R图

b.选课关系E-R图

c.总E-R图

2、  数据字典:

a.数据项


系名:{Dname, char, 20}

系代号:{Dno, char, 3}

系办公室电话:{Dtelephont, char, 11}

职称:{Ttitle, char, 20}

工作证号:{Tno, char, 10}

姓名:{Tname, char, 20}

电话:{Ttelephont, char, 11}

学号:{Sno, char, 10}

性别:{Ssex, char, 2}

出生年月:{Sbirthday, date,}

姓名:{Sname, char, 20}

课序号:{Cno, char, 10}

课名称:{Cname, char, 20}

上课时间:{Ctime, datetime}

名额:{Cnumber, int}

学分:{Credit, float, 2}

成绩:{Grade, int}


b.数据结构

学生 = {学号、姓名、性别、出生年月}

教师 = {工作证号、教师姓名、职称、电话、所在系的系号}

系 = {系代号、系名、系办公室电话}

课程 = {课序号、课名、学分、上课地点、名额、授课教师的工作证号}

选课 = {学号、 课序号、成绩}

c.数据流 (说明,数据流来源, 数据流去向 )

变更系信息 = {变更系信息,变更信息,系信息}

查询系信息 = {查询系信息, 系代号, 系信息}

变更教师信息 = {变更教师信息,变更信息,教师信息}

查询教师信息 = {查询教师信息,工作证号,教师信息}

变更学生信息 = {变更学生信息,变更信息,学生信息}

查询学生信息 = {查询学生信息,学号,学生信息}

变更课程信息 = {变更课程信息, 变更信息, 课程信息}

查询课程信息 = {查询课程信息, 课序号, 课程信息}

学生选课 = {课程号,学号}

查询选课信息 = {查询选课信息, 学号或课序号, 选课信息}

查询授课信息 = {查询授课信息, 工作证号, 授课信息}

查询成绩 = {查询成绩, 学号&课程号, 选课信息}

三、逻辑结构设计

1、关系模型

教师(工作证号,姓名,职称,电话,系代号)

学生(学号,姓名,性别,出生年月)

系(系代号,系名,系办公室电话)

课程(课序号,课名,学分,上课时间,名额,工作证号)

选课(学号,课序号,成绩)

2、用户视图

教师信息视图(工作证号,教师姓名,职称,电话,负责班级)

学生信息视图(学号,姓名,性别,出生年月,班号)

系信息视图(系代号,系名,系办公室电话)

选课信息(课程号,学号)

课程信息(课程号,课程名称,学分,上课时间,名额,授课老师)

五、系统实施

    完成数据库的物理设计之后,设计人员就要用RDBMS提供的数据定义语言和其他实用程序设计和物理设计结果严格的描述出来,成为DMBMS可以接受的源代码,再经过调试产生目标模式。然后就可以组织数据入库了,这就是数据库实施阶段。

数据库实施阶段包括两项重要的工作:

1.         数据的载入:

直接在SQL2012中建立 教师,学生,选课,系,课程六个表。

运用ODBC,建立mysql的服务器,关联到VB中。

六、运行维护

1、数据库试运行

数库的试运行阶段要实际运行数据库应用程序,执行对数据库的各种操作,测试应用程序的功能是否满足设计要求。如果不满足,对应用程序部分则要修改、调整,知道达到设计要求为止。这一阶段特别强调两点,第一 该是分期分批的组织数据入库,先输入少量数据做调试用,待试运行基本合格后,再大批量的输入数据。第二 首先调试运行数据库管理系统的恢复功能,做好数据库的转储和恢复工作,一旦故障发生,能使数据库尽快恢复,尽量减少数据库的破坏。

2、数据库的维护

数据库的转储和恢复试系统正式运行后最重要的维护工作之一。要针对不同的应用要求制定不同的转储计划,以保证一旦发生故障能够尽快将数据库恢复到某种一致状态,并尽可能减少对数据库的破坏。

数据库运行阶段,主要是由数据库管理员完成经常性的维护工作。主要包括:

a.数据库的转储和恢复;

b.数据库的安全性、完整性控制;

c.数据库性能的监督、分析和改造;

d.数据库的重组织与重构造。

七、小结

     两个周的数据库实习课程结束了,虽然数据库的设计工作完成的并不好,但是在这个过程中还是有些收获。首先,我知道了数据库的设计工作是有章可循的,可以按照一定的步骤、有规律的进行设计。数据库可以按阶段进行设计,在各个阶段有不同的目标,应遵循的原则和方法也各不相同,还有一些应该注意的事项等等。其中的重点是概念结构的设计和逻辑结构的设计,这也是整个数据库设计过程中最重要的两个环节。人们在评述数据库的特点时说,“三分技术,七分管理,十二分的基础数”,在数据库建设中不仅涉及技术,还涉及管理,要建设好一个数据库应用系统,开发技术固然重要,但是相比之下管理更为重要。其次,对数据库设计的各个阶段也有了初步认识。在需求分析阶段,主要的任务是通过详细的调查现实世界重要处理的对象,明确用户的各种需求,然后在此基础上确定新系统的功能,简单地说,也就是分析用户的需求,它是设计数据库的起点,需求分析的准确与否直接关系到后面各个阶段的设计。在概念结构设计阶段,要根据需求分析的结果抽象为信息结构,主要就是通过E—R图来表现,不仅要考虑整个数据库的结构,还要注意子模式仕途的细节,它是整个数据库设计的关键。在逻辑结构的设计阶段,主要任务就是把概念结构设计阶段设计好的基本E-R图转换为数据库管理系统产品所支持的数据模型相符合的逻辑结构,是独立于任何一种数据模型的信息结构。在物理结构设计阶段,通常分为两步,先确定数据库的存取方法和存储结构,后对物理结构进行评价,评价重点是在时间和空间效率,如果评价的结果满足设计要求,则可进入物理实施阶段,否则,就需要重新设计或修改物理结构,有时甚至需要逻辑设计阶段修改数据模型。完成数据库的物理设计之后,就要用数据库管理系统提供的数据定义语言和其他实用程序将数据库逻辑设计和物理设计结果严格的表示出来,这是还需要进行调试。这些都是一些理论方法,还是需要在实际工作中运用这些思想,遵守设计原则,注意各阶段工作的细节,才能完成好数据库设计工作。在以后的学习中会更加注意这些细节问题,这样才会有所提高。

八、附录

VB源代码:

1.登陆界面代码:

Private Sub Command1_Click()

Dim rpt As Integer

If Text1.Text = "20121003818" Then

 If Text2.Text = "123456" Then

  If Text3.Text = Label4.Caption Then

   Form5.Hide

   Form1.Show

  Else

   rpt = MsgBox("验证码错误", vbRetryCancel + vbExclamation, "验证码")

   If rpt = vbRetry Then

    Text3.Text = ""

    Text3.SetFocus

   End If

  End If

 Else

  rpt = MsgBox("密码错误", vbRetryCancel + vbExclamation, "密码")

   If rpt = vbRetry Then

    Text2.Text = ""

    Text2.SetFocus

   End If

 End If

Else

 rpt = MsgBox("用户名错误", vbRetryCancel + vbExclamation, "用户名")

  If rpt = vbRetry Then

   Text1.Text = ""

   Text1.SetFocus

  End If

End If

End Sub

Private Sub Command2_Click()

Form7.Show

Form5.Hide

End Sub

Private Sub Form_Load()

Label5.FontSize = 15

Label5.ForeColor = vbRed

Randomize

Dim x As Long

x = Int(90000 * Rnd(0)) + 10000

Label4.Caption = x

End Sub

2.学生信息界面代码:


Private sqlcon As New ADODB.Connection

Private sqlres As New ADODB.Recordset

Private sqlcmd As New ADODB.Command

Dim sqlstr As String

Private Sub Command1_Click()

MakeSqlStr

Adodc1.RecordSource = "select *from 学生 where 学号=" & sqlstr

Adodc1.Refresh

End Sub

Private Sub Command2_Click()

ret = MsgBox("是否要删除" + Adodc1.Recordset("学号") + "号学生的记录", vbYesNo, "提示")

If ret = vbYes Then

sqlcmd.ActiveConnection = sqlcon

sqlcmd.CommandText = "delete from 学生 where 学号=" + Adodc1.Recordset("学号")

sqlcmd.Execute

Adodc1.RecordSource = "select * from 学生"

Adodc1.Refresh

End If

End Sub

Private Sub Command3_Click()

Dim sqlupstr As String

sqlupstr = "select * from 学生 where 学号=" & Trim(Text1.Text)

sqlres.Open sqlupstr, sqlcon, adOpenDyamic, adLockPessimistic

If Not sqlres.EOF Then

Else

sqlres.AddNew

sqlres("学号") = Text1.Text

sqlres("姓名") = Text2.Text

sqlres("性别") = Text3.Text

sqlres("出生日期") = Text4.Text

sqlres("系代号") = Text5.Text

sqlres.Update

End If

sqlres.Close

Adodc1.RecordSource = "select * from 学生"

Adodc1.Refresh

End Sub

Private Sub Command4_Click()

Dim sqlupstr As String

sqlupstr = "select *from 学生 where 学号=" & Trim(Text1.Text)

sqlres.Open sqlupstr, sqlcon, adOpenDyamic, adLockPessimistic

If Not sqlres.EOF Then

Else

sqlres.AddNew

sqlres("学号") = Text1.Text

sqlres("姓名") = Text2.Text

sqlres("性别") = Text3.Text

sqlres("出生日期") = Text4.Text

sqlres("系代号") = Text5.Text

sqlres.Update

End If

sqlres.Close

Adodc1.RecordSource = "select * from 学生"

Adodc1.Refresh

End Sub

Private Sub Form_Load()

sqlcon.Provider = "SQLOLEDB"

sqlcon.Open "Server=Y500-X64\SQLEXPRESS;DataBase=教务管理系统;UID=sa;PWD=;"

End Sub

Private Sub Form_Unload(Cancel As Integer)

sqlcon.Close

End Sub

Public Sub MakeSqlStr()

sqlstr = ""

If Trim(Text6.Text) <> "" Then

sqlstr = Trim(Text6.Text)

End If

If Trim(Text6.Text) = "" Then

sqlstr = Text1.Text

End If

End Sub

3.学生课程成绩代码:

Private sqlcon As New ADODB.Connection

Private sqlres As New ADODB.Recordset

Private sqlcmd As New ADODB.Command

Dim sqlstr As String

Private Sub Command1_Click()

MakeSqlStr

Adodc1.RecordSource = "select *from 选修,学生 where 选修.学号=" & sqlstr

Adodc1.Refresh

End Sub

Private Sub Form_Load()

sqlcon.Provider = "SQLOLEDB"

sqlcon.Open "Server=Y500-X64\SQLEXPRESS;DataBase=教务管理系统;UID=sa;PWD=;"

End Sub

Public Sub MakeSqlStr()

sqlstr = ""

If Trim(Text5.Text) <> "" Then

  sqlstr = Trim(Text5.Text)

End If

If Trim(Text5.Text) <> "" Then

  sqlstr = Text2.Text

End If

End Sub

Private Sub Form_Unload(Cancel As Integer)

sqlcon.Close

End Sub

Private Sub Image1_Click()

Form1.Picture = LoadPicture(picturefile)

End Sub

4.教师信息代码:

Private sqlcon As New ADODB.Connection

Private sqlres As New ADODB.Recordset

Private sqlcmd As New ADODB.Command

Dim sqlstr As String

Private Sub Command1_Click()

MakeSqlStr

Adodc1.RecordSource = "select *from 教师 where 工作证号=" & sqlstr

Adodc1.Refresh

End Sub

Private Sub Command2_Click()

ret = MsgBox("是否要删除" + Adodc1.Recordset("工作证号") + "号教师的记录", vbYesNo, "提示")

If ret = vbYes Then

sqlcmd.ActiveConnection = sqlcon

sqlcmd.CommandText = "delete from 教师 where 工作证号=" + Adodc1.Recordset("工作证号")

sqlcmd.Execute

Adodc1.RecordSource = "select * from 教师"

Adodc1.Refresh

End If

End Sub

Private Sub Command3_Click()

Dim sqlupstr As String

sqlupstr = "select * from 教师 where 工作证号=" & Trim(Text1.Text)

sqlres.Open sqlupstr, sqlcon, adOpenDyamic, adLockPessimistic

If Not sqlres.EOF Then

Else

sqlres.AddNew

sqlres("工作证号") = Text1.Text

sqlres("姓名") = Text2.Text

sqlres("职称") = Text3.Text

sqlres("电话") = Text4.Text

sqlres("系代号") = Text5.Text

sqlres.Update

End If

sqlres.Close

Adodc1.RecordSource = "select * from 教师"

Adodc1.Refresh

End Sub

Private Sub Command4_Click()

Dim sqlupstr As String

sqlupstr = "select *from 教师 where 工作证号=" & Trim(Text1.Text)

sqlres.Open sqlupstr, sqlcon, adOpenDyamic, adLockPessimistic

If Not sqlres.EOF Then

Else

sqlres.AddNew

sqlres("工作证号") = Text1.Text

sqlres("姓名") = Text2.Text

sqlres("职称") = Text3.Text

sqlres("电话") = Text4.Text

sqlres("系代号") = Text5.Text

sqlres.Update

End If

sqlres.Close

Adodc1.RecordSource = "select * from 教师"

Adodc1.Refresh

End Sub

Private Sub Form_Load()

sqlcon.Provider = "SQLOLEDB"

sqlcon.Open "Server=Y500-X64\SQLEXPRESS;DataBase=教务管理系统;UID=sa;PWD=;"

End Sub

Private Sub Form_Unload(Cancel As Integer)

sqlcon.Close

End Sub

Public Sub MakeSqlStr()

sqlstr = ""

If Trim(Text6.Text) <> "" Then

sqlstr = Trim(Text6.Text)

End If

If Trim(Text6.Text) = "" Then

sqlstr = Text1.Text

End If

End Sub

5.课程信息代码:

Private sqlcon As New ADODB.Connection

Private sqlres As New ADODB.Recordset

Private sqlcmd As New ADODB.Command

Dim sqlstr As String

Private Sub Command1_Click()

MakeSqlStr

Adodc1.RecordSource = "select *from 选修 where 课程号&学号=" & sqlstr

Adodc1.Refresh

End Sub

Private Sub Form_Load()

sqlcon.Provider = "SQLOLEDB"

sqlcon.Open "Server=Y500-X64\SQLEXPRESS;DataBase=教务管理系统;UID=sa;PWD=;"

End Sub

Private Sub Form_Unload(Cancel As Integer)

sqlcon.Close

End Sub

Public Sub MakeSqlStr()

sqlstr = ""

If Trim(Text7.Text) <> "" Then

sqlstr = Trim(Text7.Text)

End If

If Trim(Text7.Text) = "" Then

sqlstr = Text1.Text

End If

End Sub

6.学生选课:

Private sqlcon As New ADODB.Connection

Private sqlres As New ADODB.Recordset

Private sqlcmd As New ADODB.Command

Dim sqlstr As String

Dim sqlupstr As String

Private Sub Command2_Click()

Form8.Hide

End Sub

Private Sub Command3_Click()

ret = MsgBox("是否要删除学生" + Adodc1.Recordset("学号") + "的" + Adodc1.Recordset("课程号") + "号课程的记录", vbYesNo, "提示")

If ret = vbYes Then

sqlcmd.ActiveConnection = sqlcon

sqlcmd.CommandText = "delete from 选修 where 课程号=" + Adodc1.Recordset("课程号")

sqlcmd.Execute

Adodc1.RecordSource = "select * from 选修"

Adodc1.Refresh

End If

End Sub

Private Sub Command1_Click()

Dim sqlupstr As String

sqlupstr = "select * from 选修 where  学号=" & Trim(Text1.Text)

sqlres.Open sqlupstr, sqlcon, adOpenDyamic, adLockPessimistic

If Not sqlres.EOF Then

Else

sqlres.AddNew

sqlres("课程号") = Text2.Text

sqlres("学号") = Text1.Text

sqlres.Update

End If

sqlres.Close

Adodc1.RecordSource = "select * from 选修"

Adodc1.Refresh

End Sub

Private Sub Form_Load()

sqlcon.Provider = "SQLOLEDB"

sqlcon.Open "Server=Y500-X64\SQLEXPRESS;DataBase=教务管理系统;UID=sa;PWD=;"

End Sub

Private Sub Form_Unload(Cancel As Integer)

sqlcon.Close

End Sub

相关推荐