数据库超市前台销售系统课程设计.docx
- 文档编号:5416290
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:23
- 大小:1.11MB
数据库超市前台销售系统课程设计.docx
《数据库超市前台销售系统课程设计.docx》由会员分享,可在线阅读,更多相关《数据库超市前台销售系统课程设计.docx(23页珍藏版)》请在冰豆网上搜索。
数据库超市前台销售系统课程设计
目录
1、绪论
1.1开发背景------------------------------------------------1
1.2开发工具------------------------------------------------1
2、需求分析
2.1具体分析------------------------------------------------2
2.2系统流程图----------------------------------------------4
3、总体设计
3.1概念结构设计-------------------------------------------5
3.2逻辑结构设计--------------------------------------------5
3.3物理结构设计--------------------------------------------6
4、详细设计
4.1销售系统---------------------------------------------------8
4.2营业统计---------------------------------------------------12
4.3进货---------------------------------------------------------17
5、结论-----------------------------------------------17
6、致谢------------------------------------------------17
7、参考文献------------------------------------------17
一、绪论
1、开发背景
21世纪,超市的竞争也进入到了一个全新的领域,竞争已不再是规模的竞争,而是技术的竞争、管理的竞争、人才的竞争。
技术的提升和管理的升级是连锁超市业的竞争核心。
零售领域目前呈多元发展趋势,多种业态:
超市、仓储店、便利店、特许加盟店、专卖店、货仓等相互并存。
如何在激烈的竞争中扩大销售额、降低经营成本、扩大经营规模,成为××超市努力追求的目标。
随着现代科学技术的迅猛发展,计算机技术已经渗透到各个领域,成为各行业必不可少的工具,特别是Internet技术的推广和信息高速公路的建立,使IT产业在市场竞争中越发显示出其独特的优势,步入信息化时代,有巨大的数据信息等待加工处理和传输,这使得对书数据库的进一步开发和利用显得尤为迫切。
作为国内市场的一些中小型超市,它们在信息化过程中的步伐要落后于大中型超市,而对于这些企业的资源管理,信息的存储和处理也显得迫切需要,要适应市场竞争,就需要有高效的处理方式和管理方法,因此加快超市的信息化进程是必可少的。
我们通过对市场的调查,针对现在各中小型超市对经营业务和人事管理的实际需要,开发了这套超市管理系统。
在开发过程中,我们针对当前各超市管理的特点和技术人员的实际水平,采用基于Windows图形用户界面这一易学易用的操作环境,在系统设计过程中,我们尽量采用易懂易读的人机界面,使用户可以在短期内完全掌握。
我们又始终发系统的正确性放在首位,力求数据的完整和处理的正确性。
在此基础上优化程序代码,加速系统运行和减少对系统资源的占用。
2、开发工具
硬件:
装有windows操作系统的计算机
软件:
SQLServer2008及C++Builder
二、需求分析
经过我们的调查发现,××超市在物流管理方面,仍使用传统的人工管理模式,浪费人力资源,效率低,准确率低。
有些商品紧缺,顾客要排队购买或商品供不应求,使顾客大为不满,还有一些商品,长期积压,损坏严重,造成重大经济损失,引起销售人员的极大不满,以多次向超市管理人员反映,但此类问题仍屡屡发生,得不到根本性的解决,管理者想看员工信息时不能及时找到员工的信息,还有会员管理,每个管理者最想知道的就是收益了,可以详细查看支出和收益,已引起总经理的高度重视。
一个大型超市,它的物流管理势必非常复杂,如果没有一个强大的信息系统来支持,那么就会造成一部分商品大量积压,而另一些商品供不应求的局面,这种局面必然会给超市带来巨大的经济损失。
有些超市为了避免这样的情况发生,就会对物流管理投入大量的人力。
虽然这样解决了物流方面的问题,但是这又有悖于管理学的原则,效率低,浪费了人力资源,解决不了根本性的问题。
一、仓库管理系统
1、进货管理
♦建议进货数量:
为一段时间内销售商品的数量排行,为进货员进货提供参考。
♦退货给供应商:
通过顾客的退货情况把有瑕疵的商品退给相应的供应商。
♦进货记录:
每一次进货会产生一个记录,把进货情况记录好。
2、商品管理
♦修改商品:
主要修改商品的价格跟数量。
♦删除商品:
删除一些行情不好的商品。
♦查找商品:
查找一个商品。
♦商品拆解:
比如把一件啤酒拆解为几瓶啤酒。
3、供货商管理
♦添加:
添加一个供应商
♦修改:
修改供应商的信息
♦删除:
删除供应商信息
♦查找:
查找供应商信息
二、销售系统
1、收银系统
♦顾客通过扫描条形码购买商品
♦销售同时统计卖出各商品的总数
♦统计当天销售额
♦收银员可以通过库存量反馈给进货员
♦同时记录各个收银员的营业额
♦办理退货:
为顾客办理退货,当退货有瑕疵时,库存量不增加。
2、会员管理
♦添加
♦修改
♦删除
♦查找
三、财务管理
♦进货明细:
统计一下一段时间内进货的详细情况;
♦销售明细:
销售人员销售的详细明细;
♦查看当日的营业额、月利润等
♦各种原因导致的效益损失
♦销售数量的排行
♦销售商品金额排行
四、用户管理
1、用户权限管理
♦添加:
有新员工时添加员工。
♦修改:
修改员工的信息。
主要是权限
♦删除:
删除员工的信息
♦给不同的人分配不同的权限
2、员工管理
♦收银员业绩
♦查看员工情况
♦添加员工
♦修改员工的信息
♦删除员工
三、总体设计
1、功能示意图
图1、系统概念图
2、流程图
图2系统流程图
3、界面设计
登陆界面
最高权限界面
收银界面
进货管理界面
用户管理界面
营业统计界面
四、数据库设计
1、概念结构设计
ER图建立是在需求分析的基础上实现的。
超市的管理者可以给其员工分配权限。
销售人员销售的时候有一个临时销售订单,每个临时订单又组成了销售明细。
进货也是一样。
临时的进货订单组成了进货明细。
供应商为超市供应商品。
顾客退货给超市。
VIP属于顾客。
员工从超市领取工资。
图3ER图
2、逻辑结构设计
员工(员工号,员工姓名,电话,职位)
商品(商品号,商品名称,商品规格,成本价,销售价,库存数量)
Vip(Vip号,姓名,会员类型,会员折扣)
销售记录1(订单号,商品号,销售数量,总金额)
销售记录2(订单号,日期,会员号,员工号)
销售记录3(商品号,商品名,规格,单价)·
退货1(订单号,商品号,日期,数量,退货金额)
退货2(退货号,订单号,退货类型)
进货单1(商品号,商品名称,规格,)
进货单2(订单号,商品号,日期,数量,进货价,总价)
用户权限(用户名,密码,权限)
工资(员工号,员工姓名,工作天数,总工资)
供应商(供应商号,供应商名称,地址,联系人,电话)
供应(供应商号,商品号,)
订单(商品号,商品名称,规格,销售价,数量,金额)(临时的。
每次销售完会删除表的内容)
3、物理结构设计
3.1、商品表
属性
类型
备注
商品号(productnumber)
varchar(20)
主键
商品名称(productname)
varchar(50)
商品规格
(ProductSpecifications)
varchar(50)
成本价(CostPrice)
money
销售价(SellingPrice)
money
库存量(Inventory)
int
单位(Unit)
char
3.2、销售记录2表
属性
类型
备注
订单号(ono)
Varchar(20)
主键
日期(odate)
date
会员号(vno)
varchar(50)
员工号(Eno)
varchar(50)
折扣(zhekou)
float
不得大于一
2.会员表
属性
类型
备注
会员号(vno)
varchar(20)
主键
会员姓名(vname)
varchar(20)
会员类型(Vtype)
varchar(20)
会员折扣(Vdiscount)
varchar(20)
不得大于一
(4)数据库截图
五、详细设计
编写的一个连接数据库的类,以后连接数据库的时候直接调用这个类就可以了。
DBManager*DBManager:
:
getInstance()
{
if(_instance==0)
_instance=newDBManager();
return_instance;
}
TADOConnection*DBManager:
:
getConnection()
{
try{
TADOConnection*conn=newTADOConnection(NULL);
conn->ConnectionString="Provider=SQLOLEDB.1;Password=911109;PersistSecurityInfo=True;UserID=sa;InitialCatalog=超市前台";
conn->LoginPrompt=False;
conn->Open();
returnconn;
}
catch(Exception&e){
//登记日志,抛出错误
throwe;
}
}
1、销售系统
图5.1收银界面
1.1、收银时销售人员输入商品号跟数量点击“添加”键确定输入。
1.2、当订单这个表有已经买的商品时,再输入这个商品号时只增加这个商品的数量跟总金额。
1.3.要是有会员输入会员号,直接出来折扣
1.4、收款为空时。
确认交易不能点击,只有输入钱数时才能点击。
当点击确认交易后,整个表会清空,全部初始化、同时销售会记录到销售记录中。
1.5.在收银界面下面用一个STatusbar控件,来显示时间以及销售人员的信息。
1.6下面代码是把销售的记录保存起来,为营业统计的销售记录;
AnsiStrings1,s2,s3,s4,s5,s6,s7;Doubled5;
TADOConnection*conn=DBManager:
:
getInstance()->getConnection();
TADOQuery*qy=newTADOQuery(NULL);
qy->Connection=conn;
qy->Close();
qy->SQL->Clear();
qy->SQL->Add("select*fromproductwhereproductnumber='"+Edit1->Text+"'");
qy->Open();
if(!
qy->Eof)
{
ShowMessage(qy->FieldByName("productnumber")->AsString);
s1=qy->FieldByName("productnumber")->AsString;
s2=qy->FieldByName("productname")->AsString;
s3=qy->FieldByName("ProductSpecifications")->AsString;
s4=qy->FieldByName("SellingPrice")->AsString;
s6=Label14->Caption;
s5=Edit4->Text;
try
{
s5=Edit4->Text;
}
catch(EConvertError&e)
{
ShowMessage("数量不能为空或字符串");
}
s7=s6.ToDouble()*s5.ToDouble()*s4.ToDouble();
qy->Close();
qy->SQL->Clear();
qy->SQL->Add("select*fromdingdanwhereproductnumber='"+Edit1->Text+"'");
qy->Open();
if(qy->FieldByName("productname")->AsString!
="")
{
qy->Close();
qy->SQL->Clear();
qy->SQL->Add("updateproductsetInventory=Inventory-"+s5+"whereproductnumber='"+Edit1->Text+"'");
qy->ExecSQL();
qy->SQL->Clear();
qy->SQL->Add("updatedingdansetshuliang=shuliang+'"+Edit4->Text+"'whereproductnumber='"+Edit1->Text+"'");
qy->SQL->Add("updatedingdansetjine=jine+'"+s7+"'whereproductnumber='"+Edit1->Text+"'");
qy->ExecSQL();
qy->Close();
qy->SQL->Clear();
qy->SQL->Add("select*fromdingdanwhereproductnumber='"+Edit1->Text+"'");
qy->Open();
s5=qy->FieldByName("shuliang")->AsString;
s7=qy->FieldByName("jine")->AsString;
qy->Close();
qy->SQL->Clear();
qy->SQL->Add("updateorder1setsales="+s5+"whereproductnumber='"+Edit1->Text+"'");
qy->SQL->Add("updateorder1setsummoney="+s7+"whereproductnumber='"+Edit1->Text+"'");
qy->ExecSQL();
}
else
{qy->SQL->Add("insertintodingdan(productnumber,productname,ProductSpecifications,SellingPrice,shuliang,jine)values(");
qy->SQL->Add("'"+s1+"',");
qy->SQL->Add("'"+s2+"',");
qy->SQL->Add("'"+s3+"',");
qy->SQL->Add("'"+s4+"',");
qy->SQL->Add("'"+s5+"',");
qy->SQL->Add("'"+s7+"')");
qy->ExecSQL();
qy->Close();
qy->SQL->Clear();
qy->SQL->Add("insertintoorder1(ono,productnumber,sales,summoney)values(");
qy->SQL->Add("'"+Label17->Caption+"',");
qy->SQL->Add("'"+s1+"',");
qy->SQL->Add("'"+s5+"',");
qy->SQL->Add("'"+s7+"')");
qy->ExecSQL();
qy->Close();
qy->SQL->Clear();
qy->SQL->Add("updateproductsetInventory=Inventory-"+s5+"whereproductnumber='"+Edit1->Text+"'");
qy->ExecSQL();
}
}
TADODataSet*da=newTADODataSet(NULL);
da->Connection=conn;
da->CommandText="selectproductnumber,productname,ProductSpecifications,SellingPrice,shuliang,jinefromdingdan";
da->Open();
inti=1;
while(!
da->Eof)
{
for(intj=1;j<=da->FieldCount;j++)
StringGrid1->Cells[j-1][i]=da->Fields->Fields[j-1]->AsString;
i++;
da->MoveBy
(1);
}
qy->Close();
qy->SQL->Clear();
qy->SQL->Add("select*fromding");
qy->Open();
Label6->Caption=qy->FieldByName("zong")->AsString;
Edit1->Clear();
Edit4->Clear();
Label8->Caption=da->RecordCount;
2、营业统计
图5.2营业统计
2.1、可以查看销售记录以及销售记录排行、销售金额排行、进货明细、以及退货明细、当天的销售金额。
2.2、可以显示全部的信息,也可以查看那一天的信息。
选择日期然后点击显示全部。
2.3、显示的销售记录排行为进货的时候提供了参考。
2.4、下面代码是点击刷新时显示的那一天的信息。
intx=1;
while(x<50)
{
for(intj=1;j<=12;j++)
{StringGrid1->Cells[j-1][x]="";
StringGrid2->Cells[j-1][x]="";
StringGrid3->Cells[j-1][x]="";
StringGrid4->Cells[j-1][x]="";
StringGrid5->Cells[j-1][x]="";}
x++;
}
StringGrid4->Cells[0][0]="日期";
StringGrid4->Cells[1][0]="订单号";
StringGrid4->Cells[2][0]="商品号";
StringGrid4->Cells[3][0]="商品名称";
StringGrid4->Cells[4][0]="商品规格";
StringGrid4->Cells[5][0]="类型";
StringGrid4->Cells[6][0]="找零";
StringGrid1->Cells[0][0]="销售日期";
StringGrid1->Cells[1][0]="订单号";
StringGrid1->Cells[2][0]="商品号";
StringGrid1->Cells[3][0]="商品名称";
StringGrid1->Cells[4][0]="商品规格";
StringGrid1->Cells[5][0]="成本价";
StringGrid1->Cells[6][0]="销售价";
StringGrid1->Cells[7][0]="会员号";
StringGrid1->Cells[8][0]="员工号";
StringGrid1->Cells[9][0]="数量";
StringGrid1->Cells[10][0]="金额";
StringGrid2->Cells[0][0]="销售日期";
StringGrid2->Cells[1][0]="商品号";
StringGrid2->Cells[2][0]="商品名称";
StringGrid2->Cells[3][0]="商品规格";
StringGrid2->Cells[4][0]="数量";
StringGrid3->Cells[0][0]="销售日期";
StringGrid3->Cells[1][0]="商品号";
StringGrid3->Cells[2][0]="商品名称";
StringGrid3->Cells[3][0]="商品规格";
StringGrid3->Cells[4][0]="总价";
StringGrid5->Cells[0][0]="进货日期";
StringGrid5->Cells[1][0]="进货号";
StringGrid5->Cells[2][0]="供应商号";
StringGrid5->Cells[3][0]="供应商名称";
StringGrid5->Cells[4][0]="供应商联系人";
StringGrid5->Cells[5][0]="联系电话";
StringGrid5->Cells[6][0]="商品号";
StringGrid5->Cells[7][0]="商品名称";
StringGrid5->Cells[8][0]="商品规格";
StringGrid5->Cells[9][0]="进货价";
StringGrid5->Cells[10][0]="数量";
StringGrid5->Cells[11][0]="总价格";
TADOConnection*conn=DBManager:
:
getInstance()->getConnection();
TADODataSet*da=newTADODataSet(NULL);
da->Connection=conn;
da->CommandText="selectodate,order1.ono,product.productnumber,productname,ProductSpecifications,CostPrice,SellingPrice,vno,eno,sales,summoneyfromorder2,order1,productwhereorder2.ono=order1.onoandproduct.productnumber=order1.productnumberandodate='"+ComboBox1->Items->Strings[ComboBox1->ItemIndex]+"'";
da->Open();
intm=da->RecordCount+1;
inti=1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 超市 前台 销售 系统 课程设计