?? function.cpp
字號:
//function.cpp
//一般功能函數
#include "StdAfx.h"
#include "typedef.h"
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
// 名稱:fun_input()
// 作用:存入車輛
// 參數:空
// 返回值:成功:(bool)true
// 失敗:(bool)false
bool fun_input()
{
if (IsFull(carlist) == true)
{
printf("\n\n%s\n",*(p_language_print + 21));/*車位已滿!*/
getch();
return false;
}
park_car car_temp;
car_temp.parkplace.p_long = carlist->buffer[carlist->length].parkplace.p_long;
car_temp.parkplace.p_breadth = carlist->buffer[carlist->length].parkplace.p_breadth;
printf("\n\n- - - - - %s - - - - -\n\n%s",*(p_language_print + 22),*(p_language_print + 23));/*存入車輛*/ /*請輸入車主姓名:*/
scanf("%s",&car_temp.name);
printf("\n%s",*(p_language_print + 24));/*請輸入車牌號碼:*/
scanf("%s",&car_temp.number);
int * ptime = now_time();
for (int time_i = 0; time_i< 6 ; time_i++)
car_temp.ptime[time_i] = * (ptime + time_i);
car_temp.price = user.price;
if((InsertList_Sq(carlist,carlist->length,&car_temp)) == false)
{
printf("%s",*(p_language_print + 9));/*程序運行出現意外錯誤,按任意鍵繼續*/
getch();
return false;
}
if (input_log(car_temp.number) == false)
{
printf("%s",*(p_language_print + 25));/*日志可能沒有被正確記錄。*/
getch();
}
if ((fp_car = fopen("parkcar.dat","wb")) == 0) //寫入存放存車信息的順序表
{
printf("%s",*(p_language_print + 9));/*程序運行出現意外錯誤,按任意鍵繼續*/
return false;
}
if((fwrite(carlist,sizeof(park_car),user.Dimension.p_long * user.Dimension.p_breadth,fp_car)) == 0)
{
printf("%s",*(p_language_print + 9));/*程序運行出現意外錯誤,按任意鍵繼續*/
getch();
return false;
}
fclose(fp_car);
//********************************************************* Debug
#ifdef DEBUG
printf("\n\nDebug\n");
int debug_i = 0;
printf("name = %s\nnumber = %s\nparkplace = %d - %d\nprice = %f\nptime = %d,%d,%d,%d,%d,%d",
carlist->buffer[debug_i].name,
carlist->buffer[debug_i].number,
carlist->buffer[debug_i].parkplace.p_long,
carlist->buffer[debug_i].parkplace.p_breadth,
carlist->buffer[debug_i].price,
carlist->buffer[debug_i].ptime[0],
carlist->buffer[debug_i].ptime[1],
carlist->buffer[debug_i].ptime[2],
carlist->buffer[debug_i].ptime[3],
carlist->buffer[debug_i].ptime[4],
carlist->buffer[debug_i].ptime[5]);
printf("\n\n");
getch();
#endif
//**********************************************************
printf("\n%s%d - %d\n\n%s",*(p_language_print + 29),car_temp.parkplace.p_long,car_temp.parkplace.p_breadth,*(p_language_print + 30));/*車輛添加成功,請將車輛放入車位:*//*按任意鍵返回*/
getch();
return true;
}
// 名稱:fun_output()
// 作用:取出車輛
// 參數:空
// 返回值:成功:(bool)true
// 失敗:(bool)false
bool fun_output()
{
printf("\n\n- - - - - %s - - - - -\n\n",*(p_language_print + 31));/*取出車輛*/
if (IsEmpty(carlist) == 1)
{
printf("%s\n",*(p_language_print + 32));/*當前沒有車輛在停車場存放。*/
getch();
return false;
}
char number[10];
char command[10];
while(1)
{
printf("%s",*(p_language_print + 24));/*請輸入車牌號碼:*/
scanf("%s",&number);
int i = Searchnumber_Sq(carlist, number);
if (i == 0)
{
printf("\n\n%s",*(p_language_print + 33));/*沒有找到該車輛,請檢查輸入。*/
getch();
return false;
}
int * ptime = now_time();
for (int time_i = 0; time_i< 6 ; time_i++)
carlist->buffer[i-1].ltime[time_i] = * (ptime + time_i);
times_segment(carlist->buffer[i-1].ptime,
carlist->buffer[i-1].ltime,
carlist->buffer[i-1].time);
car_pay(i-1);
printf("\n%s\n\t\t%s%s\n\t\t%s%s\n\t\t%s%d - %d\n\t\t%s%d%s %d%s %d:%d\n\t\t%d%s %d%s %d:%d\n\t\t%s%d%s%d%s%d\n\t\t%s%.2f%s\n\n",
*(p_language_print + 34),/*記錄已找到:*/
*(p_language_print + 35),/*車牌號碼:*/
carlist->buffer[i-1].number,
*(p_language_print + 36),/*車主姓名:*/
carlist->buffer[i-1].name,
*(p_language_print + 37),/*停車位置:*/
carlist->buffer[i-1].parkplace.p_long,
carlist->buffer[i-1].parkplace.p_breadth,
*(p_language_print + 44),/*存入時間:*/
carlist->buffer[i-1].ptime[1],
*(p_language_print + 39),/*月*/
carlist->buffer[i-1].ptime[2],
*(p_language_print + 40),/*日*/
carlist->buffer[i-1].ptime[3],
carlist->buffer[i-1].ptime[4],
*(p_language_print + 45),/*當前時間:*/
carlist->buffer[i-1].ltime[1],
*(p_language_print + 39),/*月*/
carlist->buffer[i-1].ltime[2],
*(p_language_print + 40),/*日*/
carlist->buffer[i-1].ltime[3],
carlist->buffer[i-1].ltime[4],
*(p_language_print + 46),/*停車計時:*/
carlist->buffer[i-1].time[2],
*(p_language_print + 41),/*天*/
carlist->buffer[i-1].time[3],
*(p_language_print + 42),/*小時*/
carlist->buffer[i-1].time[4],
*(p_language_print + 43),/*分鐘*/
*(p_language_print + 47),/*停車費用*/
carlist->buffer[i-1].pay,
*(p_language_print + 48));/*元*/
printf("%s\n",*(p_language_print + 49));/*確認取出該車請輸入takeout,返回請輸入back。*/
scanf("%s",&command);
if ((strcmp(command , "takeout")) == 0)
{
place takeout_place_temp;
takeout_place_temp.p_long = carlist->buffer[i-1].parkplace.p_long;
takeout_place_temp.p_breadth = carlist->buffer[i-1].parkplace.p_breadth;
char takeout_number_temp[10];
for (int takeout_number_temp_i = 0; takeout_number_temp_i < 10; takeout_number_temp_i ++)
{
takeout_number_temp[takeout_number_temp_i] = carlist->buffer[i-1].number[takeout_number_temp_i];
}
//********************************************************* Debug
#ifdef DEBUG
printf("\n\nDebug\n");
printf("%d - %d",takeout_place_temp.p_long,takeout_place_temp.p_breadth);
printf("\n\n");
getch();
#endif
//**********************************************************
if(DeleteList_Sq(carlist,i-1) == false)
{
printf("%s",*(p_language_print + 9));/*程序運行出現意外錯誤,按任意鍵繼續*/
getch();
return false;
}
carlist->buffer[carlist->length].parkplace.p_long = takeout_place_temp.p_long;
carlist->buffer[carlist->length].parkplace.p_breadth = takeout_place_temp.p_breadth;
if ((fp_car=fopen("parkcar.dat","wb")) == 0)
{
printf("%s",*(p_language_print + 9));/*程序運行出現意外錯誤,按任意鍵繼續*/
getch();
return false;
}
fwrite(carlist,sizeof(park_car),user.Dimension.p_long * user.Dimension.p_breadth,fp_car); //寫入存放存車信息的順序表
fclose(fp_car);
output_log(takeout_number_temp);
printf("\n\n%s\n");/*車輛取出成功,按任意鍵繼續。*/
getch();
return true;
}
if (command == "back")
{
return true;
}
return true;
}
}
// 名稱:fun_search()
// 作用:搜索車輛
// 參數:空
// 返回值:成功:(bool)true
// 失敗:(bool)false
bool fun_search()
{
printf("\n\n- - - - - %s - - - - -\n\n",*(p_language_print + 51));/*搜索車輛*/
if (IsEmpty(carlist) == 1)
{
printf("\n%s",*(p_language_print + 52));/*當前沒有車輛在停車場存放。*/
getch();
return false;
}
char carnumber[10];
printf("%s",*(p_language_print + 53));/*請輸入要查找的車牌號碼:*/
scanf("%s",&carnumber);
int i = Searchnumber_Sq(carlist,carnumber);
if (i == 0)
{
printf("\n%s",*(p_language_print + 54));/*沒有找到該車記錄*/
getch();
return false;
}
printf("\n%s\n\t\t%s\n\t\t%s\n\t\t%s%d%s %d %d:%d\n\t\t%s%d.%d",
*(p_language_print + 34),/*記錄已找到:*/
*(p_language_print + 35),/*車牌號碼:*/
carlist->buffer[i-1].number,
*(p_language_print + 36),/*車主姓名:*/
carlist->buffer[i-1].name,
*(p_language_print + 44),/*存入時間:*/
carlist->buffer[i-1].ptime[1],
*(p_language_print + 39),/*月*/
carlist->buffer[i-1].ptime[2],
*(p_language_print + 40),/*日*/
carlist->buffer[i-1].ptime[3],
carlist->buffer[i-1].ptime[4],
*(p_language_print + 37),/*存放位置:*/
carlist->buffer[i-1].parkplace.p_long,
carlist->buffer[i-1].parkplace.p_breadth);
printf("\n\n按任意鍵返回");
getch();
return true;
}
// 名稱:fun_state()
// 作用:查看停車場狀態
// 參數:空
// 返回值:成功:(bool)true
// 失敗:(bool)false
bool fun_state()
{
printf("\n\n- - - - - %s - - - - -\n\n",*(p_language_print + 55));/*查看停車場狀態*/
printf("%s%d%s\n\n%s\n",*(p_language_print + 56),(user.Dimension.p_long * user.Dimension.p_breadth -carlist->length),*(p_language_print + 57),*(p_language_print + 58));/*停車場當前還有*//*個空余車位。*//*當前所有存放車輛:*/
for (int i=0; i< carlist->length; i++)
{
printf("\n\n* * * * * * * *\n");
printf("\n%s\n\t\t%s\n\t\t%s\n\t\t%s%d%s %d %d:%d\n\t\t%s%d.%d",
*(p_language_print + 34),/*記錄已找到:*/
*(p_language_print + 35),/*車牌號碼:*/
carlist->buffer[i].number,
*(p_language_print + 36),/*車主姓名:*/
carlist->buffer[i].name,
*(p_language_print + 44),/*存入時間:*/
carlist->buffer[i].ptime[1],
*(p_language_print + 39),/*月*/
carlist->buffer[i].ptime[2],
*(p_language_print + 40),/*日*/
carlist->buffer[i].ptime[3],
carlist->buffer[i].ptime[4],
*(p_language_print + 37),/*存放位置:*/
carlist->buffer[i].parkplace.p_long,
carlist->buffer[i].parkplace.p_breadth);
}
printf("\n\n");
getch();
return true;
}
// 名稱:fun_admin
// 作用:轉入高級管理菜單
// 參數:空
// 返回值:空
bool fun_admin()
{
printf("\n%s",*(p_language_print + 59));/*請重新輸入管理員密碼:*/ //進入高級菜單前的身份確認
char password[20];
starword(password);
if (strcmp(password,user.password) != 0)
{
printf("\n%s",*(p_language_print + 60));/*密碼輸入錯誤,按任意鍵返回。*/
getch();
return false;
}
char acommand[10];
printf("\n\n%s\n\n%s",*(p_language_print + 61),*(p_language_print + 30));/*密碼驗證成功,即將進入高級管理命令,請謹慎操作。*//*按任意鍵繼續*/
getch();
while(1)
{
system("cls");
if (user.language == 'c')
{
In_hander_ch();
}
else
{
In_hander_en();
}
printf("- - - - - %s - - - - -",*(p_language_print + 62));/*高級管理命令*/
while(1)
{
printf("\n\n%s",*(p_language_print + 63));/*請輸入高級管理命令(輸入help獲得幫助):*/
rewind(stdin);
scanf("%s",&acommand);
if (strcmp(acommand,"price") == 0)
{
admin_setprice();
break;
}
else if(strcmp(acommand,"password") == 0)
{
admin_modifypassword();
break;
}
else if(strcmp(acommand,"language") == 0)
{
admin_setlanguage();
return true;
}
else if(strcmp(acommand,"backdata") == 0)
{
admin_cardata();
break;
}
else if(strcmp(acommand,"log") == 0)
{
admin_userlog();
break;
}
else if(strcmp(acommand,"back") == 0)
{
return true;
}
else if(strcmp(acommand,"help") == 0)
{
if (user.language == 'c')
{
In_admin_ch();
}
else
{
In_admin_en();
}
}
else
{
printf("%s",*(p_language_print + 64));/*命令輸入錯誤,請重新輸入:*/
}
}
}
return false;
}
// 名稱:fun_quick
// 作用:退出系統
// 參數:空
// 返回值:空
void fun_quick()
{
DestroyList_Sq(carlist);
logout_log();
exit(0);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -