版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、中 南 大 學(xué)高級程序設(shè)計實踐(C+)課程設(shè)計報告設(shè)計題目 指導(dǎo)老師設(shè)計者專業(yè)班級時間日期目 錄一 課題的基本內(nèi)容和要求二 程序功能簡介三 主體內(nèi)容:1 設(shè)計分析2 程序結(jié)構(gòu)3 各模塊的功能及程序說明4 相關(guān)模塊源程序5 操作方法6試驗結(jié)果7設(shè)計體會8 參考文獻一 基本內(nèi)容和要求(一)基本要求本設(shè)計采用教師指導(dǎo)、學(xué)生自學(xué)和獨立編程操作方式,先由學(xué)生查閱與本設(shè)計有關(guān)的書籍和資料,利用Visual C+ 6.0設(shè)計環(huán)境與開發(fā)工具,在兩周時間內(nèi),完成課程設(shè)計內(nèi)容中的一個管理系統(tǒng),具體要求如下:1、 獨立思考:獨立完成課程設(shè)計中各任務(wù)的設(shè)計和調(diào)試。2、 上機準(zhǔn)備:每次上機前,要事先編制好準(zhǔn)備調(diào)試的程序
2、,認真想好調(diào)試步驟和有關(guān)環(huán)境的設(shè)置方法,準(zhǔn)備好有關(guān)的文件。3、 數(shù)據(jù)管理:管理系統(tǒng)中的數(shù)據(jù)可用數(shù)據(jù)庫(如Access數(shù)據(jù)庫)的形式保存,也可用普通文件(文本文件或二進制文件)的形式保存。4、 程序要求:界面美觀、可操作性強、穩(wěn)定性好。 (二)基本內(nèi)容: 教學(xué)設(shè)備管理系統(tǒng)為方便管理學(xué)校教學(xué)設(shè)備,編寫一個教學(xué)設(shè)備管理系統(tǒng)軟件。系統(tǒng)記錄必須包括設(shè)備編號、設(shè)備名稱、生產(chǎn)廠家、購置日期、臺數(shù)、單價、及備注等。二 程序功能簡介(1) 添加:增加一臺設(shè)備的記錄到管理系統(tǒng)中。(2) 查詢:可以根據(jù)設(shè)備編號查找某臺設(shè)備的相關(guān)信息,若找到則顯示其信息。(3) 修改:在管理系統(tǒng)中修改一臺設(shè)備的記錄。(4) 保存:將
3、所有教學(xué)設(shè)備信息保存在一個文件中(數(shù)據(jù)庫文件或普通的文本文件)。(5) 讀?。簭奈募凶x取已保存了數(shù)據(jù)。(6) 刪除:從管理系統(tǒng)中刪除一條記錄。(7) 恢復(fù):能恢復(fù)被刪除的記錄。(8) 統(tǒng)計:(A)統(tǒng)計每頁合計臺數(shù)及金額;(B)累計設(shè)備的總臺數(shù)及總金額;(C)統(tǒng)計單價在:200元以下、200800元之間和800元以上的設(shè)備總臺數(shù)及總金額。(D)以表格形式打印教學(xué)設(shè)備明細表。(9) 其他:可以根據(jù)自己的思路設(shè)計其他功能。三 主體內(nèi)容1 設(shè)計分析 根據(jù)問題描述和要求,系統(tǒng)要求能夠添加設(shè)備,按設(shè)備編號查詢,修改,保存,讀取,刪除,恢復(fù)設(shè)備的信息。系統(tǒng)既然具有“數(shù)據(jù)存盤”功能,設(shè)備數(shù)據(jù)可以保存到磁盤文
4、件,那么也就意味著今后可以從磁盤文件讀出人員數(shù)據(jù),所以系統(tǒng)增加了“人員數(shù)據(jù)裝入”模塊,以方便用戶使用,避免數(shù)據(jù)重新錄入??紤]到系統(tǒng)實現(xiàn)簡捷,人員數(shù)據(jù)文件采用文本文件,人員數(shù)據(jù)文件名.使用面向?qū)ο蟮某绦蛟O(shè)計思想進行分析,整個系統(tǒng)涉及兩個類的信息和操作,設(shè)備和購置日期。所以系統(tǒng)主要涉及兩個大類:設(shè)備類Equipment,日期Date。系統(tǒng)的主體框架就是設(shè)備類,考慮系統(tǒng)操作的設(shè)備信息的數(shù)量具有不確定性,所以考慮使用鏈表保存,處理設(shè)備信息。設(shè)備類包含所以設(shè)備信息的一個不帶頭結(jié)點的鏈表,可以對設(shè)備信息進行增,刪,改,查詢,基礎(chǔ)數(shù)據(jù)設(shè)置,數(shù)據(jù)存盤,數(shù)據(jù)裝入等操作的相關(guān)模塊(Add,Delete,Modif
5、y,Find,Save,Recover,Read,Statistic)作為成員函數(shù)。2程序結(jié)構(gòu)(1)系統(tǒng)功能模塊圖設(shè) 備管 理系 統(tǒng)添加設(shè)備信息查找設(shè)備信息修改設(shè)備信息保存設(shè)備信息讀取設(shè)備信息刪除設(shè)備信息恢復(fù)設(shè)備信息統(tǒng)計設(shè)備信息 3 各模塊的功能開 始(1) 主函數(shù)流程 創(chuàng)建設(shè)備 對象顯示菜單接受輸入根據(jù)輸入 執(zhí)行操作結(jié)束退出4 源函數(shù)#include <iostream>#include <fstream>#include <cstring>#include <windows.h>using namespace std;class Datepr
6、ivate:int year;int month;int day;public:Date(int y = 0 , int m = 0 , int d = 0);Date & operator = (Date &a);void foutput(ofstream &fout);void output();void alloutput();void Date:alloutput()cout<<year<<":"<<month<<":"<<day<<'t
7、9;void Date:foutput(ofstream &fout)fout<<year<<" "<<month<<" "<<day<<endl;Date:Date(int y,int m,int d)year = y;month = m;day = d;Date & Date:operator = (Date &a)year = a.year;month = a.month;day = a.day;return *this;void Date:output
8、()cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;class Equipmentprivate:int num; /設(shè)備編號char name20; /設(shè)備名稱char factory30; /生產(chǎn)廠家Date date; /購置日期int amount; /臺數(shù)double prrice; /單價char notes101; /備注public:Equipment(int num_ = 0 , char *n
9、ame_ = NULL ,int amount_ = 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
10、getPrrice();void setNum();void setName();void setFactory();void setDate();void setAmount();void setPrrice();void setNotes();void foutput(ofstream &fout);void Equipment:alloutput()cout<<num<<'t'<<name<<'t'<<factory<<'t'date.alloutput();c
11、out<<'t'<<amount<<'t'<<prrice<<'t'<<notes<<endl;void Equipment:give(char *factory_ , Date date_ , char *notes_)strcpy(factory,factory_);date = date_;strcpy(notes,notes_);Equipment:Equipment(int num_, char *name_,int amount_, double pr
12、rice_)num = num_;strcpy(name,name_);amount = amount_;prrice = prrice_;strcpy(factory,"未設(shè)置");strcpy(notes,"無");void Equipment:output()cout<<"1.設(shè)備編號:"<<num<<endl;cout<<"2.設(shè)備名稱:"<<name<<endl;cout<<"3.生產(chǎn)廠家:"<&
13、lt;factory<<endl;cout<<"4.購置日期:" date.output();cout<<"5.臺數(shù):"<<amount<<endl;cout<<"6.單價:"<<prrice<<endl;cout<<"7.備注:"<<notes<<endl;int Equipment:getNum()return num;int Equipment:getAmount()return
14、 amount;double Equipment:getPrrice()return prrice;void Equipment:setNum()cout<<"請輸入設(shè)備編號:"cin>>num;void Equipment:setName()cout<<"請輸入設(shè)備名稱:"cin>>name;void Equipment:setFactory()cout<<"請輸入生產(chǎn)廠家的名稱:"cin>>factory;void Equipment:setDate()int
15、 y,m,d;cout<<"請輸入年、月、日,用空格隔開:"cin>>y>>m>>d;Date a(y,m,d);date = a;void Equipment:setAmount()cout<<"請輸入設(shè)備臺數(shù):"cin>>amount;void Equipment:setPrrice()cout<<"請輸入設(shè)備單價:"cin>>prrice;void Equipment:setNotes()cout<<"請輸入備注
16、內(nèi)容:"cin>>notes;void Equipment:foutput(ofstream &fout)fout<<num<<endl;fout<<name<<endl;fout<<factory<<endl;date.foutput(fout);fout<<amount<<endl;fout<<prrice<<endl;fout<<notes<<endl;class Listprivate:int n,capacity
17、;Equipment *elem;public:List();List();bool add(); /添加bool find(); /查詢void modify(); /修改bool Save(); / 設(shè)備保存bool Read(); /讀取void Delete(); /刪除設(shè)備記錄void Recover(); /恢復(fù)被刪除的記錄void Statistic(); /統(tǒng)計;List:List()n = 0;capacity = 1000;elem = new Equipment *capacity;for(int i = 0 ; i < capacity ; i+) elemi =
18、 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_;cout<<"請輸入設(shè)備編號:"cin>>num_;cout<<"請輸入設(shè)備名稱:"cin>>name_;cout<<&
19、quot;請輸入購置臺數(shù):"cin>>amount_;cout<<"請輸入設(shè)備單價:"cin>>prrice_;elemn = new Equipment(num_,name_,amount_,prrice_);n+;return true;return false;bool List:find()int num_;cout<<"請輸入您需要查找的設(shè)備編號:"cin>>num_;for(int i = 0 ; i < n ; i+)if(num_ = elemi->getN
20、um()cout<<"查找成功!設(shè)備信息如下:"<<endl;elemi->output();return true;cout<<"查找失?。o此設(shè)備信息。"<<endl;return false;void List:modify()system("cls");if(n > 0)int i,num_;bool ok = false;cout<<"現(xiàn)有的設(shè)備編號如下:"<<endl;for (i = 0 ; i < n ; i+
21、)cout<<elemi->getNum()<<" "cout<<endl;cout<<"請輸入您需要修改的設(shè)備編號:"cin>>num_;for (i = 0 ; i < n ; i+)if(elemi->getNum()=num_)ok = true;int choice = 1;do system("cls");elemi->output();cout<<"8.退出修改。"<<endl; cout<
22、;<"請輸入您需要修改的選項:"cin>>choice;if(choice < 1 | choice > 8) cout<<"輸入錯誤,請重新輸入!"<<endl;choice = 1;continue;switch (choice)case 1:elemi->setNum();break;case 2:elemi->setName();break;case 3:elemi->setFactory();break;case 4:elemi->setDate();break;ca
23、se 5:elemi->setAmount();break;case 6:elemi->setPrrice();break;case 7:elemi->setNotes();break;case 8:break; while (choice != 8);if(!ok) cout<<"您的輸入有誤!"<<endl;else cout<<"現(xiàn)無任何設(shè)備!"<<endl;bool List:Save()ofstream fout;fout.open("save.txt");f
24、out.put(0); /清楚txt文檔的數(shù)據(jù)fout.seekp(-1,ios:end); /在txt文檔中光標(biāo)退格if(fout.fail()cout<<"找不到文件,保存失敗!"<<endl;return false;elsefor(int i = 0 ; i < n ; i+)elemi->foutput(fout);cout<<"保存成功!"<<endl;fout.close();return true;bool List:Read()int size;ifstream fin;fin
25、.open("save.txt");streampos pos = fin.tellg();fin.seekg(0,ios:end);size = fin.tellg();fin.seekg(pos);if(fin.fail()cout<<"找不到文件,讀取失??!"<<endl;return false;elseint num_,amount_,y,m,d;double prrice_;char name_20,factory_30,notes_101;n = 0;while(size != 1)fin>>num_;f
26、in>>name_;fin>>factory_;fin>>y>>m>>d;if(fin.eof() break;Date date_(y,m,d);fin>>amount_;fin>>prrice_;fin>>notes_;elemn = new Equipment(num_,name_,amount_,prrice_);elemn->give(factory_,date_,notes_);n+;cout<<"讀取成功!"<<endl;fin.clo
27、se();return true;void List:Delete()system("cls");if(n > 0)int i,num_;bool ok = false;cout<<"現(xiàn)有的設(shè)備編號如下:"<<endl;for (i = 0 ; i < n ; i+)cout<<elemi->getNum()<<" "cout<<endl;cout<<"請選擇您要刪除的設(shè)備編號:"cin>>num_;for (i
28、= 0 ; i < n ; i+)if(elemi->getNum()=num_)ok = true;system("cls");elemi->output();cout<<"您確定要刪除此設(shè)備? (Y or N)"<<endl;char str;do cin>>str;if(str != 'Y' && str != 'N')cout<<"輸入錯誤,請重新輸入:" while (str != 'Y' &am
29、p;& str != 'N');if(str = 'Y')ofstream fout;fout.open("recover.txt");fout.app;elemi->foutput(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<<"刪除成功!
30、"<<endl;else cout<<"刪除失??!"<<endl;if(!ok) cout<<"您的輸入有誤!"<<endl;else cout<<"現(xiàn)無任何設(shè)備!"<<endl;void List:Recover()int size;ifstream fin;fin.open("recover.txt");streampos pos = fin.tellg();fin.seekg(0,ios:end);size = fi
31、n.tellg();fin.seekg(pos);if(fin.fail()cout<<"找不到文件,恢復(fù)失??!"<<endl;elseint num_,amount_,y,m,d;double prrice_;char name_20,factory_30,notes_101;while(!fin.eof() && size != 1)fin>>num_;fin>>name_;fin>>factory_;fin>>y>>m>>d;if(fin.eof() bre
32、ak;Date date_(y,m,d);fin>>amount_;fin>>prrice_;fin>>notes_;elemn = new Equipment(num_,name_,amount_,prrice_);elemn->give(factory_,date_,notes_);n+;cout<<"恢復(fù)成功!"<<endl;fin.close();ofstream fout;fout.open("recover.txt");fout.put(0);fout.seekp(-1,ios
33、: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 < n - 1 - i ; j +)if(elemj->getPrrice() > elemj+1->getPrrice()tem = elemj;elemj = elemj+
34、1;elemj+1 = tem;cout<<"編號"<<'t'<<"名稱"<<'t'<<"廠家"<<'t'<<"日期"<<"tt"<<"數(shù)量"<<'t'<<"單價"<<'t'<<"備注"<<e
35、ndl;for (i = 0 ; i < n ; i+)if(elemi->getPrrice() < 200)n_200 += elemi->getAmount();p_200 += elemi->getAmount()*elemi->getPrrice();else if(elemi->getPrrice() <= 800)n200_800 += elemi->getAmount();p200_800 += elemi->getAmount()*elemi->getPrrice();else n800_ += elemi-&
36、gt;getAmount();p800_ += elemi->getAmount()*elemi->getPrrice();elemi->alloutput();cout<<endl;cout<<"單價在:200元以下的設(shè)備總臺數(shù)及總金額為:"<<'t'<<n_200<<"tt"<<p_200<<endl;cout<<"單價在:200800元的設(shè)備總臺數(shù)及總金額為:"<<'t'&
37、lt;<n200_800<<"tt"<<p200_800<<endl;cout<<"單價在:800元以上的設(shè)備總臺數(shù)及總金額為:"<<'t'<<n800_<<"tt"<<p800_<<endl;cout<<"累計所有設(shè)備的總臺數(shù)及總金額為:"<<"tt"<<n_200+n200_800+n800_<<"tt&q
38、uot;<<p_200+p200_800+p800_<<endl;int main()List list;int n = 0;int choice = 1;system("color 1C");do cout<<"tttt教學(xué)設(shè)備管理系統(tǒng)"<<endl;cout<<"tt="<<endl;cout<<"tt#tt 1.添加設(shè)備內(nèi)容。tt#"<<endl;cout<<"tt#tt 2.查找設(shè)備內(nèi)容。tt#"<<endl;cout<
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高考物理總復(fù)習(xí)專題三牛頓運動定律第2講牛頓第二定律、兩類動力學(xué)問題練習(xí)含答案
- 建筑場地土方運輸填筑
- 外墻真石漆工程勞務(wù)分包
- 高中英語 Unit 4 Wildlife protection Speaking and writing教案 新人教版必修2
- 八年級物理下冊 第十二章 簡單機械12.2 滑輪第2課時 輪軸和斜面教案 (新版)新人教版
- 高中化學(xué) 第一冊 第一章 打開原子世界的大門 1.2 同位素和相對原子質(zhì)量教案 滬科版
- 2024-2025版新教材高中語文 第三單元 7 短歌行 歸園田居(其一)教案 新人教版必修上冊
- 2023九年級數(shù)學(xué)下冊 第27章 圓27.3 圓中的計算問題第1課時 弧長和扇形面積的計算教案 (新版)華東師大版
- 2024年秋八年級歷史上冊 第六單元 中華民族的抗日戰(zhàn)爭 第18課 從九一八事變到西安事變教案 新人教版
- 有關(guān)圓周率的數(shù)學(xué)家
- 整體施工方案施工組織總體設(shè)想、方案針對性和施工劃分
- _獐子島內(nèi)部控制失效案例分析
- 拼音拼讀練習(xí)過關(guān)訓(xùn)練(無漢字)
- 乳腺癌相關(guān)解剖和手術(shù)技巧體會-PPT課件
- 電廠氨區(qū)液氨儲罐置換方案
- 地理說課ppt課件
- ket分類詞匯表
- 茶藝館會員制度管理辦法
- 六年級數(shù)學(xué)上冊解決問題60道
- 第4章-管內(nèi)氣液兩相流阻力計算
- 五年級期中家長會課件PPT
評論
0/150
提交評論