为一个信息系统编写一个声明,它用于记录每个汽车零售商的销售情况。每份销售
记录必须包括下列数据。字符串值的最大长度不包括其结尾的 NUL
顾客名字(customer’s name)
顾客地址(customer’s address)
模型(model
销售时可能出现三种不同类型的交易:全额现金销售、贷款销售和租赁。对于全额现
金销售,还必须保存附加信息:
#include <stdio.h>
#include <string.h>
typedef struct {
char customer_name[21];
char customer_address[41];
char model[21];
} CarSaleRecord;
typedef enum {
FULL_CASH,
LEASE,
LOAN
} TransactionType;
typedef struct {
float manufacturer_suggested_retail_price;
float actual_selling_price;
float sales_tax;
float licensing_fee;
} FullCashSaleInfo;
typedef struct {
float manufacturer_suggested_retail_price;
float actual_selling_price;
float down_payment;
float security_deposit;
float monthly_payment;
int lease_term;
} LeaseInfo;
typedef struct {
float manufacturer_suggested_retail_price;
float actual_selling_price;
float sales_tax;
float licensing_fee;
float down_payment;
int loan_duration;
float interest_rate;
float monthly_payment;
char name_of_bank[21];
} LoanInfo;
typedef union {
FullCashSaleInfo full_cash_sale_info;
LeaseInfo lease_info;
LoanInfo loan_info;
} AdditionalInfo;
typedef struct {
CarSaleRecord car_sale_record;
TransactionType transaction_type;
AdditionalInfo additional_info;
} SalesRecord;
int main() {
SalesRecord record;
strcpy(record.car_sale_record.customer_name, "张三");
strcpy(record.car_sale_record.customer_address, "北京市朝阳区");
strcpy(record.car_sale_record.model, "奥迪A4");
record.transaction_type = LOAN;
record.additional_info.full_cash_sale_info.manufacturer_suggested_retail_price = 300000;
record.additional_info.full_cash_sale_info.actual_selling_price = 280000;
record.additional_info.full_cash_sale_info.sales_tax = 20000;
record.additional_info.full_cash_sale_info.licensing_fee = 10000;
printf("客户姓名:%s\n", record.car_sale_record.customer_name);
printf("客户地址:%s\n", record.car_sale_record.customer_address);
printf("车型:%s\n", record.car_sale_record.model);
printf("交易类型:%d\n", record.transaction_type);
printf("制造商建议零售价:%f\n", record.additional_info.full_cash_sale_info.manufacturer_suggested_retail_price);
printf("实际售价:%f\n", record.additional_info.full_cash_sale_info.actual_selling_price);
printf("销售税:%f\n", record.additional_info.full_cash_sale_info.sales_tax);
printf("许可费:%f\n", record.additional_info.full_cash_sale_info.licensing_fee);
return 0;
}