C语言-汽车租赁管理系统实习报告书(共30页).doc
《C语言-汽车租赁管理系统实习报告书(共30页).doc》由会员分享,可在线阅读,更多相关《C语言-汽车租赁管理系统实习报告书(共30页).doc(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上西北农林科技大学信息工程学院数据结构与C语言综合训练实习报告题 目: 汽车租借公司的管理 学 号姓 名陈金亚专业班级计算机科学与技术102班指导教师蔡骋完成日期2011年7月8日7月17日目 录专心-专注-专业一、综合训练目的与要求本综合训练是软件工程专业重要的实践性环节之一,是在学生学习完算法分析课程后进行的综合练习。本课综合训练的目的和任务:1. 巩固和加深学生对算法分析课程基本知识的理解和掌握;2. 培养利用算法知识解决实际问题的能力;3. 掌握利用程序设计语言进行算法程序的开发、调试、测试的能力;4. 掌握书写算法设计说明文档的能力;5. 提高综合运用算法、程
2、序设计语言、数据结构知识的能力。6. 应用线性数据结构存储信息,并能够应用上面的基本操作实现事务管理。二、综合训练任务描述设计数据结构及算法完成某个汽车租借公司日常工作的组织与管理。该管理系统的基本管理对象为汽车,每台汽车用一个license number进行唯一标识。每个汽车存在三种可能状态:可以租借(available for rent)已借(rented)修理中(in repair)其中在available队列中汽车应该依据汽车行驶过的路程进行排序,行驶路程最少的汽车排在最前面。在rented队列中的汽车应依据其预期返回时间进行排序,排在最前的应是预期最早返回的汽车。三、算法设计(1)
3、文字描述用三个链表组织三种状态的汽车, 能够实现租借的日常事务:引入新车,租借,收费,修理等。租借收费应根据汽车行驶的路程及借去的时间综合计算得出,路程收费标准如下:低于100Km收费20.00元, 100Km以外的路程枚Km收费0.15元, 汽车根据行驶的路程定期进行维护, 还需实现辅助操作:汽车查询,打印全部信息,计算并打印收入、成本及收益, 主要集中在链表的基本操作上管理系统应有完整地界面(最好是图形化界面)主要集中在链表的基本操作上,主要是链表的插入、删除、排序,文件导入导出。(2) 框图导出文件保存按车牌查找按车名查找开始退出结束初始化导入文件删除成功,链表操作添加成功,链表操作已修
4、成功,链表操作修理成功,链表操作归还成功,链表操作租赁成功,链表操作输入车辆信息输入车辆信息输入车辆信息输入车辆信息输入车辆信息输入车辆信息打印车辆信息打印收益查看车辆选择车辆查找车辆查看收益删除车辆添加车辆已修车辆修理车辆租赁车辆归还车辆(3) 伪代码struct carRecord/ 汽车记录结构体 int Number; char *Name; int Journey; char *Information; int AvailableRent; int RentedTime; int RepairTime; float Fee; float Earn; float Benifit;int
5、 Lable;TCHAR Way256; ;/ carRecordstruct carNode/节点结构体 carRecord Record; carNode *Next; carNode *Front;/ carNodestruct Head/三个链表的结构体 carNode *Available; int aN; carNode *Rented; int reN; carNode *Repair; int repN;/ Headvoid linkInsert(carNode *head, carNode *node)/链表头插入 node-Next = head-Next; if(head
6、-Next) head-Next-Front=node; head-Next = node; node-Front = head;/if/ linkInsertint loadRecord(char *path,carNode *head ,int lable)/文件导入 FILE *file= fopen(path,rt); fscanf(file,%dn,&num); carNode *Cars; for(i=0 ; iRecord.Name = (char *)malloc(NMAX); fscanf(file,%dn,&Carsi-Record.Number); fgets(Carsi
7、-Record.Name,NMAX,file); fscanf(file,%dn,&Carsi-Record.Journey); fscanf(file,%dn,&Carsi-Record.RentedTime); fscanf(file,%dn,&Carsi-Record.RepairTime); fscanf(file,%fn,&Carsi-Record.Fee); fscanf(file,%fn,&Carsi-Record.Earn);fscanf(file,%fn,&Carsi-Record.Benifit); Carsi-Record.Information = (char *)ma
8、lloc(IMAX); fgets(Carsi-Record.Information,IMAX,file);Carsi-Record.Lable = lable+ ;itoa(Carsi-Record.Number, Carsi-Record.Way, 10);strcat(Carsi-Record.Way,.jpg); inkInsert(head,Carsi); fclose(file); return num;/ loadRecordvoid putInFile(carNode* head, char *path,int n) /文件导出 FILE *fp=fopen(path,w);
9、p=head-Next; fprintf(fp,%dn,n); while(p) fprintf(fp,%dn%s%dn%dn%dn%.2fn%.2fn%.2fn%s,p-Record.Number,p-Record.Name,p-Record.Journey,p-Record.RentedTime,p-Record.RepairTime,p-Record.Fee,p-Record.Earn,p-Record.Benifit,p-Record.Information); p=p-Next; fclose(fp); / putInFileint node1MoveTo2(carNode *hea
10、d1, carNode *head2,int n)/节点转移 p=head1-Next; while(p) if(p-Record.Number=n) break; p=p-Next; if(p=NULL) return 1; else if(p-Next=NULL) p-Front-Next = p-Next; else p-Next-Front = p-Front; p-Front-Next = p-Next; linkInsert(head2,p); return 0;/ node1MoveTo2carNode* nodeSortAvailable(carNode *head,int n
11、) /链表递增排序 i=0; head1=(carNode*)malloc(sizeof(carNode); u= head1-Next; while(iNext; if(p!=NULL&(q-Record.JourneyRecord.Journey) q=p; if(q-Next=NULL) q-Front-Next=q-Next; else if(q-Next) q-Front-Next=q-Next; q-Next-Front =q-Front; linkInsert(head1, q); +i; p=head-Next; q=p; q=head; while(q)/删除原链表 u=q;
12、 q=q-Next; free(u); head= head1;/新链表赋予head free(q); free(p); return head1;/ nodeSortAvailablecarNode* nodeSortRented(carNode *head,int n);/类似nodeSortRented()carNode* nodeSortRepair(carNode *head,int n); /类似nodeSortRented()void rentCar(Head &head, int num,int rt);/利用node1MoveTo2()函数void repairCar(Hea
13、d &head, int num,int rpt) ;/利用node1MoveTo2()函数void returnCar(Head &head, int num,int l,int t) ;/利用node1MoveTo2()函数int returnRepairCar(Head &head, int num,float fee) ;/利用node1MoveTo2()函数int addCar(carNode* head,char*path,char *strNum ,char *name,char *strJourney, char *infor) node=(carNode*)malloc(si
14、zeof(carNode); initNode(node); node-Record.Name = (char *)malloc(NMAX); node-Record.Information = (char *)malloc(IMAX);number = atoi(strNum);journey = atoi(strJourney);node-Record.Number= number;node-Record.Name = name;node-Record.Journey = journey;node-Record.Information = infor;if(number =0 |name=
15、n |journey=0|infor =n )return 1; node-Record.RentedTime=0; node-Record.RepairTime=0; node-Record.Fee=0; node-Record.Earn=0;node-Record.Number,node-Record.Name,node-Record.Journey,node-Record.RentedTime,node-Record.RepairTime,node-Record.Fee,node-Record.Earn,node-Record.Information); if(head-Next=NUL
16、L) node-Next=head-Next; head-Next =node; node-Front = head; else if(head-Next!=NULL) linkInsert(head,node); return 0; /addCarfloat Charge(int num, int journey,int t, carNode *p) charge=0; s= journey- p-Record.Journey; if(sum100) charge=20+(sum-100)*0.15+t*500; p-Record.Journey=journey; return charge
17、;/ Chargefloat Benifit(Head &head, float &fee, float &earn)/清算总收益 p=head.Available-Next; if(p) while(p) earn =earn +p-Record.Earn; fee = fee+ p-Record.Fee; p=p-Next; p=head.Rented-Next; if(p) while(p) earn =earn +p-Record.Earn; fee = fee+ p-Record.Fee; p=p-Next; p=head.Repair-Next; if(p) while(p) ea
18、rn =earn +p-Record.Earn; fee = fee+ p-Record.Fee; p=p-Next; ben = earn -fee; return ben;/ Benefitvoid findCar(Head head, int num) n=0; p=head.Available-Next; while(p) if(p-Record.Number=num) n=num; return p; p=p-Next; p=head.Repair-Next; while(p)/同上 p=head.Rented-Next; while(p)/同上 if(n=0) return 0;/
19、findCarint delCar(Head &head,int num)n=0; p=head.Available-Next; while(p) if(p-Record.Number=num) n=num; return 0; p=p-Next; if(n=0) return 1; p-Front-Next = p-Next; p-Next-Front =p-Front; head.aN-; free(p);return 0;/ delCarvoid destroyLink(Head &head)/摧毁数据 p=head.Available; while(p) u=p; p=p-Next;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 汽车 租赁 管理 系统 实习 报告书 30
限制150内