c++ 网上图书销售Word文档格式.docx
- 文档编号:18198228
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:18
- 大小:246.02KB
c++ 网上图书销售Word文档格式.docx
《c++ 网上图书销售Word文档格式.docx》由会员分享,可在线阅读,更多相关《c++ 网上图书销售Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
(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
图书编号
BookName
50
图书名称
CategoryID
图书类型编号
Author
作者
Publisher
出版社
PublishDate
smalldatetime
出版日期
Purchase
float
8
进价
Price
售价
Stock
库存本数
Discount
折扣
BarCode
条形码
表3BookCategory(图书类型表)
长度
CategoryName
图书类型名称
表4BookSale(图书销售记录表)
销售记录编号
SalePrice
实际售价
SaleDate
销售日期
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()
Addyourcontrolnotificationhandlercodehere
UpdateData(TRUE);
if(!
IsValidInput())
return;
if(IDYES!
=AfxMessageBox("
确定要保存吗?
"
MB_YESNO))//放弃保存
if(SaveData())
{
AfxMessageBox("
保存成功!
);
//保存后重置数据
m_bHasNewBook=true;
OnReset();
GetDlgItem(IDC_BK_CATEGORY)->
SetFocus();
}
else
保存失败!
boolRAddBookDlg:
IsValidInput()
CStringstr="
0123456789"
;
if(m_strBookCategory.IsEmpty()||m_strBookCategory.FindOneOf(str)!
=-1)
输入有误!
图书类型不能为空或包含数字。
returnfalse;
if(m_strBookName.IsEmpty())
书名不能为空。
GetDlgItem(IDC_BK_NAME)->
if(m_strAuthor.IsEmpty()||m_strAuthor.FindOneOf(str)!
作者名称不能为空或包含数字。
GetDlgItem(IDC_BK_AUTHOR)->
if(m_strPublisher.IsEmpty()||m_strPublisher.FindOneOf(str)!
出版社名称不能为空或包含数字。
GetDlgItem(IDC_BK_PUBLISHER)->
if(m_dPurchase<
=0)
图书进价应为正值!
GetDlgItem(IDC_BK_PURCHASE)->
if(m_dPrice<
=0)
图书售价应为正值!
GetDlgItem(IDC_BK_PRICE)->
if(m_lDiscount<
0||m_lDiscount>
100)
图书折扣应为0-100之间正值!
GetDlgItem(IDC_BK_DISCOUNT)->
if(m_lStock<
1)
图书数量应为正值!
GetDlgItem(IDC_BK_STOCK)->
if(m_strBarcode.IsEmpty()||m_strBarcode.GetLength()>
15)
条形码应为15位整数!
GetDlgItem(IDC_BK_BARCODE)->
//AfxMessageBox(m_strBookName+"
\r\n"
+
//m_strBookCategory+"
//m_strAuthor+"
//m_strPublisher+"
//m_strBarcode);
returntrue;
voidRSaleBookDlg:
OnOK()
Addextravalidationhere
m_bReadySale)
m_bReadySale=FindBook();
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)->
m_editDiscount.EnableWindow(FALSE);
//CDialog:
OnOK();
boolRSaleBookDlg:
FindBook()
CStringstrSql;
_variant_tvar;
doubledPurchase;
m_strBookName.IsEmpty())
strSql.Format("
SELECT*FROMBookInfoWHEREBookName=\"
%s\"
andStock>
0"
m_strBookName);
elseif(!
m_strBarCode.IsEmpty())
SELECT*FROMBookInfoWHEREBarCode=\"
m_strBarCode);
请输入书名或条码!
CRBookSaleApp*pApp=(CRBookSaleApp*)AfxGetApp();
try
pApp->
m_pRecordset->
Open(strSql.AllocSysString(),
pApp->
m_pConnection.GetInterfacePtr()adLockOptimistic,
adCmdText);
if(pApp->
adoEOF)
AfxMessageBox("
查无此书!
请输入书名或条码无误。
pApp->
Close();
returnfalse;
var=pApp->
GetCollect("
BookID"
if(var.vt!
=NULL)
m_lBookID=var.lVal;
Discount"
m_lDiscount=var.lVal;
Price"
m_dPrice=var.dblVal;
Purchase"
dPurchase=var.dblVal;
CategoryID"
m_lCategory=var.lVal;
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);
}
voidCRBookSaleView:
OnSaleReport()
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;
case2:
//图书作者统计
iTitleType=AUTHOR_REPORT_TITLE;
case3:
//出版社统计
iTitleType=PUBLISHER_REPORT_TITLE;
case4:
//全部销售记录统计
iTitleType=SALE_REPORT_TITLE;
default:
SetTitle(iTitleType);
ShowReport();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 网上图书销售 网上 图书 销售