职场文秘网

首页 > 领导讲话 > 宣传讲话 / 正文

学校教材订购系统定义

2021-01-24 17:45:51

 学校教材订购系统定义

 1.基本要求

 1.1项目目标 通过本系统完成为学校教材的购销工作,包括销售和采购两个部分。

 1.2系统简介 系统简介本系统可细化为两个子系统:销售系统和采购系统。销售系统的工作过程为:首先由教师或学生提交购书单,经教材发行人员审核是有效购书单后,开发票、登记并返给教师或学生领书单,教师或学生即可去书库领书。采购系统的主要工作过程为:若是脱销教材,则登记缺书,发缺书单给书库采购人员;一旦新书入库后,即发进书通知给教材发行人员。

 以上的功能要求在计算机上实现。

 1.3技术要求和限制条件    (1) 当书库中的各种书籍数量发生变化(包括领书和进书时),都应修改相关的书库记录,如库存表或进/出库表。

    (2) 在实现上述销售和采购的工作过程时,需考虑有关单据的合法性验证    (3) 系统的外部项至少包含三个:教师、学生和教材工作人员。

    (4) 系统的相关数据存储至少包含6个:购书表、库存表、缺书登记表、待购教材表、进/出库表。

 1.4系统界面

 学生/教师登陆界面、书刊查询界面、书刊信息界面、领书单界面、新书入库界面、退出界面等。

 1.5开发概要

 系统调研、具体开发、测试、维护

  2.资源

  2.1 人员 本小组成员(华伟,阮运磊,张翔宇,张哲)在老师的辅导下开发完成。

 2.2 硬件 内存:2GM;CPU:Intel

 Core2

 1.80GHz

 2.3软件 MyEclipse5.5 集成开发工具,MySQL5.0.22数据库和window visio2003画图工具以及windows word文档工具 。

  3.进度安排 随课程进度同步完成系统的开发及文档编写工作。

  4.预算 本项目作为学生课程设计,其所有开销 包括软件,设施及开发经费都由学生自理。

  学校教材购销系统需求规格说明书

 1引言 1.1 编写目的 本要求规格说明书对学校教材购销系统进行简单的分析,给出了系统的数据流图。系统主要用户是学生,教师和教材工作人员,加深与用户间的交流,在功能与系统界面上与用户达成一致的看法,以便于开发出用户满意的系统。

  1.2项目背景 随着高校办学规模的扩展,管理方式和管理效率的矛盾日渐突出。在教材购销方面,手工管理方式和文档系统管理方式在管理质量和管理效率上,从根本上不能适应大规模的管理要求。而随着计算机科学的发展与进步,计算机科学管理方式,不管在管理效率还是在管理质量上都逐步显示出了它的可靠性和优越性。而且计算机管理在人力、物力等资源方面都比以前的管理模式要有大的节省。计算机管理正以它自身的优越性成为管理模式中的主流。教材购销管理系统采用计算机管理模式的必然性也在与此! 本系统以学校为背景,在认真调研和分析了学校订购教材的现状之后,根据学生,教师和教材工作人员的需求和各个功能的关系,作出了积极的设计方案。在新的管理资源和管理模式上,一定能使工作质量、工作效率等得到提高,推动学校发展的步伐。

 本系统名称为:安徽工程科技学院教材购销系统。由安徽工程科技学院教材管理层提出,由修宇老师和我们项目小组成员(华伟,阮运磊,张翔宇,张哲)开发,适合学生,老师和教材工作人员使用,可以在学校的计算机中心开设服务器,在校园网上运行。

  1.3 软件产品的作用范围 学校教材购销系统是为高等院校开发的,用于日常的教材管理,包括销售与采购。提供数字化的管理,提高学校教材管理部门的工作效率。

 2.一般性描述 2.1本系统可细化为两个子系统:销售系统和采购系统 销售系统的工作过程为:首先由教师或学生提交购书单,经教材科发行人员审核是有效购书单后,开发票、登记并返给教师或学生领书单,教师或学生即可去书库领书。

 采购系统的主要工作过程为:若是脱销教材,则登记缺书,发缺书单给 书库采购人员;一旦新书入库后,即发进书通知。

 2.2产品功能 本系统在向学生售书时主要输入学生学号、班级代号、购书数量、购书书名信息,然后打印领书单返回给学生领取书籍。

 本系统在查询数据库时主要输入需要查询的相关信息,包括图书编号、图书书名、出版社信息、图书特色等信息方便操作人员把握图书信息。

 本系统还兼顾一点财务信息的管理,在发生单人购书时,系统直接向购书者收取现金,内部形成一个小小的财务管理。

 本系统还和学校的财务科发生数据交换,发生集体售书时,学校根据数据的有效性,直接向集体售书,形成的财务信息直接和财务科交换,方便结算。即:向学生集体售书时不需要直接收取现金,而待教材科结算时向财务科提交数据,由财务科从学生的预交书费里扣除,保证教材科财务信息的完整。

  3数据流图与数据字典

 3.1系统数据流图(DFD) 教材发行人员 采购人员 教师或学生 购书单

 审核信息

 进书通知

 进书通知

 缺书单

 领书单

 大学教材订购系统

  3.1.1

 学校教材购销系统DFD 系统数据字典:

  名字:定书表 别名:订书单 描述:送给采购员的定书表 定义:购书单=购书单号+{书名+出版社+价格+数量}+日期+订购 名姓名+订购者职务+购书总数+总额

 购书单号=DG+年+月+日+4位整数

  订购者职务=学生|教师

 价格=整数+4位小数 位置:输出到打印机

  名字:领书表 别名:领书单 描述:送给学生或教师的领书报表 定义:领书单=领书单号+订购者姓名+领书日期+购书单号+领书日期+经办人

  领书单号=LQ+年+月+日+4位整数 位置:输出到打印机

  名字:缺书表 别名:缺书单 描述:送给相关工作人员的表,用来补充书籍 定义:缺书单=缺书单号+{书名+出版社}+总数

  缺书单号=QS+年+月+日+4位整数 位置:输出到打印机

 名字:进书通知 描述:详细的描述了进书的信息 定义:进书通知=编号+{书名+出版社+价格+数量}+采购人姓名+采购日期+采购总数+采购总额

  编号=JS+年+月+日+4位整数 位置:

  名字:审核信息 描述:用于审核信息 定义:审核信息=教材发行人员姓名+审核标志+审核日期

  审核标志=TURE|FALSE(注:表示审核是否通过) 位置:

 3.1.2

 学校教材购销系统一级数据流图

  身

  份 验

  证 学生或 教 师

 购书单

 不合法

 领书单

  合法

  库存表

  教材工作人 员

  采

  购 系

  统

  缺书单

  销

  售

 系

  统

 进书通知

 缺书登记表 一级数据字典:

 1 库存表=记录ID +图书信息 +数量

 2 缺书表=记录ID +图书信息+缺书日期

 3 进库表=日期+图书信息+数量+采购员+总额

 4图书信息=书名+出版社+价格+作者+ISBN+版次

 ISBN=10{数字}10 且能被7整除

  记录ID=JC+15{数字}15

 3.1.3 二级数据流图

  购书单 审核信息

  领书单

  发票

 领书信息

 领书单

 缺书单

  缺书单 缺书信息

  采购信息 进书通知

  图书信息

  采购信息

  购书表

  审

 核

 登记

 库存表

  开

 票

 登

 记

 领 书

 缺书表

 出库表

 缺书登记

 缺书表

 图书 入库

 库存表 进库表

 二级数据字典:

 名字:发票 别名:

 描述:唯一的表述一次够书或者买书凭证 定义:发票=客户名+日期+{书名+价格+数量}+总额+开票人+发票号 位置:

  名字:出库表 别名:

 描述:描述出库的一切信息 定义:出库表=日期+图书信息+教材发行人员 位置:输出到打印机

 名字:采购信息 别名:

 描述:描述采购的信息 定义:采购信息=采购员姓名+日期+图书信息+总数+总额 位置:

  名字:有效订书单 别名:

 描述:有效的订书单 定义:有效订书单=购书单+教材发行人员姓名 位置:输出到打印机

  3.2 数据存储描述 数据存储名称:缺书登记表 组成:书号+书名+出版社+缺书数量+出版时间+书籍信息 组织:

 备注:

 数据存储名称:教材库存表

 组成:书号+书名+出版社+数量+出版时间+书籍信息+是否特殊用途{教学用、零售} 组织:

 备注:

 数据存储名称:进库表、出库表、库存表、购书表 组成:书号+书名+出版社+出版时间+单价+数量+总价+书籍信息 组织:

 备注:

 数据存储名称:售书登记表 组成:学号+姓名+班级+所购书号+书名+单价数量+总价 组织:

 备注:学号、班级、姓名可为空 数据存储名称:补售书表 组成:学号+姓名+班级+所购书号+书名+数量+书籍信息 组织:

 备注:

  数据存储名称:教学用书表 组成:书名+书号+出版社+出版时间+数量+书籍信息 组织:

 备注:

 3.3数据流描述 <购书单>::=(<教师信息>|<学生信息>)+<书名>+<数量> +<出版社>+<作者>+<购书日期> <学生信息>::=<学生学号>+<学生姓名>+<学生性别>+<学生班级> <学生学号>::=1| 2|…|50 <序号>::= 1| 2|…|50 <数量>::= 1| 2|…|10000 <购书日期>::=<年>+<月>+<日>

 <缺书单>::=<序号>+<书名>+<数量>+<出版社>+<作者> <入库单>::=<入库号>+<书名>+<数量>+<出版社>+<作者>+<入库时间> <出库单>::=<学生信息>+<书名>+<数量>+<出库时间> <购书教材记录>::=<书名>+<数量> <领书单>::=|<学生信息>+<书名>+<出版社>+<作者>+<数量> <库存情况>::=<序号>+<书名>+<出版社>+<作者>+<数量>

  学校教材订购系统中,其主要的实体分别为用户(教师和学生)、教材管理人员,经分析后,得到主要E-R图,如图所示。

 书

 籍

  价格 库存量

 出版社

 编号

  书籍名

  工 作

 人

 员

 工号

 备

 注

 性别

  职位

  姓

 名

 电

 话

 教师或学生

  性 别

 姓 名

  编

  号

  总体设计

 1、系统功能模块结构图 根据需求分析,学校教材订购系统功能模块结构图如下:

 大学教材订购系统 销 售 子 系 统 采 购 子 系 统 提 交 购 书 单 审 核 购 书 单 开 发 票 登 记 购书记 录 发 缺 书 单 登 记 缺 书 记录 发 进 书 通知单 修 改 相 应的表 返 回 领 书 单 领书修改库存记录 维护相应的数据表 维 护 数 据 库

  进一步对学校教材订购系统的销售过程和采购过程进行数据流程分析,本系统应当具有如下的数据项和数据结构:开发过程中建立了名为book的数据库,下设book07、book08、adminlist等表如图3-1所示:

  图3-1

 book数据库图

 表asminlist用于存放系统管理员和老师或学生的登陆用户名和密码,其中帐号为主码,如图3-2 adminlist图所示。

  图3-2

 adminlist图 表book07用于存放过去两个学期中计算机系所有已定教材的信息,其中书号为主码,如图3-3表book07图所示。

 图3-3

 表book07图 表book08用于存放本学期需要征订的教材,同样,书号为主码,如图3-4表book08图所示。

  图3-4

 表book08图

  详细设计 1.根据功能模块用程序流程图进行详细设计和各模块详细设计说明书如下:

  销售子系统模块程序流程图:

  开始

 提交购书单

  N

 审核购书单

 1

 错误显示

  Y

  开发票

  登记购书记录

 N

 错误显示

 审核登记

 Y

  发领书通知单

  修改相应表

  N 审核修改

  错误显示

 Y

  结束

 采购子系统模块程序流程图:

  开始

 发缺书单

 审核缺书单

  错误显示

 登记缺书

 审核登记

  错误显示

  修改数据库的表

  审核修改

  错误显示

  发进书通知单

 结束

 接口

  各模块过程之间采用函数调用、参数传递、返回值的方式进行消息传递。具体参数的结构将在下面数据结构设计的内容中说明。接口传递的信息将是以数据结构封装了的数据,以参数传递或返回值的形式在模块之间传递。

 存储分配

  为程序当中的数据结构在内存中开辟空间存储,如入到数据库中后在数据库的表中为其开辟存储空间。

 限制条件

  输入的信息都封装在数据结构当中,不能独立存在,在向数据库中提交数据时必须一起提交而不能逐项提交。输入数据的类型必须和定义的数据类型相匹配。

  界面设计及详细代码 本系统主要有登陆界面load.aspx,显示书目信息及功能模块选择页面book.aspx,添加新记录页面new.aspx,添加历史记录页面history.aspx和history1.aspx,修改记录update.aspx和update1.aspx以及删除记录delete.aspx八个页面组成.其中登陆与用datagrid两大模块的代码编写与设计.具体设计如下: 5.1 登陆界面

 当单击确定按钮时,连接数据库,确定输入的帐号和密码是否匹配,跳转到书目的页面,若不匹配,则弹出帐号错误或密码错误的提示。如图5-1所示

 图5-1

 具体代码如下:

 Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click

  Dim str As String

  Dim passstr As String

  passstr = Trim(CStr(TextBox2.Text))

  str = “'“ & TextBox1.Text & “'“

  Dim sql As String = “select * from adminlist where 帐号=“ & Trim(str)

  ‘在数据库中搜索帐号为textbox1.text的数据’

  Dim connstr As String = “server=localhost;uid=sa;pwd=;database=book“

  Dim myconn As New SqlClient.SqlConnection(connstr)

  Dim da As New SqlClient.SqlDataAdapter(sql, myconn)

  Dim ds As New DataSet

  da.Fill(ds, “adminlist“)

  Dim dacomm As SqlClient.SqlCommandBuilder = New SqlClient.SqlCommandBuilder(da)

 If ds.Tables(“adminlist“).Rows.Count = 1 Then ’判断帐号密码是否和数据库匹配’

  If passstr = Trim(ds.Tables(“adminlist“).Rows(0)(“密码“)) Then

  Response.Redirect(“book.aspx“)

  Else

  Response.Write(“密码错误!“)

  End If

  Else

  Response.Write(“用户名不存在!“)

  End If

  End Sub End Class 5.2用datagrid显示数据 首先建立datagrid,通过连接数据库,将数据显示在datagrid中。如图5-2所示

 图 5-2 书目页面book.aspx 具体代码如下:

 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

 binddata() End Sub Sub binddata()

  Dim myconnection As New SqlConnection(“initial catalog=book;uid=sa;pwd=“)

  Const strsql As String = “select * from book08 order by 书号“

  Dim mycommand As New SqlCommand(strsql, myconnection)

  Dim myda As New SqlDataAdapter

  myda.SelectCommand = mycommand

  Dim myds As New DataSet

  myda.Fill(myds)

  DataGrid1.DataSource = myds

  DataGrid1.DataBind()

  End Sub 5.3

 添加历史书目

 (1)history.aspx在登陆系统并选择插入历史书本后,进入添加历史书目的页面,决定选择哪条记录进行添加。如图5-3插入历史书目图所示 图5-3

 插入历史书目图

 在单击左侧的选择后,自动跳转到update1.aspx,根据所选择的书目,进行相应的修改后添加到记录中去。具体代码如下:

 页面登陆事件代码:

 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

  If Not Page.IsPostBack Then

  binddata()

  End If

  End Sub 连接数据库:

  Sub binddata()

  Dim myconnection As New SqlConnection(“initial catalog=book;uid=sa;pwd=“)

  Const strsql As String = “select * from book07 order by 书号”

  Dim mycommand As New SqlCommand(strsql, myconnection)

  Dim myda As New SqlDataAdapter

  Myda.SelectCommand = mycommand

  Dim myds As New DataSet

  Myda.Fill(myds)

  DataGrid1.DataSource = myds

  DataGrid1.DataBind()

  End Sub 确定所选择的行的数据,并把该行相应的内容分别通过session变量储存下来。

 Private Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.ItemCommand

  Dim b_no As TableCell = e.Item.Cells(1)

  Dim b_name As TableCell = e.Item.Cells(2)

  Dim b_a As TableCell = e.Item.Cells(3)

  Dim b_b As TableCell = e.Item.Cells(4)

  Dim b_c As TableCell = e.Item.Cells(5)

  Session(“a”) = b_no.Text

  Session(“b”) = b_name.Text

  Session(“c”) = b_a.Text

  Session(“d”) = b_b.Text

  Session(“e”) = b_c.Text

  Response.Redirect(“history1.aspx”) End Sub Button_click事件,重定向到book.aspx页面

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

  Response。Redirect(“book.aspx”)

  End Sub End class (2)history1.aspx页面:通过上一个页面的选择后,该页面进行修改并添加的操作。如图4-4修改添加记录图所示:

  图5-4

  添加记录图 该页面中将征定时间和数量的值用textbox表示,是为了方便在插入历史书目的时候修改它的时间和它的数量。当管理员修改完成后,则可单击确定添加操作,将数据添加到08年的数据库中。具体代码如下:

 页面登陆代码:

 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

  If Not IsPostBack Then

  Dim str As String

  str = “'“ & Label6.Text & “'“

  Dim sql As String = “select * from book07 where 书号 =“ & Trim(Session(“a”))

  Dim connstr As String = “server=localhost;uid=sa;pwd=;database=book”

  Dim myconn As New SqlClient.SqlConnection(connstr)

  Dim da As New SqlClient.SqlDataAdapter(sql, myconn)

  Dim ds As New DataSet

  Da.Fill(ds, “book07”)

  Dim dacomm As SqlClient.SqlCommandBuilder = New SqlClient.SqlCommandBuilder(da)

  Label6.Text = ds.Tables(“book07”).Rows(0)(“书号”)

  Label7.Text = ds.Tables(“book07”).Rows(0)(“书名”)

  Label8.Text = ds.Tables(“book07”).Rows(0)(“作者”)

  TextBox1.Text = ds.Tables(“book07”).Rows(0)(“征定时间”)

  TextBox2.Text = ds.Tables(“book07”).Rows(0)(“数量”)

  End If

  End Sub 修改后添加到数据库的代码:

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

  Dim str As String

  Dim litem As ListItem

  str = “'“ & Label6.Text & “'“

  Dim sql As String = “select * from book08 where 书号=“ & Trim(str)

  Dim connstr As String = “server=localhost;uid=sa;pwd=;database=book”

  Dim myconn As New SqlConnection(connstr)

  Dim da As New SqlDataAdapter(sql, myconn)

  Dim ds As New DataSet

  da。Fill(ds, “book08”)

  Dim myrow As DataRow

  Dim dacomm As SqlClient.SqlCommandBuilder = New SqlClient.SqlCommandBuilder(da)

  If ds.Tables(“book08”).Rows.Count >= 1 Then

  Response.Write(“此书已存在”)

  End If

  myrow = ds.Tables(“book08”).NewRow

  myrow(“书号”) = Trim(Label6.Text)

  myrow(“书名”) = Trim(Label7.Text)

  myrow(“作者”) = Trim(Label8.Text)

  myrow(“征定时间”) = Trim(TextBox1.Text)

  myrow(“数量”) = Trim(TextBox2.Text)

  ds.Tables(“book08”).Rows.Add(myrow)

  da.UpdateCommand = dacomm.GetUpdateCommand

  da.Update(ds, “book08”)

  Response.Redirect(“book.aspx”)

  End Sub 单击返回按钮后,重定向到history.aspx的代码:

 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

  Response.Redirect(“history.aspx”)

  End Sub End Class 5.4

 删除记录 在登陆系统后点击修改按钮进入修改页面delete.aspx,通过复选框的选择,删除数据。如下图5-5删除页面所示:

  图5-5

 删除页面

  该页面通过复选框的操作删除数据后,重定向回该页面,以便显示删除后数据的更新。具体代码如下:

 页面登陆代码:

 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

  If Not Page.IsPostBack Then ‘用来确认页面是否第一次登陆’

  binddata()

  End If

  End Sub

  Sub binddata() ‘连接到数据库’

  Dim myconnection As New SqlConnection(“initial catalog=book;uid=sa;pwd=“)

  Const strsql As String = “select * from book08 order by 书号”

  Dim mycommand As New SqlCommand(strsql, myconnection)

  Dim myda As New SqlDataAdapter

  Myda.SelectCommand = mycommand

  Dim myds As New DataSet

  Myda.Fill(myds)

  DataGrid1.DataSource = myds

  DataGrid1.DataBind()

  'myda.Update(myds, “book08”)

  End Sub Button_click事件:

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

  Dim i As Integer

  Dim x As String

  Dim item As DataGridItem

  For i = 0 To DataGrid1.Items.Count – 1

 item = DataGrid1.Items(i)

  Dim bookcheckbox As CheckBox = item.FindControl(“checkbox1”)

  If bookcheckbox.Checked Then ‘确认数据是否被点击进行删除’

  x = item.Cells(1).Text ‘x为datagrid第二列的数据的内容’

  deletedataset(x)

 End If

  Next

  binddata()

  Response.Write(“删除成功!”)

  End Sub

  Sub deletedataset(ByVal y As String)

  Dim con As New SqlConnection(“initial catalog=book;uid=sa;pwd=“)

  Dim cmd As SqlCommand

  Dim qry As String

  Con.Open()

  qry = “delete book08 where 书号='“ & y & “'“

  cmd = New SqlClient.SqlCommand(qry, con)

  cmd.ExecuteNonQuery()

  con.Close()

  End Sub Button_click的重定向事件

  Private Sub Button2_Click(ByVal sender As System。Object, ByVal e As System.EventArgs) Handles Button2.Click

  Response.Redirect(“book.aspx”) End sub End class 添加新教材和修改记录两大模块共三个页面的代码编写与设计。具体设计如图5-6所示:

  图5-6

 添记录页面 new.Aspx

 (1)添加新教材。在登陆系统并选择录入新书后,进入添加新教材页面。如3-6图所示:

 对textbox1到textbox5添加RequiredFiledValidator控件,并设置相应属性使textbox中的文本不能为空。

 对textbox1添加RegularExpressionValidator控件,设置ValidationExpression属性为”\d[4]”,ErrorMessage为”书号的格式为0001”。

 对textbox1添加RangeValidator控件,设置MinimunValue为”0001”,MaxmumValue为”9999”。使书号的取值范围为0001——9999。

 对textbox4添加RegularExpressionValidator控件,设置ValidationExpression属性为”\d{4}-\d{1,2}”,使时间格式为2008-1。

 对textbox5添加RangeValidator控件,设置MinimunValue为”1”,MaxmumValue为”99”,使订阅的教材数量在1-99本之间。

 该页面程序代码如下:

 Page Load事件代码 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Button Click事件代码 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

  Dim str As String

  Dim litem As ListItem

  str = “'“ & TextBox1。Text & “'“

  Dim sql As String = “select * from book08 where 书号=“ & Trim(str)

  Dim connstr As String = “server=localhost;uid=sa;pwd=;database=book“

  Dim myconn As New SqlConnection(connstr)

  Dim da As New SqlDataAdapter(sql, myconn)

  Dim ds As New DataSet

  da。Fill(ds, “book08“)

  Dim myrow As DataRow

  Dim dacomm As SqlClient.SqlCommandBuilder = New SqlClient.SqlCommandBuilder(da)

  If ds.Tables(“book08“).Rows.Count >= 1 Then

  Response.Redirect(“new.aspx“)

  Response.Write(“书号重复,请重新输入“)

  End If myrow = ds.Tables(“book08“).NewRow

  myrow(“书号“) = Trim(TextBox1.Text)

  myrow(“书名“) = Trim(TextBox2.Text)

  myrow(“作者“) = Trim(TextBox3.Text)

  myrow(“征定时间“) = Trim(TextBox4.Text)

  myrow(“数量“) = Trim(TextBox5.Text)

  ds.Tables(“book08“).Rows.Add(myrow)

  da.UpdateCommand = dacomm.GetUpdateCommand

  da.Update(ds, “book08“)

  Response.Redirect(“book.aspx“) End Sub (2) 修改记录。在登陆系统后点击修改按钮进入修改页面update.aspx。如图5-7所示:

  图5-7

 修改页面update.Aspx

  在该页面设计中添加SqlDataAdapter控件和DataSet控件,用于执行ADO。NET数据库访问的相关操作。该页中的数据通过DataGrid控件显示,设置相应属性,将其绑定到表book08,使其显示book08中的数据。在DataGrid控件中添加一个按钮列,列名为选择。当用户点击该列的按钮时自动获取该行的相关值,将其赋值给Session变量并跳转到update1。aspx。update1。aspx如图:5-8所示

  图5-8

 修改选择后的记录 update1.aspx 页面中textbox的文本来自与update.aspx中定义并赋值的Session变量。用户通过修改其中的文本值并单击确定完成修改。

 修改部分代码如下:

 update.aspx中的Page Load事件 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

  If Not Page.IsPostBack Then

  binddata()

  End If End Sub 用于加载页面及确认是否第一次访问。

 Update.aspx中的binddata事件 private Sub binddata()

  Dim myconnection As New SqlConnection(“initial catalog=book;uid=sa;pwd=“)

  Const strsql As String = “select * from book08 order by 书号“

  Dim mycommand As New SqlCommand(strsql, myconnection)

  Dim myda As New SqlDataAdapter

  Myda.SelectCommand = mycommand

  Dim myds As New DataSet

  Myda.Fill(myds)

  DataGrid1.DataSource = myds

  DataGrid1.DataBind() End Sub 用于连接数据库并定义相关操作。

 Update.aspx中设置DataGrid中的ItemCommand Private Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.ItemCommand

  Dim b_no As TableCell = e.Item.Cells(1)

  Dim b_name As TableCell = e.tem.Cells(2)

  Dim b_a As TableCell = e.Item.Cells(3)

  Dim b_b As TableCell = e.tem.Cells(4)

  Dim b_c As TableCell = e.tem.Cells(5)

  Session(“a“) = b_no.text

  Session(“b“) = b_name.text

  Session(“c“) = b_a.text

  Session(“d“) = b_b.text

  Session(“e“) = b_c.text Response.Redirect(“update1.aspx“) End Sub 用于将Session变量的值传给textbox update.aspx中的Button1 Click事件 private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

  Response.Redirect(“book.aspx“) End Sub

  测试报告 1.当管理员打开“学校教材订购系统”后,首先进入的是管理员登录界面,管理员在提示信息输入管理员和密码,管理员为“shihongmin”,密码为“123”。

 当输入信息为空时,系统给出错误信息提示:“管理员或密码不能为空!”。

 当输入信息有误时,系统给出错误信息提示:“管理员或密码错误!”,同时清空文本框中的内容。

 当输入信息正确时,可进入该系统的主界面并提示“管理员您好,欢迎登录!“,进行以后的操作

 2. 管理员可以通过主界面的菜单来选取不同的功能,当管理员单击书刊查询菜单,系统进入书刊查询界面,管理员可以在相应的文本框输入书刊信息来查询。不输入任何项目直接单击查询按钮,系统会提示“请至少输入一项书刊信息!“;在文本框中输入信息后单击查询按钮,若书库表中找不到,则提示“对不起,没有找到您需要的书刊“,若书库表中找到了,则进入书刊信息界面,并显示相关书刊信息。如:在书刊查询界面的书号文本框里输入1111,然后单击查询,则系统会进入到书刊信息界面,各文本框显示如下:书号——1111、书名——《小说》、作者——张三、出版社——小说出版社。

  3. 管理员在主界面选择提交订书单菜单并单击,系统进入订书单提交界面,在相应的文本框输入信息后,单击提交按钮,系统提示“提交成功!“;单击退出按钮则返回主界面。

  4. 管理员在主界面选择查询领书单菜单,进入领书单查询界面,单击查看我的领书单按钮,进入我的领书单界面,显示你的所有领书单信息,若你没有领书单信息,则提示“对不起,您订购的书还未到库,我们会尽快为您解决!“

 5. 管理员在主界面选择缺书登记菜单,进入缺书登记界面,在相应文本框填写信息,然后单击确定按钮,系统提示“登记成功!“,单击退出按钮则返回主界面。

  6.管理员在主界面选择退出菜单,进入退出界面,提示“您确定要退出吗?”,单击确定按钮关闭教材订购系统程序,单击取消按钮则返回主界面。

  系统维护 1、数据库的维护 保密性是指用户在网上的所有信息应有一定的保密度,设置不同的权限、不同的初始化菜单,不同类型的用户之间的内容是互相保密的。安全性是指用户参加一次活动是一个安全的过程,对于所有 用户的动作,服务器都须加以跟踪。为了确保其安全与保密性,主要通过下列两种途径予以实现:其一,凡进入系统的用户,都要通过用户身份验证才能进入。由于缺陷性,不同用户具有一样的操作权限。不允许用户执行非法的操作,防止用户无意或有意的破坏。

 本系统数据库主要采用SQL Server数据库管理工具进行设计,它具有强大的管理、安全、登陆、网络支持功能,且可以和其它数据库进行转换,是一种网络数据库管理软件,符合设计要求。

 小结

 通过对“学校教材订购系统”的设计,我更清楚的了解一个软件项目开发的整体过程,有需求分析,概要设计,详细设计,编码实现,以及测试、维护等几个步骤,并在每个阶段撰写详细的文档。文档跟程序和数据一样都是系统不可缺少的部分,在软件的编写、使用跟维护过程中都有着重要的作用,可以有效的减少软件危机。

 调研和需求分析在系统开发中是最重要的部分,在此部分我们需要收集相关信息以及分析用户的需要,整理出具有实际可行性的软件需求报告,分析出整个系统的功能需求、性能需求等各方面的需求。需求分析我做的比较详细。需求分析的目的就是要使你开发的软件能尽可能满足顾客提出的要求,因为软件是为顾客服务的,你的软件开发的再好,技术再先进,如果无法满足顾客的基本要求,那就等于零。所以需求分析要花时间仔细地去做,如果到最后发现需求都搞错了,那你整个前期的工作都白做了。由于这是一个练习软件,所以没法跟实际的用户交流,无法采用螺旋模型,在这个设计过程中,我基本上都是参照瀑布模型的步骤,又由于能力和知识面的原因,无法列出所有的需求,降低了这个软件的可用性。

 要先对系统的总体结构进行设计,然后根据系统模块的划分,完成其顶级数据流图,并对其细化,完成一级、二级数据流图的分解,并完成数据字典的设计,这一部分的设计直接影响到系统的功能完备性。

 概要设计、系统设计也很关键,它给出了系统的主要框架,这就像造房子,整个框架搭的好,那么以后砌转头就容易,如果框架存在毛病,那么房子造不造的出来都是一个问题。如果在前面的一系列分析、设计中都做的很到位,那么你会发现编码就是水到渠成的事了,我想这也就是编码为什么不是很重要的原因吧。

 软件的测试用例,因为时间关系,只是进行了单元测试跟确认测试,而且只对少数重要部分进行了白盒测试,在白盒测试中,进行路径测试,条件测试,判定覆盖,语句覆盖。对次要部分采用的都是黑盒测试,在黑盒测试中采用等价类划分的测试方法,列出尽可能多的有效等价类和无效等价类。因为没能遵循严格的测试程序,这为以后对系统性能的维护增加了很多难度。

 在本次实验设计中,我遇到了不少的难题,幸好有刘老师不厌其烦的给我讲解,让我在短短的一学期中学到了很多以前都没能学到的东西,更主要的是学到了软件开发的基本思想跟方法。在此,我深深的感谢刘老师一学期对我的辛勤培养。

 参考文献

 1《软件工程》 齐治昌 谭庆平 宁洪编著——高等教育出版社 2《数据库系统概论》 萨师煊 王珊编著——高等教育出版社 3 《Powerbuilder》 崔巍编著——高等教育出版社

 

Tags: 订购   定义   教材  

搜索
网站分类
标签列表