本文主要是介绍物业维修管理系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#include<iostream>
#include<vector>
#include<cstdio>
#include<fstream>
#include<string>
#include <iomanip>
using namespace std;typedef struct Date
{int year;int mon;int day;
}Date;class Record
{
public:int floor;//楼号int house;//房号Date book;//预约时间Date actual;//实际维修时间char content[20];//维修内容float money;//收费float cost;//成本char name[20];//维修人char more[20];//备注
};class Manage
{
public:Manage();void Run();
private:void TotalRec();void SelectRec();void AltRec();void DelRec();void PrintAllRec();void NewRec();void Menu();void LoadFile();void SaveFile();vector<Record> rec;
};void Manage::TotalRec()
{int arr[100];int len=0,i;float summ=0,sumc=0;int count[100]={0};system("cls");if(rec.size()<=0){cout<<"无维修记录!"<<endl;system("pause");return;}vector<Record>::iterator it;for(it = rec.begin();it!=rec.end();it++){for(i=0;i<len;i++)//查找楼号是否记录{if(arr[i]==it->floor){count[i]++;break;}}if(i==len)//说明没有找到 没被记录过{arr[len]=it->floor;count[len]=1;len++;}summ+=it->money;sumc+=it->cost;}for(i=0;i<len;i++){cout<<"楼号:"<<arr[i]<<"维修记录数量:"<<count[i]<<endl;}cout<<endl;cout<<"总维修收费金额:"<<summ<<endl;cout<<"总材料成本金额:"<<sumc<<endl;system("pause");
}void Manage::SelectRec()
{int t1,t2;bool flag=true;Date d;system("cls");cout<<"请输入截止日期(year mon day):";cin>>d.year>>d.mon>>d.day;t1=d.year*10000 + d.mon*100 +d.day;//将日期转换成YYYYMMDD的形式 便于比较大小vector<Record>::iterator it;for(it = rec.begin();it!=rec.end();it++){t2=it->book.year*10000 + it->book.mon*100 + it->book.day;if(t2>t1){if(flag){cout<< std::left <<setw(10)<<"维修住户";cout<< std::left <<setw(14)<<"预约日期";cout<< std::left <<setw(14)<<"实际日期";cout<< std::left <<setw(10)<<"维修内容";cout<< std::left <<setw(10)<<"收费金额";cout<< std::left <<setw(10)<<"成本金额";cout<< std::left <<setw(10)<<"维修人";cout<< std::left <<setw(10)<<"备注"<<endl;}cout<< std::left <<setw(4)<<it->floor<<"-"<< std::left <<setw(4)<<it->house<<" ";cout<< std::left <<setw(4)<<it->book.year<<"-"<< std::left <<setw(2)<<it->book.mon<<"-"<< std::left <<setw(2)<<it->book.day<<" ";cout<< std::left <<setw(4)<<it->actual.year<<"-"<< std::left <<setw(2)<<it->actual.mon<<"-"<< std::left <<setw(2)<<it->actual.day<<" ";cout<< std::left <<setw(10)<<it->content;cout<< std::left <<setw(10)<<it->money;cout<< std::left <<setw(10)<<it->cost;cout<< std::left <<setw(10)<<it->name;cout<< std::left <<setw(10)<<it->more<<endl;flag=false;}}if(flag){cout<<"无该到期记录!"<<endl;}system("pause");
}//由于没有主键 用楼号+房号+实际维修日期作为候选键查询以及删除修改
void Manage::AltRec()
{int f,h;bool flag=true;Date d;system("cls");cout<<"请输入要修改的维修住户(楼号 房号):";cin>>f>>h;cout<<"请输入实际维修日期(year mon day):";cin>>d.year>>d.mon>>d.day;vector<Record>::iterator it;for(it = rec.begin();it!=rec.end();it++){if(it->floor==f && it->house==h &&it->actual.year==d.year &&it->actual.mon==d.mon && it->actual.day == d.day){cout<< std::left <<setw(10)<<"维修住户";cout<< std::left <<setw(14)<<"预约日期";cout<< std::left <<setw(14)<<"实际日期";cout<< std::left <<setw(10)<<"维修内容";cout<< std::left <<setw(10)<<"收费金额";cout<< std::left <<setw(10)<<"成本金额";cout<< std::left <<setw(10)<<"维修人";cout<< std::left <<setw(10)<<"备注"<<endl;cout<< std::left <<setw(4)<<it->floor<<"-"<< std::left <<setw(4)<<it->house<<" ";cout<< std::left <<setw(4)<<it->book.year<<"-"<< std::left <<setw(2)<<it->book.mon<<"-"<< std::left <<setw(2)<<it->book.day<<" ";cout<< std::left <<setw(4)<<it->actual.year<<"-"<< std::left <<setw(2)<<it->actual.mon<<"-"<< std::left <<setw(2)<<it->actual.day<<" ";cout<< std::left <<setw(10)<<it->content;cout<< std::left <<setw(10)<<it->money;cout<< std::left <<setw(10)<<it->cost;cout<< std::left <<setw(10)<<it->name;cout<< std::left <<setw(10)<<it->more<<endl;flag=false;break;}}if(flag){cout<<"修改失败!无该维修记录!"<<endl;}else{Record p;cout<<"请输入维修住户(楼号 房号):";cin>>p.floor>>p.house;cout<<"请输入维修预约日期(year mon day):";cin>>p.book.year>>p.book.mon>>p.book.day;cout<<"请输入实际维修日期(year mon day):";cin>>p.actual.year>>p.actual.mon>>p.actual.day;cout<<"请输入维修内容:";cin>>p.content;cout<<"请输入维修收费金额:";cin>>p.money;cout<<"请输入维修材料成本:";cin>>p.cost;cout<<"请输入维修人:";cin>>p.name;cout<<"请输入备注:";cin>>p.more;rec.push_back(p);//添加新记录rec.erase(it);//删除旧的记录cout<<"修改成功!"<<endl;}system("pause");
}//由于没有主键 用楼号+房号+实际维修日期作为候选键查询以及删除修改
void Manage::DelRec()
{int f,h;bool flag=true;Date d;system("cls");cout<<"请输入要删除的维修住户(楼号 房号):";cin>>f>>h;cout<<"请输入实际维修日期(year mon day):";cin>>d.year>>d.mon>>d.day;vector<Record>::iterator it;for(it = rec.begin();it!=rec.end();it++){if(it->floor==f && it->house==h &&it->actual.year==d.year &&it->actual.mon==d.mon && it->actual.day == d.day){cout<< std::left <<setw(10)<<"维修住户";cout<< std::left <<setw(14)<<"预约日期";cout<< std::left <<setw(14)<<"实际日期";cout<< std::left <<setw(10)<<"维修内容";cout<< std::left <<setw(10)<<"收费金额";cout<< std::left <<setw(10)<<"成本金额";cout<< std::left <<setw(10)<<"维修人";cout<< std::left <<setw(10)<<"备注"<<endl;cout<< std::left <<setw(4)<<it->floor<<"-"<< std::left <<setw(4)<<it->house<<" ";cout<< std::left <<setw(4)<<it->book.year<<"-"<< std::left <<setw(2)<<it->book.mon<<"-"<< std::left <<setw(2)<<it->book.day<<" ";cout<< std::left <<setw(4)<<it->actual.year<<"-"<< std::left <<setw(2)<<it->actual.mon<<"-"<< std::left <<setw(2)<<it->actual.day<<" ";cout<< std::left <<setw(10)<<it->content;cout<< std::left <<setw(10)<<it->money;cout<< std::left <<setw(10)<<it->cost;cout<< std::left <<setw(10)<<it->name;cout<< std::left <<setw(10)<<it->more<<endl;flag=false;break;}}if(flag){cout<<"删除失败!无该维修记录!"<<endl;}else{rec.erase(it);cout<<"删除成功!"<<endl;}system("pause");
}void Manage::PrintAllRec()
{system("cls");if(rec.size()<=0){cout<<"无维修记录!"<<endl;system("pause");return;}cout<< std::left <<setw(10)<<"维修住户";cout<< std::left <<setw(14)<<"预约日期";cout<< std::left <<setw(14)<<"实际日期";cout<< std::left <<setw(10)<<"维修内容";cout<< std::left <<setw(10)<<"收费金额";cout<< std::left <<setw(10)<<"成本金额";cout<< std::left <<setw(10)<<"维修人";cout<< std::left <<setw(10)<<"备注"<<endl;vector<Record>::iterator it;for(it = rec.begin();it!=rec.end();it++){cout<< std::left <<setw(4)<<it->floor<<"-"<< std::left <<setw(4)<<it->house<<" ";cout<< std::left <<setw(4)<<it->book.year<<"-"<< std::left <<setw(2)<<it->book.mon<<"-"<< std::left <<setw(2)<<it->book.day<<" ";cout<< std::left <<setw(4)<<it->actual.year<<"-"<< std::left <<setw(2)<<it->actual.mon<<"-"<< std::left <<setw(2)<<it->actual.day<<" ";cout<< std::left <<setw(10)<<it->content;cout<< std::left <<setw(10)<<it->money;cout<< std::left <<setw(10)<<it->cost;cout<< std::left <<setw(10)<<it->name;cout<< std::left <<setw(10)<<it->more<<endl;}system("pause");
}void Manage::Menu()
{system("cls");cout<<"1:增加维修记录"<<endl;cout<<"2:删除维修记录"<<endl;cout<<"3:修改维修记录"<<endl;cout<<"4:查询到期记录"<<endl;cout<<"5:统计维修记录"<<endl;cout<<"6:显示所有记录"<<endl;cout<<"0:退出"<<endl;cout<<"请输入选项:";
}void Manage::Run()
{string choice;do{Menu();cin>>choice;if(choice=="1"){NewRec();}else if(choice=="2"){DelRec();}else if(choice=="3"){AltRec();}else if(choice=="4"){SelectRec();}else if(choice=="5"){TotalRec();}else if(choice=="6"){PrintAllRec();}}while(choice!="0");SaveFile();
}void Manage::NewRec()
{Record p;system("cls");cout<<"请输入维修住户(楼号 房号):";cin>>p.floor>>p.house;cout<<"请输入维修预约日期(year mon day):";cin>>p.book.year>>p.book.mon>>p.book.day;cout<<"请输入实际维修日期(year mon day):";cin>>p.actual.year>>p.actual.mon>>p.actual.day;cout<<"请输入维修内容:";cin>>p.content;cout<<"请输入维修收费金额:";cin>>p.money;cout<<"请输入维修材料成本:";cin>>p.cost;cout<<"请输入维修人:";cin>>p.name;cout<<"请输入备注:";cin>>p.more;rec.push_back(p);cout<<"添加成功!"<<endl;system("pause");
}Manage::Manage()
{LoadFile();
}void Manage::LoadFile()
{Record p;ifstream fp("record.txt");if(fp.is_open()==false)return;fp.read((char*)&p,sizeof(Record));while(!fp.eof()){rec.push_back(p);fp.read((char*)&p,sizeof(Record));}fp.close();
}void Manage::SaveFile()
{vector<Record>::iterator it;ofstream fp("record.txt");if(fp.is_open()==false)return;for(it=rec.begin();it!=rec.end();it++){fp.write((char*)it,sizeof(Record));}fp.close();
}int main()
{Manage* m= new Manage();m->Run();return 0;
}
这篇关于物业维修管理系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!