为销售管理系统准备测试数据

 

问题

为一个销售管理系统准备模拟数据进行测试。要求生成 4 张表,数据的要求分别是:

销售员表,结构如下:

imagepng

要求有 50 名销售员,5 个地区:华北、华南、华中、西南、西北,4 种学历:高中、大专、本科、硕士。

客户表,结构如下:

imagepng

需要 200 个客户数据。

产品表:

imagepng

要求模拟 30 种产品。

销售合同表:

imagepng

要求模拟 10000 条销售记录,分布 2009 年 1 年的时间内。

思路

大致思路:构建测试数据有两个关键问题需要解决,一是如何实现大量数据的录入,二如何保证插入的数据具有一定的随机性。对于第一点,可以使用集算器的循环插入来实现;对于第二点,可以利用 rand 函数实现。

  1. 首先创建销售员表。ID 字段可以使用 1-50 中的数字填入,姓名字段用 chn 函数随意生成即可,学历和地区字段从给出的选项中用 rand 函数随机选择。

  2. 然后构建客户表。ID 字段一样使用序号填入,名称随意生成,联系人和地址字段并不重要,这里写入多个“-”字符填充即可,同样的,电话字段也不重要,随便写个数字即可。

  3. 接下来构建产品表。ID 和名称可以效仿前面两表,价格字段,用 rand 函数生成,以 1000 为下限,这样看起来比较真实。

  4. 最后构建合同表。ID 字段一样用序号,客户、产品、销售员字段都从前面已经生成的表中用 rand 函数随机取出,并提取出 ID 字段值;日期字段可以用 relDate 和 rand 函数生成,保证其在 2009 年范围内;数量字段在一定范围内随机取即可,这里从 1-5 中取。

  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() / 查看合同表

结果

(每次随机产生数据,所以运行结果可能不一样.)

销售员表:

imagepng

客户表:

imagepng

产品表:

imagepng

合同表:

imagepng