📄 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 + -