教學(xué)設(shè)備管理系統(tǒng)概述_第1頁
教學(xué)設(shè)備管理系統(tǒng)概述_第2頁
教學(xué)設(shè)備管理系統(tǒng)概述_第3頁
教學(xué)設(shè)備管理系統(tǒng)概述_第4頁
教學(xué)設(shè)備管理系統(tǒng)概述_第5頁
已閱讀5頁,還剩121頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

126/126中南大學(xué)《高級程序設(shè)計(jì)實(shí)踐(C++)》課程設(shè)計(jì)報(bào)告設(shè)計(jì)題目指導(dǎo)老師設(shè)計(jì)者專業(yè)班級時(shí)刻日期目錄一課題的差不多內(nèi)容和要求二程序功能簡介三主體內(nèi)容:1設(shè)計(jì)分析2程序結(jié)構(gòu)3各模塊的功能及程序講明4相關(guān)模塊源程序5操作方法6試驗(yàn)結(jié)果7設(shè)計(jì)體會8參考文獻(xiàn)一差不多內(nèi)容和要求(一)差不多要求本設(shè)計(jì)采納教師指導(dǎo)、學(xué)生自學(xué)和獨(dú)立編程操作方式,先由學(xué)生查閱與本設(shè)計(jì)有關(guān)的書籍和資料,利用VisualC++6.0設(shè)計(jì)環(huán)境與開發(fā)工具,在兩周時(shí)刻內(nèi),完成課程設(shè)計(jì)內(nèi)容中的一個(gè)治理系統(tǒng),具體要求如下:獨(dú)立考慮:獨(dú)立完成課程設(shè)計(jì)中各任務(wù)的設(shè)計(jì)和調(diào)試。上機(jī)預(yù)備:每次上機(jī)前,要事先編制好預(yù)備調(diào)試的程序,認(rèn)真想好調(diào)試步驟和有關(guān)環(huán)境的設(shè)置方法,預(yù)備好有關(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è)備,編寫一個(gè)教學(xué)設(shè)備治理系統(tǒng)軟件。系統(tǒng)記錄必須包括設(shè)備編號、設(shè)備名稱、生產(chǎn)廠家、購置日期、臺數(shù)、單價(jià)、及備注等。二程序功能簡介添加:增加一臺設(shè)備的記錄到治理系統(tǒng)中。查詢:能夠依照設(shè)備編號查找某臺設(shè)備的相關(guān)信息,若找到則顯示其信息。修改:在治理系統(tǒng)中修改一臺設(shè)備的記錄。保存:將所有教學(xué)設(shè)備信息保存在一個(gè)文件中(數(shù)據(jù)庫文件或一般的文本文件)。讀?。簭奈募凶x取已保存了數(shù)據(jù)。刪除:從治理系統(tǒng)中刪除一條記錄?;謴?fù):能恢復(fù)被刪除的記錄。統(tǒng)計(jì):(A)統(tǒng)計(jì)每頁合計(jì)臺數(shù)及金額;(B)累計(jì)設(shè)備的總臺數(shù)及總金額;(C)統(tǒng)計(jì)單價(jià)在:200元以下、200~800元之間和800元以上的設(shè)備總臺數(shù)及總金額。(D)以表格形式打印教學(xué)設(shè)備明細(xì)表。其他:能夠依照自己的思路設(shè)計(jì)其他功能。三主體內(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)實(shí)現(xiàn)簡捷,人員數(shù)據(jù)文件采納文本文件,人員數(shù)據(jù)文件名.使用面向?qū)ο蟮某绦蛟O(shè)計(jì)思想進(jìn)行分析,整個(gè)系統(tǒng)涉及兩個(gè)類的信息和操作,設(shè)備和購置日期。因此系統(tǒng)要緊涉及兩個(gè)大類:設(shè)備類Equipment,日期Date。系統(tǒng)的主體框架確實(shí)是設(shè)備類,考慮系統(tǒng)操作的設(shè)備信息的數(shù)量具有不確定性,因此考慮使用鏈表保存,處理設(shè)備信息。設(shè)備類包含因此設(shè)備信息的一個(gè)不帶頭結(jié)點(diǎn)的鏈表,能夠?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)計(jì)設(shè)備信息各模塊的功能開始主函數(shù)流程開始創(chuàng)建設(shè)備對象創(chuàng)建設(shè)備對象顯示菜單顯示菜單同意輸入同意輸入依照輸入執(zhí)行操作依照輸入執(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;//單價(jià) 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.單價(jià):"<<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è)備單價(jià):"; 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)計(jì)};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è)備單價(jià):"; 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<<"請輸入您需要修改的選項(xiàng):"; 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' <<"單價(jià)"<<'\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<<"單價(jià)在:200元以下的設(shè)備總臺數(shù)及總金額為:" <<'\t'<<n_200<<"\t\t"<<p_200<<endl; cout<<"單價(jià)在:200~800元的設(shè)備總臺數(shù)及總金額為:" <<'\t'<<n200_800<<"\t\t"<<p200_800<<endl; cout<<"單價(jià)在:800元以上的設(shè)備總臺數(shù)及總金額為:" <<'\t'<<n800_<<"\t\t"<<p800_<<endl; cout<<"累計(jì)所有設(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è)備記錄。\t\t#"<<e

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論