




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
年5月29日教學(xué)設(shè)備管理系統(tǒng)c文檔僅供參考中南大學(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參考文獻(xiàn)一基本內(nèi)容和要求(一)基本要求本設(shè)計采用教師指導(dǎo)、學(xué)生自學(xué)和獨立編程操作方式,先由學(xué)生查閱與本設(shè)計有關(guān)的書籍和資料,利用VisualC++6.0設(shè)計環(huán)境與開發(fā)工具,在兩周時間內(nèi),完成課程設(shè)計內(nèi)容中的一個管理系統(tǒng),具體要求如下:獨立思考:獨立完成課程設(shè)計中各任務(wù)的設(shè)計和調(diào)試。上機(jī)準(zhǔn)備:每次上機(jī)前,要事先編制好準(zhǔn)備調(diào)試的程序,認(rèn)真想好調(diào)試步驟和有關(guān)環(huán)境的設(shè)置方法,準(zhǔn)備好有關(guān)的文件。數(shù)據(jù)管理:管理系統(tǒng)中的數(shù)據(jù)可用數(shù)據(jù)庫(如Access數(shù)據(jù)庫)的形式保存,也可用普通文件(文本文件或二進(jìn)制文件)的形式保存。程序要求:界面美觀、可操作性強(qiáng)、穩(wěn)定性好。(二)基本內(nèi)容:教學(xué)設(shè)備管理系統(tǒng)為方便管理學(xué)校教學(xué)設(shè)備,編寫一個教學(xué)設(shè)備管理系統(tǒng)軟件。系統(tǒng)記錄必須包括設(shè)備編號、設(shè)備名稱、生產(chǎn)廠家、購置日期、臺數(shù)、單價、及備注等。二程序功能簡介添加:增加一臺設(shè)備的記錄到管理系統(tǒng)中。查詢:能夠根據(jù)設(shè)備編號查找某臺設(shè)備的相關(guān)信息,若找到則顯示其信息。修改:在管理系統(tǒng)中修改一臺設(shè)備的記錄。保存:將所有教學(xué)設(shè)備信息保存在一個文件中(數(shù)據(jù)庫文件或普通的文本文件)。讀取:從文件中讀取已保存了數(shù)據(jù)。刪除:從管理系統(tǒng)中刪除一條記錄?;謴?fù):能恢復(fù)被刪除的記錄。統(tǒng)計:(A)統(tǒng)計每頁合計臺數(shù)及金額;(B)累計設(shè)備的總臺數(shù)及總金額;(C)統(tǒng)計單價在:200元以下、200~800元之間和800元以上的設(shè)備總臺數(shù)及總金額。(D)以表格形式打印教學(xué)設(shè)備明細(xì)表。其它:能夠根據(jù)自己的思路設(shè)計其它功能。三主體內(nèi)容1設(shè)計分析根據(jù)問題描述和要求,系統(tǒng)要求能夠添加設(shè)備,按設(shè)備編號查詢,修改,保存,讀取,刪除,恢復(fù)設(shè)備的信息。系統(tǒng)既然具有”數(shù)據(jù)存盤”功能,設(shè)備數(shù)據(jù)能夠保存到磁盤文件,那么也就意味著今后能夠從磁盤文件讀出人員數(shù)據(jù),因此系統(tǒng)增加了”人員數(shù)據(jù)裝入”模塊,以方便用戶使用,避免數(shù)據(jù)重新錄入??紤]到系統(tǒng)實現(xiàn)簡捷,人員數(shù)據(jù)文件采用文本文件,人員數(shù)據(jù)文件名.使用面向?qū)ο蟮某绦蛟O(shè)計思想進(jìn)行分析,整個系統(tǒng)涉及兩個類的信息和操作,設(shè)備和購置日期。因此系統(tǒng)主要涉及兩個大類:設(shè)備類Equipment,日期Date。系統(tǒng)的主體框架就是設(shè)備類,考慮系統(tǒng)操作的設(shè)備信息的數(shù)量具有不確定性,因此考慮使用鏈表保存,處理設(shè)備信息。設(shè)備類包含因此設(shè)備信息的一個不帶頭結(jié)點的鏈表,能夠?qū)υO(shè)備信息進(jìn)行增,刪,改,查詢,基礎(chǔ)數(shù)據(jù)設(shè)置,數(shù)據(jù)存盤,數(shù)據(jù)裝入等操作的相關(guān)模塊(Add,Delete,Modify,Find,Save,Recover,Read,Statistic)作為成員函數(shù)。2程序結(jié)構(gòu)(1)系統(tǒng)功能模塊圖設(shè)備管理設(shè)備管理系統(tǒng)添加設(shè)備信息查找設(shè)備信息修改設(shè)備信息保存設(shè)備信息讀取設(shè)備信息刪除設(shè)備信息恢復(fù)設(shè)備信息統(tǒng)計設(shè)備信息各模塊的功能開始主函數(shù)流程開始創(chuàng)立設(shè)備對象創(chuàng)立設(shè)備對象顯示菜單顯示菜單接受輸入接受輸入根據(jù)輸入執(zhí)行操作根據(jù)輸入執(zhí)行操作結(jié)束退出結(jié)束退出4源函數(shù)#include<iostream>#include<fstream>#include<cstring>#include<windows.h>usingnamespacestd;classDate{private: intyear; intmonth; intday;public: Date(inty=0,intm=0,intd=0); Date&operator=(Date&a); voidfoutput(ofstream&fout); voidoutput(); voidalloutput();};voidDate::alloutput(){ cout<<year<<":"<<month<<":"<<day<<'\t';}voidDate::foutput(ofstream&fout){ fout<<year<<""<<month<<""<<day<<endl;}Date::Date(inty,intm,intd){ year=y; month=m; day=d;}Date&Date::operator=(Date&a){ year=a.year; month=a.month; day=a.day; return*this;}voidDate::output(){ cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;}classEquipment{private: intnum;//設(shè)備編號 charname[20];//設(shè)備名稱 charfactory[30];//生產(chǎn)廠家 Datedate;//購置日期 intamount;//臺數(shù) doubleprrice;//單價 charnotes[101];//備注public: Equipment(intnum_=0,char*name_=NULL, intamount_=0,doubleprrice_=0); Equipment&operator=(Equipment&a) { num=a.num; strcpy(name,); strcpy(factory,a.factory); date=a.date; return*this; } voidgive(char*factory_,Datedate_,char*notes); voidoutput(); voidalloutput(); intgetNum(); intgetAmount(); doublegetPrrice(); voidsetNum(); voidsetName(); voidsetFactory(); voidsetDate(); voidsetAmount(); voidsetPrrice(); voidsetNotes(); voidfoutput(ofstream&fout);};voidEquipment::alloutput(){ cout<<num<<'\t' <<name<<'\t' <<factory<<'\t'; date.alloutput(); cout<<'\t'<<amount <<'\t'<<prrice <<'\t'<<notes<<endl;}voidEquipment::give(char*factory_,Datedate_,char*notes_){ strcpy(factory,factory_); date=date_; strcpy(notes,notes_);}Equipment::Equipment(intnum_,char*name_,intamount_,doubleprrice_){ num=num_; strcpy(name,name_); amount=amount_; prrice=prrice_; strcpy(factory,"未設(shè)置"); strcpy(notes,"無");}voidEquipment::output(){ cout<<"1.設(shè)備編號:"<<num<<endl; cout<<"2.設(shè)備名稱:"<<name<<endl; cout<<"3.生產(chǎn)廠家:"<<factory<<endl; cout<<"4.購置日期:";date.output(); cout<<"5.臺數(shù):"<<amount<<endl; cout<<"6.單價:"<<prrice<<endl; cout<<"7.備注:"<<notes<<endl;}intEquipment::getNum(){ returnnum;}intEquipment::getAmount(){ returnamount;}doubleEquipment::getPrrice(){ returnprrice;}voidEquipment::setNum(){ cout<<"請輸入設(shè)備編號:"; cin>>num;}voidEquipment::setName(){ cout<<"請輸入設(shè)備名稱:"; cin>>name;}voidEquipment::setFactory(){ cout<<"請輸入生產(chǎn)廠家的名稱:"; cin>>factory;}voidEquipment::setDate(){ inty,m,d; cout<<"請輸入年、月、日,用空格隔開:"; cin>>y>>m>>d; Datea(y,m,d); date=a;}voidEquipment::setAmount(){ cout<<"請輸入設(shè)備臺數(shù):"; cin>>amount;}voidEquipment::setPrrice(){ cout<<"請輸入設(shè)備單價:"; cin>>prrice;}voidEquipment::setNotes(){ cout<<"請輸入備注內(nèi)容:"; cin>>notes;}voidEquipment::foutput(ofstream&fout){ fout<<num<<endl; fout<<name<<endl; fout<<factory<<endl; date.foutput(fout); fout<<amount<<endl; fout<<prrice<<endl; fout<<notes<<endl;}classList{private: intn,capacity; Equipment**elem;public: List(); ~List(); booladd();//添加 boolfind();//查詢 voidmodify();//修改 boolSave();//設(shè)備保存 boolRead();//讀取 voidDelete();//刪除設(shè)備記錄 voidRecover();//恢復(fù)被刪除的記錄 voidStatistic();//統(tǒng)計};List::List(){ n=0; capacity=1000; elem=newEquipment*[capacity]; for(inti=0;i<capacity;i++)elem[i]=NULL;}List::~List(){ for(inti=0;i<n;i++) { delete[]elem[i]; elem[i]=NULL; } if(elem)delete[]elem; elem=NULL;}boolList::add(){ if(n<capacity) { intnum_; charname_[20]; intamount_; doubleprrice_; cout<<"請輸入設(shè)備編號:"; cin>>num_; cout<<"請輸入設(shè)備名稱:"; cin>>name_; cout<<"請輸入購置臺數(shù):"; cin>>amount_; cout<<"請輸入設(shè)備單價:"; cin>>prrice_; elem[n]=newEquipment(num_,name_,amount_,prrice_); n++; returntrue; } returnfalse;}boolList::find(){ intnum_; cout<<"請輸入您需要查找的設(shè)備編號:"; cin>>num_; for(inti=0;i<n;i++) { if(num_==elem[i]->getNum()) { cout<<"查找成功!設(shè)備信息如下:"<<endl; elem[i]->output(); returntrue; } } cout<<"查找失敗!無此設(shè)備信息。"<<endl; returnfalse;}voidList::modify(){ system("cls"); if(n>0) { inti,num_; boolok=false; cout<<"現(xiàn)有的設(shè)備編號如下:"<<endl;; for(i=0;i<n;i++) { cout<<elem[i]->getNum()<<""; } cout<<endl; cout<<"請輸入您需要修改的設(shè)備編號:"; cin>>num_; for(i=0;i<n;i++) { if(elem[i]->getNum()==num_) { ok=true; intchoice=1; do { system("cls"); elem[i]->output(); cout<<"8.退出修改。"<<endl; cout<<"請輸入您需要修改的選項:"; cin>>choice; if(choice<1||choice>8) { cout<<"輸入錯誤,請重新輸入!"<<endl; choice=1; continue; } switch(choice) { case1: elem[i]->setNum(); break; case2: elem[i]->setName(); break; case3: elem[i]->setFactory(); break; case4: elem[i]->setDate(); break; case5: elem[i]->setAmount(); break; case6: elem[i]->setPrrice(); break; case7: elem[i]->setNotes(); break; case8: break; } }while(choice!=8); } } if(!ok)cout<<"您的輸入有誤!"<<endl; } elsecout<<"現(xiàn)無任何設(shè)備!"<<endl;}boolList::Save(){ ofstreamfout; fout.open("save.txt"); fout.put(0);//清楚txt文檔的數(shù)據(jù) fout.seekp(-1,ios::end);//在txt文檔中光標(biāo)退格 if(fout.fail()) { cout<<"找不到文件,保存失敗!"<<endl; returnfalse; } else { for(inti=0;i<n;i++) { elem[i]->foutput(fout); } } cout<<"保存成功!"<<endl; fout.close(); returntrue;}boolList::Read(){ intsize; ifstreamfin; fin.open("save.txt"); streampospos=fin.tellg(); fin.seekg(0,ios::end); size=fin.tellg(); fin.seekg(pos); if(fin.fail()) { cout<<"找不到文件,讀取失敗!"<<endl; returnfalse; } else { intnum_,amount_,y,m,d; doubleprrice_; charname_[20],factory_[30],notes_[101]; n=0; while(size!=1) { fin>>num_; fin>>name_; fin>>factory_; fin>>y>>m>>d; if(fin.eof())break; Datedate_(y,m,d); fin>>amount_; fin>>prrice_; fin>>notes_; elem[n]=newEquipment(num_,name_,amount_,prrice_); elem[n]->give(factory_,date_,notes_); n++; } } cout<<"讀取成功!"<<endl; fin.close(); returntrue;}voidList::Delete(){ system("cls"); if(n>0) { inti,num_; boolok=false; cout<<"現(xiàn)有的設(shè)備編號如下:"<<endl;; for(i=0;i<n;i++) { cout<<elem[i]->getNum()<<""; } cout<<endl; cout<<"請選擇您要刪除的設(shè)備編號:"; cin>>num_; for(i=0;i<n;i++) { if(elem[i]->getNum()==num_) { ok=true; system("cls"); elem[i]->output(); cout<<"您確定要刪除此設(shè)備?(YorN)"<<endl; charstr; do { cin>>str; if(str!='Y'&&str!='N') { cout<<"輸入錯誤,請重新輸入:"; } }while(str!='Y'&&str!='N'); if(str=='Y') { ofstreamfout; fout.open("recover.txt"); fout.app; elem[i]->foutput(fout); fout.close(); if(i==n-1) { delete[]elem[i]; elem[i]=NULL; } else { Equipment*tem; tem=elem[i]; elem[i]=elem[n-1]; elem[n-1]=tem; delete[]elem[n-1]; elem[n-1]=NULL; } n--; cout<<"刪除成功!"<<endl; } elsecout<<"刪除失敗!"<<endl; } } if(!ok)cout<<"您的輸入有誤!"<<endl; } elsecout<<"現(xiàn)無任何設(shè)備!"<<endl;}voidList::Recover(){ intsize; ifstreamfin; fin.open("recover.txt"); streampospos=fin.tellg(); fin.seekg(0,ios::end); size=fin.tellg(); fin.seekg(pos); if(fin.fail()) { cout<<"找不到文件,恢復(fù)失敗!"<<endl; } else { intnum_,amount_,y,m,d; doubleprrice_; charname_[20],factory_[30],notes_[101]; while(!fin.eof()&&size!=1) { fin>>num_; fin>>name_; fin>>factory_; fin>>y>>m>>d; if(fin.eof())break; Datedate_(y,m,d); fin>>amount_; fin>>prrice_; fin>>notes_; elem[n]=newEquipment(num_,name_,amount_,prrice_); elem[n]->give(factory_,date_,notes_); n++; } cout<<"恢復(fù)成功!"<<endl; fin.close(); ofstreamfout; fout.open("recover.txt"); fout.put(0); fout.seekp(-1,ios::end); fout.close(); }}voidList::Statistic(){ system("cls"); inti,j,n_200=0,n200_800=0,n800_=0; doublep_200=0,p200_800=0,p800_=0; Equipment*tem; for(i=0;i<n;i++) { for(j=0;j<n-1-i;j++) { if(elem[j]->getPrrice()>elem[j+1]->getPrrice()) { tem=elem[j]; elem[j]=elem[j+1]; elem[j+1]=tem; } } } cout<<"編號"<<'\t' <<"名稱"<<'\t' <<"廠家"<<'\t' <<"日期"<<"\t\t" <<"數(shù)量"<<'\t' <<"單價"<<'\t' <<"備注"<<endl; for(i=0;i<n;i++) { if(elem[i]->getPrrice()<200) { n_200+=elem[i]->getAmount(); p_200+=elem[i]->getAmount()*elem[i]->getPrrice(); } elseif(elem[i]->getPrrice()<=800) { n200_800+=elem[i]->getAmount(); p200_800+=elem[i]->getAmount()*elem[i]->getPrrice(); } else { n800_+=elem[i]->getAmount(); p800_+=elem[i]->getAmount()*elem[i]->getPrrice(); } elem[i]->alloutput(); } cout<<endl; cout<<"單價在:200元以下的設(shè)備總臺數(shù)及總金額為:" <<'\t'<<n_200<<"\t\t"<<p_200<<endl; cout<<"單價在:200~800元的設(shè)備總臺數(shù)及總金額為:" <<'\t'<<n200_800<<"\t\t"<<p200_800<<endl; cout<<"單價在:800元以上的設(shè)備總臺數(shù)及總金額為:" <<'\t'<<n800_<<"\t\t"<<p800_<<endl; cout<<"累計所有設(shè)備的總臺數(shù)及總金額為:" <<"\t\t"<<n_200+n200_800+n800_<<"\t\t"<<p_200+p200_800+p800_<<endl;}intmain(){ Listlist; intn=0; intchoice=1; system("color1C"); do { cout<<"\t\t\t\t教學(xué)設(shè)備管理系統(tǒng)"<<endl; cout<<"\t\t================================================="<<endl; cout<<"\t\t#\t\t1.添加設(shè)備內(nèi)容。\t\t#"<<endl; cout<<"\t\t#\t\t2.查找設(shè)備內(nèi)容。\t\t#"<<endl; cout<<"\t\t#\t\t3.修改設(shè)備內(nèi)容。\t\t#"<<endl; cout<<"\t\t#\t\t4.保存設(shè)備記
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年湖北國土資源職業(yè)學(xué)院單招職業(yè)技能測試題庫及參考答案
- 商業(yè)綜合體改造抵押協(xié)議
- 2025年度養(yǎng)豬場動物疫病監(jiān)測與預(yù)警協(xié)議
- 2025年度個人信息保護(hù)與信息安全保密協(xié)議書
- 二零二五年度食品飲料企業(yè)財務(wù)代理記帳服務(wù)合同
- 2025年廣西自然資源職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案一套
- 商業(yè)廣場改造貸款協(xié)議
- 2025年度公司終止職工勞動合同解除與就業(yè)援助合同
- 2025年北京綠色生態(tài)居住區(qū)拆遷補(bǔ)償與生態(tài)修復(fù)合同
- 2025年度商鋪轉(zhuǎn)租定金及租賃期終止處理合同
- 床位預(yù)約管理提高患者就診效率減少等待時間
- 吉利圍墻施工組織設(shè)計樣本
- 人教版三年級上冊數(shù)學(xué)應(yīng)用題100題及答案
- 第6課《飛向藍(lán)天的恐龍》兩課時學(xué)習(xí)任務(wù)單部編版四年級語文下冊
- 語文新課標(biāo)背景下單元整體教學(xué):六下第4單元大單元設(shè)計
- 福州地鐵公司招聘考試題目
- 小學(xué)語文期末質(zhì)量分析報告
- 口腔醫(yī)院客服培訓(xùn)課件
- 駕照體檢表完整版本
- 04G325吊車軌道聯(lián)結(jié)及車擋
- 華為公司員工培訓(xùn)與績效管理
評論
0/150
提交評論