c语言park函数 c语言pack函数

C语言:车辆交通违章管理程序一个一模一样c语言park函数的,我COPY过来,勿怪...实在是一样
//注释删除掉 以及 中文用不c语言park函数了之外
其c语言park函数他是一样的,那边也是要求C语言编,的确一样.
//VC6.0下调试通过
#include stdio.h
#include stdlib.h
#include malloc.h
#include string.h
#include time.h
typedef enum {s_park=1, s_speed, s_signal, s_other} SheetType;
typedef enum {f_id, f_car, f_driver, f_police} FindType;
typedef struct Sheet
{
signed long id;//罚单号
char carNo[20];//车牌号
char driver[20];//司机名
char police[20];//警察编号
SheetType type;//罚单类型
tm time;//出单日期
}Sheet;
typedef struct Node
{
Sheet data;
Node* next;
}Node;
static Node* begin=NULL;//哨兵结点
static signed long len=0;//链表长度
void printMenu();//打印菜单
void printBye();//打印退出界面
void printList(Node* bg);//打印所有罚单信息
void printNode(Sheet sheet);//打印单条罚单
Node* lookupSheet(void* pInfo, signed short* n,
FindType type=f_id);//根据类型查询罚单 。成功返回结点 。失败NULL
int addNode(Node* bg, Sheet sheet);//添加罚单 。成功返回链表长度 。内存分配失败0
int deleteNode(signed short stid);//根据罚单号删除罚单 。
int total(char* driver, tm date1, tm date2, signed short* icar,
signed short* ispeed, signed short* isignal, signed short* iother);//统计
int getListlen(Node* bg);
void freeList(Node* bg);//释放链表
void main()
{
//初始化链表 。
begin=(Node*)malloc(sizeof(Node));
begin-next=NULL;
printf("----------------------------------------------------------------------------\n");
printf("--- 《交通罚单管理系统》 ---\n");
printf("--- 沙支夸依 2007-12-24 ---\n");
printf("----------------------------------------------------------------------------\n");
printf("||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n");
printMenu();
while (1)
{
fflush(stdin);
char cmd=getchar();
Sheet sheet;
memset(sheet, 0, sizeof(Sheet));
switch (cmd)
{
case '1':
printf("---添加交通处罚单信息 。(车牌号为 0 结束)\n");
while (1)
{
printf("请输入违章车辆号c语言park函数: ");
fflush(stdin);
gets(sheet.carNo);
if (!strcmp(sheet.carNo,"0"))
break;
printf("请输入违章司机姓名: ");
fflush(stdin);
gets(sheet.driver);
printf("请输入开单交警编号: ");
fflush(stdin);
gets(sheet.police);
printf("请选择违章类型(1-违章停车 2-超速 3-不按信号灯行使 4-其它):");
scanf("%d", sheet.type);
printf("请输入开单日期(例 2007-12-24): ");
scanf("%d-%d-%d", sheet.time.tm_year, sheet.time.tm_mon, sheet.time.tm_mday);
int succ=addNode(begin, sheet);
if (!succ)
{
printf("内存错误!请重新输入!\n");
}
else
printf("添加成功!当前记录??%d\n", len);
printf("\n");
}
printMenu();
break;
case '2':
printf("---删除交通处罚单信息 。(罚单号为 0 结束)\n");
while (1)
{
signed short stid=0;
printf("请输入要删除的罚单号:");
scanf("%d", stid);
if (!stid)
break;
Node* delNode=lookupSheet(stid, NULL);
if (!delNode)
printf("对不起!c语言park函数你要删除的记录不存在 。\n");
else
{
printNode(delNode-data);
printf("您确定要删除这条记录吗?(任意键删除/ n 取消)\n");
fflush(stdin);
char cDelete=getchar();
if ('n'==cDelete)
continue;
printf("删除成功!剩余记录数: %d\n",deleteNode(stid));
}
printf("\n");
}
printMenu();
break;
case '3':
printf("---查询交通处罚单信息 。(输入 0 结束)\n");
while (1)
{
printf("请选择查询类型: 1-车辆号 2-司机 3-交警 4-退出\n");
Node* findNode=NULL;
int findtype=0;
scanf("%d", findtype);
if (4==findtype)
break;
char findInfo[20];
signed short findcout=0;
switch (findtype)
{
case 1:
printf("请输入车辆号: ");
fflush(stdin);
gets(findInfo);
findNode=lookupSheet(findInfo, findcout, f_car);
if (getListlen(findNode)=5)
{
printf("---该车辆违章超过5次 。建议重罚 。\n");
}
break;
case 2:
printf("请输入司机姓名: ");
fflush(stdin);
gets(findInfo);
findNode=lookupSheet(findInfo, findcout, f_driver);
if (getListlen(findNode)=5)
{
printf("---该司机违章超过5次 。建议重罚 。\n");
}
break;
case 3:
default:
printf("请输入交警编号: ");
fflush(stdin);
gets(findInfo);
findNode=lookupSheet(findInfo, findcout, f_police);
}
if (!findNode)
printf("对不起!你要查询的记录不存在 。\n");
else
{
printList(findNode);
freeList(findNode);
}
printf("\n");
}
printMenu();
break;
case '4':
printf("---统计司机处罚单信息 。(输入 0 结束)\n");
while (1)
{
printf("请输入司机姓名: ");
char driver[20];
fflush(stdin);
gets(driver);
if (!strcmp(driver, "0"))
break;
printf("请输入起始日期(如 2007-12-24): ");
tm date1;
memset(date1, 0, sizeof(tm));
scanf("%d-%d-%d", date1.tm_year, date1.tm_mon, date1.tm_mday);
printf("请输入终止日期(如 2007-12-24): ");
tm date2;
memset(date2, 0, sizeof(tm));
scanf("%d-%d-%d", date2.tm_year, date2.tm_mon, date2.tm_mday);
signed short car, speed, signal, other;
int sum=total(driver, date1, date2, car, speed, signal, other);
printf("司机姓名:%-10s 违章停车:- 超速:- 不按信号灯行使:- 其它:- 共计:-\n",
driver, car, speed, signal, other, car speed signal other);
printf("\n");
}
printMenu();
break;
case '5':
printList(begin);
printMenu();
break;
case '6':
printf("---修改交通处罚单信息 。(输入 0 结束)\n");
while (1)
{
signed short stid=0;
printf("请输入要修改的交通处罚单号:");
fflush(stdin);
scanf("%d", stid);
if (!stid)
break;
Node* updataNode=lookupSheet(stid, NULL);
if (!updataNode)
printf("对不起!你要修改的记录不存在 。\n");
else
{
printNode(updataNode-data);
memset(sheet, 0, sizeof(Sheet));
sheet.id=stid;
printf("请修改违章车辆号: ");
fflush(stdin);
gets(sheet.carNo);
printf("请修改违章司机姓名: ");
fflush(stdin);
gets(sheet.driver);
printf("请修改开单交警编号: ");
fflush(stdin);
gets(sheet.police);
printf("请修改违章类型(1-违章停车 2-超速 3-不按信号灯行使 4-其它):");
scanf("%d", sheet.type);
printf("请修改开单日期(例 2007-12-24): ");
scanf("%d-%d-%d", sheet.time.tm_year, sheet.time.tm_mon, sheet.time.tm_mday);
updataNode-data=https://www.04ip.com/post/sheet;
printNode(updataNode-data);
}
printf("\n");
}
printMenu();
break;
case '7':
printBye();
freeList(begin);
exit(0);
break;
default:
printMenu();
}
}
}
void printMenu()
{
printf("----------------------------------------------------------------------------\n");
printf("--- 1、添加交通处罚单信息 。2、删除交通处罚单信息 。---\n");
printf("--- 3、查询交通处罚单信息 。4、统计司机处罚单信息 。---\n");
printf("--- 5、浏览交通处罚单信息 。6、修改交通处罚单信息 。---\n");
printf("--- 7、退出 。---\n");
printf("----------------------------------------------------------------------------\n");
printf("");
}
void printBye()
{
printf("----------------------------------------------------------------------------\n");
printf(" 感谢您使用交通罚单管理系统 \n");
printf(" 再 见 \n");
printf("----------------------------------------------------------------------------\n");
}
void printNode(Sheet sheet)
{
char* type=NULL;
switch (sheet.type)
{
case s_park:
type="违章停车";
break;
case s_speed:
type="超速";
break;
case s_signal:
type="不按信号灯行使";
break;
case s_other:
default:
type="其它";
}
printf("罚单号:%-6d 车牌号:%-10s 司机名:%-10s 交警名:%-10s\n"
"罚单类型:%-15s 开单日期:%d-%d-%d\n",
sheet.id, sheet.carNo, sheet.driver, sheet.police,
type, sheet.time.tm_year, sheet.time.tm_mon, sheet.time.tm_mday);
printf("--------------------------------------------------------------------------\n");
}
void printList(Node* bg)
{
Node* temp=bg-next;
if (!temp)
{
printf("暂时无记录可供浏览!\n");
}
while (temp)
{
printNode(temp-data);
temp=temp-next;
}
}
Node* lookupSheet(void* pInfo, signed short* n, FindType type)
{
Node* result=NULL;
if (type)
{
result=(Node*)malloc(sizeof(Node));
result-next=NULL;
*n=0;
}
Node* temp=begin-next;
switch (type)
{
case f_id:
while (temp)
{
if (temp-data.id==*(signed long*)pInfo)
{
if (n)
*n=1;
return temp;
}
temp=temp-next;
}
break;
case f_car:
while (temp)
{
if (!strcmp(temp-data.carNo,(char*)pInfo))
{
addNode(result, temp-data);
(*n);
}
temp=temp-next;
}
break;
case f_driver:
while (temp)
{
if (!strcmp(temp-data.driver,(char*)pInfo))
{
addNode(result, temp-data);
(*n);
}
temp=temp-next;
}
break;
case f_police:
while (temp)
{
if (!strcmp(temp-data.police,(char*)pInfo))
{
addNode(result, temp-data);
(*n);
}
temp=temp-next;
}
break;
}
return result;
}
int addNode(Node* bg, Sheet sheet)
{
Node* temp=(Node*)malloc(sizeof(Node));
if (!temp)
return 0;
if (bg==begin)
{
if (bg-next)
{
sheet.id=bg-next-data.id 1;
}
else
sheet.id=1;
}
temp-data=https://www.04ip.com/post/sheet;
temp-next=bg-next;
bg-next=temp;
returnlen;
}
int deleteNode(signed short stid)
{
Node* temp=begin;
Node* pos=NULL;
while (temp-next)
{
if (temp-next-data.id==stid)
{
pos=temp-next;
temp-next=pos-next;
free(pos);
return --len;
}
temp=temp-next;
}
return -1;
}
int getListlen(Node* bg)
{
Node* temp=bg;
int i=0;
while (temp-next)
{
i;
temp=temp-next;
}
return i;
}
void freeList(Node* bg)
{
Node* temp=NULL;
while (bg)
{
temp=bg-next;
free(bg);
bg=temp;
}
}
int total(char* driver, tm date1, tm date2, signed short* icar,
signed short* ispeed, signed short* isignal, signed short* iother)
{
signed short result=0;
*icar=0;
*ispeed=0;
*isignal=0;
*iother=0;
Node* findNode=lookupSheet(driver, result, f_driver);
if (!findNode)
{
free(findNode);
return 0;
}
time_t o,n,nw;
date1.tm_year-=1900;
date2.tm_year-=1900;
o=mktime(date1);
n=mktime(date2);
if (on)
{
time_t tp=o;
o=n;
n=tp;
}
Node* temp=findNode-next;
while (temp)
{
tm t=temp-data.time;
t.tm_year-=1900;
nw=mktime(t);
if (nwo||nwn)
{
temp=temp-next;
continue;
}
switch (temp-data.type)
{
case 1:
(*icar);
break;
case 2:
(*ispeed);
break;
case 3:
(*isignal);
break;
case 4:
default:
(*iother);
}
temp=temp-next;
}
freeList(findNode);
return result;
}
park *pl在c语言中是什么意思?这个语句的意思是,声明了一个名为pl的指针,它指向的目标是一个类型为park的数据结构 。
c语言park是什么意思%x是以16进制输出 。04的意思是一共4位,位数不足的,左侧用0补齐 。
例如:
int i=10;
printf("x",i);
如果没有04,就是%x,那么输出64 , 加了04以后,一共4位,不足的左侧用0补齐,输出的就是0064
对于这种04的形式,对于其它格式输出的同样有效 。例如d , c
C语言停车场管理系统/*----------------------------------------------------------------
// Copyright (C) 2009 沈阳工程学院信息安全工作室
// 版权所有 。
//
// 文件名:模拟停车场问题.cpp
// 文件功能描述:模拟停车场问题
//
//
// 创建标识:20091214
//
// 修改标识:20091218
// 修改描述:完成编码
//----------------------------------------------------------------*/
//头文件
#include iostream
#include malloc.h
#include string
#include windows.h
//常量定义
#define MAX_STOP 4//定义停车场最大停车数
#define MAX_PLATE 10//定义车牌号最大长度
#define TIME_COUNT "秒"//定义时间单位
#define TIME_MS_TO_CONUT 1000//定义时间进制,意为由TIME_COUNT到毫秒的进制
#define UNIT_PRICE 10//定义单位时间收费标准
using namespace std;//使用std命名空间
//数据结构定义
//定义存储汽车信息的结构体
typedef struct
{
char license_plate[MAX_PLATE]; //汽车牌照号码 , 定义为一个字符指针类型
char state;//汽车当前状态,字符p表示停放在停车位上,字符s表示停放在便道上,每辆车的初始状态用字符i来进行表示
int time;//汽车停入停车场时的时间,用来计时收费
}CAR;
//定义模拟停车场的栈结构
typedef struct
{
CAR STOP[MAX_STOP];//汽车信息的存储空间
int top;//用来指示栈顶位置的静态指针
}SeqStack;
//定义模拟便道的队列结构
typedef struct node
{
CAR WAIT;//汽车信息的存储空间
struct node *next;//用来指示队列位置的动态指针
}QNode;//链队列节点的类型
//定义链队列的收尾指针
typedef struct
{
QNode *front,*rear;
}LQueue;//将头尾指针封装在一起的链队
//函数声明
int Empty_LQueue(LQueue *q);//判队空
int LeaveCheck(SeqStack parking , char *license_plate);//检查离开的车是否在停车场中
int QueueLength(LQueue *q);//判队长度
int Out_LQueue(LQueue *sidewalk , char *license_plate); //出队操作
int StackEmpty(SeqStack parking);//判断栈是否为空
int StackFull(SeqStack parking);//判断栈是否为满
int StackPop(SeqStack parking);//出栈操作
int StackTop(SeqStack parking , char *license_plate , int time);//取栈顶元素
void Car_come(SeqStack parking , LQueue *sidewalk);//有车到来时的操作
void Car_leave(SeqStack parking , LQueue *sidewalk);//有车离开的操作
void Display(SeqStack parking);//显示停车场内的所有信息 调试时用
void InitStack(SeqStack parking);//初始化栈
void InitList(LQueue *sidewalk);//初始化队列
void In_LQueue(LQueue *sidewalk , char *license_plate); //进队操作
void Input_Check(char *license_plate);////检验输入的车牌是否合法
void StackPush(SeqStack parking , char *license_plate , int stop_time);//进栈操作
void main()
{
//定义变量
SeqStack parking;
LQueue *sidewalk = NULL;
char *choice = new char;
int flag = 1;//定义一个变量 判断是否退出
//初始化一个为空的停车场
InitStack(parking);
//初始化一个为空的便道
InitList(sidewalk);
//运行界面及功能选择
while(flag)
{
cout"\n\t停车场模拟管理系统\n\n";
cout"\t|--------------------------------------------------|\n\n";
cout"\t|本程序为停车场的模拟管理系统 , 有车到来时请按C键 。|\n\n";
cout"\t|然后根据屏幕提示进行相关操作,有车要走时请按l键 。|\n\n";
cout"\t|然后根据屏幕提示进行相关操作,查看停车场请按D键 。|\n\n";
cout"\t|然后根据屏幕提示进行相关操作,要退出系统请按Q键 。|\n\n";
cout"\t|--------------------------------------------------|\n\n";
cout"请选择操作:";
gets(choice);
if(1 != strlen(choice))
{
cout"请正确输入选项!";
continue;
}
else
{
switch(*choice)
{
case 'c':
case 'C':
{
Car_come(parking,sidewalk);break;
}
case 'l':
case 'L':
{
Car_leave(parking,sidewalk);break;
}
case 'q':
case 'Q':
{
flag=0;break;
}
case 'd':
case 'D':
{
Display(parking);break;
}
default:
cout"选择不正确!请重新选择!\n";
}
}
}
}
//有车到来时的操作
void Car_come(SeqStack parking , LQueue *sidewalk)
{
//定义变量
char license_plate[MAX_PLATE];
cout"请输入车辆的车牌号码:";
Input_Check(license_plate);
//判断停车场是否已满 , 满则进入便道,不满进入停车场
if(StackFull(parking))
{
In_LQueue(sidewalk , license_plate);//进入便道
cout"停车场已满请在便道等候,您的位置为"QueueLength(sidewalk)
endl;
}
else
{
StackPush(parking , license_plate , GetTickCount());//进入停车场
cout"请进入停车场中的"parking.top 1"号停车位\n";
}
// Display(parking);
}
//有车离开时的操作
void Car_leave(SeqStack parking , LQueue *sidewalk)
{
//定义变量
SeqStack tmpparking;//定义临时停车场
char leave_license_plate[MAX_PLATE]; //要离开的车牌号
char license_plate[MAX_PLATE];//存放从停车场中读出来的车牌信息
int time;
InitStack(tmpparking);//初始化临时停车场
//判断停车场中是否有车
if(StackEmpty(parking))
{
cout"当前停车场中没有车\n";
return;//退出子函数
}
cout"请输入要离开的车牌照:";
Input_Check(leave_license_plate);
cout"当前停车场中有"parking.top 1"辆车\n";
if(LeaveCheck(parking , leave_license_plate)) //判断车是否在停车场中
{
//车在停车场中
cout"您的车在"LeaveCheck(parking , leave_license_plate)"号车位上\n";
while(StackTop(parking , license_plate , time)
(strcmp(parking.STOP[parking.top].license_plate , leave_license_plate) != 0))
{
strcpy(parking.STOP[parking.top].license_plate , license_plate);
cout"牌照为"license_plate"的车暂时退出停车场"parking.top 1"号位\n";
StackPush(tmpparking , license_plate , time);//停车场中的车暂时退出 进入临时停车场
StackPop(parking);//出栈
}
cout"牌照为"license_plate"的车离开停车场"parking.top 1"号位\n";
cout"您在停车场中停了"(GetTickCount()-time)/TIME_MS_TO_CONUTTIME_COUNTendl;//输出所停时间信息
cout"应缴费用为"(GetTickCount()-time)/TIME_MS_TO_CONUT*UNIT_PRICE"元\n";;//输出费用信息
StackPop(parking);//出栈
//将临时停车场中的车停回停车场
while(StackEmpty(tmpparking) != 1)
{
StackTop(tmpparking , license_plate , time);
StackPush(parking , license_plate , time);
cout"牌照为"license_plate"的车进入停车场"parking.top 1"号位\n";
license_plate[0] = '\0';
StackPop(tmpparking);
}
if(parking.top 1 == MAX_STOP-1)//判断车离开前停车场是否停满
if(QueueLength(sidewalk))//如果停满则判断便道上是否有车
{
//便道中有车 则从便道中停入停车场
Out_LQueue(sidewalk , license_plate);//出队
StackPush(parking , license_plate , GetTickCount()); //入栈
cout"在便道中牌照为"license_plate"的车进入停车场"parking.top 1"号位\n";
}
}
else
//车不在停车场中
cout"您的车不在停车场中!\n";
}
//初始化顺序栈
void InitStack(SeqStack parking)
{
parking.top = -1;
}
//判栈空
int StackEmpty(SeqStack parking)
{
if(parking.top == -1)
return 1;
else
return 0;
}
//判栈满
int StackFull(SeqStack parking)
{
if(parking.top == MAX_STOP-1)
return 1;
else
return 0;
}
//入栈
void StackPush(SeqStack parking , char *license_plate , int stop_time)
{
parking.top;
strcpy(parking.STOP[parking.top].license_plate , license_plate);
parking.STOP[parking.top].state = 'p';
parking.STOP[parking.top].time = stop_time;
}
//出栈 返回栈顶指针
int StackPop(SeqStack parking)
{
if(StackEmpty(parking))
return 0;
else
return parking.top--;
}
//取栈顶元素
int StackTop(SeqStack parking , char *license_plate , int time)
{
if(StackEmpty(parking))
return 0;
else
{
strcpy(license_plate , parking.STOP[parking.top].license_plate);
time = parking.STOP[parking.top].time;
return 1;
}
}
//显示所有
void Display(SeqStack parking)
{
if(parking.top == -1)
printf("停车场为空\n");
else
{
while(parking.top != -1)
{
cout"车牌号为:"parking.STOP[parking.top].license_plate;
cout" , 停在"parking.top1 "号车位上";
cout",已停"(GetTickCount()-parking.STOP[parking.top].time)/TIME_MS_TO_CONUTTIME_COUNTendl;
parking.top--;
}
}
}
//初始化队列
void InitList(LQueue *sidewalk)
{
sidewalk = (LQueue *)malloc(sizeof(LQueue));
sidewalk-front=sidewalk-rear = NULL;
}
//入队
void In_LQueue(LQueue *sidewalk,char *license_plate)
{
QNode *car_on_sidewalk;
car_on_sidewalk = (QNode *)malloc(sizeof(QNode));//为新节点开辟新空间
strcpy(car_on_sidewalk-WAIT.license_plate , license_plate); //将数据写入节点
car_on_sidewalk-WAIT.state = 's';//写入停车信息
car_on_sidewalk-WAIT.time = GetTickCount();//写入停车时间
car_on_sidewalk-next = NULL;
if(Empty_LQueue(sidewalk))//队空则创建第一个节点
sidewalk-front = sidewalk-rear = car_on_sidewalk;
else
{
//队非空插入队尾
sidewalk-rear-next = car_on_sidewalk;
sidewalk-rear = car_on_sidewalk;
}
}
//判队空
int Empty_LQueue(LQueue *q)
{
if(q-front == NULL)
return 1;
else
return 0;
}
//判队长度 返回队长
int QueueLength(LQueue *q)
{
QNode *p=q-front;
int i=0;
while(p != NULL)
{
i;
p=p-next;
}
return i;
}
//出队 成功返回1 队空返回0
int Out_LQueue(LQueue *sidewalk,char *license_plate)
{
QNode *car_on_sidewalk;
if(Empty_LQueue(sidewalk))//如果队空返回0
return 0;
car_on_sidewalk = sidewalk-front;
strcpy(license_plate , car_on_sidewalk-WAIT.license_plate);//取出队头元素
if(sidewalk-front == sidewalk-rear)//队中只有一个元素
sidewalk-front = sidewalk-rear=NULL;//删除元素
else
sidewalk-front = sidewalk-front-next; //队头指针后移
free(car_on_sidewalk);//释放指针
return 1;
}
//检查离开的车是否在停车场中 返回车在停车场中位置 不在则返回0
int LeaveCheck(SeqStack parking,char *license_plate)
{
int flag = parking.top 1;//定义变量记录当前车在停车场中位置
if(StackEmpty(parking))
return 0;
else
{
//查找离开车所在位置
while(parking.top != -1strcmp(parking.STOP[parking.top].license_plate , license_plate) != 0)
{
flag--;
parking.top--;
}
return flag;
}
}
//检验输入的车牌是否合法
void Input_Check(char *license_plate)
{
int flag = 1;
int i;
string tmpstr;
while(flag)
{
cintmpstr;
getchar();
if(tmpstr.length()MAX_PLATE)
{
for(i=0;i10;i)
license_plate[i] = tmpstr.c_str()[i];
flag = 0;
}
else
cout"输入有误,请重新输入:";
}
}
以前的课设 你看看吧 纯手工的~~
c语言小小小问题你就输入一个字母后直接按Enter键就可以了 。getchar()函数本身就只会接收一个字母 。
【c语言park函数 c语言pack函数】c语言park函数的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于c语言pack函数、c语言park函数的信息别忘了在本站进行查找喔 。

    推荐阅读