基于C++语言实现机动车违章处罚管理系统
关键代码如下所示:
#include<iostream> #include<iomanip> #include<fstream> #include<string> #include<list> usingnamespacestd; classViolation{ public: Violation(){points=fine=0; number=carNumber=tel=location=isSpot =police=camera=type=isTreated=treatmentDate=notes="";} Violation(stringsnumber,stringsdate="",stringscarNumber="",stringstel="", stringslocation="",intipoints=-1,stringsisSpot="", stringspolice="",stringscamera="",stringitype="",intifine=0, stringsisTreated="",stringstreatmentDate="",stringsnotes="") :number(snumber),date(sdate),carNumber(scarNumber),tel(stel), location(slocation),points(ipoints),isSpot(sisSpot),police(spolice), camera(scamera),type(itype),fine(ifine),isTreated(sisTreated), treatmentDate(streatmentDate),notes(snotes){} booloperator==(constViolation&vltn);//查找用 friendboolcompNumber(Violation&vltn1,Violation&vltn2);//编号比较规则 friendboolcompDate(Violation&vltn1,Violation&vltn2);//日期比较规则 friendboolcompCarNumber(Violation&vltn1,Violation&vltn2);//车牌号比较规则 friendboolcompLocation(Violation&vltn1,Violation&vltn);//地点比较规则 friendboolcompPoints(Violation&vltn1,Violation&vltn);//扣分比较规则 friendistream&operator>>(istream&input,Violation&vltn); friendostream&operator<<(ostream&output,Violation&vltn); friendclassList; friendintsaveFile(); private: stringnumber;//编号 stringdate;//日期 stringcarNumber;//车牌号 stringtel;//联系电话- stringlocation;//地点 intpoints;//扣分 stringisSpot;//现场 stringpolice;//现场执勤交警 stringcamera;//非现场摄像头编号 stringtype;//违章类别 intfine;//罚款 stringisTreated;//是否处理 stringtreatmentDate;//处理日期 stringnotes;//备注 }; boolViolation::operator==(constViolation&vltn){ if(location==""||vltn.location=="") if(tel==""||vltn.tel=="") if(carNumber==""||vltn.carNumber=="") if(date==""||vltn.date=="") returnnumber==vltn.number; elsereturndate==vltn.date; elsereturncarNumber==vltn.carNumber; elsereturntel==vltn.tel; elsereturnlocation==vltn.location; } boolcompNumber(Violation&vltn1,Violation&vltn2){ returnvltn1.number>vltn2.number; } boolcompDate(Violation&vltn1,Violation&vltn2){ returnvltn1.date>vltn2.date; } boolcompCarNumber(Violation&vltn1,Violation&vltn2){ returnvltn1.carNumber<vltn2.carNumber; } boolcompLocation(Violation&vltn1,Violation&vltn2){ returnvltn1.location>vltn2.location; } boolcompPoints(Violation&vltn1,Violation&vltn2){ returnvltn1.points>vltn2.points; } istream&operator>>(istream&input,Violation&vltn){ input>>vltn.number>>vltn.date>>vltn.carNumber>>vltn.tel>>vltn.location >>vltn.points>>vltn.isSpot>>vltn.police>>vltn.camera>>vltn.type >>vltn.fine>>vltn.isTreated>>vltn.treatmentDate>>vltn.notes; returninput; } ostream&operator<<(ostream&output,Violation&vltn){ output<<setw(6)<<vltn.number <<setw(9)<<vltn.date <<setw(9)<<vltn.carNumber <<setw(12)<<vltn.tel <<setw(11)<<vltn.location <<setw(5)<<vltn.points <<setw(9)<<vltn.isSpot <<setw(13)<<vltn.police <<setw(17)<<vltn.camera <<setw(11)<<vltn.type <<setw(5)<<vltn.fine <<setw(9)<<vltn.isTreated <<setw(9)<<vltn.treatmentDate <<setw(33)<<vltn.notes<<endl; returnoutput; } classList{ public: friendclassUser; intloadFile();//读取文件 intsaveFile();//保存到文件 intinsert();//添加记录 intchange();//修改记录 intdel();//删除记录 intbrowse();//浏览记录 intsearchMenu();//查询信息 intsearchCarNumber();//按车牌号 intsearchDate();//按日期查找 intsearchTel();//按电话查找 intsearchLocation();//按地点查询 intcountMenu();//统计信息 intcountDate();//按日期统计违章 intcountCarNumber();//按车牌统计违章 intcountLocation();//按地点统计违章 intcountPoints();//按扣分统计违章 staticList*getList(); private: list<Violation>vltnlist; staticList*m_list; List(){}; List(constList&){} List&operator=(constList&){} }; constchar*filepath="violation.dat";//指定数据文件路径 boolcheckNumber(strings,intsize){ if(s.size()!=size)returnfalse; for(inti=0;i<size;i++) if(s[i]<'0'||s[i]>'9')returnfalse; returntrue; } List*List::m_list=NULL; List*List::getList(){ if(NULL==m_list)m_list=newList; returnm_list; } intList::loadFile(){ ifstreaminfile(filepath,ios::in); if(infile) for(;!infile.eof();){ Violationvltn;infile>>vltn; vltnlist.push_back(vltn); } infile.close(); return0; } intList::saveFile(){ ofstreamoutfile(filepath,ios::out); list<Violation>::iteratorit; for(it=vltnlist.begin();it!=vltnlist.end();it++) outfile<<endl<<it->number<<''<<it->date<<''<<it->carNumber<<'' <<it->tel<<''<<it->location<<''<<it->points<<''<<it->isSpot<<'' <<it->police<<''<<it->camera<<''<<it->type<<''<<it->fine<<'' <<it->isTreated<<''<<it->treatmentDate<<''<<it->notes; outfile.close(); return0; } intList::insert(){ list<Violation>::iteratorit; stringnumber,date,carNumber,tel,location,isSpot,police,camera,type, isTreated,treatmentDate,notes; intpoints,fine; cout<<"请输入违章编号【放弃添加0】【5位数字,如16384】:"; for(;;){ cin>>number;cin.sync(); if(number=="0")return0; if(!checkNumber(number,5)){ cout<<"请输入有效编号:"; continue; } Violationl(number); it=find(vltnlist.begin(),vltnlist.end(),l); if(it!=vltnlist.end()) cout<<"编号已存在,请重新输入:"; elsebreak; } cout<<"请输入违章日期【8位数字,如20160630】:"; while(1){ cin>>date;cin.sync(); if(!checkNumber(date,8)){ cout<<"请输入有效日期:"; continue; } elsebreak; } cout<<"请输入违章车辆车牌号:";cin>>carNumber;cin.sync(); cout<<"请输入登记联系电话【11位数字,如13751516464】:"; while(1){ cin>>tel;cin.sync(); if(!checkNumber(tel,11)){ cout<<"请输入有效电话:"; continue; } elsebreak; } cout<<"请输入违章地点:";cin>>location;cin.sync(); cout<<"请输入处罚扣分【0~12分】:"; while(1){ if(cin>>points){ cin.sync(); if(points<0||points>12){ cout<<"请输入有效扣分:"; continue; } elsebreak; } else{ cin.clear();cin.sync(); cout<<"请输入有效扣分:"; continue; } } cout<<"请输入是否现场【是1】:";cin>>isSpot;cin.sync(); if(isSpot=="1"){ cout<<"请输入现场执勤交警:";cin>>police;cin.sync(); isSpot="是";camera="现场"; } else{ cout<<"请输入非现场摄像头编号【6位数字,如646464】:"; while(1){ cin>>camera;cin.sync(); if(!checkNumber(camera,6)){ cout<<"请输入有效编号:"; continue; } elsebreak; } isSpot="否";police="非现场"; } cout<<"*******************************************************"<<endl; cout<<"*┌------------违章类别-------------请输入---------┐*"<<endl; cout<<"*||*"<<endl; cout<<"*|◆超速1|*"<<endl; cout<<"*|◆酒驾2|*"<<endl; cout<<"*|◆闯红灯3|*"<<endl; cout<<"*|◆违规变道4|*"<<endl; cout<<"*|◆未系安全带5|*"<<endl; cout<<"*|◆超载6|*"<<endl; cout<<"*||*"<<endl; cout<<"*└------------------------------------------------┘*"<<endl; cout<<"*******************************************************"<<endl; cout<<"请选择违章类别:"; intMark=1; while(Mark){ charn;cin>>n;cin.sync(); switch(n){ case'1':type="超速";Mark=0;break; case'2':type="酒驾";Mark=0;break; case'3':type="闯红灯";Mark=0;break; case'4':type="违规变道";Mark=0;break; case'5':type="未系安全带";Mark=0;break; case'6':type="超载";Mark=0;break; default:cout<<"输入有误,请重新输入:"; } } cout<<"请输入罚款金额【0~5000元】:"; while(1){ if(cin>>fine){ cin.sync(); if(fine<0||fine>50000){ cout<<"请输入有效金额:"; continue; } elsebreak; } else{ cin.clear();cin.sync(); cout<<"请输入有效金额:"; continue; } } cout<<"请输入是否处理【是1】:";cin>>isTreated;cin.sync(); if(isTreated=="1"){ cout<<"请输入处理日期【8位数字,如20160630】:";//cin>>treatmentDate;cin.sync(); while(1){ cin>>treatmentDate;cin.sync(); if(!checkNumber(treatmentDate,8)){ cout<<"请输入有效日期:"; continue; } elsebreak; } isTreated="是"; } else{ isTreated="否";treatmentDate="未处理"; } cout<<"请输入备注【无0】:";cin>>notes;cin.sync(); if(notes=="0")notes="无"; Violationvltn(number,date,carNumber,tel,location,points,isSpot,police,camera, type,fine,isTreated,treatmentDate,notes); vltnlist.push_back(vltn); saveFile(); cout<<"车辆违章信息添加成功!";getchar(); return0; } intList::change(){ list<Violation>::iteratorit; if(!vltnlist.size()){ cout<<"还没有记录,不能修改!"<<endl;getchar(); return0; } stringnumber,date,carNumber,tel,location,isSpot,police,camera,type, isTreated,treatmentDate,notes; intpoints,fine; browse(); cout<<"请输入想要修改的记录编号【放弃0】:"; cin>>number;cin.sync(); if(number=="0")return0; Violationvltn(number); it=find(vltnlist.begin(),vltnlist.end(),vltn); if(it==vltnlist.end()){ cout<<"此编号不存在!";getchar(); return0; } while(1){ system("cls"); cout<<"当前信息请输入"<<endl; cout<<"违章编号:"<<setw(17)<<(*it).number<<"1"<<endl <<"违章日期:"<<setw(17)<<(*it).date<<"2"<<endl <<"车辆车牌号:"<<setw(17)<<(*it).carNumber<<"3"<<endl <<"登记联系电话:"<<setw(17)<<(*it).tel<<"4"<<endl <<"违章地点:"<<setw(17)<<(*it).location<<"5"<<endl <<"处罚扣分:"<<setw(17)<<(*it).points<<"6"<<endl <<"是否现场:"<<setw(17)<<(*it).isSpot<<endl <<"现场执勤交警:"<<setw(17)<<(*it).police<<"7"<<endl <<"非现场摄像头编号:"<<setw(17)<<(*it).camera<<"8"<<endl <<"违章类别:"<<setw(17)<<(*it).type<<"9"<<endl <<"罚款金额:"<<setw(17)<<(*it).fine<<"a"<<endl <<"是否处理:"<<setw(17)<<(*it).isTreated<<"b"<<endl <<"处理日期:"<<setw(17)<<(*it).treatmentDate<<"c"<<endl <<"备注:"<<endl<<setw(34)<<(*it).notes<<"d"<<endl; cout<<"请选择要修改的条目【放弃修改0】:"; intMark=1; while(Mark){ charn;cin>>n;cin.sync(); switch(n){ case'0':return0; case'1':cout<<"请输入违章编号【5位数字,如16384】:";//cin>>(*it).number;cin.sync(); for(;;){ cin>>number;cin.sync(); if(!checkNumber(number,5)){ cout<<"请输入有效编号:"; continue; } Violationl(number); list<Violation>::iteratornit; nit=find(vltnlist.begin(),vltnlist.end(),l); if(nit!=vltnlist.end()) cout<<"编号已存在,请重新输入:"; else{ (*it).number=number;break; } } Mark=0;break; case'2':cout<<"请输入违章日期【8位数字,如20160630】:";//cin>>(*it).date;cin.sync(); while(1){ cin>>date;cin.sync(); if(!checkNumber(date,8)){ cout<<"请输入有效日期:"; continue; } else{ (*it).date=date;break; } } Mark=0;break; case'3':cout<<"请输入车辆车牌号:";cin>>(*it).carNumber;cin.sync(); Mark=0;break; case'4':cout<<"请输入登记联系电话:";//cin>>(*it).tel;cin.sync(); while(1){ cin>>tel;cin.sync(); if(!checkNumber(tel,11)){ cout<<"请输入有效电话【11位数字,如13751516464】:"; continue; } else{ (*it).tel=tel;break; } } Mark=0;break; case'5':cout<<"请输入违章地点:";cin>>(*it).location;cin.sync(); Mark=0;break; case'6':cout<<"请输入处罚扣分【0~12分】:";//cin>>(*it).points;cin.sync(); while(1){ if(cin>>points){ cin.sync(); if(points<0||points>12){ cout<<"请输入有效扣分:"; continue; } else{ (*it).points=points;break; } } else{ cin.clear();cin.sync(); cout<<"请输入有效扣分:"; continue; } } Mark=0;break; case'7':cout<<"请输入现场执勤交警:";cin>>(*it).police;cin.sync(); (*it).isSpot="是";(*it).camera="现场"; Mark=0;break; case'8':cout<<"请输入非现场摄像头编号【6位数字,如646464】:";//cin>>(*it).camera;cin.sync(); while(1){ cin>>camera;cin.sync(); if(!checkNumber(camera,6)){ cout<<"请输入有效编号:"; continue; } else{ (*it).camera=camera;break; } } (*it).isSpot="否";(*it).police="非现场"; Mark=0;break; case'9':{ cout<<"*******************************************************"<<endl; cout<<"*┌------------违章类别-------------请输入---------┐*"<<endl; cout<<"*||*"<<endl; cout<<"*|◆超速1|*"<<endl; cout<<"*|◆酒驾2|*"<<endl; cout<<"*|◆闯红灯3|*"<<endl; cout<<"*|◆违规变道4|*"<<endl; cout<<"*|◆未系安全带5|*"<<endl; cout<<"*|◆超载6|*"<<endl; cout<<"*||*"<<endl; cout<<"*└------------------------------------------------┘*"<<endl; cout<<"*******************************************************"<<endl; cout<<"请选择违章类别:"; intMark1=1; while(Mark1){ charn1;cin>>n1;cin.sync(); switch(n1){ case'1':(*it).type="超速";Mark1=0;break; case'2':(*it).type="酒驾";Mark1=0;break; case'3':(*it).type="闯红灯";Mark1=0;break; case'4':(*it).type="违规变道";Mark1=0;break; case'5':(*it).type="未系安全带";Mark1=0;break; case'6':(*it).type="超载";Mark1=0;break; default:cout<<"输入有误,请重新输入:"; } } Mark=0;break; } case'a':cout<<"请输入罚款金额【0~5000元】:";//cin>>(*it).fine;cin.sync(); while(1){ if(cin>>fine){ cin.sync(); if(fine<0||fine>50000){ cout<<"请输入有效金额:"; continue; } else{ (*it).fine=fine;break; } } else{ cin.clear();cin.sync(); cout<<"请输入有效金额:"; continue; } } Mark=0;break; case'b':cout<<"请输入是否处理【是1】:";cin>>(*it).isTreated;cin.sync(); if((*it).isTreated=="1"){ cout<<"输入处理日期:";//cin>>(*it).treatmentDate;cin.sync(); while(1){ cin>>treatmentDate;cin.sync(); if(!checkNumber(treatmentDate,8)){ cout<<"请输入有效日期:"; continue; } else{ (*it).treatmentDate=treatmentDate;break; } } (*it).isTreated="是"; } else{ (*it).isTreated="否";(*it).treatmentDate="未处理"; } Mark=0;break; case'c':cout<<"请输入处理日期【8位数字,如20160630】:";//cin>>(*it).treatmentDate;cin.sync(); while(1){ cin>>treatmentDate;cin.sync(); if(!checkNumber(treatmentDate,8)){ cout<<"请输入有效日期:"; continue; } else{ (*it).treatmentDate=treatmentDate;break; } } Mark=0;break; case'd':cout<<"请输入备注:";cin>>(*it).notes;cin.sync(); Mark=0;break; default:cout<<"输入有误,请重新输入:"; } } saveFile(); cout<<"修改成功!"<<endl <<"继续修改请输入任意键,修改完毕请输入0:"; charch;cin>>ch;cin.sync(); if(ch=='0')return0; } } intList::del(){ list<Violation>::iteratorit; if(!vltnlist.size()){ cout<<"还没有记录,不能删除!"<<endl;getchar(); return0; } stringnumber; browse(); cout<<"请输入想要删除的编号【放弃0】:"; cin>>number;cin.sync(); if(number=="0")return0; Violationvltn(number); it=find(vltnlist.begin(),vltnlist.end(),vltn); if(it==vltnlist.end()){ cout<<"此编号不存在!";getchar(); return0; } vltnlist.erase(it); if(!vltnlist.size())remove(filepath); elsesaveFile(); cout<<"删除记录成功!";getchar(); return0; } intList::browse(){ list<Violation>::iteratorit; if(!vltnlist.size()){ cout<<"还没有记录!"<<endl;getchar(); return0; } vltnlist.sort(compNumber);//按编号降序排列 cout<<"当前共有"<<vltnlist.size()<<"条记录,已按编号降序排列:"<<endl <<"编号日期车牌号联系电话地点扣分是否现场现场执勤交警非现场摄像头编号违章类别罚款是否处理处理日期备注"<<endl; for(it=vltnlist.begin();it!=vltnlist.end();it++) cout<<*it; getchar(); return0; } intList::searchMenu(){ if(!vltnlist.size()){ cout<<"还没有记录,不能查询!"<<endl;getchar(); return0; } while(1) { system("cls"); cout<<"*******************************************************"<<endl; cout<<"*★机动车违章处罚管理系统★*"<<endl; cout<<"**"<<endl; cout<<"*******************************************************"<<endl; cout<<"*┌-------------------查询菜单---------------------┐*"<<endl; cout<<"*||*"<<endl; cout<<"*|查询方式请输入|*"<<endl; cout<<"*|◆按日期查询1|*"<<endl; cout<<"*|◆按车牌号查询2|*"<<endl; cout<<"*|◆按电话查询3|*"<<endl; cout<<"*|◆按地点查询4|*"<<endl; cout<<"*||*"<<endl; cout<<"*└------------------------------------------------┘*"<<endl; cout<<"*******************************************************"<<endl; cout<<"*●返回主菜单0*"<<endl; cout<<"*******************************************************"<<endl; cout<<"请选择查询方式:"; intMark=1; while(Mark){ charn;cin>>n;cin.sync(); switch(n) { case'1':searchDate();Mark=0;break; case'2':searchCarNumber();Mark=0;break; case'3':searchTel();Mark=0;break; case'4':searchLocation();Mark=0;break; case'0':return0; default:cout<<"输入有误,请重新输入:"; } } } vltnlist.sort(compNumber); return0; getchar();return0; } intList::searchDate(){ list<Violation>::iteratorit; stringdate; cout<<"请输入日期:";cin>>date;cin.sync(); Violationvltn("",date); it=find(vltnlist.begin(),vltnlist.end(),vltn); if(it!=vltnlist.end()){ cout<<"已找到日期为"<<date<<"的违章记录:"<<endl <<"编号日期车牌号联系电话地点扣分是否现场现场执勤交警非现场摄像头编号违章类别罚款是否处理处理日期备注"<<endl <<*it; for(it++;it!=vltnlist.end();it++) if(*it==vltn)cout<<*it; } elsecout<<"没有该日期的违章记录!"; getchar();return0; } intList::searchCarNumber(){ list<Violation>::iteratorit; stringcarNumber; cout<<"请输入车牌号:";cin>>carNumber;cin.sync(); Violationvltn("","",carNumber); it=find(vltnlist.begin(),vltnlist.end(),vltn); if(it!=vltnlist.end()){ cout<<"已找到车牌号为"<<carNumber<<"的违章记录:"<<endl <<"编号日期车牌号联系电话地点扣分是否现场现场执勤交警非现场摄像头编号违章类别罚款是否处理处理日期备注"<<endl <<*it; for(it++;it!=vltnlist.end();it++) if(*it==vltn)cout<<*it; } elsecout<<"没有该车牌号的违章记录!"; getchar();return0; } intList::searchTel(){ list<Violation>::iteratorit; stringtel; cout<<"请输入联系电话:";cin>>tel;cin.sync(); Violationvltn("","","",tel); it=find(vltnlist.begin(),vltnlist.end(),vltn); if(it!=vltnlist.end()){ cout<<"已找到联系电话为"<<tel<<"的违章记录:"<<endl <<"编号日期车牌号联系电话地点扣分是否现场现场执勤交警非现场摄像头编号违章类别罚款是否处理处理日期备注"<<endl <<*it; for(it++;it!=vltnlist.end();it++) if(*it==vltn)cout<<*it; } elsecout<<"没有该联系电话的违章记录!"; getchar();return0; } intList::searchLocation(){ list<Violation>::iteratorit; stringlocation; cout<<"请输入地点:";cin>>location;cin.sync(); Violationvltn("","","","",location); it=find(vltnlist.begin(),vltnlist.end(),vltn); if(it!=vltnlist.end()){ cout<<"已找到地点为"<<location<<"的违章记录:"<<endl <<"编号日期车牌号联系电话地点扣分是否现场现场执勤交警非现场摄像头编号违章类别罚款是否处理处理日期备注"<<endl <<*it; for(it++;it!=vltnlist.end();it++) if(*it==vltn)cout<<*it; } elsecout<<"没有该地点的违章记录!"; getchar();return0; } intList::countMenu(){ list<Violation>::iteratorit; if(!vltnlist.size()){ cout<<"还没有记录,不能统计!"<<endl;getchar(); return0; } while(1) { system("cls"); cout<<"*******************************************************"<<endl; cout<<"**"<<endl; cout<<"*★机动车违章处罚管理系统★*"<<endl; cout<<"**"<<endl; cout<<"*******************************************************"<<endl; cout<<"*┌--------------------统计菜单--------------------┐*"<<endl; cout<<"*||*"<<endl; cout<<"*|统计方式请输入|*"<<endl; cout<<"*|◆按日期统计违章数量1|*"<<endl; cout<<"*|◆按车牌号统计违章次数2|*"<<endl; cout<<"*|◆按地点统计违章数量3|*"<<endl; cout<<"*|◆显示处罚>=12分的记录4|*"<<endl; cout<<"*||*"<<endl; cout<<"*└------------------------------------------------┘*"<<endl; cout<<"*******************************************************"<<endl; cout<<"*●返回主菜单0*"<<endl; cout<<"*******************************************************"<<endl; cout<<"请选择统计方式:"; intMark=1; while(Mark){ charn;cin>>n;cin.sync(); switch(n) { case'1':countDate();Mark=0;break; case'2':countCarNumber();Mark=0;break; case'3':countLocation();Mark=0;break; case'4':countPoints();Mark=0;break; case'0':return0; default:cout<<"输入有误,请重新输入:"; } } } return0; getchar();return0; } intList::countDate(){ list<Violation>::iteratorit; vltnlist.sort(compDate); intsumVltn=0;stringy,m1,m2,date1,date2; cout<<"输入日期范围:"<<endl; cout<<"输入年份:";cin>>y;cin.sync(); cout<<"输入起始月份:";cin>>m1;cin.sync(); cout<<"输入结束月份:";cin>>m2;cin.sync(); date1=y+m1;date2=y+m2; for(it=vltnlist.begin();it!=vltnlist.end();it++){ if((*it).date>=date1&&(*it).date<=date2)sumVltn++; } cout<<"该段时间内违章数量为:"<<sumVltn;//getchar(); //vltnlist.push_back(Violation("cutme")); //it=vltnlist.begin(); /* cout<<"已按月份统计违章数量:"<<endl <<"违章日期违章数量"<<endl; intsumVltn=0;stringmouth=((*it).date).substr(4,2),date=(*it).date.substr(0,4); for(it=vltnlist.begin();it!=vltnlist.end();it++) if((*it).date!=""){ if(mouth!=((*it).date).substr(4,2)){ cout<<(*it).date.substr(0,4)<<"年"<<mouth<<"月"<<setw(9)<<sumVltn<<endl; sumVltn=1;mouth=(*it).date.substr(4,2);date=(*it).date.substr(0,4); } else{ sumVltn++; } } else{ cout<<date<<"年"<<mouth<<"月"<<setw(9)<<sumVltn<<endl; }*/ //vltnlist.pop_back(); getchar();return0; } intList::countCarNumber(){ list<Violation>::iteratorit; vltnlist.sort(compCarNumber); vltnlist.push_back(Violation("cutme")); it=vltnlist.begin(); cout<<"已按车牌号统计违章次数:"<<endl <<"车牌号违章次数"<<endl; stringcarNumber=(*it).carNumber;intsumVltn=0; for(it=vltnlist.begin();it!=vltnlist.end();it++) if(carNumber!=(*it).carNumber){ cout<<setw(9)<<carNumber<<setw(9)<<sumVltn<<endl; carNumber=(*it).carNumber;sumVltn=1; } elsesumVltn++; vltnlist.pop_back(); getchar();return0; } intList::countLocation(){ list<Violation>::iteratorit; vltnlist.sort(compLocation); vltnlist.push_back(Violation("cutme")); it=vltnlist.begin(); stringlocation=(*it).location;intsumVltn=0; cout<<"已按地点统计违章数量:"<<endl <<"地点违章数量"<<endl; for(it=vltnlist.begin();it!=vltnlist.end();it++) if(location!=(*it).location){ cout<<setw(11)<<location<<setw(9)<<sumVltn<<endl; location=(*it).location;sumVltn=1; } elsesumVltn++; vltnlist.pop_back(); getchar();return0; } intList::countPoints(){ list<Violation>::iteratorit; vltnlist.sort(compCarNumber); vltnlist.push_back(Violation("cutme")); it=vltnlist.begin(); stringcarNumber=(*it).carNumber,tel=(*it).tel; intsumPoints=0; cout<<"已显示处罚>=12分的违章记录:"<<endl <<"车牌号联系电话"<<endl; for(it=vltnlist.begin();it!=vltnlist.end();it++) if(carNumber!=(*it).carNumber){ if(sumPoints>11) cout<<setw(9)<<carNumber<<setw(12)<<tel<<endl; carNumber=(*it).carNumber;sumPoints=(*it).points;tel=(*it).tel; } elsesumPoints+=(*it).points; vltnlist.pop_back(); getchar();return0; } intmenu(); intmain(){ List*myList=List::getList(); myList->loadFile(); menu(); myList->saveFile(); return0; } intmenu(){ while(1) { system("cls"); cout<<"*******************************************************"<<endl; cout<<"**"<<endl; cout<<"*★机动车违章处罚管理系统★*"<<endl; cout<<"**"<<endl; cout<<"*******************************************************"<<endl; cout<<"*┌---------------------主菜单---------------------┐*"<<endl; cout<<"*||*"<<endl; cout<<"*|功能请输入|*"<<endl; cout<<"*|◆添加违章记录1|*"<<endl; cout<<"*|◆修改违章记录2|*"<<endl; cout<<"*|◆删除违章记录3|*"<<endl; cout<<"*|◆浏览违章记录4|*"<<endl; cout<<"*|◆查询违章记录5|*"<<endl; cout<<"*|◆统计违章记录6|*"<<endl; cout<<"*||*"<<endl; cout<<"*└------------------------------------------------┘*"<<endl; cout<<"*******************************************************"<<endl; cout<<"*●退出管理系统0*"<<endl; cout<<"*******************************************************"<<endl; cout<<"请选择功能:"; intMark=1; while(Mark){ charn;cin>>n;cin.sync(); List*myList=List::getList(); switch(n) { case'1':myList->insert();Mark=0;break; case'2':myList->change();Mark=0;break; case'3':myList->del();Mark=0;break; case'4':myList->browse();Mark=0;break; case'5':myList->searchMenu();Mark=0;break; case'6':myList->countMenu();Mark=0;break; case'0':exit(0); default:cout<<"输入有误,请重新输入:"; } } } return0; }
以上代码是基于C++语言实现机动车违章处罚管理系统的关键代码,代码附有注释,有不明白的地方欢迎给我留言,小编会及时回复大家的,大家可以更加需求适当的添加修改删除。