为销售管理系统准备测试数据
问题
为一个销售管理系统准备模拟数据进行测试。要求生成 4 张表,数据的要求分别是:
销售员表,结构如下:
要求有 50 名销售员,5 个地区:华北、华南、华中、西南、西北,4 种学历:高中、大专、本科、硕士。
客户表,结构如下:
需要 200 个客户数据。
产品表:
要求模拟 30 种产品。
销售合同表:
要求模拟 10000 条销售记录,分布 2009 年 1 年的时间内。
思路
大致思路:构建测试数据有两个关键问题需要解决,一是如何实现大量数据的录入,二如何保证插入的数据具有一定的随机性。对于第一点,可以使用集算器的循环插入来实现;对于第二点,可以利用 rand 函数实现。
-
首先创建销售员表。ID 字段可以使用 1-50 中的数字填入,姓名字段用 chn 函数随意生成即可,学历和地区字段从给出的选项中用 rand 函数随机选择。
-
然后构建客户表。ID 字段一样使用序号填入,名称随意生成,联系人和地址字段并不重要,这里写入多个“-”字符填充即可,同样的,电话字段也不重要,随便写个数字即可。
-
接下来构建产品表。ID 和名称可以效仿前面两表,价格字段,用 rand 函数生成,以 1000 为下限,这样看起来比较真实。
-
最后构建合同表。ID 字段一样用序号,客户、产品、销售员字段都从前面已经生成的表中用 rand 函数随机取出,并提取出 ID 字段值;日期字段可以用 relDate 和 rand 函数生成,保证其在 2009 年范围内;数量字段在一定范围内随机取即可,这里从 1-5 中取。
-
最后在数据库中创建相应的表,将结果序表都写入数据库即可。
代码
A | B | C | |
---|---|---|---|
1 | [NorthChina,SouthChina,CentralChina,Southwest,Northwest] | / 地区序列 | |
2 | [Senior High School,Associate Degree,Bachelor,Master] | / 学历序列 | |
3 | 50 | / 销售员数量 | |
4 | =create(ID,Name,Education ,Area) | / 销售员表 | |
5 | =A4.insert(0:A3,~,"Salesperson_"+string(#),A2(int(rand()*A2.len()+1)),A1(int(rand()*A1.len()+1))) | / 写入销售员数据 | |
6 | 200 | / 客户数量 | |
7 | =create(ID,Name,Contact,Address,Phone) | / 客户表 | |
8 | =A7.insert(0:A6,~,"Client"+string(#),"---","------","87654321") | / 客户数据 | |
9 | 30 | / 产品数量 | |
10 | =create(ID,Name,Price) | / 产品表 | |
11 | =A10.insert(0:A9,~,"Product"+string(#),int(rand()*90)*100+1000) | / 写入产品数据 | |
12 | 1000 | / 合同数量 | |
13 | =create(ContractNo,Client,Product,Sale,SellDate,Quantity) | / 合同表 | |
14 | for A12 | / 循环插入 10000 条记录 | |
15 | =A7(int(rand()*A7.len()+1)).ID | / 随机取一个客户的 ID | |
16 | =A10(int(rand()*A10.len()+1)).ID | / 随机取一个产品的 ID | |
17 | =A4(int(rand()*A4.len()+1)).ID | / 随机取一个销售员的 ID | |
18 | = elapse ("2009-1-1",int(rand()*365)+1) | / 随机生成一个 2009 年内的日期 | |
19 | =A13.insert(0,A14,B15,B16,B17,B18,int(rand()*5)+1) | / 写入合同数据 | |
20 | |||
21 | / 下面将生成的序表都写入文本文件 | ||
22 | >file("C:\\test_Sale.txt").export@t(A4) | ||
23 | >file("C:\\test_Client.txt").export@t(A7) | ||
24 | >file("C:\\test_Product.txt").export@t(A10) | ||
25 | >file("C:\\test_Contract.txt").export@t(A13) | ||
26 | =file("C:\\test_Sale.txt").import@t() | / 查看销售员表 | |
27 | =file("C:\\test_Client.txt").import@t() | / 查看客户表 | |
28 | =file("C:\\test_Product.txt").import@t() | / 查看产品表 | |
29 | =file("C:\\test_Contract.txt").import@t() | / 查看合同表 |
结果
(每次随机产生数据,所以运行结果可能不一样.)
销售员表:
客户表:
产品表:
合同表:
英文版