您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > 汽车租借公司的管理系统-数据结构课程设计报告
算法与数据结构课程设计报告请尊重我的劳动成果不要复制!题目:汽车租借公司的管理班级:学号:姓名:成绩:2014年1月1日一、题目汽车租借公司的管理(1)问题描述设计数据结构及算法完成某个汽车租借公司日常工作的组织与管理。该管理系统的基本管理对象为汽车,每台汽车用一个licensenumber进行唯一标识。每个汽车存在三种可能状态:●可以租借(availableforrent)●已借(rented)●修理中(inrepair)其中在available队列中汽车应该依据汽车行驶过的路程进行排序,行驶路程最少的汽车排在最前面。在rented队列中的汽车应依据其预期返回时间进行排序,排在最前的应是预期最早返回的汽车。(2)课程设计目的应用线性数据结构存储信息,并能够应用上面的基本操作实现事务管理。(3)基本要求①用三个链表组织三种状态的汽车。②能够实现租借的日常事务:引入新车,租借,收费,修理等。③租借收费应根据汽车行驶的路程及借去的时间综合计算得出,路程收费标准如下:⒈低于100km收费20.00元⒉100km以外的路程每km收费0.15元④汽车根据行驶的路程定期进行维护。⑤还需实现辅助操作:汽车查询,打印全部信息,计算并打印收入、成本及收益。⑥管理系统应有完整地界面(最好是图形化界面)。(4)实现提示主要集中在链表的基本操作上。二、设计思想1、问题分析该公司的所有车辆只有以下三种状态:●可以租借(availableforrent)●已借(rented)●修理中(repairing)一.每种状态的都有要能够实现车辆的添加、删除、显示的最最基本的功能,他们里面又都有多辆车需要统一管理,而这些车辆无疑都是属性相同的车辆,所以可以建立一个cars结构体,包含他们共同的属性。公司日常业务有添加新车,租借汽车,归还收费、修理汽车,修理完毕,配置信息,汽车查询,打印全部信息,计算收益。其所有功能如下:1.添加新车,2.租借汽车,3.归还收费、4.修理汽车,5.修理完毕,6.配置信息,7.汽车查询,8.打印信息,9.计算收益,10.退出二.基本实现:采用的链式结构,即对链表的操作。另外有两个配置文件:1.data.dat:储存的信息有汽车编号、汽车状态(0表示未借出,1表示借出,2表示维修中)、已行驶的路程、预期归还的时间、借出的次数、该车的获得的收益。2.data.ini:每辆车的成本、每次修理费、油费/km、租费(100km以下)、租费(超过100km)。三.结构关系structcars包含了一辆车的的基本信息:1.汽车编号license_number(int);2.汽车状态0--可以租借,1--已借出,2--修理中stutes(int);3.汽车行驶过的路程car_runned(float);4.汽车预期返回的时间return_time(int);5.汽车修理的次数repaired_time(int);6.汽车收入income(float);7.next指针structcars*next;四.相关函数1.读取data.ini配置信息的数据:voidReadDataIni();2.设置data.ini配置信息的数据:voidsetDataIni();3.将数据存档到data.dat中:voidsave_data(structcars*carData);4.追加数据存档到data.dat中:voidadd_data(structcars*carData);5.根据汽车所行驶的距离排序:structcars*rank_Distance(structcars*carDistance);6.根据预期返回时间排序:structcars*rank_Time(structcars*carTime);7.建立可以租借的链表:structcars*create_available(void);8.建立已借出的链表:structcars*create_rented(void);9.建立修理中的链表:structcars*create_repairing(void);10.打印汽车的信息:voidprintThreeOfCars(structcars*ThreeOfCar);11.计算链表数据个数:intcalculateCars(structcars*ThreeOfCar);12.删除链表中的汽车:voiddeleteThreeOfCar(structcars*ThreeOfCar,intxuhao);13.插入到可以租借的车链表中:structinsertThreeOfCars(structcars*ThreeOfCar,intLicenseNumber,intStu,floatCarRunned,intReturnTime,intRepairedTime,floatIco);14.增加新车:voidAddNewCar(structcars*available,structcars*rented,structcars*repairing);15.出租汽车:voidRentCar(structcars*available,structcars*rented,structcars*repairing);16.归还收费:voidReturnCar(structcars*available,structcars*rented,structcars*repairing);17.修理汽车:voidRepairCar(structcars*available,structcars*rented,structcars*repairing);18.查看修理状况:voidBackCar(structcars*available,structcars*rented,structcars*repairing);19.汽车查询:voidresearch(structcars*ThreeOfCar,intid);20.汽车查询结果:voidReasearchCar(structcars*available,structcars*rented,structcars*repairing);21.打印所有车的信息:voidPrintAllCar();22.计算收益:voidCalculation(structcars*ThreeOfCar);23.计算收益:voidCalculateProfit();24.配置信息:voiddisplaySeting();25.设置配置信息:voidsetInformation();三、软件结构图及流程图软件结构图即函数调用图(图中用五号宋体)如下图操作选择创建3个链表汽车查询ReasearchCar()主函数出租汽车RentCar()voidRentCar归还收费ReutrnCar()修理汽车RepairCar()修理完毕BackCar()配置信息SetInformation()添加新车AddNewCar()退出打印全部PrintAllCar()计算收益CalculateProfit()建立三张链表(可借汽车、已借汽车、修理汽车)开始主菜单(选择操作)操作1操作3操作4操作5操作6操作7操作8操作2添加新车修理汽车归还收费汽车查询修理完毕配置信息租借汽车打印全部操作9操作0计算收益退出结束四、测试使用VisualC++6.0。其中,程序使用到的信息在data.dat和data.ini文件中。本程序运行后的界面如下图所示:主界面:1.添加新车2.租借汽车3.归还收费4.修理汽车5.修理完毕6.配置信息7.汽车查询8.打印全部9.计算收益10.退出五、源程序#includeiostreamusingnamespacestd;#includemalloc.h#includestdlib.h#includevector#defineLENsizeof(structcars)structcars{intlicense_number;//汽车编号intstutes;//汽车状态0--可以租借,1--已借出,2--修理中floatcar_runned;//汽车行驶过的路程intreturn_time;//汽车预期返回的时间intrepaired_time;//汽车修理的次数floatincome;//汽车收入structcars*next;//next指针};structcars*p1,*p2,*available,*rented,*repairing,*p,*g,*f;FILE*fp1,*fp2;//文件指针intn1=0,n2=0,n3=0,n4,n5;//将data.ini中的配置信息读出来储存在四个变量中floatcar_cost,repair_cost,oil_cost,rent_cost,rentkm_cost;structcars*rank_Time(structcars*carTime);structcars*rank_Distance(structcars*carDistance);//读取data.ini配置信息的数据voidReadDataIni(){fp2=fopen(data.ini,r);fscanf(fp2,%f%f%f%f%f,&car_cost,&repair_cost,&oil_cost,&rent_cost,&rentkm_cost);fclose(fp2);}//设置data.ini配置信息的数据voidsetDataIni(){fp2=fopen(data.ini,w);//以写的模式打开文件fprintf(fp2,%.2f%.2f%.2f%.2f%.2f%.2f,car_cost,repair_cost,oil_cost,rent_cost,rentkm_cost);fclose(fp2);cout设置成功!endl;}//将数据存档到data.datvoidsave_data(structcars*carData){p=carData;fp1=fopen(data.dat,w);//以写的模式打开文件while(p!=NULL){fprintf(fp1,%d%d%.2f%d%d%.2f\n,p-license_number,p-stutes,p-car_runned,p-return_time,p-repaired_time,p-income);p=p-next;}fclose(fp1);}//追加数据存档到data.datvoidadd_data(structcars*carData){p=carData;fp1=fopen(data.dat,a);//以追加写入的模式打开文件while(p!=NULL){fprintf(fp1,%d%d%.2f%d%d%.2f\n,p-license_number,p-stutes,p-car_runned,p-return_time,p-repaired_time,p-income);p=p-next;}fclose(fp1);}//根据汽车所行驶的距离排序structcars*rank_Distance(structcars*carDistance){p=carDistance;vectorstructcarssc(n1);structcarst;inti=-1,j;while(p!=NULL){i++;sc[i].license_number=p-license_number;sc[i].stutes=p-stutes;sc[i].car_runned=p-car_runned;sc[i].income=p-income;sc[i].repaired_time=p-repaired_time;sc[i].return_time=p-return_time;p=p-next;}for(i=0;in1;i++){for(j=0;jn1-i-2;j++){if(sc[j].car_runnedsc
本文标题:汽车租借公司的管理系统-数据结构课程设计报告
链接地址:https://www.777doc.com/doc-302660 .html