測試儀器管理系統(tǒng)c課程設計_第1頁
測試儀器管理系統(tǒng)c課程設計_第2頁
測試儀器管理系統(tǒng)c課程設計_第3頁
測試儀器管理系統(tǒng)c課程設計_第4頁
測試儀器管理系統(tǒng)c課程設計_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、合肥學院計算機科學與技術系課程設計報告20102011學年第二學期課程 C+課程設計課程設計名稱 測試儀器管理系統(tǒng)學生姓名丁凡 學號1004012031 專業(yè)班級計本2班 指導教師 張貫虹 華姍姍2011年6月目 錄1 課程設計的目的22 課程設計名稱及內容23 任務要求24 課程設計報告內容34.1流程圖顯示34.2程序實現思路65 程序演示106 總結14參考文獻 14附錄(源代碼)14測試儀器管理系統(tǒng)一、 課程設計目的將理論教學中涉及到的知識點貫穿起來,對不同的數據類型、程序控制結構、數據結構作一比較和總結,結合設計題目進行綜合性應用,對所學知識達到融會貫通的程度。通過課程設計,學生在下

2、述各方面的能力應該得到鍛煉:(1)進一步鞏固、加深學生所學專業(yè)課程C+程序設計語言的基本理論知識,理論聯系實際,進一步培養(yǎng)學生綜合分析問題,解決問題的能力。 (2)全面考核學生所掌握的基本理論知識及其實際業(yè)務能力,從而達到提高學生素質的最終目的。 (3)利用所學知識,開發(fā)小型應用系統(tǒng),掌握運用C+語言編寫調試應用系統(tǒng)程序,訓練獨立開發(fā)應用系統(tǒng),進行數據處理的綜合能力。(4)對于給定的設計題目,如何進行分析,理清思路,并給出相應的數學模型。 (5)掌握結構化程序設計方法,熟悉面向對象程序設計方法。(6)熟練掌握C+語言的基本語法,靈活運用各種數據類型。(7)進一步掌握在集成環(huán)境下如何調試程序和修

3、改程序。二、 課程設計名稱及內容設計內容:課程設計名稱:測試儀器管理系統(tǒng)設計內容:編寫一個簡單的測試儀器管理程序,幫助管理儀器使用信息。要求具有儀器信息管理的功能。儀器信息管理包括儀器基本信息的錄入、刪除和修改等功能。三、任務和要求運用面向對象的程序設計方法,要求選擇動態(tài)數組類模板或鏈表類模板,任務中要運用I/O流對象對文件進行讀寫操作。本題程序應提供的基本管理功能有:1) 添加:即增加一臺儀器到儀器信息中;2) 顯示:即在屏幕上顯示所有儀器的信息。3) 存儲:即將儀器信息保存在一個文件中。4) 裝入:即將文件中的信息讀入程序。5) 查詢:可根據儀器名稱查找儀器信息。若找到,顯示在屏幕上。6)

4、 修改:可修改儀器信息。測試數據程序應輸入不少于10種儀器的信息, 每種儀器可以有多臺。三、 課程設計報告內容head=NULL輸入儀器信息linkIsEmpty()p->next=NULLhead=NULLnewnode =pnewnode ->next=pnewnode =p輸入新儀器信息返回頭指針headNYYN3.1 流程圖顯示將新的設備信息插入鏈表鏈表為空head=NULLheadnewnode =p1newnode ->next=NULLp1->next=p->nextp->next=p1輸入信息返回頭指針newnodeYN刪除節(jié)點操作的算法流程

5、圖輸入要刪除的儀器的編號id鏈表是否為空head=NULL判斷要刪除的是否為頭結點head->id=nidhead=head->p p->next=(p->next)->nextp->next!=NULLp->id=nidreturn NULLpt2=headhead=head->nextfree(pt2)p=p->next;p->next=(p->next)->next; return true返回頭指針headYNYNYNYN3.2 程序實現思路定義一個儀器類,用于存放實驗室設備的各種信息;定義一個Link類,把數據以

6、鏈表的形式存儲,鏈表的每個結點為一個Instrument對象;定義一個Shebei類,用于包裝Link類及菜單操作;定義Link類和Shebei類的成員函數,實現要求的各種功能;Link類:class Link/Link類,把數據以鏈表的形式存儲,鏈表的每個結點為一個Instrument為對象private: Instrument *head; /鏈表的頭指針,為Instrument對象類型的指針public : Link();/構造函數,初始化變量 bool linkIsEmpty();/判斷鏈表是否為空 void linkInsert(Instrument *newinstrument);

7、/向鏈表中插入新的結點 bool linkDelete(int nid);/從鏈表中刪除的結點 void linkClear();/清空鏈表中數據 void linkView();/查看鏈表中數據 Instrument* linkFind(int nid);/在鏈表中查找id為nid結點,返回指向該結點的指針 Instrument* getHead();/獲取頭指針;Shebei類:class Shebeiprivate: Link clink;/Link對象成員 bool k;/記錄數據是否被修改public: Shebei(); void ShebeiClear(); void Shebe

8、iInsert(); void ShebeiDelete(); void ShebeiFind();void ShebeiModify(); void ShebeiView(); void ShebeiLoad(); void ShebeiSave(); void Exit();/退出程序 void showMenu();/顯示菜單 void showTip();/顯示操作提示 void doMenu(char n);/執(zhí)行相應菜單項功能;然后就是各個函數的具體定義。菜單選擇功能的實現,使用switch語句;菜單選擇函數的定義:void Shebei:showMenu() cout<&l

9、t;" *"<<endl;cout<<" *"<<endl; cout<<" * 測試儀器管理系統(tǒng) *"<<endl; cout<<" *"<<endl; cout<<" *"<<endl; cout<<" * 1添加:即增加一臺儀器到儀器信息中 *"<<endl; cout<<" * *"<<endl

10、; cout<<" * 2顯示:即在屏幕上顯示所有儀器的信息 *"<<endl; cout<<" * *"<<endl; cout<<" * 3存儲:即將儀器信息保存在一個文件中 *"<<endl; cout<<" * *"<<endl; cout<<" * 4刪除:即將屏幕上的儀器信息刪除 *"<<endl; cout<<" * *"<&

11、lt;endl;cout<<" * 5查詢:可根據儀器編號查找儀器信息 *"<<endl; cout<<" * *"<<endl; cout<<" * 6修改:可修改儀器信息 *"<<endl; cout<<" * *"<<endl; cout<<" * 0退出:安全的退出本系統(tǒng) *"<<endl; cout<<" *"<<endl;

12、cout<<"tt*"<<endl;void Shebei:showTip() cout<<endl; cout<<"*操作完成*"<<endl; cout<<"*選擇06 繼續(xù)*"<<endl; cout<<"請選擇:"void Shebei:doMenu(char n) switch(n) case '1': ShebeiInsert(); break; case '2': Shebe

13、iView(); break;case '3': ShebeiSave();break; case '4': ShebeiDelete(); break;case '5': ShebeiFind(); break; case '6': ShebeiModify(); break; case '0': Exit(); break; default: cout<<"輸入錯誤!" 程序演示:主板模塊:1、 添加一個儀器:2、顯示儀器內容3、 存儲添加儀器:4刪除儀器內容:5查詢儀器內容:6

14、、修改儀器內容:7、安全退出:總結:計算機科學技術的發(fā)展,不僅極大地促進了整個科學技術的發(fā)展,而且明顯地加快了經濟信息化和社會信息化的進程。因此,計算機教育在全國備受重視,計算機知識與能力已成為21世紀人才素質的基本要素之一。信息時代的發(fā)展,影響著世界的每一個角落。每個人的生活和工作幾乎都與計算機密切相關。在速度越來越快的計算機硬件和日益更新的軟件背后,網絡作為中樞神經把我們聯系在一起。也正是因為網絡的出現與發(fā)展,使Internet為主要標志的網絡技術構成了我們現代文化的重要組成部分,聯系上億人的Internet將我們帶入了一個新的網絡時代。機遇就在眼前,挑戰(zhàn)同樣存在。優(yōu)勝劣汰是不可抗拒的自然

15、法則,欲保持領先的地位,持之以恒的學習是惟一途徑。計算機技術發(fā)展如此迅猛,計算機應用如此廣泛,需要學習的東西愈來愈多,而我們的總學時是有限的。一般來說,計算機課程學習可以分為兩部分:一部分是理論課程學習,一部分是上機應用實習。根據我們專業(yè)的性質和要求,則應側重于上機操作運用。為此,學校特意在寒假最后一星期安排了五天的上機實習。上機過程中,大家都用心去編程,在編程的過程中,屢屢出現錯誤,但是還是將其一一改正過來,經過老師的細心教導,終于完成了程序,大家都感到非常開心。在這一周的學習中,大家學會了很多,也更清楚的了解到了學習c+的重要性,我們應該要花費大量的時間努力去學習它!參考文獻:1鄭莉 等編

16、著C+語言程序設計(第三版)北京:清華大學出版社2鄭莉 等編著C+語言程序設計(第三版)學生用書北京: 清華大學出版社3李春葆 等編著C+程序設計學習與上機實驗指導 北京:清華大學出版社4范輝 等編著Visual C+6.0程序設計簡明教程 高等教育出版社5李龍澍C+程序設計實訓教程北京:清華大學出版社 6洪國勝 等編著 C+ Builder程序設計輕松上手北京:清華大學出版社7嚴蔚敏等 數據結構(c語言版) 北京:清華大學出版社,1997年4月第1版。8胡學鋼等數據結構算法設計指導北京:清華大學出版社,1999年 第1版。附錄(源代碼):#include<iostream>#in

17、clude<cstdlib>#include<string>#include <fstream>#include<sstream>#include<iomanip>using namespace std;class Instrument /儀器類public: string tag; /名稱long id; /編號bool fun; /性能bool use; /使用狀態(tài)string user; /使用者 Instrument *next; /指向下一儀器的指針 Instrument(string ntag="unknow&q

18、uot;,long id=000,bool fun=0,bool use=0,string nuser="unknow");/構造函數,初始化變量;class Link /Link類,把數據以鏈表的形式存儲,鏈表的每個結點為一個Instrument對象private: Instrument *head; /鏈表的頭指針,為Instrument對象類型的指針public : Link(); /構造函數,初始化變量 bool linkIsEmpty(); /判斷鏈表是否為空 void linkInsert(Instrument *newInstrument); /向鏈表中插入新

19、的儀器 bool linkDelete(int nid); /從鏈表中刪除的儀器 void linkClear(); /清空鏈表中數據 void linkView(); /查看鏈表中數據 Instrument* linkFind(int nid); /在鏈表中查找id為nid儀器,返回指向該儀器的指針 Instrument* getHead(); /獲取頭指針;Instrument:Instrument(string ntag,long nid,bool nfun,bool nuse,string nuser) tag=ntag;id=nid;fun=nfun;use=nuse;user=nu

20、ser; next=NULL;Link:Link() /構造函數,初始化鏈表為空 head=NULL;bool Link:linkIsEmpty() /判斷鏈表是否為空,空則返回true return(head=NULL);void Link:linkInsert(Instrument *newinstrument) /按id值從小到大的順序,插入新的結點 Instrument *p1; if(!head)/鏈表為空的情況 head=newinstrument; else if(head->id)>(newinstrument->id) /插入到第一個儀器的情況 newins

21、trument->next=head; head=newinstrument; else /插入到第二個及以后情況 p1=head; while(1) if(!(p1->next) p1->next=newinstrument; break; else if(p1->next)->id>newinstrument->id) newinstrument->next=p1->next; p1->next=newinstrument; break; p1=p1->next; bool Link:linkDelete(int nid)

22、/刪除儀器,成功則返回true Instrument *p; if(head=NULL)/鏈表為空的情況 return false; if(head->id=nid) /刪除的為第一個儀器的情況 head=head->next; return true; p=head; while(p->next) /刪除的為第二個及以后儀器的情況 if(p->next)->id=nid) p->next=(p->next)->next; return true; p=p->next; return false;void Link:linkClear()

23、/清空鏈表 head=NULL;Instrument* Link:linkFind(int nid) /查找id值為nid的儀器,返回該儀器的指針 Instrument *p=head; /沒找到符合條件的儀器的話,返回的指針值為NULL while(p) if(p->id=nid) break; else p=p->next; return p;void Link:linkView() /顯示鏈表數據 Instrument *p=head; cout<<setw(4)<<"儀器名稱"<<setw(4)<<&quo

24、t;儀器編號"<<setw(4)<<"儀器性能"<<setw(4)<<"使用狀況"<<setw(4)<<"使用者"<<endl; while(p) cout<<setw(4)<<p->tag<<" "<<setw(4)<<p->id<<setw(4)<<p->fun<<setw(4)<<p->

25、use<<setw(4)<<p->user<<endl; p=p->next; Instrument* Link:getHead() return head;/類Car,用于包裝Link類及菜單操作class Peopleprivate: Link clink;/Link對象成員 bool k;/記錄數據是否被修改public: People(); void peopleClear(); void peopleInsert(); void peopleDelete(); void peopleFind();void peopleModify();

26、 void peopleView(); void peopleLoad(); void peopleSave(); void Exit();/退出程序 void showMenu();/顯示菜單 void showTip();/顯示操作提示 void doMenu(char n);/執(zhí)行相應菜單項功能;People:People() Link();/調用成員對象的構造函數 peopleLoad();/從文件中讀取數據,創(chuàng)建鏈表 k=false;/設置數據被修改void People:peopleInsert() /插入客戶記錄 Instrument *p=new Instrument(); c

27、out<<"請輸入儀器名稱:" cin>>p->tag; cout<<"請輸入儀器編號:" cin>>p->id; cout<<"請輸入儀器性能:" cin>>p->fun;cout<<"請輸入儀器使用狀態(tài):" cin>>p->use; cout<<"請輸入儀器使用者:" cin>>p->user; if(!clink.linkFind(p->

28、;id) /判斷客戶信息是否存在 clink.linkInsert(p); k=true; else cout<<"儀器的名稱為"<<p->tag<<"的的儀器已存在,插入失??!"<<endl;void People:peopleDelete() /刪除儀器記錄 long i; if(clink.linkIsEmpty()/鏈表為空的情況 cout<<"沒有客戶記錄!"<<endl; else cout<<"請輸入儀器名稱:"

29、 cin>>i; if(clink.linkDelete(i) cout<<"成功刪除儀器為"<<i<<"的儀器記錄!"<<endl; k=true; else cout<<"沒有找到名稱為"<<i<<"的儀器!"<<endl; void People:peopleFind() /查找某名稱的儀器記錄 long n; Instrument *p; if(clink.linkIsEmpty()/鏈表為空的情況

30、cout<<"沒有儀器記錄!"<<endl; else cout<<"請輸入要查找儀器編號:" cin>>n; p=clink.linkFind(n);/獲得找到的結點的指針 if(p) /指針值不為NULL時 cout<<setw(4)<<"儀器名稱"<<setw(4)<<"儀器編號"<<setw(4)<<"儀器性能"<<setw(4)<<"

31、使用狀況"<<setw(4)<<"使用者"<<endl; cout<<setw(4)<<p->tag<<" "<<setw(4)<<p->id<<setw(4)<<p->fun<<setw(4)<<p->use<<setw(4)<<p->user<<endl; else/指針值為NULL時 cout<<"沒有找到名稱

32、為"<<n<<"的儀器記錄!"<<endl; void People:peopleModify() /修改某名稱的儀器信息 long n; Instrument *p; if(clink.linkIsEmpty()/鏈表為空的情況 cout<<"沒有儀器記錄!"<<endl; else cout<<"請輸入要修改儀器的編號:" cin>>n; p=clink.linkFind(n);/獲得找到的儀器的指針 if(p) /指針值不為NULL時

33、cout<<setw(4)<<"儀器名稱"<<setw(4)<<"儀器編號"<<setw(4)<<"儀器性能"<<setw(4)<<"使用狀況"<<setw(4)<<"使用者"<<endl; cout<<setw(4)<<p->tag<<" "<<setw(4)<<p->id

34、<<setw(4)<<p->fun<<setw(4)<<p->use<<setw(4)<<p->user<<endl; cout<<"請輸入儀器名稱:" cin>>p->tag; cout<<"請輸入儀器編號:" cin>>p->id; cout<<"請輸入儀器性能:" cin>>p->fun; cout<<"請輸入儀器使用

35、狀態(tài):" cin>>p->use; cout<<"請輸入儀器使用者:" cin>>p->user; else/指針值為NULL時 cout<<"沒有找到名稱為"<<n<<"的儀器記錄!"<<endl; void People:peopleView() /顯示所有儀器的記錄 if(clink.linkIsEmpty() cout<<"沒有儀器記錄!"<<endl; else clink.l

36、inkView();void People:peopleLoad() /從文件中讀入數據,創(chuàng)建鏈表 Instrument *p; long nid; ifstream infile("data.txt"); if(!infile) cerr<<"錯誤:數據文件不能打開!n" else while(infile>>nid) /讀取儀器,直到讀空 p=new Instrument(); infile>>p->tag>>" "/讀取名稱p->id=nid; infile>&g

37、t;p->fun>>" " infile>>p->use>>" " infile>>p->user>>" " clink.linkInsert(p); infile.close(); /關閉文件void People:peopleSave() /將數據保存到文件 Instrument *p=clink.getHead(); ofstream outfile("data.txt"); if(!outfile) cerr<<&qu

38、ot;錯誤:數據文件不能打開!n" else while(p) outfile<<p->tag<<' '<<p->id<<" "<<p->fun<<" "<<p->use<<" "<<p->user<<endl; p=p->next; k=false; cout<<"保存成功!"<<endl; void Peop

39、le:Exit() char s='Y' if(k) /判斷數據是否修改 cout<<"數據已經改變,是否保存?(y/n):" cin>>s; if(s='y'|s='Y') peopleSave(); cout<<"已安全退出," system("pause"); exit(0);void People:showMenu() cout<<" *"<<endl;cout<<" *"<<endl; cout<<" * 測試儀器管理系統(tǒng) *"<<endl; cout<<" *"<<endl; cout<<" *"<<endl; cout<<" * 1添加:即增加一臺儀器到儀器信息中 *"<<endl; cout<<" * *"<<endl; cout<<&q

溫馨提示

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

評論

0/150

提交評論