版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、簡單的教師信息管理系統(tǒng)C+課程設(shè)計報告題目: 簡單的教師信息管理系統(tǒng) 學(xué) 號: 姓 名: 班 級: 專 業(yè): 數(shù)字媒體技術(shù) 課程名稱: 面向?qū)ο蟪绦蛟O(shè)計 指導(dǎo)老師: 鄒 國 華 二零一三年十二月目 錄一、系統(tǒng)設(shè)計要求及設(shè)計目的2二、系統(tǒng)設(shè)計分析及思路21.功能分析:22.性能:23.系統(tǒng)功能模塊24.流程圖35.代碼編寫思路4三、調(diào)試分析8四、總結(jié)10五、參考資料10一、系統(tǒng)設(shè)計要求及設(shè)計目的Ø 定義一個 TeacherList 類;Ø 可以實(shí)現(xiàn)簡單的增加教師;Ø 可以實(shí)現(xiàn)簡單的查找教師;Ø 可以實(shí)現(xiàn)簡單的刪除教師;Ø 要求用二進(jìn)制文件的讀寫操
2、作; 二、系統(tǒng)設(shè)計分析及思路1.功能分析:A. 增加教師的信息;B. 查找教師的信息(按教師的工號進(jìn)行查找);C. 顯示所有教師的信息;D. 刪除選定的教師信息(按教師的工號查找并刪除);E. 保存教師的信息;F. 從指定文件中載入教師信息。2.性能:A. 系統(tǒng)俺去那、可靠;B. 功能簡單;C. 操作方便;D. 易于維護(hù)和擴(kuò)充。3.系統(tǒng)功能模塊系統(tǒng)由信息增加哦快、查詢模塊、顯示模塊、刪除模塊、保存模塊、載入模塊構(gòu)成。其框架圖如下:4.流程圖5.代碼編寫思路(1).實(shí)現(xiàn)這個系統(tǒng)的編寫首先要用到C+重要知識類,另外就是實(shí)現(xiàn)該系統(tǒng)鏈表的編寫最為關(guān)鍵,所以開始開始就根據(jù)實(shí)驗(yàn)要求定義兩個類Teacher
3、和TeacherList。下面是兩個類的UML關(guān)系圖: 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).在完成類編寫之后就要接著完成各成員函數(shù)實(shí)現(xiàn)的編寫。對于Teacher和TeacherList類首先都要利用構(gòu)造函數(shù)對其進(jìn)行初始化的設(shè)置;對于TeacherList教師鏈表類,因?yàn)殒湵斫⑦^程中會動態(tài)的申請內(nèi)存單元
6、,對象消失之后應(yīng)該把這些空間釋放掉,因此就需要析構(gòu)函數(shù)來對TeacherList進(jìn)行收尾工作。例外對于幾個功能函數(shù)的實(shí)現(xiàn)則按照如下思路來編寫:A.輸入模塊:19bool TeacherList:AddTch(char*pno, char*pname, char*ssex, int sgrade, char*tel, char*address)/增加函數(shù)的定義Teacher*temp, *old;temp = old = head;while (temp != NULL)if (strcmp(temp->Pno, pno) = 0)cout << "t這個教師&quo
7、t; << pno << "已經(jīng)存在!" << 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;另外考慮到現(xiàn)實(shí)中,錄入信息時,一下可能錄入多條,所以在后面主函數(shù)中寫入一個循環(huán)調(diào)用AddTch()函數(shù)進(jìn)行多條信息的添加,每次都會提示用戶是否會繼續(xù)錄入。B.查找模塊:由用戶輸入教師的工號,然后對整個鏈表進(jìn)行檢索,當(dāng)檢索到輸入的學(xué)號則顯示查找到此老師的信息,并將其信
9、息顯示出來。這個過程的流程圖如下:定義一個臨時指針*temp,將temp先初始化,使其其初始地址為鏈表的首結(jié)點(diǎn),這樣利用循環(huán)就可以使temp在鏈表上從頭到尾檢索出給定的工號,關(guān)鍵代碼如下:temp = head;while (temp != NULL)if (strcmp(temp->Pno, no) = 0)elsetemp=temp->next;if (temp = NULL)C.刪除模塊:刪除功能的實(shí)現(xiàn)和查找功能差不多,再實(shí)現(xiàn)刪除這個功能過程中,也必須先對給定的教師工號進(jìn)行查找,在檢索到該教師的信息之后再進(jìn)行刪除;實(shí)現(xiàn)刪除的關(guān)鍵代碼如下:if (temp = head)hea
10、d = NULL;old->next = temp->next;cout << "t工號為" << no << "的老師已經(jīng)成功刪除!" << endl;TchListCount-;if (TchListCount != 0)if (temp = old)head = old->next; 刪除模塊的流程圖大致如下:E. 文件的保存與載入:根據(jù)設(shè)計要求要用到二進(jìn)制文件進(jìn)行文件的讀寫,那么就需要用到ios:binary.為了由用戶自己指定儲存文件的名稱,在定義函數(shù)是使用了帶參的形式即void
11、 save(string Filename)和void load(string Filename),save函數(shù)的形參是讓用戶指定保存文件的名字,而load()中的形參是讓用戶讀取指定文件的數(shù)據(jù)。由于二進(jìn)制文件形式保存只能對字符型所以在其中用到課Filename.c_str()將所有的數(shù)據(jù)都先轉(zhuǎn)變成字符型,在以二進(jìn)制的形式輸出。其中保存函數(shù)的是代碼大致如下:Ofstreamout(Filename.c_str(),ios:binary|ios:trunc);/ios:truncda打開一個文件,如果它已經(jīng)存在則刪除其中的內(nèi)容if (!out)cout << "t文件不能打
12、開!" << endl;return;if (head =NULL)cout << "t沒有信息可存!" << endl;TchListCount = 0;return;cout << "t正在保存數(shù)據(jù)." << endl;Teacher*p;p = head;out << TchListCount << 't'while (p != NULL)out << *p; /用到Teacher類的操作符重載p = p->next;ou
13、t.close();cout << 't' << TchListCount << "條信息已經(jīng)存入文件!" <<endl;F. 主函數(shù):調(diào)用各個函數(shù)進(jìn)行功能的實(shí)現(xiàn),其中用到switch選擇結(jié)構(gòu)來實(shí)現(xiàn)功能模塊的選擇。為了使系統(tǒng)更加的人性化,在之前的基礎(chǔ)上,再在主函數(shù)外定義一個操作函數(shù)實(shí)現(xiàn),起作用實(shí)現(xiàn)在一個功能運(yùn)行結(jié)束之后,由用戶給出指令是返回菜單還是直接退出系統(tǒng)。將這個函數(shù)在每個switch選擇之后,就可以了。三、調(diào)試分析1. 在完成代碼編寫之后編譯運(yùn)行程序,進(jìn)入到教師信息管理系統(tǒng)的菜單界面2. 在最開始沒有存儲
14、數(shù)據(jù)的情況下,得先進(jìn)行數(shù)據(jù)的錄入,所以先進(jìn)行操作2-增加教師信息,添加了一條信息之后如果要繼續(xù)添加就選這”Y”,要結(jié)束增加信息就選擇”N”:3. 信息添加完了之后,可以對信息進(jìn)行查詢、刪除及信息的保存4. 最后進(jìn)行載入數(shù)據(jù)以及顯示的調(diào)試運(yùn)行5. 從上面的運(yùn)行調(diào)試過程可以看出,系統(tǒng)運(yùn)行正常,勉強(qiáng)達(dá)到了預(yù)期的效果。四、總結(jié)雖然本次的課程設(shè)計看似簡單,不過也是考驗(yàn)著我們學(xué)以自用的能力,設(shè)計一個簡單的系統(tǒng)讓我們在循序漸進(jìn)的過程,逐步加深對C+這門語言的理解和掌握,逐步提高編程能力。通過本次的課程設(shè)計,較之前學(xué)C的時候,對于程序編寫有了一個全新下認(rèn)識,在編寫程序的過程中了比較明確的思路,編寫一個程序按照
15、OOA、OOD、OOP、OOT等過程逐步進(jìn)行,不再像之前編寫C的課程設(shè)計時那種凌亂。除此之外在編程的過程中,為了實(shí)現(xiàn)功能的優(yōu)越性,通過查閱資料,讓我學(xué)到了許多課本上沒有學(xué)到的知識點(diǎn),毫無疑問,學(xué)會查資料也是學(xué)好編程的應(yīng)具備的素養(yǎng)。五、參考資料1鄭莉、董淵、何江舟.C+程序語言設(shè)計北京:清華大學(xué)出版社,2010.7;2百度文庫.鏈表的基本操作. 3百度文庫.C+庫函數(shù)大全. 附:程序代碼清單#include<fstream>#include<stdlib.h> /system()#include<string>#include<iomanip>#i
16、nclude<iostream>using namespace std;class Teacher /定義Teacher關(guān)于教師信息的類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類構(gòu)造函數(shù)及運(yùn)算符重載的實(shí)現(xiàn)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)/增加函數(shù)的定義Teacher*temp, *old;temp = old = head;while (temp != NULL)if (strcmp(temp->Pno,
23、pno) = 0)cout << "t這個教師" << pno << "已經(jīng)存在!" << 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) /刪除函數(shù)定義/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 << "的老師已經(jīng)成功刪除!" << 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) /查找函數(shù)定義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() /顯示函數(shù)的定義Teacher*temp;temp =head;cout << "" << endl;cout<< &
28、quot; 工號 姓名 性別 年 齡 聯(lián)系電話 住址 " << 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)/保存函數(shù)定義ofstream out(Filename.c_str(), ios:binary|ios:trunc);/ios:truncda打開一個文件,如果它已經(jīng)存在則刪除其中的內(nèi)容if (!out)cout << "t文件不能打開!" << endl;return;if (head = NULL)cout << "t沒有信息可存!" << endl;TchListCount = 0;return;cout << "t正
31、在保存數(shù)據(jù)." << endl;Teacher*p;p = head;out << TchListCount << 't'while (p != NULL)out << *p; /用到Teacher類的操作符重載p = p->next;out.close();cout << 't' << TchListCount << "條信息已經(jīng)存入文件!" << 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 << "條記錄已經(jīng)讀取!" << endl;void
34、Optio() /返回菜單操作選擇函數(shù)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) << "歡迎進(jìn)入教室管理系統(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 << "請選擇您要進(jìn)行的操作(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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年化魚苗銷售協(xié)議模板
- 2024年度業(yè)務(wù)處理外包公司協(xié)議典范
- 二手車交易協(xié)議2024年樣式
- 2024酒店客房預(yù)訂及服務(wù)協(xié)議
- 2024年協(xié)議歸檔操作規(guī)范與要求
- DB11∕T 1674-2019 地理國情普查與監(jiān)測成果質(zhì)量檢查驗(yàn)收技術(shù)規(guī)程
- 2024年紡織筒倉建設(shè)化協(xié)議范本
- 2024年企業(yè)核心管理層聘用協(xié)議樣式
- 2024產(chǎn)品研發(fā)過程保密協(xié)議
- 2024年土地使用權(quán)租賃協(xié)議規(guī)范
- 物理課堂教學(xué)評價表
- 觀光農(nóng)業(yè)概論教案分享
- 英文譯稿《藥品注冊管理辦法》
- 危險預(yù)知訓(xùn)練教材(KYT)
- ISO9001體系文件與IRIS標(biāo)準(zhǔn)條款對應(yīng)表
- 漢語教師志愿者培訓(xùn)大綱
- SPC培訓(xùn)資料_2
- 壓力表使用警示標(biāo)識
- 小學(xué)英語課堂教學(xué)策略與方法探討
- 2019年重慶普通高中會考通用技術(shù)真題及答案
- DB44 T 552-2008 林業(yè)生態(tài) 術(shù)語
評論
0/150
提交評論