您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 薪酬管理 > c++学生信息管理系统源代码
#includeiostream#includestring#includeiomanip#includelist#includefstream#includealgorithm#defineSPACE\t\t\tusingnamespacestd;structRecord{stringname;stringtel;public:friendostream&operator(ostream&os,constRecord*rec){returnosrec-nameSPACErec-telendl;};friendistream&operator(istream&is,Record*rec){isrec-name;isrec-tel;returnis;}staticboolcomp(stringpatten,inttype,Record*rec){switch(type){case0:{returnrec-name==patten;}break;case1:{returnrec-tel==patten;}break;}returnfalse;}staticboolisvan(Record*rec){return(rec-name==&&rec-tel==);}};classRecordList:publiclistRecord*{public:friendostream&operator(ostream&os,constRecordList&c_rl){RecordList::const_iteratorit=c_rl.begin();while(it!=c_rl.end()){os*it;it++;}returnos;}friendistream&operator(istream&is,RecordList&rl){RecordList::const_iteratorit;while(!is.eof()){Record*prec=newRecord;isprec;if(Record::isvan(prec))continue;rl.listRecord*::push_back(prec);}returnis;}voidclear();iteratorerase(iteratorpos);~RecordList(){this-clear();}};voidRecordList::clear(){RecordList::const_iteratorit=this-begin();while(it!=this-end()){delete(*it);it++;}this-listRecord*::clear();}RecordList::iteratorRecordList::erase(iteratorpos){delete(*pos);returnlistRecord*::erase(pos);}classAddressList{protected:RecordListrecList;public:typedefRecordList::iteratorIterator;//从通信录中寻找一个记录virtualIteratorfindRecord(stringpatten,inttype,Iteratorfrom);virtualvoidaddRecord(Record*rec);virtualvoidremoveRecord(Iteratorit);virtualvoideditRecord(Record*rec,Iteratorit);virtualvoidsaveRecords(ostream&os);virtualvoidloadRecords(istream&is);virtualvoidaddRecords(istream&is);virtual~AddressList();constintsize()const{return(int)recList.size();}constvoidclear(){recList.clear();}Iteratorbegin(){returnrecList.begin();}Iteratorend(){returnrecList.end();}};AddressList::IteratorAddressList::findRecord(stringpatten,inttype,Iteratorfrom){Iteratorit;it=from;while(it!=recList.end()){if(Record::comp(patten,type,*it)){returnit;}it++;}returnit;}voidAddressList::addRecord(Record*rec){recList.push_back(rec);}voidAddressList::removeRecord(Iteratorit){recList.erase(it);}voidAddressList::editRecord(Record*rec,Iteratorit){delete(*it);*it=rec;}voidAddressList::saveRecords(ostream&os){osrecList;}voidAddressList::loadRecords(istream&is){isrecList;}voidAddressList::addRecords(istream&is){}AddressList::~AddressList(){recList.clear();}classAddressBook:publicAddressList{protected:boolisModified;//通信录是否已被修改还未保存public:AddressBook();virtual~AddressBook();//开始通信录的用户界面操作virtualvoidstart();//菜单处理函数管理程序的用户界面操作virtualvoidhandleMenu();//显示记录virtualvoiddisplayRecords();//查询记录virtualvoidqueryRecord();//添加记录virtualvoidaddRecord();//保存记录virtualvoidsaveRecords();//读取记录virtualvoidloadRecords();//结束程序virtualvoidquit();//清空当前记录信息virtualvoidclear();protected://菜单选择函数charmenuSelect();//显示表头voiddispTable();};AddressBook::AddressBook(){}AddressBook::~AddressBook(){;}charAddressBook::menuSelect(){chara=0;cina;if(a=='y'||a=='Y'){a='1';}if(a=='n'||a=='N'){a='2';}returna;}voidAddressBook::start(){cout\n\t*****欢迎使用sjb版通讯录*****;handleMenu();}voidAddressBook::handleMenu(){cout\n\n\t\t\t--菜单管理--\n\n;cout\tA--添加人员纪录(AddRecord)\n\tF--查询纪录(FindRecord)\n\tD--显示纪录(DisplayRecords)\n\tL--从文本或标准输入流中加载纪录(LoadRecords)\n\tC--清空当前记录信息\n\tS--保存记录(SaveRecords)\n\tQ--结束程序(QUIT)\n;switch(menuSelect()){case'A':case'a':addRecord();break;case'F':case'f':queryRecord();break;case'D':case'd':displayRecords();break;case'L':case'l':loadRecords();break;case'C':case'c':clear();break;case'S':case's':saveRecords();break;case'Q':case'q':quit();break;}handleMenu();}voidAddressBook::displayRecords(){cout姓名SPACE电话endl;AddressList::saveRecords(cout);cout一共找到size()个对象。endl;cout1SPACE返回endl;cout2SPACE修改endl;cout3SPACE删除endl;switch(menuSelect()){case'1':break;case'2':{if(!size()){cout记录为0,无法修改。endl;break;}cout要修改第几个?1~size()endl;inti;cini;if(i1||isize()){break;}Record*prec=newRecord;cout姓名:'\n'电话:'\n';cinprec;Iteratorit=recList.begin();while(i!=1){it++;i--;}editRecord(prec,it);}break;case'3':{if(!size()){cout记录为0,无法修改。endl;break;}cout要删除第几个?1~size()endl;inti;cini;if(i1||isize()){break;}Iteratorit=recList.begin();while(i!=1){it++;i--;}removeRecord(it);}break;}}voidAddressBook::addRecord(){stringname,tel;cout\n输入名字:;cinname;cout输入电话:;cintel;Record*temp=newRecord;temp-name=name;temp-tel=tel;AddressList::addRecord(temp);cout是否继续(Y/N)endl;switch(menuSelect()){case'1':addRecord();break;case'2':break;}}voidAddressBook::queryRecord(){cout1SPACE按姓名查找endl;cout2SPACE按电话查找endl;inttype=-1;stringpatten;switch(menuSelect()){case'1':{type=0;cout请输入姓名endl;cinpatten;}break;case'2':{type=1;cout请输入电话号码endl;cinpatten;}break;}Iteratorit=begin();listIteratorli;cout姓名SPACE电话endl;while((it=findRecord(patten,type,it))!=end()){cout*it;li.push_back(it);it++;}cout一共找到li.size()个对象。endl;cout1SPACE返回endl;c
本文标题:c++学生信息管理系统源代码
链接地址:https://www.777doc.com/doc-4598330 .html