#include <iostream>
#include <fstream>
#include <string.h>
#include <stdlib.h>
#include <iomanip>
#define MAXACCOUNTNUMBER 500
using namespace std;
//欢迎界面
void welcome();
//主界面
void mainFrame();
//查询
void bid();
//租车
void rentCar();
//还车
void backCar();
//读取文件
void Read() ;
//写入文件
void Save();
struct Account
{
long busNumber; //编号
char busName[20]; //车型
char busPwd[10]; //车牌号
double money; //押金
int days; //限制天数
double price; //日租价
char flag[7]; //当前状态
};
//所有车辆
Account array[MAXACCOUNTNUMBER];
//车辆的数量
int size=0;
int main()
{
Read();
int i;
char loginName[20];
char loginPwd[20];
welcome();
for(i=0;i<3;i++)
{
cout<<endl<<"请输入用户名:";
cin>>loginName;
cout<<endl<<"请输入六位登陆密码:";
cin>>loginPwd;
if(strcmp(loginName,"admin")==0&&strcmp(loginPwd,"123456")==0)
{
mainFrame();
break;
}
else
{
cout<<endl<<"用户名或密码输入错误"<<endl;
cout<<endl<<"您还有"<<2-i<<"次机会"<<endl<<endl;
if(2-i==0){
cout<<"请办理密码业务后再来!"<<endl;
}
}
}
return 0;
}
void welcome()
{
cout<<" 欢迎光临汽车租赁系统"<<endl;
}
void mainFrame()
{
int order=0;
cout<<endl<<endl<<" 欢迎租赁本公司的车辆"<<endl;
cout<<endl;
cout<<" 1.查询所有车辆"<<endl;
cout<<" 2.归还已租车辆"<<endl;
cout<<" 3.租借现有车辆"<<endl;
cout<<" 4.退出租赁系统"<<endl;
cout<<endl<<"请输入操作指令: ";
cin>>order;
switch(order)
{
case 1:
bid();
case 2:
backCar();
case 3:
rentCar();
case 4:
Save();
exit(1);
break;
default:
cout<<endl;
cout<<"您输入的指令有误! 系统退出!!!"<<endl;
cout<<endl;
Save();
exit(1);
break;
}
}
void bid()
{
cout<<endl<<" 库存车辆信息总览"<<endl;
cout<<endl;
cout<<"编号 车型 车牌号 押金 限制天数 日租价 当前状态"<<endl;
cout<<"----------------------------------------------------------------"<<endl;
for(int i=0;i<size;i++) //依次写入文件
{
cout<<array[i].busNumber<<'\t'<<array[i].busName<<'\t'<<array[i].busPwd<<'\t'<<array[i].money<<'\t'<<array[i].days<<'\t'<<'\t'<<array[i].price<<'\t'<<array[i].flag<<endl;
}
mainFrame();
}
//租车
void rentCar()
{
int num=0;
char str;
cout<<"请输入要租的车编号:"<<endl;
cin>>num;
cout<<array[num].busNumber<<'\t'<<array[num].busName<<'\t'<<array[num].busPwd<<'\t'<<array[num].money<<'\t'<<array[num].days<<'\t'<<'\t'<<array[num].price<<'\t'<<array[num].flag<<endl;
if(strcmp(array[num].flag,"未租出")==0){
cout<<"确认租?y or n"<<endl;
cout<<"确认租?y or n"<<endl;
cin>>str;
if(str=='y'||str=='Y'){
strcpy(array[num].flag,"已租出");
cout<<"操作成功!"<<endl;
mainFrame();
}
else if(str=='n'||str=='N'){
mainFrame();
}else{
cout<<"输入有误,返回主菜单"<<endl;
mainFrame();
}
}
else{
cout<<"所租的车辆有误!返回主菜单"<<endl;
mainFrame();
}
}
//还车
void backCar()
{
int num=0;
char str;
cout<<"请输入要还的车编号:"<<endl;
cin>>num;
if(strcmp(array[num].flag,"已租出")==0){
cout<<array[num].busNumber<<'\t'<<array[num].busName<<'\t'<<array[num].busPwd<<'\t'<<array[num].money<<'\t'<<array[num].days<<'\t'<<'\t'<<array[num].price<<'\t'<<array[num].flag<<endl;
cout<<"确认还?y or n"<<endl;
cin>>str;
if(str=='y'||str=='Y'){
strcpy(array[num].flag,"未租出");
cout<<"操作成功!"<<endl;
mainFrame();
}
else if(str=='n'||str=='N'){
mainFrame();
}else{
cout<<"输入有误,返回主菜单"<<endl;
mainFrame();
}
}
else{
cout<<"所还车辆错误!返回主菜单"<<endl;
mainFrame();
}
}
//读取文件
void Read()
{
ifstream infile("车辆数据.txt",ios::in); //文件目标
if(!infile)
{
cerr<<endl<<"车辆数据文件不存在!!!"<<endl<<endl;
exit(1);
}
while(!infile.eof()) //依次检索文件
{
infile>>array[size].busNumber>>array[size].busName>>array[size].busPwd>>array[size].money>>array[size].days>>array[size].price>>array[size].flag;
size++;
}
size-=1;
infile.close();
}
//保存文件
void Save()
{
ofstream outfile("车辆数据.txt",ios::out);
if(!outfile)
{
cerr<<endl<<"文件不存在!"<<endl;
exit(1);
}
for(int i=0;i<size;i++) //依次写入文件
{
outfile<<array[size].busNumber<<" "<<array[size].busName<<" "<<array[size].busPwd<<" "<<array[size].money<<" "<<array[size].days<<array[size].price<<array[size].flag<<endl;
}
outfile.close();
cout<<endl<<"祝您心情愉快!"<<endl;
cout<<endl<<"欢迎您下次使用!"<<endl;
cout<<endl;
exit(1);
}
输出结果:
总结:
以前刚开始学习时是很久才做出来的东西,现在考试CCAT2个小时之内写出来。感觉到了进步。