数据库图书销售管理系统课程设计.docx
《数据库图书销售管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《数据库图书销售管理系统课程设计.docx(30页珍藏版)》请在冰豆网上搜索。
![数据库图书销售管理系统课程设计.docx](https://file1.bdocx.com/fileroot1/2023-2/1/0ad4af75-1057-48f8-875a-452712c488a5/0ad4af75-1057-48f8-875a-452712c488a51.gif)
数据库图书销售管理系统课程设计
课程设计Ⅳ设计说明书
图书销售管理系统
学生姓名
学号
班级
成绩
指导教师
李志红
0918014009计本091
钟永友
数计学院2012年3月2日
0
课程设计Ⅳ课程设计评阅书
题目
图书销售管理系统
学生姓名
李志红
学号
0918014009
指导教师评语及成绩
指导教师签名:
年月日
答辩评语及成绩
答辩教师签名:
年月日
教研室意见
总成绩:
室主任签名:
年月日
注:
指导老师成绩60%,答辩成绩40%,总成绩合成后按五级制计入。
课程设计任务书
2011—2012学年第2学期
专业:
数学与计算机科学学院
学号:
**********
姓名:
李志红
课程设计名称:
课程设计Ⅳ
设计题目:
图书销售管理系统
完成期限:
自2012年2月20日至2010年3月2设计依据、要求及主要内容(可另加附页):
日共2
周
本课程设计是在学完数据库课程之后,根据所学的理论知识和实践内容,要求对图书销售管理系统进行数据库设计,并开发实现如下功能:
1.销售明细、批发明细、退货明细
2.查询图书的销售详情:
包括零售明细、批发明细、销售统计等
3.订单处理:
审核订单,出库单
4.收付款处理:
5.用户管理(注意用户权限设置)、系统维护功能。
开发完成以上功能后,并撰写说明书,要求按照相关数据库设计规范进行撰写。
指导教师(签字):
教研室主任(签字):
批准日期:
2012年
月
日
摘
要
随着计算机的普及书店规模的不断扩大,使图书销售管理成为书店管理中的一个重要课题。
通过图书销售管理系统可以解决书店管理中遇到的各种问题。
本系统分析了市场需求和实际需要,利用VisualC++6.0连接SQL数据库的方式,主要实现了书店的图书销售管理,该系统具有处理图书录入、图书销售、销售统计、查询库存等功能。
关键词:
图书销售管理;数据库;VisualC++6.0
目
录
1课题描述..........................................................1
2.1系统设计功能概要............................................2
2.2系统功能总体结构............................................2
3数据库设计与实现..................................................3
3.1业务流程图..................................................3
3.2数据流图....................................................3
3.3数据字典....................................................4
3.4概念结构设计................................................5
3.5逻辑结构设计................................................9
3.6物理结构设计................................................9
3.7系统维护...................................................11
4部分编程代码.....................................................12
4.1图书录入模块...............................................12
4.2图书销售模块...............................................14
4.3图书统计模块...............................................16
5程序调试与测试...................................................18
5总结.............................................................20
参考文献...........................................................21
数计学院数据库课程设计
1课题描述
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
传统的图书管理系统其日常管理工作都是人工操作,存在着许多缺点,如:
效率低下、保密性差,另外时间一长,将产生大量的文件和数据,这对于数据的查找、更新和维护都带来了不少的困难,并且浪费了许多人力和物力。
特别是中小型书店、个体书店,由于其规模小,硬件投入不大,管理人员水平有限,如果没有一个好的图书管理系统,对于书店的经营是非常不利的。
在信息时代,传统的图书管理方式必然被计算机为基础的信息管理系统所取代。
因为作为计算机应用的一部分,使用计算机对图书信息进行管理,具有着手工管理所无法比拟的优点.例如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高图书管理的效率。
为此,开发了此图书销售管理系统,结合市场需求,经过研究分析后,完成该系统,并实现了系统基础信息管理,库存管理,销售管理和查询管理等模块。
对图书的进购,入库,销售,出库进行全程管理,给用户带来了方便。
0
数计学院数据库课程设计
2系统设计
2.1系统设计功能概要
本系统是根据书店的实际需求而开发的,要求稳定、可靠的实现图书销售的自动化管理,通过本系统可以达到以下目标:
1.图书录入,包括图书的基本信息,如分类、进价、售价、作者等。
2.图书销售,包括图书的售价、折扣、销售日期,并实现对库存量的修改。
3.销售统计,包括按图书类型、书名、作者、出版社等进行统计。
4.查询库存,对指定的某本图书剩余库存量进行查询。
5.售完图书查询,对已售完图书进行查询。
6.用户管理,系统维护功能。
2.2系统功能总体结构
图书销售管理系统功能结构图如图2.1所示。
图2.1图书销售管理系统功能结构图
1
数计学院数据库课程设计
3数据库设计与实现
3.1业务流程图
系统流程图是概括的描绘物理系统的传统工具。
它的基本思想是用图形符号以黑盒子形式描绘组成系统的部件(程序、文档、数据库、人工过程等)。
系统流程图表达的是数据在系统各部件之间的流动情况而不是对数据进行加工处理的控制过程,因此尽管系统流程图的某些符号和程序流程图的符号形式相同,但是它却是物理数据流图而不是程序流程图。
通过分析图书销售管理系统,得到以下业务流程图如图3.1所示:
事务
图书信息管理主文件
基本
信息
库存
信息
价格
信息
销售
信息
查询
信息
显示详
细信息
图3.1系统业务流程图
3.2数据流图
数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。
在数据流图中没有任何具体的物理元素,它只是描绘信息在系统中流动和被处理的情况。
经过详细的分析,了解图书销售管理系统的具体业务流程,构造出逻辑模型,再结合数据流图的相关定义,绘制出本系统的数据流图如图3.2所示:
2
数计学院数据库课程设计
D1
基本信息存储
D3
图书库存记录
图书
合格入库
验证登录
审核
单
图书入库
管理
价格信息
录入价格/调动价格
合格出库单
D5图书价格记录
图书出库
图书信息
客户信息
销售管理
D7
图书销售记录
管理
P6
添加图书
基本信息
D6
图3.2图书销售管理系统数据流图
图书信息表
3.3数据字典
一般来说,数据字典应该由下列四类元素的定义组成:
(1)数据流;
(2)数据流分量(即数据元素);(3)数据存储;(4)处理。
在开发小型的软件系统时可采用卡片形式书写数据字典,每张卡片表上保存一个数据的信息,这样会使更新和修改比较方便,而且能单独处理描述每个数据的信息。
每张卡片上主要包含一些信息:
名称,简述,定义,位置。
针对以上数据流图,给出部分数据字典的说明。
3
数计学院数据库课程设计
3.4概念结构设计
提供
库存
管理
图书数量
整个系统E-R图如下图3.3所示。
拥有
购买
图3.3系统E-R图
对应
销售时间
陈列
1
价格
4
数计学院数据库课程设计
本系统图书信息实体的分E-R图如图3.4所示:
图3.4图书信息的分E-R图
本系统图书入库实体的分E-R图如图3.5所示:
图3.5图书入库的分E-R图
5
数计学院数据库课程设计
本系统入库退货实体的分E-R图如图3.6所示:
图3.6入库退货的分E-R图
本系统图书销售实体的分E-R图如图3.7所示:
图3.7图书销售的分E-R图
6
数计学院数据库课程设计
本系统销售退货实体的分E-R图如图3.8所示:
图3.8销售退货的分E-R图
本系统供货商信息实体的分E-R图如图3.9所示:
图3.9供货商信息的分E-R图
7
数计学院数据库课程设计
3.5逻辑结构设计
将图书销售管理系统的系统E-R图转换成关系数据库的数据模型,其数据库关系模式如下:
仓库信息(仓库编号)
图书销售(销售单号,销售时间,条形码,折扣,总价,数量,顾客名,操作员名)供应商信息(供应商名,法人,负责人,详细地址,联系电话,网址,电子邮箱)
操作员信息(用户名,密码,权限级别)
图书类别信息(类型名)
图书信息表(图书名,条形码,,图书类型,作者,出版社,出版日期,进价,售价)管理(管理员名称,仓库名编号)
顾客(顾客名)
购买图书(顾客名,销售单号)
图书供应(供应商名,图书条形码)
3.6物理结构设计
关系属性的设计包括属性名,数据类型,数据长度。
该属性是否允许空值,是否为主码,是否为索引项及约束条件。
根据物理结构设计理论,将该系统逻辑结构转换为物理结构,其详细结构列表如表3.6.1—表3.6.7所示。
(1)表3.6.1图书信息表
字段
数据类型
长度
允许为空
说明
bookname
varchar
30
否
图书名称
barcode
varchar
30
否
条形码
author
varchar
30
否
作者
bookconcern
varchar
30
否
出版社
Purchase
float
8
否
进价
Price
float
8
否
售价
PublishDate
smalldatetime
4
否
出版日期
kind
varchar
30
否
图书类型
(2)表3.6.2图书种类信息表
字段
数据类型
长度
允许为空
说明
bookkind
varchar
30
否
图书类型
bookkindID
varchar
10
否
类型编号
(3)表3.6.3图书入库表
字段
数据类型
长度
允许为空
说明
ID
varchar
30
否
入库单号
8
数计学院数据库课程设计
provide
varchar
50
否
供货商
operator
varchar
30
否
操作员
rebate
float
8
否
折扣
sumtotal
float
8
否
总价
paymoney
money
8
否
应付金额
factmoney
money
8
否
实付金额
intime
datetime
10
否
入库时间
(4)表3.6.4入库退货明细表
字段
数据类型
长度
允许为空
说明
CancleID
varchar
30
否
退货单号
barcode
varchar
30
否
条形码
unitPrice
money
8
否
定价
numbers
float
8
否
数量
rebate
float
8
否
折扣
paymoney
money
8
否
金额
stockname
varchar
30
否
仓库名称
time
datetime
10
否
时间
(5)表3.6.5图书销售主表
字段
数据类型
长度
允许为空
说明
SellID
varchar
30
否
销售单号
Customer
varchar
30
是
顾客名
operator
varchar
30
否
操作员
rebate
float
8
否
折扣
sumtotal
money
8
否
总价
paymoney
money
8
否
应付金额
factmoney
money
8
否
实付金额
intime
datetime
-
否
时间
(6)表3.6.6销售退货主表
字段
数据类型
长度
允许为空
说明
SellCancelID
varchar
30
否
售货单号
Customer
varchar
50
是
顾客名
operator
varchar
30
否
操作员
rebate
float
8
否
折扣
intime
datetime
-
否
时间
barcode
varchar
30
否
条形码
9
数计学院数据库课程设计
unitPrice
money
8
否
单价
paymoney
money
8
否
金额
(7)表3.6.7供应商信息表
字段
数据类型
长度
允许为空
说明
provider
varchar
50
否
供应商名
corporation
varchar
30
否
法人
principal
varchar
10
是
负责人
phone
varchar
30
是
联系电话
addr
varchar
50
是
详细地址
web
varchar
50
是
网址
e_mail
varchar
30
是
电子邮箱
3.7系统维护
系统的修改往往会“牵一发而动全身”。
程序、文件、代码的局部修改都可能影响系统的其他部分。
因此,系统的维护工作应有计划有步骤的统筹安排,按照维护任务的工作范围、严重程度等诸多因素确定优先顺序,制定出合理的维护计划,然后通过一定的批准手续实施对系统的修改和维护。
下图3.7.1简要说明了维护工作的全过程的步骤。
图3.7.1系统维护步骤
10
数计学院数据库课程设计
4部分编程代码
4.1图书录入模块
BOOLRAddBookDlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//TODO:
Addextrainitializationhere
GetBookGategory();
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
//EXCEPTION:
OCXPropertyPagesshouldreturnFALSE
}
(2)当用户单击“保存“按钮时,实现添加图书功能,其响应代码如下:
voidRAddBookDlg:
:
OnSave()
{
//TODO:
AddyourcontrolnotificationhandlercodehereUpdateData(TRUE);
if(!
IsValidInput())
return;
if(IDYES!
=AfxMessageBox("确定要保存吗?
",MB_YESNO))//放弃保存
return;
if(SaveData())
{
AfxMessageBox("保存成功!
");
//保存后重置数据
m_bHasNewBook=true;
OnReset();
GetDlgItem(IDC_BK_CATEGORY)->SetFocus();
}
else
AfxMessageBox("保存失败!
");
}
(3)判断输入信息是否正确的函数是IsValidInput(),其响应代码如下:
boolRAddBookDlg:
:
IsValidInput()
{
CStringstr="0123456789";
if(m_strBookCategory.IsEmpty()||m_strBookCategory.FindOneOf(str)!
=-
1)
{
AfxMessageBox("输入有误!
图书类型不能为空或包含数字。
");
11
数计学院数据库课程设计
GetDlgItem(IDC_BK_CATEGORY)->SetFocus();
returnfalse;
}
if(m_strBookName.IsEmpty())
{
AfxMessageBox("输入有误!
书名不能为空。
");GetDlgItem(IDC_BK_NAME)->SetFocus();
returnfalse;
}
if(m_strAuthor.IsEmpty()||m_strAuthor.FindOneOf(str)!
=-1)
{
AfxMessageBox("输入有误!
作者名称不能为空或包含数字。
");GetDlgItem(IDC_BK_AUTHOR)->SetFocus();
returnfalse;
}
if(m_strPublisher.IsEmpty()||m_strPublisher.FindOneOf(str)!
=-1)
{
AfxMessageBox("输入有误!
出版社名称不能为空或包含数字。
");GetDlgItem(IDC_BK_PUBLISHER)->SetFocus();
returnfalse;
}
if(m_dPurchase<=0)
{
AfxMessageBox("图书进价应为正值!
");GetDlgItem(IDC_BK_PURCHASE)->SetFocus();
returnfalse;
}
if(m_dPrice<=0)
{
AfxMessageBox("图书售价应为正值!
");
GetDlgItem(IDC_BK_PRICE)->SetFocus();
returnfalse;
}
if(m_lDiscount<0||m_lDiscount>100)
{
AfxMessageBox("图书折扣应为0-100之间正值!
");GetDlgItem(IDC_BK_DISCOUNT)->SetFocus();
returnfalse;
12
数计学院数据库课程设计
}
if(m_lStock<1)
{
AfxMessageBox("图书数量应为正值!
");
GetDlgItem(IDC_BK_STOCK)->SetFocus();
returnfalse;
}
if(m_strBarcode.IsEmpty()||m_strBarcode.GetLength()>15)
{
AfxMessageBox("条形码应为15位整数!
");
GetDlgItem(IDC_BK_BARCODE)->SetFocus();
returnfalse;
}
returntrue;
}
4.2图书销售模块
voidRSaleBookDlg:
:
OnOK()
{
//TODO:
Addextravalidationhere
if(!
m_bReadySale)
m_bReadySale=FindBook();
else
{
UpdateData(TRUE);
CStringstrMsg;
strMsg.Format("是否出售?
\n书名:
%s\n价格:
%.2f”,m_strBookName
m_dSalePrice);
if(IDYES==AfxMessageBox(strMsg,MB_YESNO))
{
ModifyStock();//修改图书库存
SaveSaleRecord();//记录销售记录
}
Init();
UpdateData(FALSE);
GetDlgItem(IDC_SBK_NAME)->SetFocus();
m_editDiscount.EnableWindow(FALSE);
}
//CDialog:
:
OnOK();
13
数计学院数据库课程设计
}
(2)判断销售是否能够成功的函数是RSaleBookDlg:
:
FindBook(),其代码如下:
boolRSaleBookDlg:
:
FindBook()
{
//TODO:
AddyourcontrolnotificationhandlercodehereUpdateData(TRUE);
CStringstrSql;
_variant_tvar;
doubledPurchase;
if(!
m_strBookName.IsEmpty())
strSql.Format("SELECT*FROMBookInfoWHEREBookName=\"%s\"and
Stock>0",m_strBookName);
elseif(!
m_strBarCode.IsEmpty())
strSql.Format("SELECT*FROMBookInfoWHEREBarCode=\"%s\"and
Stock>0",m_strBarCode);
else
{
AfxMessageBox("请输入书名或条码!
");
GetDlgI