溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C語(yǔ)言實(shí)現(xiàn)車輛出租管理系統(tǒng)

發(fā)布時(shí)間:2020-08-25 09:59:10 來源:腳本之家 閱讀:217 作者:Zenith_Lee 欄目:編程語(yǔ)言

這個(gè)項(xiàng)目是我今年的C語(yǔ)言課設(shè)。做這個(gè)項(xiàng)目一個(gè)人大概用了一天的時(shí)間來完成,整體將近700行,量不是很多,所以也沒用多文件什么的,當(dāng)然也是采用了模塊化設(shè)計(jì)的思路,在代碼中寫了幾個(gè)函數(shù)來實(shí)現(xiàn)特定的功能。

以下是這個(gè)項(xiàng)目的一些要求和全部源碼。

一、軟件開發(fā)目的

該軟件主要是使用C語(yǔ)言設(shè)計(jì)開發(fā)一個(gè)簡(jiǎn)單的車輛租賃管理系統(tǒng),實(shí)現(xiàn)租賃信息的查詢、修改、刪除、添加以及訂單的查詢等功能。

二、數(shù)據(jù)結(jié)構(gòu)

程序中采用結(jié)構(gòu)體數(shù)組存儲(chǔ)租賃信息。租賃結(jié)構(gòu)體成員包括:訂單號(hào)、身份證號(hào)、車牌號(hào)、費(fèi)用。數(shù)組的長(zhǎng)度不超過100。

三、軟件功能說明

1.租賃信息的錄入和保存:

輸入租賃信息包括:訂單號(hào)、身份證號(hào)、車牌號(hào)、費(fèi)用。還車前費(fèi)用為0。在錄入數(shù)據(jù)的同時(shí),系統(tǒng)將對(duì)信息的合法性進(jìn)行檢驗(yàn),若錄入了不合法的數(shù)據(jù)系統(tǒng)應(yīng)作出提示,并且要求重新輸入。

2.顯示單條租賃信息:

將租賃信息在屏幕上列表輸出。要求先顯示提示信息“訂單號(hào)、身份證號(hào)、車牌號(hào)、費(fèi)用”,然后再顯示租賃信息,每行顯示一條租賃信息。

3.查詢單條租賃信息

輸入身份證號(hào)進(jìn)行查詢,輸出符合條件的租賃信息,輸出訂單號(hào)、身份證號(hào)、車牌號(hào)、費(fèi)用。

4.查詢每輛車的租賃費(fèi)用:

輸入車牌號(hào)進(jìn)行查詢,輸出該車所有租賃的總費(fèi)用。輸出車牌號(hào)、總費(fèi)用。

5.添加租賃信息

輸入新的租賃信息,將新的信息插入原租賃信息清單中,并將新的列表輸出,以方便用戶確認(rèn)。

6.修改、刪除租賃信息

通過身份證號(hào)對(duì)某條租賃信息進(jìn)行進(jìn)行修改和刪除,并將租賃信息列表輸出,以方便用戶確認(rèn)。

7.統(tǒng)計(jì):

(1)統(tǒng)計(jì)輸出當(dāng)月訂單總金額
(2)統(tǒng)計(jì)輸出訂單金額最高的車牌號(hào)

8.退出系統(tǒng),結(jié)束任務(wù)。

以下是該程序的全部代碼

#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 };/*定義結(jié)構(gòu)體變量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("歡迎使用汽車租賃管理系統(tǒng)");
 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]統(tǒng)計(jì)信息");
 gotoxy(40,22);
 printf("[8]退出");
 gotoxy(40,26);
 printf("Zenith 版權(quán)所有");
 gotoxy(40,23);
 printf("請(qǐng)選擇(1-8):"); 
 scanf("%d",&choose); 
 while(choose<1 || choose>8){
 printf("請(qǐng)輸入范圍為1-8的整數(shù)");
 gotoxy(40,23);
 printf("請(qǐng)選擇(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("歡迎使用汽車租賃管理系統(tǒng)");
 gotoxy(40,15);
 printf("[1]按照身份證號(hào)檢索");
 gotoxy(40,16);
 printf("[2]按照車牌號(hào)檢索");
 gotoxy(40,17);
 printf("[3]返回主菜單");
 gotoxy(40,18);
 printf("[4]退出系統(tǒng)");
 gotoxy(40,26);
 printf("Zenith 版權(quán)所有");
 gotoxy(40,23);
 printf("請(qǐng)選擇(1-4):"); 
 scanf("%d",&choose); 
 while(choose<1 || choose>8){
 printf("請(qǐng)輸入范圍為1-4的整數(shù)");
 gotoxy(40,23);
 printf("請(qǐng)選擇(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("歡迎使用汽車租賃管理系統(tǒng)");
 gotoxy(40,15);
 printf("[1]查看車輛總收入");
 gotoxy(40,16);
 printf("[2]查看盈利冠軍車輛");
 gotoxy(40,17);
 printf("[3]返回主菜單");
 gotoxy(40,18);
 printf("[4]退出系統(tǒng)");
 gotoxy(40,26);
 printf("Zenith 版權(quán)所有");
 gotoxy(40,23);
 printf("請(qǐng)選擇(1-4):"); 
 scanf("%d",&choose); 
 while(choose<1 || choose>8){
 printf("請(qǐng)輸入范圍為1-4的整數(shù)");
 gotoxy(40,23);
 printf("請(qǐng)選擇(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);     //清空緩沖區(qū) 
 printf("請(qǐng)輸入訂單號(hào)(1-999999):"); 
 scanf("%d", &x); 
 while( x<1 || x>100){ 
  printf("訂單號(hào)范圍為1~100:"); 
  scanf("%d", &x);
 } 
 one=0; 
 for(j=0;j < loop;j++){ 
  if(x==car[j].theOrderNumber){ 
  one=1; 
  printf("\n記錄中已有!不得重復(fù)添加..."); 
  getch(); 
  system("cls"); 
  menu(); 
  } 
 } 
 if(one==0){ 
  car[loop].theOrderNumber = x; 
 } 
 printf("請(qǐng)輸入身份證號(hào):"); 
 getchar(); 
 gets(car[loop].IdNumber); 
 printf("請(qǐng)輸入車牌號(hào):"); 
 scanf("%s",&car[loop].PlateNumber);
 printf("請(qǐng)輸入費(fèi)用:"); 
 scanf("%lf", &cost);
 car[loop].Cost = cost;
 loop++; 
 printf("\n添加完畢! 目前共有%d輛車!\n按1回到主界面!按2繼續(xù)添加信息!按其他鍵退出程序! ",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,無數(shù)據(jù),請(qǐng)?zhí)砑訑?shù)據(jù)后再試\n");
 }
 else{
 gotoxy(3,5);
 printf("訂單號(hào)");
 gotoxy(10,5);
 printf("身份證號(hào)");
 gotoxy(32,5);
 printf("車牌號(hào)");
 gotoxy(45,5);
 printf("費(fèi)用");
 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 ———查詢(按照身份證號(hào))———\n\n");
 if(loop == 0){
  gotoxy(3,5);
  printf("無數(shù)據(jù),請(qǐng)錄入數(shù)據(jù)后查詢,輸入任意鍵返回主菜單");
  getch();
  system("cls");
  main();
 }
 gotoxy(3,5);
 printf("請(qǐng)輸入需要查詢的身份證號(hào):");
 scanf("%s",&idnumber);
 j = 0;
 for(i=0;i < loop;i++){ 
  if(strcmp(idnumber,car[i].IdNumber) == 0){
  j=1;
  gotoxy(3,7);
  printf("訂單號(hào)");
  gotoxy(10,7);
  printf("身份證號(hào)");
  gotoxy(32,7);
  printf("車牌號(hào)");
  gotoxy(45,7);
  printf("費(fèi)用");
  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("對(duì)不起,未查詢到您輸入的身份證號(hào),請(qǐng)核實(shí)后重新輸入");
  break; 
  }
 }
 gotoxy(3,11);
 printf("查詢完成,輸入1繼續(xù)查詢,輸入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 ———查詢(按照車牌號(hào))———\n\n");
 if(loop == 0){
  gotoxy(3,5);
  printf("無數(shù)據(jù),請(qǐng)錄入數(shù)據(jù)后查詢,輸入任意鍵返回主菜單");
  getch();
  system("cls");
  main();
 }
 gotoxy(3,5);
 printf("請(qǐng)輸入需要查詢的車牌號(hào):");
 scanf("%s",&platenumber);
 j = 0;
 for(i=0;i < loop;i++){ 
  if(strcmp(platenumber,car[i].PlateNumber) == 0){
  j=1;
  gotoxy(3,7);
  printf("訂單號(hào)");
  gotoxy(10,7);
  printf("身份證號(hào)");
  gotoxy(32,7);
  printf("車牌號(hào)");
  gotoxy(45,7);
  printf("費(fèi)用");
  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("對(duì)不起,未查詢到您輸入的車牌號(hào),請(qǐng)核實(shí)后重新輸入");
  break; 
  }
 }
 gotoxy(3,11);
 printf("查詢完成,輸入1繼續(xù)查詢,輸入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("無數(shù)據(jù),請(qǐng)錄入數(shù)據(jù)后查詢,輸入任意鍵返回主菜單");
  getch();
  system("cls");
  main();
 }
 gotoxy(3,5);
 printf("請(qǐng)輸入需要修改的信息的身份證號(hào):");
 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("訂單號(hào)");
   gotoxy(10,7);
   printf("身份證號(hào)");
   gotoxy(32,7);
   printf("車牌號(hào)");
   gotoxy(45,7);
   printf("費(fèi)用");
   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("請(qǐng)選擇需要修改的項(xiàng)目\n"); 
   printf("\t[1]身份證號(hào)\n"); 
   printf("\t[2]車牌號(hào)\n"); 
   printf("\t[3]費(fèi)用\n"); 
   scanf("%d",&b);
   switch(b){
   case 1:
    printf("\n請(qǐng)輸入身份證號(hào):"); 
    getchar(); 
    gets(car[i].IdNumber);
    break;
   case 2:
    printf("\n請(qǐng)輸入車牌號(hào):"); 
    scanf("%s",&car[i].PlateNumber);
    break;
   case 3:
    printf("請(qǐng)輸入費(fèi)用:"); 
    scanf("%lf", &cost);
    car[i].Cost = cost;
    break;
   }
   printf("修改完成,輸入1繼續(xù)修改,輸入其他鍵結(jié)束對(duì)此條目的修改");
   scanf("%d",&c); 
  }while(c == 1);
  break;
  }
  if(j == 0){
  gotoxy(3,7);
  printf("對(duì)不起,未查詢到您輸入的身份證號(hào),請(qǐng)核實(shí)后重新輸入");
  break; 
  }
 }
 gotoxy(3,15);
 printf("輸入1繼續(xù)修改其他條目,輸入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 請(qǐng)輸入需要?jiǎng)h除的條目的身份證號(hào):"); 
 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 對(duì)不起,記錄中沒有此條目..."); 
 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("請(qǐng)?jiān)阡浫胄畔⒑筮x擇此功能,按任意鍵退出!");
 getch();
 loop--;
 system("cls");
 main(); 
 }
 printf("請(qǐng)輸入在第幾行增添數(shù)據(jù)");
 scanf("%d",&row);
 if(row >= loop){
 do{
  printf("輸入的行數(shù)必須小于已有的條目數(shù)!請(qǐng)重新輸入:");
  scanf("%d",&row);
 }while(row<=loop);
 }
 for(i = loop;i >= row;i--){
 car[i] = car[i - 1];
 }
 printf("請(qǐng)輸入訂單號(hào)(1-100):"); 
 scanf("%d", &x); 
 while( x<1 || x>100){ 
 printf("訂單號(hào)范圍為1~100:"); 
 scanf("%d", &x);
 } 
 one=0; 
 for(j=0;j < loop;j++){ 
 if(x==car[j].theOrderNumber){ 
  one=1; 
  printf("\n記錄中已有!不得重復(fù)添加..."); 
  getch(); 
  system("cls"); 
  main(); 
 } 
 } 
 if(one==0){ 
 car[row].theOrderNumber = x; 
 } 
 printf("請(qǐng)輸入身份證號(hào):"); 
 getchar(); 
 gets(car[row].IdNumber); 
 printf("請(qǐng)輸入車牌號(hào):"); 
 scanf("%s",&car[row].PlateNumber);
 printf("請(qǐng)輸入費(fèi)用:"); 
 scanf("%lf", &cost);
 car[row].Cost = cost;
 printf("\n\t追加完成,請(qǐng)按任意鍵返回主菜單"); 
 getch();
 system("cls");
 main(); 
}

void MoneySum(){
 int i;
 double sum = 0;
 system("cls"); 
 printf("\n----------------------------------------------------\n");
 printf("\t ———信息統(tǒng)計(jì)(車輛總收入)———\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 ———信息統(tǒng)計(jì)(盈利冠軍車輛)———\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退出系統(tǒng)中..."); 
 Sleep(1000); 
 exit(0);
} 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI