Ubuntu下Codeblocks+wxWidgets编程,学生公寓管理系统,基于窗体(使用wxFormbuilder拉取控件)。C++,sqlite3
/***************************************************************
 * 
Name:      StuManaMain.cpp
 * Purpose: 
  Code for Application Frame
 * Author:   
 Zhangaihua (62*********@qq.com)
 * Created:   
2014-05-20
 * Copyright: Zhangaihua 
()
 * 
License:
 **************************************************************/
#ifdef 
WX_PRECOMP
#include 
"wx_pch.h"
#endif
#ifdef 
__BORLANDC__
#pragma hdrstop
#endif 
//__BORLANDC__
#include 
"StuManaMain.h"
#include<sqlite3.h>
//helper 
functions
enum wxbuildinfoformat {
    
short_f, long_f };
wxString 
wxbuildinfo(wxbuildinfoformat format)
{
  
  wxString wxbuild(wxVERSION_STRING);
    
if (format == long_f )
    {
#if 
defined(__WXMSW__)
        wxbuild << 
_T("-Windows");
#elif defined(__WXMAC__)
  
      wxbuild << _T("-Mac");
#elif 
defined(__UNIX__)
        wxbuild << 
_T("-Linux");
#endif
#if 
wxUSE_UNICODE
        wxbuild << 
_T("-Unicode build");
#else
      
  wxbuild << _T("-ANSI build");
#endif // 
wxUSE_UNICODE
    }
  
  return 
wxbuild;
}
StuManaFrame::StuManaFrame(wxFrame 
*frame)
    : 
GUIFrame(frame)
{
#if 
wxUSE_STATUSBAR
    
statusBar->SetStatusText(_("Hello Code::Blocks user!"), 
0);
    
statusBar->SetStatusText(wxbuildinfo(short_f), 
1);
#endif
}
StuManaFrame::~StuManaFrame()
{
}
void 
StuManaFrame::OnClose(wxCloseEvent 
&event)
{
    
Destroy();
}
void 
StuManaFrame::OnQuit(wxCommandEvent 
&event)
{
    
Destroy();
}
void 
StuManaFrame::OnAbout(wxCommandEvent 
&event)
{
    wxString msg = 
wxbuildinfo(long_f);
//    wxMessageBox(msg, 
_("Welcome to..."));
}
void 
StuManaFrame::OnAdd(wxCommandEvent 
&event)
{
   //add student‘s 
dormitory infomation
    sqlite3 
*db=NULL;
int flag;
    char 
*errmsg;
flag = 
sqlite3_open("./stuinfo.db",&db);
if(SQLITE_OK != 
flag)
{
        
wxLogMessage("Database connect 
failed!");
exit(-1);
}
  
  char id[20], name[20], dorid[20], phone[20], 
qq[20],sex[10];
    strcpy(id, 
m_id->GetValue().mb_str());
    strcpy(name, 
m_name->GetValue().mb_str());
    strcpy(dorid, 
m_dormitoryid->GetValue().mb_str());
    
strcpy(phone, m_phone->GetValue().mb_str());
    
strcpy(qq, m_qq->GetValue().mb_str());
    
strcpy(sex, m_sex->GetValue().mb_str());
    
if(strcmp("", id) == 1)
    {
  
     wxLogMessage("the stu‘s id can not be 
null");
      
 return;
    }
    
 if(strcmp("", name) == 1)
    
{
       wxLogMessage("the stu‘s name can 
not be null");
      
 return;
    }
    char 
st[500];
    sprintf(st, "insert into stu values(‘%s‘, 
‘%s‘, ‘%s‘, ‘%s‘, ‘%s‘,‘%s‘);",
        
    id, name, dorid, phone, qq,sex);
    
if(sqlite3_exec(db,st,NULL,NULL,&errmsg) != 
SQLITE_OK)
    {
      
  wxLogMessage("Error");
        
wxLogMessage(errmsg);
        
return;
    }
    
else
    {
        
wxLogMessage("add success!!");
        
wxString str="";
        
m_id->SetValue(str);
        
m_name->SetValue(str);
        
m_dormitoryid->SetValue(str);
        
m_phone->SetValue(str);
        
m_qq->SetValue(str);
        
m_sex->SetValue(str);
        
return;
    }
    
sqlite3_close(db);
}
void 
StuManaFrame::OnDelete(wxCommandEvent 
&event)
{
   //delete student‘s 
dormitory infomation
    sqlite3 
*db=NULL;
int flag;
    char 
*errmsg;
    char stuid[20];
flag = 
sqlite3_open("./stuinfo.db",&db);
if(SQLITE_OK != 
flag)
{
        
wxLogMessage("Database connect 
failed!");
exit(-1);
}
  
  strcpy(stuid, m_deleteid->GetValue().mb_str());
  
  if(strcmp("", stuid) == 0)
    
{
       wxLogMessage("the stu‘s id deleted 
can not be null");
      
 return;
    }
    char 
sql1[500];
    sprintf(sql1,"select * from stu where 
id = ‘%s‘;",stuid);
    
if(sqlite3_exec(db,sql1,NULL,NULL,&errmsg)!=SQLITE_OK)
  
  {
        wxLogMessage("Error!The 
student not exists!\n");
        
return;
    }
    
    char *sql=sqlite3_mprintf("delete from stu where id 
=‘%s‘;",stuid);
        
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != 
SQLITE_OK)
        {
  
          wxLogMessage("Error");
  
          wxLogMessage(errmsg);
  
          return;
      
  }
        else
  
      {
            
wxLogMessage("delete success!!");
        
    wxString str="";
        
    m_deleteid->SetValue(str);
      
      return;
        
}
    
sqlite3_close(db);
}
void 
StuManaFrame::OnModify(wxCommandEvent 
&event)
{
   //modify student‘s 
dormitory infomation
    sqlite3 
*db=NULL;
int flag;
    char 
*errmsg;
flag = 
sqlite3_open("./stuinfo.db",&db);
if(SQLITE_OK != 
flag)
{
        
wxLogMessage("Database connect 
failed!");
exit(-1);
}
char 
modifyid[20], modifyname[20], modifydorid[20], modifyphone[20], 
modifyqq[20],modifysex[10];
    strcpy(modifyid, 
m_modifyid->GetValue().mb_str());
    
strcpy(modifyname, m_modifyname->GetValue().mb_str());
  
  strcpy(modifydorid, 
m_modifydorid->GetValue().mb_str());
    
strcpy(modifyphone, 
m_modifyphone->GetValue().mb_str());
    
strcpy(modifyqq, m_modifyqq->GetValue().mb_str());
  
  strcpy(modifysex, 
m_modifysex->GetValue().mb_str());
    
if(strcmp("", modifyid) == 0)
    
{
       wxLogMessage("the stu‘s id can not 
be null");
      
 return;
    }
    char 
st[500];
    char *sql=sqlite3_mprintf("select 
count(*) from stu where id=‘%s‘;",modifyid);
    
sqlite3_stmt *pstmt;
    sqlite3_prepare(db, sql, 
strlen(sql), &pstmt, NULL);
    
sqlite3_step(pstmt);
    int 
count=sqlite3_column_int(pstmt,0);
    
sqlite3_finalize(pstmt);
    
if(count<0)
    {
    
    wxLogMessage("the student not exist.\n");
  
      wxLogMessage(errmsg);
      
  return;
    }
    
sprintf(st, "update stu set name=‘%s‘,dormitoryid=‘%s‘, phone=‘%s‘,qq=‘%s‘, 
sex=‘%s‘ where 
id=‘%s‘;",modifyname,modifydorid,modifyphone,modifyqq,modifysex,modifyid);
  
  if(sqlite3_exec(db,st,NULL,NULL,&errmsg) != 
SQLITE_OK)
    {
      
  wxLogMessage("Error");
        
wxLogMessage(errmsg);
        
return;
    }
    
else
    {
        
wxLogMessage("modify success!");
        
wxString str="";
        
m_modifyid->SetValue(str);
        
m_modifyname->SetValue(str);
        
m_modifydorid->SetValue(str);
        
m_modifyphone->SetValue(str);
        
m_modifyqq->SetValue(str);
        
m_modifysex->SetValue(str);
        
return;
    }
    
sqlite3_close(db);
}
void 
StuManaFrame::OnSearch(wxCommandEvent 
&event)
{
   //search student‘s 
dormitory infomation
    sqlite3 
*db=NULL;
int flag;
    char 
*errmsg;
    char **dbresult;
  
  int nrow,ncolumn;//search jilushu and ziduanshu
  
  int i,j,index;
flag = 
sqlite3_open("./stuinfo.db",&db);
if(SQLITE_OK != 
flag)
{
        
wxLogMessage("Database connect 
failed!");
exit(-1);
}
char 
searchid[20],searchname[20];
    strcpy(searchid, 
m_searchid->GetValue().mb_str());
    
strcpy(searchname, m_searchname->GetValue().mb_str());
  
  if(strcmp("", searchid) == 0 || strcmp("", searchid) == 
0)
    {
      
 wxLogMessage("the stu‘s search id and name can not be null at the same 
time!");
      
 return;
    }
    char 
*sql=sqlite3_mprintf("select * from stu where id =‘%s‘ or 
name=‘%s‘;",searchid,searchname);
    wxString 
str1;
    
if(sqlite3_get_table(db,sql,&dbresult,&nrow,&ncolumn,&errmsg) != 
SQLITE_OK)
    {
      
  wxLogMessage("Error");
        
wxLogMessage(errmsg);
        
return;
    }
    
else
    {
        
index=ncolumn;
        
for(i=0;i<nrow;i++)
        
{
            
for(j=0;j<ncolumn;j++)
          
  {
                
str1=str1+" \n"+dbresult[j]+":"+dbresult[index];
    
            ++index;
    
        }
          
  wxPuts("\n");
        
}
        wxLogMessage("The search result 
is:\n%s.\n",str1);
        
sqlite3_free_table(dbresult);
        
wxString str="";
        
m_searchid->SetValue(str);
        
m_searchname->SetValue(str);
        
return;
    }
    
sqlite3_close(db);
}
void 
StuManaFrame::OnExit(wxCommandEvent 
&event)
{
   //exit the student 
system
    
Destroy();
}
Ubuntu下Codeblocks+wxWidgets编程,学生公寓管理系统,基于窗体(使用wxFormbuilder拉取控件)。C++,sqlite3,布布扣,bubuko.com
