局用程控交换机数据预处理系统C语言版(共18页)_第1页
局用程控交换机数据预处理系统C语言版(共18页)_第2页
局用程控交换机数据预处理系统C语言版(共18页)_第3页
局用程控交换机数据预处理系统C语言版(共18页)_第4页
局用程控交换机数据预处理系统C语言版(共18页)_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、局用程控交换机数据(shj)预处理系统C语言版本(bnbn)项目(xingm)描述:本项目主要完成对局用程控交换机的二进制磁带卸载数据,按照一定的格式要求,转化成标准ASCII码格式并以文本形式输出,然后再经过内存排序后,提供给后续计费模块进行批价处理。局用程控交换机数据预处理系统用户界面码制转换数据校验数据排序日志处理1. 码制转换局用程控交换机为了减少数据存储量,通常数据以BCD码的形式进行存储。BCD (Binary-Coded Decimal,二进码十进数,简称BCD)用4位二进制数来表示1位十进制数中的0-9这10个数码,简称BCD码。但为了方便后续工作的进行,通常需要将其转换成我们

2、常见的ASCII码。我们所使用的BCD数据被存放在后缀名为bs1、bs2、bs3文件中,具体文件格式见附录一。转换后生成的文件请保存在同名ASC文件中。BCD文件在 DataRaw_Data 文件夹中转换后的ASCII文件请放在 DataASC_Data 文件夹中2. 数据校验码制转换完成后,我们要对转换后的数据进行校验,其目的是为了检查数据的合法性,删除非法数据。如出现以下数据,则应该删除:a. 主叫号码少于7位b. 被叫号码少于3位c. 结束时间小于开始时间d. 文件结尾的残缺数据3. 排序局用程控交换机中的数据是以时间为序存储的,但是后续计费模块中的数据要求以主叫号码为序才能进行处理。因

3、此我们需要对转换后的ASCII数据进行排序,排序第一关键字为主叫号码,第二关键字为日期,第三关键字为呼出时间。请将排序后的文件保存在同名STD文件中。排序后的文件请放在 DataSTD_Data 文件夹中4. 日志处理日志一般是指存储软件程序、服务或操作系统产生的消息记录的文件。本功能主要对用户进行的所有操作进行记录并显示。每条日志需要有操作类型、结果、开始时间、结束时间等内容。生成的日志文件请存放在 DataLOG 文件夹中5界面(jimin): 用户界面应完成多级菜单显示及选择,此外还应加入对转换后和排序后的文件的显示功能。注意,由于(yuy)数据量较大,必须采取分页显示。主菜单(ci d

4、n)码制转换数据(shj)校验排序(pi x)日志(rzh)处理程序(chngx)源代码:#include#include#include#include#include#include #include#define num 82char FILEPATH100; /* 存当前c文件工作(gngzu)路径,形式如 C:UsersAdministrator.PC-20110801RFTPDesktopc项目(xingm) */typedef struct data /01 2722841 01 0991114 16:06:37 16:06:40 1996/09/03 000003 0002 0

5、003 (数据的结构)char a3; /0-2 (无用)char OutC7; /3-9 (主叫)char b7; /10-16(无用)char Called17; /17-33(被叫)char StarT9; /34-42(开始时间)char EndT9; /43-51(结束(jish)时间)char Date10; /52-61(日期(rq))char c20; /62-81(无用(w yn))DATA;void DailyLogo(int i,char *p);/日志处理 函数void LogShow();/日志显示 函数void DDV(char *p);/数据校验 函数void C

6、ode_Switch();/码制转换 主函数void insert(char *des,char *src,int n);/码制转换 子函数void Change_name(char *p);/码制转换 子函数void HeapSort();/数据排序 主函数void creatheap(DATA * a,int root,int index);/数据排序 子函数void sort(DATA * a,int index);/数据排序 子函数 time_t rawtime; /日志处理 时间用的变量struct tm * timeinfo; /日志处理 时间用的结构体void DailyLogo

7、(int i,char *p) /日志处理 函数FILE *file;char filepath100;char filename30=DataLOG1.log;strcpy(filepath,FILEPATH);strcat(filepath,filename);time ( &rawtime ); timeinfo = localtime ( &rawtime );file=fopen(filepath,ab);fseek(file,0L,2);switch(i)case 0:fprintf(file,%-15st码制转换t已完成t%srn,p, asctime (timeinfo);br

8、eak;case 1:fprintf(file,%-15st数据排序t已完成t%srn,p, asctime (timeinfo);break;case 2:fprintf(file,%-15st数据校验t已完成t%srn,p, asctime (timeinfo);break;fclose(file);void LogShow() /日志显示 函数FILE *fp;int m=0;int i,j;char ch,n;char FileName30;char FilePath100;strcpy(FilePath,FILEPATH);strcat(FilePath,DataLOG);while

9、(m!=1)system(cls.exe);fflush(stdin);printf(*日志(rzh)显示*n); printf(* *n);printf(* 请选择您所需要(xyo)的操作: *n);printf(* *n);printf(* 0:显示(xinsh)可操作文件 *n);printf(* 1:返回上一级菜单 *n);printf(* 2:退出系统 *n);printf(*n);fflush(stdin);scanf(%c,&n);while(n2)printf(输入错误!n请重新输入:);fflush(stdin);scanf(%c,&n);switch(n-0)case 0:

10、system(cls.exe);chdir(FilePath);system(dir *.log);printf(nn请您输入要操作的文件名:);fflush(stdin);gets(FileName);for(i=strlen(FilePath),j=0;j);fflush(stdin);getch();elsefseek(fp,0L,0);system(cls.exe);printf(%snn,FilePath);while(!feof(fp)ch=fgetc(fp);putchar(ch);fclose(fp);printf(nn按任意键继续(jx);fflush(stdin);getc

11、h();for(i=strlen(FilePath),j=strlen(FileName); j=0 ; i-,j-)FilePathi=0;break;case 1: m=1;break;case 2: exit(0);void Code_Switch() /码制转换(zhunhun) 主函数char f_name20;char ch,temp1,temp2,n;int i,j,k,l=0,m=0;char f_location100;char f_destion100;FILE *fp1,*fp2;char buffer81=;strcpy(f_location,FILEPATH);str

12、cpy(f_destion,FILEPATH);strcat(f_location,DataRaw_Data);strcat(f_destion,DataASC_Data);while(m!=1)system(cls.exe);printf(*码制转换(zhunhun)*n);printf(* *n);printf(* 请选择(xunz)您所需要的操作: *n);printf(* *n);printf(* 0:显示可操作(cozu)文件 *n);printf(* 1:返回上一级菜单 *n);printf(* 2:退出系统 *n);printf(*n);fflush(stdin);scanf(%

13、c,&n);while(n2)printf(输入错误!n请重新输入:);fflush(stdin);scanf(%c,&n);switch(n-0)case 0:system(cls.exe);chdir(f_location);system(dir *.bs2);printf(请输入要操作的文件:);fflush(stdin);scanf(%s,f_name);strcat(f_location,f_name);Change_name(f_name);strcat(f_destion,f_name);fp1=fopen(f_location,rb);if(fp1=NULL)printf(n打

14、开文件(wnjin)失败!nn按任意键继续);fflush(stdin);getch();elsefp2=fopen(f_destion,w);printf(n码制转换(zhunhun)中已完成(wn chng) 0%);for(i=0;i6;i+)fseek(fp1,4,1);for(j=0;j68;j+)l=0;for(m=0;m81;m+)bufferm=0;for(k=0;k4)&0 x0f)+0 x30;temp2=temp2+0 x30;if(temp1 = 0 & temp1 = 0 & temp2 );fflush(stdin);getch();for(i=strlen(f_l

15、ocation),j=strlen(f_name); j=0 ; i-,j-)f_locationi=0;f_destioni=0;break;case 1: m=1;break;case 2: exit(0);void insert(char *des,char *src,int n) /码制转换(zhunhun) 子函数int len1,len2,i;len1=strlen(des);len2=strlen(src);for(i=len1-1;in;i-)*(des+i+len2)=*(des+i);for(i=0;ilen2;i+)*(des+n+1+i)=*(src+i);void C

16、hange_name(char *p) /码制转换(zhunhun) 子函数int len;len=strlen(p);plen-1=c;plen-2=s;plen-3=a;void DDV(char *p) /数据(shj)校验 函数DATA str2000;char path100;int i,j,k,n,m,l,r,s,t,q,x,y,z,sum;FILE *fp,*fp1;strcpy(path,FILEPATH);strcat(path,DataASC_Data);strcat(path,p);n=strlen(p);pn-5=V;fp = fopen(path,rb);n=strl

17、en(path);pathn-5=V;fp1 = fopen(path,wb);fseek(fp,0,2);n = ftell(fp);rewind(fp);printf(n数据(shj)校验中已完成(wn chng) 0%);for(i=0;in/82;i+)fread(&stri,82,1,fp);for(j=0,m=0;stri.OutCj!= ;j+)m+;for(k=0,s=0;stri.Calledk!= ;k+)s+;t=strcmp(stri.StarT,stri.EndT);for(j=0,x=0;stri.aj!= ;j+)x+;for(j=5,y=0;stri.bj!=

18、;j+)y+;for(j=0,z=0;stri.StarTj!= ;j+)z+;for(j=0,r=0;stri.EndTj!= ;j+)r+;for(j=0,l=0;stri.Datej!= ;j+)l+;for(j=0,q=0;j=7&s=3&t=54)fwrite(&stri,82,1,fp1);printf(bbb%2d%,(int)(float)i/(n/82-1)*100) );fclose(fp);fclose(fp1);DailyLogo(2,p);void HeapSort() /数据排序(pi x) 主函数DATA * p;FILE *fp1,*fp2;int i,j,n,

19、m=0;char a;char f_name20;char f_location100;char f_destion100;strcpy(f_location,FILEPATH);strcpy(f_destion,FILEPATH);strcat(f_location,DataASC_Data);strcat(f_destion,DataStd_Data);while(m!=1)system(cls.exe);fflush(stdin);printf(*数据(shj)排序*n);printf(* *n);printf(* 请选择(xunz)您所需要的操作: *n);printf(* *n);p

20、rintf(* 0:显示可操作文件 *n);printf(* 1:返回上一级菜单 *n);printf(* 2:退出系统 *n);printf(*n);fflush(stdin);scanf(%c,&a);while(a2)printf(输入错误!n请重新输入:);fflush(stdin);scanf(%c,&a);switch(a-0)case 0:system(cls.exe);chdir(f_location);system(dir *.asc);printf(请输入要操作(cozu)的文件:);fflush(stdin);scanf(%s,f_name);strcat(f_locat

21、ion,f_name);j=strlen(f_name);f_namej-1=d;f_namej-2=t;f_namej-3=s;strcat(f_destion,f_name);fp1=fopen(f_location,rb);if(fp1=NULL)printf(n打开文件(wnjin)失败!nn按任意键继续);fflush(stdin);getch();elsefp2=fopen(f_destion,w);fseek(fp1,0,2);n=ftell(fp1);p=(DATA * )malloc(n+num);/m=sizeof(DATA);rewind(fp1);for(i=1;i=n

22、/num;i+)fread(p+i,num,1,fp1);sort(p,n/num);for(i=1; i);fflush(stdin);getch();for(i=strlen(f_location),j=strlen(f_name); j=0 ; i-,j-)f_locationi=0;f_destioni=0;break;case 1: m=1;break;case 2: exit(0);void creatheap(DATA * a,int root,int index) int i=2*root,finish=0;DATA t=*(a+root);while(i=index & fi

23、nish =0)if(iOutC,(a+i+1)-OutC,7)OutC,(a+i+1)-OutC,7)=0 & strncmp(a+i)-Date,(a+i+1)-Date,10)OutC,(a+i+1)-OutC,7)=0 & strncmp(a+i)-Date,(a+i+1)-Date,10)=0 & strncmp(a+i)-StarT,(a+i+1)-StarT,9)OutC,7)0 )finish=1;else if(strncmp(t.OutC,(a+i)-OutC,7)=0 & strncmp(t.Date,(a+i)-Date,10)0 )finish=1; else if(

24、strncmp(t.OutC,(a+i)-OutC,7)=0 & strncmp(t.Date,(a+i)-Date,10)=0 & strncmp(t.StarT,(a+i)-StarT,9)0)finish=1;else strncpy(char *)(a+i/2),(char *)(a+i),num);i=2*i;strncpy(char *)(a+i/2),(char *)&t,num);void sort(DATA * a,int index) int i;DATA t;for(i=index/2;i=1;i-)creatheap(a,i,index);printf(n数据(shj)排序中已完成(wn chng) 0%);for(i=index;i=1;i-)strncpy(char *)&t,(char *)(a+i),num);strncpy(char *)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论