车辆调度程序C语言课设报告_第1页
车辆调度程序C语言课设报告_第2页
车辆调度程序C语言课设报告_第3页
车辆调度程序C语言课设报告_第4页
车辆调度程序C语言课设报告_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章使用说明与执行结果第4章使用说明与执行结果主菜单:*******************************************************汽车调度程序********************************************************1.汽车调度**2.汽车归还**3.车辆总况一览**4.车辆查询**5.新车登记**6.车辆注销**7.退出系统********************************************************请选择:1-7*******************************************************请输入您的选项:4.1车辆调度:进入车辆调度功能!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~请输入租车人姓名:WAHAHA请输入租车人身份证号:123456789987654321请输入计划归还时间(格式YYYY-MM-DD,如2011-03-24):2011-3-26请选择您需要的车型(A.大型车B.中型车C.小型车E.返回主菜单请输入大写字母!):B**************************可选车辆列****************************车辆编号车牌号驾驶员车辆类型车辆状态上次出车时间(DDYYMM)1005KDF005LILIUB可调出NEW1009KDF009ZHAOJIEB可调出2011-03-11*****************************************************************请输入车辆编号或输入W智能筛选(输入E返回主菜单):W****************************车辆调度结果************************已调出车辆:1005,驾驶员:LILIU,出车日期:2011-03-24*****************************************************************请按任意键继续...4.2车辆归还:1.信息输入错误进入车辆归还功能!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~请输入汽车编号:1001请输入租车人姓名:YANGZHENPU请输入租车人身份证号:123456789987654321租车人姓名或身份证号输入有误!请按任意键继续..2.归还太迟:进入车辆归还功能!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~请输入汽车编号:1003请输入租车人姓名:LIUZHIGONG请输入租车人身份证号:123456789123456789归还失败,您的车辆已超期,请到总服务台办理超期还车手续!请按任意键继续...3.归还成功:进入车辆归还功能!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~请输入汽车编号:1005 请输入租车人姓名:WAHAHA请输入租车人身份证号:123456789987654321汽车归还成功!请按任意键继续...4.3车况一览:进入车况一览功能!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~车辆编号车牌号驾驶员车型车辆状态上次出车时间租车人姓名计划归还时间1001KDF001ZHANGSANA可调出2011-03-12N/AN/A1002KDF002LISIB出车中2011-03-15LIUZHIGONG2011-03-201003KDF003ZHAOLIUA出车中2011-03-11LIUZHIGONG2011-03-141004KDF004ZHANGWUC可调出2011-03-12N/AN/A1005KDF005LILIUB可调出2011-03-24N/AN/A1006KDF006ZHAOLIB出车中2011-03-11LIUZHIGONG2011-03-171007KDF007ZHANGXUEA出车中2011-03-17QIANGGE2011-3-181008KDF008LIJIEC可调出NEWN/AN/A1009KDF009ZHAOJIEB可调出2011-03-11N/AN/A1010KDF010ZHOUSUA可调出2011-03-14N/AN/A1011DFD222ZHIGONGC可调出NEWN/AN/A1012KDF010ZHOULANGA可调出2011-03-15N/AN/A请按任意键继续...4.4车辆查询:进入车辆查询功能!请输入汽车编号或车牌号:1005***************找到了符合条件的车辆信息*****************************车辆编号车牌号驾驶员车型车辆状态上次出车时间租车人姓名计划归还时间1005KDF005LILIUB可调出2011-03-24N/AN/A请按任意键继续...4.5新车登陆:进入车新车登陆功能!请输入车牌号:KSF008请输入驾驶员:LEHAHA请选择车辆类型(A/B/C):C成功登记牌号为:KSF008的车辆,车辆编号为:1013!请按任意键继续...4.6车辆注销:进入车辆注销功能!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~请输入需要注销的车辆编号:1011已注销编号为1011的车辆!请按任意键继续...4.7退出系统:*******************************************************汽车调度程序********************************************************1.汽车调度**2.汽车归还**3.车辆总况一览**4.车辆查询**5.新车登记**6.车辆注销**7.退出系统********************************************************请选择:1-7*请输入您的选项:7您确定要退出系统?输入Y确定,输入N返回主菜单Y沈阳航空航天航天大学课程设计报告参考文献参考文献[1]张长海.C语言程序设计[M].北京:高等教育出版社,2006[2]裘宗燕.从问题到程序:程序设计与C语言引论[M].北京:机械工业出版社,2005.9[3]王敬华,林萍,张清国.C语言程序设计教程[M].北京:清华大学出版社,2009.8、[4]谭浩强.C程序设计[M].北京:清华大学出版社,2005[5]谭浩强.C程序设计题解与上机指导[M].北京:清华大学出版社,2005[6]胡建平.C语言程设计学习指导书[M].天津:天津大学出版社,2005[7]谭明金,余海英.C语言程序设计实例精粹[M].北京:电子工业出版社,2006沈阳航空航天大学课程设计报告附录附录(程序清单)#include<stdio.h>#include<stdlib.h>#include<string.h>#include<windows.h>intfeature;//定义输入的功能选项charnow_date[12];//定义系统当前日期存储缓冲区SYSTEMTIMEsys;//定义系统时间变量//定义车辆数据结构typedefstructVehicle{ char*ver_id;//定义车辆编号 char*ver_no;//定义车辆牌号 char*driver;//定义车辆对应驾驶员 char*ver_type;//定义车辆类型 char*ver_status;//定义车辆状态 char*ver_last_date;//定义车辆归还日期 char*lender_name;//定义租车人姓名 char*lender_id;//定义租车人身份证号码 char*return_time;//定义归还时间}Vehicle,*VData;//定义车辆链表typedefstructVNode{ Vehicledata; structVNode*next;}VNode,*VehicleList;//声明函数VehicleListselect_vehicle(VehicleListL,char*key);//定义车辆查询函数VehicleListInitList(VehicleListL);//定义链表初始化函数VehicleListLoadData(VehicleListL,char*filename);//定义信息读取函数voidSaveData(VehicleListL,char*filename);//定义存储数据函数intmain_menu();//定义主菜单intdispatch(VehicleListL,char*lender_name,char*lender_id,char*return_time);//定义车辆调度函数voidback_vehicle(VehicleListL,char*key,char*lender_name,char*lender_id);//定义车辆归还函数voidlist_all(VehicleListL);//定义车辆总览函数VehicleListselect_vehicle(VehicleListL,char*key);//定义车辆查询函数VehicleListregister_vehicle(VehicleListL);//定义车辆登记函数voiddelete_vehicle(VehicleListL,char*key);//定义车辆删除函数intdatecmp(char*a,char*b);//定义日期比较函数intquit();//定义退出函数char*getS();//定义字符串输入接口函数char*getS(){ char*c; chars[30]; scanf("%s",s); c=(char*)malloc(sizeof(char)*(strlen(s)+1)); strcpy(c,s); returnc;}//定义链表初始化函数VehicleListInitList(VehicleListL){ L=(VehicleList)malloc(sizeof(VNode)); L->next=NULL; returnL;}//定义比较日期大小函数intdatecmp(char*a,char*b){ inti; for(i=0;i<11;i++) { if(a[i]>b[i]) return1; elseif(a[i]==b[i]) continue; else return-1; } return0;}//定义从文件加载数据函数VehicleListLoadData(VehicleListL,char*filename){ VehicleListp,q; //Vehiclev,v2,v3; Vehiclevdata; FILE*fp;//定义文件指针 charver_id[20],ver_no[20],driver[20],ver_type[20],ver_status[20],ver_date[20]; charlender_name[20],lender_id[20],return_time[20]; q=L; if((fp=fopen(filename,"r+"))==NULL) { printf("文件数据读取失败!\n"); } else { while(!feof(fp))//将文件中数据读取到链表中 { fscanf(fp,"%s%s%s%s%s%s%s%s%s\r\n",ver_id,ver_no,driver, ver_type,ver_status,ver_date,lender_name,lender_id,return_time); vdata.ver_id=(char*)malloc(sizeof(char)*(strlen(ver_id)+1)); vdata.ver_no=(char*)malloc(sizeof(char)*(strlen(ver_no)+1)); vdata.driver=(char*)malloc(sizeof(char)*(strlen(driver)+1)); vdata.ver_type=(char*)malloc(sizeof(char)*(strlen(ver_type)+1)); vdata.ver_status=(char*)malloc(sizeof(char)*(strlen(ver_status)+1)); vdata.ver_last_date=(char*)malloc(sizeof(char)*(strlen(ver_date)+1)); vdata.lender_name=(char*)malloc(sizeof(char)*(strlen(lender_name)+1)); vdata.lender_id=(char*)malloc(sizeof(char)*(strlen(lender_id)+1)); vdata.return_time=(char*)malloc(sizeof(char)*(strlen(return_time)+1)); strcpy(vdata.ver_id,ver_id); strcpy(vdata.ver_no,ver_no); strcpy(vdata.driver,driver); strcpy(vdata.ver_type,ver_type); strcpy(vdata.ver_status,ver_status); strcpy(vdata.ver_last_date,ver_date); strcpy(vdata.lender_name,lender_name); strcpy(vdata.lender_id,lender_id); strcpy(vdata.return_time,return_time); p=(VehicleList)malloc(sizeof(VNode)); p->data=vdata; q->next=p; q=p; } } q->next=NULL; fclose(fp); returnL;}//定义存储数据函数voidSaveData(VehicleListL,char*filename){ VehicleListp; FILE*fp;//定义文件指针 p=L; if((fp=fopen(filename,"w+"))==NULL) { printf("文件写入失败!\n"); } else { while(p->next!=NULL) { fprintf(fp,"%s%s%s%s%s%s%s%s%s\r\n",p->next->data.ver_id,p->next->data.ver_no, p->next->data.driver,p->next->data.ver_type,p->next->data.ver_status, p->next->data.ver_last_date,p->next->data.lender_name, p->next->data.lender_id,p->next->data.return_time); p=p->next; } } fclose(fp);}//定义主菜单intmain_menu(){ inti; printf("******************************************************\n"); printf("*汽车调度程序*\n"); printf("******************************************************\n"); printf("*1.汽车调度*\n"); printf("*2.汽车归还*\n"); printf("*3.车辆总况一览*\n"); printf("*4.车辆查询*\n"); printf("*5.新车登记*\n"); printf("*6.车辆注销*\n"); printf("*7.退出系统*\n"); printf("******************************************************\n"); printf("*请选择:1-7*\n"); printf("******************************************************\n"); printf("请输入您的选项:"); scanf("%d",&i); feature=i; returni;}//定义功能1--汽车调度intdispatch(VehicleListL,char*lender_name,char*lender_id,char*return_time){ char*vtype,*vid;//车型 VehicleListp,q1,q2; chartmpdate[20]; inti=0; p=L; q1=L; q2=L; strcpy(tmpdate,now_date); printf("\n请选择您需要的车型(A.大型车B.中型车C.小型车E.返回主菜单请输入大写字母!):"); vtype=getS(); if(strcmp("E",vtype)==0)return0;//如果输入E,返回主菜单 printf("\n****************************************可选车辆列表******************************************"); printf("\n车辆编号车牌号驾驶员 车辆类型车辆状态上次出车时间(DDYYMM)\n"); while(L->next!=NULL) {//显示符合条件的在库车辆信息 if(strcmp("出车中",L->next->data.ver_status)!=0&&strcmp(vtype,L->next->data.ver_type)==0) { if(datecmp(tmpdate,L->next->data.ver_last_date)>-1)//调用比较未调度时间的函数 { q1=L;//获得最长时间没有被调度的车的节点指针 strcpy(tmpdate,q1->next->data.ver_last_date); } printf("%6s%10s%-10s%8s%13s%15s\n", L->next->data.ver_id,L->next->data.ver_no,L->next->data.driver,L->next->data.ver_type, L->next->data.ver_status,L->next->data.ver_last_date); } if(strcmp("NEW",L->next->data.ver_last_date)==0&&strcmp(vtype,L->next->data.ver_type)==0) { i++;//计算新车数量 q2=L;//获得新车的节点指针 } L=L->next; } L=p; printf("**************************************************************************\n"); printf("请输入车辆编号或输入W智能筛选(输入E返回主菜单):"); vid=getS(); if(strcmp("W",vid)==0) { if(i>0) { printf("\n****************************************车辆调度结果****************************************"); printf("\n已调出车辆:%s,驾驶员:%s,出车日期:%s\n",q2->next->data.ver_id,q2->next->data.driver,now_date); printf("**********************************************************************************************\n"); q2->next->data.ver_status="出车中";//修改车辆状态和上次出车时间 q2->next->data.ver_last_date=(char*)malloc(sizeof(char)*(strlen(now_date)+1)); strcpy(q2->next->data.ver_last_date,now_date); strcpy(q2->next->data.lender_name,lender_name); strcpy(q2->next->data.lender_id,lender_id); strcpy(q2->next->data.return_time,return_time); return1; } else { printf("\n****************************************车辆调度结果****************************************"); printf("\n已调出车辆:%s,驾驶员:%s,出车日期:%s\n",q1->next->data.ver_id,q1->next->data.driver,now_date); printf("**********************************************************************************************\n"); q1->next->data.ver_status="出车中";//修改车辆状态和上次出车时间 q1->next->data.ver_last_date=(char*)malloc(sizeof(char)*(strlen(now_date)+1)); strcpy(q1->next->data.ver_last_date,now_date); strcpy(q1->next->data.lender_name,lender_name); strcpy(q1->next->data.lender_id,lender_id); strcpy(q1->next->data.return_time,return_time); return1; } } elseif((p=select_vehicle(L,vid))!=NULL) { p->next->data.ver_status="出车中";//修改车辆状态和上次出车时间 p->next->data.ver_last_date=(char*)malloc(sizeof(char)*(strlen(now_date)+1)); strcpy(p->next->data.ver_last_date,now_date); strcpy(p->next->data.lender_name,lender_name); strcpy(p->next->data.lender_id,lender_id); strcpy(p->next->data.return_time,return_time); printf("\n****************************************车辆调度结果****************************************"); printf("\n已调出车辆:%s,驾驶员:%s,出车日期:%s\n",p->next->data.ver_id,p->next->data.driver,now_date); printf("**********************************************************************************************\n"); return1; } elseif(strcmp("E",vid)==0) { return0; } else { printf("输入错误,请返回!\n"); return3; } return3;}//定义功能2--汽车归还voidback_vehicle(VehicleListL,char*key,char*lender_name, char*lender_id){ VehicleListp; if((p=select_vehicle(L,key))!=NULL) { if(strcmp(lender_name,p->next->data.lender_name)==0&& strcmp(lender_id,p->next->data.lender_id)==0)//姓名和身份证号输入正确才可还车 { if(datecmp(now_date,p->next->data.return_time)<1)//如果实际归还时间超出预定归还时间,提示到服务台办理 { p->next->data.ver_status="可调出";//恢复车辆状态及租车人信息为初始状态 p->next->data.lender_name="N/A"; p->next->data.lender_id="N/A"; p->next->data.return_time="N/A"; printf("\n汽车归还成功!\n\n"); } else { printf("\n归还失败,您的车辆已超期,请到总服务台办理超期还车手续!\n\n"); } } else { printf("\n租车人姓名或身份证号输入有误!\n\n"); } }else{ printf("\n没有查询到编号为:%s的车辆信息!\n\n",key); }}//定义功能3--车辆总况一览voidlist_all(VehicleListL){ printf("\n车辆编号车牌号驾驶员 车型车辆状态上次出车时间租车人姓名计划归还时间\n"); while(L->next!=NULL) {//显示所有已登记车辆信息 //if(strcmp("出车中",L->next->data.ver_status)!=0) printf("%6s%8s%-10s%1s%9s%12s%9s%12s\n", L->next->data.ver_id,L->next->data.ver_no,L->next->data.driver, L->next->data.ver_type,L->next->data.ver_status,L->next->data.ver_last_date, L->next->data.lender_name,L->next->data.return_time); L=L->next; } printf("\n"); system("pause"); }//定义功能4--车辆查询VehicleListselect_vehicle(VehicleListL,char*key){ VehicleListp; p=L; while(p->next!=NULL) {//如果查找到符合条件的车辆信息,则返回这个车辆信息节点的指针,strcmp,字符串比较函数 if(strcmp(key,p->next->data.ver_id)==0||strcmp(key,p->next->data.ver_no)==0) { returnp;//P为该车辆信息节点的指针 } else { p=p->next; } } returnNULL;}//定义功能5--新车登记VehicleListregister_vehicle(VehicleListL){ VehicleListp,q; Vehiclev;//定义新增车辆结构体 intid=1001;//初始车辆编号起始ID chartmpID[5];//车辆编号格式化为字符串 q=L; while(q->next!=NULL) { q=q->next;//将指针调至链表尾部以插入新数据 } //printf("请输入车辆编号:"); //v.ver_id=getS(); printf("请输入车牌号:"); v.ver_no=getS(); printf("请输入驾驶员:"); v.driver=getS(); printf("请选择车辆类型(A/B/C):"); v.ver_type=getS(); v.ver_status="可调出"; v.ver_last_date="NEW"; v.lender_name="N/A"; v.lender_id="N/A"; v.return_time="N/A"; //自动生成车辆编号 sprintf(tmpID,"%d",id); while(select_vehicle(L,tmpID)!=NULL){ id++; sprintf(tmpID,"%d",id);//将id转为字符串存储到tmpID中 } v.ver_id=(char*)malloc(sizeof(char)*(strlen(tmpID)+1));//分配内存空间 strcpy(v.ver_id,tmpID);//将tmpID拷贝到车辆信息结构中 if(select_vehicle(L,v.ver_no)==NULL){//检查是否已有该车牌号 p=(VehicleList)malloc(sizeof(VNode));//创建新的车辆节点 p->data=v; q->next=p;//连接新的车辆节点 q=p; //将q指针移至最后节点 q->next=NULL;//将最后一个节点的next设为NULL printf("\n成功登记牌号为:%s的车辆,车辆编号为:%s!\n\n",v.ver_no,v.ver_id); }else{ printf("\n已存在该车辆!\n\n"); } returnL;}//定义功能6--车辆注销voiddelete_vehicle(VehicleListL,char*key){ VehicleListp,q; p=L; if((p=select_vehicle(L,key))!=NULL) { q=p->next; p->next=q->next;//将节点p连接到下下一个节点,即删除找到的节点 free(q); printf("\n已注销编号为%s的车辆!\n\n",key); } else { printf("\n没有找到符合条件的车辆!\n\n"); } system("pause");}//定义功能7--退出系统函数intquit(){char*temp; temp=getS();//接受用户输入 if(strcmp("Y",temp)==0) { return1;//返回1,为确实退出 } elseif(strcmp("N",temp)==0) { return0;//返回0,则不退出,并清屏,加载主菜单 } else { return2;//返回2,说明输入错误,任意键返回主菜单 } return2;//默认返回2}intmain(){ VehicleListL1,tmpL; char*vehicle_key,*lender_name,*lender_id,*return_time; char*filename="vehicle.txt";//设置数据文件 GetLocalTime(&sys); sprintf(now_date,"%4d-%02d-%02d",sys.wYear,sys.wMonth,sys.wDay); L1=(VehicleList)malloc(sizeof(VNode)); L1=InitList(L1); L1=LoadData(L1,"vehicle.txt");main_menu: //SaveData(L1,filename);//每完成一个操作都保存数据到文件,默认选择7程序退出时才保存数据 main_menu();//加载主菜单 switch(feature) { case1: { inti; printf("请输入租车人姓名:"); lender_name=getS(); printf("请输入租车人身份证号:"); lender_id=getS(); printf("请输入计划归还时间(格式YYYY-MM-DD,如%s):",now_date); return_time=getS(); if(datecmp(now_date,return_time)>0) { printf("\n归还时间输入错误,最少需要租一天,即时间应该大于等于%s\n\n",now_date); system("pause"); system("cls"); gotomain_menu; } i=dispatch(L1,lender_name,lender_id,return_time); //调用车辆调度函数 if(i==0) { system("cls"); gotomain_menu; } else { system("pause"); system("cls"); gotomain_menu; } } case2: { printf("请输入汽车编号:"); vehicle_key=getS(); printf("请输入租车人姓名:"); lender_name=getS(); printf("请输入租车人身份证号:"); lender_id=getS(); back_vehicle(L1,vehicle_key,lender_name,lender_id);//调用车辆归还函数 system("pause"); system("cls"); gotomain_menu; } case3: { list_all(L1);//调用车辆总览函数 system("cls"); gotomain_menu; } case4: { printf("请输入汽车编号或车牌号:"); vehicle_key=getS(); tmpL=select_vehicle(L1,vehicle_key);//调用车辆查找函数 if(tmpL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论