目 录
第 一 章 绪 论
1.1数据库应用系统开发过程
SQL Server提供数据库服务,一般用于存储数据并且提供套方法来操纵、维护和管理这些数据。SQL Server作为数据库服务器,能够响应来自客户端的连接和数据访问请求。在实际的数据库应用系统中,出于安全性和操作简便性等目的,般不采用 SQL Server2008数据库管理系统作为普通用户操作和管理数据库的界面。通常采用某种开发工具为数据库应用系统设计处理逻辑和用户界面,使得用户通过客户端程序提供的操作界面访问和管理数据库的数据。在众多的数据库开发工具中, VisualBasic,NET( VB. NET)程序设计语言界面设计方便且具有强大的数据库操作能力。
1.1.1数据库系统开发
任何一个经济组织或社会组织在存在过程中都会产生大量的数据,并且还会关注许多与之相关的数据,它们需要对这些数据进行存储,并按照一些特定的规则对这些数据进行分析、整理,从而保证自己的工作按序进行、提高效率与竞争力。所谓数据库应用系统,就是为支持一个特定目标,把与该目标相关的数据以某种数据模型进行存储,并围绕这一目标开发的应用程序。通常把这些数据、数据模型以及应用程序的整体称为一个数据库应用系统。用户可以方便地操作该系统,对他们的业务数据进行有效的管理和加工用户要求数据库应用系统能够完成某些功能,例如工资管理系统,要能满足用户进行工资发放及其相关工作的需要,要能录入、计算、修改、统计、查询工资数据,并打印工资报表等。又如销售管理系统,要能帮助管理人员迅速掌握商品的销售及存货情况,包括对进货、销售的登记商品的热销情况、存量情况、销售总额的统计以及进货预测等。总之,就是要求数据库应用系统能实现数据的存储、组织和处理。数据库应用系统的开发一般包括需求分析、系统初步设计、系统详细设计、编码、调试和系统交付等几个阶段,每阶段应提交相应的文档资料,包括需求分析报告、系统初步设计报告、系统详细设计报告、系统测试大纲、系统测试报告以及操作使用说明书等。但根据应用系统的规模和复杂程度,在实际开发过程中往往要做一些灵活处理,有时候把两个甚至三个过程合并进行,不一定完全刻板地遵守这样的过程,产生这么多的文档资料,但是不管所开发的应用系统的复杂程度如何,需求分析、系统设计、编码、调试、修改这一个基本过程是不可缺少的。
1.1.2需求分析
整个开发过程从分析系统的需求开始。系统的需求包括对数据的需求和处理的需求两方面的内容,它们分别是数据库设计和应用程序设计的依据。虽然在数据库管理系统中,数据具有独立性,数据库可以单独设计,但应用程序设计和数据库设计仍然是相互关联相互制约的。具体地说,应用程序设计时将受到数据库当前结构的约束,而在设计数据库的时候,也必须考虑实现处理的需要。这一阶段的基本任务简单说来有两个,一是摸清现状,二是理清将要开发的目标系统应该具有哪些功能。
具体说来,摸清现状就要做深入细致的调査研究、明确以下问题:
①人们现在完成任务所依据的数据及其联系,包括使用了什么台账、报表、凭证等。
②使用什么规则对这些数据进行加工,包括上级有什么法律和政策规定、本单位或地方有哪些规定以及有哪些得到公认的规则等
③对这些数据进行什么样的加工、加工结果以什么形式表现,包括报表、工作任务单、台账图表等理清目标系统的功能就是要明确说明系统将要实现的功能,也就是明确说明目标系统将能够对人们提供哪些支持。需求分析完成后,应撰写需求分析报告并请项目委托单位签字认可,以作为下阶段开发方和委托方共同合作的一个依据
1.2系统设计
① 设计工具和系统支撑环境的选择,包括选择哪种数据库、哪几种开发工具、支撑目标系统运行的软硬件及网络环境等。
②怎样组织数据也就是数据模型的设计,即设计数据表字段、字段约束关系、字段间的约束关系、表间约束关系、表的索引等。
③系统界面的设计包括菜单、窗体等。
④系统功能模块的设计,对一些较为复杂的功能,还应该进行算法设计。系统设计工作完成后,要撰写系统设计报告,在系统设计报告中,要以表格的形式详细列出目标系统的数据模式、系统功能模块图、系统主要界面图以及相应的算法说明。作为系统开发人员的工作指导,也是为了使项目委托方在系统尚未开发出来时及早认识目标系统,从而及早地发现问题减少或防止项目委托方与项目开发方因对问题认识上的差别而导致的返工。同样,系统设计报告也需得到项目委托方的签字认可。
1.3系统实现
1.3.1测试
测试阶段的任务就是验证系统设计与实现阶段中所完成的功能能否稳定准确地运行、这些功能是否全面地覆盖并正确地完成了委托方的需求,从而确认系统是否可以交付运行。测试工作一般由项目委托方或由项目委托方指定第三方进行。在系统实现阶段,一般说来设计人员会进行些测试工作,但这是由设计人员自己进行的一种局部的验证工作,重点是检测程序有无逻辑错误,与前面所讲的系统测试在测试目的、方法及全面性来讲还是有很大的差别的。为使测试阶段顺利进行,测试前应编写一份测试大纲,详细描述每一个测试模块的测试目的、测试用例、测试环境、步骤、测试后所应该出现的结果。对一个模块可安排多个测试用例,以能较全面完整地反映实际情况。测试过程中应进行详细记录,测试完成后要撰写系统测试报告,对应用系统的功能完整性、稳定性、正确性以及使用是否方便等方面给出评价。
1.3.2系统交付
这一阶段的工作主要有两个方面:一是全部文档的整理交付;二是对所完成的软件(数据、程序等)打包并形成发行版本,使用户在满足系统所要求的支撑环境的任一台计算机上按照安装的说明就可以安装运行
第2章 需求分析
需求分析就是分析用户的要求。在需求分析阶段,系统分析员将分析结果用数据流程图和数据字典表示。需求分析的结果是否能够准确地反用户的时间要求,将直接影响到后面各个阶段的设计,并影响到系统的设计是否合理和使用。本次设计的基于SQL Server数据库技术实现学生学籍的管理,适合一般用户的需要。
2.1信息需求分析
学生:学号,姓名,性别,出生日期,民族,籍贯,少数民族否,入学分数,专业名称,照片,简历,主页等
课程:课程编号,课程名称,学分,课程描述等
选课:学号,课程编号,成绩等。
用户:用户名,密码,用户描述等。
专业:专业名称,成立时间,专业简介等。
2.2功能需求分析
系统要实现的主要功能有:
(1)建立数据库
根据系统功能设计的要求以及功能模块的划分,设计相关数据库。
(2)学籍信息管理模块
实现学籍基本情况的添加、修改、查询等基本操作;对学籍基本信息能提供灵活的查询方式。
(3)学生成绩管理模块
实现学生成绩的添加、修改、查询等基本操作;能方便的对学生的各个学科成绩进行查询。
(4)课程管理模块
实现课程信息的添加、修改、查询等基本操作;能方便的对学生的各个课程进行
查询。
(5)系统管理模块。
实现用户管理和修改密码的操作。
(6)用户信息模块
实现可查看当前登录用户的用户信息情况(包括用户名、密码、用户描述)
2.3数据流图
数据流图:简称DFD,就是采用图形方式来表达系统的逻辑功能、数据在系统内的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法使用逐步求精的方法,从顶层流程图逐分解,到最终流程图经过详细的调查,弄清了业务流程,在此基础上,构造出系统的逻辑模型,并通过数据图表示。如下图
2.4数据字典
数据字典( Data dictionary)是一种用户可以访问的记录数据库和应用程序元数的目录数据字典有一下几个要点:数据项:数据项是不可再分的数据单位,它直接反映物的某一特征。数据结构:反映了数据之间的组合关系数据流:数据流是数据结构在统內传输的路径。数据文件:数据文件是数据项停留或保存的地方,也是数据流的来和去向之本系统所需有的数据字典卡片列表如下
简略数据项如下:
第3章 系统设计
系统设计的任务是确定系统的数据模式、功能结构和系统结构,确定系统支持环境、
实现方法和技术。系统设计的基本内容为
1)选择数据库管理系统,建立数据模式。
2)选择系统支持环境,包括支持系统运行的硬件和软件要求,确定系统实现功能和方法。
3)选择系统的基本架构和技术。
3.1数据库概念设计
这一设计阶段是在需求分析的基础上,设计出能够满足用户需求的各种实体,以及他们之间的关系,为逻辑结构设计打下基础这个阶段用到的工具是E一R图(实体联系图)。本系统中有四个实体集:学生实体、课程实体集、成绩信息实体集
3.2逻辑设计
逻辑结构设计的主要目标是将概念结构转换为一个特定的DBMS可处理的数据模型和数据库模式。该模型必须满足数据库的存取、一致性及运行等各方面的用户需求。该设计以概念结构设计中的E一R图为主要依据,设计出相关的整体逻辑结构。根据E-R图有五个实体但仓库实体在本系统中作用不大而且仅涉及到一个仓库,所以库不再单独设计一张表。再加上多对多关系(本系统不考虑供应关系)总共五个关系模式:
学生信息(学号,姓名,性别,出生日期,民族,籍贯,少数民族否,入学分数,专业名称,照片,简历,主页)
课程:(课程编号,课程名称,学分,课程描述)
课程信息(学号,课程编号,成绩)
用户(用户名,密码,用户描述)
专业(专业名称,成立时间,专业简介)
3.3物理设计
从一个满足用户需求的已确定的逻辑模型出发,在限定的软、硬件环境下,利DBMS提供的各种手段设计数据库的内模式,即设计数据的存储结构和存取方法数库物理结构设计是对于给定的逻辑数据模型选择一个适合的物理结构,主要涉及存方法与存储结构,它依赖于计算机系统。
1)关系模式
关系数据库系统采用关系模型作为数据的组织方式,现在流行的数据库系统大都是系数据库系统。通过对关系模式的优化得到六个基本表。
2)简单物理设计
在 SQL Server2012中,文件夹是按数据库对象的类型建立的,文件夹名是该数据对象名。当在企业管理器中选择服务器和数据库文件夹,并打开已定义好的student数据库后会发现它自动设置了关系图、表、视图、存储过程、用户、角色、规则、默认文件件夹。要建立各个表,选择student数据库中的表,单击鼠标右键,在弹出的菜单中选择“新建表”。下面的表均使用上述方法制作。具体在 Sql server2012环境下,设计用户表,如下图所示
学生信息表的物理设计如下图:
在数据库中,右击学生表,返回所有值,然后输入原始值如下图所示:
建立课程表物理设计如下图所示:
据库中,右击课程表,返回所有值,然后输入原始值如下图所示:
建立选课的物理设计表如下图:
在数据库中,右击选课表,返回所有值,然后输入原始值如下图所示:
建立用户物理设计表如下图所示:
在数据库中,右击用户表,返回所有值,然后输入原始值如下图所示:
物理设计表如下:
在数据库中,右击用户表,返回所有值,然后输入原始值如下图所示:
第4章 系统实现
通过上面的系统需求分析,数据库的逻辑结构与物理结构的设计,本章便可实现系统。
4.1系统功能结构
具体功能模块如下:
4.2模块功能的实现
通过上面章节的系统分析,需求分析,功能模块的设计之后,在此前可以对每个模块功能的实现。
使用vb界面控件可以设计如下界面:
4.2登录界面:
系统通过以下主要代码实现登录界面:
Private Sub cmdOK_Click(sender As Object, e As EventArgs) Handles cmdOK.Click
If username.Text = "" Then
MsgBox("请输入用户名!")
username.Focus()
Exit Sub
End If
If password.Text = "" Then
MsgBox("请输入密码!")
password.Focus()
Exit Sub
End If
Dim icount As Integer
txtSql = "SELECT * FROM 用户 WHERE 用户名='" & username.Text & "' AND 密码='" & password.Text & "'"
icount = ExecuteSQl(txtSql, ErrorMsg)
If icount = 1 Then
username_OK = Trim(DBSet.Tables.Item(0).Rows.Item(0).Item("用户名"))
frmMain.Show()
Finalize()
ElseIf icount = 0 Then
MsgBox("没有此用户,或密码错误!")
username.Focus()
Else icount = -1
MsgBox("程序出错!")
username.Focus()
End If
4.2.1 修改登录密码界面:
系统通过以下主要代码实现:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If txtpassword1.Text = "" Then
MsgBox("未输入密码")
End If
If Trim(txtpassword2.Text) <> Trim(txtpassword1.Text) Then
MsgBox("密码输入不一致")
End If
Dim icount As Integer
txtSql = "UPDATE 用户 SET 密码='" & txtpassword1.Text & "' WHERE 用户名='" & username_OK & "'"
icount = ExecuteSQl(txtSql, ErrorMsg)
If icount = 1 Then
MsgBox("修改成功,请登录")
Dim frmchild As New login
frmchild.Show()
Finalize()
Else
MsgBox("修改失败")
End If
4.3.1 学籍信息添加界面
:
系统主要通过以下主要代码实现:
Private Sub frmStudentInfoModify_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim mytable As Data.DataTable
Dim recordnum As Integer
cboSex.Items.Add("男")
cboSex.Items.Add("女")
cboMZ.Items.Add("是")
cboMZ.Items.Add("否")
txtSql = "SELECT * FROM 学生"
recordnum = ExecuteSQl(txtSql, ErrorMsg)
mytable = DBSet.Tables.Item(0)
txtNum.DataBindings.Add("Text", mytable, "学号")
txtName.DataBindings.Add("Text", mytable, "姓名")
cboSex.DataBindings.Add("Text", mytable, "性别")
cboMZ.DataBindings.Add("Text", mytable, "少数民族否")
txtJG.DataBindings.Add("Text", mytable, "籍贯")
txtBirthday.DataBindings.Add("Text", mytable, "出生日期")
txtScore.DataBindings.Add("Text", mytable, "入学成绩")
txtZY.DataBindings.Add("Text", mytable, "专业名称")
txtPhoto.DataBindings.Add("Text", mytable, "照片")
txtWebPage.DataBindings.Add("Text", mytable, "主页")
txtResume.DataBindings.Add("Text", mytable, "简历")
mybind = CType(Me.BindingContext(mytable), CurrencyManager)
mybind.Position = 0
txtNum.ReadOnly = True
End Sub
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
Dim recordnum As Integer
Dim i As Integer = mybind.Position
If txtName.Text = "" Then