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

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

需要200个客户数据。
产品表:

要求模拟30种产品。
销售合同表:

要求模拟10000条销售记录,分布2009年1年的时间内。
l 思路
大致思路:构建测试数据有两个关键问题需要解决,一是如何实现大量数据的录入,二如何保证插入的数据具有一定的随机性。对于第一点,可以使用集算器的循环插入来实现;对于第二点,可以利用rand函数实现。
1. 首先创建销售员表。ID字段可以使用1-50中的数字填入,姓名字段用chn函数随意生成即可,学历和地区字段从给出的选项中用rand函数随机选择。
2. 然后构建客户表。ID字段一样使用序号填入,名称随意生成,联系人和地址字段并不重要,这里写入多个“-”字符填充即可,同样的,电话字段也不重要,随便写个数字即可。
3. 接下来构建产品表。ID和名称可以效仿前面两表,价格字段,用rand函数生成,以1000为下限,这样看起来比较真实。
4. 最后构建合同表。ID字段一样用序号,客户、产品、销售员字段都从前面已经生成的表中用rand函数随机取出,并提取出ID字段值;日期字段可以用relDate和rand函数生成,保证其在2009年范围内;数量字段在一定范围内随机取即可,这里从1-5中取。
5. 最后在数据库中创建相应的表,将结果序表都写入数据库即可。
l 代码
| 
   
  | 
  
   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()  | 
  
   
  | 
  
   /查看合同表  | 
 
l 结果
(每次随机产生数据,所以运行结果可能不一样.)
销售员表:

客户表:

产品表:

合同表:
