《超市前台销售系统-数据库课程设计说明书.docx》由会员分享,可在线阅读,更多相关《超市前台销售系统-数据库课程设计说明书.docx(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、河南科技大学课 程 设 计 说 明 书 课程名称 数据库课程设计 题 目 超市前台销售系统 院 系 电子信息工程学院 课程设计任务书课程设计题目超市前台销售系统姓名学号10104060213专业班级计科组别2012102-2组长同组成员 指导教师课程设计目的通过本课程设计,使学生巩固数据库系统的基本概念、原理和技术,学会使用某一开发工具进行数据库设计和开发,将理论与实际相结合,完成一个小型数据库的设计与实现,并在此基础上强化学生的实践意识,提高其实际动手能力和创新能力。课程设计环境硬件:装有windows操作系统的计算机软件:SQL Server 2008 及c+Builder课程设计任务和要
2、求任务:1.进行超市前台销售系统的概念结构设计、逻辑结构设计和物理结构设计;2.设计并实现超市前台销售系统的收银业务模块。要求:1.模块功能满足需求说明、保证一定性能要求。2.撰写出符合要求的课程设计报告。参考文献时 间 进 度 安 排序号起止日期工 作 内 容12012-5-28讲授ER模型的设计,学生分组22012-5-292012-5-31概念结构和逻辑结构设计,形成数据库文件,建立模块化结构,组内学生分工32012-6-1讲授开发工具的使用,学生进行功能模块设计42012-6-42012-6-7编码、测试52012-6-8形成课程设计文档内容及格式撰写要求,讲授文档撰写方法,撰写课程设
3、计报告62011-6-11验收程序,上交课程设计报告指导教师签字: 2012 年 5 月 4 日目 录前言1第一章 绪论错误!未定义书签。 1.1社会背景错误!未定义书签。 1.2超市背景.错误!未定义书签。第二章 需求分析错误!未定义书签。 2.1业务陈述错误!未定义书签。 2.2总体需求分析错误!未定义书签。 2.3功能实现错误!未定义书签。 2.4业务规则错误!未定义书签。 2.5相关说明错误!未定义书签。 2.6主要用户试图需求错误!未定义书签。第三章 总体设计错误!未定义书签。 3.1系统的结构图错误!未定义书签。 3.2功能的操作流程的描述错误!未定义书签。 3.3安全设计错误!未
4、定义书签。第四章 数据库设计错误!未定义书签。 4.1概念结构设计错误!未定义书签。 4.2逻辑结构设计错误!未定义书签。 4.3物理结构设计错误!未定义书签。第五章 详细设计错误!未定义书签。第六章 编码错误!未定义书签。 6.1功能核心代码错误!未定义书签。 6.2运行截图错误!未定义书签。第七章 结论错误!未定义书签。其它错误!未定义书签。前言超市需要处理大量的库存信息,还要时刻更新产品的销售信息,不断添加商品信息。面对不同种类的信息,需要合理的数据库结构来保存数据信息,需要有效的程序结构支持各种数据操作的执行。商店自动化的产品管理在欧美等国家早已经实现,也是零售业管理的基础。它最主要的
5、特点是能够实时的和准确的控制店内的销售情况。如果可以能够实时掌握销售流程及销售情况,则可以有效地加速商品的周转率并提高服务质量,而且可以减少产品售价不符等所产生的问题。顾客的消费要求的是希望在超市购物中能基本上都能购得所需的商品,并且还要既保证商品质量还要享受优质,方便的服务。第一章 绪论1.1 社会背景随着现代科学技术的迅猛发展,计算机技术已经渗透到哥哥领域,成为各行业必不可少的工具,特别是Internet技术的推广和信息高速公路的建立,使IT产业在市场竞争中越发显示出其独特的优势,步入信息化时代,有巨大的数据信息等待加工处理和传输,这使得对书数据库的进一步开发和利用显得尤为迫切。作为国内市
6、场的一些中小型超市,它们在信息化过程中的步伐要落后于大中型超市,而对于这些企业的资源管理,信息的存储和处理也显得迫切需要,要适应市场竞争,就需要有高效的处理方式和管理方法,因此加快超市的信息化进程是必可少的。实习期间,我们通过对市场的调查,针对现在各中小型超市对经营业务和人事管理的实际需要,开发了这套超市管理系统。在开发过程中,我们针对当前各超市管理的特点和技术人员的实际水平,采用基于Windows图形用户界面这一易学易用的操作环境,在系统设计过程中,我们尽量采用易懂易读的人机界面,使用户可以在短期内完全掌握。我们又始终发系统的正确性放在首位,力求数据的完整和处理的正确性。在此基础上优化程序代
7、码,加速系统运行和减少对系统资源的占用。1.2 超市背景在我国超市形成在20世纪90年代初期,现在已经成为我国零售业的一种重要形态,为国民经济的发展发挥了重要的作用。随着超市高速的发展,其经营管理也变得愈加复杂,早期的售货员站柜台的形式早已不能满足现有销售也的发展,这样就迫切地需要引入新的管理技术。超市形态具有种种优点,但在目前状况下,它仍存在零售业企业所共有的落后的一面,如:不能有效地管理每种商品,收款结算速度慢,容易出现营业差错,不宜进行商品调价,盘点效率低等,而且在超市日常管理中,商品的进、销、存等决策以经验为主,缺乏实时分析功能,管理人员对及时传递资料的要求始终得不到满足。苏辙超市形态
8、的高速发展,其经营管理也变得愈加复杂,日常所需要处理的数据量也逐渐增大,商业运转的中间环节也越来越多,原始的人工管理已无法应对这复杂的市场。为此,在选题过程中,我选择了超市管理系统设计题目,依靠现代化的计算机信息处理技术来管理超市,从而节省了大量的人力、物力,改善了员工的工作条件,减轻了劳动强度,并且能够快速反映出商品的进、销、存等状况和各种反馈信息分析,使管理人员快速对市场的变化做出相应的决策,加快超市经营管理效率。第二章 需求分析2.1 任务陈述任务陈述:前台销售数据库的目的是收集、存储和管理商品的信息,分析超市的销售状况,支持办理会员卡,代金卡,退货等业务,支持会员卡和代金卡的信息管理。
9、大大提高超市的运作效率;通过全面的信息采集和处理,辅助提高超市的决策水平。2.2总体需求分析:超市管理系统工作流程为:系统启动并进入登录界面,系统管理员输入正确的用户名及密码后,登陆系统主操作界面,系统管理员可对系统相关信息进行操作,包括基本信息、商品信息、销售信息、代金卡和会员卡信息等。 本系统的业务流程图如图2-1所示:日志填写 顾客退货商品员工 小票对应办理要求持有开出来自人事管理市场调查 系统边界 图2-1业务边界图2.3 功能实现: 1、收银:输入或使用条码阅读器读入商品条码调入商品定价资料,结账时只需要按回车或F1键就可以结账,结账后将打印销售小票。可以销售散装类商品。记录结账方式
10、(现金、代金卡、会员卡)和相应金额。 2、代金卡、会员卡:支持会员卡积分和代金卡消费。3、商品查询:可以对顾客需要的商品进行查询,查看是否有该商品及其价格。也可查询商品的库存量。 4、销售查询:包括商品的销售状况、销售单及每类商品的销售查询 5、退货功能:实现对已售出商品退货功能。6、会员卡相关业务:发放,积分及兑换礼品。7、代金卡相关业务:发放,充值,挂失及其优惠8、销售报表:支持各类销售报表 9、日志查询:实现快速对日常销售中的日志查询10、信息维护:包括员工、商品、销售单的基本信息以及会员的积分、代金卡、持代金卡人的信息。2.4 业务规则: (1)商品的定价及折扣由经理来决定, (2)只
11、有经理才能做信息维护 (3)经理和代班长有权发放代金卡 (4)收银员无法更改代金卡的(除余额外)的任何信息 (5)发放的代金卡共有100元、200元、500元、1000元、2000元; (6)代金卡无法充值,一旦金额为零将无效(收回) (7)代金卡的有效期一般为1年-3年 (8)会员卡可由收银员发放,会员持会员卡可在每次购买活动中增加积分。 (1元=1积分) (9)会员可用卡内积分换取礼品(价值不超过100元)(全年均可)2.5 相关说明:(1)维护操作(增,删,改);(2)销售单最小单位为每一次的交易记录(小票)(3 销售详单每一种商品的销售情况(4)退货日志记录每一笔退货交易(5) 退货详
12、单记录退货交易中每一种商品的退货明细2.6 主要用户视图需求: 表2-1主要用户视图需求表用户需要数据视图要求收银员(前台)销售商品的编码,商品名称,规格,单价,折扣、库存量会员卡信息(编号,积分)代金卡信息(编号,金额,有效期)查询给定商品的价格、折扣查询给定会员卡信息查询给定代金卡信息查询自己当日销售业绩查询自己当前的挂单经理(后台)各类商品的基本信息(包括库存量)各类商品的销售状况所有收银员的销售业绩所有会员卡信息所有代金卡信息所有持代金卡人的信息所有日志查询所有商品的基本信息查询所有商品的销售情况查询所有收银员的销售业绩查询所有销售单查询所有会员卡信息查询所有代金卡信息查询所有持代金卡
13、人信息查询所有日志代班长(后台)各类商品的基本信息各类商品的当天销售状况所有收银员的当天销售业绩所有会员卡信息所有代金卡信息所有持代金卡人的信息查询所有商品的基本信息查询所有商品的当天销售情况查询所有收银员的当天销售业绩查询所有销售单查询所有会员卡信息查询所有代金卡信息 第三章 总体设计3.1 系统的结构图 打印报表登录界面收银界面后台管理界面收银功能办理会员卡商品查询退货业务信息的维护代金卡业务积分兑换销售统计员工的管理权限设置删除员工信息商品信息增加代金卡信息挂失办理礼包信息图3-1系统结构图3.2 功能的操作流程的描述(收银业务模块部分) 本人负责收银界面的设计,实现关于收银的相关业务(
14、包括商品的模糊查询、会员卡的办理、积分的兑换、查看当日收银员的销售额,收银工作,添加备注)。 以下是收银业务的流程图:打开界面开始收银 收银选择业务查看销售额会员业务会员卡办理积分兑换查看会员卡号添加到会员卡表记录是否满足兑换要求兑换业务规则处理事务(修改会员卡积分、添加记录等)否界面刷新是无法兑换查询商品产生交易记录提交交易记录修改商品库存添加备注图3-2收银业务流程图3.3 安全设计。 本系统共有三类用户:经理、代班长、收银员;登录时,经理进入后台管理界面,可以对所有功能进行操作;代班长进入后台管理界面、但只显示其所在权限范围内的部分界面和功能;收银员进入前台收银界面,完成收银服务工作。本
15、系统的数据库采用视图的机制。 第四章 数据库设计4.1 概念结构设计分析:一张销售单只能有一个收银员办理,一张销售单包含多条消费记录,但一条消费记录只能对应一张销售单,一张退货单包含多条退货记录,但一条退货记录只能对应一张退货单,一个黄金会员(代金卡持有人,并在系统中注册过)可以办理多张代金卡,但一张代金卡只能被一位黄金会员所持有。同时员工应特化为收银员和管理人员,收银员办理收银业务,而管理人员又可分为经理和代班长以实现分级管理。 以下是设计的ER图 :积分兑换日志兑换1mnnmn代卡 会员 代金卡所属代付卡类活动日志会卡1n1n会付 包括退货销商办理退详销售单销售详单 商品退货详单 退货单
16、员工 持卡人注册开出调价日志调价mn1111nnmnnn1nn1n1图4-1ER图4.2 逻辑结构设计 以下为前台销售系统数据库中所用到的基本表的逻辑结构表(带下划线的属性为主属性)Staff(sno,sname,password,position,posno);Goods(gno,gname,gtype,gstandard,price,discount,supply,quanty);Vip(vipno,score);Supervip(supervipno,id,tele);Cashcard(cashcardno,cash,validity,supervipno,registertime,ag
17、ent);supervipno参照supervip(supervipno)Dispose_cashcard(cashcardno,suprvipno,type,time,agent);supervipno参照supervip(supervipno)Staff_power(sno,spower);sno参照staff(sno)Today_gift(gno,gift_type,gname,gstandard,price);gno参照goods(gno)Salepaper(saleno,sno,posno,customer,payway,saletime,sublog,totalmoney);sno
18、参照staff(sno)Saledetail(saleno,gno,gname,gstandard,mount,dell_price);saleno参照salepaper(saleno)gno参照goods(gno)Quit_log(quitno,sno,saleno,out_cash,quit_way,cashcardno,quit_time);sno参照staff(sno)saleno参照salepaper(saleno)Quitdetail(quitno,gno,mount,preprice,reason);quitno参照quit_log(quitno) gno参照goods(gno)
19、Send_log(vipno,Boxtype,cut,leftscore,time);vipno参照vip(vipno)Goods_log(gno,preprice,nowprice,prediscount,nowdiscount,time);gno参照goods(gno)Gift_log(gno,gname,gstandard,gift_type,price,gift_time);gno参照goods(gno)Card_log(customer,cardtype,change,reason,time);Enter_log(time,sno,posno,position);sno参照staff
20、(sno)4.3 物理结构设计进一步将逻辑结构转化为物理结构,并进行必要的物理结构的设计, 表4-1 Staff表属性名类型长度索引键约束snonvarchar10聚簇索引主键snamenvarchar10passwordnvarchar10positionnvarchar10(POSITION=MONITOROR POSITION=SALEMANOR POSITION=MANAGER)posnonvarchar8 表4-2 goods表属性名类型长度索引键约束gnonvarchar8聚簇索引主键gnamenvarchar24gtypenvarchar8gstandardnvarchar12p
21、ricefloat0discountfloat0discount=0 表4-3 vip表属性名类型长度索引键约束Vipnonvarchar10聚簇索引主键scoreint=0 表4-4 Supervip表属性名类型长度索引键约束supervipnonvarchar10聚簇索引主键idnvarchar10telenvarchar15唯一值索引唯一 表4-5 cashcard表属性名类型长度索引键约束cashcardnonvarchar10聚簇索引主键cashfloat=0validityint大于2小于13supervipnonvarchar10外键registertimenvarchar15a
22、gentnvarchar10外键 表4-6 dispose_cashcard表属性名类型长度索引键约束cashcardnonvarchar10聚簇索引主键supervipnonvarchar10外键typenvarchar30timenvarchar25agentnvarchar10外键 表4-7 today_gift表属性名类型长度索引键约束gnonvarchar8主键外键gnamenvarchar24gstandardnvarchar12Gift_typeint主键priceflost 表4-8 salepaper表属性名类型长度索引键约束salenonvarchar10聚簇索引主键sno
23、nvarchar10外键posnonvarchar8customernvarchar10外键paywaynvarchar10代金卡/vip/普通sasletimenvarchar25sublognvarchar30totalmoneyfloat 表4-9 saledetail表属性名类型长度索引键约束salenonvarchar10主键gnonvarchar8主键、外键gnamenvarchar24gstandardnvarchar12mountfloat0Dell_pricefloat0 表4-10 quit_log表属性名类型长度索引键约束quitnonvarchar10聚簇索引主键sno
24、nvarchar10外键salenonvarchar10外键Out_cashfloat大于0Quit_waynvarchar10回充到卡/退现cashardnonvarchar20外键Quit_timenvarchar25 表4-11 quitdetail表属性名类型长度索引键约束quitnonvarchar10主键gnonvarchar8主键、外键Mountflaot0prepricefloatreasonnvarchar20 表4-12 gift_log表属性名类型长度索引键约束vipnonvarchar10外键boxtypenvarchar5cutint0nowpriceFloat0pr
25、ediscountfloat0nowdiscountflaot0timenvarchar25经理能访问所有的表,代班长不能访问supervip表以及各种日志表,而收银员只能访问goods视图表,today_gift表,vip表以及cashcard表,salepaper表(插入),gift_log表(插入)。 第五章 详细设计 本人负责收银界面的设计,实现关于收银的相关业务(包括商品的模糊查询、会员卡的办理、积分的兑换、查看当日收银员的销售额,收银工作,添加备注)。对于收银业务中的对于支付方式的处理:若是会员卡则在完成收银的基础上增加该会员卡上的积分,若是代金卡则同时减去相应的金额(若卡内余额不
26、足则用现金补齐差额并添加备注),同时将本次活动添加到卡类活动日志上,以便后台的查询与合计。注:以上所有的操作必须写在一个事务里,即要做都做,要不做都不做。 以下是收银业务的流程图: 打开界面开始收银 收银查看销售额会员业务会员卡办理积分兑换查看会员卡号添加到会员卡表记录是否满足兑换要求兑换业务规则处理事务(修改会员卡积分、添加记录等)否是无法兑换查询商品产生交易记录提交交易记录修改商品库存添加备注选择业务界面刷新图5-1收银业务流程图 第六章 编码6.1. 功能核心代码以下是关于收银业务的相关核心代码(c+Builder代码): 6.1.1 结算收银功能: try ADOConnection1
27、-BeginTrans(); ADOQuery1-Close(); ADOQuery1-SQL-Clear(); ADOQuery1-SQL-Add(insertintosalepapervalues(+saleno+,+sno+,+posno+,+customer+,+payway+,+saledate+,+log+,+price+); double mount,price,discount,dell_price; AnsiString gno,gname,gstandard; for(int i=1;iRowCount-1;i+) gno=StringGrid1-Cells1i; gnam
28、e=StringGrid1-Cells2i; gstandard=StringGrid1-Cells3i; price=StrToFloat(StringGrid1-Cells4i); discount=StrToFloat(StringGrid1-Cells5i); dell_price=price*discount; mount=StrToFloat(StringGrid1-Cells6i);ADOQuery1-SQL-Add(insertintosaledetailvalues(+saleno+,+gno+,+gname+,+gstandard+,+mount+,+dell_price+
29、); price=StrToFloat(Label5-Caption); AnsiString now=Now(); if(payway=VIP) int add=StrToInt(Label7-Caption); int temp=StrToInt(Label9-Caption)+add; AnsiString newscore=IntToStr(temp); ADOQuery1-SQL-Add(update vip set score=+newscore+ where VIPNO=+customer+); ADOQuery1-SQL-Add(insert into card_log val
30、ues(+customer+,+payway+,+add+,购物积分,+now+); else if(payway=代金卡) AnsiStringnewcash=FloatToStr(StrToFloat(Label9-Caption)-StrToFloat(Label7-Caption); double newcash1=StrToFloat(Label9-Caption)-StrToFloat(Label7-Caption); if(newcash1Caption); newcash=0; ADOQuery1-SQL-Add(update cashcard set cash=+newcas
31、h+ where cashcardNO=+customer+); price*=-1; ADOQuery1-SQL-Add(insert into card_log values(+customer+,+payway+,+price+,购物消费,+now+); ADOQuery1-ExecSQL(); catch(Exception &e) ADOConnection1-RollbackTrans(); Application-MessageBoxA(交易失败,无法交易,MB_ICONERROR); return; ADOConnection1-CommitTrans(); Applicati
32、on-MessageBoxA(交易成功!,成功,MB_ICONASTERISK); 6.1.2 会员卡办理:try ADOQuery1-Close(); ADOQuery1-SQL-Clear(); ADOQuery1-SQL-Add(insert into vip values(+Edit1-Text+,+Label3-Caption+) ); ADOQuery1-ExecSQL(); catch(Exception &e) Application-MessageBoxA(该号已存在,无法激活!,暂时激活,MB_ICONERROR); return; Application-MessageB
33、oxA(成功激活!,成功,MB_ICONASTERISK);6.1.3积分兑换: try Form2-ADOConnection1-BeginTrans(); ADOQuery1-Close(); ADOQuery1-SQL-Clear(); ADOQuery1-SQL-Add(update vip set score=+newscore+ where VIPNO=+vipno+); ADOQuery1-SQL-Add(insert into Send_LOG values(+vipno+,+type+,+cut+,+newscore+,+senddate+); ADOQuery1-SQL-A
34、dd(insert into card_LOG values(+vipno+,vip,+cut+,兑换礼品,+senddate+); ADOQuery1-ExecSQL(); Form2-ADOConnection1-CommitTrans(); catch(Exception &e) Form2-ADOConnection1-RollbackTrans(); Application-MessageBoxA(兑换失败,无法兑换,MB_ICONERROR); return; Application-MessageBoxA(兑换成功!,成功,MB_ICONASTERISK);6.1.4当日销售额查
35、询: ADOQuery1-Close(); ADOQuery1-SQL-Clear(); ADOQuery1-SQL-Add(select * from day_sale_view where sno=+Form2-Label21-Caption+); ADOQuery1-Open(); double price=0; while(!ADOQuery1-Eof) price+=StrToFloat(ADOQuery1-FieldByName(totalmoney)-AsString); ADOQuery1-Next(); AnsiString temp; temp=price; temp+=元; Label2-Caption=temp;6.2 运行截图 以下是系统运行收银业务的部分截图: 图6-1 收银主界面图 图6-2 会员卡办理及礼品兑换界面 图6-3 商品的模糊查询界面 图6-4