资源描述
软件工程实验设计报告
课 题: 教材订购系统-销售系统
姓 名:
学 号:
专业班级: 计算机科学与技术
指导教师: 周学清
设计时间: 2012年下学期
评阅意见:
评定成绩:
指导老师签名:
年 月 日
目录
第一章需求分析 1
(一)需求收集整理 1
(二)需求分析建模 2
1.功能模型DFD 2
2. 数据模型ER图 3
3.行为模型图 4
4.数据字典 5
第二章概要设计 7
(一) 软件结构图 7
(二)各个功能模块说明和接口描述 7
1. 发票验证模块 7
2.接口描述 8
(三)数据库设计 9
1.逻辑结构设计 9
2.数据库表的详细清单 9
第三章详细设计 12
(一)各个功能模块的模块流程图或伪码 12
1.验证模块的模块流程图 12
2.销售模块的模块流程图 12
第四章 编码 14
第五章实验小结 18
参考文献 18
第一章需求分析
(一)需求收集整理
随着市场经济的不断发展,一方面,市场由卖方市场转变成买方市场,企业有权挑选客户,另一方面,竞争的激烈要求企业要尽可能的降低成本。所以,购销系统应运而生。
教材购销管理系统: 教材购销管理系统是帮助管理人员、教材销售和库存的管理软件。该教材购销管理系统软件目前已有比较完善的管理与使用功能,该项目的用户是学校,开发本系统是为了教材购销管理系统更完善,为了教材购销对商品库存和销售的管理更方便,为了减轻工作人员的工作负担,以现代化的创新思维模式去工作。
系统的功能要求:
销售系统:
(1)审查有效性
教师或学生提交购书单,教材发行人员审核是有效购书单后,开发票、登记并返给教师或学生领书单,教师或学生即可去书库领书。
(2)开发票
如果允许学生买书,教材科会计将按购书单查阅教材存量表,如果有书且数量够,则开交款发票,否则,将购书单中无法购买的书的信息写入缺书登记表,以备以后补售教材。
(3)登记并开领书单
教材科出纳员根据发票上的总金额收取现金,并进行售书登记,同时开领书单,学生将领书单交给保管员,领书。
(4)补售教材
采购部门进书后,教材科秘书根据进书通知和缺书登记表给没买到教材的学生发补售通知单。
(二)需求分析建模
1.功能模型DFD
(1)学校教材订购系统顶层DFD图用来显示整个系统的DFD,如图1.1所示:
教材购销系 统
学生或
教 师
教材工作人 员
购书单 缺书单
领书单 进书通知
图1.1 学校教材购销系统顶层DFD
下面把系统分为销售和采购两个模块进行进一步分解,如图1.2。显然外部项学生或教师应与销售子系统联系,教材工作人员与采购子系统联系。两个子系统之间也存在联系:其一是缺书登记表,又销售子系统把脱销书籍传给采购子系统;其二是进书通知,直接由采购子系统将教材入库信息通知销售系统。
库存表
1
销 售
系 统
教材工作人 员
2
采 购
系 统
学生或
教 师
购书单
进书通知 缺书单
领书单
缺书登记表
图1.2 学校教材购销系统第二层DFD
继续分解,得到第三层数据流程图,其中图1.3由身份验证子系统扩展而成, 图1.4由销售子系统扩展而成。
学生或
教 师
1.1
审查有效 性
教材工作人 员
学生信息表 库存表 售书登记表
1.2登记和打印发票
购书申请 购书 购书单
图1.3 第三层DFD-销售
2.1
登记售书和打印领书单
学生或
教 师
购书单
领书单
售书登记表 出库表 库存表
2.2
产 生 补
售 书 单
采购
领书单
进书通知
图1.4第三层DFD-----销售子系统
图1.4中,销售子系统被分解为3个子加工,编号从2.1.到2.3,登记售书和打印领书单时,学生或教师持购书单申请购书,所购书存在就发给领书单到仓库领取所购书籍。若所购书籍暂时没有就登记缺书登记表,打印缺书登记单通知采购子系统购书,并产生补售书单,待书籍到库时通知学生或教师领书。
关于销售子系统的特殊说明,在售书过程中产生的补售书单只针对教师或者行政班级,对个人购书情况不做处理,也就是说个人所购之书有就代理,没有就不单独采购。
2. 数据模型ER图
E-R图是分为两部分实体和属性,每个实体可以有多个属性,这些属性用来表示实体的性质。不同实体之间可以用关系进行连接,表明各个实体之间的内在联系。实体和实体之间的关系有一对一的关系(1:1),一对多的关系(1:N)和多对多的关系(N:M)。
本系统中涉及的实体主要有“学生”、“教师”、“教材”
各实体及其属性如图1.5、图1.6、图1.7所示。
图1.5学生实体及属性联系图
图1.6教师实体及属性联系图
图1.7教材实体及属性联系图
3.行为模型图
行为模型图主要用来描述用户在采购过程中的动作,以便于我们编程实现各个系统的功能。其主要行为模型图如图1.8所示:
学生
教材保管员
购买
教材秘书
采购员
领书单,发票
查阅数量
教材出纳员
检查是否允许购买
否
写购书单
交购书单
是
够
不够
图1.8 行为模型图
4.数据字典
本系统的部分数据字典如下:
名字:订购单
别名:订书单
描述:送给采购员的定书表
定义:订购单=购书单号+书号+购书日期+订购者编号+订购者姓名+数量+总额
购书单号=以1开头的1--50位数字
书号=50位以数字开头的数字与字母的组合
购书日期=购书当天的时间 格式为:*年*月*日
订购者编号=教师工号|学生学号
订购者姓名=教师姓名|学生姓名
数量=1|2|3|4……|10000000
总额=1|2|3|4……|10000000
位置:输出到打印机
名字:进书单
别名:进书信息
描述:详细的描述了进书的信息
定义:进书单=进书单号+书号+采购人姓名+采购日期+采购总数+采购总额
进书单号=以2开头的1--50位数字
书号=50位以数字开头的数字与字母的组合
采购者姓名=教师姓名
采购日期=购书当天的时间 格式为:*年*月*日
采购总数=1|2|3|4……|10000000
采购总额=1|2|3|4……|10000000
名字:领书单
别名:领书表
描述:送给学生或教师的领书报表
定义:领书单=领书单号,订购者编号,领书日期,购书单号,购书日期,经办人
领书单号=以3开头的1--50位数字
订购者编号=教师工号|学生学号
领书日期=领书当天的时间格式为:*年*月*日
购书单号=以1开头的1--50位数字
购书日期=购书当天的时间格式为:*年*月*日
经办人=教师姓名
位置:输出到打印机
名字:缺书单
别名:缺书表
描述:送给相关工作人员的表,用来补充书籍
定义:缺书单=缺书单号+书号+总数
缺书单号=以4开头的1--50位数字
书号=50位以数字开头的数字与字母的组合
总数=1|2|3|4……|10000000
位置:输出到打印机
名字:入库单
别名:入库表
定义:入库单=入库号+书号+数量+入库时间
入库号=以5开头的1--50位数字
书号=50位以数字开头的数字与字母的组合
数量=1|2|3|4……|10000000
入库时间=入库当天的时间 格式为:*年*月*日
名字:出库表
定义:出库表=出库号+书号+数量+出库时间
出库号=以6头的1--50位数字
书号=50位以数字开头的数字与字母的组合
数量=1|2|3|4……|10000000
出库时间=出库当天的时间 格式为:*年*月*日
名字:库存表
定义:库存表=记录号+书号+数量
记录号=以7头的1--50位数字
书号=50位以数字开头的数字与字母的组合
数量=1|2|3|4……|10000000
名字:教材信息
定义:教材信息=书号+书名+编者+出版社+单价
书号=50位以数字开头的数字与字母的组合
书名=教材的名称
编者=教材的作者
出版社=出版教材的出版社
单价=出售教材的价格 格式为:1|2|3|4……|10000000
名字:学生信息
定义:学生信息=学生学号+学生姓名+学生性别+学生班级+电话
学生学号=以数字11开头的10为数字
学生姓名=订购学生的姓名
学生性别=男|女
学生年级=大一|大二|大三|大四
电话=1|2|3|4……|50
名字:教师信息
定义:教师信息=教师工号+教师姓名+教师性别+教师部门+电话
教师学号=以数字22开头的10为数字
教师生姓名=订购教师的姓名
教师性别=男|女
教师部门=机械|电气|生化|数学|人文|计算机|其他
电话=1|2|3|4……|50
第二章概要设计
(一) 软件结构图
根据前面总体的DFD模型图可以画出软件的基本结构图,如图2.1所示:
教材采购系统
销售系统
打印发票
出库信息
补售书单
登记售书
验证发票
图2.1 软件结构图
(二)各个功能模块说明和接口描述
1. 发票验证模块
(1)模块DFD图返回提示
学生或
教 师
1.1
审查有效 性
1.2登记和打印发票
教材工作人 员
售书登记表
不合法
学生证 学生证 购书单
图2.2 模块DFD图
本程序将常驻内存,与其它模块可同时运行。教材发行人员通过本程序对学生或教师的购书申请进行审核,验证订书单的合法性。对于合法的信息查看是否有库存,如无库存,则返回提示。如有则生成领书单。
不合法的订书单则生成不合法订书单通知书以便学生或教师及时修改。
(2) 模块功能
A 审核学生或教师的订书信息是否有效
B 生成领书单
C返回购书单。
2.接口描述
本模块由系统教材管理人员进行审核的相关操作,根据学生用表和教材信息表审核是否发领书单或者是返回购书单。
2.1用户接口
本系统采用典型的Windows风格作为人机接口,如使用窗口、菜单、对话框等。
1)订购书籍:教师或学生将要进行订购的书籍资料输入,系统将这些资料保存在文件中。
2)查询订购单:显示使用者已经保存的订购单信息。
3)删除订购书籍:使用者将要删除的书籍信息输入,系统根据操作删除修改文件处理,最后修改后的文件显示出来。
4)查询领书单:通过发行人员模块处理过后,将其信息转化成领书单显示出来。
5)查询缺书单:该功能要通过发行人员模块处理过后,将其信息转化缺书单显示出来。
6)输入进书单:需要采购人员将新到的书籍信息输入,通过系统将库存信息更新处理。
7)处理订购单:发行人员可读取用户信息,读取订购单,通过比较库存,处理信息后,返回领书单。
8)查询进书单:发行人员可对采购人员的进书单进行读取,将其信息显示出来。
9)输入初始库存:该功能可实现发行人员对学校原本拥有的书籍资料输入保存到库存中。
10)查询库存:将库存中的信息显示出来。
2.2外部接口
硬件接口:Pentium Ⅲ CPU及以上,内存在256MB以上的计算机。
软件件接口:支持本系统的软件包括:Windows95 、Windows98 、Windows2000、 Windows Me Windows XP 。
2.3内部接口
查询模块:由相应消息驱动,完成对信息进行查看功能。
删除模块:具有此权限的用户完成对信息删除功能。
打印模块:实现用户从系统打印功能。
退出模块:实现用户从系统退出功能
(三)数据库设计
1.逻辑结构设计
(1)订购单 属性名:{书号,书名,购书日期,订购者编号,订购者姓名,数量,总额}
书号
书名
购书日期
订购者编号
订购者姓名
数量
价格
总额
说明: 此为订购单实体对应的关系模式,其中书号、订购者编号是外码,其他一些冗余信息删除。
(2)领书单 属性名:{领书单号,订购者编号,领书日期,购书单号,购书日期,经办人}
领书单号
订购者编号
领书日期
购书单号
购书日期
经办人
说明:此为领书单实体对应的关系模式,其中订购者编号、订购单号是外码,其他一些冗余信息删除。
(3)出库单 属性名:{书号,书名,价格,数量,书籍信息}
书号
书名
价格
数量
书籍信息
说明: 此为入库单实体对应的关系模式,其中书号是外码,其他一些冗余信息删除。
(4)教材信息 属性名:{书号,书名,编者,出版社,单价}
书号
书名
作者
出版社
单价
说明:此为教材实体对应的关系模式。
(5)库存表 属性名:{书号,书名,数量,书籍信息}
书号
书名
数量
书籍信息
说明:此为库存表实体对应的关系模式
2.数据库表的详细清单
1)进书单
数据项名
别名
数据类型
长度
备注
进书编号
JSnumber
char
50
书号
ISBN
char
50
采购人姓名
CGname
char
50
采购日期
CGdate
char
50
采购数量
CGnumber
int
8
采购总额
CGprice
int
8
2)订购单
数据项名
别名
数据类型
长度
备注
书号
ISBN
char
50
书名
Name
char
50
价格
Price
int
8
数量
Number
int
8
订购日期
DGDate
char
50
订购者编号
DGZnumber
char
50
订购者姓名
DGname
char
50
购书总数
DGALLnumber
int
8
总额
DGALLprice
int
8
联系方式
TEL
char
50
电话、手机等
3)领书单 属性名:{领书单号,订购者编号,领书日期,购书单号,购书日期,经办人}
数据项名
别名
数据类型
长度
备注
领书单号
LSnumber
char
50
订购者编号
DGZnumber
char
50
领书日期
LSdate
char
50
购书单号
DGnumber
char
50
购书日期
DGdate
char
50
经办人
LSname
char
50
4)缺书单
数据项名
别名
数据类型
长度
备注
缺书单号
QSnumber
char
50
书号
ISBN
char
50
总数
QSALLnumber
int
8
5)入库单 属性名:{入库号,书号,数量,入库时间}
数据项名
别名
数据类型
长度
备注
入库号
RKnumber
char
50
书号
ISBN
char
50
数量
RKnumber
int
8
入库时间
RKdate
char
50
6)出库单 属性名:{出库号,书号,数量,出库时间}
数据项名
别名
数据类型
长度
备注
出库号
CKnumber
char
50
书号
ISBN
char
50
数量
CKnumber
int
8
出库时间
CKdate
char
50
7)教材信息 属性名:{书号,书名,编者,出版社,版次,单价}
数据项名
别名
数据类型
长度
备注
书号
ISBN
char
50
书名
bookname
char
50
编者
writer
char
50
出版社
publish
char
50
单价
price
int
8
8)学生信息 属性名 :{学生学号,学生姓名,学生性别,学生年级,电话}
数据项名
别名
数据类型
长度
备注
学生学号
Snumber
char
50
学生姓名
Sname
char
50
学生性别
Ssex
char
50
学生年级
Sclass
char
50
电话
TEL
char
50
9)教师信息 属性名 :{教师工号,教师姓名,教师性别,教师部门,电话}
数据项名
别名
数据类型
长度
备注
教师工号
Tnumber
char
50
教师姓名
Tname
char
50
教师性别
Tsex
char
50
男或女
教师部门
Tclass
char
50
机械|电气|生化|数学|人文|计算机|其他
电话
TEL
char
50
10)库存表 属性名:{记录号 ,书号,数量}
数据项名
别名
数据类型
长度
备注
记录号
ID
char
50
书号
ISBN
char
50
数量
number
int
8
第三章详细设计
(一)各个功能模块的模块流程图或伪码
1.验证模块的模块流程图
由概要设计中的DFD图和验证模块的功能可设计出如图3.1.1的流程图:
开始
从购书表中读取订书单
审核
从库存表中读取书籍信息
生成不合法订书单通知
结束
领书单
提示缺书
图3.1.1 验证模块的模块流程图
2.销售模块的模块流程图
由概要设计中分模块的DFD图经过分析销售过程可得到如图3.1.2所示的销售模块流程图:
开始
提交购书单
N
审核购书单 1
错误显示
Y
开发票
登记购书记录
N
错误显示
审核登记
Y
发领书通知单
修改相应表
N
审核修改
错误显示
Y
结束
图3.1.2 销售模块的模块流程图
第四章 编码
其相关代码如下所示:
当点击“删除”按钮时,将弹出对话框询问是否删除。核心代码:
Private Sub cmddel_Click()
Dim answer As String
On Error GoTo delerror
answer = MsgBox("确定要删除吗?", vbYesNo, "")
If answer = vbYes Then
Adodc1.Recordset.Delete
DataGrid1.Refresh
MsgBox "成功删除!", vbOKOnly + vbExclamation, ""
Else
Exit Sub
End If
delerror:
If Err.Number <> 0 Then
MsgBox Err.Description
End If
End Sub
当按下“订购查询”按钮,弹出订购查询界面,输入要查询的信息,点击查询按钮即可查询
订购查询核心代码:
Private Sub Command1_Click()
Dim rs_findreader As New ADODB.Recordset
Dim sql As String
If Check1.Value = vbChecked Then
sql = "教材编号='" & Trim(Text1.Text & " ") & "'"
End If
If Check2.Value = vbChecked Then
If Trim(sql) = "" Then
sql = "教材名称='" & Trim(Text2.Text & " ") & "'"
Else
sql = sql & "and教材名称='" & Trim(Text2.Text & " ") & "'"
End If
End If
If Check3.Value = vbChecked Then
If Trim(sql) = "" Then
sql = "作者='" & Trim(Combo1.Text & " ") & "'"
Else
sql = sql & "and 作者='" & Trim(Combo1.Text & " ") & "'"
End If
End If
If Trim(sql) = "" Then
MsgBox "请选择查询方式!", vbOKOnly + vbExclamation
Exit Sub
End If
Adodc1.RecordSource = "select * from 书籍信息 where " & sql
Adodc1.Refresh
DataGrid1.ReBind
DataGrid1.AllowAddNew = False
DataGrid1.AllowDelete = False
DataGrid1.AllowUpdate = False
End Sub
订单管理界面如下图:
其相关代码如下:
Private Sub Command1_Click()
Dim sql As String
Dim con As New ADODB.Connection '定义连接对象和记录集对象
Dim rs As New ADODB.Recordset
con.connectionstring = Adodc1.connectionstring
con.Open
rs.ActiveConnection = con
sql = "select * from 待购教材表"
rs.Open sql, con, adOpenKeyset, adLockPessimistic
If Text1.Text <> "" And Text2.Text <> "" And Text3.Text <> "" And Text4.Text <> "" Then rs.AddNew
rs.MoveLast
rs.Fields(0) = Text1.Text
rs.Fields(1) = Text2.Text
rs.Fields(2) = Text3.Text
rs.Fields(3) = Text4.Text
rs.Fields(4) = Text5.Text
rs.Fields(5) = Text6.Text
rs.Fields(6) = Text7.Text
rs.Fields(7) = Text8.Text
rs.Fields(8) = Text9.Text
rs.Fields(9) = Text10.Text
MsgBox "添加成功。", 64 + 0, "提示信息"
rs.Update
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
Text7.Text = ""
Text8.Text = ""
Text9.Text = ""
Text10.Text = ""
Text1.SetFocus
Else
MsgBox "请输入完整信息", 64 + 0, "提示信息"
Text1.SetFocus
End If
End Sub
第五章实验小结
通过对“学校教材订购系统-销售系统”的设计,我更清楚的了解一个软件项目开发的整体过程,有需求分析,概要设计,详细设计,编码实现,以及测试、维护等几个步骤。需求分析在系统开发中是最重要的部分,在此部分我们需要收集相关信息以及分析用户的需要,整理出具有实际可行性的软件需求报告,分析出整个系统的功能需求、性能需求等各方面的需求。需求分析的目的就是要使你开发的软件能尽可能满足顾客提出的要求。先对系统的总体结构进行设计,然后根据系统模块的划分,完成其顶级数据流图,并对其细化,完成一级、二级数据流图的分解,并完成数据库的设计。另外概要设计、系统设计也很关键,它给出了系统的主要框架。这次主要的是学到了软件开发的基本思想跟方法,收获颇多。
参考文献
【1】《实用软件工程》,郑人杰等著,清华大学出版社。
【2】《软件工程》第二版,李代平等著,清华大学出版社。
【3】《软件工程》第六版,Roger S.Pressman著,机械工业出版社。
【4】《软件工程课程实验指导书》,湖南文理学院计算机学院
18
展开阅读全文