Access数据库(test.mdb)中的“来访者登记表”是SARS期间某城市的火车站的登记表的电子录入表格,
(大约有1万条记录,这里只是一段个样本数据)。需要写一个程序将表格进行一个统计和排序,输出到一个文本文件中。要求:
  数据输出文件后缀名为".csv",数据项之间用半角的逗号分隔,每条数据回车换行分隔。格式说明如下:  第一行数据是固定的标题项,固定文本:
  "身份证号,来自城市,最近一次来访时间,来访次数"
  第二行开始是数据项,按照第一行的顺序输出。
  《SARS期前来访人员统计输出样例.csv》是一个给出的样本数据的格式例子供参考  数据排序,按照来自城市排序,5个城市按照下面的列表顺序固定排序放在数据输出的最前面,其他城市按照字符串的比较顺序排序
  5个固定的城市顺序为:
  北京
  上海
  广州
  深圳
  成都  “最近一次来访时间”是指某个人员最近一次到访这个城市的时间,输出请按照 "yyyy-MM-dd"的格式填写。
 请用C#或者Java写一个处理程序
要求代码清晰,易维护,可读性好,执行效率高,如果算法比较复杂请给出适当的算法说明
注意:
  由于是手工录入数据,所以“进入日期”这个字段可能被填写成多种多样的格式
  95%的格式如下几种形式:
  "2003/3/14"
  "2003-3-14"
  "2003.3.14"
  "2003.03.14"
  "20030304"
  "2003年3月14日"
  当然5%还有个别其他的写法,程序里面需要做相应的处理操作,请给出你的处理思路和为什么这么处理的原因
求完整C#代码!!

解决方案 »

  1.   

    在原表中加个字段做城市的排序是不行了,不过可以加个city表,cityID和cityname两列,用串表查也可以。
    select 身份证号,来自城市,进入时间,车次 from 来访者登记表 left join city on 来访者登记表.来自城市=city.cityname order by cityID
    这样没问题吧?还有:
    .csv 格式文件就是excel吧?
    SQL查出数据放在DataTable里,然后怎么输出到excel?还有正则我只是了解一点,具体写法不会啊!求教!
      

  2.   


    比如加个QueryNo字段,然后Update 表 set QueryNo=1 where 城市=北京
    其他的城市类推。
    当然你上面自己写的方法也应该是可以的csv也是Excel
    导出到excel的方法在CSDN上一搜就能搜出很多来
    正则表达式写出来给你参考下:
    string GetFormatDate(string date)//date表示从数据库中取出来的日期
    {
     Regex reg=new Regex(@"(?<year>\d{4})[-/.年]?(?<month>0?[1-9]|1[12])[-/.月]?(?<day>\d{2}|[1-9])");
      string result=string.Empty;
     Match m=reg.Match(date);
      date=m.Groups["year"].Value+"-"+m.Groups["month"].Value+"-"+m.Groups["day"].Value;
      if(Regex.IsMatch(date,@"\d{4}(-\d{1,2)){2}")) result=DateTime.Parse(date).ToString("yyyy-MM-dd");
      return result;