网上图书销售系统数据库课程设计上报告.docx

上传人:b****5 文档编号:12365086 上传时间:2023-04-18 格式:DOCX 页数:33 大小:348.24KB
下载 相关 举报
网上图书销售系统数据库课程设计上报告.docx_第1页
第1页 / 共33页
网上图书销售系统数据库课程设计上报告.docx_第2页
第2页 / 共33页
网上图书销售系统数据库课程设计上报告.docx_第3页
第3页 / 共33页
网上图书销售系统数据库课程设计上报告.docx_第4页
第4页 / 共33页
网上图书销售系统数据库课程设计上报告.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

网上图书销售系统数据库课程设计上报告.docx

《网上图书销售系统数据库课程设计上报告.docx》由会员分享,可在线阅读,更多相关《网上图书销售系统数据库课程设计上报告.docx(33页珍藏版)》请在冰豆网上搜索。

网上图书销售系统数据库课程设计上报告.docx

网上图书销售系统数据库课程设计上报告

数据库系统原理及其应用教程

课程设计报告

题目名称:

网上图书销售系统

 

 

任课教师:

姓名:

学号:

 

2010年12月30日

 

评语31

摘要

随着计算机的普及书店规模的不断扩大,使图书销售管理成为书店管理中的一个重要课题。

通过图书销售管理系统可以解决书店管理中遇到的各种问题。

本系统分析了市场需求和实际需要,利用VC++连接SQL数据库的方式,主要实现了书店的网上图书销售管理,该系统具有处理图书录入、图书销售、销售统计、查询库存等功能。

 

关键词:

图书;销售;库存

1引言

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

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

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

2需求分析

2.1功能需求

2.1.1待开发软件的功能需求

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

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

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

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

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

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

2.1.2待开发软件的功能

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

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

综合系统要求,对图2.1所示的系统功能解释如下:

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

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

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

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

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

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

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

2.2数据描述

2.2.1数据库概要说明

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

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

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

图2.3数据表结构图

2.2.2主要数据表的结构

表2.1Pwd(管理员信息表)

字段名

数据类型

字段大小

描述

ManagerID

int

4

管理员编号

Administratorname

nvarchar

50r

管理员名称

Password

nvarchar

50r

密码

表2.2BookInfo(图书基本信息表)

字段名

数据类型

字段大小

描述

Libraryname

nvarchar

50

图书名称

Serialnumber

int

图书编号

Bookcategory

nvarchar

50

图书类别

Author

nvarchar

50

作者

Press

nvarchar

50

出版社

Dateofpublication

smalldatetime

出版日期

Price

float

价格

Number

int

数量

Barcode

nvarchar

50

条形码

表2.3Staff(员工表)

字段名

数据类型

长度

描述

Fullname

nvarchar

50

姓名

Employeenumber

Int

员工号

Sex

nvarchar

50

性别

表2.4Warehouse(仓库表)

字段名

数据类型

长度

描述

Warehousenumber

nvarchar

50

仓库号

Address

nvarchar

50

地址

Themeasureofarea

float

面积

表2.5Purchaseorder(订购单表)

字段名

数据类型

长度

描述

Ordernumber

nvarchar

50

订购单号

Orderdate

smalldatetime

订购日期

表2.6User(用户表)

字段名

数据类型

长度

描述

Usernumber

Int

用户编号

Username

nvarchar

50

用户姓名

Userage

Int

用户年龄

Contacttelephonenumber

Int

联系电话

Usersex

nvarchar

50

用户性别

2.3数据库描述

本软件采用SQL数据库。

3概要设计

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

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

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

3.1系统运行环境

PC机

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.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”菜单命令,打开“DialogProperties”对话框。

在“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:

Addextrainitializationhere

GetBookGategory();

returnTRUE;//returnTRUEunlessyousetthefocustoacontrol

//EXCEPTION:

OCXPropertyPagesshouldreturnFALSE

}

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

voidRAddBookDlg:

:

OnSave()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

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

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;

}

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;

}

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

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

}

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

:

FindBook(),其代码如下:

boolRSaleBookDlg:

:

FindBook()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

UpdateData(TRUE);

CStringstrSql;

_variant_tvar;

doubledPurchase;

if(!

m_strBookName.IsEmpty())

strSql.Format("SELECT*FROMBookInfoWHEREBookName=\"%s\"andStock>0",m_strBookName);

elseif(!

m_strBarCode.IsEmpty())

strSql.Format("SELECT*FROMBookInfoWHEREBarCode=\"%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()adLockOptimistic,

adCmdText);

if(pApp->m_pRecordset->adoEOF)

{

AfxMessageBox("查无此书!

请输入书名或条码无误。

");

pApp->m_pRecordset->Close();

returnfalse;

}

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选项卡,更改其“Cap

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

当前位置:首页 > 自然科学 > 物理

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

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