小型自选商场商品管理系统设计报告.docx

上传人:b****8 文档编号:9701334 上传时间:2023-02-05 格式:DOCX 页数:18 大小:524.10KB
下载 相关 举报
小型自选商场商品管理系统设计报告.docx_第1页
第1页 / 共18页
小型自选商场商品管理系统设计报告.docx_第2页
第2页 / 共18页
小型自选商场商品管理系统设计报告.docx_第3页
第3页 / 共18页
小型自选商场商品管理系统设计报告.docx_第4页
第4页 / 共18页
小型自选商场商品管理系统设计报告.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

小型自选商场商品管理系统设计报告.docx

《小型自选商场商品管理系统设计报告.docx》由会员分享,可在线阅读,更多相关《小型自选商场商品管理系统设计报告.docx(18页珍藏版)》请在冰豆网上搜索。

小型自选商场商品管理系统设计报告.docx

小型自选商场商品管理系统设计报告

一.读书笔记

当您怀疑计算机硬件是影响SQLServer运行性能的主要原因时,可以通过SQLServerPerformanceMonitor监视相应硬件的负载,以便证实您的猜测并找出系统瓶颈。

下文将介绍一些常用的分析对象及其参数。

Memory:

PageFaults/sec如果该值偶尔走高,表明当时有线程竞争内存。

如果持续很高,则内存可能是瓶颈。

Process:

WorkingSet

SQLServer的该参数应该非常接近分配给SQLServer的内存值。

在SQLServer设定中,如果将"setworkingsetsize"置为0,则WindowsNT会决定SQLServer的工作集的大小。

如果将"setworkingsetsize"置为1,则强制工作集大小为SQLServer的分配内存大小。

一般情况下,最好不要改变"setworkingsetsize"的缺省值。

Process:

%ProcessorTime

如果该参数值持续超过95%,表明瓶颈是CPU。

可以考虑增加一个处理器或换一个更快的处理器。

Processor:

%PrivilegedTime

如果该参数值和"PhysicalDisk"参数值一直很高,表明I/O有问题。

可考虑更换更快的硬盘系统。

另外设置TempdbinRAM,减低"maxasyncIO","maxlazywriterIO"等措施都会降低该值。

Processor:

%UserTime

表示耗费CPU的数据库操作,如排序,执行aggregatefunctions等。

如果该值很高,可考虑增加索引,尽量使用简单的表联接,水平分割大表格等方法来降低该值。

PhysicalDisk:

Avg.DiskQueueLength

该值应不超过磁盘数的1.5~2倍。

要提高性能,可增加磁盘注意:

一个RaidDisk实际有多个磁盘。

SQLServer:

CacheHitRatio

该值越高越好。

如果持续低于80%,应考虑增加内存。

注意该参数值是从SQLServer启动后,就一直累加记数,所以运行经过一段时间后,该值将不能反映系统当前值.

二.设计要求

小型自选商场商品管理

要求:

能对小型自选商场的商品进货、销售、库存等环节进行管理。

主要有:

1)能记录每一笔进货,查询商品的进货记录,并能按月进行统计。

2)能记录每一笔售货,查询商品的销售情况,并能进行日盘存、月盘存。

3)在记录进货及售货的同时,必须动态刷新库存。

4)能查询某个厂商或供应商的信息。

5)设计收银台程序,能根据输入的商品编号、数量,显示某顾客所购商品的清单,并显示收付款情况。

三.需求分析

1.信息要求:

库存

商品

ID

名称

型号

规格

产地

单位

定价

折扣

库存

数量

最低

存量

供应

商ID

Var

char

Var

char

Var

char

Var

char

Var

char

Float

Float

Int

Int

Var

char

售货

售货ID

商品ID

售价

数量

金额

存根号

销售日期

Varchar

Varchar

Float

Int

Float

Varchar

Varchar

进货

进货ID

商品ID

进价

数量

金额

进货日期

Varchar

Varchar

Float

Int

Float

Varchar

供应商

供应商ID

供应商名称

邮编

地址

电话

联系人

联系人电话

Varchar

Varchar

Var

char

Var

char

Varchar

Varchar

Varchar

日盘存

商品ID

售价

数量

金额

销售日期

Varchar

Float

Int

Float

Varchar

月盘存

商品ID

售价

数量

金额

Varchar

Float

Int

Float

四.数据库设计

1.概念结构设计E-R图

2.逻辑结构设计

库存(商品ID、名称、型号规格、产地、单位、定价、折扣率、库存数量、最低存量、供应商ID)

售货(售货ID、商品ID、售价、数量、金额、存根号、销售日期)

进货(进货ID、商品ID、进价、数量、金额、进货日期)

供应商(供应商ID、供应商名称、邮编、地址、电话、联系人、联系人电话)

日盘存(售货ID、商品ID、售价、数量、金额,销售日期)

月盘存(售货ID、商品ID、售价、数量、金额)

五.开发方案的选择

工具:

MSSQLServer2000,MSVisualStadio6.0

方案:

前台收银台程序与后台数据管理集成在一个应用程序中,便于管理员管理.

六.前台应用设计

前台应用程序的设计采用VC6.0提供的MFC工具.生成的工作界面如下:

1.软件主界面

2.库存记录查询

3.日盘存

4.进货记录查询

5.进货月统计

6.收银台

7.售货记录查询

8.供应商信息查询

收银台有关代码:

//下面是收银台中控件”下一个”的有关代码,其中对数据库中几乎所有的表都进行了操作.voidSRecord:

:

OnSsaveButton()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CStringSaleID="",GoodsID="2",Price="2",Count="2",Acount="2",StubNumber="",Date="";

CStringsql;

intgcount=0;

floatprice=0,acount=0;

CDataManagedm;

/***********************************************************/

/*GoodsID*/

m_GoodsID.GetWindowText(GoodsID);

if(GoodsID.GetLength()==0)

{

MessageBox("请输入数据","提示");

return;

}

/*SaleID*/

/**************************************************/

try

{

dm.ConnectDataBase();

Record1->Open(_variant_t("Sale"),

_variant_t((IDispatch*)DataConn,true),adOpenKeyset,

adLockOptimistic,adCmdTable);

}

catch(_com_error&e)

{

MessageBox(e.ErrorMessage(),"提示");

}

/*****************************************/

sql.Format("selectSaleIDfromSale");

try

{

Record1->raw_Close();

Record1-

>Open((_variant_t)sql,DataConn.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);

}

catch(_com_error&e)

{

MessageBox(e.ErrorMessage(),"提示");

}

if(Record1->RecordCount>0)

{

Record1->MoveLast();

SaleID=(TCHAR*)(_bstr_t)Record1->GetFields()->GetItem((long)0)->Value;

intsaleid=atoi(SaleID);

saleid+=1;

SaleID.Format("%d",saleid);

}

else

{

SaleID="20060001";

}

/*Price*/

/**************************************************/

try

{

dm.ConnectDataBase();

Record1->Open(_variant_t("Storage"),

_variant_t((IDispatch*)DataConn,true),adOpenKeyset,

adLockOptimistic,adCmdTable);

}

catch(_com_error&e)

{

MessageBox(e.ErrorMessage(),"提示");

}

/*****************************************/

sql.Format("selectGoodsPricefromStoragewhereGoodsID=%s",GoodsID);

try

{

Record1->raw_Close();

Record1-

>Open((_variant_t)sql,DataConn.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);

}

catch(_com_error&e)

{

MessageBox(e.ErrorMessage(),"提示");

}

if(Record1->RecordCount>0)

{

Price=(TCHAR*)(_bstr_t)Record1->GetFields()->GetItem((long)0)->Value;

price=(float)atof(Price);

}

else

{

MessageBox("库存中没有此种商品","提示");

return;

}

/*Count*/

m_Count.GetWindowText(Count);

gcount=atoi(Count);

/*Acount*/

acount=gcount*price;

pay+=acount;

/*StubNumber*/

StubNumber=SaleID;

/*Date*/

intyear,month,day;

CStringdate;

CTimet=CTime:

:

GetCurrentTime();

year=t.GetYear();

month=t.GetMonth();

day=t.GetDay();

Date.Format("%d/%d/%d",year,month,day);

/*********插入到ListControl中*****************************************/Acount.Format("%f",acount);

m_SRList.InsertItem(100,"");

m_SRList.SetItemText(row,0,GoodsID);

m_SRList.SetItemText(row,1,Count);

m_SRList.SetItemText(row,2,Acount);

row++;

/****************售货记录插入*******************************/sql.Format("insertintoSale

values('%s','%s','%f','%d','%f','%s','%s')",SaleID,GoodsID,price,gcount,acount,StubNumber,Date);

/**************************************************/

try

{

dm.ConnectDataBase();

Record1->Open(_variant_t("Sale"),

_variant_t((IDispatch*)DataConn,true),adOpenKeyset,

adLockOptimistic,adCmdTable);

}

catch(_com_error&e)

{

MessageBox(e.ErrorMessage(),"提示");

}

/*****************************************/

try

{

dm.ExecSQL(sql);

//this->MessageBox("操作成功","提示");

}

catch(_com_error&e)

{

this->MessageBox(e.ErrorMessage(),"出错提示");

}

/****************日盘存记录修改********************/

CStringtemp1="",temp2="";

Record1->raw_Close();

sql.Format("select*fromDayStoragewhereGoodsID=%s",GoodsID);

Record1-

>Open((_variant_t)sql,DataConn.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);

if(Record1->RecordCount>0)

{

temp1=(TCHAR*)(_bstr_t)Record1->GetFields()->GetItem((long)2)->Value;

temp2=(TCHAR*)(_bstr_t)Record1->GetFields()->GetItem((long)3)->Value;

intaddcount=atoi(temp1);

floataddacount=(float)atof(temp2);

addcount+=gcount;

addacount+=acount;

sql.Format("updateDayStoragesetGoodsCount=%d,GoodsAcount=%fwhere

GoodsID=%s",addcount,addacount,GoodsID);

try

{

dm.ExecSQL(sql);

}

catch(_com_error&e)

{

this->MessageBox(e.ErrorMessage(),"出错提示");

}

}

else

{

sql.Format("insertintoDayStorage

values('%s','%f','%d','%f','%s')",GoodsID,price,gcount,acount,Date);

try

{

dm.ExecSQL(sql);

}

catch(_com_error&e)

{

this->MessageBox(e.ErrorMessage(),"出错提示");

}

}

/*****************月盘存记录修改***********************/Record1->raw_Close();

sql.Format("select*fromMonthStoragewhereGoodsID=%s",GoodsID);

Record1-

>Open((_variant_t)sql,DataConn.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);

if(Record1->RecordCount>0)

{

temp1=(TCHAR*)(_bstr_t)Record1->GetFields()->GetItem((long)2)->Value;

temp2=(TCHAR*)(_bstr_t)Record1->GetFields()->GetItem((long)3)->Value;

intaddcount=atoi(temp1);

floataddacount=(float)atof(temp2);

addcount+=gcount;

addacount+=acount;

sql.Format("updateMonthStoragesetGoodsCount=%d,GoodsAcount=%fwhere

GoodsID=%s",addcount,addacount,GoodsID);

try

{

dm.ExecSQL(sql);

}

catch(_com_error&e)

{

this->MessageBox(e.ErrorMessage(),"出错提示");

}

}

else

{

sql.Format("insertintoMonthStorage

values('%s','%f','%d','%f')",GoodsID,price,gcount,acount);

try

{

dm.ExecSQL(sql);

}

catch(_com_error&e)

{

this->MessageBox(e.ErrorMessage(),"出错提示");

}

}

/*****************库存修改*****************************/

CStringtemp="";

Record1->raw_Close();

sql.Format("selectStorageCountfromStoragewhereGoodsID=%s",GoodsID);

Record1-

>Open((_variant_t)sql,DataConn.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);

temp=(TCHAR*)(_bstr_t)Record1->GetFields()->GetItem((long)0)->Value;

if(temp.GetLength()>0)

{

Record1->raw_Close();

inttCount=atoi(temp);

tCount-=gcount;

sql.Format("updateStoragesetStorageCount=%dwhere

GoodsID=%s",tCount,GoodsID);

try

{

dm.ExecSQL(sql);

}

catch(_com_error&e)

{

this->MessageBox(e.ErrorMessage(),"出错提示");

}

}

/**************************************************/

m_GoodsID.SetWindowText("");

m_Count.SetWindowText("");

}

七.参考资料

1.数据库系统概论萨师煊王珊高等教育出版社

2.VisualC++实用教程郑阿奇电子工业出版社

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

当前位置:首页 > 高等教育 > 经济学

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

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