




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
126/126中南大學《高級程序設計實踐(C++)》課程設計報告設計題目指導老師設計者專業班級時刻日期目錄一課題的差不多內容和要求二程序功能簡介三主體內容:1設計分析2程序結構3各模塊的功能及程序講明4相關模塊源程序5操作方法6試驗結果7設計體會8參考文獻一差不多內容和要求(一)差不多要求本設計采納教師指導、學生自學和獨立編程操作方式,先由學生查閱與本設計有關的書籍和資料,利用VisualC++6.0設計環境與開發工具,在兩周時刻內,完成課程設計內容中的一個治理系統,具體要求如下:獨立考慮:獨立完成課程設計中各任務的設計和調試。上機預備:每次上機前,要事先編制好預備調試的程序,認真想好調試步驟和有關環境的設置方法,預備好有關的文件。數據治理:治理系統中的數據可用數據庫(如Access數據庫)的形式保存,也可用一般文件(文本文件或二進制文件)的形式保存。程序要求:界面美觀、可操作性強、穩定性好。(二)差不多內容:教學設備治理系統為方便治理學校教學設備,編寫一個教學設備治理系統軟件。系統記錄必須包括設備編號、設備名稱、生產廠家、購置日期、臺數、單價、及備注等。二程序功能簡介添加:增加一臺設備的記錄到治理系統中。查詢:能夠依照設備編號查找某臺設備的相關信息,若找到則顯示其信息。修改:在治理系統中修改一臺設備的記錄。保存:將所有教學設備信息保存在一個文件中(數據庫文件或一般的文本文件)。讀取:從文件中讀取已保存了數據。刪除:從治理系統中刪除一條記錄。恢復:能恢復被刪除的記錄。統計:(A)統計每頁合計臺數及金額;(B)累計設備的總臺數及總金額;(C)統計單價在:200元以下、200~800元之間和800元以上的設備總臺數及總金額。(D)以表格形式打印教學設備明細表。其他:能夠依照自己的思路設計其他功能。三主體內容1設計分析依照問題描述和要求,系統要求能夠添加設備,按設備編號查詢,修改,保存,讀取,刪除,恢復設備的信息。系統既然具有“數據存盤”功能,設備數據能夠保存到磁盤文件,那么也就意味著今后能夠從磁盤文件讀出人員數據,因此系統增加了“人員數據裝入”模塊,以方便用戶使用,幸免數據重新錄入。考慮到系統實現簡捷,人員數據文件采納文本文件,人員數據文件名.使用面向對象的程序設計思想進行分析,整個系統涉及兩個類的信息和操作,設備和購置日期。因此系統要緊涉及兩個大類:設備類Equipment,日期Date。系統的主體框架確實是設備類,考慮系統操作的設備信息的數量具有不確定性,因此考慮使用鏈表保存,處理設備信息。設備類包含因此設備信息的一個不帶頭結點的鏈表,能夠對設備信息進行增,刪,改,查詢,基礎數據設置,數據存盤,數據裝入等操作的相關模塊(Add,Delete,Modify,Find,Save,Recover,Read,Statistic)作為成員函數。2程序結構(1)系統功能模塊圖設備管理設備管理系統添加設備信息查找設備信息修改設備信息保存設備信息讀取設備信息刪除設備信息恢復設備信息統計設備信息各模塊的功能開始主函數流程開始創建設備對象創建設備對象顯示菜單顯示菜單同意輸入同意輸入依照輸入執行操作依照輸入執行操作結束退出結束退出4源函數#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;//設備編號 charname[20];//設備名稱 charfactory[30];//生產廠家 Datedate;//購置日期 intamount;//臺數 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,"未設置"); strcpy(notes,"無");}voidEquipment::output(){ cout<<"1.設備編號:"<<num<<endl; cout<<"2.設備名稱:"<<name<<endl; cout<<"3.生產廠家:"<<factory<<endl; cout<<"4.購置日期:";date.output(); cout<<"5.臺數:"<<amount<<endl; cout<<"6.單價:"<<prrice<<endl; cout<<"7.備注:"<<notes<<endl;}intEquipment::getNum(){ returnnum;}intEquipment::getAmount(){ returnamount;}doubleEquipment::getPrrice(){ returnprrice;}voidEquipment::setNum(){ cout<<"請輸入設備編號:"; cin>>num;}voidEquipment::setName(){ cout<<"請輸入設備名稱:"; cin>>name;}voidEquipment::setFactory(){ cout<<"請輸入生產廠家的名稱:"; cin>>factory;}voidEquipment::setDate(){ inty,m,d; cout<<"請輸入年、月、日,用空格隔開:"; cin>>y>>m>>d; Datea(y,m,d); date=a;}voidEquipment::setAmount(){ cout<<"請輸入設備臺數:"; cin>>amount;}voidEquipment::setPrrice(){ cout<<"請輸入設備單價:"; cin>>prrice;}voidEquipment::setNotes(){ cout<<"請輸入備注內容:"; 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();//設備保存 boolRead();//讀取 voidDelete();//刪除設備記錄 voidRecover();//恢復被刪除的記錄 voidStatistic();//統計};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<<"請輸入設備編號:"; cin>>num_; cout<<"請輸入設備名稱:"; cin>>name_; cout<<"請輸入購置臺數:"; cin>>amount_; cout<<"請輸入設備單價:"; cin>>prrice_; elem[n]=newEquipment(num_,name_,amount_,prrice_); n++; returntrue; } returnfalse;}boolList::find(){ intnum_; cout<<"請輸入您需要查找的設備編號:"; cin>>num_; for(inti=0;i<n;i++) { if(num_==elem[i]->getNum()) { cout<<"查找成功!設備信息如下:"<<endl; elem[i]->output(); returntrue; } } cout<<"查找失敗!無此設備信息。"<<endl; returnfalse;}voidList::modify(){ system("cls"); if(n>0) { inti,num_; boolok=false; cout<<"現有的設備編號如下:"<<endl;; for(i=0;i<n;i++) { cout<<elem[i]->getNum()<<""; } cout<<endl; cout<<"請輸入您需要修改的設備編號:"; 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<<"現無任何設備!"<<endl;}boolList::Save(){ ofstreamfout; fout.open("save.txt"); fout.put(0);//清晰txt文檔的數據 fout.seekp(-1,ios::end);//在txt文檔中光標退格 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<<"現有的設備編號如下:"<<endl;; for(i=0;i<n;i++) { cout<<elem[i]->getNum()<<""; } cout<<endl; cout<<"請選擇您要刪除的設備編號:"; cin>>num_; for(i=0;i<n;i++) { if(elem[i]->getNum()==num_) { ok=true; system("cls"); elem[i]->output(); cout<<"您確定要刪除此設備?(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<<"現無任何設備!"<<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<<"找不到文件,恢復失敗!"<<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<<"恢復成功!"<<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" <<"數量"<<'\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元以下的設備總臺數及總金額為:" <<'\t'<<n_200<<"\t\t"<<p_200<<endl; cout<<"單價在:200~800元的設備總臺數及總金額為:" <<'\t'<<n200_800<<"\t\t"<<p200_800<<endl; cout<<"單價在:800元以上的設備總臺數及總金額為:" <<'\t'<<n800_<<"\t\t"<<p800_<<endl; cout<<"累計所有設備的總臺數及總金額為:" <<"\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教學設備治理系統"<<endl; cout<<"\t\t================================================="<<endl; cout<<"\t\t#\t\t1.添加設備內容。\t\t#"<<endl; cout<<"\t\t#\t\t2.查找設備內容。\t\t#"<<endl; cout<<"\t\t#\t\t3.修改設備內容。\t\t#"<<endl; cout<<"\t\t#\t\t4.保存設備記錄。\t\t#"<<e
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆湖北省孝感市漢川市第二中學高三一診考試英語試卷含答案
- 2025年云南省昆明市祿勸縣一中高考英語二模試卷含答案
- 初級消防設施操作員習題庫及答案
- 分析化學練習題庫(含答案)
- 海洋石油鉆探的深海地質調查進展考核試卷
- 電氣機械設備施工安裝考核試卷
- 繼續拓展調味品與發酵制品相關主題考核試卷
- 電力設備維護與保養管理考核試卷
- 玻璃行業生產過程中的能源管理考核試卷
- 航標反射器設計原理考核試卷
- 江蘇省南京市(2024年-2025年小學六年級語文)部編版期末考試(下學期)試卷及答案
- 4.1.2-元素周期表-課件 高一上學期化學人教版(2019)必修第一冊
- 2024年戰略規劃咨詢服務合同
- 2024年度山東省國家電網招聘之管理類測試卷(含答案)
- 《大學心理》筆記(1-14章節)
- 《日語聽說》課件-第六課 餐館就餐
- DB1303T375-2024起重機械使用管理制度編制指南
- 山西省云時代技術有限公司筆試題庫
- (2025新版)建設工程安全防護、文明施工措施費用支付計劃
- 言語治療技術說評估CRRCAE法
- 2025年中考語文二輪復習名著思維導圖專題課件《經典常談》課件
評論
0/150
提交評論