佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 3456|回复: 16

database form6

[复制链接]
发表于 13-7-2014 10:24 PM | 显示全部楼层 |阅读模式
小弟来问问题啦。。
不是说不做,是不懂怎么做,唉,我老师也不懂,要我们自己学。。
The committee of Kampung Batu residents decides toopen a Jimat Mini Market in the village in order to reduce the burden ofinflation. The prices of the products offered will be competitive and thecustomers will be allowed to purchase on credit and make the payment monthly.The customers will be given bonus points based on the amount of purchases madewhich can later be redeemed with vouchers to purchase any products from themini market. The customers will get one bonus point for every RM100 purchasemade. In order to get that privilege, the customers will have to register asmembers. Members who introduce another customer to become a member will gain 10points. Any members who exceed a total debt of RM500 are not allowed topurchase in credits.
The management requires you to develop an informationsystem to manage the Jimat Mini Market customers‟ accounts with the followingconsiderations:
a. Each member is assigned a unique membership number.The membership information may include name, identification card number,address and contact number.
b. Each product is assigned a unique product number.The product‟s information may include type, price and quantity in stock.
c. The amount, bonus points and date of everypurchase made.

okay题目就是这个,

customer get 1 bonus point for every rm100
customer register as member only can get bonus point
introduce member gain 10 pts
member exceed a debt of rm500 not allowed to purchase

member info: id, name, ic, add, contact
product info: id, type, price, quantity
purchase made: amount, bonus, date  

我create table后,我也不懂要怎么做,老师也没有解释(她说她不会。。。。。。。。。。。。。。)
so member是不是要加bonus point and debt? 那么要怎么才能link到去calculation
product 的 price又怎么link 去 purchase made那里calculate total price?
其实真的很难懂。。希望有高手可以教导和分析。。。

我是用access 2013的。。
回复

使用道具 举报


ADVERTISEMENT

发表于 14-7-2014 05:50 PM | 显示全部楼层
我還不是高手,不過試看解答
  1. so member是不是要加bonus point and debt? 那么要怎么才能link到去calculation
复制代码
對.加bonus  point和 credit/outstanding/balance/debt.debt其實不太好聽.
customer get 1 bonus point for every rm100

introduce member gain 10 pts
  1. customer get 1 bonus point for every rm100
复制代码
2種算法,方正你老師也不懂你就隨便選一個..
在invoice/cash sales/whatever module...
比如這個月customer買了3次,各為250, 350, 550
1.Per invoice/Cash sales/whatever. rm250,350,550各得到2,3,5 bonus point.總共10point
2.Per month. rm250+350+550 =1150 = 11point.
看到不同了嗎.
建議第一個,因為比較常見,第2個要我解釋就有點懶
用第一個的話,每一個transaction就update去bonus point field
  1. introduce member gain 10 pts
复制代码
在create new customer那裡,加一個referrer/introduceBy/whatever, user 可以選介紹人,介紹人可以拿10points.
user一save你就給referrer 10 points.但小心一點.要考慮到給錯referrer,也就是user/admin可以改referrer.然後原本的那個referrer要扣回來
  1. customer register as member only can get bonus point
复制代码
這個沒什麼的.如果那個customer不是member就不用給point.你要給也給不到,在member table都找不到他

努力...祝coding愉快



回复

使用道具 举报

发表于 17-7-2014 12:34 PM | 显示全部楼层
楼上的小姐讲到许多重点,但我这边要补充一些东西
POS 是MIS最基础的,但是有时候就连大公司的POS系统未必做的好

主要是
1) stock <1---N> itemize <N---1> invoice <N---1> customer <1---N> intro <N---1> "customer"
2)不管是不是会员(member) 都要加进customer里面, 并且用一个Field 来记录是否是会员,例如 "is_member"

(1)其实是ERD, 重点是最后一个"customer"的 table 其实是个loop, customer == "customer"
计分方式是customer 的table里面需要一个Field 为 total_point
而看你要依每样东西做计分,还是依一个invoice 来积分(推荐),如果是后者,在invoice的table里面就多一个栏位为 "point"

(2)的用意如下:
  1. 如果那個customer不是member就不用給point.你要給也給不到,在member table都找不到他
复制代码
这个会衍生一些问题,例如:如果有人有买东西,但是他不是会员,你的系统要怎样记录?

其他的例如redeem啦,debit 啦诸如此类的,就只需在适当的table加上适当的field, 例如, invoice内加上 “unpaid”, 或在 customer 加上 "locked"等等

其他就你自己发挥,祝安
回复

使用道具 举报

发表于 17-7-2014 03:27 PM | 显示全部楼层
musicalangel 发表于 17-7-2014 12:34 PM
楼上的小姐讲到许多重点,但我这边要补充一些东西
POS 是MIS最基础的,但是有时候就连大公司的POS系统未必 ...
  1. 这个会衍生一些问题,例如:如果有人有买东西,但是他不是会员,你的系统要怎样记录?
复制代码
我想這有2個方法.
1.在invoice table, memberID = "" or null.
2.在member table create 一個Customer id, 給所有的non member.
我本身就會喜歡1.但一般的公司喜歡2.
回复

使用道具 举报

发表于 17-7-2014 04:15 PM | 显示全部楼层
yan13 发表于 17-7-2014 03:27 PM
我想這有2個方法.
1.在invoice table, memberID = "" or null.
2.在member table create 一個Customer  ...
  1. 楼上的小姐讲到许多重点,但我这边要补充一些东西
复制代码
我剛剛查了一下,目前還不是小姐
回复

使用道具 举报

发表于 17-7-2014 05:29 PM | 显示全部楼层
yan13 发表于 17-7-2014 04:15 PM
我剛剛查了一下,目前還不是小姐

所以是"小妹"?
呵呵

回复

使用道具 举报

Follow Us
发表于 17-7-2014 05:42 PM | 显示全部楼层
musicalangel 发表于 17-7-2014 05:29 PM
所以是"小妹"?
呵呵

老衲心如止水.
回复

使用道具 举报

 楼主| 发表于 17-7-2014 10:40 PM | 显示全部楼层
谢谢高手解答
我想问有没有可能,当我用yes/no来confirm那个是不是member,如果是yes,那么member的格子就可以写member id,如果no就skip member id
大概的问题就在图里面
还有几个问题的,solve了这个先。。。
database.png
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 17-7-2014 10:44 PM | 显示全部楼层
补充:因为当我选择multiple lookup value时,我就不能计算那个total price(是不懂怎么计算哈哈)
请指点指点
回复

使用道具 举报

发表于 18-7-2014 07:05 AM | 显示全部楼层
请问你是打算只是用access 来完成你讲的这些事情吗?

  1. 如果no就skip member id
  2. 选择了MemberID 后, 名字跟P_Type会出来
  3. 计算total_price
复制代码
然后你贴的照片是否是access里面generate 出来的吗?(抱歉,我不清楚access的功能)

本帖最后由 musicalangel 于 18-7-2014 03:28 PM 编辑

回复

使用道具 举报

发表于 19-7-2014 06:10 PM | 显示全部楼层
php ajax, 选了M_id, 就找这个id的名字,P_id
也是那样
回复

使用道具 举报

 楼主| 发表于 20-7-2014 11:25 AM | 显示全部楼层
musicalangel 发表于 18-7-2014 07:05 AM
请问你是打算只是用access 来完成你讲的这些事情吗?然后你贴的照片是否是access里面generate 出来的吗?(抱 ...

对,access的
回复

使用道具 举报

发表于 20-7-2014 07:41 PM | 显示全部楼层
如果照你講的, 全部要用access去完成, 我就不會了
回复

使用道具 举报

发表于 28-7-2014 09:54 PM | 显示全部楼层
我們老師可以幫您解決,有需要的話,請pm
回复

使用道具 举报

发表于 24-11-2015 11:44 AM | 显示全部楼层
首先,你的数据库需要有2个基本数据表:Customer 以及 Product。
然后,你需要 Sales 数据表来记录顾客的购买。

IC 具有唯一性(伪造 IC 不在考虑中),因此如果使用 IC 作为 Memeber ID 可以省下维护 Member ID 的麻烦。至于你的老师接不接受,那是她的个人喜好,自己试探吧。

因此,各数据表的设定:
Customer
IC,Name,Address,Contact,Referee

Product
ProductID,Type,UnitPrice,StockQuantity

Sales
BillID,Date,IC,ProductID,PurchaseQuantity,Total,Paid

BonusUsed
IC,TotalBonusUsed
注:题目里没有注明如何处理使用Bonus Point的详情,因此我只是设计了一个minimum能用来做计算的架构。如果有必要,你还需要添加如 DateSpend,BillNumber 等数据。

Program/Query:
1)当登陆会员时,如果有介绍人,Referee就填上Referee的IC,没有Referee的就是初代会员。

2)商品登陆没什么特别的,也不在题目范围中,因此平铺直叙就是了。

3)但顾客购买东西时,

3.1)当完成一单交易(输入完所有Products,计算出各项的 Total 以及 GrandTotal 后,检查 Sales 数据表,该顾客累计的 Paid = false 的总数是否已经达到或超过 RM500,如是,拒绝交易。以下并不是纯SQL Syntax,而是混杂着Pseudo Code,如果你照抄交功课你就倒大霉了。另外,我采用的是 C++ 和 MySQL 的语言格式。

  1. Debt = (SELECT SUM(Total) FROM Sales WHERE Paid = false);
  2. if(Debt >= 500)
  3. {
  4.     ShowMessage("Sorry, dude, pay up some debt before you can make any more purchase!");
  5.     return;
  6. }
  7. else if(GrandTotal of this purchase + Debt >= 500)
  8. {
  9.     ShowMessage("Total debt exceeded limit! No sales for you!");
  10.     return;
  11. }
复制代码

注:题目里并没有注明必须用月结的方式处理债务,因此计算负债时不必烦恼日期。

3.2)虽然题目没有注明需要处理还债部分,但是我还是要提醒你,当顾客还钱后,记得将相应的 Sales 的 Paid set 成 true。

3.3)
  1. TotalBonusPoints = ((Sum of all GrandTotal) / 100) + ((SELECT COUNT(IC) FROM Customer WHERE Customer.Referee = This IC) * 10);
复制代码


3.4)
  1. AvailableBonusPoints = TotalBonusPoints - TotalBonusUsed;
复制代码


3.5)非会员购物,只要把 IC 放空就行了。

根据你提供的题目,差不多就是这样。至于如何 handle UI 这些自己去看 Access 的 Document 吧。

回复

使用道具 举报

发表于 24-11-2015 12:01 PM | 显示全部楼层
本帖最后由 geekman 于 24-11-2015 12:04 PM 编辑
ThomasWoh 发表于 17-7-2014 10:40 PM
谢谢高手解答
我想问有没有可能,当我用yes/no来confirm那个是不是member,如果是yes,那么member的格子就 ...

1)不是好设计

2)如上

3)
  1. CustomerIC.OnKeyPressed:
  2. CustomerName.Text = SELECT Customer.Name FROM Customer WHERE Customer.IC LIKE '%:IC%';
复制代码

注:%是MySQL的万用键,Access用的SQL是否同样我不确定,:pIC 则是MySQL的 Parameter Syntax,:代表接下来的是 ParameterID,p是我自己的习惯prefix,代表Parameter,IC只是纯粹一个代号,我是用IC,是因为这个Parameter对应Customer.IC。之所以使用p做Prefix,是为了区分Parameter ID 和 Column Name。

4)你不应该这样设计,而是应该设计一个input table,对应我之前的回复的那个Sales Table。每项Product对应一个Row,而不是一股脑地将所有信息输入在一个Text Field里面。

5)参考(3)

6)之前的答案里已经有线索了。

7)参考(4)

8)不必记录每次交易的Bonus,因为你的题目并没有实际指明如何处理 Bonus Point,我的答案是采用即时计算(total collected - total used),简单方便(当然如果数据库很庞大-上GB的容量,这就不是很好的设计)。


评分

参与人数 1积分 +5 人气 +1 收起 理由
musicalangel + 5 + 1 谢谢分享

查看全部评分

回复

使用道具 举报


ADVERTISEMENT

发表于 24-11-2015 12:15 PM | 显示全部楼层
哦,现在才发现这是陈年老帖,被某wendylim1991盗墓挖出来的老僵尸贴了。。。楼主应该进大学了吧?快毕业了?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 29-3-2024 03:24 AM , Processed in 0.063769 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表