我是大帅哥,擅长LINUX和C语言,还有脚本,希望和大家交朋友 QQ:21488275 MSN:chenkuo2006@hotmail.com

《江西运营商邮件统计报表》源代码

2007-11-05 18:42:25 / 精华(3) / 置顶(1) / 个人分类:C语言编程

软体说明:LUPA开源社区z;j1VIZ4P3~
LUPA开源社区c_ V}&_*I%l7lVp+`

1brz;qV]n0一)实现要求:LUPA开源社区 ]}W:E:rt
LUPA开源社区A H&un&uoUl[ R
1)每天生成日报表,到report/day目录下,文件名为日期号+.csv,如5号,即为05.csv
!CE!O,pc7X02)保留一个月,下个月覆盖上个月的文件LUPA开源社区 O3caU kJ%Su
3)将每天生成的日报表文件COPY一份到sendto/day目录下,文件名固定为day.csvLUPA开源社区&buD/x~'c+c
4)每周生成周报表,到report/week目录下,文件名为周号+.csv,如本月的第二周,即为02.csvLUPA开源社区-R D7L']+N*UV
5)保留一个月,下个月覆盖上个月的文件LUPA开源社区0A(W7R1K+?x$c9d
6)将每周生成的周报表文件Copy一份到sendto/week目录下,文件名固定为week.csvLUPA开源社区6@.?GV7^.FshY
7)每月生成月报表,到report/month目录下,文件名为月号+.csv,如本月,即为11.csv
:j.xynN l08)将每月生成的月报表文件COPY一份到sendto/month目录下,文件名固定为month.csv
S k/X:n,Ov&F Yb09)日报表即每天的0时,统计生成昨天的报表LUPA开源社区j ^m.yO
10)周报表即当前时间为周一时,统计上一周的数据
%N(b0vS*N011)月报表即当前时间为本月1号,统计上一月的数据
@-wV~'S-uE012)日报表要在每天的报表的第一行第一列写入日期,如2007/11/11LUPA开源社区%ad$m:}@
13)周报表要在每周的报表的第一行第一列写入日期,如2007/11/11LUPA开源社区 U_yg.] |\-^c
14)月报表要在每月的报表的第一行第一列写入日期,如2007/11
x%uk;yPSB+~r015)统计报表数据由行(地区),列(模板)二维数据组成,模板要又分为注册用户总数,新增/退订/发送/接收四类数据
F8k8O[ |$p@$])p016)数据中间有逗号分隔,文件后缀为.csv,即用户用EXCEL软体打开后,即可看到自动转换后的EXCEL数据
H _fM ru:v017)将不在号段表里的号码段写到unknown.txt下面,以便集中聚合处理LUPA开源社区`2@^"w'H3E6v }M

7nw7h_U0LUPA开源社区&@LJzd:m

b0{K8|#J%R9\ vR0数据统计原始格式如下:LUPA开源社区!m.y`:Bn O:W&l1_

?6jTFb3Sh[z9O02007-11-09,统计项目,南昌,抚州,九江,上饶,宜春,吉安,赣州,景德镇,萍乡,新余,鹰潭,全省LUPA开源社区 hz ]DhZ Qm0~
总,当前注册用户总数,124498,48311,21115,57895,14603,16616,59184,34146,15624,15432,10514,417938
#S!y$bR%J2kK0,日新增用户数,15,0,0,215,0,0,65,0,0,0,0,295
p{EA3QCt}O0,日退订用户数,0,0,15,5,0,0,0,10,0,0,0,30LUPA开源社区#WZ C-PU m3P/B
,日发送邮件总数(含WEB/WAP/SMTP),163,118,21,111,10,140,975,0,0,396,7,1941
z|([.zX X.xWq0,日接收邮件总数(含WEB/WAP/POP3),527,137,18,109,11,124,186,2,1,76,14,1205LUPA开源社区I'? Z+R Gg
3元,套餐注册用户总数,39076,477,4447,18898,4451,1175,2647,16172,5350,6876,1227,100796
KN5a9Z5N0,新增用户数,3,0,0,43,0,0,13,0,0,0,0,59
^0W+QcV!O _Ht.`0,退订用户数,0,0,3,1,0,0,0,2,0,0,0,6LUPA开源社区@:w m4w;CF!P5m7d
,日发送邮件总数,8,0,9,1,0,0,21,0,0,1,0,40
1bMv*N{H V0,日接收邮件总数,1,0,10,14,0,0,3,1,0,1,0,30
#en&N*m&d5p06元,套餐注册用户总数,39059,476,4251,18763,4446,1173,2625,16172,5348,6876,1223,100412LUPA开源社区#E2ti6?9Adq,?
,新增用户数,3,0,0,43,0,0,13,0,0,0,0,59LUPA开源社区 m&^'`Q(|1_'\'cPlcU
,退订用户数,0,0,3,1,0,0,0,2,0,0,0,6
\C9j+b;wxy%N0,日发送邮件总数,8,0,9,0,0,0,21,0,0,1,0,39LUPA开源社区f/?+g$gbI
,日接收邮件总数,1,0,3,2,0,0,1,1,0,1,0,9
1Q2V3y-q i0优惠,套餐注册用户总数,17853,37472,192,874,1195,126,313,224,826,226,4184,63485
,v#^ Z%B l*yH0,新增用户数,3,0,0,43,0,0,13,0,0,0,0,59LUPA开源社区5gAz?ywME?(`[ H
,退订用户数,0,0,3,1,0,0,0,2,0,0,0,6
d1?3`IW7}F0,日发送邮件总数,3,0,0,0,0,0,9,0,0,0,0,12LUPA开源社区KsOj7d6k\[
,日接收邮件总数,268,27,0,0,1,9,8,0,1,1,4,319LUPA开源社区m(^Q*T"pv4D.iG
体验,套餐注册用户总数,26798,9389,12220,19136,4146,13371,53546,1575,4092,1244,3810,149327
\*]Z%U_,r }0,新增用户数,3,0,0,43,0,0,13,0,0,0,0,59LUPA开源社区t TN)m9SN!b
,退订用户数,0,0,3,1,0,0,0,2,0,0,0,6LUPA开源社区&]R#G.N2@}U7|5qnH
,日发送邮件总数,1,11,3,11,1,12,912,0,0,0,0,951
)T }]*\0e l \0,日接收邮件总数,32,4,5,13,1,0,162,0,0,0,2,219
.UB\&T3|a0公免,套餐注册用户总数,1712,497,5,224,365,771,53,3,8,210,70,3918
:~0\8EA'[0,新增用户数,3,0,0,43,0,0,13,0,0,0,0,59
/L:MKtf%Y&C0,退订用户数,0,0,3,1,0,0,0,2,0,0,0,6
1if2k@L#eH,i0,日发送邮件总数,143,107,0,99,9,128,12,0,0,394,7,899LUPA开源社区S;d?q\"c k3D9@Z"cy
,日接收邮件总数,225,106,0,80,9,115,12,0,0,73,8,628
"QgK)P}0
U:T1UN3dJ-_j0 LUPA开源社区8F,O*S,MAZ3r3KD[

y"N`.De*vqV0二)环境说明
X ~9t5Myw7fWm0
S];z3Igx Gl01)安装在LINUX上LUPA开源社区 jG(b ]2o'f `
2)连接数据库部份依赖于ORACLE的动态连接库LUPA开源社区_)mt2e v%T0|p:^%T)h
3)基本目录如下:LUPA开源社区 {Z"y"t/GAx3w
bin目录存放可执行文件
N0A&Vri(Q0file目录存放下载后的文件及地区号段对映表
/}w dG_M0lib目录存放ORACLE的动态连接库
ac$b,c{0network目录ORACLE的tnsname.ora文件
7j hI&H-mx t0ocommon目录存放ORACLE的字符集文件
A n S4bcK!lx.rb0report目录存放生成的报表文件LUPA开源社区` _1sUJc/z u,d
sendto目录存放每天生成的报表文件,主要是提供给开发,每天产生后即删除LUPA开源社区`6| ?C[6u#BT8y?b
tmp目录存放每天生成报表临时文件,主要用途是做周/月的数据累加LUPA开源社区 mS%zO%A(~r2B4\2r
LUPA开源社区8VA9t(JF~y
说明:LUPA开源社区cqk'y.iC4| a)S-Y
file目录存放jxmcc.txt文件
S*cD*c Aj4uL0jxmcc.txt文件里面是号段对映的地区市信息LUPA开源社区UCl*G)OT;EPO kc

4l*\;V1e%~0lib目录存放
9A%Rn!U,^5S0libclntsh.so.9.0
-tx2wn"j| BaV0libwtc9.so
R `FE7A D`;?6V0在程序编译和运行时动态连接
Xz'Wls6f(? P2P0
8w6eXqm.YMO Yj0network目录存放
{+k9_;r+U9?0/home/ceno/network/admin/tnsname.ora
Y$Jd~+C\ID0LUPA开源社区7C cC.l1kc:`
内容如下:LUPA开源社区y5U9B7k/Y)~,uRK
EMAIL=
_{|4E~,r@0  (DEscrīptION =
6f |$OoXyK m0S7d0    (ADDRESS_LIST =LUPA开源社区IX2n7yL o
      (ADDRESS = (PROTOCOL = TCP)(HOST = maildb)(port = 1521))LUPA开源社区'nZ7]h }-Y(C}
    )LUPA开源社区1|jmU5I
    (CONNECT_DATA =
"~5v+`6Koq;]{0      (SERVER = DEDICATED)
]Qr5A0Ei0      (SERVICE_NAME = email)
(QX B+uZ4q#v rB0    )
!y h@t c.r~r1?0  )LUPA开源社区x|!bw2h
注:HOST=maildb,是要连接的主机名,port为端口号,SERVICE_NAME为SID
u%y6ef TnhB0以上信息要根据实际情况配置
8y/y GsyY!\0
|kt cK.i~0LUPA开源社区#`!F jJ5Sw
ocommon目录存放ORACLE的字符集,如没有该字符集,在查找varchar等字符时,会出现乱码LUPA开源社区9I#Da0j2w*V4r w

f~[3Ot7u&j;KL0report目录存放生成的最终报表,分成day,week,month三个目录LUPA开源社区5P%Vgg6w/?M"k c
LUPA开源社区7xG bE!@ db5b\
sendto目录存放生成的报表,分成day,week,month三个目录,每天产生的文件即放入对映的目录下,开发操作完成后,即删除LUPA开源社区DV;l\ Se

:q0Ay7Q#D&I0tmp目录存放存放生成的临地报表,分成day,week,month三个目录,在周统计和月统计时做累加LUPA开源社区HC}5u!{I%d{;}*V
LUPA开源社区)H m }!H"ruJ6`1w
 LUPA开源社区*l&n,Y2i X0m D3^6D
LUPA开源社区:J2M%O.e{V'\.W3a4U h
三)安装编译说明:
Hzn*ng0T0
"S i'f6a7Wc.N/v01)指定执行此程序的用户
4z~S']`5n0如:
d P8u dI `$} q{}0useradd cenoLUPA开源社区'wC1y'I2Grt

&| JS"ly1}02)进入该目录
4g{!@ueD.`0cd /home/cenoLUPA开源社区8s0{zou#@&sgg

"f-EL1j]~03)将扩展包解压缩于用户目录下LUPA开源社区T!|3]s'kL`
tar xvzf jxyd.tar.gz
P2f k8_^0LUPA开源社区-c"y9P4nw
4)编辑ceno用户环境变量LUPA开源社区w7L:_H5};Z8Y(lS
vi .bash_profileLUPA开源社区Df%]*O:Ebq$@L'G
LUPA开源社区6I nLg!_
加入以下内容:LUPA开源社区o~VHC p8I#n-B+F
export ORACLE_HOME=/home/ceno/
&b"L0k^b4u0export ORACLE_BASE=/home/ceno/
QPR-Ym`v ?%y0export ORACLE_SID=email
3t{[7Othz0@ X1Ao0export LD_LIBRARY_PATH=$ORACLE_HOME/libLUPA开源社区wn6?7dJ
export NLS_LANG=.utf8LUPA开源社区8Px7FR3sD.Z,p9BX

6f~%V*Of2_ M0
!a;d W)\(prLa05)编译链接
7{2OB.wRtwO8_O8x0cd /home/ceno/srcLUPA开源社区 WS2aZc
sh install.sh
2b{C!I p0ZX0LUPA开源社区;XotBP*x

B Y-N/w'Z+fR06)执行reportLUPA开源社区UeKi7jLNUXx
reportLUPA开源社区w$Pz6XE

lu!~ P }0 LUPA开源社区boiavs

D2r9W!V$m0 LUPA开源社区%m K%ERBgu

c!fNf&A_#~%Vyco0四)程序执行流程:
0XSQ Oa+UL7a0LUPA开源社区e5p GBi [5p
1)获得周的序列号LUPA开源社区p{|3h&} e#}}Z
if ((fp=fopen("/home/ceno/log/message","rt"))==NULL)
/zp1L2\ |9L,u0{LUPA开源社区/s }p)E^8l#T_ ?
        printf("open file /home/ceno/log/message failed!\n");LUPA开源社区6Hb*f#Ir#c2~ @0v D
        exit(EXIT_FAILURE);LUPA开源社区VGD:E:[bb
}LUPA开源社区:|]}%Ed/_B
fscanf(fp,"%s",seq_flag_strings);
"dn!w"w3G1M$s,R3w0作用:
~:v,f&{!|5zgU)}0用message中的序列号控制周的文件名,即一个月中的第几周,每次到周1即自加1,如果到每月1号,自动清0
)Ugr+Ch;xe5J;zQ0
!},x!FW+Ax.I(ov02)读取数据库
`BG:pSP0LUPA开源社区$?V#[n0U8j4Qy
利用PRO*C调用函数read_db_to_file(),写到各个模板文件中,以便以下的程序读取
j8]bPP]0LUPA开源社区(rK:DL0Y6o q*R5z
3)统计模板的用户总数,用户增减,用户收发LUPA开源社区ck3xF(Hj;j_i1hJ
MailAreaTotal("/home/ceno/file/quanqiu");
MM-G~tH,t0UserIncDel ("create","/home/ceno/file/quanqiu","/log_mail_purchases",6);
;[ nY6jA^0UserIncDel ("delete","/home/ceno/file/quanqiu","/log_mail_purchases",6);LUPA开源社区^:D'Jo#e7@ eE
MailRemoteLocal (" remote ","/home/ceno/file/quanqiu","/log_mail_queue_out",8);LUPA开源社区/u2s_I Eb9F,I~7d0NRW
MailRemoteLocal (" local ","/home/ceno/file/quanqiu","/log_mail_queue_out",7);
(DD!D4ssmCT0LUPA开源社区Iz6qD(mh%YP}

6IaN5YT1E:V3VP[.?04)读取以上生成的数据,赋值到array数组
:N8nN2A b6u{%}0fread_file_day(array_day);
:x-j4F N"e!@P0
;mD:nH$Xq PXt0LUPA开源社区'w&JfCc G6^._
5)将array数组中内容写入到日统计文件,即EXCEL最终文件
r$H8O%}/z|3i q3]1v(L0fwrite_file_day(array_day,seq_file_day);LUPA开源社区n6I3I7D!jjx:@

} U&e0l_4L$M.N V06)将array数组中内容写入到临时文件,以便周统计用LUPA开源社区%x+~R,bU
fturn_array_file(array_day,seq_file_day_tmp);LUPA开源社区qzU3W2K:e^+I

2X:leC,Tvyo07)将EXCEL最终文件COPY到sendto目录下,供开发程序调用
1d7Ka I P0copy_file(seq_file_day,sendto_file_day);LUPA开源社区{9J&QG"k5zi:w

PUY9U8JM@$V08)周统计用week_buf判断,确定是周一,进行上周统计(计算累加临地目录下7天数据),序列号累加,产生周文件LUPA开源社区S6A+|&V6_/L
9)月统计用today_buf判断,确定是本月1号,进行上月统计(计算累加临时目录下5/4周数据)LUPA开源社区\6Q)?X [ T"u
LUPA开源社区?]"C9XO`

prUs3k@0
Gy5T1GtZ0JX `/V0
0xw'_#rViF3o"e,o0
%~(M*m&nM[L0源代码:LUPA开源社区 {t~ t._{F PN"h\9i

'd|]~^8R\r^0//////////////////////////////////////////////////////
&Ak!d:u)b.j0//主程序main函数 LUPA开源社区3}"@8WA4{pI_ k2~@E4G
//源代码文件:main.c LUPA开源社区o'l9it-R%Z)n.pS
////////////////////////////////////////////////////// LUPA开源社区/Sj9dkx"AY
 
[{&xBH.[0#include <stdio.h>
(} [`n8M0#include <string.h>
/HJ Gv VT0#include <stdlib.h>
dEO0j%@ h'Adu0#include <time.h>
/~ czP)a X7s|!s0 LUPA开源社区([j'z.y1@~
int main ()
z#GK;u!]z0{
3CPxR/J3@0 LUPA开源社区9IB\#~&f
        FILE *fp;
8|x|p)s O0        char seq_flag_strings[4]; LUPA开源社区G4s-^'[;~ ?%~|W }
        char seq_file_day[30]={"/home/ceno/report/day/  .csv"};
_Et7evB0        char seq_file_week[30]={"/home/ceno/report/week/0 .csv"};
"VxaBq C0        char seq_file_month[30]={"/home/ceno/report/month/  .csv"};
]"e F$H8I*_W1VP0        char seq_file_day_tmp[30]={"/home/ceno/tmp/day/ .txt"};
X |%go$J:mS0        char seq_file_week_tmp[30]={"/home/ceno/tmp/week/ .txt"};
ny#_pCr}0        char sendto_file_day[30]={"/home/ceno/sendto/day/day.csv"}; LUPA开源社区Q/b5\Zl)f/Q0K i3v
        char sendto_file_week[40]={"/home/ceno/sendto/week/week.csv"}; LUPA开源社区y;}Irr:i ?
        char sendto_file_month[40]={"/home/ceno/sendto/month/month.csv"};
?2?8t Y+pM0 LUPA开源社区N4m`J*D\2Cc)w8]
        int seq_flag_int; LUPA开源社区*mpp(r2R:JX
        int array_day[30][12]; LUPA开源社区H%pn!K7C_
        int array_week[8][30][12];
kc9v)OFw0        int array_month[6][30][12];
d#bq$F OL0        char yesday_buf[3];
B~D H]0        char today_buf[3]; LUPA开源社区r,X&?uc
        char week_buf[3]; LUPA开源社区~U#B'v0Z0VT*o
        char month_buf[3];
"] iHV&Z? S,]0        char filename_week[7][50]={{"/home/ceno/tmp/day/1.txt"},{"/home/ceno/tmp/day/2.txt"},\
/x [nz+v x@0E0        {"/home/ceno/tmp/day/3.txt"},{"/home/ceno/tmp/day/4.txt"},{"/home/ceno/tmp/day/5.txt"},\ LUPA开源社区9X(SELN7lV6A5S
        {"/home/ceno/tmp/day/6.txt"},{"/home/ceno/tmp/day/7.txt"}}; LUPA开源社区],~k(P"j\O
        char filename_month[5][50]={{"/home/ceno/tmp/week/1.txt"},{"/home/ceno/tmp/week/2.txt"},\ LUPA开源社区 b g^ J*B ei7Q
        {"/home/ceno/tmp/week/3.txt"},{"/home/ceno/tmp/week/4.txt"},{"/home/ceno/tmp/week/5.txt"}}; LUPA开源社区2~-T9jM ?+{hL
 
1Z{V S0Q/j0        
.t~qZQ7l0 LUPA开源社区 whV6nxZ
        //读取/home/ceno/log/message文件中的标识数字,并赋值给Seq_flag_strings变量 LUPA开源社区8n a7TKi @x
        if ((fp=fopen("/home/ceno/log/message","rt"))==NULL)
s&~!zDpo&[i-O0        { LUPA开源社区oS.~#n9p9s'aq1c k r*z"t
                printf("open file /home/ceno/log/message failed!\n");
(K!g{/yk [3FV0                exit(EXIT_FAILURE);
C a$n*T'VG ~&l YY:O0        }
;m [my p#Y5l0        fscanf(fp,"%s",seq_flag_strings);
#f:u ~e}I6Z2m0        printf("seq_flag_strings:%s\n",seq_flag_strings); LUPA开源社区/R:V"rV5sYee
 
Kj9Sn0g0m Q0ZC0 LUPA开源社区R@Pr%L,p?
        remove("/home/ceno/file/tempfile.bak");
3o;lM.O/W-f:[%H0        printf("Delete /home/ceno/file/tempfile.bak\n"); LUPA开源社区1[ mL3r)Y4dT [T(mr
 LUPA开源社区 }1I{%\EI
        //time(NULL)-(time_t)(60*60*24)提取昨天的日期 LUPA开源社区'Cfu^.E4lv?/|
        time_t timep_yesterday=time(NULL)-(time_t)(60*60*24); LUPA开源社区6O%@^d_`#@Wt2Y
        
&O+xn8KxcA AN%s0        //提取当天的日期 LUPA开源社区!EW.D4b \ie&^
        time_t timep_today; LUPA开源社区V2Xt(z{_BG&j
        struct tm *p; LUPA开源社区f/OA"}d5R5QJ
        time(&timep_today);
@2]z'Vp%r)a7` J0        p=localtime(&timep_today); LUPA开源社区4P-wL0UU8F Tk}U
         LUPA开源社区n8Ax3C.S$I&Gd
        //赋值昨天的日期(yesday_buf),当天的星期几(week_buf),当天的日期(today_buf),当天所处的月份(month_buf) LUPA开源社区 ^/]*X*~ C%GX_
        strftime(yesday_buf,sizeof(yesday_buf),"%d",localtime(&timep_yesterday)); LUPA开源社区5}?k]zYc*D&[
        strftime(week_buf,sizeof(week_buf),"%u",localtime(&timep_today)); LUPA开源社区B{n*XTY+t
        strftime(today_buf,sizeof(today_buf),"%d",localtime(&timep_today)); LUPA开源社区N(GsxF
        strftime(month_buf,sizeof(month_buf),"%m",localtime(&timep_today));
+[X3rR:V-o0K0W!Q/\0        
)?#s/l:C0e`p0 
5C4fJYJ~0        //将取得的昨天日期字符赋值给seq_file_day(昨天全路径文件名字符串) LUPA开源社区i _ G%Fg:N%`;g&~
        seq_file_day[22]=yesday_buf[0]; LUPA开源社区2K#QX;Fm*b oQy c3Y
            seq_file_day[23]=yesday_buf[1];
F&Dsf;r!e0            //将取得的星期字符赋值给seq_file_day_tmp(1-7.txt循环文件名字符串)
xwfo:o1{iB#C_V)a0            seq_file_day_tmp[19]=week_buf[0]; LUPA开源社区#| u5Q SC2uG
    
Me)J2^w a V0            //将取得的月份字符赋值给seq_file_month(月全路径文件名字符串)
W@)Q-Fi o(w0            seq_file_month[24]=month_buf[0];
q_7k,Zc-H.?6E0            seq_file_month[25]=month_buf[1];
t&NEAl0     LUPA开源社区h w&?(fr4m
            //如果当前日期为本月1号,将seq_flag_int至0,初始化周序列号(seq_flag_int)
v){5H\gD3H,Z0            if(strcmp(today_buf,"01")==0)
~6eL YtLm0            {
:G%?;? }L+kt0                seq_flag_int=0;
Nt5ST v:FGZ5I;d0            }
KDz \1U(A2l0            seq_flag_int=atoi(seq_flag_strings); LUPA开源社区ADsS)hU V&b0]U
    
B]]4w4e9@3s(}0            //打开message文件,写入周序列号,以便下次计算 LUPA开源社区YzK Ar$U3[
            if ((fp=fopen("/home/ceno/log/message","wt"))==NULL)
`f)Ak,]0            {
d8G5F {}"pH&jmG&S0                printf("open file /home/ceno/log/message failed!\n");
|zFK Z+e#~$~ x8^0                exit(EXIT_FAILURE);
p`(^!Mni"LL%s'?0            }
1Q'i'qV#d;[b"H/T0     LUPA开源社区 Iq r.E5GLE
     LUPA开源社区UE&C`w+LrN(^W j
        printf("read_db_to_file......ing\n"); LUPA开源社区 v2mj_OA/v2JM D
        read_db_to_file();  LUPA开源社区-dnut,f!d[
     LUPA开源社区:W Xa(| O+lP&a
    
!^ Q.sTOJ0 LUPA开源社区"bN:eN~J
        printf("Process quanqiu template......\n"); 
!BYR!G1rN,i5T]|N0        //统计quanqiu模板数据 LUPA开源社区f&H)t+nTMHeaX
        MailAreaTotal("/home/ceno/file/quanqiu"); LUPA开源社区+D+fx(v$G"UM|(E
        UserIncDel ("create","quanqiu","/log_mail_purchases",6); LUPA开源社区-F5k H*px6jH
        UserIncDel ("delete","quanqiu","/log_mail_purchases",6); LUPA开源社区4U*pLGCZ;u$}^
        MailRemoteLocal (" remote ","/home/ceno/file/quanqiu","/log_mail_queue_out",8); 
S'~@F%[ Je^+x0        MailRemoteLocal (" local ","/home/ceno/file/quanqiu","/log_mail_queue_out",7);
s6|o[8FN` {9e0 
u W?6Z_y0            
+zA#ew1Q.nM0        printf("Process yuan6 template......\n"); LUPA开源社区f4f["|l%N
        //统计yuan6模板数据 LUPA开源社区(|u:B9z6jK+}"c"[2`
        MailAreaTotal("/home/ceno/file/yuan6");
t l:])^e#wI3{L,|0        UserIncDel ("create","yuan6","/log_mail_purchases",6);
fRP2voC h5g0        UserIncDel ("delete","yuan6","/log_mail_purchases",6);
/vE!s8U4lLX0        MailRemoteLocal (" remote ","/home/ceno/file/yuan6","/log_mail_queue_out",8);
Y.lz/s;jZ&j\ew^0        MailRemoteLocal (" local ","/home/ceno/file/yuan6","/log_mail_queue_out",7); LUPA开源社区r!a&c.GV
 LUPA开源社区7@'k~+p.Gu
 
Z$ZB^7E{Yp0        printf("Process youhui template......\n"); LUPA开源社区]%O;w0qk$r"[puy:mA
        //统计youhui模板数据
B;@0gtR'i}0        MailAreaTotal("/home/ceno/file/youhui"); LUPA开源社区&pPd I"B;A
        UserIncDel ("create","youhui","/log_mail_purchases",6);
JFy N(q,U1s0        UserIncDel ("delete","youhui","/log_mail_purchases",6); LUPA开源社区 Hbc$k4[:y
        MailRemoteLocal (" remote ","/home/ceno/file/youhui","/log_mail_queue_out",8); LUPA开源社区l m!X,i#qGEw VN.]
        MailRemoteLocal (" local ","/home/ceno/file/youhui","/log_mail_queue_out",7); LUPA开源社区N0N)tXx7Dc:b
 
%d;K,M?XS0        
:U*uY-O0S~Y)oG3k2G R0 LUPA开源社区z z2O#_5_j
        printf("Process tiyan template......\n");
$_UM'e"l3cR0        //统计tiyan模板数据
!k J|!Al"E&L\0        MailAreaTotal("/home/ceno/file/tiyan");
Bs)IYD7DX0        UserIncDel ("create","tiyan","/log_mail_purchases",6); LUPA开源社区!@3W$r0^ZY;N ]
        UserIncDel ("delete","tiyan","/log_mail_purchases",6); LUPA开源社区$sk~-~K9D)\6^ lA
        MailRemoteLocal (" remote ","/home/ceno/file/tiyan","/log_mail_queue_out",8); LUPA开源社区:^ H2cuEK
        MailRemoteLocal (" local ","/home/ceno/file/tiyan","/log_mail_queue_out",7);
q@iP^2S/h^H0 LUPA开源社区-X1}S.W8kERMt
                
T1}(Rfr"Ttcqo0 
$?y]1t0^[U([8u| E0         LUPA开源社区:ki G#Yl8YZ k~_7~
        printf("Process gongmian template......\n"); LUPA开源社区*o?jYAw,Q [
        //统计youhui模板数据
4rL$z Q^K?.R0        MailAreaTotal("/home/ceno/file/gongmian");
e ~'B w ZY!p4y0        UserIncDel ("create","gongmian","/log_mail_purchases",6);
/` X~7p1RFf0        UserIncDel ("delete","gongmian","/log_mail_purchases",6); LUPA开源社区x$|}PG"I
        MailRemoteLocal (" remote ","/home/ceno/file/gongmian","/log_mail_queue_out",8); LUPA开源社区*\k&zrO/_5Sn
        MailRemoteLocal (" local ","/home/ceno/file/gongmian","/log_mail_queue_out",7);
1r*`,Q!@ E9[+~@w0         LUPA开源社区?kK4b/R F
 LUPA开源社区U;w U$B\4tM0Bj D
 LUPA开源社区}R'W)]cg+h1dt
 LUPA开源社区T^`,a)TT)x)E
            printf("Process day report......\n");
,VQ#yWuk'k:u*H3d0            //统计日报表信息
? H8]?_)Hv.V0            //调用函数fread_file_day,读统计数据到Array_day数组
[,W'xv i_^0            fread_file_day(array_day); LUPA开源社区U/Z,e| XvOpGk
     LUPA开源社区|i$@$y5| o+x9x3jtU i
            //调用函数fwrite_file_day,Array_day数组信息到report日报中 LUPA开源社区C*h%g8|6MI%[
            fwrite_file_day(array_day,seq_file_day);
)^8i/|I0A RJ0            printf("Write to %s.\n",seq_file_day);
,qJ Qrsy:~_4t0            //调用函数fturn_array_file,将Array_day数组信息写入tmp文件中,以便下次计算周报 LUPA开源社区-l-UISi5V
            fturn_array_file(array_day,seq_file_day_tmp);     LUPA开源社区+}4jCRcx
            printf("Write to %s.\n",seq_file_day_tmp);
sX*rt2s_3|0    
,t\RoH.}0            // LUPA开源社区 vME9X7d Q }{.s
            copy_file(seq_file_day,sendto_file_day); LUPA开源社区Dx^ o!H,L8w O3Z,q'W
            printf("Copy to %s.\n",sendto_file_day);
,g D$q%eR*p*vc!`Y0            //判断是否是星期1,如果是星期一,执行周统计报告
c {KNe;rd U.[0            if(week_buf[0]=='1')
(J^![eE6A(tS/[0            { LUPA开源社区b!fbT2x'_0A P b+S
                
*s`E{,|B(FZ yUs0                printf("Process week report......\n");
9c)j~-e!b-n-w0{5i0                seq_flag_int=atoi(seq_flag_strings)+1; LUPA开源社区5~H D,p2T8C
                seq_file_week[24]=seq_flag_int+48;
%q Z*u%]}d0                seq_file_week_tmp[20]=seq_flag_int+48; LUPA开源社区.s:e@dmq g y-{q+Y
                fread_file_week(array_week[0],filename_week[0]);
rc"K"l Y*g0                fread_file_week(array_week[1],filename_week[1]); LUPA开源社区[L+q-t0v
                fread_file_week(array_week[2],filename_week[2]);
5V\jBA'Y0                fread_file_week(array_week[3],filename_week[3]);
$a5E5Q.y$t ohs K0                fread_file_week(array_week[4],filename_week[4]); LUPA开源社区%P9N Tl5q0q.}Yi
                fread_file_week(array_week[5],filename_week[5]); LUPA开源社区9{Kr f+By
                fread_file_week(array_week[6],filename_week[6]); LUPA开源社区#SjK.e;KA%n&H
        
o(~&a|Md"vK0                //根据三维数组Array_week,将二维数据总和写入Array_week[7]中 LUPA开源社区q] X/W&QXCyY
                week_sum(array_week); LUPA开源社区-ZB-iXw-_ kxN
                //将周统计数据写入report周报中
H j!G|/x7S1P0                fwrite_file_week(array_week[7],seq_file_week);
Z#Ks2q\\ }0                printf("Write to %s.\n",seq_file_week);
Ss,]7Z x.M9}v D0                //将周统计矩阵数据写入tmp周报中 LUPA开源社区9l-y3h/Hh)II+L
                fturn_array_file(array_week[7],seq_file_week_tmp);
_'r&tl^}2l;dO0                printf("Write to %s.\n",seq_file_week_tmp); LUPA开源社区A#Y%},K#V
    
8i-n"O'p/P,j9?0                copy_file(seq_file_week,sendto_file_week);
H|6n+W#[?KgP0                printf("Copy to %s.\n",sendto_file_week);     LUPA开源社区b?6D/X'Cv ]b
    }        
j'wPW'Gf8K!]0    
M4k \3_6U]h0    //判断是否是本月1日,如果是本月1日,执行月统计报告
Y:\}W{0    if(strcmp(today_buf,"01")==0) LUPA开源社区T`*BRQ`g/bn
    { LUPA开源社区%_6fh){$t8H\
            printf("Process month report......\n");             LUPA开源社区N lWj{G s/kE%?
            fread_file_month(array_month[0],filename_month[0]);
!Al9WR'pk0            fread_file_month(array_month[1],filename_month[1]); LUPA开源社区:m#zH,Sz
            fread_file_month(array_month[2],filename_month[2]); LUPA开源社区klo~6` F*W
            fread_file_month(array_month[3],filename_month[3]);
a7W6r.hcS M"t0XD+{0            fread_file_month(array_month[4],filename_month[4]); LUPA开源社区"n)H Y%tM
            //根据三维数组Array_month,将二维数据总和写入Array_month[5]中 LUPA开源社区E-J c6e)L1j"cUqV
            month_sum(array_month);
-hdD,u7Z'^0            //将月统计数据写入report月报中 LUPA开源社区? p#T3e:R-jC
            fwrite_file_month(array_month[5],seq_file_month); LUPA开源社区S$_*z9]&s"u
            printf("Write to %s.\n",seq_file_month);
$z)_0s_9j1A0            // LUPA开源社区3BW#_oF
            copy_file(seq_file_month,sendto_file_month); LUPA开源社区|8^ ClCUe B
            printf("Copy to %s.\n",sendto_file_month); LUPA开源社区E~ Mz||x0~
    
9vf[Ly0    }         LUPA开源社区-sS~ZC ? b
     LUPA开源社区w%vWBqBs
    //关闭文件 LUPA开源社区DgF yI"~1U)Q%z
    fprintf(fp,"%d",seq_flag_int);     LUPA开源社区8~ O4R:Qk'N%a/H v8H
    fclose(fp); LUPA开源社区E`t+U%Ox
    return 0; LUPA开源社区9XE/uI1H"@
}
WT%]*W!w0LUPA开源社区t6Y` WB$|j

$gO%M!VG)p?(h0LUPA开源社区&M7q2_ y0f^-n4j

0{8yZ r:u0
Xz,V{*kQ$F`K9M0# include <stdio.h>
$F#^ o"J2R2Ch _)F\3I0# include <string.h>LUPA开源社区4B7hW#z#\H z
# include <stdlib.h>
5c[*CID5w1kJL0EXEC SQL INCLUDE SQLCA;
Q9_&p~Z8p0
2m.u&{^.uQ }UP7fF0void sql_error(char *msg)LUPA开源社区 E&\yja;\ R2`
{
._LY+RP_6~0        printf("\n%s %s\n", msg,(char *)sqlca.sqlerrm.sqlerrmc);
[8Pd\!I%DvC]V0        EXEC SQL ROLLBACK RELEASE;
!m&j f*E'G)@6sq.P'U0        exit(0);
7a6C ~6et6[0}
2d k1`^Jr|0
L/hy&hV0void read_db_to_file()LUPA开源社区y @IAmI+q9nm w
{LUPA开源社区q){0eks*D+d ab0iv2A
        EXEC SQL INCLUDE sqlca;
O-d)^,[v7Q0        EXEC ORACLE OPTION (RELEASE_CURSOR = YES);LUPA开源社区'Ic6Rmi%E
        EXEC SQL WHENEVER SQLERROR DO sql_error(" 〈ERROR〉 ");LUPA开源社区Vb-n"w0U;[ \s-^

t"T N URaF0        EXEC SQL BEGIN DECLARE SECTION;
y ^ os8\%oj,aX0        VARCHAR oraCN[30];LUPA开源社区7SUP6OuLx6T
        EXEC SQL END DECLARE SECTION;
^P7L ]|0
Bltv%rBxh0|Y0        strcpy(oraCN.arr,"umail/umail@email");
H f/?,H j} I3nD0        oraCN.len = strlen(oraCN.arr);LUPA开源社区/h:uk I(DK|x
        oraCN.arr[oraCN.len]='\0';LUPA开源社区"|{G5s K'M D)U_!a

_z\^3C0        EXEC SQL CONNECT :oraCN;
`?*@_#FnP C0        printf("\n [OK Connected!] ");LUPA开源社区cg%@b-YK,K#` L-v+F

ok?b7u}n)o0        void init();LUPA开源社区/JQ&@0j lJG
        FILE *fp_tiyan,*fp_quanqiu,*fp_youhui,*fp_gongmian,*fp_yuan6;        LUPA开源社区oKi'k*J$M*LH0m*i
        char username[50];
!b;UjK!XW#q0        char purchase_name[50];                LUPA开源社区Jt5z_)C&T
        char cNewLine='\n';LUPA开源社区n"Pr!Hs]P+[
LUPA开源社区JZn N3f7x
        if((fp_tiyan=fopen("/home/ceno/file/tiyan","wt+"))==NULL)
2pN \X$A:k&S0        {                LUPA开源社区iX8D2H,e~?
                printf("open file /home/ceno/file/tiyan failed\n");               
k"X o+RC"Opj*n2o0                exit(EXIT_FAILURE);
1v$~SDU0pd9m]0        }LUPA开源社区I6F&tG9{"?
       
|Mqk(_6X0        if((fp_quanqiu=fopen("/home/ceno/file/quanqiu","wt+"))==NULL)LUPA开源社区s3i3[q;H5c
        {               
^$Y"IS:}0                printf("open file /home/ceno/file/quanqiu failed\n");               
%T } THP f0                exit(EXIT_FAILURE);
k*P2N&p&ql#r0        }
D*mw ?(rkX0       
.C!oLO8x,x7d ^d!n0        if((fp_youhui=fopen("/home/ceno/file/youhui","wt+"))==NULL)LUPA开源社区Au k0H@
        {                LUPA开源社区!i1c"j b$a
                printf("open file /home/ceno/file/youhui failed\n");                LUPA开源社区lprG Ec9ua
                exit(EXIT_FAILURE);
:UzY E'u?m8Q0        }
+sPw%v-x&q0        LUPA开源社区| Lrz T\ p^wG1k
        if((fp_gongmian=fopen("/home/ceno/file/gongmian","wt+"))==NULL)LUPA开源社区k#{'ReT @SK
        {               
1r7a a e ~0ko&G0g0                printf("open file /home/ceno/file/gongmian failed\n");               
8gL `U ?$J,j0                exit(EXIT_FAILURE);LUPA开源社区'n \q"O~L
        }LUPA开源社区"pK n3? o5sj3{
        LUPA开源社区f&{yvG
        if((fp_yuan6=fopen("/home/ceno/file/yuan6","wt+"))==NULL)LUPA开源社区 ?to9}8|w6N~
        {                LUPA开源社区Dt,|7^m ld
                printf("open file /home/ceno/file/yuan6 failed\n");                LUPA开源社区~1Ww5~,X a.D
                exit(EXIT_FAILURE);LUPA开源社区%on*T2a rz(P K XIp
        }
2FaU/xA0       
+^Nn/~]+u^0
T Q1INthA/D.PNQ-J4O0        EXEC SQL declare tiyan_cursor cursor for
2a)K#SqmW8W0                 select t1.username from email_users t1,business_account t2,BUSINESS_PURCHASE t3 where t1.userid=t2.USER_ID and t2.BUSINESS_ACCOUNT_ID=t3.business_account_id and t3.purchase_name like 'tiyan';LUPA开源社区{m d!ZR9q
        EXEC SQL open tiyan_cursor;LUPA开源社区0G$H/{C]7y*^9b
        EXEC SQL WHENEVER NOT FOUND DO break;
5g8w[*{ H/j0
2kaC$tR0LUPA开源社区9T)b.JM)^3{D ]:|G
        while(1)LUPA开源社区)saO&];i+^J
        {LUPA开源社区/pW)sW L:S'j @/^
                EXEC SQL fetch tiyan_cursor into :username;                                       
3^\K(u.d c @0                fputs(username,fp_tiyan);memset(username,' ',50);LUPA开源社区 OEQBj!v$? `/[
                fputc(cNewLine,fp_tiyan);       
%AL)QJK~0        }LUPA开源社区{R#Mn{:ra/_
        EXEC SQL close tiyan_cursor;LUPA开源社区v/z;n.|s;u
        LUPA开源社区A|:D5Ui-Vul

.C%XN%Lq\UH1X0        EXEC SQL declare quanqiu_cursor cursor for
/L3tcl+E~'d0                 select t1.username from email_users t1,business_account t2,BUSINESS_PURCHASE t3 where t1.userid=t2.USER_ID and t2.BUSINESS_ACCOUNT_ID=t3.business_account_id and t3.purchase_name like 'quanqiu' and createtime>=to_date('20051016','yyyymmdd');
I`?%WJs0        EXEC SQL open quanqiu_cursor;
M+W|9b` ]v7}PE+s0        EXEC SQL WHENEVER NOT FOUND DO break;LUPA开源社区v0V!ewX'^T
        while(1)LUPA开源社区@kQ5u"E:D%ge
        {
x1ej#Y6p}k0                EXEC SQL fetch quanqiu_cursor into :username;                                       
#\-E-QZ;x7R%N6V%Z)v%E0                fputs(username,fp_quanqiu);memset(username,' ',50);
4['dh*XH,T&]0                fputc(cNewLine,fp_quanqiu);       
ic1t Ns%e!\0        }LUPA开源社区$b)bU/s d2H3f7`(s(s.x
        EXEC SQL close quanqiu_cursor;
-d qV8`YE&X0I0        LUPA开源社区p7Au/PB

(r(hDNaV0LUPA开源社区W;R8k^J
        EXEC SQL declare youhui_cursor cursor forLUPA开源社区 ])L/g7D Hk-d:yvu
                 select t1.username from email_users t1,business_account t2,BUSINESS_PURCHASE t3 where t1.userid=t2.USER_ID and t2.BUSINESS_ACCOUNT_ID=t3.business_account_id and t3.purchase_name like 'youhui' ;LUPA开源社区3e;x V"m9?#m`Q
        EXEC SQL open youhui_cursor;
(`_?~9ZSm7uvi `0        EXEC SQL WHENEVER NOT FOUND DO break;LUPA开源社区aDO8x Nk1R
        while(1)LUPA开源社区:M9SZc(I+v
        {LUPA开源社区e9|a'Lpf|FfiML:w
                EXEC SQL fetch youhui_cursor into :username;                                       
3\ori[0                fputs(username,fp_youhui);memset(username,' ',50);
|e i|lP0                fputc(cNewLine,fp_youhui);        LUPA开源社区i"~o E+o I!t2h l_
        }LUPA开源社区'f3{%m0R Y
        EXEC SQL close youhui_cursor;
}g+u Cgsu0LUPA开源社区 `2JQ8n#EQ

g_4S N1Bl(P6Q7_0LUPA开源社区 TY6` _&h0B9| yYP
LUPA开源社区 E4Q mC`'JA
        EXEC SQL declare gongmian_cursor cursor for
!WKgy M5b#}2Xu Q0                 select t1.username from email_users t1,business_account t2,BUSINESS_PURCHASE t3 where t1.userid=t2.USER_ID and t2.BUSINESS_ACCOUNT_ID=t3.business_account_id and t3.purchase_name like 'gongmian' ;
y&e'm-W.j7^0]0        EXEC SQL open gongmian_cursor;LUPA开源社区"B-Y7F?:O O
        EXEC SQL WHENEVER NOT FOUND DO break;LUPA开源社区` m"hF[J#W2s
        while(1)LUPA开源社区nA,h l+aX7a%e
        {
.^k/V1Jp0                EXEC SQL fetch gongmian_cursor into :username;                                        LUPA开源社区-G#zv@roW
                fputs(username,fp_gongmian);memset(username,' ',50);
\ oEP ^5Nf0                fputc(cNewLine,fp_gongmian);        LUPA开源社区9Ppor*`-ZW)R8j
        }LUPA开源社区X K#ggQ9}9_$s(go q
        EXEC SQL close gongmian_cursor;LUPA开源社区$X8@I;|b G
LUPA开源社区0fn,^"P"i,}
        LUPA开源社区m"s[5Yq0VF

"i*Ko"B!B\8o$W0        EXEC SQL declare yuan6_cursor cursor forLUPA开源社区p{2IF6v+q+r^
                 select t1.username from email_users t1,business_account t2,BUSINESS_PURCHASE t3 where t1.userid=t2.USER_ID and t2.BUSINESS_ACCOUNT_ID=t3.business_account_id and t3.PURCHASE_NAME='quanqiu' and createtime<to_date('20051016','yyyymmdd');LUPA开源社区(c bX]k
        EXEC SQL open yuan6_cursor;LUPA开源社区1YT:I m#f O0\ u&O-`
        EXEC SQL WHENEVER NOT FOUND DO break;LUPA开源社区X A PjY
       
;X#k/g]MW0        while(1)LUPA开源社区1nJ2J#~5ph*Bn
        {
{LC*PL6Vh H0                EXEC SQL fetch yuan6_cursor into :username;
s_^f+V$qDzy#y-F0                fputs(username,fp_yuan6);memset(username,' ',50);
_L'j4bgG0                fputc(cNewLine,fp_yuan6);LUPA开源社区0q}G(o-EhXM
        }LUPA开源社区@ L6r6Z/N*{
        EXEC SQL close yuan6_cursor;        LUPA开源社区1}G'Jb/m%h&_
        EXEC SQL commit work release;LUPA开源社区5\G+W [mxn`,J
        fclose(fp_tiyan);LUPA开源社区_:`#vo-_WTu
        fclose(fp_quanqiu);LUPA开源社区 I4M)|cg
        fclose(fp_youhui);
;F-ef:|t6j*U0        fclose(fp_gongmian);       
-C%Aw@r0        fclose(fp_yuan6);LUPA开源社区&u1q | jan
}
8e~4}I7Zt0
1f5g6u7d$aw0LUPA开源社区3fi)n%Q#s%sr

"ZM{{!\#qZ)y0
5s {x9w S4q"L;\0LUPA开源社区f'c#Lb%B_p
LUPA开源社区i}ZaN
/////////////////////////////////////////////////
wkE w}t A3B6W0aP:_0//统计各地市用户数源代码total.c LUPA开源社区$L:a%R Rr0c7Z
///////////////////////////////////////////////// LUPA开源社区/A%k'j;?1y8G6s
/////////////////////////////////////////////////
4Z/V3Orq/zd \||WF0//统计各地市用户数函数MailAreaTotal
e'G't1pC)R h2?0/////////////////////////////////////////////////
)J g k m3t0 
/sp)yb yf%t0# include <stdio.h>
*k9xe R8],Vob0# include <string.h> LUPA开源社区 L5k'j0ws4N*x
# include <stdlib.h>
6A2i'P7l,z(K#Add0# include <sys/stat.h> LUPA开源社区SiOOd I g/Ve
 LUPA开源社区4`)J/jKK5^9}
int MailAreaTotal (char TemplateFileDir[50]) LUPA开源社区W9{!q}I l
{ LUPA开源社区+O;aFY#_4L5m{5c-o
        FILE *fp,*fp1,*fp_bak; LUPA开源社区9e%?yZpim
        char ch[8];        
F;]9~m1w!h:H2s"a0        char sh[8];
;X/vh;G1Jw$v0        char xh[7];
s%m4ik1Er{\0cn0        int flag; LUPA开源社区p*Q d _ w B
        int array[11]={0,0,0,0,0,0,0,0,0,0,0};
`*W@/FuL:C0K6XOv0 
&T/DZk T0        int i,j;
!p2A*L&ox*b4Fs9Y/YR1?0        if((fp=fopen(TemplateFileDir,"r"))==NULL)
1s i$y5N(oYDD e)G0        {
R IWo/`HVV!iE ^0                printf("open file %s failed!\n",TemplateFileDir);
] q4cI.{X.Y8?0                exit(EXIT_FAILURE);
9v3E/u bYR#dOy0        }
E4d*or I%U0        
%L^-RR,C/H0        if((fp1=fopen("/home/ceno/file/jxmcc.txt","rt"))==NULL) LUPA开源社区2Y};H2ME8~3R `
        {
n2fk8ziG,V0                printf("open file /home/ceno/file/jxmcc.txt failed!\n"); LUPA开源社区;fp3K];[l:s J]I%zG
                exit(EXIT_FAILURE); LUPA开源社区EfpP z O o+y
        } LUPA开源社区#t9N*{${i
        
-Tu W6r1utBH"c0        if((fp_bak=fopen("/home/ceno/file/tempfile.bak","a+"))==NULL) LUPA开源社区 Iq1P3a[&IR.H
        { LUPA开源社区 Ql-B.Q_1n$_wp
                printf("open file /home/ceno/file/tempfile.bak failed!\n"); LUPA开源社区$Z5Oo7G&` l`R3i
                exit(EXIT_FAILURE); LUPA开源社区w_(S[fB
        } LUPA开源社区 hd$q w$f}0P
        struct stat statbuf_users;
{i'XeL.N8u3e0        struct stat statbuf_area;
#hj'DzHtqy0                        
oj%B&V5Zhh`0        fstat(fileno(fp),&statbuf_users);
2}#[Z]ZM1~0g$J0        fstat(fileno(fp1),&statbuf_area);
(HW/C]-fB)N@9[(k0        i=statbuf_users.st_size;
/AH)oHDO#v5K y0        j=statbuf_area.st_size; LUPA开源社区b'{,k,Q6kl\,H!f
        while(ftell(fp)<i) LUPA开源社区p}/a Y!W0d"t
        {         LUPA开源社区L&i*bf|-__9d'D
                fread(ch,7,1,fp);
2}`n&o'_'O0                ch[7]='\0'; LUPA开源社区9D\Y AU!Y9Wr
                flag=0; LUPA开源社区;y.] Au8Su&A i
                fseek(fp,43,SEEK_CUR); LUPA开源社区7zO)O]O8M7G/|o}
                //printf("%s\n",ch);
/l9llsl _y0                rewind(fp1); LUPA开源社区 uIvaX:jX
                while(ftell(fp1)<j)
"Qapc1ie&L0                {
3[$D dkR%A)y4JZu0                        fread(sh,7,1,fp1);
FN4j_1Gv0                        sh[7]='\0';
+WH(G-k4@$`!V){t"],V0                        if(strcmp(ch,sh)==0)
,b+m,D7Ke0                        { LUPA开源社区ZV/uy?"V0RyG
                                fseek(fp1,1,SEEK_CUR); LUPA开源社区 \5u%kU7u(q/q,pHq
                                fread(xh,6,1,fp1); LUPA开源社区!F]#u,W*W|Qa
                                xh[6]='\0'; LUPA开源社区Hq D`KDN7{.]
                                fseek(fp1,1,SEEK_CUR); LUPA开源社区"Lbr+pQ
                                if((strcmp(xh,"017001"))==0) LUPA开源社区![ I)tS6?$k Cd2j
                                        {array[0]=array[0]+1;flag=1;} LUPA开源社区 ~[.\ vR f0@;O |
                                if((strcmp(xh,"017002"))==0)
T(i ~~k,uPm(q0                                        {array[1]=array[1]+1;flag=1;}
!`Nu#Q"rP0                                if((strcmp(xh,"017003"))==0) LUPA开源社区 q!@G/h:f'HK bWF K
                                        {array[2]=array[2]+1;flag=1;} LUPA开源社区8h Z%sAc
                                if((strcmp(xh,"017004"))==0)
,W:W2vKN0                                        {array[3]=array[3]+1;flag=1;} LUPA开源社区j?dQz+Xk4[A
                                if((strcmp(xh,"017005"))==0)
`zOi5qhB,DG0                                        {array[4]=array[4]+1;flag=1;} LUPA开源社区*_*}:a"n1ge6S-E_
                                if((strcmp(xh,"017006"))==0)
i#dq k8K0                                        {array[5]=array[5]+1;flag=1;} LUPA开源社区6N}-Iu B v$aD
                                if((strcmp(xh,"017007"))==0) LUPA开源社区 O2V;N/lD2F
                                        {array[6]=array[6]+1;flag=1;} LUPA开源社区A0^W/yg8@Q5W.b
                                if((strcmp(xh,"017008"))==0) LUPA开源社区 g3g:R ioZ5M
                                        {array[7]=array[7]+1;flag=1;}
kfv5j;?r,W0                                if((strcmp(xh,"017009"))==0)
tq~U;z duG2r"z-Z"Z0                                        {array[8]=array[8]+1;flag=1;} LUPA开源社区X{,G W C4F Uim
                                if((strcmp(xh,"017010"))==0)
/`1uxD3NyYlf%L1U[0                                        {array[9]=array[9]+1;flag=1;}
X/bU q8n0                                if((strcmp(xh,"017011"))==0) LUPA开源社区2DJ v*Vss"G$N6h
                                        {array[10]=array[10]+1;flag=1;} LUPA开源社区_F ~0ZH)Db?
                                if(flag==0)unknown(ch);
:{8M(V(V5Yv0                        }         LUPA开源社区#[|ro!j]!`?6n d
                        else LUPA开源社区 nC|`]J5y5r4w0`
                        { LUPA开源社区0}0AY g*G1fo
                                fseek(fp1,8,SEEK_CUR); LUPA开源社区(@[4EV;_X
                        }                 LUPA开源社区K[1Ntu&FN
                } LUPA开源社区7{ mt7z+P"]4Y1G
 LUPA开源社区3z/@5^'J_g#W,Cin
        } LUPA开源社区,E-Q`)QBe2T'm k
                
;fHoH7U2s6mu0        for(i=0;i<11;i++)        
~c2]6r k\0        { LUPA开源社区%t9{$V)QF
                fprintf(fp_bak,"%d",array[i]);
*cLV1F8] k4yQ0                fprintf(fp_bak,"%c",'\n'); LUPA开源社区j|ju!c
        }         LUPA开源社区7Y:Hz"P0_
        fclose(fp_bak); LUPA开源社区,dE(x/gnq8Mia
        fclose(fp);
3_A;^7jbK/`VG[0        fclose(fp1);                 LUPA开源社区"h6iM.b8?
        return 0;
2z-_W;b|*Z1Ut[P0}
` I3bg AR0LUPA开源社区;w3S0Nv X)k;o e

b.h9_[P6V/a~0LUPA开源社区 n#j&Vaq"UmKv
/////////////////////////////////////////////////////////
,kx0Oyi\ [%F0//统计用户增/减源文件incdel.cLUPA开源社区_ mV |#h
/////////////////////////////////////////////////////////LUPA开源社区:YLL;K-D~
//说明:
&TyPo#DN0//1)将有create/delete关键字的用户在log_mail_purchases文件查出
"?)H,X-JwB0//2)取得该用户的号码和地区信息LUPA开源社区q!Ie!nQr
//3)判断该用户是哪个地市的用户,做累加LUPA开源社区rO P'T Sa
//5)将结果写入tempfile.bak文件LUPA开源社区Z%Q,d5u!d,x%`
LUPA开源社区MFK!?4i3}[,h
/////////////////////////////////////////////////////////
]}#GT-?&m0//统计用户增/减函数UserIncDel()
N-qZe9EKn2nx$e(`0/////////////////////////////////////////////////////////LUPA开源社区-l!G"W J2|n~c i9}A
# include <stdio.h>
Tfg7uXEQ0# include <string.h>LUPA开源社区"c/sw1A s X'l?
# include <stdlib.h>
"J8~9EBl3O*r tX0# include <sys/stat.h>LUPA开源社区!_,D:m;`,C [5|
int  UserIncDel(char OperaterType[20],char Template[50],char LogFilename[50],int OperaterWide)
~ `0zV^ PC0{LUPA开源社区%EV[k0oO
        FILE *fp;LUPA开源社区Y]#]g)J\t
        FILE *fp_t;
Rv+WN(P0        FILE *fp_j;LUPA开源社区yk*h~'E3sh7c Z
        FILE *fp_bak;LUPA开源社区(H(xrb F
LUPA开源社区0u q2e(^t/N3e
        char user[255];LUPA开源社区!x v n3BBE*I*D"R
        char oper[20];
@7E0_f:\\0        char mobile[20];
w2J6^mPJ(n0        int log_mail_size;
| y*W mn0        int module_file_size;LUPA开源社区"Vg,]*P^t
        int ml=0;
}&W+e_t0        int mk=0;
0i@)I5GX[NK0        int c_operchar; 
$V.AblDf'_0        int s_char_seg=0;LUPA开源社区5C8y:Uc$a#Mx W
        int l_operchar;LUPA开源社区 } vC&C2W ?n
        int i_area;LUPA开源社区;K#T_ N$o3w`
        int i_char=0;LUPA开源社区v5V x^m {0X
        int i;LUPA开源社区`9Wv5?cBI7l
        char modu_i[20];LUPA开源社区&B{h'}8Lc"E js/T
        char modu_s[20];
T~0i|kb ]p0        int area_file_size;LUPA开源社区v"?}"eF,I
        char mobile_seg[20];LUPA开源社区{6b7f} g9b
        char area_seg[20];LUPA开源社区5B8x.Ek{M?|4z6Wn
        char area_code[20];
F Y9q&}.JZ _f8K$L0        int array[11]={0,0,0,0,0,0,0,0,0,0,0};LUPA开源社区&D4Pe)f&U d'Wgb[
        char module_mobile_b[255];
&I3Og P"?k.Z0        char module_mobile_s[255];
5\G J_P(FQd"j0        //定义journal目录名及生成日期文件名,组成JOURNAL绝对路径字符串LUPA开源社区)e~.m.bfXV
        char Jou_Dir[50]={"/ceno/journal/umail/"};
6I!v*aN5`5Id0        GenJouDir(Jou_Dir,LogFilename);
{1^ R2H5RY3d,Lw0
c#Q*z4i_/H0N0        //打开journal日志文件
GG,^4qti(u0        if((fp=fopen(Jou_Dir,"r"))==NULL)
'd/W%}X,wd;ON0        {LUPA开源社区 ]5EF|-u-u
                printf("open file %s failed\n",Jou_Dir);LUPA开源社区4lqv:s6Z l:?_C
                exit(EXIT_FAILURE);
'G)s`s"Q qg0        }LUPA开源社区 ` o!t{:^6GY
LUPA开源社区8OM[3n(d g;} YC$])H v

7q e+h g8XF.c0        //打开号段地区市文件
tarxHv-K"Y0        if((fp_j=fopen("/home/ceno/file/jxmcc.txt","r"))==NULL)
p)q6aE4V0        {
c!s_E(M F1f0                printf("open file /home/ceno/file/jxmcc.txt failed!\n");LUPA开源社区w7c.v*w9I
                exit(EXIT_FAILURE);LUPA开源社区Xr/TPW3r*}
        }LUPA开源社区s+nQd+PE$B
LUPA开源社区.^@Wv7mr|
        //以追加方式打开tempfile.bak文件LUPA开源社区/Na5Ae dw#y s
        if((fp_bak=fopen("/home/ceno/file/tempfile.bak","a+"))==NULL)
9Waw/s)y [G0        {
'\pe$Qey+P0                printf("open file /home/ceno/file/tempfile.bak failed!\n");
zMMn u0x-y7d {0                exit(EXIT_FAILURE);
6s[p F&~%Wz$|0        }LUPA开源社区#KU.H&Z2w?}d4Oq0q
LUPA开源社区&|#Bk?D/u8`1Up{W5y2\
        //统计journal日志文件大小    LUPA开源社区1iWQ&Qp.Xn
        struct stat statbuf_users;
)dH7yQ2IxP:U3VG0        fstat(fileno(fp),&statbuf_users);
v)w9G$xiF?*t0        log_mail_size=statbuf_users.st_size;
E9{BD-sT!HV%m0
OH&`9m!{WE%C[ e0LUPA开源社区)i$f9B$F+@u8dA-L
        //统计号段地区市文件大小
4f,?}WC3? P6\(G0        struct stat statbuf_area;LUPA开源社区0]?-MK~5@Wr
        fstat(fileno(fp_j),&statbuf_area);
-} CCh;uvQ0        area_file_size=statbuf_area.st_size;LUPA开源社区wT9_ B$iW
LUPA开源社区(r miE uk
        //计算每天用户的增/减,如果到日志文件尾,即计算结束
9x`:F m&VQ0        while(ftell(fp)<log_mail_size)LUPA开源社区/QgY ?7p*cmZ
        {LUPA开源社区o pZ!s$XL

M~1@q+|3K(D%w0                s_char_seg=0;LUPA开源社区/Bk1Q$O8s\#Z*_
                //读取journal日志文件的一行到user数组(限定小于255)    LUPA开源社区\"~_k[6`
                for(i_char=0;i_char<255;i_char++)
Zq I V([Q:V-g0                {
a3u@(n!V$oq,l[0                        user[i_char]=fgetc(fp);
.fF m/fb;y9h(d0k0                        if(user[i_char]=='\n')
0iC!y5L|.j3T0                        {
#Yy M'^:E%Heg_'`0                                user[i_char]='\0';LUPA开源社区6Y Mzf*a
                                   break;LUPA开源社区IaS.P.k5\[{*u}|
                        }LUPA开源社区7qvtz&UT0xO
                }
/[NQ4t P:z6q-l C0                //读取user数组,进行判断
"bP5x K B~0                //如果是遇到一个'|'符号,变量自增LUPA开源社区)SU*PC&W*C/Da
                //如果是遇到第1个'|'符号,将提取模板名,如:quanqiu
!i!V:p.A!Ok0                //如果是遇到第7个'|'符号,将提取用户号码字段,如13912312312LUPA开源社区J.PK@\
                //如果是遇到第8个'|'符号,将提取地区信息,如017001
j:k P d'z e3N0                //如果是遇到第14个'|'符号,将提取操作信息
+w,bM`7\Ifg'_0                //判断操作类型,如果是OperaterType指定的操作类型,将进行地区市的计数
R7~VF7R*Ftvj0                for(i_char=0;i_char<255;i_char++)
a3xq(^]J0                {
)]ZhHO)`F0                        if(user[i_char]=='|')
\o7\}1eqX%kkm0                        {
.__$d;v$_:D0                                s_char_seg=s_char_seg+1;
g t/NFK }1R0                        }
.W#u7f;VK0                        if(s_char_seg==1)
}b!p%b HH zkTY \0                        {
BW yq#Q#n#dL)X0                                for(ml=0,i=i_char+1;ml<=20;ml++,i++)LUPA开源社区]:ig'n0}me T
                                {
'qGNDU4T4t`"T p0                                        if(user[i]!='|')LUPA开源社区&`,i pk&Ab
                                        {LUPA开源社区@"X'A F g
                                                modu_i[ml]=user[i];
u3q%cP:absd0                                        }
3a W}mb+|*LM0                                        elseLUPA开源社区C1rx @U
                                        {LUPA开源社区\o0F;o$n&J
                                                modu_i[ml]='\0';LUPA开源社区W [+F1[#@;}4Lc
                                                i_char=i_char+ml;LUPA开源社区D%gVi gNt
                                                break;
;{r!f G%hwX[c0                                        }
Wjwn:\;E7I0                                }
Z9V/w jYHj!e0                                if(strcmp(modu_i,Template)!=0)LUPA开源社区({g.w1_K
                                {
rM%ggElX(Z0                                        break;
b"org"u0                                }
aM'}R'a?Mas0                        }
D&Ea:vi9PZ'M0LUPA开源社区,f])?z5|G.Nk
                        if(s_char_seg == 7)
o y!|5VW.\6Or-e0                        {LUPA开源社区Gsm(e@J"N)h
                                for(ml = 0,mk = i_char+1; ml < 20; ml++, mk++)
KUViG/J0                                {
;l.a.~&u4uN?0                                        if(user[mk] != '|')
F*[`+j{6o|h0                                        {
L$nb$ye _(saY0                                                mobile[ml] = user[mk];
/B VAW6o+@0                                        }LUPA开源社区^k%b a Dz#U.e
                                        else
3s y;|0CyO0                                        {LUPA开源社区h#Di;y@#fX
                                                mobile[ml] = '\0';
W-f7a8x1` o1m1n0                                                i_char = i_char + ml;LUPA开源社区v-@6[#Zzbr7C:bC0W
                                                break;LUPA开源社区!MH*dya7L
                                        }
XM9ZCj0c;Y zH0                                }
5[2fyq[j4]Q*wCe0                        }
s7pE:j!Me3x[0LUPA开源社区}I)q%~%S4KZy!X
                        if(s_char_seg==8)LUPA开源社区xBy4N*z8}d4VO]
                        {LUPA开源社区/] z.oYr~0@U/Wz
                                for(i_area=0,mk=i_char+1;i_area<6;i_area++,mk++)
"k4WP-v h0                                {LUPA开源社区$B`v%d%r4l g[l3\
                                        area_code[i_area]=user[mk];LUPA开源社区c H|"m1|AsM
                                }
#z$mZ[,_2P0vc0                                area_code[i_area]='\0';LUPA开源社区 dlHOxF
                                i_char=i_char+6;LUPA开源社区1j#U7a7ql%k
                        }LUPA开源社区#b@7KZl)J)R @R4R ?e
LUPA开源社区5r%c/^;_G8t|!T
                        if(s_char_seg==14)LUPA开源社区!M)]dw!Q!^
                        {
Jh&h [G)hb\7L0                                c_operchar=i_char+1;
G9|3U!~i:y1P0                                for(l_operchar=0;l_operchar<OperaterWide;l_operchar++,c_operchar++)
Y-VzZ9X zb0                                {
k4T:]3Y TQ1sH0                                        oper[l_operchar]=user[c_operchar];
&Y7i.VK7c o0                                }
+K.h*Beq-{0                                oper[l_operchar]='\0';LUPA开源社区:]4n(V}7E'@7F7dV
                                s_char_seg=s_char_seg+1;LUPA开源社区OfuC5l1k tr4LLC(Y;y
                                if(strcmp(oper,OperaterType)==0)LUPA开源社区`^ p)|'S [Pp c@&cz
                                {
,wFA]0M?4vm0    &nb