c++ 网上图书销售.docx

上传人:b****5 文档编号:5223527 上传时间:2022-12-14 格式:DOCX 页数:18 大小:246.02KB
下载 相关 举报
c++ 网上图书销售.docx_第1页
第1页 / 共18页
c++ 网上图书销售.docx_第2页
第2页 / 共18页
c++ 网上图书销售.docx_第3页
第3页 / 共18页
c++ 网上图书销售.docx_第4页
第4页 / 共18页
c++ 网上图书销售.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

c++ 网上图书销售.docx

《c++ 网上图书销售.docx》由会员分享,可在线阅读,更多相关《c++ 网上图书销售.docx(18页珍藏版)》请在冰豆网上搜索。

c++ 网上图书销售.docx

c++网上图书销售

网上图书销售系统

1课程设计的目的

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

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

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

2功能描述

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

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

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

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

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

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

3方案论证

3.1概要设计

模块功能分配如下:

(1)用户登陆功能:

管理员登陆模块(M1)。

(2)图书录入功能:

图书录入模块(M2)。

(3)图书销售功能:

图书销售模块(M3)。

(4)销售统计功能:

销售统计模块(M4)。

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

查询库存模块(M5)。

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

售完图书查询模块(M6)

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

3.2详细设计

3.2.1程序流程图

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

图2登录模块流程图

(2)添加图书信息,“保存”按钮对应的方法为RAddBookDlg:

:

OnSave()。

图3RAddBookDlg:

:

OnSave()方法的流程图

 

(3)实现图书销售功能,“销售”按钮对应的方法为RSaleBookDlg:

:

OnOK()。

图4RSaleBookDlg:

:

OnOK()方法的流程图

3.3.2数据描述

(1)数据库概要说明

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

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

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

图5数据表结构图

 

(2)主要数据表的结构

表1Pwd(管理员信息表)

字段名

数据类型

字段大小

描述

ID

int

4

管理员帐号

Password

nvarchar

50r

密码

表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

条形码

表3BookCategory(图书类型表)

字段名

数据类型

长度

描述

CategoryID

int

4

图书类型编号

CategoryName

nvarchar

8

图书类型名称

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

字段名

数据类型

长度

描述

ID

int

4

销售记录编号

BookID

int

4

图书编号

SalePrice

float

8

实际售价

SaleDate

smalldatetime

4

销售日期

 

4程序说明

(1)打开程序,选择“使用书店身份登录”,输入密码“111”,进入主对话框,如图所示:

图6主对话框

(2)在功能菜单下选择图书录入功能,添加一本新的图书信息,如图所示:

图7添加图书信息

 

(3)点击“返回”按钮后,系统会自动显示现有图书信息,如图所示:

图8系统自动显示现有图书信息

(4)在功能菜单下进入图书销售对话框,卖出一本《C++教程》,如图5.4。

点击返回按钮后,系统会显示当前所有图书剩余库存信息,如图所示:

图9图书销售

 

(5)点击结束销售后,系统会自动显示当前所有图书的库存信息,《C++教程》的库存量已减少一本,如图所示:

图10完成销售后的库存信息

(6)在功能菜单下进入销售统计对话框,查询全部销售清单,并给出已售出图书总本数,如图所示:

图11查询所有图书销售清单

 

(7)在功能菜单下进入查询库存对话框,查询《魅力何来》这本书的库存信息,如图所示:

图12查询图书库存信息

(8)再售出《魅力何来》2本后,在功能菜单下进入售完图书列表功能,查询已售完的图书的信息如图所示:

图13查询售完图书列表

(9)在出售图书时,若无对应图书信息或图书库存为零,将出售失败,并给出提示信息,如图所示:

图14图书销售失败

5效果及存在问题

程序还是存在一些不足之处。

比如程序没有直接提供修改密码的功能,系统管理员密码保存在数据库的Pwd表中,若要修改密码,可以到数据库中直接修改。

由于时间仓促,没有优化设计,还存在一些垃圾和重复代码,也没有进行全面的测试,需要进一步的改进。

本系统规模小,实现的功能简单,但稍加改动和完善,完全可以应用到普通书店的销售管理中。

6结果分析及心得体会

本次课程设计完成的是图书销售管理系统,我基本完成了所要求的几个功能,包括图书录入、图书销售、销售统计、查询库存等功能。

通过本次课程设计,自己对VisualC++6.0的基本知识有了一个很好的巩固和学习,特别是VisualC++6.0中的MFC,它的功能是非常强大的,使用它制作图形界面很方便。

而且自己还进一步熟悉了SQL数据库的知识,包括建表、查询、修改等操作,以及学习了VisualC++6.0怎样连接数据库。

开始做这个课程设计的时候,感觉到自己只有一些理论知识,无法动手来操作。

通过认真的学习来解决这一问题,这也提高了实际操作的能力。

在编写程序的过程中,也发现自己还是存在着很多的缺点,对VisualC++6.0和MFC的知识和使用不是很熟悉,操作数据库也不熟练,还需要自己多加练习来达到熟练的目的,以后还要努力学习锻炼自己。

首先要感谢的是本次课程设计的指导老师对我的耐心指导,我才顺利地完成了这次课程设计。

可以说这很大程度上归功于老师的帮助,这也给了我很大的鼓励,使我有信心完成该题目。

另外还要感谢的就是我的同学们,在这次课程设计中他们给了我很多细心的帮助。

参考文献

[1]揣锦华.面向对象程序设计与VC++实践.[M].西安电子科技大学出版社,2005

[2]张建宏,汤练兵,马德骏.计算机程序设计基础.[M].科学出版社,2006

[3]陈清华.VisualC++课程设计案例精选与编程指导.[M].东南大学出版社,2004

[4]陈维兴、林小茶,《C++面向对象程序设计教程》.[M].清华大学出版社

[5]谭浩强,《C语言程序设计》,清华大学出版社.[M].2000年.

[6]陈维兴、陈昕、林小茶,《C++面向对象程序设计习题解答与实验指导》,[M].

清华大学出版社,2005年

[7]刘振安、刘燕君、孙忱,《C++语言课程设计》,[M].机械工业出版社,2007年

[8]严华峰.VisualC++课程设计案例精编.[M].北京:

中国水利水电出版社,2002

[9]张宏军,党留群,赵天巨.VisualC++6.0编程案例精解.[M].北京:

电子工业出版社,2005

[10]郑阿奇,丁有和.VisualC++教程.[M].北京:

机械工业出版社,2006

 

附录:

BOOLRAddBookDlg:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

//TODO:

Addextrainitializationhere

GetBookGategory();

returnTRUE;//returnTRUEunlessyousetthefocustoacontrol

//EXCEPTION:

OCXPropertyPagesshouldreturnFALSE

}

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("保存失败!

");

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;

}

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

}

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;

}

voidCRBookSaleView:

:

OnSaleReport()

{

//TODO:

Addyourcommandhandlercodehere

RReportDlgdlg;

dlg.m_iReportType=m_iReportType;

if(IDOK==dlg.DoModal())

{

m_iReportType=dlg.m_iReportType;

//设置销售报表标题

//前2个标题类型为用户模式和书店管理模式,故此处加2

intiTitleType=0;

switch(m_iReportType)

{

case0:

//图书类型统计

iTitleType=CATEGORY_REPORT_TITLE;

break;case1:

//图书名称统计

iTitleType=BOOKNAME_REPORT_TITLE;

break;

case2:

//图书作者统计

iTitleType=AUTHOR_REPORT_TITLE;

break;

case3:

//出版社统计

iTitleType=PUBLISHER_REPORT_TITLE;

break;

case4:

//全部销售记录统计

iTitleType=SALE_REPORT_TITLE;

break;

default:

break;

}

SetTitle(iTitleType);

ShowReport();

}

}

 

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

当前位置:首页 > 高等教育 > 艺术

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

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