网上图书销售系统数据库课程设计报告.docx
- 文档编号:8843826
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:30
- 大小:592.86KB
网上图书销售系统数据库课程设计报告.docx
《网上图书销售系统数据库课程设计报告.docx》由会员分享,可在线阅读,更多相关《网上图书销售系统数据库课程设计报告.docx(30页珍藏版)》请在冰豆网上搜索。
网上图书销售系统数据库课程设计报告
数学与盘算机学院
课程设计说明书
课程名称:
数据库-课程设计
课程代码:
题目:
网上图书销售系统-实现前台
年级/专业/班:
学生姓名:
学 号:
开始时间:
2013年6月9日
完成时间:
2013年6月21日
课程设计结果:
学习态度及平时结果(30)
技能水平与实际能力(20)
创新(5)
说明书撰写质量(45)
总分(100)
指导西席签名:
年月日
摘要
随着盘算机的普及书店范围的不停扩大,使图书销售治理成为书店治理中的一个重要课题。
通过图书销售治理系统可以解决书店治理中遇到的种种问题。
本系统阐发了市场需求和实际需要,利用VC++连接SQL数据库的方法,主要实现了书店的网上图书销售治理,该系统具有处置惩罚图书录入、图书销售、销售统计、查询库存等功效。
要害词:
图书;销售;库存
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
8
图书类型名称
表2.4BookSale(图书销售记载表)
字段名
数据类型
长度
描述
ID
int
4
销售记载编号
BookID
int
4
图书编号
SalePrice
float
8
实际售价
SaleDate
smalldatetime
4
销售日期
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接口设计
(1)用户界面
接纳图形用户界面,包罗菜单、按钮、对话框等元素。
(2)软件接口
软件运行于VisualC++6.0平台上。
(3)硬件接口
运行于PC机上。
(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.4所示。
“生存”按钮对应的要领为RAddBookDlg:
:
OnSave(),流程图如图4.5所示。
图4.4图书录入对话框
图4.5RAddBookDlg:
:
OnSave()要领的流程图
(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退出
(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.6所示。
“销售”按钮对应的要领为RSaleBookDlg:
:
OnOK(),流程图如图4.7所示。
图4.6图书销售对话框
图4.7RSaleBookDlg:
:
OnOK()要领的流程图
(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退出
(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(),
adOpenDynamic,
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.8所示。
图4.8销售统计对话框
(1)向项目中添加一个新Dialog资源,资源ID为IDD_REPORT。
在IDD_REPORT对话框资源中单击鼠标右键,执行弹出快捷菜单的“Properties”菜单命令,打开“DialogProperties”对话框。
在“DialogProperties”对话框中选择General选项卡,变动其“Caption”文本框内容为“销售统计”。
(2)从Controls面板上向Dialog资源中添加相
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网上 图书 销售 系统 数据库 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)