




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
中南大學(xué)《高級(jí)程序設(shè)計(jì)實(shí)踐(C++)》課程設(shè)計(jì)匯報(bào)設(shè)計(jì)題目指導(dǎo)老師設(shè)計(jì)者專業(yè)班級(jí)時(shí)間日期目錄一課題基礎(chǔ)內(nèi)容和要求二程序功效介紹三主體內(nèi)容:1設(shè)計(jì)分析2程序結(jié)構(gòu)3各模塊功效及程序說明4相關(guān)模塊源程序5操作方法6試驗(yàn)結(jié)果7設(shè)計(jì)體會(huì)8參考文件一基礎(chǔ)內(nèi)容和要求(一)基礎(chǔ)要求本設(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ī)準(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)定性好。(二)基礎(chǔ)內(nèi)容:教學(xué)設(shè)備管理系統(tǒng)為方便管理學(xué)校教學(xué)設(shè)備,編寫一個(gè)教學(xué)設(shè)備管理系統(tǒng)軟件。系統(tǒng)統(tǒng)計(jì)必需包含設(shè)備編號(hào)、設(shè)備名稱、生產(chǎn)廠家、購置日期、臺(tái)數(shù)、單價(jià)、及備注等。二程序功效介紹添加:增加一臺(tái)設(shè)備統(tǒng)計(jì)到管理系統(tǒng)中。查詢:能夠依據(jù)設(shè)備編號(hào)查找某臺(tái)設(shè)備相關(guān)信息,若找到則顯示其信息。修改:在管理系統(tǒng)中修改一臺(tái)設(shè)備統(tǒng)計(jì)。保留:將全部教學(xué)設(shè)備信息保留在一個(gè)文件中(數(shù)據(jù)庫文件或一般文本文件)。讀?。簭奈募凶x取已保留了數(shù)據(jù)。刪除:從管理系統(tǒng)中刪除一條統(tǒng)計(jì)?;謴?fù):能恢復(fù)被刪除統(tǒng)計(jì)。統(tǒng)計(jì):(A)統(tǒng)計(jì)每頁累計(jì)臺(tái)數(shù)及金額;(B)累計(jì)設(shè)備總臺(tái)數(shù)及總金額;(C)統(tǒng)計(jì)單價(jià)在:200元以下、200~800元之間和800元以上設(shè)備總臺(tái)數(shù)及總金額。(D)以表格形式打印教學(xué)設(shè)備明細(xì)表。其它:能夠依據(jù)自己思緒設(shè)計(jì)其它功效。三主體內(nèi)容1設(shè)計(jì)分析依據(jù)問題描述和要求,系統(tǒng)要求能夠添加設(shè)備,按設(shè)備編號(hào)查詢,修改,保留,讀取,刪除,恢復(fù)設(shè)備信息。系統(tǒng)既然含有“數(shù)據(jù)存盤”功效,設(shè)備數(shù)據(jù)能夠保留到磁盤文件,那么也就意味著以后能夠從磁盤文件讀出人員數(shù)據(jù),所以系統(tǒng)增加了“人員數(shù)據(jù)裝入”模塊,以方便用戶使用,避免數(shù)據(jù)重新錄入??紤]到系統(tǒng)實(shí)現(xiàn)簡(jiǎn)捷,人員數(shù)據(jù)文件采取文本文件,人員數(shù)據(jù)文件名.使用面向?qū)ο蟪绦蛟O(shè)計(jì)思想進(jìn)行分析,整個(gè)系統(tǒng)包含兩個(gè)類信息和操作,設(shè)備和購置日期。所以系統(tǒng)關(guān)鍵包含兩個(gè)大類:設(shè)備類Equipment,日期Date。系統(tǒng)主體框架就是設(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è)備對(duì)象創(chuàng)建設(shè)備對(duì)象顯示菜單顯示菜單接收輸入接收輸入依據(jù)輸入實(shí)施操作依據(jù)輸入實(shí)施操作結(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è)備編號(hào) charname[20];//設(shè)備名稱 charfactory[30];//生產(chǎn)廠家 Datedate;//購置日期 intamount;//臺(tái)數(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è)備編號(hào):"<<num<<endl; cout<<"2.設(shè)備名稱:"<<name<<endl; cout<<"3.生產(chǎn)廠家:"<<factory<<endl; cout<<"4.購置日期:";date.output(); cout<<"5.臺(tái)數(shù):"<<amount<<endl; cout<<"6.單價(jià):"<<prrice<<endl; cout<<"7.備注:"<<notes<<endl;}intEquipment::getNum(){ returnnum;}intEquipment::getAmount(){ returnamount;}doubleEquipment::getPrrice(){ returnprrice;}voidEquipment::setNum(){ cout<<"請(qǐng)輸入設(shè)備編號(hào):"; cin>>num;}voidEquipment::setName(){ cout<<"請(qǐng)輸入設(shè)備名稱:"; cin>>name;}voidEquipment::setFactory(){ cout<<"請(qǐng)輸入生產(chǎn)廠家名稱:"; cin>>factory;}voidEquipment::setDate(){ inty,m,d; cout<<"請(qǐng)輸入年、月、日,用空格隔開:"; cin>>y>>m>>d; Datea(y,m,d); date=a;}voidEquipment::setAmount(){ cout<<"請(qǐng)輸入設(shè)備臺(tái)數(shù):"; cin>>amount;}voidEquipment::setPrrice(){ cout<<"請(qǐng)輸入設(shè)備單價(jià):"; cin>>prrice;}voidEquipment::setNotes(){ cout<<"請(qǐng)輸入備注內(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è)備統(tǒng)計(jì) voidRecover();//恢復(fù)被刪除統(tǒng)計(jì) 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<<"請(qǐng)輸入設(shè)備編號(hào):"; cin>>num_; cout<<"請(qǐng)輸入設(shè)備名稱:"; cin>>name_; cout<<"請(qǐng)輸入購置臺(tái)數(shù):"; cin>>amount_; cout<<"請(qǐng)輸入設(shè)備單價(jià):"; cin>>prrice_; elem[n]=newEquipment(num_,name_,amount_,prrice_); n++; returntrue; } returnfalse;}boolList::find(){ intnum_; cout<<"請(qǐng)輸入您需要查找設(shè)備編號(hào):"; cin>>num_; for(inti=0;i<n;i++) { if(num_==elem[i]->getNum()) { cout<<"查找成功!設(shè)備信息以下:"<<endl; elem[i]->output(); returntrue; } } cout<<"查找失?。o此設(shè)備信息。"<<endl; returnfalse;}voidList::modify(){ system("cls"); if(n>0) { inti,num_; boolok=false; cout<<"現(xiàn)有設(shè)備編號(hào)以下:"<<endl;; for(i=0;i<n;i++) { cout<<elem[i]->getNum()<<""; } cout<<endl; cout<<"請(qǐng)輸入您需要修改設(shè)備編號(hào):"; 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<<"請(qǐng)輸入您需要修改選項(xiàng):"; cin>>choice; if(choice<1||choice>8) { cout<<"輸入錯(cuò)誤,請(qǐng)重新輸入!"<<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è)備編號(hào)以下:"<<endl;; for(i=0;i<n;i++) { cout<<elem[i]->getNum()<<""; } cout<<endl; cout<<"請(qǐng)選擇您要?jiǎng)h除設(shè)備編號(hào):"; cin>>num_; for(i=0;i<n;i++) { if(elem[i]->getNum()==num_) { ok=true; system("cls"); elem[i]->output(); cout<<"您確定要?jiǎng)h除此設(shè)備?(YorN)"<<endl; charstr; do { cin>>str; if(str!='Y'&&str!='N') { cout<<"輸入錯(cuò)誤,請(qǐng)重新輸入:"; } }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<<"編號(hào)"<<'\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è)備總臺(tái)數(shù)及總金額為:" <<'\t'<<n_200<<"\t\t"<<p_200<<endl; cout<<"單價(jià)在:200~800元設(shè)備總臺(tái)數(shù)及總金額為:" <<'\t'<<n200_800<<"\t\t"<<p200_800<<endl; cout<<"單價(jià)在:800元以上設(shè)備總臺(tái)數(shù)及總金額為:" <<'\t'<<n800_<<"\t\t"<<p800_<<endl; cout<<"累計(jì)全部設(shè)備總臺(tái)數(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.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技助力下的大學(xué)食堂環(huán)境改善策略研究
- 螺紋鋼套絲機(jī)項(xiàng)目可行性研究報(bào)告立項(xiàng)報(bào)告模板
- 2025年度加裝電梯項(xiàng)目施工安全管理與事故應(yīng)急預(yù)案協(xié)議
- 八年級(jí)物理蘇科版上冊(cè)《4.3凸透鏡成像的規(guī)律》教學(xué)設(shè)計(jì)教案1
- 2025年度體育設(shè)施用地租賃協(xié)議書模板
- 科技與設(shè)計(jì)融合下的商業(yè)演講策略研究
- 二零二五年度金融機(jī)構(gòu)合同審批與風(fēng)險(xiǎn)控制管理合同
- 2025年度綠色環(huán)保車隊(duì)掛靠節(jié)能減排合同
- 賓館裝修合同標(biāo)準(zhǔn)樣本
- 2025年常壓容器項(xiàng)目投資可行性研究分析報(bào)告
- 《老年人權(quán)益保障法》
- 2025年交管12123駕駛證學(xué)法減分題庫與參考答案
- 2025下半年上海事業(yè)單位招考易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 天津市和平區(qū)2024-2025學(xué)年高一(上)期末質(zhì)量調(diào)查物理試卷(含解析)
- SH∕T 3097-2017 石油化工靜電接地設(shè)計(jì)規(guī)范
- 基礎(chǔ)構(gòu)成設(shè)計(jì)全套教學(xué)課件
- Python程序設(shè)計(jì)基礎(chǔ)PPT(本科)完整全套教學(xué)課件
- (全國(guó)通用)三甲人民醫(yī)院診斷證明書請(qǐng)假條模板(廣東佛山)
- 表面工程學(xué)課件-全
- 《XX醫(yī)院安寧療護(hù)建設(shè)實(shí)施方案》
- 自主改善的活動(dòng)方案
評(píng)論
0/150
提交評(píng)論