Walter_水明 通过本文主要向大家介绍了机动车违章查询,机动车辆违章查询,机动车违章查询网,机动车违章,机动车违章查询系统等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
关键代码如下所示:
#include <iostream> #include <iomanip> #include <fstream> #include <string> #include <list> using namespace std; class Violation{ public: Violation(){points=fine=0; number=carNumber=tel=location=isSpot =police=camera=type=isTreated=treatmentDate=notes="";} Violation(string snumber,string sdate="",string scarNumber="",string stel="", string slocation="",int ipoints=-1,string sisSpot="", string spolice="",string scamera="",string itype="",int ifine=0, string sisTreated="",string streatmentDate="",string snotes="") :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){} bool operator==(const Violation& vltn); //查找用 friend bool compNumber(Violation& vltn1,Violation& vltn2); //编号比较规则 friend bool compDate(Violation& vltn1,Violation& vltn2); //日期比较规则 friend bool compCarNumber(Violation& vltn1,Violation& vltn2); //车牌号比较规则 friend bool compLocation(Violation& vltn1,Violation& vltn); //地点比较规则 friend bool compPoints(Violation& vltn1,Violation& vltn); //扣分比较规则 friend istream& operator>>(istream& input,Violation& vltn); friend ostream& operator<<(ostream& output,Violation& vltn); friend class List; friend int saveFile(); private: string number; //编号 string date; //日期 string carNumber; //车牌号 string tel; //联系电话- string location; //地点 int points; //扣分 string isSpot; //现场 string police; //现场执勤交警 string camera; //非现场摄像头编号 string type; //违章类别 int fine; //罚款 string isTreated; //是否处理 string treatmentDate; //处理日期 string notes; //备注 }; bool Violation::operator==(const Violation& vltn){ if(location==""||vltn.location=="") if(tel==""||vltn.tel=="") if(carNumber==""||vltn.carNumber=="") if(date==""||vltn.date=="") return number==vltn.number; else return date==vltn.date; else return carNumber==vltn.carNumber; else return tel==vltn.tel; else return location==vltn.location; } bool compNumber(Violation& vltn1,Violation& vltn2){ return vltn1.number>vltn2.number; } bool compDate(Violation& vltn1,Violation& vltn2){ return vltn1.date>vltn2.date; } bool compCarNumber(Violation& vltn1,Violation& vltn2){ return vltn1.carNumber<vltn2.carNumber; } bool compLocation(Violation& vltn1,Violation& vltn2){ return vltn1.location>vltn2.location; } bool compPoints(Violation& vltn1,Violation& vltn2){ return vltn1.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; return input; } 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; return output; } class List{ public: friend class User; int loadFile(); //读取文件 int saveFile(); //保存到文件 int insert(); //添加记录 int change(); //修改记录 int del(); //删除记录 int browse(); //浏览记录 int searchMenu(); //查询信息 int searchCarNumber(); //按车牌号 int searchDate(); //按日期查找 int searchTel(); //按电话查找 int searchLocation(); //按地点查询 int countMenu(); //统计信息 int countDate(); //按日期统计违章 int countCarNumber(); //按车牌统计违章 int countLocation(); //按地点统计违章 int countPoints(); //按扣分统计违章 static List* getList(); private: list <Violation> vltnlist; static List* m_list; List(){}; List(const List&){} List& operator=(const List&){} }; const char* filepath="violation.dat"; //指定数据文件路径 bool checkNumber(string s,int size){ if(s.size()!=size) return false; for(int i=0;i<size;i++) if(s[i]<'0'||s[i]>'9') return false; return true; } List* List::m_list=NULL; List* List::getList(){ if(NULL==m_list) m_list=new List; return m_list; } int List::loadFile(){ ifstream infile(filepath,ios::in); if(infile) for(;!infile.eof();){ Violation vltn;infile>>vltn; vltnlist.push_back(vltn); } infile.close(); return 0; } int List::saveFile(){ ofstream outfile(filepath,ios::out); list<Violation>::iterator it; 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(); return 0; } int List::insert(){ list<Violation>::iterator it; string number,date,carNumber,tel,location,isSpot,police,camera,type, isTreated,treatmentDate,notes; int points,fine; cout<<"请输入违章编号【放弃添加 0】【5位数字,如16384】:"; for(;;){ cin>>number;cin.sync(); if(number=="0") return 0; if(!checkNumber(number,5)) { cout<<"请输入有效编号:"; continue; } Violation l(number); it=find(vltnlist.begin(),vltnlist.end(),l); if(it!=vltnlist.end()) cout<<"编号已存在,请重新输入:"; else break; } cout<<"请输入违章日期【8位数字,如20160630】:"; while(1){ cin>>date;cin.sync(); if(!checkNumber(date,8)){ cout<<"请输入有效日期:"; continue; } else break; } cout<<"请输入违章车辆车牌号:";cin>>carNumber;cin.sync(); cout<<"请输入登记联系电话【11位数字,如13751516464】:"; while(1){ cin>>tel;cin.sync(); if(!checkNumber(tel,11)){ cout<<"请输入有效电话:"; continue; } else break; } cout<<"请输入违章地点:";cin>>location;cin.sync(); cout<<"请输入处罚扣分【0~12分】:"; while(1){ if(cin>>points){ cin.sync(); if(points<0||points>12){ cout<<"请输入有效扣分:"; continue; } else break; } 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; } else break; } 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<<"********************************************