一、题目
汽车租借公司的管理
(1)问题描述
设计数据结构及算法完成某个汽车租借公司日常工作的组织与管理。该管理系统的基本管理对象为汽车,每台汽车用一个license number进行唯一标识。每个汽车存在三种可能状态:
·可以租借(available for rent)
·已借(rented)
·修理中(in repair)
其中在available队列中汽车应该依据汽车行驶的路程进行排序,行驶路程最少的汽车排在最前面。在rented队列中的汽车应依据其预期返回时间进行排序,排在最前的应是预期最早返回的汽车。
(2)课程设计目的
应用线性数据结构存储信息,并能够应用上面的基本操作实现事务管理。
(3)基本要求
①用三个链表组织三种状态的汽车。
②能够实现租借的日常事务:引入新车,租借,收费,修理等。
③租借收费应根据汽车行驶的路程及借去的时间综合计算得出,路程收费标准如下:
1.低于100Km收费20.00元
2.100Km以外的路程每Km收费0.15元
④汽车根据行驶的路程定期进行维护。
⑤还需实现辅助操作:汽车查询,打印全部信息,计算并打印收入、成本及收益。
⑥管理系统应有完整地界面(最好是图形化界面)。
(4)实现提示
主要集中在链表的基本操作上
二、主界面
三、源码
https://github.com/nasnan/CarCompany
#include<iostream>
#include<iomanip>
#include<fstream>
using namespace std;
struct allCarsNode
{
allCarsNode* next;
int license;
int ranMiles;
int status; //0:可用 1:已借 2:在修
int returnTime;
int repairedTime;
double income;
allCarsNode(const int& license, int& ranMiles, int& status, int& returnTime, int& repairedTime, double& income, allCarsNode *next)
{
this->license = license;
this->ranMiles = ranMiles;
this->status = status;
this->returnTime = returnTime;
this->repairedTime = repairedTime;
this->next = next;
this->income = income;
}
};
class allcars
{
public:
allcars(int initialCapacity = 10);
void addNewCar(int license = 0, int ranMiles = 0, int status = 0, int returnTime = 0, int repairedTime = 0, double income = 0);
void changeCarstatus(int license, int ranMiles, int status, int returnTime,int repairedTime, double income);
void erase(int license);
void prin();
int listSize;
allCarsNode* firstNode;
};
allcars::allcars(int initialCapacity)
{
if (initialCapacity < 1)
cout << "Illegalparametervalues.\n";
firstNode = NULL;
listSize = 0;
}
//状态改为已借
void allcars::changeCarstatus(int license, int ranMiles, int status, int returnTime,int repairedTime, double income)
{
allCarsNode *findNode = firstNode;
for (int i = 0; i < listSize && findNode->license != license; i++)
findNode = findNode->next;
findNode->status = status;
findNode->ranMiles = ranMiles;
findNode->income = income;
findNode->returnTime = returnTime;
}
//所有车 加新车
void allcars::addNewCar(int license, int ranMiles, int status, int returnTime, int repairedTime, double income)
{
firstNode = new allCarsNode(license, ranMiles, status, returnTime, repairedTime, income, firstNode);
listSize++;
}
//删除
void allcars::e