亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

MFC實現學生選課系統

2020-01-26 13:31:56
字體:
來源:轉載
供稿:網友

本文實例為大家分享了MFC實現學生選課系統的具體代碼,供大家參考,具體內容如下

先上效果圖:

主要功能:

輸入學號,從數據庫中查找學號,若找到相匹配的學號,則顯示數據庫中姓名、學歷、導師,同時將所有可選課程顯示出來。輸入課程類型和課程名稱查詢課程進行選課,選課之后相應的選課門數、學分、學費、已選門數都會進行刷新。換個學號輸入,選課總人數就會刷新,還有一些小功能就在代碼里解釋了。
我就只把按鍵的代碼貼出來,完整工程下面有鏈接。
“確認輸入”按鍵:

void Cversion02Dlg::OnBnClickedButton1(){  UpdateData(true);  printmenshu=0;//將顯示的選課門數、已選學分、學費清零  yixuanxf=0;  xuefei=0;  yixuanms=0;//printmenshu是用來顯示在MFC上,程序里處理的是yixuanms,最后將yxuanms賦給printmenshu,其實可以不用yixuanms,將yixuanms全部替換為printmenshu也可以  if(yixuan.GetItemCount()!=0){//如果yixuan列表不為空,則選課總人數加1。    xuankezrs++;  }  while ( yixuan.DeleteItem (0));//yixuan列表清空  int i=0,j=0;  for(i=0;i<30;i++){    if(ugs[i].chaxunxuehao(xuehao)){      CString edit1,edit2,edit3;      edit1=ugs[i].printname();      edit2=ugs[i].printban();      edit3=ugs[i].printxue();      SetDlgItemText(IDC_EDIT2,edit1);//這里也可以直接在控件上添加變量,直接賦給它。就像printxueli=edit3      SetDlgItemText(IDC_EDIT3,edit2);      //SetDlgItemText(IDC_EDIT3,edit3);      printxueli=edit3;      break;    }  }  for(j=0;j<15;j++){    if(gs[j].chaxunxuehao(xuehao)){      CString edit1,edit2,edit3;      edit1=gs[j].printname();      edit2=gs[j].printdao();      edit3=gs[j].printxue();      SetDlgItemText(IDC_EDIT2,edit1);      SetDlgItemText(IDC_EDIT3,edit2);      //SetDlgItemText(IDC_EDIT3,edit3);      printxueli=edit3;      break;    }  }  if(i==30&&j==15){    INT_PTR nRes;    nRes=MessageBox(_T("請輸入正確的學號"),_T("錯誤"),MB_OK|MB_ICONERROR);    return; //這里不寫return會直接運行下面的程序  }else{    yixuannum[k]=xuehao;//將找到的學號存在數組里,用來判斷后面輸入的學號是否前面輸入過    k++;  }  if(k>1){ //這里的k是從1開始的,即當k=1時,只輸入了第一個學號,不用判斷是否已經選過課    for(int q=0;q<k-1;q++){ //這里注意q<k-1,當k=2時表示此時的學號是第二次輸入的,需判斷與第一次輸入的學號是否相同,第一次的學號存在yixuannum[0]里      if(xuehao==yixuannum[q]){        MessageBox(_T("該學生已經選過課了"),_T("錯誤"),MB_OK|MB_ICONERROR);        break;//這里如果寫成return,不知道為什么選課總人數不會刷新了      }    }  }  while ( kexuan.DeleteItem (0));  for(int p=0;p<12;p++){   CString klx,kmc,kxh,kxf,krs;   klx=c[p].klx();   kmc=c[p].kmc();   krs.Format(_T("%d"),yixuankrs[p]);   kxh.Format(_T("%d"),c[p].kxh());    kxf.Format(_T("%d"),c[p].kxf());   kexuan.InsertItem(p,kxh);   kexuan.SetItemText(p,1,klx);   kexuan.SetItemText(p,2,kmc);   kexuan.SetItemText(p,3,kxf);   kexuan.SetItemText(p,4,krs);  }  UpdateData(false);}

“查詢”按鍵:

void Cversion02Dlg::OnBnClickedButton2(){  // TODO: 在此添加控件通知處理程序代碼  UpdateData(true);  while ( kexuan.DeleteItem (0));//首先將kexuan清空,否則后面產生的列表都會加在原來的列表后面。這里只需循環清掉第一行就可以,因為清掉一行下面一行會自動上來  if(inputkmc.IsEmpty()){//判斷輸入課程名稱是否為空  int q=0,k=0;  for(q=0;q<12;q++){    if(inputklx==c[q].klx()){      CString kmc,kxh,kxf,krs;//下面SetItemText中參數是CString類型,必須將各個參數轉為CString      kmc=c[q].kmc();      krs.Format(_T("%d"),yixuankrs[q]); //正常應該寫成krs.Format("%d",yixuankrs[q]);但是會報錯,前面加上_T就可以了      kxh.Format(_T("%d"),c[q].kxh());      kxf.Format(_T("%d"),c[q].kxf());      kexuan.InsertItem(k,kxh);      kexuan.SetItemText(k,1,inputklx);      kexuan.SetItemText(k,2,kmc);      kexuan.SetItemText(k,3,kxf);      kexuan.SetItemText(k,4,krs);      k++;    }  }  if(k==0){    MessageBox(_T("請輸入正確的課程類型"),_T("錯誤"),MB_OK|MB_ICONERROR);    for(int p=0;p<12;p++){ //前面已經將列表清空,這里提示錯誤信息之后,將所有課程顯示出來   CString klx,kmc,kxh,kxf,krs;   klx=c[p].klx();   kmc=c[p].kmc();   krs.Format(_T("%d"),yixuankrs[p]);   kxh.Format(_T("%d"),c[p].kxh());   kxf.Format(_T("%d"),c[p].kxf());   kexuan.InsertItem(p,kxh);   kexuan.SetItemText(p,1,klx);   kexuan.SetItemText(p,2,kmc);   kexuan.SetItemText(p,3,kxf);   kexuan.SetItemText(p,4,krs);  }  }  }  else if(inputklx.IsEmpty()){//判斷輸入課程類型是否為空  int l=0;  for(l=0;l<12;l++){    if(inputkmc==c[l].kmc()){      CString klx,kxh,kxf,krs;      klx=c[l].klx();      krs.Format(_T("%d"),yixuankrs[l]);      kxh.Format(_T("%d"),c[l].kxh());      kxf.Format(_T("%d"),c[l].kxf());      kexuan.InsertItem(0,kxh);      kexuan.SetItemText(0,1,klx);      kexuan.SetItemText(0,2,inputkmc);      kexuan.SetItemText(0,3,kxf);      kexuan.SetItemText(0,4,krs);      break;    }  }  if(l==12){    MessageBox(_T("請輸入正確的課程名稱"),_T("錯誤"),MB_OK|MB_ICONERROR);    for(int p=0;p<12;p++){   CString klx,kmc,kxh,kxf,krs;   klx=c[p].klx();   kmc=c[p].kmc();   krs.Format(_T("%d"),yixuankrs[p]);   kxh.Format(_T("%d"),c[p].kxh());    kxf.Format(_T("%d"),c[p].kxf());   kexuan.InsertItem(p,kxh);   kexuan.SetItemText(p,1,klx);   kexuan.SetItemText(p,2,kmc);   kexuan.SetItemText(p,3,kxf);   kexuan.SetItemText(p,4,krs);  }  }  }  else{  int m=0;  for(m=0;m<12;m++){    if(inputkmc==c[m].kmc()&&inputklx==c[m].klx()){//如果輸入課程類型和課程名稱都不為空,判斷課程類型和課程名稱是否匹配      CString kxh,kxf,krs;      krs.Format(_T("%d"),yixuankrs[m]);      kxh.Format(_T("%d"),c[m].kxh());      kxf.Format(_T("%d"),c[m].kxf());      kexuan.InsertItem(0,kxh);      kexuan.SetItemText(0,1,inputklx);      kexuan.SetItemText(0,2,inputkmc);      kexuan.SetItemText(0,3,kxf);      kexuan.SetItemText(0,4,krs);      break;    }  }  if(m==12){    MessageBox(_T("請輸入正確的課程類型和課程名稱"),_T("錯誤"),MB_OK|MB_ICONERROR);    for(int p=0;p<12;p++){   CString klx,kmc,kxh,kxf,krs;   klx=c[p].klx();   kmc=c[p].kmc();   krs.Format(_T("%d"),yixuankrs[p]);   kxh.Format(_T("%d"),c[p].kxh());     kxf.Format(_T("%d"),c[p].kxf());   kexuan.InsertItem(p,kxh);   kexuan.SetItemText(p,1,klx);   kexuan.SetItemText(p,2,kmc);   kexuan.SetItemText(p,3,kxf);   kexuan.SetItemText(p,4,krs);  }  }  }  UpdateData(false);}

“選課”按鍵:

這里有一個關鍵的地方,就是假如用戶選了兩門相同的課,采用的是先添加后刪掉的方法

void Cversion02Dlg::OnBnClickedButton3(){  // TODO: 在此添加控件通知處理程序代碼  UpdateData(true);  if(printxueli!="本科生"&&printxueli!="研究生"){//防止沒輸學號直接點選課導致程序錯誤    MessageBox(_T("請選輸入學號"),_T("錯誤"),MB_OK|MB_ICONERROR);    return;  }  if(yixuanms<5){ //yixuanms是從0開始的  CString krs;  yixuankrs[chosexh-1]++;//這里不能用chosehanghao,要用chosexh-1。因為如果不經過查詢,chosehanghao=chosexh-1,但是如果查詢成功之后,這里chosehanghao不一定等于chosexh-1  krs.Format(_T("%d"),yixuankrs[chosexh-1]);  kexuan.SetItemText(chosehanghao,4,krs);  int n=0;  for(n=0;n<12;n++){ //在這個循環里即使選擇的是同一門課也會添加進yixuan,若是想在這里不添加同一門課,不易做到    if(chosexh==c[n].kxh()){      CString klx,kmc,kxf,kxh;      klx=c[n].klx();      kmc=c[n].kmc();      kxf.Format(_T("%d"),c[n].kxf());      kxh.Format(_T("%d"),chosexh);      yixuan.InsertItem(yixuanms,kxh);      yixuan.SetItemText(yixuanms,1,klx);      yixuan.SetItemText(yixuanms,2,kmc);      yixuan.SetItemText(yixuanms,3,kxf);      yixuanxf=yixuanxf+c[n].kxf();      if(printxueli=="本科生"&&n>=0&&n<=3){        xuefei=xuefei+200*c[n].kxf();      }      else if(printxueli=="本科生"&&n>=4&&n<=7){        xuefei=xuefei+150*c[n].kxf();      }      else if(printxueli=="本科生"&&n>=8&&n<=11){        xuefei=xuefei+100*c[n].kxf();      }      else if(printxueli=="研究生"&&n>=0&&n<=3){        xuefei=xuefei+200*c[n].kxf();      }      else if(printxueli=="研究生"&&n>=4&&n<=7){        xuefei=xuefei+180*c[n].kxf();      }      else if(printxueli=="研究生"&&n>=8&&n<=11){        xuefei=xuefei+150*c[n].kxf();      }      yixuanms++;      break;      }    }  }  else{    MessageBox(_T("最多選擇5門課"),_T("錯誤"),MB_OK|MB_ICONERROR);  }  for(int i=0;i<=yixuanms;i++){ //在這里判斷選擇的是否是同一門課,若是同一門課則將其刪掉。相應的學分、選課人數和學費也要減掉    for(int j=i+1;j<=yixuanms;j++){      if(yixuan.GetItemText(i,0)==yixuan.GetItemText(j,0)){        CString str,str1,krs;        int strnum=0,strnum1=0;        str=yixuan.GetItemText(i,3);        strnum=_ttoi(str);        yixuanxf=yixuanxf-strnum;        str1=yixuan.GetItemText(i,0);        strnum1=_ttoi(str1)-1;        yixuankrs[chosexh-1]--;        krs.Format(_T("%d"),yixuankrs[chosexh-1]);        kexuan.SetItemText(chosehanghao,4,krs);        if(printxueli=="本科生"&&strnum1>=0&&strnum1<=3){        xuefei=xuefei-200*c[strnum1].kxf();      }      else if(printxueli=="本科生"&&strnum1>=4&&strnum1<=7){        xuefei=xuefei-150*c[strnum1].kxf();      }      else if(printxueli=="本科生"&&strnum1>=8&&strnum1<=11){        xuefei=xuefei-100*c[strnum1].kxf();      }      else if(printxueli=="研究生"&&strnum1>=0&&strnum1<=3){        xuefei=xuefei-200*c[strnum1].kxf();      }      else if(printxueli=="研究生"&&strnum1>=4&&strnum1<=7){        xuefei=xuefei-180*c[strnum1].kxf();      }      else if(printxueli=="研究生"&&strnum1>=8&&strnum1<=11){        xuefei=xuefei-150*c[strnum1].kxf();      }        yixuan.DeleteItem(j);        MessageBox(_T("已經選過該門課"),_T("錯誤"),MB_OK|MB_ICONERROR);        yixuanms--;        break;      }    }  }  printmenshu=yixuanms;  while ( kexuan.DeleteItem (0));  for(int p=0;p<12;p++){   CString klx,kmc,kxh,kxf,krs;   klx=c[p].klx();   kmc=c[p].kmc();   krs.Format(_T("%d"),yixuankrs[p]);   kxh.Format(_T("%d"),c[p].kxh());    kxf.Format(_T("%d"),c[p].kxf());   kexuan.InsertItem(p,kxh);   kexuan.SetItemText(p,1,klx);   kexuan.SetItemText(p,2,kmc);   kexuan.SetItemText(p,3,kxf);   kexuan.SetItemText(p,4,krs);  }  UpdateData(false);}

“退課”按鍵:

這里要弄清楚列表項里的行號和序號

void Cversion02Dlg::OnBnClickedButton4(){  // TODO: 在此添加控件通知處理程序代碼  UpdateData(true);  if(yixuanms>0){  yixuanms--;//點擊退課之后,選課門數-1  CString str,str1,krs;  int tuixf=0,tuixh=0;  str=yixuan.GetItemText(tuihanghao,3);  tuixf=_ttoi(str);//CString轉為int  yixuanxf=yixuanxf-tuixf;//已選學分減掉相應的學分  str1=yixuan.GetItemText(tuihanghao,0);  tuixh=_ttoi(str1)-1;//這里要注意課程序號是從1開始的,而對象數組和每門課已選人數數組是從0開始的  yixuankrs[tuixh]--;//每門課已選人數-1  if(printxueli=="本科生"&&tuixh>=0&&tuixh<=3){//兩個列表控件屬性已經設置為只能單選一行,所以點擊一次這里只需減一次        xuefei=xuefei-200*c[tuixh].kxf();      }      else if(printxueli=="本科生"&&tuixh>=4&&tuixh<=7){        xuefei=xuefei-150*c[tuixh].kxf();      }      else if(printxueli=="本科生"&&tuixh>=8&&tuixh<=11){        xuefei=xuefei-100*c[tuixh].kxf();      }      else if(printxueli=="研究生"&&tuixh>=0&&tuixh<=3){        xuefei=xuefei-200*c[tuixh].kxf();      }      else if(printxueli=="研究生"&&tuixh>=4&&tuixh<=7){        xuefei=xuefei-180*c[tuixh].kxf();      }      else if(printxueli=="研究生"&&tuixh>=8&&tuixh<=11){        xuefei=xuefei-150*c[tuixh].kxf();      }  printmenshu=yixuanms;  yixuan.DeleteItem(tuihanghao);  while ( kexuan.DeleteItem (0));  for(int p=0;p<12;p++){   CString klx,kmc,kxh,kxf,krs;   klx=c[p].klx();   kmc=c[p].kmc();   krs.Format(_T("%d"),yixuankrs[p]);   kxh.Format(_T("%d"),c[p].kxh());     kxf.Format(_T("%d"),c[p].kxf());   kexuan.InsertItem(p,kxh);   kexuan.SetItemText(p,1,klx);   kexuan.SetItemText(p,2,kmc);   kexuan.SetItemText(p,3,kxf);   kexuan.SetItemText(p,4,krs);  }    }  else{    MessageBox(_T("已經退完全部課程"),_T("錯誤"),MB_OK|MB_ICONERROR);  }  UpdateData(false);}

完整的工程文件:MFC實現學生選課系統

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲加勒比久久88色综合| 北条麻妃一区二区三区中文字幕| 中文亚洲视频在线| 国产91精品久久久久| 亚洲欧洲成视频免费观看| 韩国视频理论视频久久| 91久久久在线| 国产精品福利久久久| 亚洲精品在线91| 国产精品电影一区| 国产69精品久久久久99| 国产精品久久电影观看| 国产精品久久久久久久午夜| 91免费的视频在线播放| 日韩欧美aaa| 91成人天堂久久成人| 精品无人国产偷自产在线| 亚洲福利在线观看| 成人h片在线播放免费网站| 8090理伦午夜在线电影| 九九视频这里只有精品| 亚洲一区二区三区四区在线播放| 日韩精品免费综合视频在线播放| 国产精品美女久久| 国产日韩欧美综合| 亚洲国产精品免费| 一本色道久久综合亚洲精品小说| 国产精品视频内| 日韩在线欧美在线国产在线| 综合网中文字幕| 亚洲精品国产综合久久| 亚洲国产成人av在线| 欧美中文在线观看国产| 97国产精品视频| 在线电影欧美日韩一区二区私密| 萌白酱国产一区二区| 欧美视频在线观看免费| 亚洲人午夜色婷婷| 欧美高跟鞋交xxxxxhd| 久久黄色av网站| 亚洲精品福利资源站| 欧美在线视频在线播放完整版免费观看| 日韩电影在线观看永久视频免费网站| 最近中文字幕mv在线一区二区三区四区| 九色精品免费永久在线| 狠狠做深爱婷婷久久综合一区| 国产精品入口夜色视频大尺度| 亚洲精品午夜精品| 国产精品久久久久久久美男| 都市激情亚洲色图| 国产在线一区二区三区| 久久免费福利视频| 亚洲欧美一区二区三区情侣bbw| 久久久久久久久久av| 久久人人爽人人爽人人片av高清| 亚洲一区二区三区视频| 91久久综合亚洲鲁鲁五月天| 国产一区二区三区在线播放免费观看| 正在播放欧美一区| 国产精品久久久久久久av大片| www.欧美视频| 日韩资源在线观看| 91亚洲国产成人久久精品网站| 日韩在线欧美在线| 中文字幕亚洲激情| 国产精品美女999| 岛国视频午夜一区免费在线观看| 2024亚洲男人天堂| 欧美极品少妇xxxxⅹ喷水| 97精品国产97久久久久久春色| 国产欧美精品一区二区| 欧美性xxxx18| 大伊人狠狠躁夜夜躁av一区| 国产69精品久久久久9| www.久久久久久.com| 国内精品视频久久| 亚洲男人的天堂网站| 中文字幕亚洲无线码在线一区| 亚洲综合色激情五月| 黑人巨大精品欧美一区二区免费| 欧美日韩国产中文精品字幕自在自线| 久久免费视频网| 久久av中文字幕| 亚洲a∨日韩av高清在线观看| 欧美日韩黄色大片| 久久久久久网站| 亚洲精品乱码久久久久久按摩观| 亚洲免费影视第一页| 国内精品免费午夜毛片| 成人自拍性视频| 欧洲成人免费视频| 日韩国产在线播放| 久久精品视频网站| 欧美中文字幕在线| 亚洲欧美自拍一区| 久久影视电视剧免费网站清宫辞电视| 国产午夜精品理论片a级探花| 亚洲女性裸体视频| 中文字幕日韩欧美在线视频| 亚洲精品suv精品一区二区| 久久久在线视频| 亚洲第一福利网| 国产精品国产三级国产aⅴ浪潮| 青青久久aⅴ北条麻妃| 77777少妇光屁股久久一区| 中文字幕久热精品在线视频| 国色天香2019中文字幕在线观看| 国产91色在线播放| 亚洲成人黄色在线观看| 精品国产一区二区三区在线观看| 国产精品午夜视频| 久久精品国产欧美亚洲人人爽| 久久九九热免费视频| 久久久久久久久久国产| 一区二区三区视频观看| 久久久天堂国产精品女人| 欧美久久久精品| 久久久久久久色| 精品福利免费观看| 国产精品吹潮在线观看| 亚洲自拍偷拍色片视频| 少妇高潮久久久久久潘金莲| 久久视频在线视频| 久久夜色精品国产| 亚洲视频自拍偷拍| 亚洲美女av在线播放| 国产a∨精品一区二区三区不卡| 97人人爽人人喊人人模波多| 狠狠躁夜夜躁人人躁婷婷91| 欧美国产日韩一区二区在线观看| 国产欧美一区二区三区四区| 亚洲一区亚洲二区亚洲三区| 色七七影院综合| 97成人精品区在线播放| 日韩中文字幕国产精品| 精品久久久久久亚洲精品| 久久久久久国产免费| 九九热精品在线| 秋霞成人午夜鲁丝一区二区三区| 国产精品一区二区久久精品| 久热精品在线视频| 国产精品精品久久久久久| 亚洲第一中文字幕| 美女999久久久精品视频| 欧美高清第一页| 欧美精品午夜视频| 人九九综合九九宗合| 欧美最近摘花xxxx摘花| 91精品国产91久久久久久久久| 国产精品日韩专区| 97在线日本国产| 欧美日韩在线视频一区| 成人xvideos免费视频| 亚洲精品网站在线播放gif| 久久久久久午夜| 久久久久久久亚洲精品| 全亚洲最色的网站在线观看| 国产在线视频2019最新视频| 久久精品这里热有精品| 91亚洲国产成人久久精品网站| 亚洲美女精品成人在线视频| 日韩小视频网址| 国产精品无码专区在线观看| 性欧美亚洲xxxx乳在线观看|