




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、簡單的教師信息管理系統(tǒng)C+課程設計報告題目: 簡單的教師信息管理系統(tǒng) 學 號: 姓 名: 班 級: 專 業(yè): 數字媒體技術 課程名稱: 面向對象程序設計 指導老師: 鄒 國 華 二零一三年十二月目 錄一、系統(tǒng)設計要求及設計目的2二、系統(tǒng)設計分析及思路21.功能分析:22.性能:23.系統(tǒng)功能模塊24.流程圖35.代碼編寫思路4三、調試分析8四、總結10五、參考資料10一、系統(tǒng)設計要求及設計目的Ø 定義一個 TeacherList 類;Ø 可以實現簡單的增加教師;Ø 可以實現簡單的查找教師;Ø 可以實現簡單的刪除教師;Ø 要求用二進制文件的讀寫操
2、作; 二、系統(tǒng)設計分析及思路1.功能分析:A. 增加教師的信息;B. 查找教師的信息(按教師的工號進行查找);C. 顯示所有教師的信息;D. 刪除選定的教師信息(按教師的工號查找并刪除);E. 保存教師的信息;F. 從指定文件中載入教師信息。2.性能:A. 系統(tǒng)俺去那、可靠;B. 功能簡單;C. 操作方便;D. 易于維護和擴充。3.系統(tǒng)功能模塊系統(tǒng)由信息增加哦快、查詢模塊、顯示模塊、刪除模塊、保存模塊、載入模塊構成。其框架圖如下:4.流程圖5.代碼編寫思路(1).實現這個系統(tǒng)的編寫首先要用到C+重要知識類,另外就是實現該系統(tǒng)鏈表的編寫最為關鍵,所以開始開始就根據實驗要求定義兩個類Teacher
3、和TeacherList。下面是兩個類的UML關系圖: TeacherTeacherList-Teacher*head;-int TchListCount;-char Pname20;-char Pno20;-char Ssex10;-int Sgrade;-char Tel20;-char Address40;+void TchListMenu(Teacher*depType);+void DispAll();+TeacherList();+virtual TeacherList();+bool AddTch(char*pno, char*pname, char*ssex, int sgra
4、de, char*tel, char*address);+bool DeleteTch(char*no); +Teacher*FindTch(char*no); + void save(string Filename); +void load(string Filename);+char Pname20;+char Pno20; +char Ssex10;+int Sgrade; +char Tel20;+char Address40+Teacher*next;+Teacher();+Teacher(char*Pno1, char*Pname1, char*Ssex1, int Sgrade1
5、, char*Tel1, char*Address1)+virtualTeacher();+friend ostream &operator<<(ostream &oc, Teacher &obj);+friendistream &operator<<(istream &ic, Teacher &obj) (2).在完成類編寫之后就要接著完成各成員函數實現的編寫。對于Teacher和TeacherList類首先都要利用構造函數對其進行初始化的設置;對于TeacherList教師鏈表類,因為鏈表建立過程中會動態(tài)的申請內存單元
6、,對象消失之后應該把這些空間釋放掉,因此就需要析構函數來對TeacherList進行收尾工作。例外對于幾個功能函數的實現則按照如下思路來編寫:A.輸入模塊:19bool TeacherList:AddTch(char*pno, char*pname, char*ssex, int sgrade, char*tel, char*address)/增加函數的定義Teacher*temp, *old;temp = old = head;while (temp != NULL)if (strcmp(temp->Pno, pno) = 0)cout << "t這個教師&quo
7、t; << pno << "已經存在!" << endl;break;return false;elseold = temp;temp = temp->next;if (temp = NULL)Teacher*ptr;ptr = new Teacher(pno, pname, ssex, sgrade, tel, address);ptr->next = NULL;if (old != NULL)old->next = ptr;elsehead = ptr;TchListCount+;cout << endl
8、;cout << 't' << pname << "(" << pno << ")" << "加入成功!" << endl;return true;return false;另外考慮到現實中,錄入信息時,一下可能錄入多條,所以在后面主函數中寫入一個循環(huán)調用AddTch()函數進行多條信息的添加,每次都會提示用戶是否會繼續(xù)錄入。B.查找模塊:由用戶輸入教師的工號,然后對整個鏈表進行檢索,當檢索到輸入的學號則顯示查找到此老師的信息,并將其信
9、息顯示出來。這個過程的流程圖如下:定義一個臨時指針*temp,將temp先初始化,使其其初始地址為鏈表的首結點,這樣利用循環(huán)就可以使temp在鏈表上從頭到尾檢索出給定的工號,關鍵代碼如下:temp = head;while (temp != NULL)if (strcmp(temp->Pno, no) = 0)elsetemp=temp->next;if (temp = NULL)C.刪除模塊:刪除功能的實現和查找功能差不多,再實現刪除這個功能過程中,也必須先對給定的教師工號進行查找,在檢索到該教師的信息之后再進行刪除;實現刪除的關鍵代碼如下:if (temp = head)hea
10、d = NULL;old->next = temp->next;cout << "t工號為" << no << "的老師已經成功刪除!" << endl;TchListCount-;if (TchListCount != 0)if (temp = old)head = old->next; 刪除模塊的流程圖大致如下:E. 文件的保存與載入:根據設計要求要用到二進制文件進行文件的讀寫,那么就需要用到ios:binary.為了由用戶自己指定儲存文件的名稱,在定義函數是使用了帶參的形式即void
11、 save(string Filename)和void load(string Filename),save函數的形參是讓用戶指定保存文件的名字,而load()中的形參是讓用戶讀取指定文件的數據。由于二進制文件形式保存只能對字符型所以在其中用到課Filename.c_str()將所有的數據都先轉變成字符型,在以二進制的形式輸出。其中保存函數的是代碼大致如下:Ofstreamout(Filename.c_str(),ios:binary|ios:trunc);/ios:truncda打開一個文件,如果它已經存在則刪除其中的內容if (!out)cout << "t文件不能打
12、開!" << endl;return;if (head =NULL)cout << "t沒有信息可存!" << endl;TchListCount = 0;return;cout << "t正在保存數據." << endl;Teacher*p;p = head;out << TchListCount << 't'while (p != NULL)out << *p; /用到Teacher類的操作符重載p = p->next;ou
13、t.close();cout << 't' << TchListCount << "條信息已經存入文件!" <<endl;F. 主函數:調用各個函數進行功能的實現,其中用到switch選擇結構來實現功能模塊的選擇。為了使系統(tǒng)更加的人性化,在之前的基礎上,再在主函數外定義一個操作函數實現,起作用實現在一個功能運行結束之后,由用戶給出指令是返回菜單還是直接退出系統(tǒng)。將這個函數在每個switch選擇之后,就可以了。三、調試分析1. 在完成代碼編寫之后編譯運行程序,進入到教師信息管理系統(tǒng)的菜單界面2. 在最開始沒有存儲
14、數據的情況下,得先進行數據的錄入,所以先進行操作2-增加教師信息,添加了一條信息之后如果要繼續(xù)添加就選這”Y”,要結束增加信息就選擇”N”:3. 信息添加完了之后,可以對信息進行查詢、刪除及信息的保存4. 最后進行載入數據以及顯示的調試運行5. 從上面的運行調試過程可以看出,系統(tǒng)運行正常,勉強達到了預期的效果。四、總結雖然本次的課程設計看似簡單,不過也是考驗著我們學以自用的能力,設計一個簡單的系統(tǒng)讓我們在循序漸進的過程,逐步加深對C+這門語言的理解和掌握,逐步提高編程能力。通過本次的課程設計,較之前學C的時候,對于程序編寫有了一個全新下認識,在編寫程序的過程中了比較明確的思路,編寫一個程序按照
15、OOA、OOD、OOP、OOT等過程逐步進行,不再像之前編寫C的課程設計時那種凌亂。除此之外在編程的過程中,為了實現功能的優(yōu)越性,通過查閱資料,讓我學到了許多課本上沒有學到的知識點,毫無疑問,學會查資料也是學好編程的應具備的素養(yǎng)。五、參考資料1鄭莉、董淵、何江舟.C+程序語言設計北京:清華大學出版社,2010.7;2百度文庫.鏈表的基本操作. 3百度文庫.C+庫函數大全. 附:程序代碼清單#include<fstream>#include<stdlib.h> /system()#include<string>#include<iomanip>#i
16、nclude<iostream>using namespace std;class Teacher /定義Teacher關于教師信息的類public: char Pname20;/教師姓名char Pno20; /工號char Ssex10; /性別int Sgrade; /年齡char Tel20; /電話char Address40;/住址Teacher*next;Teacher();Teacher(char*Pno1, char*Pname1, char*Ssex1, int Sgrade1, char*Tel1, char*Address1)next = NULL;strc
17、py_s(Pno, Pno1);strcpy_s(Pname, Pname1);strcpy_s(Ssex, Ssex1);Sgrade = Sgrade1;strcpy_s(Tel, Tel1);strcpy_s(Address, Address1);virtualTeacher();friend ostream &operator<<(ostream &oc, Teacher &obj);/重載<<friend istream &operator<<(istream &ic, Teacher &obj);/
18、重載>>class TeacherListpublic:void TchListMenu(Teacher*depType);void DispAll();TeacherList();virtual TeacherList();bool AddTch(char*pno, char*pname, char*ssex, int sgrade, char*tel, char*address);bool DeleteTch(char*no); /以工號選擇刪除教師信息Teacher*FindTch(char*no); /以工號查找教師信息void save(string Filename);
19、 /將教師信息記錄存入指定文件void load(string Filename); /從指定文件裝載教師記錄private:Teacher*head;int TchListCount;char Pname20;char Pno20;char Ssex10;int Sgrade;char Tel20;char Address40;/Teacher類構造函數及運算符重載的實現Teacher:Teacher()next = NULL;Pno0 = '0'Pname0 = '0'Ssex0 = '0'Sgrade = 0;Tel0 = '0
20、39;Address0 = '0'Teacher:Teacher()if (next != NULL)delete next;ostream &operator<<(ostream &oc, Teacher &obj)/重載<<oc << setw(12) << obj.Pno;oc << setw(12) << obj.Pname;oc << setw(12) << obj.Ssex;oc << setw(12) << obj.Sgr
21、ade;oc << setw(14) << obj.Tel;oc << setw(14) << obj.Address;return oc;istream &operator>>(istream &ic, Teacher &obj)/重載>>ic >> obj.Pno;ic >> obj.Pname;ic >> obj.Ssex;ic >> obj.Sgrade;ic >> obj.Tel;ic >> obj.Address;r
22、eturn ic;TeacherList:TeacherList() head = NULL;TchListCount = 0;TeacherList:TeacherList()if (head != NULL)delete head;bool TeacherList:AddTch(char*pno, char*pname, char*ssex, int sgrade, char*tel, char*address)/增加函數的定義Teacher*temp, *old;temp = old = head;while (temp != NULL)if (strcmp(temp->Pno,
23、pno) = 0)cout << "t這個教師" << pno << "已經存在!" << endl;break;return false;elseold = temp;temp = temp->next;if (temp = NULL)Teacher*ptr;ptr = new Teacher(pno, pname, ssex, sgrade, tel, address);ptr->next = NULL;if (old != NULL)old->next = ptr;elsehead
24、= ptr;TchListCount+;cout << endl;cout << 't' << pname << "(" << pno << ")" << "加入成功!" << endl;return true;return false;bool TeacherList:DeleteTch(char*no) /刪除函數定義/Teacher*temp, *old;temp =old=head;while (temp != NU
25、LL)if (strcmp(temp->Pno, no) != 0)old = temp;temp = temp->next;elseif (temp = head)head = NULL;old->next = temp->next;cout << "t工號為" << no << "的老師已經成功刪除!" << endl;TchListCount-;if (TchListCount != 0)if (temp = old)head = old->next;return tru
26、e;if (temp = NULL)cout << "t工號為" << no << "的老師不存在!" << endl;return false;return false;Teacher*TeacherList:FindTch(char*no) /查找函數定義Teacher *temp;temp = head;while (temp != NULL)if (strcmp(temp->Pno, no) = 0)cout << "t工號為"<<no <&l
27、t; "的老師已找到!" << endl;return temp;elsetemp=temp->next;if (temp = NULL)cout << "t工號為" << no << "的老師不存在!" << endl;return NULL;void TeacherList:DispAll() /顯示函數的定義Teacher*temp;temp =head;cout << "" << endl;cout<< &
28、quot; 工號 姓名 性別 年 齡 聯系電話 住址 " << endl;cout << "" << endl;while (temp != NULL)cout << "" << setw(10) << temp->Pno << "" << setw(10) << temp->Pname << "" << setw(10) << temp->Ss
29、ex << "" << setw(10) << temp->Sgrade << "" << setw(12) << temp->Tel << "" << setw(12) << temp->Address <<"" <<endl;temp = temp->next;cout << "" << endl;void Tea
30、cherList:save(string Filename)/保存函數定義ofstream out(Filename.c_str(), ios:binary|ios:trunc);/ios:truncda打開一個文件,如果它已經存在則刪除其中的內容if (!out)cout << "t文件不能打開!" << endl;return;if (head = NULL)cout << "t沒有信息可存!" << endl;TchListCount = 0;return;cout << "t正
31、在保存數據." << endl;Teacher*p;p = head;out << TchListCount << 't'while (p != NULL)out << *p; /用到Teacher類的操作符重載p = p->next;out.close();cout << 't' << TchListCount << "條信息已經存入文件!" << endl;void TeacherList:load(string Filenam
32、e)/先清空列表if (head != NULL)head = NULL;TchListCount = 0;ifstream in(Filename.c_str(), ios:binary|ios:app);if (!in)cout <<setw(25)<< "文件不能打開!" << endl;return;cout <<setw(25)<< "正在讀取信息." << endl;Teacher*p, *old;int count;in >> count;for (int
33、i = 0; i < count; i+)p = new Teacher;in >> *p; /用到Teacher類的操作符重載if (head = NULL)head = p;old = head;elseold =head;old->next = p;old = old->next;TchListCount+;in.close();cout << endl;cout << 't' << TchListCount << "條記錄已經讀取!" << endl;void
34、Optio() /返回菜單操作選擇函數char Option;cout << " 返回菜單請按'B'鍵,直接退出請按'E'鍵:"cin >> Option;if (Option = 'B' | Option = 'b')system("cls");if (Option = 'E' | Option = 'e')exit(Option);void main()TeacherList Tlist;int sel=1,i;char Pname
35、30;char Pno10;char Ssex10;int Sgrade;char Tel20;char Address40;string Filename;char key;cout << "*" << endl;cout << endl;cout << setw(30) << "歡迎進入教室管理系統(tǒng)" << endl;cout << endl;while (sel)cout << "*" << endl;cout <&
36、lt;" 1.顯示所有教師的信息" << endl;cout <<" 2.增加教師信息" << endl;cout <<" 3.查找教師" << endl;cout <<" 4.刪除教師" << endl;cout <<" 5.保存" << endl;cout <<" 6.載入" << endl;cout <<" 7.退出系
37、統(tǒng)" << endl;cout << "*" << endl;cout << "請選擇您要進行的操作(1-7):"cin >> sel;cout << endl;switch (sel)case 1:system("cls");cout << setw(40) << "教師信息表" << endl;Tlist.DispAll();cout << endl;Optio(); break;c
38、ase 2:system("cls");cout << "請錄入教師信息(工號、姓名、性別、年齡、電話、住址):" << endl;for (i = 1; i+)cin >> Pno >> Pname >> Ssex >> Sgrade >> Tel >> Address;cout << endl;Tlist.AddTch(Pno, Pname, Ssex, Sgrade, Tel, Address);cout << "是否繼續(xù)Y/N?:"cin >> key;if (key =
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 如何有效記錄工作進度計劃
- 倉庫貨物拆零與分揀管理策略計劃
- 2025年路面清潔裝備合作協議書
- 如何制定品牌宣傳計劃
- 2025年優(yōu)良動植物新品種項目合作計劃書
- 班主任與學科教師協作計劃
- 2025年鈷粉系列合作協議書
- 2025年中國頁巖氣行業(yè)市場現狀及投資態(tài)勢分析報告(智研咨詢)
- 2025年氣體摻混設備合作協議書
- 2025年動葉可調軸流電站用風機項目發(fā)展計劃
- 鐵路專用線設計規(guī)范(試行)(TB 10638-2019)
- 濰坊環(huán)境工程職業(yè)學院單招職業(yè)技能測試參考試題庫(含答案)
- 《初三畢業(yè)班開學第一課:收心及中考沖刺》班會課件
- 2024年山東司法警官職業(yè)學院高職單招(英語/數學/語文)筆試歷年參考題庫含答案解析
- 新生兒轉運護理安全管理課件
- 華為公司煤礦智能化遠景培訓課件2024
- 物業(yè)客服課件培訓模板
- 人教版PEP四年級英語下冊全冊教學設計表格教案
- 制造業(yè)面臨的挑戰(zhàn)與發(fā)展對策
- 醫(yī)院智慧病房信息化建設
- 中考語文一輪專題復習:《現代文閱讀的命題特點及教學策略》課件
評論
0/150
提交評論