2软件工程资料.docx
- 文档编号:20173129
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:29
- 大小:496.99KB
2软件工程资料.docx
《2软件工程资料.docx》由会员分享,可在线阅读,更多相关《2软件工程资料.docx(29页珍藏版)》请在冰豆网上搜索。
2软件工程资料
图书销售管理系统
1.开发环境与开发工具
本系统开发环境为局域网或者校园网网络环境,网络中有一台安Windows2003Server的服务器,服务器上安装SQLServer2000,本系统使用VisualC++6.0基于C/S结构开发,网络上任一安装Windows98及以上版本的计算机可作为客机,系统设计与运行均可在客户机上运行。
2.系统需求分析
本系统的设计模式模拟是书店(特别是大型图书批发公司)的图书销售情况,经过充分地系统调研,发现本系统应包括图书信息,客户(包括顾客信息,供应商信息),营销信息(包括进货信息,销售信息),销售统计信息,退货信息。
除此之外应该还包括操作员信息(分为普通用户,系统管理员).
本系统的具体要求为:
1.能全面管理图书销售系统的各类主体的信息,如图书信息,顾客信息,供应商信息,进货信息,退货信息,销售信息等。
2.通过使用计算机能方便地维护(包括添加,删除,修改,查询)各信息等。
3.能组合查询基于某个信息表的所需信息。
4.能方便的实现基于多个表的连接查询。
5.能方便地实现单个或者多个表的统计功能。
6.需要时能即时进行输出与打印。
7.系统应具有网络多用户功能,具有用户管理功能,对普通用户和管理员提供相应系统功能。
对管理员提供增加用户功能。
8.系统具有操作方便,简捷等特点。
数据字典是系统中各类数据描述的集合,是各类数据结构和属性的清单。
它贯穿于数据库需求分析直到数据库运行的全过程,在不同的阶段其内容形式和用途各有区别,在需求分析阶段,它通常包含以五个部分内容:
数据项,数据结构,数据流,数据存储,处理过程。
归结起来分为实体信息和实体之间的联系。
2.1实体信息
①BOOKINFORMATION:
图书信息
ISBN:
国际标准书号
NAME:
图书名称
CLASS:
图书分类
AUTHOR:
图书作者
PRESS:
图书出版社
PRESSDATE:
出版日期
PRICE:
价格
PAGES:
图书页数
MEMO:
备注信息
②CUSTOMERINFORMATION:
顾客信息
NO:
顾客代号
NAME:
顾客姓名
SEX:
顾客性别
AGE:
顾客年龄
ID:
顾客身份证号码
TEL:
顾客电话号码
REGDATE:
顾客注册日期
COMPANY:
顾客公司
DEMO:
顾客备注信息
③PROVIDERINFORMATION:
供应商信息
NO:
供应商代号
NAME:
供应商姓名
SEX:
供应商性别
AGE:
供应商年龄
PID:
供应商身份证号码
TEL:
供应商电话号码
REGDATE:
供应商注册日期
COMPANY:
供应商公司
DEMO:
供应商备注信息
④OPERATORINFORMATION:
操作员信息
NAME:
用户名
PSSWORD:
密码
⑤ORDERINFO:
销售信息
ORDERTIME:
销售时间
BOOKNAME:
图书名称
CUSTOMERNAME:
顾客信息
PRICE:
图书价格
NO:
销售代号
NUMBER:
数量
ACCOUNT:
结帐总额
DEMO:
备注信息
⑥STOCKINFORMATION:
:
进货信息
STOCKTIME:
销售时间
BOOKNAME:
图书名称
PROVIDERNAME:
供应商名称
NUMBER:
图书数量
PRICE:
图书价格
NO:
进货代号
ACCOUNT:
结帐总额
DEMO:
备注信息
⑦REFUNDINFORMATION:
退货信息
REFUNDTIME:
退货时间
BOOKNAME:
图书名称
CUSTOMERNAME:
顾客姓名
NUM:
图书数量
PRICE:
图书价格
NO:
退货代号
ACCOUNT:
结帐总额
DEMO:
备注信息
⑧LIBINFORMATION:
库存信息
NAME:
图书名称
NUM:
图书数量
2.2实体联系信息
①进货:
一次进货的图书信息只对应一个员工。
一个员工可以进很多书。
一次进货可以进很多的图书,而一本图书信息只能对应某一此进货。
进货时肯定会导致库存表的修改。
同时对营业信息的支出也会作出更改。
②退货:
一次退货只能对应一个客户的信息。
一次退货可以时多本书也可以是一本书。
当然处理退货的只能对应一个员工。
一次退货肯定会导致库存信息的修改。
退货的书都有相应的图书信息。
某天的退货会使得该天的营业信息的支出增加。
③销售:
一次销售一次只能对应一个员工和一个客户,可以销售一本也可销售多本。
如果有多个柜台可以同时允许多个销售。
每次销售都有图书信息,从而也会导致库存量的减少。
相应的也会增加营业信息中的收入。
④统计:
由相应的营业信息可以统计近段时间内的销售情况。
⑤登陆:
对应不同用户登陆到该系统,每个用户都要相应的用户名和密码。
同时不同的用户由不同的权限。
3.功能要求分析
①每个用户进入该系统都要通过正确的帐号跟密码登陆。
其中用户包括操作员,系统管理员。
其中用户都可以更改自己的密码,而且系统管理员可以添加用户。
②操作员通过自己的帐号和密码登陆到系统,即是操作员在上班的时候。
操作员可以进行销售图书。
可以查看供应商和顾客的信息,还有进行进货和退货处理以及查看销售统计信息。
当然操作员可以对所以信息进行修改,删除,增加,除了销售统计信息。
同时操作员可以在自己登陆期间更改密码。
③系统管理员登陆到系统。
除了具有操作员所以功能外,还可以进行添加用户名和密码。
④同时,上述每个操作到数据的,都可以实现用户所需信息的打印。
4.系统设计
4.1数据库概念结构设计
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。
合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。
同时,合理的数据库结构也将有利于应用系统程序的实现。
在充分需求分析的基础上,经过逐步抽象,概括,分析,充分研讨,可以画出如下反映图书销售管理系统数据的整体E-R图.
4.2系统功能模块设计
对系统各项功能进行集中,分块,按照结构化程序设计的要求,可得出系统的功能模块图如下:
4.3数据库逻辑结构设计
4.3.1数据库关系模式
按照实体-联系图转化为关系模式的规则,本系统的E-R图可转化为如下有8关系模式
图书(ISBN,名称,分类,作者,出版社,出版日期,页数,价格,备注)
顾客(帐号,姓名,性别,年龄,身份证号码,公司,注册日期,电话号码,备注)
供应商(帐号,姓名,性别,年龄,身份证号码,公司,注册日期,电话号码,备注)
操作员(帐号,密码)
销售(销售代号,图书名称,顾客名称,销售数量,价格,时间,结帐总额,备注信息)
进货(退货代号,图书名称,供应商公司,销售数量,价格,时间,结帐总额,备注信息)
退货(退货代号,图书名称,顾客姓名,销售数量,价格,时间,结帐总额,备注信息)
库存(图书名称,图书数量)
4.3.2数据库及表结构的创建
设本系统使用的数据库名为tsxs,根据已设计的关系模式及各模式的完整性要求,现在就可以在SQLServer2000数据库系统中实现这些逻辑结构。
下面是创建数据库及其表结构的Transact-SQL(SQLServer中的SQL命令).
Createdatabasetsxs;
Go
Usetsxs;
createtableBook
(
ISBNvarchar(13)notnull,
bNamevarchar(30)notnull,
bClassvarchar(10)null,
bAuthorvarchar(10)null,
bPressvarchar(30)null,
bPressDatesmalldatetimenull,
bPricedecimal(5,2)null,
bPagessmallintnull,
bDemochar(100)null,
primarykeyclustered(bName)
)
createtableCustomer
(
cNovarchar(6)notnull,
cNamevarchar(10)notnull,
cSexvarchar
(2)nullcheck(cSex=’男’orcSex=’女’),
cIDvarchar(20)null,
cAgesmallintnull,
cCorpvarchar(20)null,
cRegDatevarchar(10)null,
cTelvarchar(12)null,
cDemovarchar(100)null,
primarykeyclustered(cName)
)
createtableProvider
(
pNovarchar(6)notnull,
pNamevarchar(10)notnull,
pSexvarchar
(2)nullcheck(pSex=’男’orpSex=’女’),
pAgesmallintnull,
pIDvarchar(20)null,
pTelvarchar(12)null,
pRegDatevarchar(10)null,
pCorpvarchar(20)null,
pDemovarchar(100)null,
primarykeyclustered(pName)
)
createtableuser_Info
(
user_IDvarchar(6)notnullprimarykey,
user_PWDvarchar(6)null,
)
createtableOrders
(
oNovarchar(6)notnull,
bNamevarchar(30)notnull,
cNamevarchar(10)notnull,
oNumbersmallintnulldefault1,
oPricedecimal(5,2)null,
oDatedatetimenull,
oAccountdecimal(5,2)null,
oDemovarchar(100)null,
primarykeyclustered(bName,cName,oNo),
foreignkey(bName)referencesBook(bName),
foreignkey(cName)referencesCustomer(cName)
)
createtableStock
(
sNovarchar(6)notnull,
bNamevarchar(30)notnull,
pNamevarchar(10)notnull,
sPricedecimal(5,2)null,
sNumbersmallintnulldefault1,
sDatesmalldatetimenull,
sAccountdecimal(5,2)null,
sDemovarchar(100)null,
primarykeyclustered(bName,pName,sNo),
foreignkey(bName)referencesBook(bName),
foreignkey(pName)referencesProvider(pName)
)
createtableRefund
(
rNovarchar(6)notnull,
bNamevarchar(30)notnull,
cNamevarchar(10)notnull,
rPricedecimal(5,2)null,
rNumbersmallintnulldefault1,
rDatedatetimenull,
rAccountdecimal(5,2)null,
rDemovarchar(100)null,
primarykeyclustered(rNo,bName,cName),
foreignkey(bName)referencesBook(bName),
foreignkey(cName)referencesCustomer(cName)
)
createtableLib
(
bNamevarchar(30)notnull,
lNumbersmallintnotnulldefault1,
primarykeyclustered(bName,lNumber),
foreignkey(bName)referencesBook(bName)
)
4.3.3 数据库表关系图
数据库名称:
xsgl,创建8张用户表后,表间能形成如下的关系图。
基于该用表关系图,可以定义出各种常见的用户表视图用来作为统计信息。
如:
1.图书销售统计
CreateViewOrderStatas
SelectTOP10Book.ISBN,Lib.bName,Book.bClass,Book.bAuthor,Book.bPress,Lib.lNumber
FromBook,Lib
WhereLib.bName=Book.bName
OrderbyLib.lNumberDESC
2.图书退货统计
CreateviewRefundStatas
SelectTOP10Book.ISBN,Lib.bName,Book.bClass,Book.bAuthor,Book.bPress,Refund.rNumber
FromBook,Lib,Refund
WhereLib.bName=Book.bNameandRefund.bName=Book.bName
OrderbyRefund.rNumberDESC
3.图书体日销售量统计
CreateviewDayStatas
selectTOP10Orders.oDateas日期,SUM(Orders.oNumber)as数量
FromOrders,Lib,Book
WhereLib.bName=Book.bNameandOrders.bName=Book.bName
GroupbyOrders.oDate
OrderbyOrders.oDateASC
4.库存信息量
CreateviewLibStatas
SelectBook.ISBN,Lib.bName,Book.bClass,Book.bAuthor,Book.bPress,Lib.lNumber
FromLib,Book
WhereLib.bName=Book.bName
5.数据库初始数据的加载
数据库创建后,为下一阶段窗体模块的设计作准备,需要整体加载数据,加载数据可以手工一条一条界面录入,也可设计对各表的数据记录Insert命令集,这样执行插入命令集后表数据就有了。
但是系统管理员密码必须先设置好,不然无法登陆系统。
具体如下:
Insertintouser_Infovalues(‘Administator’,null)0t表间能形成一bName)referencesBook(bName)
其他的数据插入可以按下面SQL语言插入,也可以不插入。
InsertintoBookvalues(‘7-5635-1077-X’,’数据库原理及应用’,’自然科学’,’钱雪忠’,’北京邮电大学出版社’,’2005.8’,29.00,255,’21世纪高等院校计算机科学与技术系列教材’);
6.系统实现
启动VisualC++6.0,单击”文件””新建””工程”,选择”MFCAppWizard(exe)”,填写工程名”tsxs”.在“你喜爱的应用程序类型?
”,选“S单个文档”。
单击完成即完成一个单个文档应用程序。
本系统采用的一个文档/视图,多个对话框,对于系统中的所有功能都采用对话框来交互。
6.1系统登陆模块
系统登陆时为防止非法用户进入系统而设计,主要用于辨认操作员的身份,以确定其适用权限。
系统登陆模块运行界面如下图所示。
系统登陆模块的主要任务就是验证用户输入的用户名和密码是否正确。
如果验证通过,就根据登陆用户所拥有的访问权限分配可用功能。
反之,则不允许登陆。
如果一个用户连续登陆三次输入错误用户名或密码,系统将自动退出。
在程序中,与登陆模块对应的类为CLoginDLG;资源为IDD_LOGIN_DLG,如下图所示
6.2 主窗口模块
主程序界面是应用程序提供用户访问其他功能模块的平台,根据实际需要,图示销售管理系统的主界面采用传统的”菜单/工具栏/状态栏”风格。
图书销售管理系统主程序界面如下图所示.
主程序界面的主要功能就是访问其他功能模块,另外,程序中提供的根据用户分配的权限功能也是在主程序界面完成的。
6.2.1 菜单设计
6.2.2 工具栏设计
6.3 公共模块设计
在VisualC++中创建一个工程(单文档)有几个必须的文件如:
视图,文档,应用程序对象,资源文件。
本程序应用程序对象为CTsxsApp,在这个类下定义的对象就是全局变量,可以访问各个类。
由于本系统涉及到数据库访问,则在CTsxsApp则一定要定义相应的函数和变量用来访问数据库。
各功能模块对数据库中数据的操作,主要是通过ADO对象执行SQL命令来完成的。
在VisualC++中要使用ADO,需要做一些准备。
首先在头文件中引入相应的库文件(放在StdAfx.h中)。
……
#import"f:
\programfiles\commonfiles\System\ado\msado15.dll"no_namespace\
rename("EOF","EndOfFile")\
rename("LockTypeEnum","newLockTypeEnum")\
rename("DataTypeEnum","newDataTypeEnum")\
rename("FieldAttributeEnum","newFieldAttributeEnum")\
rename("EditModeEnum","newEditModeEnum")\
rename("RecordStatusEnum","newRecordStatusEnum")\
rename("ParameterDirectionEnum","newParameterDirectionEnum")
……
其次要初始化COM环境,在InitInstance中添加以下代码:
if(FAILED(:
:
CoInitialize(NULL)))
{//如果初始化COM环境失败,则跳出异常
AfxMessageBox("ADOInitfailed");
returnfalse;
}
最后,连接数据库。
在连接数据库之前要设好数据源。
然后再InitInstance中添加如下代码(以本系统为例):
try
{//数据源为tsxs
ADOConn.CreateInstance(__uuidof(Connection));
ADOConn->Open("DSN=tsxs;Provider=MSDASQL","sa","",adConnectUnspecified);
}
//捕捉异常
catch(_com_error&e)
{
CStringerr;
err.Format("%s",(char*)(e.Description()));
AfxMessageBox(err);
}
catch(...)
{
AfxMessageBox("UnknownError...");
}
在打开连接数据库后,接下来则要对数据库进行操作:
读取,更新,添加,删除,数据等。
把如此多的功能封装起来,以便其他类调用方便,具体实现如下:
boolCTsxsApp:
:
ADOExecute(_RecordsetPtr&ADOSet,_variant_t&strSQL)
{
if(ADOSet->State==adStateOpen)ADOSet->Close();
try
{
ADOSet->Open(strSQL,ADOConn.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdUnknown);
returntrue;
}
catch(_com_error&e)
{
CStringerr;
err.Format("ADOError:
%s",(char*)e.Description());
AfxMessageBox(err);
returnfalse;
}
}
6.4 基本表维护模块的设计
由前面定义的8个基本表,这个模块分别对这8个表的维护,包括添加,修改,删除,查询。
这8个实现的是,操作员,顾客,供应商,图书,进货,销售,退货管理。
分别实现对这些信息的添加,修改,删除,查询。
当然,操作员是由系统管理员添加的,自己只能修改密码,不能添加用户。
由于8个表的功能都是一样的,则实现的代码也差不过,只是数据库中的名字不一样而已。
6.4.1 实现添加功能
以添加进货信息为例,当点击添加进货信息时则会跳出对话框,供应商,图书都是由数据库查询得出来的,选中好后,填上价格,数量,总
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 资料