汽车租借公司的管理系统数据结构课程设计报告样本.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汽车 租借 公司 管理 系统 数据结构 课程设计 报告 样本
- 资源描述:
-
算 法 与 数 据 结 构 课 程 设 计 报 告 请尊重我劳动成果不要复制! 题 目:汽车租借公司管理 班 级: 学 号: 姓 名: 成 绩: 1月 1日 一、题目 汽车租借公司管理 (1)问题描述 设计数据构造及算法完毕某个汽车租借公司寻常工作组织与管理。该管理系统基本管理对象为汽车,每台汽车用一种license number进行唯一标记。每个汽车存在三种也许状态: ●可以租借(available for rent) ●已借(rented) ●修理中(in repair) 其中在available队列中汽车应当根据汽车行驶过路程进行排序,行驶路程至少汽车排在最前面。在rented队列中汽车应根据其预期返回时间进行排序,排在最前应是预期最早返回汽车。 (2)课程设计目 应用线性数据构造存储信息,并可以应用上面基本操作实现事务管理。 (3)基本规定 ① 用三个链表组织三种状态汽车。 ② 可以实现租借寻常事务:引入新车,租借,收费,修理等。 ③ 租借收费应依照汽车行驶路程及借去时间综共计算得出,路程收费原则如下: ⒈ 低于100km收费20.00元 ⒉100km以外路程每km收费0.15元 ④ 汽车依照行驶路程定期进行维护。 ⑤ 还需实现辅助操作:汽车查询,打印所有信息,计算并打印收入、成本及收益。 ⑥ 管理系统应有完整地界面(最佳是图形化界面)。 (4) 实现提示 重要集中在链表基本操作上。 二、设计思想 1、问题分析 该公司所有车辆只有如下三种状态: ●可以租借(available for rent) ●已借(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)。 三.构造关系 struct cars 包括了一辆车基本信息: 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指针struct cars *next; 四.有关函数 1.读取data.ini配备信息数据:void ReadDataIni(); 2.设立data.ini配备信息数据:void setDataIni(); 3.将数据存档到data.dat中:void save_data(struct cars *carData); 4.追加数据存档到data.dat中:void add_data(struct cars *carData); 5.依照汽车所行驶距离排序:struct cars *rank_Distance(struct cars *carDistance); 6.依照预期返回时间排序:struct cars *rank_Time(struct cars *carTime); 7.建立可以租借链表:struct cars *create_available(void); 8.建立已借出链表:struct cars *create_rented(void); 9.建立修理中链表:struct cars *create_repairing(void); 10.打印汽车信息:void printThreeOfCars(struct cars *ThreeOfCar); 11.计算链表数据个数:int calculateCars(struct cars *ThreeOfCar); 12.删除链表中汽车:void deleteThreeOfCar(struct cars *ThreeOfCar,int xuhao); 13.插入到可以租借车链表中:struct insertThreeOfCars(struct cars *ThreeOfCar,int LicenseNumber,int Stu,float CarRunned,int ReturnTime,int RepairedTime,float Ico); 14.增长新车:void AddNewCar(struct cars *available,struct cars *rented,struct cars *repairing); 15.出租汽车:void RentCar(struct cars *available,struct cars *rented,struct cars *repairing); 16.归还收费:void ReturnCar(struct cars *available,struct cars *rented,struct cars *repairing); 17.修理汽车:void RepairCar(struct cars *available,struct cars *rented,struct cars *repairing); 18.查看修理状况:void BackCar(struct cars *available,struct cars *rented,struct cars *repairing); 19.汽车查询:void research(struct cars *ThreeOfCar,int id); 20.汽车查询成果:void ReasearchCar(struct cars *available,struct cars *rented,struct cars *repairing); 21.打印所有车信息:void PrintAllCar(); 22.计算收益:void Calculation(struct cars *ThreeOfCar); 23.计算收益:void CalculateProfit(); 24.配备信息:void displaySeting(); 25.设立配备信息:void setInformation(); 三、软件构造图及流程图 软件构造图即函数调用图(图中用五号宋体) 如下图 添加新车AddNewCar() 创立3个链表 主函数 出租汽车RentCar() void RentCar 归还收费ReutrnCar() 修理汽车RepairCar() 修理完毕BackCar() 操作选取 配备信息SetInformation() 汽车查询ReasearchCar() 打印所有PrintAllCar() 计算收益CalculateProfit() 退出 开始 建立三张链表(可借汽车、已借汽车、修理汽车) 主菜单(选取操作) 添加新车 操作1 租借汽车 操作2 归还收费 操作3 修理汽车 操作4 操作5 修理完毕 操作6 配备信息 操作7 汽车查询 打印所有 操作8 计算收益 操作9 退出 操作0 结束 四、测试 使用Visual C++ 6.0。其中,程序使用到信息在data.dat和data.ini文献中。 本程序运营后界面如下图所示: 主界面: 1.添加新车 2.租借汽车 3.归还收费 4.修理汽车 5.修理完毕 6.配备信息 7.汽车查询 8.打印所有 9.计算收益 10.退出 五、源程序 #include<iostream> using namespace std; #include<malloc.h> #include<stdlib.h> #include<vector> #define LEN sizeof(struct cars) struct cars { int license_number;//汽车编号 int stutes;//汽车状态0--可以租借,1--已借出,2--修理中 float car_runned;//汽车行驶过路程 int return_time;//汽车预期返回时间 int repaired_time;//汽车修理次数 float income;//汽车收入 struct cars *next;//next指针 }; struct cars *p1,*p2,*available,*rented,*repairing,*p,*g,*f; FILE *fp1,*fp2;//文献指针 int n1 = 0,n2 = 0,n3 = 0,n4,n5; //将data.ini中配备信息读出来储存在四个变量中 float car_cost,repair_cost,oil_cost,rent_cost,rentkm_cost; struct cars *rank_Time(struct cars *carTime); struct cars *rank_Distance(struct cars *carDistance); //读取data.ini配备信息数据 void ReadDataIni() { 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配备信息数据 void setDataIni() { 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.dat void save_data(struct cars *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.dat void add_data(struct cars *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); } //依照汽车所行驶距离排序 struct cars *rank_Distance(struct cars *carDistance) { p=carDistance; vector<struct cars> sc(n1); struct cars t; int i = -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;i<n1;i++) { for(j=0;j<n1-i-2;j++) { if(sc[j].car_runned>sc[j+1].car_runned) { t = sc[j]; sc[j] = sc[j+1]; sc[j+1] = t; } } } p = carDistance; i = -1; while(p!=NULL) { i++; p->license_number = sc[i].license_number; p->stutes = sc[i].stutes; p->car_runned = sc[i].car_runned; p->income = sc[i].income; p->repaired_time = sc[i].repaired_time; p->return_time = sc[i].return_time; p = p->next; } return(carDistance); } //依照预期返回时间排序 struct cars *rank_Time(struct cars *carTime) { p = carTime; vector<struct cars> sc(n2); struct cars t; int i=-1; 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;i<n2;i++) { for (int j=0;j<n2-i-2;j++) { if (sc[j].return_time>sc[j+1].return_time) { t = sc[j]; sc[j] = sc[j+1]; sc[j+1] = t; } } } p = carTime; i = -1; while (p!=NULL) { i++; p->license_number = sc[i].license_number; p->stutes = sc[i].stutes; p->car_runned = sc[i].car_runned; p->income = sc[i].income; p->repaired_time = sc[i].repaired_time; p->return_time = sc[i].return_time; p = p->next; } return (carTime); } //1.建立可以租借链表 struct cars *create_available(void) { fp1 = fopen("data.dat","r"); p1 = p2 = (struct cars *)malloc(LEN); available = NULL; while(!feof(fp1)) { n1 = n1 + 1; fscanf(fp1,"%d %d %f %d %d %f",&p1->license_number,&p1->stutes,&p1->car_runned,&p1->return_time,&p1->repaired_time,&p1->income); if(p1->stutes == 0) { if(n1 == 1) available = p1; else p2->next = p1; p2 = p1; p1 = (struct cars *)malloc(LEN); } else n1--; } p2->next = NULL; fclose(fp1); //依照行驶过路程进行排序 rank_Distance(available); return(available); } //2.建立已借出链表 struct cars *create_rented(void) { fp1 = fopen("data.dat","r"); p1 = p2 = (struct cars *)malloc(LEN); rented = NULL; while(!feof(fp1)) { n2 = n2 + 1; fscanf(fp1,"%d %d %f %d %d %f",&p1->license_number,&p1->stutes,&p1->car_runned,&p1->return_time,&p1->repaired_time,&p1->income); if(p1->stutes == 1) { if(n2 == 1) rented = p1; else p2->next = p1; p2 = p1; p1 = (struct cars *)malloc(LEN); } else n2--; } p2->next = NULL; fclose(fp1); //依照行驶过路程进行排序 rank_Time(rented); return(rented); } //3.建立修理中链表 struct cars *create_repairing(void) { fp1 = fopen("data.dat","r"); p1 = p2 = (struct cars *)malloc(LEN); repairing = NULL; while(!feof(fp1)) { n3 = n3 + 1; fscanf(fp1,"%d %d %f %d %d %f",&p1->license_number,&p1->stutes,&p1->car_runned,&p1->return_time,&p1->repaired_time,&p1->income); if(p1->stutes == 2) { if(n3 == 1) repairing = p1; else p2->next = p1; p2 = p1; p1 = (struct cars *)malloc(LEN); } else n3--; } p2->next = NULL; fclose(fp1); return (repairing); } //打印汽车信息 void printThreeOfCars(struct cars *ThreeOfCar) { p = ThreeOfCar; cout<<"编号\t状态\t行驶路程\t借出天数\t维修次数\t收益\n"; while(p != NULL) { cout<<p->license_number<<"\t"<<p->stutes<<"\t"<<p->car_runned<<"\t"<<p->return_time<<"\t"<<p->repaired_time<<"\t"<<p->income<<endl; p=p->next; } } //计算链表数据个数 int calculateCars(struct cars *ThreeOfCar) { int k = 0; p = ThreeOfCar; while(p != NULL) { k++; p = p->next; } return (k); } //删除汽车 void deleteThreeOfCar(struct cars *ThreeOfCar,int xuhao) { p = ThreeOfCar; if(xuhao == p->next->license_number) { g = p->next; p->next = p->next->next; g->next = NULL; free (g); } else { cout<<"错误deleteThreeOfCar()!"<<endl; } } //插入到可以租借车链表中 struct insertThreeOfCars(struct cars *ThreeOfCar,int LicenseNumber,int Stu,float CarRunned,int ReturnTime,int RepairedTime,float Ico) { p = ThreeOfCar; n4++; while(p->next != NULL) { p = p->next; } p->next=(struct cars *)malloc(LEN); p->next->license_number = LicenseNumber; p->next->stutes = Stu; p->next->car_runned = CarRunned; p->next->return_time = ReturnTime; p->next->repaired_time = RepairedTime; p->next->income = Ico; p->next->next = NULL; cout<<"添加完毕!"<<endl; cout<<"添加信息是:"<<endl; cout<<"编号\t汽车状态\t行驶路程\t预期归还时间\t借出天数\t收益"<<endl; cout<<LicenseNumber<<"\t"<<Stu<<"\t"<<CarRunned<<"\t"<<ReturnTime<<"\t"<<ReturnTime<<"\t"<<Ico<<endl; return 0; } //增长新车 void AddNewCar(struct cars *available,struct cars *rented,struct cars *repairing) { int ava,ren,rep,l; ava = calculateCars(available); ren = calculateCars(rented); rep = calculateCars(repairing); l = ava + ren + rep; insertThreeOfCars(available,l,0,0,0,0,0);//插入到未借出链表中 save_data(available); add_data(rented); add_data(repairing); } //出租汽车 void RentCar(struct cars *available,struct cars *rented,struct cars *repairing) { int score,day = 1,i = 0; printThreeOfCars(available); cout<<"请选取所要租序号!"<<endl; cin>>score; cout<<"请选取所租汽车天数!"<<endl; cin>>day; p = f = available; cout<<"可以借汽车信息"<<endl; do { if(score == p->license_number) { insertThreeOfCars(rented,p->license_number,1,p->car_runned,day,p->repaired_time,p->income); deleteThreeOfCar(f,score); save_data(available); add_data(rented); add_data(repairing); break; } f = p; p = p->next; }while(p != NULL); cout<<"\n租借完毕!"<<endl; } //归还收费 void ReturnCar(struct cars *available,struct cars *rented,struct cars *repairing) { int score,i = 0; float run,money; printThreeOfCars(rented); cout<<"请选取所要归还车序号!"<<endl; cin>>score; cout<<"请输入汽车在租借时所跑路程!"<<endl; cin>>run; p = f = rented; cout<<"要归还车信息"<<endl; do { if(score == p->license_number) { insertThreeOfCars(available,p->license_number,0,run + p->car_runned,0,p->repaired_time,p->income); deleteThreeOfCar(f,score); save_data(available); add_data(rented); add_data(repairing); break; } f = p; p = p->next; }while(p != NULL); cout<<"\n已归还!"<<endl; } //修理汽车 void RepairCar(struct cars *available,struct cars *rented,struct cars *repairing) { int score,i = 0; printThreeOfCars(available); cout<<"请选取所要修理车序号!"<<endl; cin>>score; p = f = available; cout<<"要修理汽车信息"<<endl; do { if(score == p->license_number) { insertThreeOfCars(repairing,p->license_number,2,p->car_runned,0,p->repaired_time,p->income); deleteThreeOfCar(f,score); save_data(available); add_data(rented); add_data(repairing); break; } f = p; p = p->next; }while(p != NULL); cout<<"\n已送去修理!"<<endl; } //查看修理状况 void BackCar(struct cars *available,struct cars *rented,struct cars *repairing) { int score,i = 0; printThreeOfCars(repairing); cout<<"请选取可以出租修理中汽车序号!"<<endl; cin>>score; p = f = repairing; do { if(score == p->license_number) { insertThreeOfCars(available,p->license_number,0,p->car_runned,0,p->repaired_time + 1,p->income); deleteThreeOfCar(f,score); save_data(available); add_data(rented); add_data(repairing); break; } f = p; p = p->next; }while(p != NULL); cout<<"\n可以租借了!"<<endl; } //汽车查询 void research(struct cars *ThreeOfCar,int id) { int i = 0; p = ThreeOfCar; do { if(id == p->license_number) { i =1; break; } p = p->next; }while(p != NULL); if(i == 1) { cout<<"序号为\t状态为\t已行驶路程\t预期归还时间\t借出次数\t收益\n"; cout<<p->license_number<<"\t"<<p->stutes<<"\t"<<p->car_runned<<"\t"<<p->return_time<<"\t"<<p->repaired_time<<"\t"<<p->income<<endl; } } //汽车查询成果 void ReasearchCar(struct cars *available,struct cars *rented,struct cars *repairing) { int id; cout<<"请输入查询汽车编码:"<<endl; cin>>id; research(available,id); research(rented,id); research(repairing,id); } //打印所有车信息 void PrintAllCar() { cout<<"可以租借汽车:"<<endl; printThreeOfCars(available); cout<<"租借出去汽车:"<<endl; printThreeOfCars(rented); cout<<"正在维修车:"<<endl; printThreeOfCars(repairing); } //计算收益 void Calculation(struct cars *ThreeOfCar) { float AllCost = 0,GetMoney = 0,GetFree = 0; p = ThreeOfCar; ReadDataIni(); do { GetMoney += p->income; if(p->car_runned <=100 && p->car_runned >=0) AllCost =AllCost + car_cost + repair_cost*p->repaired_time + oil_cost*p->car_runned + rent_cost*p->car_runned; if(p->car_runned >100) AllCost =AllCost + car_cost + repair_cost*p->repaired_time + oil_cost*p->car_runned + rent_cost*100 + rentkm_cost*(p->car_runned - 100); p = p->next; }while(p != NULL); GetFree = GetMoney - AllCost; cout<<"总收入\t"<<"成本\t"<<"收益"<<endl; cout<<GetMoney<<"\t"<<AllCost<<"\t"<<GetFree<<endl; } //计算收益 void CalculateProfit() { cout<<"可以租借汽车收入:"<<endl; Calculation(available); cout<<"租借出去汽车收入:"<<endl; Calculation(rented); cout<<"正在维修车收入:"<<endl; Calculation(repairing); } //配备信息 void展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




汽车租借公司的管理系统数据结构课程设计报告样本.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/4514660.html