图书销售管理系统精品干货.docx

上传人:b****4 文档编号:24668558 上传时间:2023-05-30 格式:DOCX 页数:34 大小:352.76KB
下载 相关 举报
图书销售管理系统精品干货.docx_第1页
第1页 / 共34页
图书销售管理系统精品干货.docx_第2页
第2页 / 共34页
图书销售管理系统精品干货.docx_第3页
第3页 / 共34页
图书销售管理系统精品干货.docx_第4页
第4页 / 共34页
图书销售管理系统精品干货.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

图书销售管理系统精品干货.docx

《图书销售管理系统精品干货.docx》由会员分享,可在线阅读,更多相关《图书销售管理系统精品干货.docx(34页珍藏版)》请在冰豆网上搜索。

图书销售管理系统精品干货.docx

图书销售管理系统精品干货

图书销售管理系统

1引言

传统的图书销售管理方法,都是通过人工统计和计算的管理方式进行的。

这样的管理方法不但费时费力,也容易产生计算上的错误和疏漏;计算机技术的全面普及,打破了书店管理的传统管理方法,提高了管理效率的同时,克服了传统管理方法中易产生的问题,使管理员能够有序的、全面的对图书销售和库存进行管理.......感谢聆听

网上图书销售系统可以完成书店的日常管理,如图书录入、图书销售、销售统计、查询库存等功能,迅速准确地对已售图书和剩余库存进行统计和汇总工作,大大提高了书店的管理效率和准确性.

2需求分析

2.1 国内外研究的现状

在现代化的书店中,对图书销售工作运用现代化技术进行管理,是提高工作效率的有效手段.图书销售管理是书店日常工作中非常重要的一个方面,越来越受到书店经营者的重视.通过计算机管理系统对图书销售进行全面的统计与管理,全面解决了书店经营过程中所遇到的各种问题,并且克服了传统管理方式中的易出错等问题。

图书销售管理系统成为书店管理的首选管理工具。

......感谢聆听

2.2功能需求

2.2。

1待开发软件的功能需求

本系统是根据书店的实际需求而开发的,要求稳定、可靠的实现图书销售的自动化管理,通过本系统可以达到以下目标:

1.图书录入,包括图书的基本信息,如分类、进价、售价、作者等.

2.图书销售,包括图书的售价、折扣、销售日期,并实现对库存量的修改。

3.销售统计,包括按图书类型、书名、作者、出版社等进行统计.

4.查询库存,对指定的某本图书剩余库存量进行查询。

5.售完图书查询,对已售完图书进行查询。

2。

2.2待开发软件的功能

按照用户需求,要满足以上功能,我设计出了图书销售管理系统的系统功能图,如图2.1所示。

图2。

1 图书销售管理系统的系统功能图

综合系统要求,对图2。

1所示的系统功能解释如下:

图书录入,包括图书的基本信息,如分类、进价、售价、作者等。

图书销售,包括图书的售价、折扣、销售日期,并实现对库存量的修改。

销售统计,包括按图书类型、书名、作者、出版社等进行统计.

查询库存,对指定的某本图书剩余库存量进行查询.

售完图书查询,对已售完图书进行查询。

通过以上分析,可以得到仓库管理系统的数据流图,如图2。

2所示。

图2.2 图书管理系统的数据流图

2.3数据描述

2.3。

1数据库概要说明

数据库中包括管理员信息表、图书基本信息表、图书类型表、图书销售记录表等4个数据表。

图2.3所示的即为本系统中数据库中的数据表结构图,该数据表结构图包含系统所有数据表。

可以清晰地反应数据库信息。

图2.3数据表结构图

2。

3.2主要数据表的结构

表2.1Pwd(管理员信息表)

字段名

数据类型

字段大小

描述

ID

int

4

管理员帐号

Password

nvarchar

50r

密码

表2。

2BookInfo(图书基本信息表)

字段名

数据类型

字段大小

描述

BookID

int

4

图书编号

BookName

nvarchar

50

图书名称

CategoryID

int

4

图书类型编号

Author

nvarchar

50

作者

Publisher

nvarchar

50

出版社

PublishDate

smalldatetime

4

出版日期

Purchase

float

8

进价

Price

float

8

售价

Stock

int

4

库存本数

Discount

int

4

折扣

BarCode

nvarchar

50

条形码

表2。

3BookCategory(图书类型表)

字段名

数据类型

长度

描述

CategoryID

int

4

图书类型编号

CategoryName

nvarchar

图书类型名称

表2.4BookSale(图书销售记录表)

字段名

数据类型

长度

描述

ID

int

4

销售记录编号

BookID

int

4

图书编号

SalePrice

float

8

实际售价

SaleDate

smalldatetime

销售日期

2.4 数据库描述

本软件采用SQL数据库.

ﻬ3概要设计

本系统是根据书店的实际需求而开发的,完全能够帮助书店实现高效、准确的图书销售自动化管理。

在分析阶段,我们已经提出了系统的结构和数据字典。

本节我们将对系统的使用环境作简要介绍,并对该系统作概要设计。

3。

1 系统运行环境

P4机

Windows操作系统

VisualC++6.0

3.2 系统功能模块设计

在前面系统功能分析的基础上,结合VisualC++程序编制的特点,得到如图3.1所示的系统功能模块图。

图3。

1图书销售管理系统功能模块图

各模块功能分配如下:

(1)用户登陆功能:

管理员登陆模块(M1)。

(2)图书录入功能:

图书录入模块(M2)。

(3)图书销售功能:

图书销售模块(M3).

(4)销售统计功能:

销售统计模块(M4)。

(5)查询图书库存功能:

查询库存模块(M5).

(6)售完图书查询功能:

售完图书查询模块(M6)。

3.3系统处理流程

(1)系统启动,进入身份验证.

(2)初始化系统,导入数据库。

(3)录入图书信息。

(4)图书销售。

(5)统计图书销售信息。

(6)查询图书库存信息。

(7)查询已售完图书信息。

(8)退出系统。

3.4 接口设计

3.4.1外部接口

(1)用户界面

采用图形用户界面,包含菜单、按钮、对话框等元素。

(2)软件接口

软件运行于VisualC++6.0平台上.

(3)硬件接口

运行于PC机上。

3.4.2内部接口

(1)用户登陆模块(M1):

由相应事件驱动消息激活,完成用户登陆功能,之后进入消息循环状态.

(2)图书销售模块(M3):

由相应事件驱动消息激活,完成图书销售功能,之后进入消息循环状态。

(3)销售统计模块(M4):

由相应事件驱动消息激活,完成销售统计功能,之后进入消息循环状态。

(4)查询库存模块(M5):

由相应事件驱动消息激活,完成查询库存功能,之后进入消息循环状态。

(5)售完图书查询模块(M6):

由相应事件驱动消息激活,完成售完图书查询功能,之后进入消息循环状态。

4详细设计

该系统采用VC++6。

0中的MFC连接SQL数据库的方式,使用图形用户界面,主要实现图书录入、图书销售等功能.下面具体对各模块进行介绍。

4.1登录模块及主界面

在登录界面(如图4。

1所示)中输入用户名和密码,登录成功后进入主界面。

登陆框流程图如图4。

2所示,系统主界面如图4.3所示,单击某个按钮就能弹出某个功能的界面.

图4.1系统登录界面

图4.2登录模块流程图

图4.3系统主界面

4。

2图书录入模块

4。

2.1实现目标

添加图书信息,图书录入对话框的设计如图4.4所示。

“保存”按钮对应的方法为RAddBookDlg:

OnSave(),流程图如图4.5所示。

图4。

4图书录入对话框

图4。

5RAddBookDlg:

OnSave()方法的流程图

4。

2。

2设计步骤

(1)向项目中添加一个新Dialog资源,资源ID为IDD_ADDBOOK。

在IDD_YGTJK对话框资源中单击鼠标右键,执行弹出快捷菜单的“Properties”菜单命令,打开“Dialog Properties”对话框.在“DialogProperties”对话框中选择General选项卡,更改其“Caption"文本框内容为“图书信息录入”。

......感谢聆听

(2)从Controls面板上向Dialog资源中添加所需控件,更改资源的属性,并为资源设置相对应的变量,如表4.1所示。

表4。

1图书录入Dialog资源属性设置

ID

Properties

MemberVariables

Type

Member

IDC_BK_CATEGORY

默认

文本

CategoryName

IDC_BK_NAME

默认

文本

BookName

IDC_BK_AUTHOR

默认

文本

Author

IDC_BK_PUBLISHER

默认

文本

Publisher

IDC_BK_DATE

默认

日期/时间

PublishDate

IDC_BK_PURCHASE

默认

数字

Purchase

IDC_BK_PRICE

默认

数字

Price

IDC_BK_PAYOFF

默认

数字

Price

IDC_BK_STOCK

默认

数字

Stock

IDC_BK_BARCODE

默认

文本

BarCode

IDC_BK_DISCOUNT

默认

数字

Discount

IDC_RESET

Caption重填

IDC_SAVE

Caption  添加

IDCANCEL

Caption 退出

4.2.3代码分析

(1)打开ClassWizard窗口,添加在OnInitDialog成员函数,向OnInitDialog添加代码如下:

BOOLRAddBookDlg:

OnInitDialog()

CDialog:

OnInitDialog();

ﻩ// TODO:

Addextra initialization here

GetBookGategory();

returnTRUE;// returnTRUE unlessyousetthefocus toacontrol

      //EXCEPTION:

 OCXProperty PagesshouldreturnFALSE

}

(2)当用户单击“保存“按钮时,实现添加图书功能,其响应代码如下:

void RAddBookDlg:

OnSave() 

ﻩ// TODO:

 Add your controlnotificationhandlercode here

UpdateData(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(”输入有误!

图书类型不能为空或包含数字。

");

ﻩ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();

return false;

ﻩ}

ﻩ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();

ﻩreturn false;

ﻩ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;

ﻩ}

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();

ﻩreturn false;

}

//ﻩAfxMessageBox(m_strBookName + "\r\n"+

//ﻩﻩm_strBookCategory+”\r\n"+

//ﻩm_strAuthor+ "\r\n”+

//ﻩm_strPublisher +"\r\n" +

//m_strBarcode);

ﻩreturntrue;

}

4.3图书销售模块

4。

3。

1实现目标

实现图书销售功能,图书销售对话框设计如图4.6所示。

“销售"按钮对应的方法为RSaleBookDlg:

OnOK(),流程图如图4.7所示。

图4.6 图书销售对话框

图4.7RSaleBookDlg:

:

OnOK()方法的流程图

4。

3.2实现步骤

(1)向项目中添加一个新Dialog资源,资源ID为IDD_SALEBOOK。

在IDD_YGGONGZITJ对话框资源中单击鼠标右键,执行弹出快捷菜单的“Properties”菜单命令,打开“DialogProperties"对话框。

在“DialogProperties”对话框中选择General选项卡,更改其“Caption”文本框内容为“图书销售。

”......感谢聆听

(2)从Controls面板上向Dialog资源中添加相关控件,更改资源的属性,并为资源设置相对应的变量,如表3.2所示:

表4.2图书销售添加Dialog资源属性设置

ID

Properties

MemberVariables

Type

Member

IDC_SBK_NAME

默认

文本

BookName

IDC_SBK_BARCODE

默认

文本

BarCode

IDC_SBK_PRICE

默认

数字

Price

IDC_SBK_SALEPRICE

默认

数字

SalePrice

IDC_SBK_DISCOUNT

默认

数字

Discount

IDC_SBK_DATE

默认

日期/时间

SaleDate

IDOK

Caption销售

IDCANCEL

Caption退出

4。

3.3代码分析

(1)为“销售”按钮添加代码,实现图书销售功能,代码如下:

voidRSaleBookDlg:

OnOK()

//TODO:

 Addextravalidationhere

if(!

m_bReadySale)

ﻩﻩm_bReadySale =FindBook();

ﻩelse

ﻩUpdateData(TRUE);

ﻩﻩCString strMsg;

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();

(2)判断销售是否能够成功的函数是RSaleBookDlg:

FindBook(),其代码如下:

bool RSaleBookDlg:

:

FindBook()

{

//TODO:

Addyourcontrolnotification handler codehere

ﻩUpdateData(TRUE);

CString strSql ;

_variant_tvar;

doubledPurchase;

ﻩif(!

m_strBookName.IsEmpty())

ﻩﻩstrSql。

Format("SELECT*FROMBookInfo WHEREBookName=\"%s\" and Stock>0”,m_strBookName);

ﻩelseif(!

m_strBarCode.IsEmpty())

strSql.Format("SELECT* FROMBookInfo WHEREBarCode=\”%s\”andStock>0”,m_strBarCode);

ﻩelse

ﻩ{

ﻩAfxMessageBox("请输入书名或条码!

”);

ﻩGetDlgItem(IDC_SBK_NAME)—〉SetFocus();

returnfalse;

ﻩCRBookSaleApp* pApp=(CRBookSaleApp*)AfxGetApp();

try

{

ﻩﻩpApp—>m_pRecordset->Open(strSql.AllocSysString(),

ﻩﻩﻩﻩpApp—>m_pConnection。

GetInterfacePtr(),

ﻩﻩadOpenDynamic,

ﻩﻩadLockOptimistic,

ﻩﻩﻩadCmdText);

if(pApp—〉m_pRecordset—>adoEOF)

ﻩﻩ{

AfxMessageBox("查无此书!

请输入书名或条码无误。

");

ﻩﻩpApp—>m_pRecordset->Close();

ﻩﻩﻩreturn false;

ﻩvar=pApp-〉m_pRecordset—〉GetCollect("BookID");

ﻩif(var.vt!

=NULL)

ﻩﻩﻩm_lBookID=var。

lVal;

var= pApp->m_pRecordset->GetCollect("Discount");

ﻩif(var.vt!

= NULL)

ﻩﻩm_lDiscount = var。

lVal;

ﻩﻩvar =pApp-〉m_pRecordset-〉GetCollect(”Price");

ﻩﻩif(var。

vt !

=NULL)

ﻩﻩm_dPrice = var.dblVal;

ﻩvar =pApp->m_pRecordset->GetCollect(”Purchase");

ﻩif(var.vt !

= NULL)

ﻩﻩﻩdPurchase =var.dblVal;

ﻩvar= pApp—>m_pRecordset->GetCollect("CategoryID”);

ﻩif(var.vt !

=NULL)

ﻩm_lCategory=var。

lVal;

ﻩpApp->m_pRecordset—〉Close();

ﻩcatch(_com_error*e)

ﻩ{

ﻩAfxMessageBox(e—>ErrorMessage());

m_editDiscount。

EnableWindow(m_dPrice>=dPurchase);

m_lDiscount=(m_dPrice>= dPurchase)?

m_lDiscount :

100;ﻩ//售价小于进价时,不允许打折

ﻩm_dSalePrice= m_dPrice * (double(m_lDiscount)/100);ﻩ //计算折后价

ﻩUpdateData(FALSE);

returntrue;

4。

4销售统计模块

4.4。

1实现目标

实现对已销售的图书进行统计的功能,销售统计对话框如图4。

8所示。

图4.8销售统计对话框

4.4.2设计步骤

(1)向项目中添加一个新Dialog资源,资源ID为IDD_REPORT。

在IDD_REPORT对话框资源中单击鼠标右键,执行弹出快捷菜单的“Properties"菜单命令,打开“DialogProperties”对话框.在“DialogProperties”对话框中选择General选项卡,更改其“Caption”文本框内容为“销售统计”。

......感谢聆听

(2)从Controls面板上向Dialog资源中添加相应控件,更改资源的属性,并为资源设置相应的变量,如表4.3所示:

表4。

3用户信息管理Dialog资源属性设置

ID

Properties

MemberVariables

Type

Member

IDC_RADIO2

默认

单选框

IDC_RADIO3

默认

单选框

IDC_RADIO4

默认

单选框

IDC_RADIO5

默认

单选框

IDC_RADIO6

默认

单选框

IDC_STATIC

默认

单选框

IDOK

Caption确定

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1