超市收银系统实习报告

毕业实习报告

1、课程设计目的:

l 熟悉大型数据库管理系统的结构与组成;

l 熟悉数据库应用系统的设计方法和开发过程;

l 掌握一种大型数据库管理系统(DM5、ORACLE或SQL SERVER)的应用技术和开发工具的使用;

l 熟悉数据库设计工具的使用;

l 熟悉数据库安全的相关知识和技术;

l 熟悉数据库系统的管理和维护。

2、毕业实习设计要求:

l 在课程设计指导老师的指导下,选定一个数据库应用系统的题目,完成数据库的设计和应用系统设计,并提交相应文档。

l 数据库管理系统仅限DM5、Oracle以及MS SQL Server;

l 开发工具限PowerBuilder、Delphi、C++、 JAVA、.NET平台或其它动态网页开发工具;

l 系统采用客户/服务器(C/S)结构或浏览器/服务器(B/S)结构实现。

l 系统应严格遵照题目要求进行设计,可在其基础上进一步细化完善,但不得违背,原则上不额外增加与要求无关的功能。

l 系统中应适当体现下列技术的应用:存储过程,触发器,索引。

l 提交系统的源码及文档。

一、  设计的应用背景

本系统是一个超市收银系统。顾名思义,本系统用来管理和更新超市日常交易数据,如收银员的管理,收银员的工作记录,日常交易记录,顾客信息管理,商品信息管理,等等,所有的数据存储在达梦数据库的system库中。

本系统实现的主要功能为:

1、收银:收银员输入顾客的会员卡卡号(若有卡)、所购商品的货号等信息,系统根据这些信息获取相应的价格信息并计算应收取的总金额。完成收银后,记录交易信息,修改有关种类商品的剩余量以及该持卡顾客的消费情况。

2、发卡:顾客可交纳一定的费用(如50元)办理一张会员卡,以后在该商场购物可凭卡享受9折优惠。如果一个未持卡顾客一次购物满1000元,可为其免费发放一张会员卡,每张卡的优惠期为一年,一年内消费达到一定金额的可继续享受下一年的优惠。

3、款项盘存:收银员下班或交接班前对本收银台中本班次收取的款额进行盘存,明确责任。

4、商品信息的录入、修改、删除和查询等。

5、收银员身份及口令管理。

二、        数据库设计过程

1、需求分析

(1)、信息要求

l 顾客信息:顾客编号(会员卡号)、顾客姓名、顾客性别、注册时间、是否到期、消费金额。

l 收银员信息:收银员编号、收银员姓名、收银员性别、登录名,密码。

l 商品信息:商品编号、商品名称、单价、现有库存。

l 收银信息:收银员编号、收银金额、登录时间,注销时间。

l 交易信息:顾客编号,商品编号,交易时间,交易数量。

(2)、处理要求

A、处理方式:联机处理。

B、处理时间要求:< 2S。

C、处理功能:

(I)、添加新信息,修改现存信息,删除无用信息,查询信息。

(II)、计算一次交易的金额,如果是会员,就可以享受9折优惠,如果非会员消费金额超过1000元,免费为其发放一张为期一年的会员卡。

(III)、只有收银员以正确的用户名和密码才能登录本系统。

(3)、安全性和完整性要求

A、安全性要求:只有收银员以正确的用户名和密码才能登录本系统,进行相应操作。后台服务器(达梦数据库)会生成相应的日志文件。

B、完整性要求:

(I)实体完整性:如上信息要求一栏所示,黄色背景的为primary key。

(II)参照完整性:收银信息和交易信息中的收银员编号,顾客编号和商品编号均为前面的参照。

(III)用户定义完整性:如性别只能为‘男’或‘女’,姓名不能为空,登录名必须唯一,密码必须六位以上,等等。

2、概念设计

根据需求分析得到的信息抽象为E-R模型如下:

3、逻辑设计

根据以上分析,得到本系统的基本关系模式为:

l 顾客(顾客编号、顾客姓名、顾客性别、注册时间、是否到期、消费金额)。

create table Customer

(       Cno char(9) primary key,

       Cname char(20),

       Csex  char(2) check(Csex in('男','女')),

       Creg  date,

       Cactive char(2) check(Cactive in('是','否')),

       Cconsumption decimal(8,2)

);

l 收银员(收银员编号、收银员姓名、收银员性别、登录名,密码)。

create table Cashier

(        Cno char(9) primary key,

         Cname char(20) not null,

         Csex char(2) check(Csex in('男','女')),

         Clogname char(20) unique,

         Clogpass char(20)  check(Clogpass like '______%')

);

l 商品(商品编号、商品名称、单价、现有库存)。

create table Goods

(        Gno char(9) primary key,

         Gname  char(20) not null,

         Gprice decimal(5,2),

         Gstorage smallint

);

l 收银(收银员编号、收银金额、登录时间,注销时间)。

create table Cashinfo

(        Cno char(9) not null,

         Crecv decimal(7,2),

         CtimeOn timestamp(0),

         CtimeOff timestamp(0),

         foreign key(Cno) references Cashier(Cno)

);

l 交易(顾客编号,商品编号,交易时间,交易数量)。

create table Tradeinfo

(        Cno char(9),

         Gno char(9),

         Tquantity smallint,

         Ttime timestamp(0),

--       primary key( Cno, Gno),

         foreign key(Cno) references Customer(Cno),

         foreign key(Gno) references Goods(Gno)

);

为了编程的方便,另外建立了几个视图如下:

l   查询收银信息(收银员编号、收银员姓名、收银金额、登录时间,注销时间)

l   查询交易信息(顾客编号,顾客姓名,商品编号,商品名称,交易时间,交易数量)

三、        应用系统的设计过程

1、   系统模块结构图

2、   系统工作流程

1)         以收银员的身份登录(密码为123456),如下图:

2)         对收银员信息,顾客信息,商品信息做相应操作,以收银员信息为例:

A、  添加信息,如果出现非法的输入,会有提示,并会返回该界面等待重新输入(如两次密码不同,编号已存在,性别是‘男’‘女’之外的其他,等等)。如图:

B、    删除信息,输入四个参数中任意的几个,系统会把满足此参数组合的所有记录删除掉。如图:

C、    修改信息,要输入正确的编号。在需要修改的地方输入新的参数,不需要修改的地方保持空白。如图:

D、  查询信息,可以采用条件查询,方法同删除。如图:

3)         进行交易。输入商品编号和对应的数量(最多5种商品),如果是会员,输入会员卡号,否则不输入。以会员为例,如下图:

                                                  输入购买信息

                                                           判断为会员

                                                           计算应收金额

此后,系统会根据交易的情况,自动弹出修改相应数据(如顾客的消费金额,商品的库存,交易信息等等)的对话框,其中,正确的修改数据已经默认的填在了对话框中,收银员只需点击确定按钮即可。

4)         注销以后,会弹出重新登陆的对话框。退出直接退出本系统。

3、   关键技术和算法

1)         登录对话框增加了“记住用户名”这一选项。实现算法为:将选项是否勾选的状态用一个bool变量表示,新建一个名为“user.dat”的文件。每次登陆时,读取文件中的内容到“用户名”栏中。如果选择了“记住用户名”,则将用户输入的用户名重新写到user.dat文件中,否则写入空。

2)         系统中使用了很多对话框,而且每个对话框都不相同。我采用了复用对话框的方式。实现方法为:定义状态变量

typedef enum stype{

CASHIER_ADD,CASHIER_DELETE,CASHIER_EDIT,CASHIER_QUERY,

CUSTOMER_ADD,CUSTOMER_DELETE,CUSTOMER_EDIT,CUSTOMER_QUERY,

GOODS_ADD,   GOODS_DELETE,   GOODS_EDIT,   GOODS_QUERY,

CASHINFO_ADD,CASHINFO_QUERY,

TRADE_ADD,   TRADE_QUERY

}STYPE;

在OnInitDialog()函数中,用switch-case语句来初始化不同用途的对话框。这样,16个对话框只用1个对话框资源。

3)         为了能够实时更新系统中的时间(如交易时间,上班下班时间等等),create几个触发器用来获得系统时间。

//添加新会员的时候,自动获得系统时间作为注册时间

createtrigger Insert_Customer

beforeinserton Customer

foreachrow

begin

         :new.Creg := curdate();

end;

//添加交易信息的时候,自动获得系统时间作为交易时间

createtrigger Insert_Trade

beforeinserton Tradeinfo

foreachrow

begin

         :new.Ttime := current_timestamp();

end;

--用户登录系统时插入新记录

createtrigger Insert_CashinfoOn

beforeinserton Cashinfo

foreachrow

begin

         :new.CtimeOn := current_timestamp();

end;

--用户更新Crecv时(logout)

createtrigger Insert_CashinfoOff

beforeupdateon Cashinfo

foreachrow

begin

         if :old.CtimeOff isnull

         then :new.CtimeOff := current_timestamp();

         endif;

end;

为了查询的方便,创建了Query_Tradeinfo和Query_Cashinfo两个视图。

createview Query_Cashinfo(Qcno,Qcname,Qcrecv,Qctimeon,Qctimeoff)

as

select Cashinfo.Cno, Cname, Crecv, CtimeOn, CtimeOff

from Cashinfo,Cashier

where Cashinfo.Cno = Cashier.Cno;

create  view

Query_Tradeinfo(Qcno,Qcname,Qgno,Qgname,Qgprice,Qttime,Qtquantity)

as

select Tradeinfo.Cno, Cname, Tradeinfo.Gno, Gname, Gprice, Ttime, Tquantity

from Tradeinfo,Customer,Goods

where Tradeinfo.Cno = Customer.Cno and Tradeinfo.Gno = Goods.Gno;

4)         在交易的过程中,会弹出其他的对话框用来更新数据库,采用了重载消息函数的方法,使得更新的数据能以参数的形式传到对话框中。

5)         采用了动态条件修改,删除和查询的方式,实现方法是,在源程序中动态改变查询的条件。以删除收银员为例:

// m_Cashier是CCashierRecordSet(从CRecordSet继承,与Cashier表关联)的对象

//如果输入不为空

                            if(m_strEdit1.GetLength())

                            {

                                     if(bFirst)

                                               m_Cashier.m_strFilter += " and ";

                                     strFilter.Format("Cno = '%s'",m_strEdit1);

                                     //增加对应的条件

                                     m_Cashier.m_strFilter += strFilter;

                                     bFirst = TRUE;

                            }

                            if(m_strEdit2.GetLength())

                            {

                                     if(bFirst)

                                               m_Cashier.m_strFilter += " and ";

                                     strFilter.Format("Cname = '%s'",m_strEdit2);

                                     m_Cashier.m_strFilter += strFilter;

                                     bFirst = TRUE;

                            }

                            if(m_strEdit3.GetLength())

                            {

                                     if(bFirst)

                                               m_Cashier.m_strFilter += " and ";

                                     strFilter.Format("Csex = '%s'",m_strEdit3);

                                     m_Cashier.m_strFilter += strFilter;

                                     bFirst = TRUE;

                            }

                            if(m_strEdit4.GetLength())

                            {

                                     if(bFirst)

                                               m_Cashier.m_strFilter += " and ";

                                     strFilter.Format("Clogname = '%s'",m_strEdit4);

                                     m_Cashier.m_strFilter += strFilter;

                                     bFirst = TRUE;

                            }

四、        设计心得体会

这次毕业实习设计收获颇大,首先对视图和触发器的认识和作用都上了一个台阶。通过这次的课程设计,我不仅拓宽了自己的知识面,还在实践过程中巩固和加深了自己所学的理论知识,使自己的技术素质和实践能力有了进一步的提高,同时我的专业水平也有了很大的进步。熟悉大型数据库管理系统的结构,熟悉了数据库系统开发工具的使用。

同时,在软件开发方面也累积了不少经验,对软件工程的知识重要性的认识更深了。通过设计过程的锻炼,自己分析问题和解决问题的能力都得到了锻炼和提高,完善了自己的知识结构,加深了对所学知识的理解。

这次课程设计完成后,体会颇多,在学与做的过程中,取长补短,不断学习新的知识,吸取经验,达到进步的目的。在学与做的过程中自身的努力以及相关图书资料的帮助,对ODBC编程接口的理解也从能够使用提高到了熟练使用,对程序开发的一般过程和对数据库知识的运用也有了进一步的了解。

在这个快速发展的当代社会里,数据库已经普遍应用在各个领域。通过课程设计,我学习到不少的数据库方面的知识,但由于自己的理论知识水平有限,实践知识和设计经验不足,在设计过程中难免存在一些问题,甚至错误。这些我会在以后的工作和实践中加以改进和提高。

 

第二篇:收银实习报告

陕西青年职业学院

08级会电一班 姬晓娜

学号:20080701018

时间过的很快,转眼间在陕西青年职业学院的学习已经接近尾声了,为了锻炼自身的社会活动能力,了解社会现实,从实践中拉进了与社会的距离,认清一些社会问题,看清一些社会现象,在社会大课堂里,经风雨、见世面,检验知识,培养能力,磨练意志,使自身得到启迪,增强社会责任感。更重要的是把在高等学校学到的理论知识落实到实践中去。锻炼自己的动手能力,将学习的理论知识运用于实践当中,反过来还能检验书本上理论的正确性,有利于融会贯通。同时,也能开拓视野,完善自己的知识结构,达到锻炼能力的目的。一切都是为了让实践者对本专业知识形成一个客观,理性的认识,从而不与社会现实相脱节。所以我便到社会岗位去实践锻炼。

我所实习的的单位是东方商厦杨浦店,上海东方商厦杨浦店是百联集团百货事业部旗下,都市型百货板块中的综合性连锁百货商店。位于五角场的中心位置,营业总面积6000平方米。它于20xx年初刚刚加入东方商厦,成为新兴的五角场商业区的一朵东方之花。

商厦收银岗位空缺,人力资源部安排我去商场学习收银。

收银员是企业的关键岗位,是直接为顾客服务、又直接收取、归集企业销售款的重要岗位,是对全店销售款的安全

及收银设备的正常运转负责的重要岗位。对收银员的选拔、使用、培训及考核原则是:收银员由企业推荐、人力资源部把关、财务部培训、财务部检查。正式收银员的培训内容和工作流程规定如下。

收银员培训内容

1、企业规章制度;

2、收银员岗位职责;

3、收银员工作流程;

4、识别假币的各种方法;

5、现金管理制度、支票管理制度、#5@p管理制度;

6、开据#5@p的规范要求及实际操作;

7、安全手册及灭火器的使用;

8、POS系统基本原理,维护要点;

9、收银机、点钞机、税控机上机操作。

收银员工作流程

一、开业前的准备工作:

1、与财务人员一道,将前一天结业前的钱款、备用金、票据从存放的保险柜中取出,由会计人员复核。

2、到本单位会计室领取当天的备用金,换好零钱,以满足结帐找零的需要。

3、检查收银机是否正常,如有异常应马上调整;检查是否需要补充机打纸,若需要应及时到财务室领取。

4、检查收银机是否正常,发现问题及时解决。

5、搞好收银台的卫生,物品要码放整齐,以整洁的工作环境和饱满的工作热情迎接开业。

二、进入工作状态:

1、顾客要求结帐时按相应货号同时打印出“结帐单”及“顾客消费单”,将“顾客消费单”通过服务员交给顾客,便于顾客核对。

2、按结帐单合计金额与顾客结账,对收取的现金用验钞机验钞,对收取的支票要检查单位名称、印鉴、密码等是否填写齐全、是否正确。

3、顾客要求开#5@p时,由收银员使用税控机按顾客要求输入付款单位全称或“个人”,按结帐单合计金额输入餐

费金额,打出#5@p通过服务员交给顾客。对发生的退货、换货、折扣等必须经区域主管以上领导签字确认。

三、向会计室交款:

1、收银员向会计室交款前需要按现金、转账、信用卡等类别分类打印出汇总#4@p,将收到的现金、支票、信用卡#4@p分别打出汇总金额,与汇总#4@p分别进行核对(注意清点现金时应扣除备用金)。

2、票、款核对相符后,收银员要分别填制“现金交款汇总表”、“转账交款汇总表”和“信用卡交款汇总表”,收银员在表上签字后将票、款交到会计室。

3、收银员将票、款交到会计室,由会计分类进行核对,核对相符后由会计在“收款登记簿”上登记相关内容,经双方确认后由收银员和会计分别在交款人和收款人栏下签字。

4、晚上结业后,需将钱款、备用金、票据交存到财务指定的保险柜中,将保险柜锁好,以备第二天财务人员进行核对。

四、亲身工作经历

收银员交接班时,交班人也要办理好以上交款手续,给接班的收银员只留下备用金,由接班的收银员到财务室兑换零钱。

刚开始的几天里,领导没有让我独自操作,而是让我自己熟悉下环境,了解商场各层楼面的经营布局,了解商品信息、收银制度、财务制度以及商场各项规定。之后是为了做好收银做各种准备——先是给我安排经验丰富师傅的师傅做理论知识的培训,作为一名合格的收银员最基础的技能就是点钞,点钞越多速度越快,才能独自应付商场在旺季顾客付款排队的情况。还有一点最重要的就是识别假钞,营业款是商业单位单位主要的收入,一但出了问题,是收银员本人承担损失。另外存放营业款的抽屉在无顾客付款的情况下应该关闭,现金不得外露,有事离开收银台时应该将抽屉锁好,钥匙妥善保管,千万遗失不得!还介绍了OK卡消费和银行卡消费注意事项,需要重点指出的是持外币卡消费的顾客来付款时必须注意识别是否是伪造卡,如果遇到伪造卡处理与假钞一样礼貌回绝,多次出现持伪造卡前来付款的,应即使上报有关部门。

经过基本的培训考核,我可以进入收银台开始收银工作了,但是领导还是很不放心,毕竟从来没接触过这个特殊的工作,我就在师傅的收银台里做了两天,在旁边观看师傅操

作,有什么不明白的地方及时提出解决,以免在之后独立操作时遇到解决不了的问题不知所措。在观看的同时做好记录工作,这有利与减少差错,同时也为了联系相关课程材料做数字依据。

第二天我就进入收银台开始了独立操作,面对那么多支付方式和电子支付仪器,心里还是比较紧张的。百货商场和超市不太一样,商品货号都是另改编之后手工输入,一般情况下不会有长距离排队情况,但是输入货号和单价占整个收银过程的四分之三。因为是第一次从事这个工作,所以一切都是按商厦对收银员的要求来,有顾客前来付款,必须做到“双声”,“双托”,“双声”即“欢迎光临”,“欢迎下次光临”;“双托”就是找零或者银行卡及其他票据要双手递送给顾客,还好那天正好是星期一,客流量不是很大,我利用闲暇时间认真做好各项支付方式的整理

统计工作。下午,主管又过来跟我讲了些在工作中应该注意的一些事项,主要是有顾客或营业员陪同顾客前来退货的,红字单上必须有区域主管以上负责人签名认可,不然不能退;退货一般与购买是与购买时支付方式相同,即现金退现金,信用卡退原卡内,无法退进原卡内应由负责人写明原因;折扣在五折以下的商品必须经核价后才能上架,顾客付

款时收银员应当复核。这些都涉及商厦的利益,听了之后不敢丝毫怠慢!

五、工作感言

从一天中支付方式的百分比可见,银联卡已经代替了现金成为一般消费群体的主要支付方式,它不占体积,携带方便,而且有密码保护,取代了买高价商品携带大量现金的后顾之忧。特别信用卡的出现,更带动了年轻人“先消费,后还钱”的超前消费形势。我之前个人也在银行信用卡推广人员处申请了一张信用卡,然而我后来得知刷卡消费对商户来说又有一笔额外成本支出,就是手续费。消费者花等额的钱买东西,而商户却拿不到全额的货款;而银行界给消费者提供方便的同时,自己也要求生存。我觉得这是个值得整个零售业和银行业研究的问题。

在经过了一系列的实践操作后,我渐渐熟悉了自己的工作流程,也对自己的这份工作有了更深的理解,与同事们之间的相处也越来越融洽。而我也在前不久转为了一名正式员工,从而让我更有信心在自己的工作岗位上,发挥的更加出色。

20xx年4月9日

相关推荐