我测试我快乐,测试与梦想齐飞.

技术积累.

上一篇 / 下一篇  2008-08-04 19:32:03 / 个人分类:C语言

我发现自己蛮强的(小臭美下),什么东西不管我以前是否接触过,只要给我点时间,我都有信心去把它做好..

本来我是做测试的,但无奈测试部就我一个,势单力薄,很多和测试相关的东西实施起来都不顺利,还时不时要接受开发老大下发给我的编程任务(不过我的心态也还好,就当学习,充实自己).上次让我帮他把一个VC的串口升级工具美化一下,加上动态背景...这次是把一个序列号打印程序加些功能,像用户登录,用户的权限管理,新建用户,删除用户,修改密码这些功能...其实我对VC一点都不熟,每次是用到哪就去学,能用C写就尽量用C去写,反正在VC里也执行..

void Dialog_login::OnOK()
{
 // TODO: Add extra validation here
#if 1
  char  iniFilePath[256];
  GetModuleFileName(NULL,iniFilePath,sizeof(iniFilePath));
  for(int i=strlen(iniFilePath)-1;i>=0;i--)
  {
   if(iniFilePath[i]=='\\')
   {
    strcpy(iniFilePath+i+1,"Syscfg.ini");

//dialog_login.m_user_name
              //将用户名和密码定义为结构体
    /*char User_Name[20];
    char User_Password[20];*/
    struct user
    {
     char user_name[20];
     char user_password[20];
    }userinfo[3]={{"user","user"},{"usr","password"},{"Admin","1234"}};
               FILE *fp;
      int i;
      if((fp=fopen("usrinfo.cfg","wb"))==NULL)
      {
                    MessageBox("cannot open user information file","Error",MB_OKCANCEL | MB_ICONWARNING);
          return;
               }
               for(i=0;i<3;i++)
      {
       if(fwrite(&userinfo[i],sizeof(struct user),1,fp)!=1)
        MessageBox("file write error","Error",MB_OKCANCEL | MB_ICONWARNING);
      }  // 调试用
              fclose(fp);
      GetDlgItem(IDC_EDIT_USER_NAME)->GetWindowText(m_user_name);
               GetDlgItem(IDC_EDIT_PASSWORD)->GetWindowText(m_user_password);
   //用户信息从文件中读出来再和m_user_name,m_user_password比较
       if((fp=fopen("usrinfo.cfg","rb"))==NULL)
      {
        MessageBox("cannot open user information file","Error",MB_OKCANCEL | MB_ICONWARNING);
          return;
               }
      for(i=0;i<3;i++)
      {
       fread(&userinfo[i],sizeof(struct user),1,fp);
       if(!memcmp(m_user_name,userinfo[i].user_name,strlen(m_user_name))&&
        !memcmp(m_user_password,userinfo[i].user_password,strlen(m_user_password)))
       {
        break;
        }
      if(feof(fp))
       {  
       /*CString   s   ;   
         s.Format("%d",i  );   
         AfxMessageBox(s); */

        fclose(fp);
        MessageBox("Password or User name Error!","Error",MB_OKCANCEL | MB_ICONWARNING);
              return;
       
       }
      
      }
      fclose(fp);

  
    /*GetPrivateProfileString("User", "User_Name", "Admin",User_Name,sizeof(User_Name), iniFilePath);
    GetPrivateProfileString("User", "User_Password", "1234",User_Password,sizeof(User_Password), iniFilePath);*/

    //CString m_user_name;
    //CString dialog_login
//dialog_login.IDD_DIALOG_LOGIN
    //CEdit*  pEditFileName = (CEdit*)GetDlgItem( IDC_EDIT_PASSWORD );

    //pEditFileName->SetWindowText( "1234");
    //SetDlgItemText(IDC_EDIT_USER_NAME,dialog_login.m_user_name);
   /* GetDlgItem(IDC_EDIT_PASSWORD)->GetWindowText(m_user_password);

    if(strcmp(m_user_password,User_Password))
    {
     MessageBox("Password or User name Error!","Error",MB_OKCANCEL | MB_ICONWARNING);
     return; 
    }
    else
    {
     break;主要是想实现一个从文件中读用户名和密码,然后并进行比较,用户输入的是否正确...

    }*/
   }
  }
#endif

 CDialog::OnOK();
}

框架是那个开发老大已经搭好的,我主要写一些实现..今天就写了一个,主要是想实现一个从文件中读用户名和密码,然后进行比较,用户的信息是否正确...紫色部分的代码是我写的,其实做为测试人员,我自己看了自己写的代码都觉得太不健壮了...不过对自己来说还是学到点东西...

1.fclose(fp);这句话,我的整个程序就因为这句话而一直导致辞功能不能实现..先对文件中草药写数据后如果不关闭文件指针,文件指针会一直指向EOF,所以进入下边的循环时就一直在第一层出不去,其实当时我通过AfxMessageBox(s);这个调试信息知道程序是在文件操作上出了问题,刚开始还一直怀疑程序的逻辑

2.如何在VC在查看变量的值,以前我调试时只会看VC中加打印语句,今天也是上网搜了才有结果...以后可以常用..CString   s   ;   
                   s.Format("%d",i  );   
                   AfxMessageBox(s);

3.对数据的存储,有想过用二维数组,有想过用链表,还有我认为最方便的结构体...不过这个数据量小,如果数据量大,只能用数据库了,数据的关联存储和查找(不大熟)...

还有一点担心,接下来还有几天苦战,不知道这种数据结构能不能行,其实结构体和链表我用纯C做过类似的程序...但是要在VC的可视化界面下显示,还是有点没底...因为太想做好了....


TAG: C语言

 

评分:0

我来说两句

日历

« 2024-05-25  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 7748
  • 日志数: 11
  • 建立时间: 2008-06-23
  • 更新时间: 2008-09-25

RSS订阅

Open Toolbar