VB数据库编程技术ppt.docx
- 文档编号:7039908
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:12
- 大小:17.90KB
VB数据库编程技术ppt.docx
《VB数据库编程技术ppt.docx》由会员分享,可在线阅读,更多相关《VB数据库编程技术ppt.docx(12页珍藏版)》请在冰豆网上搜索。
VB数据库编程技术ppt
任务:
航空客运定票的业务活动包括:
查询航线、客票预定和办理退票等。
试设计一个航空客运定票系统,以使上述业务可以借助计算机来完成。
功能要求:
1)录入:
可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具
体数据自定)
2)查询:
可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵
达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,
查询飞机航班情况;
3)订票:
(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果
该航班已经无票,可以提供相关可选择航班;
4)退票:
可退票,退票后修改相关数据文件;
5)客户资料:
有姓名,证件号,订票数量及航班情况,订单要有编号;
6)修改航班信息:
当航班信息改变可以修改航班数据文件。
推荐答案
#include"stdio.h"
#include"time.h"
#defineMAXNUM5//停车场车位数
#definePRICE2.0//每小时收费
typedefstructcar//定义车的结构体
{
charnum[10];//车牌号(最多10个字节)
structtmintime;//进入时间
structtmouttime;//离开时间
intexpense;//费用
intlength;//停车时长
intposition;//停车位
}CAR;
typedefstruct//栈结构
{
CARcar[MAXNUM];//车辆信息
inttop;//栈顶指针
}SeqStack;
voidStackInit(SeqStack*s)//初始化栈
{
s->top=-1;
}
intStackIsEmpty(SeqStack*s)//判断栈是否为空
{
if(s->top==-1)
return1;
else
return0;
}
intStackIsFull(SeqStack*s)//判断栈是否为满
{
if(s->top==MAXNUM-1)
return1;
else
return0;
}
voidStackPush(SeqStack*s,CARcar)//进栈
{
if(!
StackIsFull(s))//若栈未满
{
s->top++;//修改栈顶指针
s->car[s->top]=car;//将车辆信息入栈
}
}
CARStackPop(SeqStack*s)//出栈
{
CARcar;
if(s->top!
=-1)//栈不为空
{
car=s->car[s->top];
s->top--;
returncar;
}
}
CARStackGetTop(SeqStack*s)//取栈顶元素
{
CARcar;
if(s->top!
=-1)
{
car=s->car[s->top];
returncar;
}
}
//队列链表
typedefstructcarnode//定义链队列的节点
{
CARdata;
structcarnode*next;
}CarNodeType;
typedefstruct//链队列
{
CarNodeType*head;//头指针
CarNodeType*rear;//尾指针
}CarChainQueue;
voidChainQueueInit(CarChainQueue*q)//初始化链队列接点性质
{
if(!
(q->head=(CarNodeType*)malloc(sizeof(CarNodeType))))
{
printf("内存分配失败!
\n");
exit(0);
}
q->rear=q->head;//头尾指针相同
q->head->next=NULL;//头尾指针后下一个节点为空
q->rear->next=NULL;
}
voidChainQueueIn(CarChainQueue*q,CARcar)//入队列
{
CarNodeType*p;
if(!
(p=(CarNodeType*)malloc(sizeof(CarNodeType))))
{
printf("内存分配失败!
\n");
exit(0);
}
p->data=car;
p->next=NULL;
q->rear->next=p;
q->rear=p;
}
CARChainQueueOut(CarChainQueue*q)//出队列
{
CarNodeType*p;
CARcar;
if(q->head!
=q->rear)
{
p=q->head->next;
if(p->next==NULL)
{
car=p->data;
q->rear=q->head;
free(p);
}else
{
q->head->next=p->next;
car=p->data;
free(p);
}
returncar;
}
}
intChainQueueIsEmpty(CarChainQueue*q)//判断链队列是否为空
{
if(q->rear==q->head)//若队首等于列尾
return1;//返回空
else
return0;//返回非空
}
voidseparator(intn,charch,charnewline)//输出多个字符
{
inti;
for(i=0;i printf("%c",ch); if(newline==1) printf("\n"); } voidPrintDate(structtmgm_date) { printf("%d/%d%02d: %02d: %02d\n",gm_date.tm_mon,gm_date.tm_mday,gm_date.tm_hour+8,gm_date.tm_min,gm_date.tm_sec); } voidShowPark(SeqStack*s)//查看车位状态 { inti; structtmgm_date; printf("\n车位使用情况\n"); separator(40,'_',1); if(StackIsEmpty(s))//若栈是空 printf("停车场内已没有车辆! \n"); else { printf("位置\t车牌号\t进站时间\n"); for(i=0;i<=s->top;i++) { printf("%d\t",s->car[i].position); printf("%s\t",s->car[i].num); PrintDate(s->car[i].intime);//输出日期 } printf("\t\t\t共%d辆",s->top+1); if(s->top==MAXNUM-1) printf("(已满)\n"); else printf("(还可停放放%d辆)\n",MAXNUM-1-s->top); printf("\n"); } separator(40,'_',1); } voidShowAisle(CarChainQueue*q)//显示过道上车辆的情况 { if(! ChainQueueIsEmpty(q))//若队列不为空 { CarNodeType*p; p=q->head->next;//队列中的第1辆车 printf("\n\n过道使用情况\n"); separator(30,'_',1); printf("车牌\t进入时间\n"); while(p! =NULL)//队列不为空 { printf("%s\t",p->data.num); PrintDate(p->data.intime);;//显示该辆车的信息 p=p->next;//下一辆 } }else printf("\n过道上没有车在等待\n"); separator(30,'_',1); printf("\n\n"); } voidShowAll(SeqStack*s,CarChainQueue*q)//查看车位和过道使用情况 { ShowPark(s);//显示车位使用情况 ShowAisle(q);//显示过道使用情况 } voidInPark(SeqStack*s,CarChainQueue*q)//车辆进入停车场 { CARcar; structtm*gm_date; time_tseconds; time(&seconds); gm_date=gmtime(&seconds);; printf("\n车牌号: "); scanf("%s",&car.num); car.intime=*gm_date;//进入停车场的时间 if(! StackIsFull(s)&&ChainQueueIsEmpty(q))//如果车位未占完,且过道上没有车 { car.position=(s->top)+2;//车位号 StackPush(s,car);//车辆直接进入车位 ShowPark(s);//输出现在停车场的情况 } elseif(StackIsFull(s)||! ChainQueueIsEmpty(q))//如果车位已满,过道上还有车,则必须放在过道上 { printf("提示: 车位满,只有先停放在过道中。 \n"); car.position=MAXNUM; ChainQueueIn(q,car);//停放在过道 ShowPark(s);//显示车位的情况 ShowAisle(q);//输出过道上的情况 } } voidPrintRate(CAR*car)//离开时输出费用等情况 { printf("\n\n账单\n"); separator(30,'_',1); printf("车牌: %s\n",car->num); printf("停车位置: %d\n",car->position); printf("进入时间: "); PrintDate(car->intime); printf("离开时间: "); PrintDate(car->outtime); printf("停车时间(秒): %d\n",car->length); printf("费用(元): %d\n",car->expense); separator(30,'_',1); printf("\n\n"); } voidOutPark(SeqStack*s,CarChainQueue*q)//车出站出当时过道上的情况放在过道上直接进入车站 { structtm*gm_date; time_tseconds; SeqStackp;//申请临时放车的地方 StackInit(&p); charnowtime[10]; inti,pos; CARcar; if(StackIsEmpty(s))//如果车位中没有车辆停放 { printf("所有车位都为空,没有车辆需要离开! \n"); } else { printf("现在车位使用情况是: \n"); ShowPark(s);//输出车位使用情况 printf("哪个车位的车辆要离开: "); scanf("%d",&pos); if(pos>0&&pos<=s->top+1)//输入车位号正确 { for(i=s->top+1;i>pos;i--)//在将pos车位之后停的车放入临时栈,以使pos车位的车出来 { car=StackPop(s);//出栈 car.position=car.position-1;//修改车位号 StackPush(&p,car);//将车辆放入临时栈 } car=StackPop(s);//将位于pos车位的车辆出栈 time(&seconds); gm_date=gmtime(&seconds);//获取当前时间 car.outtime=*gm_date;//离开时间 car.length=mktime(&car.outtime)-mktime(&car.intime);//停车场中停放时间 car.expense=(car.length/3600+1)*PRICE;//费用 PrintRate(&car);//输出车出站时的情况---进入时间,出站时间,原来位置,花的费用等 while(! StackIsEmpty(&p))//将临时栈中的车重新进入车位 { car=StackPop(&p);//从临时栈中取出一辆车 StackPush(s,car);//将车进入车位 } while(! StackIsFull(s)&&! ChainQueueIsEmpty(q))//如果车位未满,且过道上还有车 { car=ChainQueueOut(q);//将最先停在过道中的车辆进入车位 time(&seconds); gm_date=gmtime(&seconds);//获取当前时间 car.intime=*gm_date;//保存进入车位的时间 StackPush(s,car);//将车辆进入车位 } } else//车位号输入错误 { printf("车位号输入错误,或该车位没有车辆! \n"); } } } intmain() { SeqStackPark;//停车场栈 CarChainQueueAisle;//过道链表 StackInit(&Park); ChainQueueInit(&Aisle); charchoice; do{ printf("\n\n"); separator(10,'',0); printf("停车场管理\n"); separator(30,'_',1); printf("1.车辆进入\n"); printf("2.车辆离开\n"); printf("3.查看停车场情况\n"); printf("0.退出系统\n"); separator(56,'_',1); printf("提示: 本停车场有%d个车位,车位停满后的车辆将停放在过道上。 \n",MAXNUM); printf("本停车场时计费,收费标准: %.2f元/小时,过道上不收费。 \n\n",PRICE); printf("\n选择操作(0~3): "); fflush(stdin); choice=getchar(); switch(choice) { case'1': //车辆进入 InPark(&Park,&Aisle); break; case'2': //车辆离开 OutPark(&Park,&Aisle); break; case'3': ShowAll(&Park,&Aisle); break; } }while(choice! ='0'); return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 数据库 编程 技术 ppt