在完成图书销售系统需求分析的基础上,项目开发团队依据《图书销售系统需求规格说明书》对图书销售系统如何实现进行了设计。为了文档化我们对系统的设计,编写了本文档。
本文档主要供项目开发团队在具体实现图书销售系统时参考使用。系统交给客户之后,系统维护人员在必要时也可查阅本文档。
包括以下内容:
l 系统名称:《图书销售系统》
l 本系统由软件工程专业项目开发小组完成从需求分析、设计到编码、测试、发布的全过程。
l 《软件工程实践者的研究方法》,(美)普雷斯曼,郑人杰译,机械工程出版社,2011-5
l 《敏捷技能修炼:敏捷软件开发与设计的最佳实践》,(美)艾伦·沙络(Alan Shalloway);斯科,机械工业出版社,2012-9
l 《分析模式:可复用的对象模型》,(美)福勒,出版社:人民邮电出版社,2010-11
l 《快速软件开发》,(美)麦克康奈尔著,席相林等译,冯炳根审校,清华大学出版社,2008-8
l 《软件工程课程设计》,吕云翔,刘浩,王昕鹏,周健等,机械工业出版社,2009-6
l 《软件设计模式与体系结构》,孙玉山,刘旭东等,高等教育出版社,2013-5
本系统将解决当前很多图书购买和销售过程的电子化、规范化需求。详细的需求规格说明可参见《图书销售系统需求规格说明书》。
服务器:
本系统软件旨在模拟和实现图书销售过程中的业务逻辑,是个人团队做学习和研究的设计开发,受到开发经费以及使用范围的限制无需配置服务器。
销售方客户机:
处理器型号:AMD/Intel 1.6GHz及以上
内存容量:512MB及以上
外存剩余空间:1GB及以上
网络配置:无特殊要求
购买方客户机:
处理器型号:AMD/Intel 1.6GHz及以上
内存容量:512MB及以上
外存剩余空间:1GB及以上
网络配置:无特殊要求
读卡器以及其他外设环境:
本图书销售系统无需配置多余的读卡器及其他外设环境,非接触式的IC卡读卡器以及可以读取RF类型的非接触式IC卡都无需配备,对读卡器的接口以及串口也无特殊要求。
服务器:
本系统软件旨在模拟和实现图书销售过程中的业务逻辑,是个人团队做学习和研究的设计开发,受到开发经费以及使用范围的限制无需配置服务器。
销售方客户机:
操作系统:Windows XP/7(推荐Windows 7)
数据库:Microsoft SQL Server 2008
运行支持软件环境:.NET Framework 3.0及以上(推荐.NET Framework 4.5)
购买方客户机:
操作系统:Windows XP/7(推荐Windows 7)
数据库:Microsoft SQL Server 2008
运行支持软件环境:.NET Framework 3.0及以上(推荐.NET Framework 4.5)
硬件环境:
本系统采用PC机开发,配置如下:
处理机型号:AMD/Intel 1.6GHz及以上
内存容量:1GB及以上
外存剩余空间:1GB及以上
网络配置:无特殊要求
软件环境:
操作系统:Windows 7
IDE:Microsoft Visual Studio 2012
数据库:Microsoft SQL Server 2008
测试工具:Microsoft Visual Studio 2012集成测试工具
代码辅助编辑:Notepad ++ v6.5 (UNICODE)
图书购买以及销售的具体工作设计很多方面,在实际的应用中销售方以及购买方对于系统功能的需求有时会千差万别,由此确定的软件系统的规模大小也不尽相同。但总体上来说,图书销售的业务逻辑还是比较清晰的,一般的销售流程基本可以确定下来。
为了使图书销售系统具有一定程度的通用性,我们主要实现“用户及管理员的登入登出”、“基础信息管理”、“库存管理”、“价格管理”、“销售管理”以及“查询管理”等功能。我们尽量将销售方和购买方的权限加以区分,保证系统逻辑的严谨。在界面的美观设计方面,着重强调控件风格的一致,以及显示内容的清晰度。
本图书销售系统的功能结构如表1所示。
表1 结构
模块名称 |
功能描述 |
输入 |
输出 |
登入登出
|
让管理员以及用户登陆系统,根据角色的权限进行相应操作 |
用户名和密码 |
登陆是否成功的信息 |
基础信息管理 |
实现管理员,图书信息,图书种类,供应商信息,仓库信息以及销售柜台信息的增删改查 |
操作对象的信息
|
格式化、数字化的操作对象信息 |
库存管理 |
实现图书入库,入库退货,库存调拨的操作 |
相应的图书信息,仓库名称,调拨数量等 |
仓库图书记录的变动,销售柜台图书记录的变动 |
价格管理 |
对库存图书进行价格的定制以及调节 |
相应的图书信息,图书价格 |
图书价格的变动 |
销售管理 |
实现图书销售以及销售退货的操作 |
相应的图书信息,购买数量或者退货数量 |
图书销售记录变更 |
查询管理 |
实现对图书入库数据,入库退货数据,销售数据,销售退货数据的查询 |
相应的功能标识 |
列表式显示图书入库数据或者入库退货数据或者销售数据等 |
本图书销售系统的功能需求与程序的关系如表2所示。
表2 功能需求与程序的关系
需求 |
功能模块 |
功能描述
|
图书信息登记 |
基础信息管理 |
图书信息主要包含图书名称,图书编号,作者,出版社,登记时的价格(即入库价格),图书种类,只有登记的图书才能进行入库操作 |
图书种类添加与删除 |
基础信息管理 |
新建或者删除已有的图书种类 |
销售柜台添加与删除 |
基础信息管理 |
新建或者删除已有的销售柜台 |
仓库对象添加与删除 |
基础信息管理 |
新建或者删除已有的仓库对象 |
供应商信息的添加与删除 |
基础信息管理 |
供应商信息主要包含供应商名称,法人,负责人,电话,地址,联系网址,联系邮箱 |
管理员信息修改 |
基础信息管理 |
删除管理员,修改管理员信息(账号密码,权限等级),添加管理员 |
会员信息修改 |
基础信息管理 |
删除会员,修改会员信息(账号密码,会员等级,折扣等级),添加会员 |
图书入库 |
库存管理 |
从登记的图书列表中选择,购买后放入特定名称的仓库中 |
入库退货 |
库存管理 |
对入库的图书进行退货,从特定仓库库存中减少相应的退货数量 |
库存调拨 |
库存管理 |
实现各个仓库中图书库存的相互转移,以及仓库与销售柜台中图书库存的转移 |
图书定价 |
图书价格管理 |
对刚入库的图书进行定价 |
图书调价 |
图书价格管理 |
对已经定价的图书进行价格调整 |
图书销售 |
图书销售管理 |
用户登陆后在各个销售柜台中选择图书进行购买 |
销售退货 |
图书价格管理 |
用户登陆后可以对自身购买的图书进行退货操作 |
入库信息查询 |
信息查询管理 |
统计已经入库的图书记录,列表显示 |
入库退货查询 |
信息查询管理 |
统计入库退货的相关记录,列表显示 |
销售信息查询 |
信息查询管理 |
统计图书销售记录,列表显示 |
销售退货查询 |
信息查询管理 |
统计销售退货记录,列表显示 |
1)管理员对图书信息进行登记,登记时需要对图书种类进行填写,登记前需要添加图书种类信息,未经登记的图书不能入库。
2)管理员需要以人工输入的方式进行基础信息的管理以及库存管理,用户不能对以上功能项目进行管理。
3)管理员人工操作添加销售柜台的图书信息,用户登陆后可以从相应的柜台中获取销售的图书列表,进行购买操作。
4)需要时,用户可以对自身购买的图书进行退货操作。
5)图书销售系统的持续使用,需要人工对库存进行维护和管理(例如库存图书以及销售柜台图书的补充),销售柜台没有图书销售信息,用户便无法从其中执行购买操作。
l 网站部分:本图书销售系统不包含与网络的交互联通功能。
l 客户端部分:简洁大方的图形用户界面,包含登陆窗口,以及登陆成功后显示的用户主界面窗口。主界面由各个系统功能子模块构成,要求清晰、美观。登陆界面包含不同角色的切换登陆功能,适用于管理员以及用户等不同身份权限的角色进行登陆,要求简洁、有序。
l 数据存储:本系统设计数据的存储和处理,通过ADO.NET与Microsoft SQL Server 2008交互。
l 本系统以数据为中心,各模块均通过ADO.NET与数据库服务器交互。
l 功能界面的切换通过特定的事件响应和监听机制进行处理。
l 桌面系统和数据库紧密的联系在一起。
l 客户端:这种情况下充分利用了系统提供的功能,能够实现对图书销售流程的较为全面的管理,适合大多数用户。
l 客户端:销售方管理员在图书销售开始之前在系统中登记好图书信息,根据实际情况添加管理员信息,用户信息,图书信息,对仓库以及销售柜台的图书进行调拨管理,确保销售柜台的图书销售列表不为空。购买方用户登陆系统后,便可以选择相应的销售柜台,从中获取图书列表进行购买操作或者对用户自己已经购买有的图书进行合理性的退货操作。销售方管理员可以获取入库以及入库退货的记录,销售以及销售退货的记录。
客户端从销售方管理员或者购买方用户登录时开始使用,主要负责管理员和用户在操作时进行相应的数据库数据处理。客户端需要相关人员的控制进行启动和关闭操作。
l 客户端:运行时占用各种资源的时间较多。运行客户端是占用一定的数据连接资源。但由于软件系统规模比较精悍,运行时占用的资源很小,对CPU、网络等资源的占用率变化不大,而且一般处于低占用水平。
模块编号:001
模块名称:登入登出
模块编写者:
模块功能概述:
提供销售方管理员以及购买方用户人员的身份验证功能。包括管理员与用户在软件系统桌面程序的登入和登出系统。
界面描述:
(1)管理员登陆窗口
本界面有一个登陆框,登录人员输入正确的管理员账号、密码,则提示登陆成功,跳转到管理员操作主界面,进行基础信息管理,库存管理,图书价格管理等操作。如果输入错误,则提示相应的错误信息。本界面还有一个切换按钮,用于将窗口切换为用户登录窗口。
(2)用户登录窗口
本界面与管理员登录窗口共享同一个界面,通过界面上的切换按钮实现两种登录模式的切换。登录人员在登陆框中输入正确的用户账号、密码,则提示登录成功,跳转到用户操作主界面,进行图书购买以及销售退货等操作。
模块编号:002
模块名称:基础信息管理
模块编写者:XXX
模块功能概述:
为系统管理员提供对图书销售系统中所涉及的各个实体(图书种类,柜台,仓库,管理员,用户,图书,供应商)的具体信息进行添加,修改或者删除的功能。
界面描述:
(1)管理员主界面
系统管理员登陆成功后首先进入管理员主界面,其主要包含上下两个区域:上方包含管理员所有可以操作的功能模块:基础信息管理模块、库存管理模块、图书价格管理模块以及信息查询管理模块;下方则是公共的工作区。系统默认工作区中显示的模块为基础信息管理模块,管理员可以通过点击上方的各个模块进行功能切换,系统会在工作区中显示出相应的操作选项。
选择基础信息管理模块即可在主界面工作区域中显示该管理界面。
(2)基础信息管理界面
本界面包含图书种类管理、柜台信息管理、图书信息管理、仓库信息管理、供应商信息管理、管理员信息管理、用户信息管理等功能按钮。点击不同的按钮,系统会在工作区中刷新出相应的操作界面。
(3)图书种类管理界面
参数:bookkind = ?
页面设计:
本界面包含一个主要的列表容器以及容器上方的“添加”按钮,所有的图书种类会以长条状控件的形式添加入列表容器中显示出来,控件上将会显示出图书种类的信息。管理员可以通过点击控件右上角的关闭按钮删除该图书种类,点击控件上的修改按钮,可以在弹出的窗体中输入需要修改的项目信息。如果需要添加图书种类可以点击列表容器上方的“添加”按钮,在弹出的窗体中输入图书种类名称即可添加,并在列表容器中显示。
(4)柜台信息管理界面
参数:counter = ?
页面设计:
本界面包含一个主要的列表容器以及容器上方的“添加”按钮,所有的柜台对象会以长条状控件的形式添加入列表容器中显示出来,控件上将会显示出销售柜台的信息。管理员可以通过点击控件右上角的关闭按钮删除该柜台,点击控件上的修改按钮,可以在弹出的窗体中输入需要修改的项目信息。如果需要添加柜台对象可以点击列表容器上方的“添加”按钮,在弹出的窗体中输入柜台名称即可添加,并在列表容器中显示。
(5)图书信息管理界面
参数:bookcode = ?
页面设计:
本界面包含一个主要的列表容器以及容器上方的“添加”按钮,所有的图书对象会以长条状控件的形式添加入列表容器中显示出来,控件上将会显示出图书的信息。管理员可以通过点击控件右上角的关闭按钮删除该图书对象。点击控件上的修改按钮,可以在弹出的窗体中输入需要修改的项目信息。如果需要添加图书对象可以点击列表容器上方的“添加”按钮,在弹出的窗体中输入图书对象的信息(图书名称,图书编号,作者,出版社,登记价格等)即可添加,并在列表容器中显示。
(6)仓库信息管理界面
参数:storagename = ?
页面设计:
本界面包含一个主要的列表容器以及容器上方的“添加”按钮,所有的仓库对象会以长条状控件的形式添加入列表容器中显示出来,控件上将会显示出仓库对象的信息。管理员可以通过点击控件右上角的关闭按钮删除该仓库,点击控件上的修改按钮,可以在弹出的窗体中输入需要修改的项目信息。如果需要添加仓库对象可以点击列表容器上方的“添加”按钮,在弹出的窗体中输入仓库名称即可添加,并在列表容器中显示。
(7)供应商信息管理界面
参数:provider = ?
页面设计:
本界面包含一个主要的列表容器以及容器上方的“添加”按钮,所有的供应商对象会以长条状控件的形式添加入列表容器中显示出来,控件上将会显示出供应商的信息。管理员可以通过点击控件右上角的关闭按钮删除该供应商对象,点击控件上的修改按钮,可以在弹出的窗体中输入需要修改的项目信息。如果需要添加供应商对象可以点击列表容器上方的“添加”按钮,在弹出的窗体中输入供应商的信息即可添加,并在列表容器中显示。
(8)管理员信息管理界面
参数:name = ?
页面设计:
本界面包含一个主要的列表容器以及容器上方的“添加”按钮,所有的管理员对象会以长条状控件的形式添加入列表容器中显示出来,控件上将会显示出管理员的信息。管理员可以通过点击控件右上角的关闭按钮删除该管理员对象,点击控件上的修改按钮,可以在弹出的窗体中输入需要修改的项目信息。如果需要添加管理员对象可以点击列表容器上方的“添加”按钮,在弹出的窗体中输入管理员信息即可添加,并在列表容器中显示。
(9)用户信息管理界面
参数:username = ?
页面设计:
本界面包含一个主要的列表容器以及容器上方的“添加”按钮,所有的用户对象会以长条状控件的形式添加入列表容器中显示出来,控件上将会显示出用户的信息。管理员可以通过点击控件右上角的关闭按钮删除该用户对象,点击控件上的修改按钮,可以在弹出的窗体中输入需要修改的项目信息。如果需要添加用户对象可以点击列表容器上方的“添加”按钮,在弹出的窗体中输入用户信息即可添加,并在列表容器中显示。
模块编号:003
模块名称:库存管理
模块编写者:
模块功能概述:
对销售方管理员提供处理图书库存数据的功能,包括对图书入库的相关信息的登记以及实现从仓库到仓库或者仓库到销售柜台的库存调拨功能。管理员还可以根据实际的需求,将入库的图书进行退货处理,系统将自动对库存数据进行相应的更新。
界面描述:
(1)管理员主界面
系统管理员登陆成功后首先进入管理员主界面,其主要包含上下两个区域:上方包含管理员所有可以操作的功能模块:基础信息管理模块、库存管理模块、图书价格管理模块以及信息查询管理模块;下方则是公共的工作区。系统默认工作区中显示的模块为基础信息管理模块,管理员可以通过点击上方的各个模块进行功能切换,系统会在工作区中显示出相应的操作选项。
选择库存管理模块即可在主界面工作区域中显示该管理界面。
(2)库存管理界面
本界面主要包含图书入库管理、入库退货管理以及库存调拨管理的功能按钮。系统会根据管理员的选项操作,自动在工作区中刷新出相应的操作界面。
(3)图书入库管理界面
参数:type = add
页面设计:
本界面主要包含一个列表容器,所有登记过的图书对象会以长条状控件的形式在列表容器中显示出来,并在控件上显示出图书对象的信息。管理员可以通过点击控件上的“入库”按钮,在弹出的窗体中输入需要入库的图书数量等相关信息,即可实现图书的入库操作。
(4)图书退货管理界面
参数:type = del
页面设计:
本界面主要包含一个列表容器,所有入库的图书对象会以长条状控件的形式在列表容器中显示出来,并在控件上显示出入库图书对象的相关信息,包括图书名称,库存数量等等。管理员可以通过点击控件上的“入库退货”按钮,在弹出的窗体中输入需要退货的图书数量等相关信息,即可实现图书的入库退货操作。
(5)库存调拨管理
参数:type = move
页面设计:
本界面主要包含一个列表容器,所有仓库或者销售柜台中的图书对象会以长条状控件的形式在列表容器中显示出来,并在控件上显示出图书对象的信息(包括图书名称,图书属于哪个仓库或者柜台,数量等)。管理员可以通过点击控件上的“库存调拨”按钮,在弹出的窗体中输入需要调拨相关信息(目标仓库或者目标柜台信息,调拨数量信息等),即可实现图书的库存调拨操作。
注意:只有定价过的图书才可以调拨到销售柜台出售。
模块编号:004
模块名称:图书价格管理
模块编写者:
模块功能概述:
为管理员提供图书定价以及图书调价的功能。刚入库的图书要进行销售必须先进行图书定价,已经定价的图书才可以进行图书调价的操作。
界面描述:
(1)管理员主界面
系统管理员登陆成功后首先进入管理员主界面,其主要包含上下两个区域:上方包含管理员所有可以操作的功能模块:基础信息管理模块、库存管理模块、图书价格管理模块以及信息查询管理模块;下方则是公共的工作区。系统默认工作区中显示的模块为基础信息管理模块,管理员可以通过点击上方的各个模块进行功能切换,系统会在工作区中显示出相应的操作选项。
选择图书价格管理模块即可在主界面工作区域中显示该管理界面。
(2)图书定价界面
参数:Flag = ?
页面设计:
本界面主要包含一个列表容器,所有已经入库且Flag标记值为0(即标识未定价的图书)的图书对象会以长条状控件的形式在列表容器中显示出来,并在控件上显示出入库图书对象的相关信息,包括图书名称,作者等信息。管理员可以通过点击控件上的“图书定价”按钮,在弹出的窗体中输入图书价格等相关信息,即可实现图书的定价操作。
(3)图书调价界面
参数:Flag = ?
本界面主要包含一个列表容器,所有已经入库且Flag标记值为1(即表示已经定价的图书)的图书对象会以长条状控件的形式在列表容器中显示出来,并在控件上显示出入库图书对象的相关信息,包括图书名称,作者等信息。管理员可以通过点击控件上的“图书调价”按钮,在弹出的窗体中输入图书价格等相关信息,即可实现图书的调价操作。
模块编号:005
模块名称:图书销售管理
模块编写者:
模块功能概述:
为购买方用户提供图书销售以及销售退货的功能。用户在登陆系统之后可以根据需要选择相应的操作进行。
界面描述:
(1)用户操作主界面
购买方用户登陆成功后首先进入用户操作主界面,其主要包含上下两个区域:上方包含用户所有可以操作的功能模块:图书销售模块。
下方则是公共的工作区。由于用户只有一种模块功能的操作,所以系统默认工作区中显示的模块即为图书销售管理模块。
(2)图书销售管理界面
本界面主要包含:图书销售以及销售退货的功能按钮。系统会根据用户的操作,在工作区中刷新出对应的操作界面。
(3)图书销售界面
参数:username&bookcode = ?
页面设计:
本界面主要包含一个列表容器,所有销售柜台中的图书对象会以长条状控件的形式在列表容器中显示出来,并在控件上显示出图书对象的信息(包括图书名称,图书属于哪个柜台,数量,单价等)。用户可以通过点击控件上的“图书购买”按钮,在弹出的窗体中输入图书销售的相关信息(如购买数量等),即可实现图书的购买操作。
(4)销售退货界面
参数:username&bookcode = ?
页面设计:
本界面主要包含一个列表容器,所有用户已经购买的图书对象会以长条状控件的形式在列表容器中显示出来,并在控件上显示出图书对象的信息(包括图书名称,从哪个柜台购买的,数量等)。用户可以通过点击控件上的“销售退货”按钮,在弹出的窗体中输入销售退货的相关信息(如退货数量等),即可实现图书的销售退货操作。
模块编号:006
模块名称:信息查询管理
模块编写者:
模块功能概述:
为销售方管理员提供入库信息查询、入库退货查询、销售信息查询以及销售退货查询的功能。管理员可以根据自身的需要对各项功能信息进行查询。
界面描述:
(1)管理员主界面
系统管理员登陆成功后首先进入管理员主界面,其主要包含上下两个区域:上方包含管理员所有可以操作的功能模块:基础信息管理模块、库存管理模块、图书价格管理模块以及信息查询管理模块;下方则是公共的工作区。系统默认工作区中显示的模块为基础信息管理模块,管理员可以通过点击上方的各个模块进行功能切换,系统会在工作区中显示出相应的操作选项。
选择信息查询管理模块即可在主界面工作区域中显示该管理界面。
(2)入库信息查询界面
本界面主要包含一个列表容器,所有的图书入库记录会以长条状控件的形式在列表容器中显示出来,并在控件上显示相关的信息(包括入库单号,供应商,操作员以及时间等)。
(3)入库退货查询界面
本界面主要包含一个列表容器,所有的入库退货记录会以长条状控件的形式在列表容器中显示出来,并在控件上显示相关的信息(包括退货单号,供应商,操作员以及时间等)。
(4)销售信息查询界面
本界面主要包含一个列表容器,所有的图书销售记录会以长条状控件的形式在列表容器中显示出来,并在控件上显示相关的信息(包括销售单号,购买者,图书名称,数量以及柜台信息等)。
(5)销售退货查询界面
本界面主要包含一个列表容器,所有的销售退货记录会以长条状控件的形式在列表容器中显示出来,并在控件上显示相关的信息(包括零售退货单号,图书名称,退货数量以及时间等)。
经过对系统中涉及的实体和关系进行分析,用Visio画出实体的对象 - 关系图,如图1所示。
图 1 实体的对象 - 关系图
根据图1得到的对象 - 关系图,结合本系统的实际,设计基本表如下:
图书登记信息表(tb_bookinfo):
字段名称 |
字段类型 |
是否为空 |
备注 |
bookname |
Varchar(30) |
Not null |
图书名称 |
bookcode |
Varchar(30) |
Not null |
图书编号(主键PK) |
author |
Varchar(30) |
Not null |
作者 |
bookconcern |
Varchar(30) |
Not null |
出版社 |
price |
Money |
Not null |
图书登记价格 |
kind |
Varchar(30) |
Not null |
图书种类(外键FK) |
图书种类表(tb_bookkinds):
字段名称 |
字段类型 |
是否为空 |
备注 |
bookkind |
Varchar(30) |
Not null |
图书种类(主键PK) |
图书仓库表(tb_bookstorage):
字段名称 |
字段类型 |
是否为空 |
备注 |
bookcode |
Varchar(30) |
Not null |
仓库存放的图书编号(PK,FK) |
storagename |
Varchar(30) |
Not null |
仓库名称(PK,FK) |
booknum |
float |
Not null |
仓库存放该图书的数目 |
Flag |
Int |
Not null |
图书定价标记(已经定价为1,未定价为0) |
sellprice |
Money |
Default 0 |
销售价格 |
仓库退货主表(tb_cancelinstock):
字段名称 |
字段类型 |
是否为空 |
备注 |
CancelID |
Varchar(30) |
Not null |
退货单号(PK) |
provider |
Varchar(50) |
Not null |
供应商名称 |
operator |
Varchar(30) |
Not null |
操作员 |
intime |
Datetime |
Not null |
时间 |
unitPrice |
Money |
Not null |
图书入库单价 |
numbers |
float |
Not null |
退货数 |
bookname |
Varchar(30) |
Not null |
图书名称 |
零售退货主表(tb_cancelsell):
字段名称 |
字段类型 |
是否为空 |
备注 |
SellCancelID |
Varchar(30) |
Not null |
零售退货单号(PK) |
username |
Varchar(30) |
Not null |
顾客(用户)名称 |
intime |
Datetime |
Not null |
退货时间 |
counter |
Varchar(30) |
Not null |
销售柜台 |
sellPrice |
Money |
Not null |
购买时的价格 |
numbers |
Int |
Not null |
退货数 |
bookname |
Varchar(30) |
Not null |
图书名称 |
用户信息表(tb_user):
字段名称 |
字段类型 |
是否为空 |
备注 |
username |
Varchar(30) |
Not null |
用户名(PK) |
password |
Varchar(50) |
Not null |
用户密码 |
level |
int |
Not null |
用户等级 |
rebate |
Float |
Not null |
对应等级享受的折扣 |
用户购买表(tb_userbook):
字段名称 |
字段类型 |
是否为空 |
备注 |
username |
Varchar(30) |
Not null |
用户名 |
bookname |
Varchar(30) |
Not null |
图书名称(PK) |
Number |
Varchar(30) |
Null |
购买数量 |
counter |
Varchar(30) |
Not null |
柜台名称 |
sellprice |
Money |
Nul null |
销售价格 |
intime |
Datetime |
Not null |
购买时间(PK) |
柜台图书表(tb_counterbook):
字段名称 |
字段类型 |
是否为空 |
备注 |
counter |
Varchar(30) |
Not null |
柜台名称(PK,FK) |
booknum |
int |
Not null |
柜台该种图书的数目 |
bookname |
Varchar(30) |
Not null |
图书名称 |
sellprice |
Money |
Not null |
销售价格 |
柜台信息表(tb_counterinfo):
字段名称 |
字段类型 |
是否为空 |
备注 |
counter |
Varchar(30) |
Not null |
柜台名称(PK) |
图书入库表(tb_instock):
字段名称 |
字段类型 |
是否为空 |
备注 |
instockID |
Varchar(30) |
Not null |
入库单号(FK) |
bookname |
Varchar(30) |
Not null |
图书名称 |
unitPrice |
Money |
Not null |
入库单价 |
numbers |
float |
Not null |
入库数目 |
storagename |
Varchar(30) |
Not null |
图书要入到哪个仓库 |
intime |
Datetime |
Not null |
时间 |
provider |
Varchar(50) |
Not null |
供应商 |
操作管理员信息表(tb_operator):
字段名称 |
字段类型 |
是否为空 |
备注 |
name |
Varchar(30) |
Not null |
管理员名(PK) |
password |
Varchar(50) |
Not null |
密码 |
level |
smalliant |
Not null |
权限等级 |
供应商信息表(tb_providerinfo):
字段名称 |
字段类型 |
是否为空 |
备注 |
provider |
Varchar(50) |
Not null |
供应商名(PK) |
Principal |
Varcahr(10) |
null |
负责人 |
phone |
Varchar(30) |
Null |
电话 |
addr |
Varchar(50) |
Null |
地址 |
web |
Varchar(50) |
Null |
联系网址 |
e_mail |
Varchar(30) |
Null |
联系邮箱 |
图书销售表(tb_sell):
字段名称 |
字段类型 |
是否为空 |
备注 |
SellID |
Varchar(30) |
Not null |
销售单号(PK) |
username |
Varchar(30) |
Not null |
购买用户名称 |
rebate |
Float |
Not null |
折扣 |
sumtotal |
Money |
Not null |
购买总金额(购买数*购买单价*折扣) |
intime |
Datetime |
Not null |
购买时间 |
counter |
Varchar(30) |
Null |
在哪个柜台买的(FK) |
numbers |
flaoat |
Not null |
购买数 |
bookcode |
Varchar(30) |
Not null |
图书编号(FK) |
仓库信息表(tb_storageinfo):
字段名称 |
字段类型 |
是否为空 |
备注 |
storagename |
Varchar(30) |
Not null |
仓库名称(PK) |
测试计划作为本系统的测试指导,主要用于帮助项目开发团队的测试成员按计划和规定进行测试。图书销售系统的测试将从单元测试、集成测试以及系统测试三方面来完成。
图书销售系统个函数测试设计如表3所示。
表3 单元测试设计表
序号 |
测试函数名 |
函数功能 |
是否成功 |
是否更正 |
1 |
AddStorage |
为系统添加一个仓库对象,更新数据库信息 |
|
|
2 |
Login |
根据用户输入的登录信息进行身份验证 |
|
|
3 |
DelBookKind |
删除指定的图书种类 |
|
|
4 |
InsertBook |
将图书实例的内容添加到数据库的tb_bookinfo表 |
|
|
5 |
UpdateBook |
将图书实例中的内容更新到数据库中的tb_bookinfo中bookcode与实例的bookcode相同的行 |
|
|
6 |
Sell |
通过将相应的图书编号的销售记录更新到数据库中对应的表中,记录销售信息 |
|
|
图书销售系统的集成测试分为界面切换正确性测试和界面之间传递参数正确性的测试。
图书销售系统各个界面切换的测试设计如表4所示。
表4 界面切换测试设计表
编号 |
切换链接名称 |
所在界面 |
测试结果 |
测试人 |
测试时间 |
1 |
登入登出 |
客户端登陆界面 |
|
|
|
2 |
基础信息管理 |
管理员主界面 |
|
|
|
3 |
库存管理 |
管理员主界面 |
|
|
|
4 |
图书价格管理 |
管理员主界面 |
|
|
|
5 |
信息查询管理 |
管理员主界面 |
|
|
|
6 |
图书销售管理 |
用户操作主界面 |
|
|
|
图书销售系统界面之间参数传递的测试设计如表5所示。
表5 界面之间参数传递测试设计表
编号 |
参数传递链接 |
所在界面 |
预期结果 |
发现问题 |
测试人 |
测试时间 |
1 |
登入登出 |
客户端登陆界面 |
登陆框中账号密码均为空白 |
|
|
|
2 |
基础信息管理 |
管理员主界面 |
工作区中默认的操作界面为基础信息管理界面 |
|
|
|
3 |
库存管理 |
管理员主界面 |
工作区中默认的操作界面为库存管理管理界面 |
|
|
|
4 |
图书价格管理 |
管理员主界面 |
工作区中默认的操作界面为图书价格管理界面 |
|
|
|
5 |
信息查询管理 |
管理员主界面 |
工作区中默认的操作界面为信息查询管理界面 |
|
|
|
6 |
图书销售管理 |
用户操作主界面 |
工作区中默认的操作界面为图书销售管理界面 |
|
|
|
限于篇幅,系统测试的设计此处略去不讲,将会在软件测试阶段的文档编写中进行相应的说明。
对用户输入的各项内容均进行有效性、安全性检查,减少错误发生的几率。
对程序运行中的异常均进行捕获,按同一方式将出错提示信息提供给用户。
当用户访问自身权限以外的信息时,将其导航到同一的出错提示页面给。
以统一的机制进行系统权限的控制。
对程序中用到的数据尽量进行加密,以减少黑客攻击的危害。
定期对数据库中的数据进行备份。
编码实现时应采用模块化和分层思想,提高模块内部的内聚性,减少模块间的耦合性,是系统逻辑结构清晰,从而增强可读性和可维护性。
面向数据与面向对象相结合,模块划分符合面向对象思想。
在编码过程中注意标识符命名的意义,添加适量的注释说明。
从项目确定开始就重视文档的写作,每一项工作都有文档记录,保证文档和程序的一致性。