密码不同,编号已存在,性别是‘男’‘女’之外的其他,等等)。如图:
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几个触
发器用来获得系统时间。
//添加新会员的时候,自动获得系统时间作为注册时间 create trigger Insert_Customer before insert on Customer for each row begin :new.Creg := curdate(); end;
//添加交易信息的时候,自动获得系统时间作为交易时间 create trigger Insert_Trade before insert on Tradeinfo
for each row begin :new.Ttime := current_timestamp(); end;
--用户登录系统时插入新记录
create trigger Insert_CashinfoOn before insert on Cashinfo for each row begin :new.CtimeOn := current_timestamp(); end;
--用户更新Crecv时(logout) create trigger Insert_CashinfoOff before update on Cashinfo for each row begin
if :old.CtimeOff is null then :new.CtimeOff := current_timestamp(); end if; end;
为了查询的方便,创建了Query_Tradeinfo和Query_Cashinfo两个视图。 create view 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
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库超市收银系统实习报告(2)在线全文阅读。
相关推荐: