C++课程设计汽车管理系统2_第1页
C++课程设计汽车管理系统2_第2页
C++课程设计汽车管理系统2_第3页
C++课程设计汽车管理系统2_第4页
C++课程设计汽车管理系统2_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

1、 毕业设计(论文)毕业设计(论文)题目:题目: 系系 别别 专业名称专业名称 班级学号班级学号 学生姓名学生姓名 指导教师指导教师 二二 OO 年年 月月 目 录1 绪论 .41.1 课题来源.41.2 课题意义.41.3 课题目的.41.4 应解决的主要问题及应达到的技术要求.41.5 本设计的理论依据.52 设计简介及设计方案论述.62.1 设计内容与目标.62.2 设计的重点、难点和关键.62.3 整体设计方案.63 详细设计.93.1 重点,难点技术设计与相关解决.93.2 整体、详细的设计方案.94 设计结果及分析.214.1 进入系统分析.214.2 系统操作管理分析.234.3

2、系统工作流程分析.254.4 系统整体性能分析.31总 结.32致 谢.33参考文献.34附录 主要程序代码.35汽车租赁管理系统汽车租赁管理系统学生姓名:钟斌斌 班级:0982051指导老师:摘摘 要要: 在如今数据信息爆炸的 21 世纪,人们会因为要记忆各种各样,种类繁多的信息而烦恼。在解决这个问题上,使用计算机上的管理系统占有很大的可行性和优势。任何一个正规机构,都会有自己的信息管理系统,它们分别扮演着不同的角色。车辆租凭管理系统是社会上许多使用管理系统的一个典型,它主要的任务是管理汽车租赁公司整个的租车业务。其整个的开发包括后台数据库的维护和开发,还有前端基本应用程序的编写和开发。前者

3、是汽车租赁管理系统很重要的部分,完整的数据库系统都不能缺少。但由于现在的学习水平还没有达到这个高度,所以这一部分在车辆租凭管理系统中暂不详细说明。完成前台程序的开发,可以使用 c,c+,c#,Java,VB等语言都可实现,经过 UML 的分析和思路的整合,考虑到 C+的高效性,最终我选择了C+作为编程语言,结合链表、文件流读写的知识和查阅相关文献,在学校指导老师的帮助下,基本完成了设计任务的要求。基本功能:管理功能、服务功能、查询功能。对于用户来说,可以使用查询功能查询车辆的基本情况和租凭情况。管理员则可以对此系统进行管理,即对车辆进行添加、删除、修改信息、租车、还车、对所有车辆信息的查询。关

4、键字:管理系统;c+;链表;文件流 指导老师签名:指导老师签名: Car rental management system Student name :Zhong Binbin Class:0982051Abstract: Data in the era of information explosion in 21s, the society will due to the memory of various information is somewhat annoyed. To solve this problem, the computer management system has gr

5、eat advantages and feasibility. Every formal institutions, have their own information management system, which bears a different task.Vehicle lease management system is a social business management system is a typical management company, mainly the car rental business. Its development mainly include

6、s the backstage database development and maintenance, and the front-end application program development and programming. The former is a very important part of the system, a complete database system it lacks. But now the learning level and course have not reached this level, so this part of the vehi

7、cle lease management system not stated. In this focus on the completion of the program, use C, c+, c#, Java, VB and other languages can be realized, after the basic idea of the integration and analysis of UML, whereas the C + + efficiency, I choose the C + + programming language as a linked list, do

8、cument flow, combining reading and writing knowledge and access related literature, the school instructs under teachers help, basically completed the design requirements of the task.Basic functions: management function, service function, query function. For users, can use queries vehicle and the bas

9、ic situation of lease conditions. The administrator can this management system, whereby the vehicle to add, delete, modify information, car rental, car, on all vehicle information query.Key words: management system; c+; list; the file stream Signature of Supervisor:1 1 绪论绪论1.11.1 课题来源课题来源 现代社会,人的大脑开

10、始出现一定的记忆压力,因为太多的事情需要然人来处理并且记住大量的数据.计算机的出现,让人们找到了减轻压力的途径,这也是社会发展的必然,人类科技的进步的一个重要标志就是生产力的高效性。计算机与人类相比的优点就是有着极快的计算速度和准确性,性能稳定,具有很高的可靠性,根据此特点,计算机管理系统和数据库诞生了,随着社会的发展,它们的地位更是显得尤其重要,每一个正规的机构都有自己的管理系统,数据库管理系统也是计算机领域的一个重要研究方向,有着不可估量的发张前景。1.21.2 课题意义课题意义计算机管理系统在当今的商业社会有着很强大的功能,这也是这几年来计算机飞速发展的一个重要原因,计算机没有思考能力,

11、不能像人一样,它的一切活动都是建立在存储大量数据以及对这些数据进行简单的操作之上的, “人工智能”也不列外,其中计算机管理系统就是一个很好的运用。一个好的管理系统,能承当一个很庞大的任务,在公司,在学校,在政府部门,它都有着自己的职能。汽车租凭管理系统,是汽车公司的重要系统之一,它能管理日常的租凭车辆任务,可靠性高,高效,便捷,节省劳动力,一次投入多次使用,高质量的租凭管理系统和这家汽车公司的业绩是直接挂钩的。1.31.3 课题目的课题目的通过此课题的学习和设计,让我们懂得如何开发一个管理系统、需要具备的知识、准备工作和需要考虑的各种问题。当然开发一个汽车租凭管理系统,最直接的目的就是完成汽车

12、公司的租凭任务,主要负责租凭这一块,其中主要的操作包括借车、登记、还车、计费、查询和基本车库的管理。1.41.4 应解决的主要问题及应达到的技术要求应解决的主要问题及应达到的技术要求1.4.11.4.1 应解决的主要问题应解决的主要问题在此系统的开发计划中(暂不考虑后台数据库的开发) ,我们应该解决的主要问题包括:a.在计算机中写一个函数,能完成无限添加车辆和存储租车、还车相关信息的任务;b. 怎样将每次操作的记录进行保存,做到每次输入的信息永久有效;c.怎样做一个人性化的操作界面,既具备视觉美感,操作起来又简便。1.4.21.4.2 应达到的技术要求应达到的技术要求1.能在车库中无限添加车辆

13、,删除车辆;2.能修改车辆信息;3.能输出车库中所有车的基本信息;4.租车;5.还车;6.按车号和年月查询车辆出租信息;7.按年月查询车辆出租信息;8.按车号和年月查询车辆出租费用情况;9.按年月查询车辆的出租费用情况;10.保存操作信息;11导入操作信息;12.操作简单,界面具有美感;13.整体性能完整;具体要达到的功能要求如下图中所示:图 111.51.5 本设计的理论依据本设计的理论依据计算机有较强的运算能力和存储数据的功能,具有较强的稳定性和可靠性。链表可以实现无限条记录的保存和查找,可以解决无限添加车辆的问题,而文件的读写能将每次操作的有效数据在计算机内存和磁盘上进行读写,使得每次进

14、入系统从操作的数据我们都有记录,并且在下次登入系统的时候读入计算机内存,在系统程序中继续传递。2 2 设计简介及设计方案论述设计简介及设计方案论述2.12.1 设计内容与目标设计内容与目标设计的内容和主要目标是完成一个具有简单基本功能的汽车租凭管理系统,承当某汽车公司的汽车租凭任务并对其进行有效的管理。管理系统的特点是:功能基本齐全,操作简单易懂。最主要的是能完成基本的汽车租凭义务和管理,承担工作人员的大量繁琐记忆和脑力劳动。2.22.2 设计的重点、难点和关键设计的重点、难点和关键此设计的重点是各个功能函数的编码,例如添加车辆、租车、还车、计算费用,各种方式的查询等,其中这些操作都建立在对车

15、辆记录的保存和查找上,因为进行这些操作都必先找到相应的记录信息,进行修改,然后再存储起来;设计的难点是无限次添加记录和保存记录,以及对每次记录的保存入库(在下次运用此程序时上次的操作信息还在) ,包括信息的存储和读取。说到无限次添加记录,一般用数组是不能办到的,我们都知道在用数组之前必须先定义大小;关键是把各个函数正确有效地连接起来,有正确的实参传递,能正确有效地输出预期结果,达到系统管理的目的。这部分说起来简单,但实际去做,那就是程序中最难的一块,这要考虑到各个函数的关联以及每个函数完成的特殊功能和对整个信息记录的影响,就如一个机器人,要让他动起来,得花费大量的功夫来来你接他身体的机械硬件和

16、软件代码2.32.3 整体设计方案整体设计方案a读懂系统设计要求,初步了解设计思路;b首先用 UML 图分析,得出整体的设计方案;c依据 UML 图,分个写出每个函数,并留好相应的接口,以便后面每个函数的相互连接;d写一个整体的系统函数,在其中将所有函数聚合在一起,方便调用,可以用一个类来完成此任务;e写出界面函数,做到美观,操作简单,人性化;f写出 main 函数,组织调用各个函数和各种类,有效地完成整个函数的功能;g全面而又广泛地测试,发现错误,改进错误,改进程序,提高程序的健壮性。整体设计方案:定义一个结构体,里面包括车辆的属性和一些标志,如车号,车型,出租、归还时间,费用,出租状态等,

17、还有一个本身类型的指针,为了构建链表的节点。然后定义两个时间类 Date 和 Time,分别用来计算租车、还车的日期差并计算相应的费用和存储租,归还日期。接下来定义一个类,作为整体调用函数用。完成以后就开始编写各个功能的函数,添加、删除、查询、保存、导入信息等。最后完成界面输出函数和 main()函数的定义,界面函数只要做到美观、操作简单就可,主要是 main()函数,它起到整体运行程序的作用,系统能不能成功运转,就看它的正确性和高效性。下面分别是节点结构体类的定义:struct Vehiclechar VID10;char VType5;double fee1000;int vsign100

18、0;int Typesign;/作为出租方式的标志,按小时租用 1 表示,按天租用 2 表示int sign;/作为是否出租过,租了没还,租了已还的标记,分别用0,1,2 标志int k1;int k2 ; /作为 Ldate 和 Bdate 对想数组的下标Time Ldate1000;Time Bdate1000;Vehicle *next;下面分别是 Data 类的定义:class Dateprivate:int year,month,day;public:Date(int y,int m,int d):year(y),month(m),day(d)int count()int count

19、er1=0,m(month-1),d(day);for(;m0;m-)if(m=4|m=6|m=9|m=11)counter1+=30;else if(m=1|m=3|m=5|m=7|m=8|m=10)counter1+=31;else if(m=2)if(year%4=0)counter1+=29;elsecounter1+=28;else std:coutinput errora.year;y-)if(y%4=0)counter+=366;else counter+=365;return counter;其中 count()函数用来计算某个日期是该年的第几天,distances()用来计算

20、两个日期的相差天数,从而计算出费用。下面分别是 Data 类的定义:class Timeprivate:int year,month,day,hour;public:Time(int i=0,int j=0,int k=0,int m=0):year(i),month(j),day(k),hour(m)void time(int yy=0,int mm=0,int dd=0,int hh=0)year=yy;month=mm;day=dd;hour=hh;int Ryear()return year;int Rmonth()return month;int Rday()return day;i

21、nt Rhour()return hour;friend void lead();3 3 详细设计详细设计3.13.1 重点,难点技术设计与相关解决重点,难点技术设计与相关解决3.1.13.1.1 设计重点与解决方案设计重点与解决方案设计重点:各个功能函数的编码,例如添加车辆、租车、还车、计算费用,各种方式的查询等。解决方案:使用数据结构的相关知识,对整体的系统构建一个链表,用来存储每次向车库里添加的车辆,可以无限添加,这是链表和数组的区别,并在此基础上创建add(),del(),print(),lend(),back(),v_find(),v_find_all(),v_findfee(),v

22、_find_allfee(),sav(),lead()等函数。3.1.23.1.2 设计难点与解决方案设计难点与解决方案设计难点:无限次添加车辆和删除车辆,以及对每次记录的保存和读取。解决方案:前者使用链表可以解决,但一辆车到底要租到少次,我们不知道,所以存储每辆车的出租记录也需要创建一个链表,至于信息的存储和导入,我们就用文件的读写操作来完成,每次操作完成后对数据进行保存,用文件写入磁盘,然后每次打开系统的时候再将上次的记录导入程序中(计算机内存中) ,进行新的操作,这是文件的重要操作。3.23.2 整体、详细的设计方案整体、详细的设计方案3.2.13.2.1 整体的设计思路整体的设计思路运

23、用链表知识和文件的读写操作写一个基于命令提示符窗口的汽车租凭管理系统,先写一个存储车辆所有信息的链表,以便于添加车辆,和进行后续的相关工作,然后就是将计算机内存中的车辆信息写到硬盘上,再写一个读入函数,再每次登入系统后将硬盘上的信息读到内存,达到保存操作记录的作用。3.2.23.2.2 具体步骤具体步骤1.写一个名为 Data 的类,数据成员包括 year,month,day,成员函数有 count,其作用是计算一个日期是该年的第几天,还有一个友元函数 distances,在 count 的配合下计算两个日期的相差天数,从而计算出租车的费用,完成计费任务;2.写一个名为 Time 的类,数据成

24、员有 year,month,day,hour。成员函数有Ryear(),Rmonth(),Rday(),Rhour()和 lead(),前四个是此类对外的接口,便于其他函数对私有数据成员的访问,而友元函数 lead()是用来完成对操作信息导入的任务的。3.写一个名为 Vehicle 的结构体,定义车辆链表的一个节点,其中包括数据域和指针域 next,数据域包括变量VID,VType,fee,vsign,Typesign,sign,k1,k2,Ldate,Bdate,其中VID,VType 是两个字符型数组,用来存放车辆的车号和类型,fee 和 visgn 分别是double 型和 int 型的

25、数组,用来存放每次租车的费用和租还的标志(出租标为 1,已归还标为 2) ,sign 是有没出租记录的标志(没有出租记录的 sign 为 0,出租了的标志为 1,还了的标志为 2) ,Typesign 是租车按月或按小时的标志(按小时租为 1,按天租为 2) ,Ldate 和 Bdate 是两个 class Time 型的对象数组,用来存放车辆每次出租的租还日期,k1 和 k2 是两个 int 型的变量,作为 Ldate,Bdate 的下标。4.定义一个名为 sys 的类,包括一个数据成员,即 Vehicle 类型的变量 b,有V_find(),V_delete(),print()三个成员函数

26、,分别完成链表中信息的查找、删除和打印输出工作,输出的信息主要是车辆的车号、车型和出租状态。本来还有 V_add()函数(在链表中添加信息)也要写在这里,但考虑到方便调用的问题,将其写在了类的外面。Sys 这个类的作用就是对针对链表的一些基本操作进行封装,方便调用。它们的关键代码如下:链表中查找操作的代码:Vehicle *sys:find(Vehicle *head,char *s)Vehicle *p;p=head;while(p!=NULL)if(strcmp(p-VID,s)=0)return p;elsep=p-next;return NULL;链表中删除操作的代码,用来删除车辆信息

27、:Vehicle *sys:V_delete(Vehicle *head,char *VID)Vehicle *p,*q;if(head=NULL)std:coutList is NULL!VID,VID)=0)p=head;head=head-next;delete p;std:cout完成删除操作!next;q=q-next)if(strcmp(q-next-VID,VID)=0)p=q-next;q-next=p-next;delete p;return head;std:coutVID不在车库中!std:endl;return (head);打印输出车库中的车:void sys:pri

28、nt(Vehicle *head)Vehicle *p;p=head;if(p=NULL)std:cout车库为空!std:endl;while(p!=NULL)std:coutVIDt;std:coutVTypenext;向链表中添加节点的代码,是增加车辆操作的重要核心程序:Vehicle *V_add(Vehicle *head,Vehicle *v) Vehicle *p; p=head; if(p=NULL) head=v; v-next=NULL; return head; if(strcmp(p-VID,v-VID)0) v-next=head; head=v; return he

29、ad; 5.对 sys 类里的几个成员函数进行类外定义,都是基于简单链表操作的,就是上面提到的在链表中添加节点,删除节点,打印输出节点信息的函数。6.开始定义系统界面函数 list()和 listview(),前者是用来接受用户对各种操作功能的选择,然后传递给 main 函数;listview()呢完成操作界面的输出(就是列出各个功能的操作选项) ,这都是很简单的问题,它们的代码如下:void listview()std:coutttt 欢迎使用天行汽车租凭管理系统ttstd:endl;std:cout*std:endl;std:cout1.添加新车std:endl;std:cout2.删除一

30、辆已经存在的车std:endl;std:cout3.查询车库中现有车辆std:endl;std:cout4.租车std:endl;std:cout5.还车std:endl;std:cout6.按年月及车辆 ID 查询出租情况std:endl;std:cout7.按年月查询所有车辆的出租情况std:endl;std:cout8.按年月及车辆 ID 查询租车费用std:endl;std:cout9.按年月查询所有车辆的租车费用std:endl;std:cout10.保存操作记录std:endl;std:cout11.导入信息std:endl;std:cout12.退出租车系统!std:endl;s

31、td:cout*std:endl;std:coutnnstd:endl;int list()int i;for(int j=0;j+)std:coutntt 请选择功能键 1-11i;if(i=12)continue;elsebreak;return i;这两个函数联合起来达到的效果如下图所示:图 3-17.完成各个 listview()中各个功能函数的全面编码,前面的 sys 里面的那几个函数只是简单的基于链表的操作,而这里写的函数都是能独立完成菜单里面单个功能的,包括 add(),del(),print(),lend(),back(),V_find(),V_find_all(),find_

32、fee(),find_allfee(),save(),lead(),它们的功能分别是: 完成向车库中加车;删除车辆;打印输出车库中所有车辆;租车;还车;按车号和按年月查询单辆车的出租信息;按年月查询本月的出租信息;按车号和按年月查询单辆车的出租费用;按月查询本月出租费用;保存操作信息;导入上次操作信息。下面是其中几个函数的关键核心代码:void add(sys a)char c;for(int j=0;j+)Vehicle *p;p=new Vehicle;std:cout车号t车型p-VID;std:cinp-VType;p-sign=0;p-Typesign=0;p-k1=0;p-k2=0

33、;p-Ldatep-k1.time(0,0,0,0);p-Bdatep-k1.time(0,0,0,0);p-feep-k2=0;if(p-VID!=|p-VType!=)head=V_add(head,p);std:cout是否继续添加(y/n)c;if(c!=Y&c!=y&c!=N&c!=n)std:cout是否继续添加(y/n)c;if(c=n|c=N)break;elsecontinue;这是一个完整的添加车辆的函数,是基于链表的 V_add()函数来实现的,后者只是负责向链表中添加新节点,而此函数,是向车库添加新车,包括车牌号和车的类型。代码的 11 到 17

34、 行都是进行数据成员的初始化。void lend(sys a)Vehicle *p;p=new Vehicle;char s10,c;int y,m,d,h;std:cout请输入想要租的车的车号:s;p=a.find(head,s);if(p!=NULL)if(p-k1!=p-k2)std:cout此车已出租,还未还!sign!=1)std:cout车辆信息:std:endl;std:coutVID VTypeVType,car)=0)std:coutcar 只能按天租!Typesign=2;std:cout请输入租车日期(年,月,日):ymd;p-Ldatep-k1.time(y,m,d)

35、;if(strcmp(p-VType,truck)=0)std:cout按天还是按小时租(D/H)c;if(c=D)p-Typesign=2;std:cout请输入租车日期(年,月,日):ymd;p-Ldatep-k1.time(y,m,d);elsep-Typesign=1;std:cout请输入租车日期(年,月,日,小时):ymdh;p-Ldatep-k1.time(y,m,d,h);p-sign=1;p-k1+;p-feep-k1=0;std:cout租车成功!std:endl;elsestd:cout车库中没有此车!sign=1 的作用为标志车辆已出租,p-k1+是对象数组的下标推进,

36、以便保存同一辆车的下一条租车记录,p-feep-k1=0 是将费用初始化为零。void save()char *name=C:Vehicle.txt;char *na=C:number.txt;int m=0;std:ofstream ofs(name);Vehicle *p;p=head;while(p!=NULL)ofsVIDtVTypetsigntTypesigntk1tk2k1=0)ofs0-0-0-0t0-0-0-0t0std:endl;elsefor(int i=0;ik1;i+)ofsLdatei.Ryear()-Ldatei.Rmonth()-Ldatei.Rday()-Lda

37、tei.Rhour()tBdatei.Ryear()-Bdatei.Rmonth()-Bdatei.Rday()-Bdatei.Rhour()tfeeinext;m+;std:cout记录保存成功!std:endl;ofs.close();std:ofstream ofs1(na);ofs1mstd:endl;明显,这是保存数据记录的函数,用的是文件流的写操作,先建立两个文件:C:Vehicle.txt和 C:number.txt,然后让它们与文件流操作相关联,向其中写入运行程序中的信息,前者写入的是车辆链表所有节点的信息,而后者只是保存一个数据 m,就是前者信息记录的条数,为后面再用文件读入

38、数据提供方便。4 4 设计结果及分析设计结果及分析4.14.1 进入系统分析进入系统分析1.进入系统,首先要输入登录密码,密码正确后才能进入系统界面。如下图所示图 4-1图 4-22.密码正确,进入系统,看到操作界面和功能选项。如下图所示图 4-34.24.2 系统操作管理分析系统操作管理分析1.进入操作界面,会首先提醒你创建车库,就是向车库中添加新车,只有有了添加的车辆,后面的操作才有意义。接着就提醒你导入上次操作的记录,这很重要,在每次进入系统都要做,也可以设为默认地做,系统自动完成,不需管理员动手,但这里为了显示功能,将其设为手动导入。相关操作如下图所示图 4-4图 4-52.在退出系统

39、之前,应先保存操作记录,否则将会丢失信息,和导入信息一样,本可以设为退出系统时自动保存,但也是为了演示保存功能,特将其设为手动操作。操作如下图 4-64.34.3 系统工作流程分析系统工作流程分析1.添加车辆,如下图图 4-72.删除车辆,如下图图 4-83.查询车库中车的信息,如下图图 4-94.租车,如下图图 4-105还车,如下图图 4-116.按年月及车辆 ID 查询出租情况,如下图图 4-127.按年月查询所有车辆的出租情况,如下图图 4-138.按年月及车辆 ID 查询出租费用,如下图图 4-149.按年月查询所有车辆的租车费用,如下图图 4-1510.保存操作记录,如下图图 4-

40、1611.退出租车系统,如下图图 4-174.44.4 系统整体性能分析系统整体性能分析此系统功能基本完成,操作简便,可以简单地进行租车、还车义务并进行简单地管理,但是由于能力和时间有限,出错维护做的很差,就是人性化方面做的不够,有待于以后进行全方面的改进,此系统只适合于学习交流用,不适用于商用,主要是功能不齐全和出差维护差。总总 结结经过两个月的学习和实践操作,汽车租凭管理系统基本完成,其功能基本符合一个汽车公司对租凭车辆义务的操作。系统的功能有:无限添加车辆,删除车辆信息,输出车库信息,租车,还车,按年月和车号查询某辆车的出租情况,按年月查询本月车辆的出租情况,按年月和车号查询某辆车的出租

41、费用,按年月查询本月所有车辆的出租费用,保存操作信息,导入上次操作信息。在登陆系统时,会提示输入密码,进入系统后,会提示创建车库和导入上次操作信息,在这些完成以后,才正式进入具体操作。本来这些都可以设为默认操作,就是系统自己完成,如保存信息和导入信息,但是为了将其过程直观化,只得显示操作。通过这次实践学习,我对链表和文件的操作更加熟练,也有了一个新的理解。对计算机的强大功能(编程)有了一些进步的认识,特别是文件,以前学得不是很深,概念也相当的模糊,有了这次实践,多少也明白了文件的功能,特点,简单用法,我觉得这一进步会在我以后的工作学习过程中增加自信和实力。除了在编写代码方面的提高,在其他方面也

42、受益匪浅。比如在做一个大的项目时,一开始不急于动手直接写代码,应先对此项目的结构和要实现的功能进行分析,并收集资料,设计算法等,在这些完成以后,才开始着手代码编程,这样才会有高效率。当然,在这过程中,也认识到了好多自己的不足和不好的习惯,尤其是在学习方面的纰漏,例如,在此次系统设计中,只考虑到了一般的情况,而忘了特殊的;只考虑到直接结果,而忽虑了其中各部分会遇到的小错误,直接地说就是考虑问题不全面,就算考虑到了,也没有在设计过程中真正做到;另外,最明显的特点就是出错维护做的差,这才是一个系统致命的弱点,这会使得系统发生我们意料之外的情况,造成失控。对于这些不足,我会在以后学习过程中逐渐弥补和提

43、高,使得自己的设计能在以后更完美。致致 谢谢设计已经完成,看着着 60 多天以来自己通过不断实践和突破得到的成果,在此向所有在设计过程中帮助我的导师致于真诚的感谢。本次毕业设计中,我最要感谢的人是我的指导老师-叶老师和我的班导龙老师,我在他们身上学到了很多东西。他们认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我受益匪浅。他们无论在理论上还是在实践中,都给与我很大的帮助,使我得到很大的提高,这对于我以后的工作和学习都有一种巨大的帮助,在此感谢他耐心的辅导。同时也感谢那些我们在一起探讨学习、寻找最佳设计算法的同学和室友,让我感受到了集体的力量和优势,他们在这次设计当中,对我有相当大的帮助

44、,不仅是技术上的指导,也有工作精神的熏陶和心灵思绪的疏导,每一次失败,每一次突破,我所经历的,他们也在经历,我没做到的,他们做到了。参考文献参考文献1张俊,张彦铎C面向对象程序设计M北京:中国铁道出版社,2008.8,324366页2姬涛,周启生计算机程序设计基础M北京:中国传媒大学出版社,2010.12,1388页3田鲁怀数据结构M北京:电子工业出版社,2006.8,195 页 附录附录 主要程序代码主要程序代码#include#include#include#includeusing namespace std;class Timeprivate:int year,month,day,ho

45、ur;public:Time(int i=0,int j=0,int k=0,int m=0):year(i),month(j),day(k),hour(m)void time(int yy=0,int mm=0,int dd=0,int hh=0)year=yy;month=mm;day=dd;hour=hh;int Ryear()return year;int Rmonth()return month;int Rday()return day;int Rhour()return hour;friend void Lead();struct Vehiclechar VID10;char VT

46、ype5;double fee1000;int vsign1000;int Typesign;/作为出租方式的标志,按小时租用 1 表示,按天租用 2 表示int sign;/作为是否出租过,租了没还,租了已还的标记,分别用 0,1,2 标志int k1;int k2;/作为 Ldate 和 Bdate 对想数组的下标Time Ldate1000;Time Bdate1000;Vehicle *next;static Vehicle *head=NULL;/定义全局变量 head;class Dateprivate:int year,month,day;public:Date(int y,in

47、t m,int d):year(y),month(m),day(d)int count()int counter1=0,m(month-1),d(day);for(;m0;m-)if(m=4|m=6|m=9|m=11)counter1+=30;else if(m=1|m=3|m=5|m=7|m=8|m=10)counter1+=31;else if(m=2)if(year%4=0)counter1+=29;elsecounter1+=28;else std:coutinput errora.year;y-)if(y%4=0)counter+=366;else counter+=365;retu

48、rn counter;class sysprivate:Vehicle b;public:sys(char *ID=,char *T=,Vehicle *n=NULL)strcpy(b.VID,ID);strcpy(b.VType,T);b.next=n;Vehicle *V_delete(Vehicle *head,char *s);Vehicle *find(Vehicle *head,char *s);void print(Vehicle *head);Vehicle *V_add(Vehicle *head,Vehicle *v) Vehicle *p; p=head; if(p=NU

49、LL) head=v; v-next=NULL; return head; if(strcmp(p-VID,v-VID)0) v-next=head; head=v; return head; while(p-next&strcmp(p-VID,v-VID)next;v-next=p-next;p-next=v;return head;Vehicle *sys:find(Vehicle *head,char *s)Vehicle *p;p=head;while(p!=NULL)if(strcmp(p-VID,s)=0)return p;elsep=p-next;return NULL;

50、Vehicle *sys:V_delete(Vehicle *head,char *VID)Vehicle *p,*q;if(head=NULL)std:coutList is NULL!VID,VID)=0)p=head;head=head-next;delete p;std:cout完成删除操作!next;q=q-next)if(strcmp(q-next-VID,VID)=0)p=q-next;q-next=p-next;delete p;return head;std:coutVID不在车库中!std:endl;return (head);void sys:print(Vehicle

51、*head)Vehicle *p;p=head;if(p=NULL)std:cout车库为空!std:endl;elsestd:cout车牌号t车型t出租状态nstd:endl;while(p!=NULL)std:coutVIDt;std:coutVTypesign=0)std:cout从未租出sign=1)std:cout已租出std:endl;elsestd:cout租出且还next;void listview()std:coutttt 欢迎使用天行汽车租凭管理系统ttstd:endl;std:cout*std:endl;std:cout1.添加新车std:endl;std:cout2.删

52、除一辆已经存在的车std:endl;std:cout3.查询车库中现有车辆std:endl;std:cout4.租车std:endl;std:cout5.还车std:endl;std:cout6.按年月及车辆 ID 查询出租情况std:endl;std:cout7.按年月查询所有车辆的出租情况std:endl;std:cout8.按年月及车辆 ID 查询租车费用std:endl;std:cout9.按年月查询所有车辆的租车费用std:endl;std:cout10.保存操作记录std:endl;std:cout11.导入信息std:endl;std:cout12.退出租车系统!std:endl

53、;std:cout*std:endl;std:coutnnstd:endl;int list()int i;for(int j=0;j+)std:coutntt 请选择功能键 1-11i;if(i=12)continue;elsebreak;return i;void Add(sys a)char c;for(int j=0;j+)Vehicle *p;p=new Vehicle;std:cout车号t车型p-VID;std:cinp-VType;p-sign=0;p-Typesign=0;p-k1=0;p-k2=0;p-Ldatep-k1.time(0,0,0,0);p-Bdatep-k1.

54、time(0,0,0,0);p-feep-k2=0;if(p-VID!=|p-VType!=)head=V_add(head,p);std:cout是否继续添加(y/n)c;if(c!=Y&c!=y&c!=N&c!=n)std:cout是否继续添加(y/n)c;if(c=n|c=N)break;elsecontinue;void Del(sys a)char s10;std:couts;head=a.V_delete(head,s);void Lend(sys a)Vehicle *p;p=new Vehicle;char s10,c;int y,m,d,h;std:c

55、out请输入想要租的车的车号:s;p=a.find(head,s);if(p!=NULL)if(p-k1!=p-k2)std:cout此车已出租,还未还!sign!=1)std:cout车辆信息:std:endl;std:coutVID VTypeVType,car)=0)std:coutcar 只能按天租!Typesign=2;std:cout请输入租车日期(年,月,日):ymd;p-Ldatep-k1.time(y,m,d);if(strcmp(p-VType,truck)=0)std:cout按天还是按小时租(D/H)c;if(c=D)p-Typesign=2;std:cout请输入租车

56、日期(年,月,日):ymd;p-Ldatep-k1.time(y,m,d);elsep-Typesign=1;std:cout请输入租车日期(年,月,日,小时):ymdh;p-Ldatep-k1.time(y,m,d,h);p-sign=1;p-k1+;p-feep-k1=0;std:cout租车成功!std:endl;elsestd:cout车库中没有此车!std:endl;void Back(sys a)Vehicle *p;p=new Vehicle;char s10;int y,m,d,h,dis;p2:double money;std:cout请输入想要还的车的车号:s;p=a.fi

57、nd(head,s);if(p!=NULL)std:cout车辆信息:std:endl;std:coutVID VTypesign!=1&p-sign!=2)std:cout此车还没有出租记录!Typesign=1)std:cout您是按小时来租此车的!std:endl;std:cout请输入还车日期(年,月,日,小时):ymdh;p-Bdatep-k2.time(y,m,d,h);if(p-Typesign=2)std:cout您是按天来租此车的!std:endl;std:cout请输入还车日期:ymd;p-Bdatep-k2.time(y,m,d);Date a(p-Ldatep-

58、k2.Ryear(),p-Ldatep-k2.Rmonth(),p-Ldatep-k2.Rday();Date b(y,m,d);dis=distances(a,b);if(strcmp(p-VType,car)=0)if(dis=3)money=dis*100*0.8;elsemoney=dis*100;if(strcmp(p-VType,truck)=0)if(p-Typesign=2)if(dis=3)money=dis*300*0.8;elsemoney=dis*300;elseif(p-Bdatep-k2.Rhour()Ldatep-k2.Rhour()money=(dis-1)*2

59、4+p-Ldatep-k2.Rhour()+24-p-Bdatep-k2.Rhour()*30;if(p-Bdatep-k2.Rhour()=p-Ldatep-k2.Rhour()money=(dis*24+p-Bdatep-k2.Rhour()-p-Ldatep-k2.Rhour()*30;std:cout还车成功!feep-k2=money;p-sign=2;p-k2+;elsestd:cout车库中没有此车!std:endl;void V_find(sys a)char che10;int y,m;Vehicle *p;p=new Vehicle;std:cout请输入查询车号!che;

60、p=a.find(head,che);if(p-sign!=1&p-sign!=2)std:cout此车还没有出租记录!std:endl;elsestd:cout请输入查询年月ym;for(int i=0;ik1;i+)if(y=p-Bdatei.Ryear()&(m=p-Bdatei.Rmonth()std:coutVIDtVTypeTypesign=1)std:cout-h-std:endl;elsestd:cout-X-k1&p-sign=1)std:cout-o-std:endl;void V_find_all(sys a)int y,m,k=0;Vehicle *p;p=head;std:cout请输入查询年月ym;while(p!=NULL)if(p-k1=0)std:coutV

温馨提示

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

评论

0/150

提交评论