教學設備管理系統c++_第1頁
教學設備管理系統c++_第2頁
教學設備管理系統c++_第3頁
教學設備管理系統c++_第4頁
教學設備管理系統c++_第5頁
已閱讀5頁,還剩51頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質文檔-傾情為你奉上中 南 大 學高級程序設計實踐(C+)課程設計報告設計題目 指導老師設計者專業(yè)班級時間日期目 錄一 課題的基本內容和要求二 程序功能簡介三 主體內容:1 設計分析2 程序結構3 各模塊的功能及程序說明4 相關模塊源程序5 操作方法6試驗結果7設計體會8 參考文獻一 基本內容和要求(一)基本要求本設計采用教師指導、學生自學和獨立編程操作方式,先由學生查閱與本設計有關的書籍和資料,利用Visual C+ 6.0設計環(huán)境與開發(fā)工具,在兩周時間內,完成課程設計內容中的一個管理系統,具體要求如下:1、 獨立思考:獨立完成課程設計中各任務的設計和調試。2、 上機準備:每次上機前,

2、要事先編制好準備調試的程序,認真想好調試步驟和有關環(huán)境的設置方法,準備好有關的文件。3、 數據管理:管理系統中的數據可用數據庫(如Access數據庫)的形式保存,也可用普通文件(文本文件或二進制文件)的形式保存。4、 程序要求:界面美觀、可操作性強、穩(wěn)定性好。 (二)基本內容: 教學設備管理系統為方便管理學校教學設備,編寫一個教學設備管理系統軟件。系統記錄必須包括設備編號、設備名稱、生產廠家、購置日期、臺數、單價、及備注等。二 程序功能簡介(1) 添加:增加一臺設備的記錄到管理系統中。(2) 查詢:可以根據設備編號查找某臺設備的相關信息,若找到則顯示其信息。(3) 修改:在管理系統中修改一臺設

3、備的記錄。(4) 保存:將所有教學設備信息保存在一個文件中(數據庫文件或普通的文本文件)。(5) 讀?。簭奈募凶x取已保存了數據。(6) 刪除:從管理系統中刪除一條記錄。(7) 恢復:能恢復被刪除的記錄。(8) 統計:(A)統計每頁合計臺數及金額;(B)累計設備的總臺數及總金額;(C)統計單價在:200元以下、200800元之間和800元以上的設備總臺數及總金額。(D)以表格形式打印教學設備明細表。(9) 其他:可以根據自己的思路設計其他功能。三 主體內容1 設計分析 根據問題描述和要求,系統要求能夠添加設備,按設備編號查詢,修改,保存,讀取,刪除,恢復設備的信息。系統既然具有“數據存盤”功能

4、,設備數據可以保存到磁盤文件,那么也就意味著今后可以從磁盤文件讀出人員數據,所以系統增加了“人員數據裝入”模塊,以方便用戶使用,避免數據重新錄入??紤]到系統實現簡捷,人員數據文件采用文本文件,人員數據文件名.使用面向對象的程序設計思想進行分析,整個系統涉及兩個類的信息和操作,設備和購置日期。所以系統主要涉及兩個大類:設備類Equipment,日期Date。系統的主體框架就是設備類,考慮系統操作的設備信息的數量具有不確定性,所以考慮使用鏈表保存,處理設備信息。設備類包含所以設備信息的一個不帶頭結點的鏈表,可以對設備信息進行增,刪,改,查詢,基礎數據設置,數據存盤,數據裝入等操作的相關模塊(Add

5、,Delete,Modify,Find,Save,Recover,Read,Statistic)作為成員函數。2程序結構(1)系統功能模塊圖設 備管 理系 統添加設備信息查找設備信息修改設備信息保存設備信息讀取設備信息刪除設備信息恢復設備信息統計設備信息 3 各模塊的功能開 始(1) 主函數流程 創(chuàng)建設備 對象顯示菜單接受輸入根據輸入 執(zhí)行操作結束退出4 源函數#include #include #include #include using namespace std;class Dateprivate:int year;int month;int day;public:Date(int y

6、 = 0 , int m = 0 , int d = 0);Date & operator = (Date &a);void foutput(ofstream &fout);void output();void alloutput();void Date:alloutput()coutyear:month:dayt;void Date:foutput(ofstream &fout)foutyear month dayendl;Date:Date(int y,int m,int d)year = y;month = m;day = d;Date & Date:operator = (Date &

7、a)year = a.year;month = a.month;day = a.day;return *this;void Date:output()coutyear年month月day日endl;class Equipmentprivate:int num; /設備編號char name20; /設備名稱char factory30; /生產廠家Date date; /購置日期int amount; /臺數double prrice; /單價char notes101; /備注public:Equipment(int num_ = 0 , char *name_ = NULL ,int am

8、ount_ = 0, double prrice_ = 0);Equipment & operator = (Equipment &a)num = a.num;strcpy(name,);strcpy(factory,a.factory);date = a.date;return *this;void give(char *factory_ , Date date_ , char *notes);void output();void alloutput();int getNum();int getAmount();double getPrrice();void setNum();v

9、oid setName();void setFactory();void setDate();void setAmount();void setPrrice();void setNotes();void foutput(ofstream &fout);void Equipment:alloutput()coutnumtnametfactoryt;date.alloutput();couttamounttprricetnotesendl;void Equipment:give(char *factory_ , Date date_ , char *notes_)strcpy(factory,fa

10、ctory_);date = date_;strcpy(notes,notes_);Equipment:Equipment(int num_, char *name_,int amount_, double prrice_)num = num_;strcpy(name,name_);amount = amount_;prrice = prrice_;strcpy(factory,未設置);strcpy(notes,無);void Equipment:output()cout1.設備編號:numendl;cout2.設備名稱:nameendl;cout3.生產廠家:factoryendl;cou

11、t4.購置日期:; date.output();cout5.臺數:amountendl;cout6.單價:prriceendl;cout7.備注:notesendl;int Equipment:getNum()return num;int Equipment:getAmount()return amount;double Equipment:getPrrice()return prrice;void Equipment:setNum()coutnum;void Equipment:setName()coutname;void Equipment:setFactory()coutfactory;

12、void Equipment:setDate()int y,m,d;coutymd;Date a(y,m,d);date = a;void Equipment:setAmount()coutamount;void Equipment:setPrrice()coutprrice;void Equipment:setNotes()coutnotes;void Equipment:foutput(ofstream &fout)foutnumendl;foutnameendl;foutfactoryendl;date.foutput(fout);foutamountendl;foutprriceend

13、l;foutnotesendl;class Listprivate:int n,capacity;Equipment *elem;public:List();List();bool add(); /添加bool find(); /查詢void modify(); /修改bool Save(); / 設備保存bool Read(); /讀取void Delete(); /刪除設備記錄void Recover(); /恢復被刪除的記錄void Statistic(); /統計;List:List()n = 0;capacity = 1000;elem = new Equipment *capaci

14、ty;for(int i = 0 ; i capacity ; i+) elemi = NULL;List:List()for (int i = 0 ; i n ; i+)delete elemi;elemi = NULL;if(elem) delete elem;elem = NULL;bool List:add()if(n capacity)int num_;char name_20;int amount_;double prrice_;coutnum_;coutname_;coutamount_;coutprrice_;elemn = new Equipment(num_,name_,a

15、mount_,prrice_);n+;return true;return false;bool List:find()int num_;coutnum_;for(int i = 0 ; i getNum()cout查找成功!設備信息如下:output();return true;cout查找失??!無此設備信息。 0)int i,num_;bool ok = false;cout現有的設備編號如下:endl;for (i = 0 ; i n ; i+)coutgetNum() ;coutendl;coutnum_;for (i = 0 ; i getNum()=num_)ok = true;i

16、nt choice = 1;do system(cls);elemi-output();cout8.退出修改。endl; coutchoice;if(choice 8) cout輸入錯誤,請重新輸入!setNum();break;case 2:elemi-setName();break;case 3:elemi-setFactory();break;case 4:elemi-setDate();break;case 5:elemi-setAmount();break;case 6:elemi-setPrrice();break;case 7:elemi-setNotes();break;cas

17、e 8:break; while (choice != 8);if(!ok) cout您的輸入有誤!endl;else cout現無任何設備!endl;bool List:Save()ofstream fout;fout.open(save.txt);fout.put(0); /清楚txt文檔的數據fout.seekp(-1,ios:end); /在txt文檔中光標退格if(fout.fail()cout找不到文件,保存失?。ndl;return false;elsefor(int i = 0 ; i foutput(fout);cout保存成功!endl;fout.close();retu

18、rn true;bool List:Read()int size;ifstream fin;fin.open(save.txt);streampos pos = fin.tellg();fin.seekg(0,ios:end);size = fin.tellg();fin.seekg(pos);if(fin.fail()cout找不到文件,讀取失??!num_;finname_;finfactory_;finymd;if(fin.eof() break;Date date_(y,m,d);finamount_;finprrice_;finnotes_;elemn = new Equipment(

19、num_,name_,amount_,prrice_);elemn-give(factory_,date_,notes_);n+;cout讀取成功! 0)int i,num_;bool ok = false;cout現有的設備編號如下:endl;for (i = 0 ; i n ; i+)coutgetNum() ;coutendl;coutnum_;for (i = 0 ; i getNum()=num_)ok = true;system(cls);elemi-output();cout您確定要刪除此設備? (Y or N)str;if(str != Y & str != N)coutfou

20、tput(fout);fout.close();if(i = n-1) delete elemi;elemi = NULL;else Equipment *tem;tem = elemi;elemi = elemn-1;elemn-1 = tem;delete elemn-1;elemn-1 = NULL;n-;cout刪除成功!endl;else cout刪除失??!endl;if(!ok) cout您的輸入有誤!endl;else cout現無任何設備!endl;void List:Recover()int size;ifstream fin;fin.open(recover.txt);st

21、reampos pos = fin.tellg();fin.seekg(0,ios:end);size = fin.tellg();fin.seekg(pos);if(fin.fail()cout找不到文件,恢復失??!num_;finname_;finfactory_;finymd;if(fin.eof() break;Date date_(y,m,d);finamount_;finprrice_;finnotes_;elemn = new Equipment(num_,name_,amount_,prrice_);elemn-give(factory_,date_,notes_);n+;co

22、ut恢復成功!endl;fin.close();ofstream fout;fout.open(recover.txt);fout.put(0);fout.seekp(-1,ios:end);fout.close();void List:Statistic()system(cls);int i,j,n_200 = 0,n200_800 = 0,n800_ = 0;double p_200 = 0,p200_800 = 0,p800_ = 0;Equipment *tem;for(i = 0 ; i n ; i+)for(j = 0 ; j getPrrice() elemj+1-getPrri

23、ce()tem = elemj;elemj = elemj+1;elemj+1 = tem;cout編號t名稱t廠家t日期tt數量t單價t備注endl;for (i = 0 ; i getPrrice() getAmount();p_200 += elemi-getAmount()*elemi-getPrrice();else if(elemi-getPrrice() getAmount();p200_800 += elemi-getAmount()*elemi-getPrrice();else n800_ += elemi-getAmount();p800_ += elemi-getAmou

24、nt()*elemi-getPrrice();elemi-alloutput();coutendl;cout單價在:200元以下的設備總臺數及總金額為:tn_200ttp_200endl;cout單價在:200800元的設備總臺數及總金額為:tn200_800ttp200_800endl;cout單價在:800元以上的設備總臺數及總金額為:tn800_ttp800_endl;cout累計所有設備的總臺數及總金額為:ttn_200+n200_800+n800_ttp_200+p200_800+p800_endl;int main()List list;int n = 0;int choice = 1;system(color 1C);do couttttt教學設備管理系統endl;couttt=endl;couttt#tt 1.添加設備內容。tt#endl;couttt#tt 2.查找設備內容。tt#endl;couttt#tt 3.修改設備內容。tt#endl;couttt#tt 4.保存設備記錄。tt#endl;couttt#tt 5.讀取設備記錄。

溫馨提示

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

評論

0/150

提交評論