版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
/*題目:學(xué)生考勤管理系統(tǒng)考勤信息記錄了學(xué)生的缺課情況,它包括:缺課日期、第幾節(jié)課(連續(xù)多節(jié)課用begin-end的形式表示)、課程名稱(課程名稱中不會出現(xiàn)空格)、學(xué)生姓名、缺課類型(遲到、早退、請假及曠課)。試設(shè)計(jì)一考勤管理系統(tǒng),使之能提供以下功能:1.錄入學(xué)生的缺課記錄:從鍵盤輸入數(shù)據(jù)(提示:為避免重復(fù)從鍵盤輸入數(shù)據(jù),測試時(shí)可將數(shù)據(jù)存儲在文件中,利用輸入重定向功能讀入),輸入格式為:缺課日期第幾節(jié)課課程名稱學(xué)生姓名缺課類型每行一條紀(jì)錄。例如:2008-04-293-4C++程序設(shè)計(jì)實(shí)驗(yàn)張三遲到2008-04-283-4C++程序設(shè)計(jì)李四曠課2.修改某個(gè)學(xué)生的缺課記錄:可以對缺課紀(jì)錄的任意部分進(jìn)行修改。3.查詢某個(gè)學(xué)生的缺課情況:查詢結(jié)果按照日期升序排序,同一天內(nèi)按照所缺課程的時(shí)間升序排序。4.統(tǒng)計(jì)某段時(shí)間內(nèi)(以天為單位),曠課學(xué)生姓名及曠課節(jié)數(shù),查詢結(jié)果先按曠課節(jié)數(shù)降序排序,曠課節(jié)數(shù)相同的學(xué)生按姓名升序排序;5.統(tǒng)計(jì)某段時(shí)間內(nèi),有學(xué)生曠課的課程及曠課人次,按曠課人次由多到少排序,曠課人次相同的課程按課程名稱升序排序;6.系統(tǒng)以菜單方式工作。通過幾天的奮斗終于將這個(gè)設(shè)計(jì)做出來了,如下是該程序的詳細(xì)過程*/#include<algorithm>#include<iomanip>#include<iostream>#include<vector>#include<stdexcept>#include<string>#include<iterator>#include<map>usingnamespacestd;structStudent_info{intyear,month,day,lesson1,lesson2;std::stringcourse,name,type;std::istream&read(std::istream&);};istream&Student_info::read(istream& in){in>>year>>month>>day>>lesson1>>lesson2>>course>>name>>type;returnin;}istream& read_record(istream& in,vector<Student_info>& s)//第一個(gè)模塊--------------輸入學(xué)生的缺課記錄{Student_inforecord;s.clear();//調(diào)用s.clear()來清空s的記錄while(record.read(in)){s.push_back(record);}in.clear();//將記錄的錯(cuò)誤狀態(tài)恢復(fù)正確 ,以繼續(xù)讀取記錄returnin;}boolis_empty(vector<Student_info>&
s)//判斷輸入學(xué)生的記錄是否為空,為空
則返回真{returns.empty();}boolcompare(Student_info& x,Student_info&y)//按照時(shí)間排序 ,若日期相等則看課程時(shí)間{if(x.year==y.year&&x.month==y.month&&x.day==y.day){returnx.lesson1<y.lesson1;}elseif(x.year==y.year&&x.month==y.month&&x.day!=y.day){returnx.day<y.day;}elseif(x.year==y.year&&x.month!=y.month){returnx.month<y.month;}else{returnx.year<y.year;}}booltime(constStudent_info&stud,inty1,intm1,intd1,inty2,intm2,intd2)//篩選符合輸入時(shí)間段的數(shù)據(jù){if((y1==stud.year&&stud.month==m1&&stud.day<d1)||(y2==stud.year&&stud.month==m2&&stud.day>d2))return0;elseif((y1==stud.year&&stud.month<m1)||(y2 ==stud.year&&stud.month>m2))return0;elseif(y1>stud.year||y2<stud.year)return0;elsereturn1;}voidrewrite(vector<Student_info>&
s)//第二個(gè)模塊
--------------修改某個(gè)學(xué)生的缺課情況{if(!is_empty(s)){intn,m,j,k;map<string,vector<Student_info> >s_name;map<string,vector<Student_info> >::iteratorix2;vector<Student_info>::iterator ix,iter,itera;string name;//-------------------定義這些參數(shù)和迭代器必須
在SWITHC外,不然它可能被忽略跳過while(true){cout<<"*********************************************************"<<endl;cout<<"*1.請輸入你要修改缺課記錄的學(xué)生姓名
*"<<endl;cout<<"
**"<<endl;cout<<"
*
2.返回上一級菜單*"<<endl;cout<<"*********************************************************"<<endl;cout<<"請選擇菜單選項(xiàng)cin>>n;
:";if(n==1){s_name.clear();//------------------------------
清空
MAP容器for(ix=s.begin();ix!=s.end();++ix){s_name[(*ix).name].push_back(*ix);}s.clear();cout<<"請輸入該學(xué)生的姓名 :";cin>>name;cout<<endl;if(s_name.find(name)!=s_name.end()){ix2=s_name.find(name);//----------找到符合名字要求的數(shù)據(jù) ,并顯示出for(iter=(*ix2).second.begin();iter!=(*ix2).second.end();++iter){cout<<(*iter).year<<"-"<<(*iter).month<<"-"<<(*iter).day<<"\t";cout<<(*iter).lesson1<<"-"<<(*iter).lesson2;cout<<"\t"<<(*iter).course<<"\t"<<(*iter).name<<"\t"<<(*iter).type<<endl;}itera=(*ix2).second.begin();cout<<"請輸入要更改記錄的序號cin>>j;for(k=0;k!=j-1;++k){
:";++itera;}cout<<"**************************************************************************"<<endl;cout<<"
*
需要更改的項(xiàng)目*"<<endl;cout<<"
**"<<endl;cout<<"*1
日期
2節(jié)次
3課程名稱
4姓名
5缺課類型
6返回上一級
*"<<endl;cout<<"
**"<<endl;cout<<"**************************************************************************"<<endl;cout<<"請選擇要更改的項(xiàng)目號 :";cin>>m;switch(m){case1:cout<<"請輸入更改的日期(年 月日):";cin>>(*itera).year>>(*itera).month>>(*itera).day;break;case2:cout<<"請輸入更改的節(jié)次( L1、L2):";cin>>(*itera).lesson1>>(*itera).lesson2;break;case3:cout<<"請輸入要更改的課程名稱 :";cin>>(*itera).course;break;case4:cout<<"請輸入要更改的學(xué)生姓名 :";cin>>(*itera).name;break;case5:cout<<"請輸入缺課類型 :";cin>>(*itera).type;break;case6:break;default:cout<<"你的選擇錯(cuò)了,請看清楚 !"<<endl;break;}for(ix2=s_name.begin();ix2!=s_name.end();ix2++)// 將改寫后的數(shù)據(jù)放入vector容器中{for(iter=ix2->second.begin();iter!=ix2->second.end();iter++){s.push_back(*iter);}}}else{cout<<"沒有這個(gè)學(xué)生的缺課記錄 "<<endl;cout<<endl;}break;}elseif(n==2){return;}elsecout<<"你的選擇錯(cuò)了,請看清楚 !"<<endl;}}elsecout<<"記錄為空,沒有學(xué)生的缺課記錄 !"<<endl;}voidSearch_record(vector<Student_info>& s)//第三個(gè)模塊-------------查找某學(xué)生的缺課情況{if(!is_empty(s)){inti;vector<Student_info>::iterator iter;map<string,vector<Student_info> >::iteratorit1;map<string,vector<Student_info> >s_name;map<string,vector<Student_info> >::iteratoritera;vector<Student_info>::iterator it;stringname;while(true){cout<<"**********************************************************"<<endl;cout<<"
**"<<endl;cout<<"*1輸入你要查詢的學(xué)生姓
名2返回上一級
*"<<endl;cout<<"
**"<<endl;cout<<"**********************************************************"<<endl;cout<<"請選擇菜單:";cin>>i;if(i==1){s_name.clear();for(it=s.begin();it!=s.end();++it){s_name[(*it).name].push_back(*it);}for(itera=s_name.begin();itera!=s_name.end(); ++itera){sort(itera->second.begin(),itera->second.end(),compare);}cout<<"請輸入名字:";cin>>name;cout<<endl;if(s_name.find(name)!=s_name.end()){it1=s_name.find(name);for(iter=(*it1).second.begin();iter!=(*it1).second.end();++iter){cout<<(*iter).year<<"-"<<(*iter).month<<"-"<<(*iter).day<<"\t";cout<<(*iter).lesson1<<"-"<<(*iter).lesson2;cout<<"\t"<<(*iter).course<<"\t"<<(*iter).name<<"\t"<<(*iter).type<<endl;}}else{cout<<"沒有這個(gè)學(xué)生."<<endl;cout<<endl;}}elseif(i==2){return;}elsecout<<"對不起,沒有這個(gè)選項(xiàng) !"<<endl;}}elsecout<<"沒有這個(gè)學(xué)生的缺課記錄 "<<endl;}structSearch_struct{stringname,course;inttimes;};//定義另一個(gè)結(jié) 構(gòu)模塊boolcompare2(Search_struct&x,Search_struct&y)//按照次數(shù)排序,次數(shù)相等的則按照名字排序{if(x.times==y.times)<;elsereturnx.times>y.times;}void Search_s_t(vector<Student_info>& std)//第四個(gè)模塊----------------查找某段時(shí)間內(nèi)曠課學(xué)生姓名及曠課節(jié)數(shù){if(!is_empty(std)){vector<Student_info>::iterator it;vector<Search_struct>::iterator itera;map<string,int>::iterator iter;vector<Search_struct>vec;inty1,m1,d1,y2,m2,d2;map<string,int>ret;cout<<"請輸入你要查找的一個(gè)時(shí)間段 (y1m1d1y2m2d2):"<<endl;cin>>y1>>m1>>d1>>y2>>m2>>d2;for(it=std.begin();it!=std.end();++it){if(time(*it,y1,m1,d1,y2,m2,d2)){ret[it->name]+=(it->lesson2-it->lesson1+1);}}for(iter=ret.begin();iter!=ret.end();iter++){Search_structtmp;=iter->first;tmp.times=iter->second;vec.push_back(tmp);}sort(vec.begin(),vec.end(),compare2);for(itera=vec.begin();itera!=vec.end();itera++){cout<<itera->name<<"\t"<<itera->times<<endl;}}elsecout<<"對不起,沒有你要查找的記錄 !"<<endl;}voidSearch_c_t(vector<Student_info>&std)// 第五個(gè)模塊---------------查找某段時(shí)間內(nèi)曠課的課程及曠課人次{if(!is_empty(std)){vector<Student_info>::iterator it;vector<Search_struct>::iterator itera;map<string,int>::iterator iter;vector<Search_struct>vec;inty1,m1,d1,y2,m2,d2;map<string,int>ret;cout<<"請輸入你想要查找的時(shí)間段(y1m1d1y2m2d2):"<<endl;cin>>y1>>m1>>d1>>y2>>m2>>d2;for(it=std.begin();it!=std.end();++it)// 建立map容器{if(time(*it,y1,m1,d1,y2,m2,d2)){ret[it->course]+=1;}}for(iter=ret.begin();iter!=ret.end();iter++){Search_structtmp;tmp.course=iter->first;tmp.times=iter->second;vec.push_back(tmp);}sort(vec.begin(),vec.end(),compare2);for(itera=vec.begin();itera!=vec.end();itera++){cout<<itera->course<<"\t"<<itera->times<<endl;}}elsecout<<"這段時(shí)間內(nèi)沒有學(xué)生的缺課紀(jì)錄 !"<<endl;}intmain(){vector<Student_info>stu;intchoice;while(true){cout<<"*************************************************************"<<endl;cout<<" *
學(xué)生考勤管理系統(tǒng)*"<<endl;cout<<"
************************************************************"<<endl;cout<<"
*
1.
錄入學(xué)生的缺課記錄*"<<endl;cout<<"/r
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 櫥柜燈光施工方案(3篇)
- 景區(qū)門票收入核算制度
- 2026屆河南省非凡吉名校創(chuàng)聯(lián)盟高三上英語期末檢測模擬試題含解析
- 2026廣東湛江市消防救援支隊(duì)政府專職消防員招錄54人備考題庫(第一期)及參考答案詳解一套
- 2026北京中關(guān)村第三小學(xué)永新分校招聘備考題庫(含答案詳解)
- 2026四川雅安市老干部活動(dòng)中心招聘1人備考題庫及答案詳解(新)
- 2026江西吉安市吉水縣綜合交通運(yùn)輸事業(yè)發(fā)展中心面向社會招聘司機(jī)及系統(tǒng)操作員2人備考題庫及1套完整答案詳解
- 2026山東煙臺市萊山區(qū)事業(yè)單位招聘備考題庫有完整答案詳解
- 琴行財(cái)務(wù)制度
- 法院加強(qiáng)財(cái)務(wù)制度
- 環(huán)境多因素交互導(dǎo)致慢性病共病的機(jī)制研究
- 2026湖南衡陽耒陽市公安局招聘75名警務(wù)輔助人員考試參考題庫及答案解析
- 2026年中共佛山市順德區(qū)委組織部佛山市順德區(qū)國有資產(chǎn)監(jiān)督管理局招聘備考題庫及參考答案詳解
- 多重耐藥菌醫(yī)院感染預(yù)防與控制技術(shù)指南完整版
- 2026年1月浙江省高考(首考)英語試題(含答案詳解)+聽力音頻+聽力材料
- 河南新鄉(xiāng)鶴壁安陽焦作2026年1月高三一模物理試題+答案
- 2026年食品安全快速檢測儀器項(xiàng)目可行性研究報(bào)告
- 2025年新版八年級上冊歷史期末復(fù)習(xí)必背歷史小論文范例
- 2026年及未來5年市場數(shù)據(jù)中國電能計(jì)量裝置市場競爭格局及投資戰(zhàn)略規(guī)劃報(bào)告
- 智慧物流背景下多式聯(lián)運(yùn)的協(xié)同發(fā)展與運(yùn)輸效能提升研究畢業(yè)論文答辯匯報(bào)
- 替人背債合同范本
評論
0/150
提交評論