C++课程设计汽车管理系统.doc

上传人:laozhun 文档编号:2957349 上传时间:2023-03-05 格式:DOC 页数:58 大小:585KB
返回 下载 相关 举报
C++课程设计汽车管理系统.doc_第1页
第1页 / 共58页
C++课程设计汽车管理系统.doc_第2页
第2页 / 共58页
C++课程设计汽车管理系统.doc_第3页
第3页 / 共58页
C++课程设计汽车管理系统.doc_第4页
第4页 / 共58页
C++课程设计汽车管理系统.doc_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《C++课程设计汽车管理系统.doc》由会员分享,可在线阅读,更多相关《C++课程设计汽车管理系统.doc(58页珍藏版)》请在三一办公上搜索。

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 系统工作流程分析.254.4 系统整体性能分析.31总 结.32致

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

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

4、ystem 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 great advantages and feasibility. Every formal institution

5、s, 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 includes the backstage database development and maintenance, an

6、d 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 vehicle lease management system not stated. In this focus on

7、 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, document flow, combining reading and writing knowledge and

8、 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 basic situation of lease conditions. The administrator can

9、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课题来源 现代社会,人的大脑开始出现一定的记忆压力,因为太多的事情需要然人来处理并且记住大量的数据.计算机的出现,让人们找到了减轻压力的途径,这也是社会发展的必然,人

10、类科技的进步的一个重要标志就是生产力的高效性。计算机与人类相比的优点就是有着极快的计算速度和准确性,性能稳定,具有很高的可靠性,根据此特点,计算机管理系统和数据库诞生了,随着社会的发展,它们的地位更是显得尤其重要,每一个正规的机构都有自己的管理系统,数据库管理系统也是计算机领域的一个重要研究方向,有着不可估量的发张前景。1.2课题意义计算机管理系统在当今的商业社会有着很强大的功能,这也是这几年来计算机飞速发展的一个重要原因,计算机没有思考能力,不能像人一样,它的一切活动都是建立在存储大量数据以及对这些数据进行简单的操作之上的,“人工智能”也不列外,其中计算机管理系统就是一个很好的运用。一个好的

11、管理系统,能承当一个很庞大的任务,在公司,在学校,在政府部门,它都有着自己的职能。汽车租凭管理系统,是汽车公司的重要系统之一,它能管理日常的租凭车辆任务,可靠性高,高效,便捷,节省劳动力,一次投入多次使用,高质量的租凭管理系统和这家汽车公司的业绩是直接挂钩的。1.3课题目的通过此课题的学习和设计,让我们懂得如何开发一个管理系统、需要具备的知识、准备工作和需要考虑的各种问题。当然开发一个汽车租凭管理系统,最直接的目的就是完成汽车公司的租凭任务,主要负责租凭这一块,其中主要的操作包括借车、登记、还车、计费、查询和基本车库的管理。1.4应解决的主要问题及应达到的技术要求1.4.1应解决的主要问题在此

12、系统的开发计划中(暂不考虑后台数据库的开发),我们应该解决的主要问题包括:a. 在计算机中写一个函数,能完成无限添加车辆和存储租车、还车相关信息的任务;b. 怎样将每次操作的记录进行保存,做到每次输入的信息永久有效;c. 怎样做一个人性化的操作界面,既具备视觉美感,操作起来又简便。1.4.2应达到的技术要求1.能在车库中无限添加车辆,删除车辆;2.能修改车辆信息;3.能输出车库中所有车的基本信息;4.租车;5.还车;6.按车号和年月查询车辆出租信息;7.按年月查询车辆出租信息;8.按车号和年月查询车辆出租费用情况;9.按年月查询车辆的出租费用情况;10.保存操作信息;11导入操作信息;12.操

13、作简单,界面具有美感;13.整体性能完整;具体要达到的功能要求如下图中所示:图111.5本设计的理论依据计算机有较强的运算能力和存储数据的功能,具有较强的稳定性和可靠性。链表可以实现无限条记录的保存和查找,可以解决无限添加车辆的问题,而文件的读写能将每次操作的有效数据在计算机内存和磁盘上进行读写,使得每次进入系统从操作的数据我们都有记录,并且在下次登入系统的时候读入计算机内存,在系统程序中继续传递。2 设计简介及设计方案论述2.1设计内容与目标设计的内容和主要目标是完成一个具有简单基本功能的汽车租凭管理系统,承当某汽车公司的汽车租凭任务并对其进行有效的管理。管理系统的特点是:功能基本齐全,操作

14、简单易懂。最主要的是能完成基本的汽车租凭义务和管理,承担工作人员的大量繁琐记忆和脑力劳动。2.2设计的重点、难点和关键此设计的重点是各个功能函数的编码,例如添加车辆、租车、还车、计算费用,各种方式的查询等,其中这些操作都建立在对车辆记录的保存和查找上,因为进行这些操作都必先找到相应的记录信息,进行修改,然后再存储起来;设计的难点是无限次添加记录和保存记录,以及对每次记录的保存入库(在下次运用此程序时上次的操作信息还在),包括信息的存储和读取。说到无限次添加记录,一般用数组是不能办到的,我们都知道在用数组之前必须先定义大小;关键是把各个函数正确有效地连接起来,有正确的实参传递,能正确有效地输出预

15、期结果,达到系统管理的目的。这部分说起来简单,但实际去做,那就是程序中最难的一块,这要考虑到各个函数的关联以及每个函数完成的特殊功能和对整个信息记录的影响,就如一个机器人,要让他动起来,得花费大量的功夫来来你接他身体的机械硬件和软件代码2.3整体设计方案a读懂系统设计要求,初步了解设计思路;b首先用UML图分析,得出整体的设计方案;c依据UML图,分个写出每个函数,并留好相应的接口,以便后面每个函数的相互连接;d写一个整体的系统函数,在其中将所有函数聚合在一起,方便调用,可以用一个类来完成此任务;e写出界面函数,做到美观,操作简单,人性化;f写出main函数,组织调用各个函数和各种类,有效地完

16、成整个函数的功能;g全面而又广泛地测试,发现错误,改进错误,改进程序,提高程序的健壮性。整体设计方案:定义一个结构体,里面包括车辆的属性和一些标志,如车号,车型,出租、归还时间,费用,出租状态等,还有一个本身类型的指针,为了构建链表的节点。然后定义两个时间类Date和Time,分别用来计算租车、还车的日期差并计算相应的费用和存储租,归还日期。接下来定义一个类,作为整体调用函数用。完成以后就开始编写各个功能的函数,添加、删除、查询、保存、导入信息等。最后完成界面输出函数和main()函数的定义,界面函数只要做到美观、操作简单就可,主要是main()函数,它起到整体运行程序的作用,系统能不能成功运

17、转,就看它的正确性和高效性。下面分别是节点结构体类的定义:struct Vehiclechar VID10;char VType5;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;下面分别是Data类的定义:class Dateprivate:int year,mon

18、th,day;public:Date(int y,int 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+

19、=366;else counter+=365;return counter;其中count()函数用来计算某个日期是该年的第几天,distances()用来计算两个日期的相差天数,从而计算出费用。下面分别是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;

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

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

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

23、成员函数有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型的数组,用来存放每次租车的费用和租还的标志(出租标为1,已归还标为2),

24、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()三个成员函数,分别完成链表中信息的查找、删除和打印输出工作,输出的信息主要是车辆的车号、车型和出租状态。本来还有V_add()函数(在链表中添加

25、信息)也要写在这里,但考虑到方便调用的问题,将其写在了类的外面。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;链表中删除操作的代码,用来删除车辆信息:Vehicle *sys:V_delete(Vehicle *head,char *VID)Vehicle *p,*q;if(head

26、=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 *head)Vehicle *p;p=head;if(p=NULL)std:cout车库为空!std:endl;w

27、hile(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 head; 5.对sys类里的几个成员函数进行类外定义,都是基于简单链表操作的,就是上面提到的在链表中添加节点,删除节点,打印输出节点信息的

28、函数。6.开始定义系统界面函数list()和listview(),前者是用来接受用户对各种操作功能的选择,然后传递给main函数;listview()呢完成操作界面的输出(就是列出各个功能的操作选项),这都是很简单的问题,它们的代码如下:void listview()std:coutttt欢迎使用天行汽车租凭管理系统ttstd:endl;std:cout*std:endl;std:cout1.添加新车std:endl;std:cout2.删除一辆已经存在的车std:endl;std:cout3.查询车库中现有车辆std:endl;std:cout4.租车std:endl;std:cout5.还

29、车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;std:cout*std:endl;std:coutnnstd:endl;int list()int i;for(int j=0;j+)std:coutntt请选

30、择功能键1-11i;if(i=12)continue;elsebreak;return i;这两个函数联合起来达到的效果如下图所示:图3-17.完成各个listview()中各个功能函数的全面编码,前面的sys里面的那几个函数只是简单的基于链表的操作,而这里写的函数都是能独立完成菜单里面单个功能的,包括add(),del(),print(),lend(),back(),V_find(),V_find_all(),find_fee(),find_allfee(),save(),lead(),它们的功能分别是: 完成向车库中加车;删除车辆;打印输出车库中所有车辆;租车;还车;按车号和按年月查询单辆

31、车的出租信息;按年月查询本月的出租信息;按车号和按年月查询单辆车的出租费用;按月查询本月出租费用;保存操作信息;导入上次操作信息。下面是其中几个函数的关键核心代码: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.time(0,0,0,0);p-feep-k2=0;if(p-VID!=|p-VType!=)h

32、ead=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行都是进行数据成员的初始化。void lend(sys a)Vehicle *p;p=new Vehicle;char s10,c;int y,m,d,h;std:cout请输入想要租的车的车号:s;p=a

33、.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请输入租车日期(年,月,日):ymd;p-Ldate

34、p-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+是对象数组的下标推进,以便保存同一辆车的下一条租车记录,p-feep-k1=0是将费用初始化为零。void save()char *name=C:Vehicle.txt;char *na=C:number.txt;int m=0;st

35、d: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()-Ldatei.Rhour()tBdatei.Ryear()-Bdatei.Rmonth()-Bdatei.Rday()-Bdatei.Rhour()tfeeinext;m+;std:cout记录保存成功!std:endl;ofs.close();std:ofstream ofs1(na);ofs1mstd:en

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号