数据结构停车场管理系统课设报告模板及实现代码.doc_第1页
数据结构停车场管理系统课设报告模板及实现代码.doc_第2页
数据结构停车场管理系统课设报告模板及实现代码.doc_第3页
数据结构停车场管理系统课设报告模板及实现代码.doc_第4页
数据结构停车场管理系统课设报告模板及实现代码.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

数据结构课程设计上机实习报告课 设 题 目停车场管理系统系 部班 级学 生 姓 名学 号序 号指 导 教 师时 间停车场管理系统一、设计目的1.进一步熟悉VC+开发环境,熟悉用C语言完成一个应用程序的设计过程,掌握有关编辑、调试和整合程序的方法和技巧。2.通过此设计,了解数据结构课程中图的逻辑结构和物理结构;掌握有关图的相关实际应用以及对应算法的原理与具体实现;体会数据结构在解决现实问题中的作用和重要性。3.通过此设计,学会分析算法时间复杂度和空间复杂度的方法,针对求解相同问题的不同算法,掌握对其性能的比较策略。4.更加了解线性表的实际作用与线性表的利端与弊端。二、设计内容1.设计题目:停车场管理系统2.问题描述:对于停车位的问题,在城市的某些地方一直都是个不小的问题。本题就是一个解决停车场停车问题的程序,主要解决对车辆的记录,停车情况、停车信息的记录和对出库汽车的价格计算。车辆入库车辆出库计算费用显示车场历史记录退出保存停车场管理系统3.基本要求:汽车在停车场内按车辆到达时间的先后顺序,依次停入停车场,输入车辆的车牌号及驶入时间。若车场内已停满 n 辆汽车,则显示停车场已满。 若车牌号重复,则重新输入车牌号。 车辆离开,输入离开车辆的车牌号,在它之后进入的车辆退出车场进入临 时栈为它让路,待该辆车开出后,其他车辆再按原次序进入车场。如果无此车牌号,说明库中无此车辆,选择其它指令。开始车辆入库,判断库满、车辆是否存在退出保存信息出库,判断库空、车辆是否存在显示信息/历史记录和车场信息结束从新输入三、数据结构说明在该程序中我仅仅使用了两种结构体:1. 顺序表结构体的使用:typedef struct /时间的顺序表结构体int year;int moon;int day; /日int hours; /时int minute; /分double yuan; /钱Time;该结构体用来存储车辆的入库和出库时间以及出库后的费用。typedef struct /定义顺序表结构体char listNM; /车牌号Time intimeN; /入库时间Time outtimeN; /出库时间SeqList;该结构体主要用来存储车牌号以及调用时间结构体。2.顺序栈的使用:typedef struct /栈的结构体SeqList car; /存放车牌号的顺序表int top; /栈顶指针stack,*Gcar;该结构体用栈的形式定义,调用顺序表,实现车辆信息的存储。四、详细设计以总-分形式对每个部分的设计进行详细的描述,要求有文字、有简单流程图。2级标题用三号、宋体加粗;正文用小四号、宋体、行间距16磅,首行缩进2个字符。五、调试与测试对结果进行相应展示、描述和分析,要体现测试和调试的过程。所有图下面都要有序号正文当中不要有代码六、课程设计总结对此次课程设计中遇到的问题进行分析总结;对此次课设收获、心得、意见、建议等进行总结。七、附录附上详细代码代码用5号字体,#include#include#include#include#define M 10#define N 20pushcar(); /车辆入库init_Gcar(); /初始化void display(); /显示int outcar();incar();pushagan();void spend();void gettime(); /提取系统时间pushouttime();o_fp();WriteFile();o_history();void Writehistory();int count();typedef struct /时间的结构体int year;int moon;int day; /日int hours; /时int minute; /分double yuan; /钱Time;typedef struct /定义顺序表结构体char listNM; /车牌号Time intimeN; /入库时间Time outtimeN; /出库时间SeqList;typedef struct /入库结构体SeqList car; /存放车牌号的顺序表int top;stack,*Gcar;/初始化Gcar init_Gcar(stack *s)if(s)s-top=-1;return s;else return NULL;/写入车牌号和入库时间Gcar pushcar(Gcar s)if(s-top=N)printf(停车场已满!nnn);return NULL;else int i,a=0;i=s-top;printf(请输入车牌号:n);char UM;scanf(%s,U);for(i;i-1;i-)if(strcmp(U,s-car.listi)=0) /字符的比较用strcmp函数printf(该车已存在于车场中,请查证!n);a=1;if(a=0)s-top+;strcpy(s-car.lists-top,U);printf(已自动获取当前系统时间);time_t rawtime;struct tm *timeinfo;time(&rawtime);timeinfo=localtime(&rawtime);imes-top.year=timeinfo-tm_year+1900;imes-top.moon=timeinfo-tm_mon+1;imes-top.day=timeinfo-tm_mday;imes-top.hours=timeinfo-tm_hour;imes-top.minute=timeinfo-tm_min;printf(%5d:%d:%d:%d:%dnn,imes-top.year,imes-top.moon,imes-top.day,imes-top.hours,imes-top.minute);return s;else return s;/车辆进入临时栈Gcar incar(Gcar o,Gcar S,int a)o-top=-1;while(S-top!=a)o-top+;strcpy(o-car.listo-top,S-car.listS-top);imeo-top.year=S-imeS-top.year;imeo-top.moon=S-imeS-top.moon;imeo-top.day=S-imeS-top.day;imeo-top.hours=S-imeS-top.hours;imeo-top.minute=S-imeS-top.minute;S-top-;return o;/车辆回到停车场Gcar pushagan(Gcar s,Gcar o,int a)s-top=a;while(o-top!=-1)strcpy(s-car.lists-top,o-car.listo-top);imes-top.year=imeo-top.year;imes-top.moon=imeo-top.moon;imes-top.day=imeo-top.day;imes-top.hours=imeo-top.hours;imes-top.minute=imeo-top.minute;o-top-;s-top+;return s;/车辆出库int outcar(Gcar s,char x)int a=-1;int i=s-top;if(s-top=-1)printf(停车场为空!nnn);return a;elsefor(i;i-1;i-)if(strcmp(x,s-car.listi)=0) /字符的比较用strcmp函数a=i;return a;/计算给定的时间是自2000年起的第几分钟int count(int year,int month,int day,int hour,int minter)int i,sum=0,flag=0;int a13=0,31,28,31,30,31,30,31,31,30,31,30,31;sum=(year-2000)*525600;sum=(year-1)/4)*1440+sum; /计算一百年内的时间for(i=1;i2) sum=sum+1440;/多一天的分钟数sum=sum+(day-1)*1440;/加上本月月初到今天剩余的分钟数sum=sum+(hour-1)*24;/加上当前小时数sum=sum+(minter-1);/加上当前分数return sum;/计算费用double spend(Gcar JKL) /只能计算2000到2100年内的时间差,无法计算跨年时间差double i;int m,n;m=count(JKL-car.outtime1.year,JKL-car.outtime1.moon,JKL-car.outtime1.day,JKL-car.outtime1.hours,JKL-car.outtime1.minute);n=count(JKL-ime1.year,JKL-ime1.moon,JKL-ime1.day,JKL-ime1.hours,JKL-ime1.minute);i=(m-n)*0.05;return i;/出库时间的输入Gcar pushouttime(Gcar S,Gcar JKL,int a)double I;time_t rawtime;struct tm *timeinfo;time(&rawtime);timeinfo=localtime(&rawtime);S-car.outtimea.year=timeinfo-tm_year+1900;S-car.outtimea.moon=timeinfo-tm_mon+1;S-car.outtimea.day=timeinfo-tm_mday;S-car.outtimea.hours=timeinfo-tm_hour;S-car.outtimea.minute=timeinfo-tm_min;printf(已自动获取当前系统时间);printf(%5d:%d:%d:%d:%dnn,S-car.outtimea.year,S-car.outtimea.moon,S-car.outtimea.day,S-car.outtimea.hours,S-car.outtimea.minute);strcpy(JKL-car.list1,S-car.lista);JKL-ime1.year=S-imea.year;JKL-ime1.moon=S-imea.moon;JKL-ime1.day=S-imea.day;JKL-ime1.hours=S-imea.hours;JKL-ime1.minute=S-imea.minute;JKL-car.outtime1.year=S-car.outtimea.year;JKL-car.outtime1.moon=S-car.outtimea.moon;JKL-car.outtime1.day=S-car.outtimea.day;JKL-car.outtime1.hours=S-car.outtimea.hours;JKL-car.outtime1.minute=S-car.outtimea.minute;I=spend(JKL);JKL-car.outtime1.yuan=I;printf( 入库时间 出库时间 费用n);printf(%5d:%d:%d:%d:%d %d:%d:%d:%d:%d ¥%.2lfnn,JKL-ime1.year,JKL-ime1.moon,JKL-ime1.day,JKL-ime1.hours,JKL-ime1.minute,JKL-car.outtime1.year,JKL-car.outtime1.moon,JKL-car.outtime1.day,JKL-car.outtime1.hours,JKL-car.outtime1.minute,I);return JKL;/输出显示void display(Gcar s)int i=s-top;printf(车牌号 入库时间n);if(s-top=-1) printf(停车场为空!nnn);elsefor(i;i-1;i-)printf(%-15s %5d年%2d月%2d日%2d:%2dn,s-car.listi,imei.year,imei.moon,imei.day,imei.hours,imei.minute);/历史记录Gcar history(Gcar JKL,Gcar H)H-top+;strcpy(H-car.listH-top,JKL-car.list1);H-imeH-top.year=JKL-ime1.year;H-imeH-top.moon=JKL-ime1.moon;H-imeH-top.day=JKL-ime1.day;H-imeH-top.hours=JKL-ime1.hours;H-imeH-top.minute=JKL-ime1.minute;H-car.outtimeH-top.year=JKL-car.outtime1.year;H-car.outtimeH-top.moon=JKL-car.outtime1.moon;H-car.outtimeH-top.day=JKL-car.outtime1.day;H-car.outtimeH-top.hours=JKL-car.outtime1.hours;H-car.outtimeH-top.minute=JKL-car.outtime1.minute;H-car.outtimeH-top.yuan=JKL-car.outtime1.yuan;return H;/从文件中读取停车场信息Gcar o_fp(Gcar S)FILE *fp;char str81;fp=fopen(计科61202.txt,r);if(fp=NULL)printf(文件打开失败!);exit(0);fgets(str,81,fp); /如果一开始文档中为空,则程序开始时会输出随机字符printf(%s,str);S-top+;while(!feof(fp) /feof() 这个函数是当读到文件结束符就返回 true 值,而非到文件最后一个字符,所以当读完文件最后一个字符时,/如果后面还有换行或者空格的时候, 他会继续循环。 所以就会多把最后循环一次,而EOF则是/End Of File,在电脑的术语缩写通常为 EOF,在作业系统决定资料源无更多的资料可读取。资料源通常称为档案或串流搜索。if(fscanf(fp,%s %d年%d月%d日%d:%d,S-car.listS-top,&S-imeS-top.year,&S-imeS-top.moon,&S-imeS-top.day,&S-imeS-top.hours,&S-imeS-top.minute)!=EOF)printf( %8s %2d年%2d月%2d日%2d:%2dn,S-car.listS-top,S-imeS-top.year,S-imeS-top.moon,S-imeS-top.day,S-imeS-top.hours,S-imeS-top.minute);S-top+;S-top-; /消去多出来却没有存储数据的一行fclose(fp);printf(n); return S;/保存车库信息void WriteFile(Gcar S)FILE *fp;fp=fopen(计科61202.txt,w);if(fp=NULL)printf(文件打开失败!);exit(0);fprintf(fp, 车牌号 入库时间n);while(S-top!=-1)fprintf(fp, %s %2d年%2d月%2d日%2d:%2dn,S-car.listS-top,S-imeS-top.year,S-imeS-top.moon,S-imeS-top.day,S-imeS-top.hours,S-imeS-top.minute);S-top-;fclose(fp);/从文件中读取历史记录Gcar o_history(Gcar S)FILE *fp;char str81;fp=fopen(历史记录.txt,r);if(fp=NULL)printf(文件打开失败!);exit(0);fgets(str,81,fp); /如果一开始文档中为空,则程序开始时会输出随机字符printf(%s,str);S-top+;while(!feof(fp) /feof() 这个函数是当读到文件结束符就返回 true 值,而非到文件最后一个字符,所以当读完文件最后一个字符时,/如果后面还有换行或者空格的时候, 他会继续循环。 所以就会多把最后循环一次,而EOF则是/End Of File,在电脑的术语缩写通常为 EOF,在作业系统决定资料源无更多的资料可读取。资料源通常称为档案或串流搜索。if(fscanf(fp,%s %d年%d月%d日%d:%d %d年%d月%d日%d:%d ¥%lf,S-car.listS-top,&S-imeS-top.year,&S-imeS-top.moon,&S-imeS-top.day,&S-imeS-top.hours,&S-imeS-top.minute,&S-car.outtimeS-top.year,&S-car.outtimeS-top.moon,&S-car.outtimeS-top.day,&S-car.outtimeS-top.hours,&S-car.outtimeS-top.minute,&S-car.outtimeS-top.yuan)!=EOF)printf( %8s %2d年%2d月%2d日%2d:%2d %2d年%2d月%2d日%2d:%2d ¥%.2lfn,S-car.listS-top,S-imeS-top.year,S-imeS-top.moon,S-imeS-top.day,S-imeS-top.hours,S-imeS-top.minute,S-car.outtimeS-top.year,S-car.outtimeS-top.moon,S-car.outtimeS-top.day,S-car.outtimeS-top.hours,S-car.outtimeS-top.minute,S-car.outtimeS-top.yuan);S-top+;S-top-; /消去多出来却没有存储数据的一行fclose(fp);printf(n); return S;/保存历史信息void Writehistory(Gcar S)FILE *fp;fp=fopen(历史记录.txt,w);if(fp=NULL)printf(文件打开失败!);exit(0);fprintf(fp, 车牌号 入库时间 出库时间n);while(S-top!=-1)fprintf(fp, %s %d年%d月%d日%d:%d %d年%d月%d日%d:%d %.2lf¥n,S-car.listS-top,S-imeS-top.year,S-imeS-top.moon,S-imeS-top.day,S-imeS-top.hours,S-imeS-top.minute,S-car.outtimeS-top.year,S-car.outtimeS-top.moon,S-car.outtimeS-top.day,S-car.outtimeS-top.hours,S-car.outtimeS-top.minute,S-car.outtimeS-top.yuan);S-top-;fclose(fp);void main()Gcar S,O,JKL,H;H=(Gcar)malloc(sizeof(stack);/用来存历史记录JKL=(Gcar)malloc(sizeof(stack);/用来存出停车场的车辆信息S=(Gcar)malloc(sizeof(stack);/停车场O=(Gcar)malloc(sizeof(stack);/中转站in

温馨提示

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

评论

0/150

提交评论