學(xué)生信息管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第1頁
學(xué)生信息管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第2頁
學(xué)生信息管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第3頁
學(xué)生信息管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第4頁
免費(fèi)預(yù)覽已結(jié)束,剩余12頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、下載可編輯學(xué)生信息管理系統(tǒng)實(shí)驗(yàn)報(bào)告班 級(jí): 10 網(wǎng)工三班學(xué)生姓名:謝昊天學(xué)號(hào): 1215134046實(shí)驗(yàn)?zāi)康暮鸵螅簩?shí)驗(yàn)?zāi)康模?、加深理解Windows 程序設(shè)計(jì)的基本概念;2、基于單文檔的應(yīng)用程序的創(chuàng)建;3、學(xué)會(huì)對(duì)話框及相關(guān)控件的創(chuàng)建;4、熟悉基本的Windows 消息映射機(jī)制和消息相應(yīng)過程。實(shí)驗(yàn)內(nèi)容:1. 創(chuàng)建一個(gè)基于對(duì)話框的應(yīng)用程序,用于處理學(xué)生成績,并能夠處理相關(guān)數(shù)據(jù)。2. 進(jìn)一步完善實(shí)驗(yàn)二中的系統(tǒng);3. 在學(xué)生信息管理系統(tǒng)中添加一個(gè)信息查詢對(duì)話框,并做好相應(yīng)的界面設(shè)計(jì);4. 根據(jù)功能要求完成相應(yīng)的界面設(shè)計(jì);實(shí)驗(yàn)內(nèi)容與分析設(shè)計(jì):1. 使用單文檔或基于對(duì)話框應(yīng)用程序框架;2. 設(shè)計(jì)信息

2、查詢對(duì)話框,增加信息檢索功能;3. 信息存儲(chǔ)可以借助于數(shù)據(jù)庫,也可以借助于文件,檢索記錄可以直接在記錄文件中進(jìn)行;4. 通過界面的設(shè)計(jì),增加成績處理的功能;實(shí)驗(yàn)步驟與調(diào)試過程:1打開 Visual c+ 6.0編程環(huán)境;2點(diǎn)擊文件 -> 新建、選擇建立新的工程;選擇Win32 Console Application選項(xiàng)建立工程名為“學(xué)生信息管理系統(tǒng)”的一個(gè)空工程;3繼續(xù)點(diǎn)擊文件-> 新建、選擇建立新的文件;選擇C+ Source File選項(xiàng)建立在“學(xué)生信息管理系統(tǒng)”工程下的名為“學(xué)生信息管理系統(tǒng)”的文件; (或者使用試驗(yàn)一中的文件) ;整個(gè)系統(tǒng)的功能在菜單內(nèi)完成,分別是在學(xué)生信息

3、管理下的學(xué)生信息錄入4創(chuàng)建學(xué)生信息的錄入。void Add:OnOK()UpdateData();if(m_sNum = "" | m_sName = "" | m_sMajor = "" | m_sGrade= "" |m_sBirthday = "" | (!m_cMale.GetCheck() && !m_cFemale.GetCheck() MessageBox(" 學(xué)生信息不完整,無法錄入!", "錯(cuò)誤 ");return;5創(chuàng)建

4、學(xué)生信息的刪除。.專業(yè) .整理 .下載可編輯6創(chuàng)建學(xué)生信息的修改。void Modify:OnOK()UpdateData();ifstream in("record.txt"); int r = 0, k;string a;while(r != m_nRecord) in >> a;k = a.size(); r+;if(r = m_nRecord) break;in.ignore(1024, 'n');7 創(chuàng)建學(xué)生信息的查詢。void Search:OnOK()UpdateData(); m_sName = "" m_sM

5、ajor = "" m_sGrade = "" m_sBirthday = "" m_cMale.SetCheck(0); m_cFemale.SetCheck(0);UpdateData(false);if(m_sNum = "") MessageBox(" 學(xué)號(hào)為空,無法查詢!", "錯(cuò)誤 ");return;8 可視化的窗口五個(gè),分別實(shí)現(xiàn)用戶的登錄,學(xué)生信息的錄入,修改,刪除,查找。9 通過窗口的各個(gè)按鍵對(duì)學(xué)生信息進(jìn)行操作。10 在組建選項(xiàng)中點(diǎn)擊執(zhí)行【學(xué)生信息管理系統(tǒng).

6、exe 】(或者 Ctrl+F5 )執(zhí)行程序 .11 程序沒有錯(cuò)誤,正常執(zhí)行學(xué)生信息管理系統(tǒng).exe ,顯示學(xué)生信息管理系統(tǒng)。實(shí)驗(yàn)結(jié)果:調(diào)試無誤, 正常運(yùn)行學(xué)生信息管理系統(tǒng).exe ,顯示學(xué)生信息管理系統(tǒng)操作頁面??梢詫?shí)現(xiàn)一下操作: 1.實(shí)現(xiàn)簡單地使用用戶名和密碼來進(jìn)入登陸界面。2. 實(shí)現(xiàn)任意添加學(xué)生的信息,包括添加學(xué)生的個(gè)人學(xué)號(hào),姓名,性別,專業(yè),年級(jí)出生日期。輸入不允許為空,并且有提示功能, 如果輸入的時(shí)候有一項(xiàng)為空則提示輸入相關(guān)的信息。3. 實(shí)現(xiàn)刪除學(xué)生的信息,包括刪除學(xué)生的個(gè)人學(xué)號(hào),姓名,性別,專業(yè),年出生日期。根據(jù)編號(hào)進(jìn)行用戶權(quán)限檢查,在數(shù)據(jù)庫中進(jìn)行查找相符和的記錄,如果編號(hào)在數(shù)據(jù)庫

7、中不存在相應(yīng)記錄,則提示不能刪除,否則可以刪除該記錄。 輸入不允許為空, 并且有提示功能, 如果輸入的時(shí)候?yàn)榭談t提示輸入相關(guān)的信息。 4. 實(shí)現(xiàn)編輯學(xué)生的信息,包括編輯學(xué)生的個(gè)人學(xué)號(hào),姓名,性別,專業(yè),年級(jí),出生日期。 輸入不允許為空,并且有提示功能,如果輸入的時(shí)候有一項(xiàng)為空則提示輸入相關(guān).專業(yè) .整理 .下載可編輯的信息。 5. 實(shí)現(xiàn)查詢學(xué)生的信息,包括編輯查詢學(xué)生的個(gè)學(xué)號(hào),姓名,性別,專業(yè),年級(jí),出生日期。 輸入不允許為空, 并且有提示功能, 如果輸入的時(shí)候?yàn)榭談t提示輸入相關(guān)的信息。6. 實(shí)現(xiàn)保存學(xué)生的信息,包括保存學(xué)生的個(gè)人學(xué)號(hào),姓名,性別,專業(yè),年級(jí),出生日期。疑難小結(jié):通過本次綜合試

8、驗(yàn),了解了C語言、 C+,Windows 網(wǎng)絡(luò)編程的一些基礎(chǔ)知識(shí),學(xué)習(xí)到了用C語言、 C+,Windows 網(wǎng)絡(luò)編程的特點(diǎn)。學(xué)習(xí)到了如何如何建立一個(gè)學(xué)生類實(shí)現(xiàn)基本地操作;如何定義所需的學(xué)生類及實(shí)現(xiàn)基本地操作。如何定義指向結(jié)構(gòu)體的指針設(shè)置服務(wù)器CSocket地址, 實(shí)現(xiàn)了數(shù)據(jù)的存儲(chǔ),以及了實(shí)現(xiàn)查詢學(xué)生的信息同,在實(shí)驗(yàn)過程中,回顧書本上的理論知識(shí),鞏固了Windows 網(wǎng)絡(luò)編程的知識(shí)。主要算法和程序清單:1. 錄入學(xué)生信息void Add:OnOK()UpdateData();if(m_sNum = "" | m_sName = "" | m_sMajor

9、= "" | m_sGrade = "" | m_sBirthday = "" | (!m_cMale.GetCheck() && !m_cFemale.GetCheck() MessageBox(" 學(xué)生信息不完整,無法錄入!", "錯(cuò)誤 ");return;int flag = 0;CStudent *stu = new CStudent;stu->m_strID = m_sNum;string temp;ifstream in("record.txt&quo

10、t;);while(in >> temp) if(temp = stu->m_strID) flag = 1;MessageBox(" 該學(xué)號(hào)已存在 !", "注意 ");in.close();m_sNum = ""UpdateData(false);/只將學(xué)號(hào)清空,其余信息保留return;in.close();write(stu);delete stu;MessageBox(" 錄入完畢 !", "成功 ");clean();/清空表格.專業(yè) .整理 .下載可編輯/ TOD

11、O: Add extra validation here/ CDialog:OnOK();void Add:clean()m_sNum = ""m_sName = ""m_sMajor = ""m_sGrade = ""m_sBirthday = ""m_cMale.SetCheck(0);m_cFemale.SetCheck(0);UpdateData(false);void Add:write(CStudent* stu)stu->m_strName = m_sName;stu->

12、;m_strMajor = m_sMajor;stu->m_strGrade = m_sGrade;stu->m_strDate = m_sBirthday;string temp;if(m_cMale.GetCheck()temp = "男"elsetemp = "女"ofstream ou;ou.open("record.txt", ios:app); / 選擇附加模式 ou << left;ou << setw(20) << stu->m_strID;ou <<

13、setw(20) << stu->m_strName;if(m_cMale.GetCheck()temp = "男"elsetemp = "女"ou << setw(20) << temp;ou << setw(20) << stu->m_strMajor;ou << setw(20) << stu->m_strGrade;ou << setw(20) << stu->m_strDate;ou << endl;o

14、u.close();2. 查詢信息代碼void Delete:OnOK().專業(yè) .整理 .下載可編輯if(!searched) MessageBox(" 請(qǐng)先查詢 !", "注意 ");return;if(!find) MessageBox(" 該學(xué)生信息不存在,無法刪除 !", " 錯(cuò)誤 "); return;int mbr = MessageBox(" 確定要?jiǎng)h除該學(xué)生的所有信息嗎? ", " 注意 ", MB_YESNO|MB_ICONQUESTION);if(mbr

15、 = IDNO)return;int k;ifstream in("record.txt");for(int i = 1; i <= index; i+) string a;in >> a;k = a.size();/ 為了得到文件指針的偏移量if(i = index)/說明文件指針到達(dá)要?jiǎng)h除那行了,但偏移了k 字節(jié)break;in.ignore(1024, 'n');in.seekg(-k, ios:cur); /讓指針跳到要?jiǎng)h除那行的行首int offset = in.tellg();/記下指針位置,便于寫新的記錄fstream ou;

16、/這是文件流,不是輸出流!ou.open("record.txt");ou.seekp(offset, ios:beg);/ 跳到刪除行string str;getline(in, str);int size = str.size();/得到刪除行的大小for(i = 0; i < size; i+)ou << " "/用空格代替刪除行MessageBox(" 該學(xué)生信息已刪除!", "成功 ");m_sNum = ""clean();searched = false;/在表格

17、是空的情況下要求先查詢/ TODO: Add extra validation here/ CDialog:OnOK();void Delete:OnButton1()find = false;/該變量表示是否找到searched = true; /該變量表示是否進(jìn)行過查詢.專業(yè) .整理 .下載可編輯UpdateData();clean(); / 清空上次查詢結(jié)果,僅保留現(xiàn)在輸入的學(xué)號(hào) if(m_sNum = "") MessageBox(" 學(xué)號(hào)為空,無法查詢!", "錯(cuò)誤 ");searched = false;return;in

18、dex = 0;/表示要查找的學(xué)生信息在哪一行,作為刪除的索引ifstream in("record.txt");string temp, str;while(in >> temp) index+;str = m_sNum;if(str = temp) find = true;/找到了in >> temp;m_sName = temp.c_str();in >> temp;if(temp = "男")m_cMale.SetCheck(1);elsem_cFemale.SetCheck(1);in >> te

19、mp;m_sMajor = temp.c_str();in >> temp;m_sGrade = temp.c_str();in >> temp;m_sBirthday = temp.c_str();UpdateData(false);in.close();break;in.ignore(1024, 'n');in.close();if(!find) MessageBox(" 該學(xué)生信息不存在!", "注意 ");m_sNum = ""UpdateData(false);searched = f

20、alse;/ TODO: Add your control notification handler code here.專業(yè) .整理 .下載可編輯void Delete:clean()m_sMajor = ""m_sGrade = ""m_sBirthday = ""m_cMale.SetCheck(0);m_cFemale.SetCheck(0);UpdateData(false);3. 修改學(xué)生信息代碼void Modify:OnOK()/ TODO: Add extra validation here UpdateData()

21、;ifstream in("record.txt"); int r = 0, k;string a;while(r != m_nRecord) in >> a;k = a.size(); r+;if(r = m_nRecord)break;in.ignore(1024, 'n');in.seekg(-k, ios:cur);int offset = in.tellg();string temp, str;int flag = 0;/用來判斷信息是否改動(dòng)for(int col = 0; col < 6; col+) in >> t

22、emp;switch(col) case 0:if(m_sNum != temp.c_str()flag = 1;break;case 1:if(m_sName != temp.c_str()flag = 1;break;case 2:if(m_cMale.GetCheck()str = "男 ".專業(yè) .整理 .下載可編輯elsestr = "女 "if(temp != str)flag = 1;break;case 3:if(m_sMajor != temp.c_str()flag = 1;break;case 4:if(m_sGrade != te

23、mp.c_str()flag = 1;break;case 5:if(m_sBirthday != temp.c_str()flag = 1;break;if(flag)break;if(flag = 0) MessageBox(" 該學(xué)生信息沒有改動(dòng)!", "注意 ");return;if(m_nRecord = 0 | index = 0) MessageBox(" 沒有學(xué)生信息!", "錯(cuò)誤 ");return;/ 查看新改的學(xué)號(hào)是否已存在ifstream infile("record.txt&qu

24、ot;);int rd = 0; / 因?yàn)橐懦瓉砟切?, 是與其它行比較看是否重號(hào) while(infile >> temp) rd+;if(temp.c_str() = m_sNum && rd != m_nRecord) MessageBox(" 該學(xué)號(hào)已存在 , 請(qǐng)重新輸入 !", " 注意 ",MB_ICONWARNING);show(m_nRecord);return;infile.ignore(1024, 'n');infile.close();.專業(yè) .整理 .下載可編輯int mbr = M

25、essageBox("確定要修改該學(xué)生的信息嗎", "注意 ",MB_YESNO|MB_ICONQUESTION);if(mbr = IDNO) show(m_nRecord);/顯示原來信息return;CStudent *stu = new CStudent;stu->m_strID = m_sNum;stu->m_strName = m_sName;if(m_cMale.GetCheck()stu->m_strSex = "男 "elsestu->m_strSex = "女 "stu-

26、>m_strMajor = m_sMajor;stu->m_strGrade = m_sGrade;stu->m_strDate = m_sBirthday; / 將信息存入變量,便于比較 stu->savetofile(offset);delete stu;LVITEM lvi;lvi.mask = LVIF_IMAGE | LVIF_TEXT;lvi.iItem = m_nRecord;in.seekg(offset, ios:beg);int c = 0;while(in >> str) lvi.iSubItem = c;lvi.pszText = (

27、LPTSTR)(str.c_str();if(c = 0)m_cList.InsertItem(&lvi);elsem_cList.SetItem(&lvi);c+;if(c = 6)break;m_cList.DeleteItem(m_nRecord-1);MessageBox(" 修改完畢 !", "成功 ");/CDialog:OnOK();void Modify:show(int r)clean();if(r <= 0)return;.專業(yè) .整理 .下載可編輯if(r > index)return;ifstream

28、in("record.txt");int k = 0;for(int i = 1; i <= r; i+) string a;in >> a;k = a.size();if(i = r)break;in.ignore(1024, 'n');/ 同樣,也是為了得到要顯示那行in.seekg(-k, ios:cur); /退回到行頭m_nRecord = r;string temp;for(int col = 0; col != 6; col+) in >> temp;switch(col) case 0:m_sNum = temp

29、.c_str();break;case 1:m_sName = temp.c_str();break;case 2:if(temp = "男 ")m_cMale.SetCheck(1);elsem_cFemale.SetCheck(1);break;case 3:m_sMajor = temp.c_str();break;case 4:m_sGrade = temp.c_str();break;case 5:m_sBirthday = temp.c_str();break;UpdateData(false);in.close();.專業(yè) .整理 .下載可編輯void Mod

30、ify:clean()m_nRecord = 0;m_sNum = ""m_sName = ""m_sGrade = ""m_sMajor = ""m_sBirthday = ""m_cMale.SetCheck(0);m_cFemale.SetCheck(0);UpdateData(false);BOOL Modify:OnInitDialog()CDialog:OnInitDialog();/ TODO: Add extra initialization hereindex = 0;/ 行數(shù)

31、ifstream infile("record.txt");string str;while(infile >> str) / 為了得到總共的記錄數(shù)(行數(shù))index+;infile.ignore(1024, 'n');infile.close();m_cList.InsertColumn(0, "學(xué)號(hào) ", LVCFMT_LEFT, 130);m_cList.InsertColumn(1, "姓名 ", LVCFMT_LEFT, 100);m_cList.InsertColumn(2, "性別

32、", LVCFMT_LEFT, 70);m_cList.InsertColumn(3, "專業(yè) ", LVCFMT_LEFT, 120);m_cList.InsertColumn(4, "年級(jí) ", LVCFMT_LEFT, 80);m_cList.InsertColumn(5, "出生日期 ", LVCFMT_LEFT, 100);ifstream in("record.txt");LVITEM lvi;for(int r = 0; r < index; r+) lvi.mask = LVIF_T

33、EXT;lvi.iItem = r;int c = 0;while(in >> str) lvi.iSubItem = c;lvi.pszText = (LPTSTR)(str.c_str();if(c = 0)m_cList.InsertItem(&lvi);elsem_cList.SetItem(&lvi);c+;.專業(yè) .整理 .下載可編輯if(c = 6)break;in.close();DWORD dwStyleEx;/網(wǎng)格風(fēng)格dwStyleEx = LVS_EX_FULLROWSELECT | LVS_REPORT |LVS_EX_ONECLICKACT

34、IVATE;m_cList.SetExtendedStyle(dwStyleEx);m_cSpin.SetRange(0, index);return TRUE;FALSEvoid Modify:OnDeltaposSpin2(NMHDR* pNMHDR, LRESULT* pResult)NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;/ TODO: Add your control notification handler code here int r = m_cSpin.GetPos();if(pNMUpDown->iDelta = 1)/說明

35、點(diǎn)擊了Spin 的往上箭頭show(r+1);else if(pNMUpDown->iDelta = -1)/說明點(diǎn)擊了Spin 的往下箭頭show(r-1);*pResult = 0;void Modify:OnClickList3(NMHDR* pNMHDR, LRESULT* pResult)/ TODO: Add your control notification handler code here POSITION pos = m_cList.GetFirstSelectedItemPosition();int r = m_cList.GetNextSelectedItem(p

36、os);show(r+1);*pResult = 0;void Modify:OnKeydownList3(NMHDR* pNMHDR, LRESULT* pResult)LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;/ TODO: Add your control notification handler code here POSITION pos = m_cList.GetFirstSelectedItemPosition();int r = m_cList.GetNextSelectedItem(pos);if(GetKeyState(38)

37、< 0)/ upshow(r);if(GetKeyState(40) < 0)/ downshow(r+2);*pResult = 0;.專業(yè) .整理 .下載可編輯4. 查詢信息代碼void Search:OnOK()/ TODO: Add extra validation here UpdateData();m_sName = ""m_sMajor = ""m_sGrade = ""m_sBirthday = ""m_cMale.SetCheck(0);m_cFemale.SetCheck(0);Up

38、dateData(false); / 清空上次查找記錄,只保留現(xiàn)在輸入的學(xué)號(hào) if(m_sNum = "") MessageBox(" 學(xué)號(hào)為空,無法查詢!", "錯(cuò)誤 ");return;ifstream in("record.txt");string temp, str;int flag = 0;while(in >> temp) str = m_sNum;if(temp = str) flag = 1;/說明找到了in >> temp;m_sName = temp.c_str();/類

39、型轉(zhuǎn)換in >> temp;if(temp = "男")m_cMale.SetCheck(1);elsem_cFemale.SetCheck(1);in >> temp;m_sMajor = temp.c_str();in >> temp;m_sGrade = temp.c_str();in >> temp;m_sBirthday = temp.c_str();UpdateData(false);in.close();break;in.ignore(1024, 'n');in.close();.專業(yè) .整理 .下載可編輯if(!flag) MessageBox(" 該學(xué)生信息不存在!&quo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論