大一上C语言期末考试
1.题目要求
****租车公司,现有小轿车,货车,客车三种车型,因业务需要求量增加,需开发一套软件程序,实施租车业务,提高工作效率。
一、功能要求
- 操作界面,用户可以自行选择。
- 登录界面分为用户登录和管理员登录。
- 用户功能
(1)显示该车行所有车型信息
(2)选择租车的类型,根据提示选择具体的信息。例如
请选择你要租赁的汽车类型:1.轿车 2,客车 3.货车
输入:1
请选择你要租赁的汽车品牌:1.宝马 2.奔驰 3.大众 4.丰田
输入:1
请选择你要租赁的天数:
输入:10
(3)计算租金,输出租赁的所有信息(车型,车牌,租金) - 管理员功能
(1) 新加入可租用的车辆信息
(2) 删除可租用的车辆信息
(3) 更改车辆信息
(4) 计算营业额 - 功能用函数实现
以下是程序实现 编译器DEV C++ 5.7.1
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
#define MAX 1000
float zong;
struct Car {
char type[10];
char brand[10];
char c_Num[10];
float rent;
};
struct carbooks{
struct Car CarArr[MAX]={
{"轿车","宝马730","川B66666",800},
{"轿车","奔驰s","川B88888",1000},
{"轿车","大众途观","川B66699",700},
{"轿车","丰田皇冠","川B88899",650},
{"客车","金杯 16座","川B88900",1000},
{"客车","金杯 34座","川B88901",1600},
{"客车","宇通 16座","川B88902",1100},
{"客车","宇通 34座","川B88903",1800},
{"卡车","东风 5t","川B88904",500},
{"卡车","东风 10t","川B88905",1200},
{"卡车","解放 5t","川B88906",500},
{"卡车","解放 10t","川B88907",1200},};
int c_size;
};
void addCar(carbooks *abs){
if (abs->c_size == MAX) {
printf("数量已满");
return ;
}
else {
float rent;
printf("输入车辆类型: (如轿车,客车,货车)\n");
scanf("%s",&abs->CarArr[abs->c_size].type);
printf("输入车辆品牌:\n");
scanf("%s",&abs->CarArr[abs->c_size].brand);
printf("输入车辆牌号:\n");
scanf("%s",&abs->CarArr[abs->c_size].c_Num);
printf("输入车辆日租金:\n");
scanf("%f",&rent);
abs->CarArr[abs->c_size].rent = rent;
abs->c_size++;
printf("添加完成\n");
}
}
void showCar(carbooks *abs){
if(abs->c_size==0){
printf("无车辆信息\n");
}
else {
printf("*****************以下是目前车行拥有的车辆信息*****************\n");
for (int i = 0; i < abs->c_size; i++) {
printf("车型:%s\t品牌:%s\t车牌:%s\t日租金:%.1f\t\n",abs->CarArr[i].type,abs->CarArr[i].brand,abs->CarArr[i].c_Num,abs->CarArr[i].rent);
}
printf("************************************************************\n");
}
}
int testCar(carbooks *abs,char t[10]) {
for (int i = 0; i < abs->c_size; i++) {
if (strcmp(t,abs->CarArr[i].brand)==0) {
return i;
}
}
return -1;
}
void changeCar(carbooks *abs){
printf("请输入要修改的车辆品牌全称\n");
printf("如:宝马730,金杯 16座\n");
char name[10];
scanf("%s",&name);
int ret = testCar(abs,name);
if(ret != -1){
printf("输入类别: (如轿车、客车、卡车)\n");
scanf("%s",&abs->CarArr[ret].type);
printf("输入车辆品牌:(如宝马730、金杯 16座)\n");
scanf("%s",&abs->CarArr[ret].brand);
printf("输入车辆牌号:\n");
scanf("%s",&abs->CarArr[ret].c_Num);
printf("输入车辆日租金:\n");
scanf("%f",&abs->CarArr[ret].rent);
printf("修改完成\n");
}else{
printf("未找到此车\n");
}
}
void deleteCar(carbooks *abs){
printf("输入要删除车辆的品牌全称\n");
printf("如:宝马730,金杯 16座\n");
char name[10];
scanf("%s",&name);
int ret = testCar(abs,name);
if(ret != -1){
for(int i=ret;i< abs->c_size;i++){
abs->CarArr[i] = abs->CarArr[i+1];
}
abs->c_size--;
printf("删除成功\n");}
else{
printf("无该车辆\n");
}
system("pause");
}
int rentsum(int rent,int days){
float sum;
if(days>150){
sum=days*rent*7/10;
}else if(days>30){sum=days*rent*8/10;
}else if(days>7){
sum=days*rent*9/10;
}else if(days>0 &&days<7){
sum=days*rent;
}
zong+=sum;
return sum;
}
int rentsum1(int rent,int days){
float sum;
if(days>=150){
sum=days*rent*6/10;
}else if(days>=30 &&days<150){
sum=days*rent*7/10;
}else if(days>=7 &&days<30){
sum=days*rent*8/10;
}else if(days>=3 &&days<7){
sum=days*rent*9/10;
}else if(days>0&&days<3){
sum=days*rent;
}
zong+=sum;
return sum;
}
int rentsum2(int rent,int days){
float sum;
if(days>=150){
sum=days*rent*7/10;
}else if(days>=30 &&days<150){
sum=days*rent*7.5/10;
}else if(days>=7 &&days<30){
sum=days*rent*8.5/10;
}else if(days>=3 &&days<7){
sum=days*rent*9.5/10;
}else if(days>0&&days<3){
sum=days*rent;
}
zong+=sum;
return sum;
}
void usermenu(carbooks *abs){
showCar(abs);
int chose;
printf("请选择您要租赁的汽车类型\n");
printf("1、轿车 2、客车 3、货车\n");
char t[10]={"轿车"};char t2[10]={"客车"};
scanf("%d",&chose);
switch(chose){
case 1:
for(int i=0;i< abs->c_size;i++)
if(strcmp(t,abs->CarArr[i].type)==0){
printf("车型:%s\t品牌:%s\t车牌:%s\t日租金:%.1f\t\n",abs->CarArr[i].type,abs->CarArr[i].brand,abs->CarArr[i].c_Num,abs->CarArr[i].rent);
}
printf(" 折扣:天数大于七天九折\n 天数大于三十天八折\n 天数大于150天七折\n");
printf("请选择您要租赁的汽车品牌:\n");
printf("1、宝马 2、奔驰 3、大众 4、丰田\n");
int chose;
scanf("%d",&chose);
switch(chose){
case 1:
for(int i=0;i< abs->c_size;i++){
char str1[10]={"宝马730"};
if(strcmp(abs->CarArr[i].brand,str1)==0){
printf("品牌:%s\t车牌:%s\t日租金:%.1f\t\n",abs->CarArr[i].brand,abs->CarArr[i].c_Num,abs->CarArr[i].rent);
int days;int rent=abs->CarArr[i].rent;
printf("请输入要租用的天数:\n");
scanf("%d",&days);
float sum=rentsum(rent,days);
printf("租金为%.1f 租用的车辆:%s 车牌:%s ",sum,abs->CarArr[i].brand,abs->CarArr[i].c_Num);
}
}
break;
case 2:
for(int i=0;i< abs->c_size;i++){
char str1[10]={"奔驰s"};
if(strcmp(abs->CarArr[i].brand,str1)==0){
printf("品牌:%s\t车牌:%s\t日租金:%.1f\t\n",abs->CarArr[i].brand,abs->CarArr[i].c_Num,abs->CarArr[i].rent);
int days;int rent=abs->CarArr[i].rent;
printf("请输入要租用的天数:\n");
scanf("%d",&days);
float sum=rentsum(rent,days);
printf("租金为%.1f 租用的车辆:%s 车牌:%s ",sum,abs->CarArr[i].brand,abs->CarArr[i].c_Num);
}
}
break;
case 3:
for(int i=0;i< abs->c_size;i++){
char str1[10]={"大众途观"};
if(strcmp(abs->CarArr[i].brand,str1)==0){
printf("品牌:%s\t车牌:%s\t日租金:%.1f\t\n",abs->CarArr[i].brand,abs->CarArr[i].c_Num,abs->CarArr[i].rent);
int days;int rent=abs->CarArr[i].rent;
printf("请输入要租用的天数:\n");
scanf("%d",&days);
float sum=rentsum(rent,days);
printf("租金为%.1f 租用的车辆:%s 车牌:%s ",sum,abs->CarArr[i].brand,abs->CarArr[i].c_Num);
}
}
break;
case 4:
char str1[10]={"丰田皇冠"};
for(int i=0;i< abs->c_size;i++){
if(strcmp(abs->CarArr[i].brand,str1)==0){
printf("品牌:%s\t车牌:%s\t日租金:%.1f\t\n",abs->CarArr[i].brand,abs->CarArr[i].c_Num,abs->CarArr[i].rent);
int days;int rent=abs->CarArr[i].rent;
printf("请输入要租用的天数:\n");
scanf("%d",&days);
float sum=rentsum(rent,days);
printf("租金为%.1f 租用的车辆:%s 车牌:%s ",sum,abs->CarArr[i].brand,abs->CarArr[i].c_Num);
}
}
break;
}
break;
case 2:
for(int i=0;i< abs->c_size;i++)
if(strcmp(t2,abs->CarArr[i].type)==0){
printf("车型:%s\t品牌:%s\t车牌:%s\t日租金:%.1f\t\n",abs->CarArr[i].type,abs->CarArr[i].brand,abs->CarArr[i].c_Num,abs->CarArr[i].rent);
}
printf(" 折扣:天数>=3天九折\n 天数>=7天八折\n 天数>=30天七折\n 天数>=150天六折\n");
printf("请选择您要租赁的汽车品牌:\n");
printf("1、金杯2、宇通 \n");
int chose2;
scanf("%d",&chose2);
switch(chose2){
case 1:
for(int i=0;i<abs->c_size;i++){
char str1[10]={"金杯"};char str2[10];
strncpy(str2,abs->CarArr[i].brand,4);
if(strcmp(str1,str2)==0){
printf("品牌:%s\t车牌:%s\t日租金:%.1f\t\n",abs->CarArr[i].brand,abs->CarArr[i].c_Num,abs->CarArr[i].rent);
}
}
printf("请选择座位数:1、16座 2、34座\n");
int chose4;
scanf("%d",&chose4);switch(chose4){
case 1:
for(int i=0;i< abs->c_size;i++){
char str1[10]={"金杯 16座"};
if(strcmp(abs->CarArr[i].brand,str1)==0){
printf("品牌:%s\t车牌:%s\t日租金:%.1f\t\n",abs->CarArr[i].brand,abs->CarArr[i].c_Num,abs->CarArr[i].rent);
int days;int rent=abs->CarArr[i].rent;
printf("请输入要租用的天数:\n");
scanf("%d",&days);
float sum=rentsum1(rent,days);
printf("租金为%.1f 租用的车辆:%s 车牌:%s ",sum,abs->CarArr[i].brand,abs->CarArr[i].c_Num);
}
}
break;
case 2:
for(int i=0;i< abs->c_size;i++){
char str2[10]={"金杯 34座"};
if(strcmp(abs->CarArr[i].brand,str2)==0){
printf("品牌:%s\t车牌:%s\t日租金:%.1f\t\n",abs->CarArr[i].brand,abs->CarArr[i].c_Num,abs->CarArr[i].rent);
int days;int rent=abs->CarArr[i].rent;
printf("请输入要租用的天数:\n");
scanf("%d",&days);
float sum=rentsum1(rent,days);
printf("租金为%.1f 租用的车辆:%s 车牌:%s ",sum,abs->CarArr[i].brand,abs->CarArr[i].c_Num);
}
}
break;
}
break;
case 2:
for(int i=0;i<abs->c_size;i++){
char str1[10]={"宇通"};char str2[10];
strncpy(str2,abs->CarArr[i].brand,4);
if(strcmp(str1,str2)==0){
printf("品牌:%s\t车牌:%s\t日租金:%.1f\t\n",abs->CarArr[i].brand,abs->CarArr[i].c_Num,abs->CarArr[i].rent);
}
}int chose3;
printf("请选择座位数:1、16座 2、34座\n");
scanf("%d",&chose3);
switch(chose3){
case 1:
for(int i=0;i< abs->c_size;i++){
char str1[10]={"宇通 16座"};
if(strcmp(abs->CarArr[i].brand,str1)==0){
printf("品牌:%s\t车牌:%s\t日租金:%.1f\t\n",abs->CarArr[i].brand,abs->CarArr[i].c_Num,abs->CarArr[i].rent);
int days;int rent=abs->CarArr[i].rent;
printf("请输入要租用的天数:\n");
scanf("%d",&days);
float sum=rentsum1(rent,days);
printf("租金为%.1f 租用的车辆:%s 车牌:%s ",sum,abs->CarArr[i].brand,abs->CarArr[i].c_Num);
}
}
break;
case 2:
for(int i=0;i< abs->c_size;i++){
char str2[10]={"宇通 34座"};
if(strcmp(abs->CarArr[i].brand,str2)==0){
printf("品牌:%s\t车牌:%s\t日租金:%.1f\t\n",abs->CarArr[i].brand,abs->CarArr[i].c_Num,abs->CarArr[i].rent);
int days;int rent=abs->CarArr[i].rent;
printf("请输入要租用的天数:\n");
scanf("%d",&days);
float sum=rentsum1(rent,days);
printf("租金为%.1f 租用的车辆:%s 车牌:%s ",sum,abs->CarArr[i].brand,abs->CarArr[i].c_Num);
}
}
break;
}
break;
}
break;
case 3:
for(int i=0;i< abs->c_size;i++)
if(strcmp(t2,abs->CarArr[i].type)==0){
printf("车型:%s\t品牌:%s\t车牌:%s\t日租金:%.1f\t\n",abs->CarArr[i].type,abs->CarArr[i].brand,abs->CarArr[i].c_Num,abs->CarArr[i].rent);
}
printf(" 折扣:天数>=3天九折\n 天数>=7天八折\n 天数>=30天七折\n 天数>=150天六折\n");
printf("请选择您要租赁的汽车品牌:\n");
printf("1、东风 2、解放 \n");
int chose3;
scanf("%d",&chose3);
switch(chose3){
case 1:
for(int i=0;i<abs->c_size;i++){
char str1[10]={"东风"};char str2[10];
strncpy(str2,abs->CarArr[i].brand,4);
if(strcmp(str1,str2)==0){
printf("品牌:%s\t车牌:%s\t日租金:%.1f\t\n",abs->CarArr[i].brand,abs->CarArr[i].c_Num,abs->CarArr[i].rent);
}
}
printf("请选择吨位数:1、5t 2、10t\n");
int chose4;
scanf("%d",&chose4);switch(chose4){
case 1:
for(int i=0;i< abs->c_size;i++){
char str1[10]={"东风 5t"};
if(strcmp(abs->CarArr[i].brand,str1)==0){
printf("品牌:%s\t车牌:%s\t日租金:%.1f\t\n",abs->CarArr[i].brand,abs->CarArr[i].c_Num,abs->CarArr[i].rent);
int days;int rent=abs->CarArr[i].rent;
printf("请输入要租用的天数:\n");
scanf("%d",&days);
float sum=rentsum2(rent,days);
printf("租金为%.1f 租用的车辆:%s 车牌:%s ",sum,abs->CarArr[i].brand,abs->CarArr[i].c_Num);
}
}
break;
case 2:
for(int i=0;i< abs->c_size;i++){
char str2[10]={"东风 10t"};
if(strcmp(abs->CarArr[i].brand,str2)==0){
printf("品牌:%s\t车牌:%s\t日租金:%.1f\t\n",abs->CarArr[i].brand,abs->CarArr[i].c_Num,abs->CarArr[i].rent);
int days;int rent=abs->CarArr[i].rent;
printf("请输入要租用的天数:\n");
scanf("%d",&days);
float sum=rentsum2(rent,days);
printf("租金为%.1f 租用的车辆:%s 车牌:%s ",sum,abs->CarArr[i].brand,abs->CarArr[i].c_Num);
}
}
break;
break;
}
break;
case 2:
for(int i=0;i<abs->c_size;i++){
char str1[10]={"解放"};char str2[10];
strncpy(str2,abs->CarArr[i].brand,4);
if(strcmp(str1,str2)==0){
printf("品牌:%s\t车牌:%s\t日租金:%.1f\t\n",abs->CarArr[i].brand,abs->CarArr[i].c_Num,abs->CarArr[i].rent);
}
}int chose3;
printf("请选择吨位数:1、5t 2、10t\n");
scanf("%d",&chose3);
switch(chose3){
case 1:
for(int i=0;i< abs->c_size;i++){
char str1[10]={"解放 5t"};
if(strcmp(abs->CarArr[i].brand,str1)==0){
printf("品牌:%s\t车牌:%s\t日租金:%.1f\t\n",abs->CarArr[i].brand,abs->CarArr[i].c_Num,abs->CarArr[i].rent);
int days;int rent=abs->CarArr[i].rent;
printf("请输入要租用的天数:\n");
scanf("%d",&days);
float sum=rentsum1(rent,days);
printf("租金为%.1f 租用的车辆:%s 车牌:%s ",sum,abs->CarArr[i].brand,abs->CarArr[i].c_Num);
}
}
break;
case 2:
for(int i=0;i< abs->c_size;i++){
char str2[10]={"解放 10t"};
if(strcmp(abs->CarArr[i].brand,str2)==0){
printf("品牌:%s\t车牌:%s\t日租金:%.1f\t\n",abs->CarArr[i].brand,abs->CarArr[i].c_Num,abs->CarArr[i].rent);
int days;int rent=abs->CarArr[i].rent;
printf("请输入要租用的天数:\n");
scanf("%d",&days);
float sum=rentsum1(rent,days);
printf("租金为%.1f 租用的车辆:%s 车牌:%s ",sum,abs->CarArr[i].brand,abs->CarArr[i].c_Num);
}
}
break;
break;
}
}
}
}
void AdminMenu(carbooks *abs) {
printf("*************************\n");
printf(" 1 新加入可租用的车辆信息\n") ;
printf(" 2 删除可租用的车辆信息\n") ;
printf(" 3 更改车辆信息\n") ;
printf(" 4 计算营业额 \n");
printf(" 5 显示目前所有车辆信息\n");
printf("*************************\n");
int chose;
scanf("%d",&chose);
switch(chose){
case 1:
addCar(abs);
break;//加车结束
case 2:
deleteCar(abs);
break;//删车结束
case 3:
changeCar(abs);
break;//更改结束
case 4:
printf("营业额为:%.1f\n",zong);
break;
case 5:
showCar(abs);
break;
}//switch结束
}//admin函数结束
//1、主界面 欢迎进入租车系统 请登录
int main(){
carbooks abs;
abs.c_size=12;
int chose;
printf("\n欢迎进入租车系统 \n");
while(true){
printf("选择账户登录:\n");
printf("1、用户 2、管理员 0、退出\n");
scanf("%d",&chose);
switch(chose){
case 1:
usermenu(&abs);
system("pause");
system("CLS");
//用户
break;
case 2:
AdminMenu(&abs);
system("pause");
system("CLS");
break; //管理员
case 0:
system("pause");
return 0;
break;
}
}
return 0;
}
//END