超市收银系统实训报告Word格式.docx
- 文档编号:20026075
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:6
- 大小:20.61KB
超市收银系统实训报告Word格式.docx
《超市收银系统实训报告Word格式.docx》由会员分享,可在线阅读,更多相关《超市收银系统实训报告Word格式.docx(6页珍藏版)》请在冰豆网上搜索。
(6)提示收银员应付金额,记录实收金额;
(7)计算找零;
(8)交易完成。
流程图:
提示收银员输入商品条码信息根据商品条码查找商品品名、价格等信息提示收银员输入商品数量计算该商品应付金额,输出明细计算总的购买金额继续输入否是显示应付金额,计算实收金额计算找零结束交易
程序代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Te某t;
namespace作业{
classProgram{
staticvoidMain(string[]args){
inttoalPrice=0;
Console.WriteLine("
============某某超市收银系统============"
);
Console.WriteLine("
收银时间:
"
+e());
收款单号:
模拟100收款员:
100"
========================================"
//1.提示收银员输入商品条码信息;
while(true){
Console.Write("
请输入商品条码:
stringbarCode=Console.ReadLine();
//2.根据商品条码查找商品品名、价格等信息,此处为模拟过程,实际情况需要到//数据库中查找
stringgoodsName="
商品"
+barCode;
//用商品+条码的形式模拟商品名称
intgoodsPrice=newRandom().Ne某t(20,50);
//随机价格,到之间//3提示收银员输入商品数量;
请输入商品数量:
intgoodsNum=int.Parse(Console.ReadLine());
//4计算该商品应付金额,输出明细,并将该金额加到总的应付金额上;
toalPrice+=goodsPrice某goodsNum;
//付款金额为单价某数量//输出单笔交易明细
{0}{1}某{2}={3}"
goodsName,goodsPrice,goodsNum,goodsPrice某goodsNum);
//6.询问是否还需要输入下一件商品你条码,如果是,则继续循环,否则退出循环;
是否继续输入下一个商品(Y/N)"
stringisNe某t=Console.ReadLine();
if(isNe某t=="
N"
||isNe某t=="
n"
)break;
//如果输入为N,结束循环}
//7.提示收银员应付金额,记录实收金额;
应付金额为:
{0}"
toalPrice);
Console.Write("
请输入实收金额:
intpay=int.Parse(Console.ReadLine());
实收金额为:
pay);
//8.计算找零;
找零:
pay-toalPrice);
Console.WriteLine();
//9.交易完成。
Console.ReadLine();
}}}
四、实训中遇到的问题及解决方法:
怎样获取商品条码?
怎样获取商品单价?
intgoodsPrice=newRandom().Ne某t(20,50);
//随机价格,到之间?
扩展阅读:
超市收银系统实习报告
毕业实习报告
1、课程设计目的:
熟悉大型数据库管理系统的结构与组成;
熟悉数据库应用系统的设计方法和开发过程;
掌握一种大型数据库管理系统(DM5、ORACLE或ER)的应用技术和开发工具的使用;
熟悉数据库设计工具的使用;
熟悉数据库安全的相关知识和技术;
熟悉数据库系统的管理和维护。
2、毕业实习设计要求:
在课程设计指导老师的指导下,选定一个数据库应用系统的题目,完成数据库的设计和应用系统设计,并提交相应文档。
数据库管理系统仅限DM5、Oracle以及MSSQLServer;
开发工具限PowerBuilder、Delphi、C++、JAVA、.NET平台或其它动态网页开发工具;
系统采用客户/服务器(C/S)结构或浏览器/服务器(B/S)结构实现。
系统应严格遵照题目要求进行设计,可在其基础上进一步细化完善,但不得违背,原则上不额外增加与要求无关的功能。
系统中应适当体现下列技术的应用:
存储过程,触发器,索引。
提交系统的源码及文档。
一、设计的应用背景
本系统是一个超市收银系统。
顾名思义,本系统用来管理和更新超市日常交易数据,如收银员的管理,收银员的工作记录,日常交易记录,顾客信息管理,商品信息管理,等等,所有的数据存储在达梦数据库的system库中。
本系统实现的主要功能为:
1、收银:
收银员输入顾客的会员卡卡号(若有卡)、所购商品的货号等信息,系统根据这些信息获取相应的价格信息并计算应收取的总金额。
完成收银后,记录交易信息,修改有关种类商品的剩余量以及该持卡顾客的消费情况。
2、发卡:
顾客可交纳一定的费用(如50元)办理一张会员卡,以后在该商场购物可凭卡享受9折优惠。
如果一个未持卡顾客一次购物满1000元,可为其免费发放一张会员卡,每张卡的优惠期为一年,一年内消费达到一定金额的可继续享受下一年的优惠。
3、款项盘存:
收银员下班或交接班前对本收银台中本班次收取的款额进行盘存,明确责任。
4、商品信息的录入、修改、删除和查询等。
5、收银员身份及口令管理。
二、
数据库设计过程
1、需求分析
(1)、信息要求
顾客信息:
顾客编号(会员卡号)、顾客姓名、顾客性别、注册时间、是否到期、消费金额。
收银员信息:
收银员编号、收银员姓名、收银员性别、登录名,密码。
商品信息:
商品编号、商品名称、单价、现有库存。
收银信息:
收银员编号、收银金额、登录时间,注销时间。
交易信息:
顾客编号,商品编号,交易时间,交易数量。
(2)、处理要求A、处理方式:
联机处理。
B、处理时间要求:
(I)、添加新信息,修改现存信息,删除无用信息,查询信息。
(II)、计算一次交易的金额,如果是会员,就可以享受9折优惠,如果非会员消费金额超过1000元,免费为其发放一张为期一年的会员卡。
(III)、只有收银员以正确的用户名和密码才能登录本系统。
(3)、安全性和完整性要求
A、安全性要求:
只有收银员以正确的用户名和密码才能登录本系统,进行相应操作。
后台服务
器(达梦数据库)会生成相应的日志文件。
B、完整性要求:
(I)实体完整性:
如上信息要求一栏所示,黄色背景的为primarykey。
(II)参照完整性:
收银信息和交易信息中的收银员编号,顾客编号和商品编号均为前面的参照。
(III)用户定义完整性:
如性别只能为‘男’或‘女’,姓名不能为空,登录名必须唯一,密码必须六位以上,等等。
2、概念设计
根据需求分析得到的信息抽象为E-R模型如下:
编号姓名性别密码收银员单价库存登录名M名称商品收银编号下班时间1交易金额上班时间N1数量时间顾客编号姓名性别注册时间是否过期消费金额
3、逻辑设计
根据以上分析,得到本系统的基本关系模式为:
顾客(顾客编号、顾客姓名、顾客性别、注册时间、是否到期、消费金额)。
createtableCustomer
(Cnochar(9)primarykey,Cnamechar(20),
Cse某char
(2)check(Cse某in("
男"
"
女"
)),
Cregdate,
Cactivechar
(2)check(Cactivein("
是"
否"
Cconsumptiondecimal(8,2));
收银员(收银员编号、收银员姓名、收银员性别、登录名,密码)。
createtableCashier();
商品(商品编号、商品名称、单价、现有库存)。
createtableGoods(Gnochar(9)primarykey,Gnamechar(20)notnull,Gpricedecimal(5,2),Gstoragesmallint);
收银(收银员编号、收银金额、登录时间,注销时间)。
createtableCashinfo(Cnochar(9)notnull,Crecvdecimal(7,2),CtimeOntimestamp(0),CtimeOfftimestamp(0),foreignkey(Cno)referencesCashier(Cno));
交易(顾客编号,商品编号,交易时间,交易数量)。
createtableTradeinfo(Cnochar(9),Gnochar(9),Tquantitysmallint,Ttimetimestamp(0),--primarykey(Cno,Gno),
foreignkey(Cno)referencesCustomer(Cno),foreignkey(Gno)referencesGoods(Gno));
为了编程的方便,另外建立了几个视图如下:
查询收银信息(收银员编号、收银员姓名、收银金额、登录时间,注销时间)查询交易信息(顾客编号,顾客姓名,商品编号,商品名称,交易时间,交易数量)
Cnochar(9)primarykey,Cnamechar(20)notnull,
Clognamechar(20)unique,
Clogpasschar(20)check(Clogpasslike"
______%"
)
三、
应用系统的设计过程
1、系统模块结构图
超市收银系统帮助登录管理收银员信息管理顾客信息管理商品信息管理交易信息管理收银信息管理注销、退出系统添加、删除、修改、查询添加、删除、修改、查询添加、删除、修改、查询添加、查询、交易添加、查询2、系统工作流程
1)以收银员的身份登录(密码为),如下图:
2)
对收银员信息,顾客信息,商品信息做相应操作,以收银员信息为例:
A、添加信息,如果出现非法的输入,会有提示,并会返回该界面等待重新输入(如两次
密码不同,编号已存在,性别是‘男’‘女’之外的其他,等等)。
如图:
B、删除信息,输入四个参数中任意的几个,系统会把满足此参数组合的所有记录删除
掉。
C、修改信息,要输入正确的编号。
在需要修改的地方输入新的参数,不需要修改的地
方保持空白。
D、查询信息,可以采用条件查询,方法同删除。
3)
进行交易。
输入商品编号和对应的数量(最多5种商品),如果是会员,输入会员卡号,否则不输入。
以会员为例,如下图:
输入购买信息
判断为会员
此后,系统会根据交易的情况,自动弹出修改相应数据(如顾客的消费金额,商品的库存,交易信息等等)的对话框,其中,正确的修改数据已经默认的填在了对话框中,收银员只需点击确定按钮即可。
4)
3、关键技术和算法
注销以后,会弹出重新登陆的对话框。
退出直接退出本系统。
计算应收金额
1)登录对话框增加了“记住用户名”这一选项。
实现算法为:
将选项是否勾选的状态用一个bool变量表示,新建一个名为“user.dat”的文件。
每次登陆时,读取文件中的内容到“用户名”栏中。
如果选择了“记住用户名”,则将用户输入的用户名重新写到user.dat文件中,否则写入空。
2)系统中使用了很多对话框,而且每个对话框都不相同。
我采用了复用对话框的方式。
实现方法为:
定义状态变量
typedefenumstype{
_ADD,_DELETE,_EDIT,_QUERY,
R_ADD,R_DELETE,R_EDIT,R_QUERY,
GOODS_ADD,GOODS_DELETE,GOODS_EDIT,GOODS_QUERY,O_ADD,O_QUERY,
TRADE_ADD,TRADE_QUERY}STYPE;
在OnInitDialog()函数中,用switch-case语句来初始化不同用途的对话框。
这样,16个对话框只用1个对话框资源。
为了能够实时更新系统中的时间(如交易时间,上班下班时间等等),create几个触
发器用来获得系统时间。
//添加新会员的时候,自动获得系统时间作为注册时间createtriggerInsert_CustomerbeforeinsertonCustomerforeachrowbegin:
new.Creg:
=curdate();
end;
//添加交易信息的时候,自动获得系统时间作为交易时间createtriggerInsert_TradebeforeinsertonTradeinfo
foreachrowbegin:
new.Ttime:
=current_timestamp();
--用户登录系统时插入新记录
createtriggerInsert_CashinfoOnbeforeinsertonCashinfoforeachrowbegin:
new.CtimeOn:
--用户更新Crecv时(logout)createtriggerInsert_CashinfoOffbeforeupdateonCashinfoforeachrowbegin
if:
old.CtimeOffisnullthen:
new.CtimeOff:
endif;
为了查询的方便,创建了Query_Tradeinfo和Query_Cashinfo两个视图。
createviewQuery_Cashinfo(Qcno,Qcname,Qcrecv,Qctimeon,Qctimeoff)as
selectCashinfo.Cno,Cname,Crecv,CtimeOn,CtimeOfffromCashinfo,Cashier
whereCashinfo.Cno=Cashier.Cno;
createview
Query_Tradeinfo(Qcno,Qcname,Qgno,Qgname,Qgprice,Qttime,Qtquantity)as
selectTradeinfo.Cno,Cname,Tradeinfo.Gno,Gname,Gprice,Ttime,TquantityfromTradeinfo,Customer,Goods
whereTradeinfo.Cno=Customer.CnoandTradeinfo.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+="
Cname="
m_strEdit2);
m_Cashier.m_strFilter+=strFilter;
}
if(m_strEdit3.GetLength()){if(bFirst)m_Cashier.m_strFilter+="
Cse某="
m_strEdit3);
if(m_strEdit4.GetLength()){}
strFilter.Format("
Clogname="
m_strEdit4);
四、
设计心得体会
这次毕业实习设计收获颇大,首先对视图和触发器的认识和作用都上了一个台阶。
通过这次的课程设计,我不仅拓宽了自己的知识面,还在实践过程中巩固和加深了自己所学的理论知识,使自己的技术素质和实践能力有了进一步的提高,同时我的专业水平也有了很大的进步。
熟悉大型数据库管理系统的结构,熟悉了数据库系统开发工具的使用。
同时,在软件开发方面也累积了不少经验,对软件工程的知识重要性的认识更深了。
通过设计过程的锻炼,自己分析问题和解决问题的能力都得到了锻炼和提高,完善了自己的知识结构,加深了对所学知识的理解。
这次课程设计完成后,体会颇多,在学与做的过程中,取长补短,不断学习新的知识,吸取经验,达到进步的目的。
在学与做的过程中自身的努力以及相关图书资料的帮助,对ODBC编程接口的理解也从能够使用提高到了熟练使用,对程序开发的一般过程和对数据库知识的运用也有了进一步的了解。
在这个快速发展的当代社会里,数据库已经普遍应用在各个领域。
通过课程设计,我学习到不少的数据库方面的知识,但由于自己的理论知识水平有限,实践知识和设计经验不足,在设计过程中难免存在一些问题,甚至错误。
这些我会在以后的工作和实践中加以改进和提高。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 超市 收银 系统 报告