高速公路计费系统设计 某出口收费处,对三种类型的车辆计费,大型车每公里0.5元,中型车辆每公里0.4元,小行车每公里0.3元,来车验条,乘公里数即得该收的款项。在交班时要统计出总数. 要求: 1,初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数 2,完成最低要求:建立一个只有三个入口的计费系统,并能进行统计计算,打印出报表。 3,进一步要求:完成任意个入口的通用系统
时间: 2024-04-01 12:35:07 浏览: 14
1. 总体设计
在总体设计上,可以采用以下的模块划分:
- 车辆管理模块:用于管理车辆信息,包括车牌号、车型等信息。
- 收费计算模块:根据车型和行驶里程计算收费金额。
- 收费记录模块:记录每一次收费的信息,包括车辆信息、收费金额、收费时间等。
- 报表统计模块:用于统计每个收费口的收费总额,生成报表供管理人员查看。
2. 最低要求
实现一个只有三个入口的计费系统,可以采用以下步骤:
- 创建车辆信息表,用于存储车辆信息,包括车牌号、车型。
- 创建收费记录表,用于记录每一次收费的信息,包括车辆信息、收费金额、收费时间。
- 创建计费函数,根据车型和行驶里程计算收费金额。
- 创建收费界面,输入车牌号和行驶里程,调用计费函数计算收费金额,并记录到收费记录表中。
- 创建报表统计函数,查询收费记录表,统计每个入口的收费总额,并生成报表。
3. 进一步要求
实现任意个入口的通用系统,可以采用以下步骤:
- 在每个收费口安装计费系统,并将收费记录保存到同一个数据库中。
- 在数据库中创建收费口表,用于记录每个收费口的信息,包括收费口编号、位置等信息。
- 修改收费记录表,增加收费口编号字段,用于记录每个收费记录的收费口。
- 修改报表统计函数,查询收费记录表和收费口表,统计每个收费口的收费总额,并生成报表。
- 设计一个管理界面,用于管理车辆信息、收费口信息和报表信息。
通过这些步骤,可以实现一个通用的高速公路计费系统,可以根据实际需求进行调整和优化。
相关问题
高速公路计费系统设计 某出口收费处,对三种类型的车辆计费,大型车每公里0.5元,中型车辆每公里0.4元,小行车每公里0.3元,来车验条,乘公里数即得该收的款项。在交班时要统计出总数. 要求: 1,初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数 2,完成最低要求:使用c语言
1. 总体设计
在总体设计上,可以采用以下的模块划分:
- 车辆管理模块:用于管理车辆信息,包括车牌号、车型等信息。
- 收费计算模块:根据车型和行驶里程计算收费金额。
- 收费记录模块:记录每一次收费的信息,包括车辆信息、收费金额、收费时间等。
- 报表统计模块:用于统计每个收费口的收费总额,生成报表供管理人员查看。
2. 最低要求
使用C语言实现一个只有三个入口的计费系统,可以采用以下步骤:
- 创建车辆信息结构体,包括车牌号、车型等信息。
- 创建收费记录结构体,记录每一次收费的信息,包括车辆信息、收费金额、收费时间等。
- 创建计费函数,根据车型和行驶里程计算收费金额。
- 创建收费界面,输入车牌号和行驶里程,调用计费函数计算收费金额,并记录到收费记录结构体中。
- 创建报表统计函数,查询收费记录结构体,统计每个入口的收费总额,并生成报表。
3. 人机对话界面
可以使用C语言的控制台界面实现人机对话界面,例如:
```
========= 欢迎使用高速公路计费系统 =========
请选择操作:
1. 收费
2. 报表统计
3. 退出
```
收费界面:
```
========= 收费界面 =========
请输入车牌号:粤A12345
请输入行驶里程(公里):50
该车应缴纳收费:25元
```
报表统计界面:
```
========= 报表统计界面 =========
收费口1收费总额:100元
收费口2收费总额:120元
收费口3收费总额:80元
```
4. 函数个数
根据上述总体设计,可以设计以下函数:
- 车辆信息管理函数:包括车牌号的添加、删除、修改等操作。
- 收费计算函数:根据车型和行驶里程计算收费金额。
- 收费记录函数:记录每一次收费的信息,包括车辆信息、收费金额、收费时间等。
- 报表统计函数:用于统计每个收费口的收费总额,生成报表供管理人员查看。
同时,还需要设计一些辅助函数,如界面显示函数、文件读写函数等。
以上就是使用C语言实现高速公路计费系统的基本思路。具体实现还需要根据实际情况进行调整和优化。
使用C语言实现高速公路计费系统 。对三种类型的车辆计费,大型车每公里0.5元,中型车辆每公里0.4元,小行车每公里0.3元,来车验条,乘公里数即得该收的款项。在交班时要统计出总数
以下是使用C语言实现高速公路计费系统的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_VEHICLES 1000 // 最大车辆数
#define MAX_ENTRY 3 // 最大收费口数
// 车辆类型
typedef enum {
Small,
Medium,
Large
} VehicleType;
// 车辆信息
typedef struct {
char license[10]; // 车牌号
VehicleType type; // 车型
} Vehicle;
// 收费记录
typedef struct {
char license[10]; // 车牌号
int distance; // 行驶里程
float fee; // 收费金额
int entry; // 收费口
} Record;
// 收费口信息
typedef struct {
int id; // 收费口编号
char location[20]; // 收费口位置
float total; // 总收费金额
} Entry;
// 车辆信息数组和收费记录数组
Vehicle vehicles[MAX_VEHICLES];
Record records[MAX_VEHICLES];
int vehicle_count = 0;
int record_count = 0;
// 收费口信息数组
Entry entries[MAX_ENTRY] = {
{1, "入口1", 0},
{2, "入口2", 0},
{3, "入口3", 0}
};
// 添加车辆信息
void add_vehicle() {
if (vehicle_count >= MAX_VEHICLES) {
printf("车辆信息已满,无法添加!\n");
return;
}
Vehicle vehicle;
printf("请输入车牌号:");
scanf("%s", vehicle.license);
printf("请输入车型(1:小型车,2:中型车,3:大型车):");
int type;
scanf("%d", &type);
vehicle.type = type - 1;
vehicles[vehicle_count++] = vehicle;
printf("车辆信息添加成功!\n");
}
// 删除车辆信息
void remove_vehicle() {
if (vehicle_count == 0) {
printf("车辆信息为空,无法删除!\n");
return;
}
char license[10];
printf("请输入要删除的车牌号:");
scanf("%s", license);
int i, j;
for (i = 0; i < vehicle_count; i++) {
if (strcmp(vehicles[i].license, license) == 0) {
for (j = i; j < vehicle_count - 1; j++) {
vehicles[j] = vehicles[j + 1];
}
vehicle_count--;
printf("车辆信息删除成功!\n");
return;
}
}
printf("没有找到对应的车辆信息!\n");
}
// 修改车辆信息
void modify_vehicle() {
if (vehicle_count == 0) {
printf("车辆信息为空,无法修改!\n");
return;
}
char license[10];
printf("请输入要修改的车牌号:");
scanf("%s", license);
int i;
for (i = 0; i < vehicle_count; i++) {
if (strcmp(vehicles[i].license, license) == 0) {
printf("请输入新的车型(1:小型车,2:中型车,3:大型车):");
int type;
scanf("%d", &type);
vehicles[i].type = type - 1;
printf("车辆信息修改成功!\n");
return;
}
}
printf("没有找到对应的车辆信息!\n");
}
// 计算收费金额
float calculate_fee(VehicleType type, int distance) {
float rate;
switch (type) {
case Small:
rate = 0.3;
break;
case Medium:
rate = 0.4;
break;
case Large:
rate = 0.5;
break;
}
return rate * distance;
}
// 收费
void charge() {
if (vehicle_count == 0) {
printf("车辆信息为空,无法收费!\n");
return;
}
char license[10];
printf("请输入车牌号:");
scanf("%s", license);
int distance;
printf("请输入行驶里程(公里):");
scanf("%d", &distance);
int i;
for (i = 0; i < vehicle_count; i++) {
if (strcmp(vehicles[i].license, license) == 0) {
float fee = calculate_fee(vehicles[i].type, distance);
printf("该车应缴纳收费:%g元\n", fee);
Record record;
strcpy(record.license, license);
record.distance = distance;
record.fee = fee;
printf("请选择收费口(1:入口1,2:入口2,3:入口3):");
scanf("%d", &record.entry);
records[record_count++] = record;
entries[record.entry - 1].total += fee;
printf("收费成功!\n");
return;
}
}
printf("没有找到对应的车辆信息!\n");
}
// 统计报表
void report() {
int i;
for (i = 0; i < MAX_ENTRY; i++) {
printf("收费口%d收费总额:%g元\n", entries[i].id, entries[i].total);
}
}
int main() {
int choice;
while (1) {
printf("========= 欢迎使用高速公路计费系统 =========\n");
printf("请选择操作:\n");
printf("1. 添加车辆信息\n");
printf("2. 删除车辆信息\n");
printf("3. 修改车辆信息\n");
printf("4. 收费\n");
printf("5. 报表统计\n");
printf("6. 退出\n");
printf("请选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_vehicle();
break;
case 2:
remove_vehicle();
break;
case 3:
modify_vehicle();
break;
case 4:
charge();
break;
case 5:
report();
break;
case 6:
return 0;
default:
printf("无效的操作!\n");
}
}
return 0;
}
```
这个示例代码实现了车辆信息的添加、删除、修改,收费计算,收费记录的添加和统计报表的功能。所有的数据都保存在内存中,没有涉及到文件读写。在实际应用时,可以根据需要进行调整和优化。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)