C语言实现车辆出租管理系统

 更新时间:2019年01月29日 11:12:43   作者:Zenith_Lee  
这篇文章主要为大家详细介绍了C语言实现车辆出租管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

这个项目是我今年的C语言课设。做这个项目一个人用了一天的时间来完成,整体将近700行,量不是很多,所以也没用多文件什么的,当然也是采用了模块化设计的思路,在代码中写了几个函数来实现特定的功能。

以下是这个项目的一些要求和全部源码。

一、软件开发目的

该软件主要是使用C语言设计开发一个简单的车辆租赁管理系统,实现租赁信息的查询、修改、删除、添加以及订单的查询等功能。

二、数据结构

程序中采用结构体数组存储租赁信息。租赁结构体成员包括:订单号、车牌号、费用。数组的长度不超过100。

三、软件功能说明

1.租赁信息的录入和保存:

输入租赁信息包括:订单号、终止、车牌号、费用。还车前费用为0。在录入数据的同时,系统将对信息的合法性进行检验,若录入了不合法的数据系统应作出提示,并且要求重新输入。

2.显示单条租赁信息:

将租赁信息在屏幕上列表输出。要求先显示提示信息“订单号、终止、车牌号、费用”,然后再显示租赁信息,每行显示一条租赁信息。

3.查询单条租赁信息

输入终止进行查询,输出符合条件的租赁信息,输出订单号、终止、车牌号、费用。

4.查询每辆车的租赁费用:

输入车牌号进行查询,输出该车所有租赁的总费用。输出车牌号、总费用。

5.添加租赁信息

输入新的租赁信息,将新的信息插原租赁信息清单中,并将新的列表输出,以方便用户确认。

6.修改、删除租赁信息

通过终止对某条租赁信息进行进行修改和删除,并将租赁信息列表输出,以方便用户确认。

7.统计:

(1)统计输出当月订单总金额
(2)统计输出订单金额最高的车牌号

8.退出系统,结束任务。

以下是该程序的全部代码

#include<stdio.h>
#include<stdlib.h>
#include<windows.h> 
#include<conio.h>
#include<string.h>

HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
int loop = 0;

int menu();
int menu_2();
int menu_3();
void gotoxy();
void HideCursor();
void InsertInformation();
void PrintInformation();
void IdSearch();
void PlateNumber();
void ExitSystem();
void ReviseInformation();
void DeleteInformation();
void AddInformation();
void MoneySum(); 
void ChampionCar();

struct information{
 int theOrderNumber;
 char IdNumber[20];
 char PlateNumber[10];
 double Cost;
}car[999999];

int key;

int main(){
 HideCursor();
 menu();
 key = menu();
 switch(key){
 case 1:
  InsertInformation();
  break;
 case 2:
  PrintInformation();
  break;
 case 3:
  menu_2(); 
  switch(menu_2()){
  case 1:
   MoneySum(); 
   break;
  case 2:
   ChampionCar();
   break;
  case 3:
   system("cls");
   main();
   break;
  case 4:
   ExitSystem();
   break;
  }
  break;
 case 4:
  ReviseInformation();
  break;
 case 5:
  DeleteInformation(); 
  break;
 case 6:
  AddInformation();
  break;
 case 7:
  menu_3(); 
  switch(menu_3()){
  case 1:
   MoneySum();
   break;
  case 2:
   ChampionCar(); 
   break;
  case 3:
   system("cls");
   main();
   break;
  case 4:
   ExitSystem();
   break;
  }
  break;
 case 8:
  ExitSystem();
  break;
 }
 return 0;
}

void gotoxy(short x, short y) {
 COORD coord = { x,y };/*定义结构体变量coord*/
 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}

void HideCursor() {
 CONSOLE_CURSOR_INFO cursor_info = { 1,0 };
 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}

int menu(void){
 int i,choose;
 gotoxy(50,5);
 for(i = 0;i < 20 ; i++){
 printf("-");
 }
 for(i = 0;i <5; i++){
 gotoxy(49 - 2 * i,6 + i);
 printf("/");
 }
 for(i = 0;i < 50;i++){
 gotoxy(25+i,10); 
 printf("-");
 } 
 for(i = 0;i < 5;i++){
 gotoxy(25,11+i);
 printf("|");
 }
 gotoxy(35,13);
 printf("欢迎使用汽车租赁管理系统");
 gotoxy(40,15);
 printf("[1]信息录入");
 gotoxy(40,16);
 printf("[2]信息显示");
 gotoxy(40,17);
 printf("[3]查询信息");
 gotoxy(40,18);
 printf("[4]修改信息");
 gotoxy(40,19);
 printf("[5]删除信息");
 gotoxy(40,20);
 printf("[6]追加信息");
 gotoxy(40,21);
 printf("[7]统计信息");
 gotoxy(40,22);
 printf("[8]退出");
 gotoxy(40,26);
 printf("Zenith 版权所有");
 gotoxy(40,23);
 printf("请选择(1-8):"); 
 scanf("%d",&choose); 
 while(choose<1 || choose>8){
 printf("请输入范围为1-8的整数");
 gotoxy(40,23);
 printf("请选择(1-8):"); 
 scanf("%d",&choose); 
 }
 return choose; 
}

int menu_2(void){
 system("cls");
 int i,choose;
 gotoxy(50,5);
 for(i = 0;i < 20 ; i++){
 printf("-");
 }
 for(i = 0;i <5; i++){
 gotoxy(49 - 2 * i,6 + i);
 printf("/");
 }
 for(i = 0;i < 50;i++){
 gotoxy(25+i,10); 
 printf("-");
 } 
 for(i = 0;i < 5;i++){
 gotoxy(25,11+i);
 printf("|");
 }
 gotoxy(35,13);
 printf("欢迎使用汽车租赁管理系统");
 gotoxy(40,15);
 printf("[1]按照身份证号检索");
 gotoxy(40,16);
 printf("[2]按照车牌号检索");
 gotoxy(40,17);
 printf("[3]返回主菜单");
 gotoxy(40,18);
 printf("[4]退出系统");
 gotoxy(40,26);
 printf("Zenith 版权所有");
 gotoxy(40,23);
 printf("请选择(1-4):"); 
 scanf("%d",&choose); 
 while(choose<1 || choose>8){
 printf("请输入范围为1-4的整数");
 gotoxy(40,23);
 printf("请选择(1-4):"); 
 scanf("%d",&choose); 
 }
 return choose; 
}

int menu_3(void){
 system("cls");
 int i,choose;
 gotoxy(50,5);
 for(i = 0;i < 20 ; i++){
 printf("-");
 }
 for(i = 0;i <5; i++){
 gotoxy(49 - 2 * i,6 + i);
 printf("/");
 }
 for(i = 0;i < 50;i++){
 gotoxy(25+i,10); 
 printf("-");
 } 
 for(i = 0;i < 5;i++){
 gotoxy(25,11+i);
 printf("|");
 }
 gotoxy(35,13);
 printf("欢迎使用汽车租赁管理系统");
 gotoxy(40,15);
 printf("[1]查看车辆总收入");
 gotoxy(40,16);
 printf("[2]查看盈利车辆");
 gotoxy(40,17);
 printf("[3]返回主菜单");
 gotoxy(40,18);
 printf("[4]退出系统");
 gotoxy(40,26);
 printf("Zenith 版权所有");
 gotoxy(40,23);
 printf("请选择(1-4):"); 
 scanf("%d",&choose); 
 while(choose<1 || choose>8){
 printf("请输入范围为1-4的整数");
 gotoxy(40,23);
 printf("请选择(1-4):"); 
 scanf("%d",&choose); 
 }
 return choose; 
}

void InsertInformation(){
 system("cls");
 int a,k,j,x,one;
 double cost; 
 int i = 0; 
 do{ 
 printf("\n----------------------------------------------------\n"); 
 printf("\t ———信息录入———\n\n"); 
 fflush(stdin);     //清空缓冲区 
 printf("请输入订单号(1-999999):"); 
 scanf("%d", &x); 
 while( x<1 || x>100){ 
  printf("订单号范围为1~100:"); 
  scanf("%d", &x);
 } 
 one=0; 
 for(j=0;j < loop;j++){ 
  if(x==car[j].theOrderNumber){ 
  one=1; 
  printf("\n记录中已有!不得重复添加..."); 
  getch(); 
  system("cls"); 
  menu(); 
  } 
 } 
 if(one==0){ 
  car[loop].theOrderNumber = x; 
 } 
 printf("请输入身份证号:"); 
 getchar(); 
 gets(car[loop].IdNumber); 
 printf("请输入车牌号:"); 
 scanf("%s",&car[loop].PlateNumber);
 printf("请输入费用:"); 
 scanf("%lf", &cost);
 car[loop].Cost = cost;
 loop++; 
 printf("\n添加完毕! 目前共有%d辆车!\n按1回到主界面!按2继续添加信息!按其他键退出程序! ",loop); 
 scanf("%d", &a); 
 }while(a==2); 
 if (a == 1){ 
 system("cls"); 
 main(); 
 } 
 if (a != 1){ 
 ExitSystem();
 } 
}

void PrintInformation(){
 system("cls");
 int a,j; 
 printf("\n----------------------------------------------------\n");
 printf("\t ———信息显示———\n\n");
 if(loop == 0){
 printf("Error,无数据,请添加数据后再试\n");
 }
 else{
 gotoxy(3,5);
 printf("订单号");
 gotoxy(10,5);
 printf("身份证号");
 gotoxy(32,5);
 printf("车牌号");
 gotoxy(45,5);
 printf("费用");
 for(j = 0;j < loop;j++ ){
  gotoxy(3,7+j);
  printf("%d",car[j].theOrderNumber);
  gotoxy(10,7+j);
  printf("%s",car[j].IdNumber);
  gotoxy(32,7+j);
  printf("%s",car[j].PlateNumber);
  gotoxy(45,7+j);
  printf("%f",car[j].Cost);
 } 
 }
 printf("\n显示完毕! 目前共有%d辆车!\n按1回到主界面!按其他键退出程序! ",loop); 
 scanf("%d", &a); 
 if (a == 1){ 
 system("cls"); 
 main(); 
 } 
 if (a != 1){ 
 ExitSystem();
 } 
} 

void IdSearch(){
 char idnumber[20];
 int i,j,a;
 do{
 system("cls"); 
 printf("\n----------------------------------------------------\n");
 printf("\t ———查询(按照身份证号)———\n\n");
 if(loop == 0){
  gotoxy(3,5);
  printf("无数据,请录入数据后查询,输入任意键返回主菜单");
  getch();
  system("cls");
  main();
 }
 gotoxy(3,5);
 printf("请输入需要查询的身份证号:");
 scanf("%s",&idnumber);
 j = 0;
 for(i=0;i < loop;i++){ 
  if(strcmp(idnumber,car[i].IdNumber) == 0){
  j=1;
  gotoxy(3,7);
  printf("订单号");
  gotoxy(10,7);
  printf("身份证号");
  gotoxy(32,7);
  printf("车牌号");
  gotoxy(45,7);
  printf("费用");
  gotoxy(3,9);
  printf("%d",car[i].theOrderNumber);
  gotoxy(10,9);
  printf("%s",car[i].IdNumber);
  gotoxy(32,9);
  printf("%s",car[i].PlateNumber);
  gotoxy(45,9);
  printf("%f",car[i].Cost);
  break;
  }
  if(j == 0){
  gotoxy(3,7);
  printf("对不起,未查询到您输入的身份证号,请核实后重新输入");
  break; 
  }
 }
 gotoxy(3,11);
 printf("查询完成,输入1继续查询,输入2返回主菜单,按其他键退出程序!");
 scanf("%d",&a);
 }while(a == 1);
 if (a == 2){ 
 system("cls"); 
 main(); 
 } 
 if (a != 1){ 
 ExitSystem();
 } 
}

void PlateNumber(){
 char platenumber[10];
 int i,j,a;
 do{
 system("cls"); 
 printf("\n----------------------------------------------------\n");
 printf("\t ———查询(按照车牌号)———\n\n");
 if(loop == 0){
  gotoxy(3,5);
  printf("无数据,请录入数据后查询,输入任意键返回主菜单");
  getch();
  system("cls");
  main();
 }
 gotoxy(3,5);
 printf("请输入需要查询的车牌号:");
 scanf("%s",&platenumber);
 j = 0;
 for(i=0;i < loop;i++){ 
  if(strcmp(platenumber,car[i].PlateNumber) == 0){
  j=1;
  gotoxy(3,7);
  printf("订单号");
  gotoxy(10,7);
  printf("身份证号");
  gotoxy(32,7);
  printf("车牌号");
  gotoxy(45,7);
  printf("费用");
  gotoxy(3,9);
  printf("%d",car[i].theOrderNumber);
  gotoxy(10,9);
  printf("%s",car[i].IdNumber);
  gotoxy(32,9);
  printf("%s",car[i].PlateNumber);
  gotoxy(45,9);
  printf("%f",car[i].Cost);
  break;
  }
  if(j == 0){
  gotoxy(3,7);
  printf("对不起,未查询到您输入的车牌号,请核实后重新输入");
  break; 
  }
 }
 gotoxy(3,11);
 printf("查询完成,输入1继续查询,输入2返回主菜单,按其他键退出程序!");
 scanf("%d",&a);
 }while(a == 1);
 if (a == 2){ 
 system("cls"); 
 main(); 
 } 
 if (a != 1){ 
 ExitSystem();
 } 
}

void ReviseInformation(){
 char idnumber[20];
 int i,j,a,b,c,cost;
 do{
 system("cls"); 
 printf("\n----------------------------------------------------\n");
 printf("\t ———信息修改———\n\n");
 if(loop == 0){
  gotoxy(3,5);
  printf("无数据,请录入数据后查询,输入任意键返回主菜单");
  getch();
  system("cls");
  main();
 }
 gotoxy(3,5);
 printf("请输入需要修改的信息的身份证号:");
 scanf("%s",&idnumber);
 j = 0;
 for(i=0;i < loop;i++){ 
  if(strcmp(idnumber,car[i].IdNumber) == 0){
  j=1;
  do{
   system("cls");
   printf("\n----------------------------------------------------\n");
   gotoxy(3,6);
   printf("您想要修改的条目如下");
   gotoxy(3,7);
   printf("订单号");
   gotoxy(10,7);
   printf("身份证号");
   gotoxy(32,7);
   printf("车牌号");
   gotoxy(45,7);
   printf("费用");
   gotoxy(3,9);
   printf("%d",car[i].theOrderNumber);
   gotoxy(10,9);
   printf("%s",car[i].IdNumber);
   gotoxy(32,9);
   printf("%s",car[i].PlateNumber);
   gotoxy(45,9);
   printf("%f",car[i].Cost);
   printf("\n\n\t ———信息修改———\n\n");
   printf("请选择需要修改的项目\n"); 
   printf("\t[1]身份证号\n"); 
   printf("\t[2]车牌号\n"); 
   printf("\t[3]费用\n"); 
   scanf("%d",&b);
   switch(b){
   case 1:
    printf("\n请输入身份证号:"); 
    getchar(); 
    gets(car[i].IdNumber);
    break;
   case 2:
    printf("\n请输入车牌号:"); 
    scanf("%s",&car[i].PlateNumber);
    break;
   case 3:
    printf("请输入费用:"); 
    scanf("%lf", &cost);
    car[i].Cost = cost;
    break;
   }
   printf("修改完成,输入1继续修改,输入其他键结束对此条目的修改");
   scanf("%d",&c); 
  }while(c == 1);
  break;
  }
  if(j == 0){
  gotoxy(3,7);
  printf("对不起,未查询到您输入的身份证号,请核实后重新输入");
  break; 
  }
 }
 gotoxy(3,15);
 printf("输入1继续修改其他条目,输入2返回主菜单,按其他键退出程序!");
 scanf("%d",&a);
 }while(a == 1);
 if (a == 2){ 
 system("cls"); 
 main(); 
 } 
 if (a != 1){ 
 ExitSystem();
 } 
} 

void DeleteInformation(){
 int j,x,k; 
 char idnumber[20]; 
 system("cls"); 
 printf("\n----------------------------------------------------\n");
 printf("\t ———信息删除———\n\n");
 printf("\t 请输入需要删除的条目的身份证号:"); 
 scanf("%s",idnumber); 
 k=0;
 for(j=0;j <= loop;j++){ 
 if(strcmp(idnumber,car[j].IdNumber)==0){ 
  k=1; 
  for( x = j; x<=loop ; x++){ 
  car[x]=car[x+1]; 
  } 
  loop--; 
  printf("\n\t 删除成功!"); 
  break; 
 } 
 } 
 if(k==0){ 
 printf("\t 对不起,记录中没有此条目..."); 
 printf("输入任意键退出");
 getch(); 
 system("cls"); 
 main(); 
 } 
 printf("输入任意键退出");
 getch(); 
 system("cls"); 
 main(); 
}

void AddInformation(){
 int i,x,j,one,row;
 double cost;
 loop++; 
 system("cls"); 
 printf("\n----------------------------------------------------\n");
 printf("\t ———信息追加———\n\n");
 gotoxy(3,5);
 if(loop == 1){
 printf("请在录入信息后选择此功能,按任意键退出!");
 getch();
 loop--;
 system("cls");
 main(); 
 }
 printf("请输入在第几行增添数据");
 scanf("%d",&row);
 if(row >= loop){
 do{
  printf("输入的行数必须小于已有的条目数!请重新输入:");
  scanf("%d",&row);
 }while(row<=loop);
 }
 for(i = loop;i >= row;i--){
 car[i] = car[i - 1];
 }
 printf("请输入订单号(1-100):"); 
 scanf("%d", &x); 
 while( x<1 || x>100){ 
 printf("订单号范围为1~100:"); 
 scanf("%d", &x);
 } 
 one=0; 
 for(j=0;j < loop;j++){ 
 if(x==car[j].theOrderNumber){ 
  one=1; 
  printf("\n记录中已有!不得重复添加..."); 
  getch(); 
  system("cls"); 
  main(); 
 } 
 } 
 if(one==0){ 
 car[row].theOrderNumber = x; 
 } 
 printf("请输入身份证号:"); 
 getchar(); 
 gets(car[row].IdNumber); 
 printf("请输入车牌号:"); 
 scanf("%s",&car[row].PlateNumber);
 printf("请输入费用:"); 
 scanf("%lf", &cost);
 car[row].Cost = cost;
 printf("\n\t追加完成,请按任意键返回主菜单"); 
 getch();
 system("cls");
 main(); 
}

void MoneySum(){
 int i;
 double sum = 0;
 system("cls"); 
 printf("\n----------------------------------------------------\n");
 printf("\t ———信息统计(车辆总收入)———\n\n");
 for(i = 0;i <= loop ; i++){
 sum = sum + car[i].Cost;
 }
 gotoxy(3,5);
 printf("截至目前所有车辆总收入为%lf",sum); 
 gotoxy(3,6);
 printf("按任意键返回主菜单");
 getch();
 system("cls");
 main(); 
}

void ChampionCar(){
 int i,j;
 double high = 0; 
 system("cls"); 
 printf("\n----------------------------------------------------\n");
 printf("\t ———信息统计(盈利车辆)———\n\n");
 for(i = 0;i < loop;i++){
 if(car[i].Cost >= high){
  high = car[i].Cost;
  j = i;
 }
 }
 gotoxy(3,5);
 printf("截止目前盈利车辆为收入%lf元的%s",high,car[j].PlateNumber);
 gotoxy(3,6);
 printf("按任意键返回主菜单");
 getch();
 system("cls");
 main(); 
} 

void ExitSystem(){
 system("cls");
 printf("\n退出系统中..."); 
 Sleep(1000); 
 exit(0);
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C++中用new创建二维数组和指针数组实例代码

    C++中用new创建二维数组和指针数组实例代码

    这篇文章主要介绍了C++中用new创建二维数组和指针数组实例代码,非常不错,具有参考借鉴价值,需要的朋友参考下
    2017-03-03
  • 关于vector迭代器失效的几种情况总结

    关于vector迭代器失效的几种情况总结

    下面小编就为大家带来一篇关于vector迭代器失效的几种情况总结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • C语言实现学生信息管理系统(单链表)

    C语言实现学生信息管理系统(单链表)

    这篇文章主要为大家详细介绍了C语言实现学生信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • QT5.12.5移植到ARM平台下的方法步骤

    QT5.12.5移植到ARM平台下的方法步骤

    本文主要介绍了QT5.12.5移植到ARM平台下的方法步骤,包括修改配置文件、代码修改以及测试运行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-01-01
  • C++使用join拼接字符串的技巧

    C++使用join拼接字符串的技巧

    在C++中,经常需要将多个字符串拼接成一个大字符串,这个过程很容易出错,但有一些技巧可以帮助我们轻松地实现这个目标,五个C++中join字符串的技巧:使用stringstream、使用字符串迭代器、使用字符串的加法运算符、使用std::accumulate函数和使用boost库的join方法
    2023-11-11
  • C++实现LeetCode(68.文本左右对齐)

    C++实现LeetCode(68.文本左右对齐)

    这篇文章主要介绍了C++实现LeetCode(68.文本左右对齐),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C语言堆与二叉树的顺序结构与实现

    C语言堆与二叉树的顺序结构与实现

    堆是计算机科学中一类特殊的数据结构的统称,通常是一个可以被看做一棵完全二叉树的数组对象。而堆排序是利用堆这种数据结构所设计的一种排序算法。本文将详细介绍堆与二叉树的顺序结构与实现,需要的可以参考一下
    2022-05-05
  • OpenCV 直方图均衡化的实现原理解析

    OpenCV 直方图均衡化的实现原理解析

    直方图均衡化是通过拉伸像素强度分布范围来增强图像对比度的一种方法,今天通过本文给大家介绍OpenCV 直方图均衡化的实现原理解析,感兴趣的朋友跟随小编一起看看吧
    2022-01-01
  • C/C++实操True and false详解

    C/C++实操True and false详解

    这篇文章主要给大家介绍了关于Python中常用的数据类型bool(布尔)类型的两个值:True和False的相关资料,通过示例代码给大家进行了解惑,让对这两个值有所疑惑的朋友们能有起到一定的帮助,需要的朋友下面来一起看看吧。
    2021-09-09
  • C++发邮件简单实例详解

    C++发邮件简单实例详解

    这篇文章主要为大家详细介绍了C++发邮件的简单实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05

最新评论