search.cpp
上传用户:hbzqs18
上传日期:2021-03-04
资源大小:46k
文件大小:5k
源码类别:

家庭/个人应用

开发平台:

Visual C++

  1. // search.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "学生家庭经济情况调查系统.h"
  5. #include "search.h"
  6. #include <fstream.h>
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // search dialog
  14. search::search(CWnd* pParent /*=NULL*/)
  15. : CDialog(search::IDD, pParent)
  16. {
  17. //{{AFX_DATA_INIT(search)
  18. m_editJiGuan = _T("");
  19. //}}AFX_DATA_INIT
  20. }
  21. void search::DoDataExchange(CDataExchange* pDX)
  22. {
  23. CDialog::DoDataExchange(pDX);
  24. //{{AFX_DATA_MAP(search)
  25. DDX_Control(pDX, IDC_LIST_RESULTS, m_listResults);
  26. DDX_Control(pDX, IDC_COMBO3, m_comboIn);
  27. DDX_Text(pDX, IDC_EDIT_JIGUAN, m_editJiGuan);
  28. //}}AFX_DATA_MAP
  29. }
  30. BEGIN_MESSAGE_MAP(search, CDialog)
  31. //{{AFX_MSG_MAP(search)
  32. ON_BN_CLICKED(IDC_BTN_QUERY, OnBtnQuery)
  33. //}}AFX_MSG_MAP
  34. END_MESSAGE_MAP()
  35. /////////////////////////////////////////////////////////////////////////////
  36. // search message handlers
  37. BOOL search::OnInitDialog() 
  38. {
  39. CDialog::OnInitDialog();
  40. // TODO: Add extra initialization here
  41.     int nIndex = m_comboIn.AddString(">=500");
  42. m_comboIn.AddString("<500");
  43. m_listResults.InsertColumn(0,"学号");
  44. m_listResults.InsertColumn(1,"籍贯");
  45. m_listResults.InsertColumn(1,"家庭月收入");
  46. m_listResults.InsertColumn(3,"家庭成员数");
  47. m_listResults.SetColumnWidth(0,100);
  48. m_listResults.SetColumnWidth(1,100);
  49. m_listResults.SetColumnWidth(2,50);
  50. m_listResults.SetColumnWidth(3,100);
  51. return TRUE;  // return TRUE unless you set the focus to a control
  52.               // EXCEPTION: OCX Property Pages should return FALSE
  53. }
  54. void search::OnBtnQuery() 
  55. {
  56. // TODO: Add your control notification handler code here
  57. UpdateData();
  58. CString pattern;
  59. int nIndex = GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO3);
  60. GetDlgItemText(nIndex,pattern);
  61. if(!pattern.Compare("全体学生家庭经济情况"))
  62. {
  63. ShowAll();
  64. }else if(!pattern.Compare("籍贯"))
  65. {
  66. ShowAccordingJiGuan();
  67. }else if(!pattern.Compare("家庭人均月收入"))
  68. {
  69.          ShowAccordingIncome();
  70. }else MessageBox("不知名的错误,请重新启动程序!");
  71. }
  72. void search::ShowAll()
  73. {
  74. m_listResults.DeleteAllItems();
  75.     ifstream inf;
  76.     inf.open("student.dat",ios::nocreate|ios::in);
  77. char    buf[MAX_PATH];
  78. char    stunum[10];
  79. char    jiguan[20];
  80. int     income;
  81. int     members;
  82. int     i=0;
  83. while(true){
  84. inf.get(stunum,10,' ');
  85. stunum[9]=0;
  86. inf.seekg(1,ios::cur);
  87. inf>>jiguan;
  88. inf.seekg(1,ios::cur);
  89.     inf>>income;
  90. inf.seekg(1,ios::cur);
  91. inf>>members;
  92. if(inf.eof())break;
  93. inf.seekg(2,ios::cur);
  94.         m_listResults.InsertItem(i,"");
  95. m_listResults.SetItemText(i,0,stunum);
  96. m_listResults.SetItemText(i,1,jiguan);
  97. sprintf(buf,"%d",income);
  98. m_listResults.SetItemText(i,2,buf);
  99. sprintf(buf,"%d",members);
  100. m_listResults.SetItemText(i,3,buf);
  101. i++;
  102. }
  103. inf.close();
  104. }
  105. void search::ShowAccordingJiGuan()
  106. {
  107. UpdateData();
  108. m_listResults.DeleteAllItems();
  109. ifstream inf;
  110.     inf.open("student.dat",ios::nocreate|ios::in);
  111. char    buf[MAX_PATH];
  112. char    stunum[10];
  113. char    jiguan[20];
  114. int     income;
  115. int     members;
  116. int     i=0;
  117. BOOL    find = FALSE;
  118. while(true){
  119. inf.get(stunum,10,' ');
  120. stunum[9]=0;
  121. inf.seekg(1,ios::cur);
  122. inf>>jiguan;
  123. if(!strcmp(jiguan,m_editJiGuan.GetBuffer(20)))
  124. find = TRUE;
  125. inf.seekg(1,ios::cur);
  126.     inf>>income;
  127. inf.seekg(1,ios::cur);
  128. inf>>members;
  129. if(inf.eof())break;
  130. inf.seekg(2,ios::cur);
  131. if(find){
  132.             m_listResults.InsertItem(i,"");
  133.     m_listResults.SetItemText(i,0,stunum);
  134.     m_listResults.SetItemText(i,1,jiguan);
  135.     sprintf(buf,"%d",income);
  136.     m_listResults.SetItemText(i,2,buf);
  137.     sprintf(buf,"%d",members);
  138.     m_listResults.SetItemText(i,3,buf);
  139.     i++;
  140. }
  141. find = FALSE;
  142. }
  143. inf.close();
  144. }
  145. void search::ShowAccordingIncome()
  146. {
  147.     CString str;
  148. m_comboIn.GetLBText(m_comboIn.GetCurSel(),str);
  149. m_listResults.DeleteAllItems();
  150. int pattern = 0;
  151. if(!str.Compare(">=500"))
  152. pattern = 1;
  153. else
  154. pattern =0;
  155. ifstream inf;
  156.     inf.open("student.dat",ios::nocreate|ios::in);
  157. char    buf[MAX_PATH];
  158. char    stunum[10];
  159. char    jiguan[20];
  160. int     income;
  161. int     members;
  162. int     i=0;
  163. BOOL    find = FALSE;
  164. while(true){
  165. inf.get(stunum,10,' ');
  166. stunum[9]=0;
  167. inf.seekg(1,ios::cur);
  168. inf>>jiguan;
  169. inf.seekg(1,ios::cur);
  170.     inf>>income;
  171. if(pattern == 1)
  172. {
  173.    if(income >= 500)
  174.    find = TRUE;
  175. }else
  176. {
  177.            if(income < 500)
  178.    find = TRUE;
  179. }
  180. inf.seekg(1,ios::cur);
  181. inf>>members;
  182. if(inf.eof())break;
  183. inf.seekg(2,ios::cur);
  184. if(find){
  185.             m_listResults.InsertItem(i,"");
  186.     m_listResults.SetItemText(i,0,stunum);
  187.     m_listResults.SetItemText(i,1,jiguan);
  188.     sprintf(buf,"%d",income);
  189.     m_listResults.SetItemText(i,2,buf);
  190.     sprintf(buf,"%d",members);
  191.     m_listResults.SetItemText(i,3,buf);
  192.     i++;
  193. }
  194. find = FALSE;
  195. }
  196. inf.close();
  197. }