CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

急盼高人指点,本人感激涕零!!!!

楼主shucun(树村)2003-12-03 14:42:44 在 VC/MFC / 基础类 提问

大概思路:  
  前提:用户输入规律的时候每个条件必须以回车结束  
  一.信息块定义:  
  1.信息快是从某个文件中按照一定的规律查找到的信息  
  2.提取信息的规律是客户输入的规律  
  3.一个信息块可以由若干个字符串或若干个子信息块组成  
   
  二.难点  
  1.需要分析客户输入的规律,从客户输入的规律中找关键字符串,还要找到目标文件的信息。  
  example:(从目标文件1中查找符合下面规律的信息)  
                          (规律)回车+客户号码1+回车+**********+客户信息(子信息块:回车+客户号码2  
  回车+**********+客户名称2+回车)+客户名称1+   回车  
   
                            (结果)回车+客户号码1+(目标文件中和客户号码1相匹配的字符串后面的字符串,到???????????结束)+回车+**********+客户信息(子信息块:回车+客户号码2++(目标文件中和客户号码2相匹配的字符串后面的字符串,到???????????结束)+回车+**********+客户名称1+(目标文件中和客户名称1相匹配的字符串后面的字符串,到???????????结束)+回车  
   
  例如:  
  用户输入:  
   
  纳税人识别号:  
  ##########  
  纳税人名称:  
   
  查询目标文件(目标文件中有若干条记录,是从某个软件的日志中备份出来的文本文件)得到的输出结果应为:  
   
  纳税人识别号:4101111111111  
  ##########  
  纳税人名称:河南软件公司  
   
  纳税人识别号:4101111111112  
  ##########  
  纳税人名称:上海软件公司  
   
  纳税人识别号:4101111111113  
  ##########  
  纳税人名称:深圳软件公司  
   
  ...........  
  以下是我涂鸦的几行代码,请高人修改。多谢!!!!  
   
   
  #pragma   warning(disable:4786)  
  #include   <string>  
  #   include   <iostream>  
  #   include   <stdio>  
  #   include   <list>  
  #include   <vector>  
  #include   <algorithm>  
  //用户输入的规律必须每次要输入空格  
  using   namespace   std;  
  void   main()  
  {  
  typedef   vector<string>   glVector();//规律数组glVector()用语存放规律  
  typedef   vector<string>   xxVector();//信息数组xxVector()用于存放提取出来的信息  
  typedef   glVector::iterator   glIT;//当前指针  
  strIT   start,end,it;  
  start=glVector.begin   ();  
  end=glVector.end   ();  
          string   s1;  
  string   *wj=file(wjvector);//行指针*wj指向文件的首行  
  string   *gl=file(glvector());//行指针gl指向用户输入的规律  
          cout   <<   "Enter   a   sentence   (以空格和回车为结束符号):";//用户输入规律  
  int   i_line   =   0;  
  while(true)  
  {  
  if(strstr("glvector",   "\r\n"))  
  i_line++;  
  else  
  {  
  return   i_line;  
  break;  
  }  
  }   //统计客户输入规律的行数(关键字的个数)  
  int   i_line1   =   0;  
  while(true)  
  {  
  if(strstr("wenjian",   "\r\n"))  
  i_line1++;  
  else  
  {  
  return   i_line1;  
  break;  
  }  
  }  
  const   int   size   =   i_line;//盛放规律的数组长度  
  const   int   size1   =i_line1;//盛放信息的数组长度  
  strVector   glVector(size);//规律组  
  string   value("aaa");//初始化为aaa  
  strVector   wjVector(size1);//文件组  
  string   value("bbb");//初始化为bbb  
  for(int   i=0;i<i_line;i++)  
  {    
  string   glline=getline(cin,s1,   '   ');  
  glvector[i]=glline;//把每行的规律作为规律数组的一个元素  
  *gl++;//每次循环都指向下一行  
  for(int   j=0;j<i_line1;j++)  
  {  
  string   value("bbb");  
  string   wjline=getline(wenjian,s1,   '\n');//回车作为一行的结束符号(必须是一行一种信息)  
  wjvector[j]=wjline;//把每行的文件作为文件数组的一个元素  
  strstr("wjvector[j]",glvector[i]);  
  if(strstr("wjvector[j]",glvector[i])=true)//匹配成功  
  {  
  cout<<wjvector[j]<<"\r\n"<<endl;  
  }  
  *wj++;  
  else  
  {  
  *wj++;  
  continue;  
  }  
  }  
  else  
  cout<<"你的查询条件找不到!请重新输入!"<<endl;  
  }  
  for(it=start;it!=end;it++)  
  *gl=NULL;//释放*gl  
  *wj=NULL;  
  return;  
  }  
  free   std;  
     
  问题点数:100、回复次数:7Top

1 楼shucun(树村)回复于 2003-12-03 14:50:43 得分 0

我的邮箱是shucun@126.comTop

2 楼fuxf(布衣)回复于 2003-12-03 15:26:07 得分 0

呆会来Top

3 楼wangweixing2000(星(inspiration(灵感)))回复于 2003-12-03 15:32:09 得分 0

GZTop

4 楼shucun(树村)回复于 2003-12-03 17:01:14 得分 0

虔诚等待各位朋友的到来!感谢大家的关注  
  请不吝赐教Top

5 楼shucun(树村)回复于 2003-12-03 22:08:39 得分 0

各位大哥,大姐,我在这里等里一整天了。还没有人来!给点面子,帮我看看吧!Top

6 楼0sch(!)回复于 2003-12-12 09:29:13 得分 100

我还是把程序贴出来  
  首先,建立一个库文件,我们将其取名为id.lib,其内容格式如下:  
  41011111111111  
  河南公司  
  0371-8888888  
  某某某1  
   
  41011111111112  
  上海公司  
  0371-8888889  
  某某某3  
   
  41011111111113  
  深圳公司  
  0371-8888800  
  某某某3  
   
  .  
  .  
  .  
  你也可以根据具体需要,在改编程序时改变库文件格式。  
  然后,用VC++6.0新建一个基于对话框模板的工程,在其中加入一个EditBox控件,点击右键选取属性。选中它的多行、只读、竖向滚动条选项。  
  然后增加一个Static   Text控件,将内容改为:请输入纳税人ID。  
  然后再在其后增加一个EditBox控件。  
  然后在对话框上点击右键,选择ClassWizard,在其中为两个编辑控件分别映射一个CString类型的变量,取名为:m_out,m_id  
  然后选中第一页,在左边框子中选中IDC_EDIT2控件ID,然后在右边框选中change消息,点击增加函数按钮,然后点击edit按钮,在这个函数中增加代码:  
  UpdateData();  
  if(m_id.GetLength()<14)  
  {  
  return;  
  }  
  else  
  {  
  ifstream   infile("id.lib");  
  char   *   buff=new   char[256];  
  while(!infile.eof())  
  {  
  infile.getline(buff,255,'\n');  
  if(CString(buff)!=m_id)  
  continue;  
  else  
  break;  
  }  
  if(infile.eof())  
  {  
  AfxMessageBox(_T("没有这个ID,请检查是否输错"),MB_ICONSTOP);  
  infile.close();  
  return;  
  }  
  else  
  {  
  m_out+=_T("纳税人识别号:")+CString(buff);  
  for(int   i=0;i<4;i++)  
  {  
  if(!infile.eof())  
  infile.getline(buff,255,'\n');  
  if(infile.eof())  
  {  
  AfxMessageBox(_T("库文件错误"),MB_ICONSTOP);  
  infile.close();  
  return;  
  }  
  CString   str;  
  switch(i)  
  {  
  case   0:  
  m_out+=_T("\r\n纳税人名称:");  
  m_out+=CString(buff);  
  break;  
  case   1:  
  SYSTEMTIME   time;  
  ::GetSystemTime(&time);  
  str.Format("\r\n纳税时间:%d-%d-%d",  
  time.wYear,  
  time.wMonth,  
  time.wDay);  
  m_out+=str;  
  m_out+=_T("\r\n电话号码:");  
  m_out+=CString(buff);  
  break;  
  case   2:  
  m_out+=_T("\r\n法定代表人:");  
  m_out+=CString(buff);  
  break;  
  default:  
  m_out+=_T("\r\n\r\n");  
  }  
  }  
  }  
  infile.close();  
  }  
   
  UpdateData(FALSE);  
  m_ctlOut.SetSel(m_out.GetLength()-1,m_out.GetLength());  
  然后,再映射WM_CLOSE消息,增加函数,更改如下:  
  void   CMyDlg::OnClose()    
  {  
  //   TODO:   Add   your   message   handler   code   here   and/or   call   default  
  ofstream   outFile("record.txt");  
  outFile<<m_out;  
  outFile.close();  
  CDialog::OnClose();  
  }  
   
   
  在本程序开始部位,加入  
  #include   "fstream.h"  
   
  编译,运行,搞定。  
  Top

7 楼0sch(!)回复于 2003-12-12 09:32:27 得分 0

你的邮箱是shucun@126.com   吧,  
  我将程序发向你的邮箱.  
  希望你结合我的程序和给你的这些指导,好好研究研究程序的结构,主要是VC自己生成的东西,程序是如何执行的,是如何响应消息的,再看一看书.  
  你是聪明人,应该就此可以入门了.  
  再见!Top

相关问题

  • 急盼!!!请高手指点!
  • Excel的问题--急!!!盼高手指点
  • 迷茫中,急盼高人指点。
  • 在线急盼高手指点
  • 急,请指点!
  • 急需指点
  • 本人初学写键盘HOOK程序,照着书上写的,但是总是有问题.请高手指点一二,感激涕零!
  • 盼 高 手 指 点
  • 急....太侠指点
  • 急急!盼高手指点,在线等待!

关键词

  • 客户
  • 文件
  • 指针
  • 信息
  • 软件
  • 用户
  • 回车
  • 字符串
  • glvector
  • 纳税人

得分解答快速导航

  • 帖主:shucun
  • 0sch

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo