C语言课程设计与实验报告_第1页
C语言课程设计与实验报告_第2页
C语言课程设计与实验报告_第3页
C语言课程设计与实验报告_第4页
C语言课程设计与实验报告_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

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

文档简介

《C语言程序设计》课程设计实验报告题目:汽车租赁信息管理系统 专业:计算机科学与技术 班级:学号: 姓名: 成绩: 指导教师:完成日期:年月日一、题目汽车租赁信息管理系统对某汽车租赁公司汽车租赁信息进行管理,包括汽车基本信息和汽车租赁信息。(1)需要处理的基础数据a)汽车租赁公司信息参考:中文字段名类型及长度举例或说明公司名称char[30]汽车类型char‘1’轿车‘2’客车‘3’货车b)汽车基本信息参考:中文字段名类型及长度举例或说明汽车类型char‘1’轿车‘2’客车‘3’货车公司名称char[30]汽车数int日租金float100.00联系人char[20]“chenguoqing”联系电话char[20]12345678901c)汽车租赁信息参考:中文字段名类型及长度举例或说明客户姓名char[20]身份证号char[20]租车日期char[12]“2009/01/租用天数int公司名称char[30]汽车类型char‘1’轿车‘2’客车‘3’货车租车数目int3(辆)(2)系统功能a)各种基本数据的录入。如:汽车基本信息录入、租赁公司信息录入、汽车租赁信息录入。b)各种基本数据的修改。即:允许对已经录入的数据重新进行编辑、修改。c)各种基本数据的插入。d)各种基本数据的删除。e)基于各种数据的查询。如:某租赁公司在指定日期的租车信息。f)基于各种基本数据的统计计算。如:(I)统计各汽车租赁公司总汽车数和租金总额,按租金总额从高到低排序后输出。(II)统计某年度十二个月份汽车租赁的总次数和总租金。(III)统计各公司各类汽车出租次数、出租金额,按出租金额从高到低排序后输出。(IV)分别统计出租率最高的5家公司,从高到低排序后输出公司名称、公司汽车总数、出租总次数。(V)汽车租赁信息其它方面的统计。二、系统功能模块结构图汽车租赁信息管理系统汽车租赁信息管理系统查询修改删除插入输出统计载入新建保存公司汽车租赁公司汽车租赁创建公司汽车租赁公司汽车租赁公司汽车租赁公司信息年度信息租赁信息租赁统计历史信息三、数据结构设计及用法说明这个系统是采用三个方向的十字链表,其中第一条链是汽车租赁公司的基本信息,包括公司名称、汽车类型和各类型汽车数量,第二条链是汽车基本信息,包括汽车类型、公司名称、汽车数、日租金、联系人和联系电话,第三条链是汽车租赁的基本信息,包括客户姓名、身份证号、租车日期、租车天数、公司名称、汽车类型和租车数目。下图就是数据三个方向的十字交叉链表四、程序结构下图为程序结构的流程图:开始开始菜单选择输入信息输入查询修改删除插入输出统计否否否否否否退出信息统计信息输出信息插入信息删除信息修改信息查询是是是是是是否结束是是五、各模块的功能Build:Load:将已经存好的数据导入New:输入新的数据Save:将输入的数据保存Quit:退出程序Search:Firm:查询公司信息Bus:查询汽车信息Busrent查询汽车租赁信息Modify:Firm:修改公司信息Bus:修改汽车信息Busrent:修改汽车租赁信息Delete:Firm:删除公司信息Bus:删除汽车信息Busrent:删除汽车租赁信息Insert:Firm:插入公司信息Bus:插入汽车信息Busrent:插入汽车租赁信息Output:Firm:输出公司信息Bus:输出汽车信息Busrent:输出汽车租赁信息Censue:Tongji1:统计每个公司的汽车总数和租赁的总收入Tongji2:统计每个年度所有公司出租汽车总数和总收入Tongji3:统计每个公司每种类型的汽车出租次数和收入Tongji4:统计每个公司汽车的出租率、总汽车数和租出汽车次数Tongji5:统计所有公司的所有年度汽车出租总数和总收入六、试验结果七、体会这次实验结合了C语言里面的数组、指针、链表、文件等知识点。刚开始的时候不知道如何下手,后来在相关书籍上找了相似的程序慢慢分析后开始自己尝试着写,因为开始的时候还是不会,就和寝室里面的人讨论、相互参考,经过几天的研究,我们终于写出了第一个界面,有了第一次的经验,我慢慢的写出了Build函数以及后面的函数。最难的就是函数的调试了,开始运行的时候报错特别多,自己就那样一点一点的调,错误也渐渐减少,但是到最后又几个错误不管我怎么调就是报错,当时真的很着急,后来找到了班上成绩比较好的同学,纵欲把最后几个报错的地方改正了。经过这么多的曲折,当我看到自己写出来的程序时心里有的是高兴与激动。或许对于别人来说,这次的实验只是小菜一碟,但对我来说,这是经过我的付出与努力换来的。八、参考文献1.C语言程序设计曹计昌卢萍李开编著辞学出版社2.TurboC使用大全第一册、第二册徐金梧等编译北京科海培训中心3.C程序设计谭浩强清华大学出版4.C语言程序设计廖雷高等教育出版社九、程序清单#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>typedefstructbuscode{charbusnum[5];chartype[2];charfirm[30];intrent;charcontactor[20];chartel[20];structbuscode*next;structbuscode*right;}L;typedefstructbus_rentcode{charbusnum[5];charname[20];charid_card_num[20];charrent_date[12];intrent_days;charfirm_name[30];intmount;structbus_rentcode*next;}H;typedefstructfirmcode{charname[30];intmount1; intmount2; intmount3;structfirmcode*next;structfirmcode*down;}T;char*Menu[]={"Build", "Quit", "Search", "Modify", "Delete", "Insert", "Output", "Census"};char*Prompt[]={"F1-Help", "F5-Zoom", "F6-Switch", "F7-Trace", "F8-Step", "F9-Make", "F10-Menu", "NUM"};char*Menus[]={"Load", "New", "Save","Areyousure?", "Firm", "Bus", "Busrent", "Firm", "Bus", "Busrent", "Firm", "Bus", "Busrent", "Firm", "Bus", "Busrent", "Firm", "Bus", "Busrent", "tongji1", "tongji2", "tongji3", "tongji4", "tongji5"};intMnN[]={3,1,3,3,3,3,3,5};intMnLoc[][5]={{4,3,2,18,6}, {13,10,2,25,4}, {22,17,2,42,6}, {32,23,2,57,6}, {42,33,2,69,6}, {52,43,2,62,6}, {62,45,2,79,6}, {72,50,2,79,8}};intMnm,Mns;charbuf[30*25*2],buf1[40*3*2];voidoutput_firm(T*head) ; voidbuild(T**);voidSave(T*head);voidoutput_bus(T*head);voidLoad(T**head);voidoutput_busrent(T*head);voidInsert_firm(T*head);voidInsert_bus(T*head);voidInsert_busrent(T*head);voidDelete_firm(T*head);voidDelete_bus(T*head);voidDelete_busrent(T*head);voidSearch_firm(T*head);voidSearch_bus(T*head);voidSearch_busrent(T*head);voidModify_firm(T*head);voidModify_bus(T*head);voidModify_busrent(T*head);voidtongji1(T*head);voidtongji2(T*head);voidtongji3(T*head);voidtongji4(T*head);voidtongji5(T*head);voidShowMenuM(void);voidSetMenuM(int);voidClrMenuM(int);voidShowMenuS(int);voidHideMenuS(int);voidSetMenuS(int);voidClrMenuS(int);voidSelLR(int);voidSelUD(int);voidExeItem(int,int);voidScanKb(int*,int*);T*hp=NULL;L*t1;H*t2;voidmain(void){inti,idx,key0,key1,flag=1;textbackground(CYAN);clrscr();ShowMenuM();Mnm=1;Mns=0;SetMenuM(Mnm);while(flag){ key0=key1=0; ScanKb(&key0,&key1); if(key0!=0){/*ifanordinarykeyispressed*/ if(Mns==0){/*operateonmainmenu*/ if(key0==13) ShowMenuS(Mnm); else{ for(i=0;i<8;i++) if(key0-*Menu[i]==0||key0-*Menu[i]==32) break; if(i<8) ShowMenuS(i+1); } } else{/*operateonsubmenu*/ if(key0==13) ExeItem(Mnm,Mns); elseif(key0==27){ HideMenuS(Mnm); Mns=0; } else{ for(i=1,idx=0;i<Mnm;i++) idx+=MnN[i-1]; for(i=idx;i<idx+MnN[Mnm-1];i++) if(key0-*Menus[i]==0||key0-*Menus[i]==32) break; if(i<idx+MnN[Mnm-1]) ExeItem(Mnm,i-idx+1); } } } else{/*ifaspecialkeyispressed*/ switch(key1){ case33:ShowMenuS(1);break;/*Alt+F*/ case18:ShowMenuS(2);break;/*Alt+E*/ case19:ShowMenuS(3);break;/*Alt+R*/ case46:ShowMenuS(4);break;/*Alt+C*/ case25:ShowMenuS(5);break;/*Alt+P*/ case24:ShowMenuS(6);break;/*Alt+O*/ case32:ShowMenuS(7);break;/*Alt+D*/ case48:ShowMenuS(8);break;/*Alt+B*/ case61:ExeItem(1,1);break;/*F3*/ case106:ExeItem(1,2);break;/*Alt+F3*/ case60:ExeItem(1,4);break;/*F2*/ case45:flag=0;break;/*Alt+X*/ case102:ExeItem(3,1);break;/*Ctrl+F9*/ case95:ExeItem(3,2);break;/*Ctrl+F2*/ case62:ExeItem(3,3);break;/*F4*/ case65:ExeItem(3,4);break;/*F7*/ case66:ExeItem(3,5);break;/*F8*/ case108:ExeItem(3,6);break;/*Alt+F5*/ case97:ExeItem(7,1);break;/*Ctrl+F4*/ case96:ExeItem(7,2);break;/*Ctrl+F3*/ case100:ExeItem(8,1);break;/*Ctrl+F7*/ case101:ExeItem(8,6);break;/*Ctrl+F8*/ case72:SelUD(-1);break;/*UP*/ case80:SelUD(1);break;/*DOWN*/ case75:SelLR(-1);break;/*LEFT*/ case77:SelLR(1);break;/*Right*/ } }}}voidShowMenuM(void)/*showmainmenu*/{inti;window(1,1,80,1);textbackground(GREEN);textcolor(YELLOW);clrscr();for(i=0;i<8;i++){ gotoxy(MnLoc[i][0],1); textcolor(RED); cprintf("%c",*Menu[i]); textcolor(BLACK); cprintf("%s",Menu[i]+1);}}voidSetMenuM(intmmn)/*tagmainmenu*/{window(1,1,80,1);textbackground(GREEN);textcolor(YELLOW);gotoxy(MnLoc[mmn-1][0],1);cprintf("%s",Menu[mmn-1]);}voidClrMenuM(intmmn)/*clearthetagofmainmenu*/{window(1,1,80,1);textbackground(GREEN);gotoxy(MnLoc[mmn-1][0],1);textcolor(RED);cprintf("%c",*Menu[mmn-1]);textcolor(BLACK);cprintf("%s",Menu[mmn-1]+1);}voidShowMenuS(intmmn)/*showsubmenuofmainmenummn*/{inti,left,top,right,bottom,ht,wd,idx;if(mmn==Mnm&&Mns>0) return;if(mmn!=Mnm){ if(Mns>0)HideMenuS(Mnm); ClrMenuM(Mnm); SetMenuM(Mnm=mmn);}Mns=1;left=MnLoc[Mnm-1][1];top=MnLoc[Mnm-1][2];right=MnLoc[Mnm-1][3];bottom=MnLoc[Mnm-1][4];ht=bottom-top+1;wd=right-left+1;for(i=1,idx=0;i<Mnm;i++) idx+=MnN[i-1];gettext(left,top,right,bottom,buf);window(left,top,right,bottom);textbackground(LIGHTGRAY);textcolor(BLACK);clrscr();window(left,top,right,bottom+1);putch(0xda);for(i=2;i<wd;i++) putch(0xc4);putch(0xbf);for(i=2;i<ht;i++){ gotoxy(1,i); textcolor(BLACK); cprintf("%c%-*s%c",0xb3,wd-3,Menus[idx+i-2],0xb3); gotoxy(3,i); textcolor(RED); cprintf("%c",*Menus[idx+i-2]);}gotoxy(1,i);textcolor(BLACK);putch(0xc0);for(i=2;i<=right-left;i++) putch(0xc4);putch(0xd9);SetMenuS(Mns);}voidHideMenuS(intmmn)/*hidesubmenuofmainmenummn*/{intleft,top,right,bottom;left=MnLoc[mmn-1][1];top=MnLoc[mmn-1][2];right=MnLoc[mmn-1][3];bottom=MnLoc[mmn-1][4];puttext(left,top,right,bottom,buf);Mns=0;}voidSetMenuS(intsmn)/*tagsubmenu*/{inti,left,top,right,bottom,ht,wd,idx;ClrMenuS(Mns);Mns=smn;left=MnLoc[Mnm-1][1];top=MnLoc[Mnm-1][2];right=MnLoc[Mnm-1][3];bottom=MnLoc[Mnm-1][4];wd=right-left+1;for(i=1,idx=0;i<Mnm;i++) idx+=MnN[i-1];idx+=Mns-1;window(left,top,right,bottom);textbackground(BLACK);textcolor(WHITE);gotoxy(2,Mns+1);cprintf("%-*s",wd-3,Menus[idx]);}voidClrMenuS(intsmn)/*clearthetagofsubmenu*/{inti,left,top,right,bottom,ht,wd,idx;left=MnLoc[Mnm-1][1];top=MnLoc[Mnm-1][2];right=MnLoc[Mnm-1][3];bottom=MnLoc[Mnm-1][4];wd=right-left+1;for(i=1,idx=0;i<Mnm;i++) idx+=MnN[i-1];idx+=smn-1;window(left,top,right,bottom);textbackground(WHITE);textcolor(BLACK);gotoxy(2,smn+1);cprintf("%-*s",wd-3,Menus[idx]);gotoxy(3,smn+1);textcolor(RED);cprintf("%c",*Menus[idx]);}voidSelLR(intlr)/*selectmenuitemleftorright*/{intmmn=Mnm+lr;if(mmn>8) mmn=1;elseif(mmn<1) mmn=8;if(Mns>0) ShowMenuS(mmn);else{ ClrMenuM(Mnm); SetMenuM(Mnm=mmn);}}voidSelUD(intud)/*selectsubmenuitemupordown*/{intsmn=Mns+ud;if(Mnm==2) return;if(smn>MnN[Mnm-1]) smn=1;elseif(smn<1) smn=MnN[Mnm-1];if(Mns==0){ if(ud==1)ShowMenuS(Mnm);}else{ if(Mnm==8&&smn==8) if(ud>0)smn++;elsesmn--; ClrMenuS(Mns); SetMenuS(Mns=smn);}}voidExeItem(intmmn,intsmn)/*executethecorrespondingcommand*/{ if(mmn==1&&smn==1)Load(&hp); if(mmn==1&&smn==2)build(&hp); if(mmn==1&&smn==3)Save(hp);if(mmn==2&&smn==1)exit(0); if(mmn==3&&smn==1)Search_firm(hp); if(mmn==3&&smn==2)Search_bus(hp); if(mmn==3&&smn==3)Search_busrent(hp); if(mmn==4&&smn==1)Modify_firm(hp); if(mmn==4&&smn==2)Modify_bus(hp); if(mmn==4&&smn==3)Modify_busrent(hp); if(mmn==5&&smn==1)Delete_firm(hp);if(mmn==5&&smn==2)Delete_bus(hp);if(mmn==5&&smn==3)Delete_busrent(hp);if(mmn==6&&smn==1)Insert_firm(hp);if(mmn==6&&smn==2)Insert_bus(hp);if(mmn==6&&smn==3)Insert_busrent(hp);if(mmn==7&&smn==1)output_firm(hp);if(mmn==7&&smn==2)output_bus(hp);if(mmn==7&&smn==3)output_busrent(hp); if(mmn==8&&smn==1)tongji1(hp); if(mmn==8&&smn==2)tongji2(hp); if(mmn==8&&smn==3)tongji3(hp); if(mmn==8&&smn==4)tongji4(hp); if(mmn==8&&smn==5)tongji5(hp);if(Mns>0&&Mnm!=2)HideMenuS(Mnm);}voidScanKb(int*pk0,int*pk1)/*acceptinputfromkeyboard*/{intkey;while(bioskey(1)==0);key=bioskey(0);*pk0=key&0xff;*pk1=(key>>8)&0xff;}voidbuild(T**head)/*生成链表函数具体实现*/{ T*hp=NULL;inta=1;charch;T*p;L*t1=NULL;H*t2=NULL;window(1,2,80,25);textbackground(CYAN);textcolor(BLACK);clrscr();gotoxy(1,1);do{p=(T*)malloc(sizeof(T));/*创建公司基本信息第一个结点*/cprintf("pleaseinputthefirmname:\n");scanf("%s",p->name);getchar();clrscr();cprintf("pleaseinputthemountofbustype1:\n"); scanf("%d",&p->mount1);getchar(); clrscr(); cprintf("pleaseinputthemountofbustype2:\n"); scanf("%d",&p->mount2);getchar(); clrscr(); cprintf("pleaseinputthemountofbustype3:\n"); scanf("%d",&p->mount3);getchar(); clrscr();p->down=NULL;/*置汽车信息链的头指针为空*/p->next=hp;/*公司基本信息链头指针值赋给结点的next域*/hp=p; /*头指针指向新创建的结点*/cprintf("Doyouwantcontinue?'y'or'n'\n");ch=getchar();getchar();if(ch=='n'||ch=='N')break;}while(a);(*head)=hp;/*调用函数中的head头指针指向新创建的公司基本信息结点*/p=(*head);/*p1指向公司信息链的链头*/while(p!=NULL){cprintf("Continueinputbusmessage?'y'or'n'\n");ch=getchar();getchar(); if(ch=='n'||ch=='N'){ clrscr(); break; }while(ch=='y'||ch=='Y'){t1=(L*)malloc(sizeof(L)); /*创建汽车信息的结点*/ cprintf("pleaseinputthebusnumber:\n");scanf("%s",t1->busnum);getchar();clrscr();cprintf("pleaseinputthebustype:\n");scanf("%s",t1->type);getchar();clrscr();cprintf("pleaseinputthefirmname:\n");scanf("%s",t1->firm);getchar();clrscr();cprintf("pleaseinputtherentofoneday:\n");scanf("%d",&t1->rent);getchar();clrscr();cprintf("pleaseinputthecontactorname:\n");scanf("%s",t1->contactor);getchar();clrscr();cprintf("pleaseinputthetelephone:\n");scanf("%s",t1->tel);getchar();clrscr();t1->right=NULL;/*置汽车信息链的头指针为空*/t1->next=(L*)p->down;/*头指针值赋给新结点的指针域*/p->down=(T*)t1;/*头指针指向新结点*/cprintf("Continueinputthebusmessage?'y'or'n'\n");ch=getchar();getchar(); if(ch=='n'||ch=='N'){ clrscr(); break; } } while(p!=NULL){ if(t1!=NULL){ cprintf("Continueinputthebusrentmessage?'y'or'n'\n"); ch=getchar();getchar(); } if(ch=='n'||ch=='N'){ clrscr(); break; } while(ch=='y'||ch=='Y'){ t2=(H*)malloc(sizeof(H)); cprintf("pleaseinputthebusnumber:\n"); scanf("%s",t2->busnum); getchar(); clrscr(); cprintf("pleaseinputthecustorm'sname:\n"); scanf("%s",t2->name); getchar(); clrscr(); cprintf("pleaseinputthecustorm'sid_card_num:\n"); scanf("%s",t2->id_card_num); getchar(); clrscr(); cprintf("pleaseinputtherent_date:\n"); scanf("%s",t2->rent_date); getchar(); clrscr(); cprintf("pleaseinputtherent_days:\n"); scanf("%d",&t2->rent_days); clrscr(); cprintf("pleaseinputthefirm_name:\n"); scanf("%s",t2->firm_name); getchar(); clrscr(); cprintf("pleaseinputthemountofrent:\n"); scanf("%d",&t2->mount); getchar(); clrscr(); t2->next=(H*)t1->right;/*头指针值赋给新结点的指针域*/ t1->right=(L*)t2;/*头指针指向新结点*/ cprintf("Continueinputthisbusrentmessage?'y'or'n'\n"); ch=getchar();getchar(); if(ch=='n'||ch=='N'){ clrscr(); break; } } t1=t1->next; /*t1指向汽车信息链的下一个结点*/ } p=p->next; }clrscr();}/*指向公司信息链的下一个结点*/voidoutput_firm(T*head){ inti=2,j=0; T*p=head;window(1,2,80,25);textbackground(CYAN);textcolor(BLACK);clrscr(); while(p!=NULL){ cprintf("firmname:%s",p->name); gotoxy(1,i); i++; cprintf("bustype1:qiche2:jiaoche3:huoche"); gotoxy(1,i); i++; cprintf("bustype1:%dbustype2:%dbustype3:%d",p->mount1,p->mount2,p->mount3); gotoxy(1,i); i++; p=p->next; getch(); j++; if(j==8){ clrscr(); i=2; j=0; } } clrscr();}voidoutput_bus(T*head){inti=2,j=0;T*p=head;L*t1=NULL;window(1,2,80,25);textbackground(CYAN);textcolor(BLACK);clrscr(); while(p!=NULL){ if((p->down)!=NULL){cprintf("firmname:%s",p->name);gotoxy(1,i); i++; cprintf("bustype1:qiche2:jiaoche3:huoche\n"); gotoxy(6,i); i++; t1=(L*)p->down; } while(t1!=NULL){ cprintf("busnumber:%s",t1->busnum); gotoxy(6,i); i++; cprintf("bustype:%s",t1->type); gotoxy(6,i); i++; cprintf("therentofoneday:%dyuan",t1->rent); gotoxy(6,i); i++; cprintf("thecontactorname:%s",t1->contactor); gotoxy(6,i); i++; cprintf("thetelephone:%s",t1->tel); gotoxy(6,i); i++; t1=t1->next; getch(); j++; if(j==3){ clrscr(); i=4; j=0; cprintf("firmname:%s",p->name); gotoxy(1,2); cprintf("bustype1:qiche2:jiaoche3:huoche"); gotoxy(6,3); } } p=p->next; clrscr(); i=2;j=0; } clrscr();}voidSave(T*head){ FILE*out1,*out2,*out3; T*p=head; L*t1=NULL; H*t2=NULL; if((out1=fopen("f:\\firm.dat","wb"))==NULL)/*打开公司基本信息文件*/ exit(-1); if((out2=fopen("f:\\bus.dat","wb"))==NULL)/*打开汽车基本信息文件*/ exit(-1); if((out3=fopen("f:\\busrent.dat","wb"))==NULL)/*打开汽车租赁信息文件*/ exit(-1); while(p!=NULL){ fwrite(p,sizeof(T),1,out1); /*写公司基本信息记录*/ t1=(L*)p->down;/*汽车信息遍历指针指向汽车信息链的链头*/ while(t1!=NULL){ fwrite(t1,sizeof(L),1,out2); /*写汽车信息记录*/ t2=(H*)t1->right; while(t2!=NULL){ fwrite(t2,sizeof(H),1,out3);/*写汽车租赁信息记录*/ t2=t2->next;/*指向下一个汽车租赁信息结点*/ } t1=t1->next;/*指向下一个汽车信息结点*/ } p=p->next;/*指向下一个公司比本信息结点*/ } fclose(out1);/*关闭公司信息文件*/ fclose(out2);/*关闭汽车信息文件*/ fclose(out3);/*关闭汽车租赁信息文件*/}voidLoad(T**head){ FILE*in1,*in2,*in3; T*hp=NULL,*p; L*t1=NULL; H*t2=NULL; if((in1=fopen("f:\\firm.dat","rb"))==NULL)/*打开公司基本信息文件*/ exit(-1); if((in2=fopen("f:\\bus.dat","rb"))==NULL)/*打开汽车信息文件*/ exit(-1); if((in3=fopen("f:\\busrent.dat","rb"))==NULL)/*打开汽车租赁信息文件*/ exit(-1); while(!feof(in1)){ p=(T*)malloc(sizeof(T));/*创建公司基本信息结点*/ fread(p,sizeof(T),1,in1);/*读一条公司基本信息记录到结点中*/ if(!feof(in1)){ p->down=NULL;/*置汽车信息链的头指针为NULL*/ p->next=hp;/*公司基本信息链头指针值赋给结点的next域*/ hp=p;/*头指针指向新创建的结点*/ } } (*head)=hp;/*调用函数中的head头指针指向新创建的公司基本信息链*/ while(!feof(in2)){ t1=(L*)malloc(sizeof(L));/*创建新汽车信息结点*/ fread(t1,sizeof(L),1,in2);/*读一条汽车信息记录到新结点*/ if(!feof(in2)){ p=(*head);/*遍历指针p指向公司基本信息链的链头*/ while(p!=NULL){/*遍历公司基本信息链*/ if(!strcmp(p->name,t1->firm)){/*查找相同公司名的结点*/t1->right=NULL; t1->next=(L*)p->down;/*找到,新结点加入汽车信息链*/ p->down=(T*)t1; break; } else p=p->next;/*没找到,转下一结点*/ } } } while(!feof(in3)){ t2=(H*)malloc(sizeof(H)); fread(t2,sizeof(H),1,in3); if(!feof(in3)){ p=(*head); while(p!=NULL){ t1=(L*)p->down; while(t1!=NULL){ if(!strcmp(t1->busnum,t2->busnum)){ t2->next=(H*)t1->right; t1->right=(L*)t2; break; } else t1=t1->next; } p=p->next; } } } fclose(in1);/*关闭公司基本信息文件*/ fclose(in2);/*关闭汽车信息文件*/ fclose(in3);/*关闭汽车租赁信息文件*/}voidoutput_busrent(T*head){inti=2,j=0;T*p=head;window(1,2,80,25);textbackground(CYAN);textcolor(BLACK);clrscr();while(p!=NULL){ t1=(L*)p->down; while(t1!=NULL){ t2=(H*)t1->right; while(t2!=NULL){ cprintf("firmname:%s\n",t2->firm_name); gotoxy(1,i); i++; cprintf("bustype:%s\n",t1->type); gotoxy(1,i); i++;cprintf("busnumber:%s\n",t2->busnum); gotoxy(1,i); i++;cprintf("customer'name:%s\n",t2->name); gotoxy(1,i); i++; cprintf("customer'sidcardnumber:%s\n",t2->id_card_num); gotoxy(1,i); i++; cprintf("therentdate:%s\n",t2->rent_date); gotoxy(1,i); i++; cprintf("rentdays:%ddays\n",t2->rent_days); gotoxy(1,i); i++; cprintf("therentmount:%d\n",t2->mount); gotoxy(1,i); i++; t2=t2->next; getch(); j++; if(j==2){ clrscr(); i=2; j=0; } } t1=t1->next; } p=p->next; } clrscr();}voidInsert_firm(T*head){ inti=2,j=0,k; intch; T*p=head,*p1=NULL,*p2=NULL; window(1,2,80,25);textbackground(CYAN);textcolor(BLACK);clrscr(); gotoxy(20,1); cprintf("(1)head;"); gotoxy(20,2); while(p!=NULL){ cprintf("(%d)firmname:%s;",i,p->name); gotoxy(20,i+1); p=p->next; i++; j++; } do{ cprintf("pleasechoosewheretoinsert(1--%d):",j+1); scanf("%d",&ch); gotoxy(20,i+1); i++; }while(ch<1||ch>j+1); if(ch==1){ clrscr(); p1=(T*)malloc(sizeof(T)); cprintf("pleaseinputthefirmname:\n");scanf("%s",p1->name);getchar();clrscr();cprintf("pleaseinputthemountofbustype1:\n"); scanf("%d",&p1->mount1);getchar(); clrscr(); cprintf("pleaseinputthemountofbustype2:\n"); scanf("%d",&p1->mount2);getchar(); clrscr(); cprintf("pleaseinputthemountofbustype3:\n"); scanf("%d",&p1->mount3);getchar(); clrscr(); p1->down=NULL; p1->next=hp; hp=p1; p=p1; } if(j==0)return; if(ch==j+1){ clrscr(); p=head; while((p->next)!=NULL){ p=p->next; } p1=(T*)malloc(sizeof(T)); cprintf("pleaseinputthefirmname:\n");scanf("%s",p1->name);getchar();clrscr();cprintf("pleaseinputthemountofbustype1:\n"); scanf("%d",&p1->mount1);getchar(); clrscr(); cprintf("pleaseinputthemountofbustype2:\n"); scanf("%d",&p1->mount2);getchar(); clrscr(); cprintf("pleaseinputthemountofbustype3:\n"); scanf("%d",&p1->mount3);getchar(); clrscr(); p1->next=NULL; p1->down=NULL; p->next=p1; p=head; } if(ch>1&&ch<j+1){ clrscr(); p1=head; for(k=1;k<ch-1;k++){ p1=p1->next; } p=p1->next; p2=(T*)malloc(sizeof(T)); cprintf("pleaseinputthefirmname:\n");scanf("%s",p2->name);getchar();clrscr();cprintf("pleaseinputthemountofbustype1:\n"); scanf("%d",&p2->mount1);getchar(); clrscr(); cprintf("pleaseinputthemountofbustype2:\n"); scanf("%d",&p2->mount2);getchar(); clrscr(); cprintf("pleaseinputthemountofbustype3:\n"); scanf("%d",&p2->mount3);getchar(); clrscr(); p2->next=p; p2->down=NULL; p1->next=p2; p=head; }} voidInsert_bus(T*head){ inti=1,j=0,k; intch; T*p=head; L*p1=NULL,*p2=NULL,*r=NULL; window(1,2,80,25);textbackground(CYAN);textcolor(BLACK);clrscr(); gotoxy(20,1); while(p!=NULL){ cprintf("(%d)firmname:%s;",i,p->name); gotoxy(20,i+1); p=p->next; i++; j++; } p=head; if(p==NULL){ gotoxy(10,1); cprintf("Noplacetoinsertbusmessage!"); gotoxy(10,2); cprintf("Pleaseinsertfirmmessagefirst!"); getch(); clrscr(); return; } else{ do{ cprintf("pleasechoosefirmfirst(1--%d):",j); scanf("%d",&ch); gotoxy(20,i+1); i++; }while(ch<1||ch>j); } clrscr(); p=head; for(k=0;k<ch-1;k++){ p=p->next; } p1=(L*)p->down; i=2; j=0; gotoxy(20,1); cprintf("(1)head;"); gotoxy(20,2); while(p1!=NULL){ cprintf("(%d)busnumber:%s;",i,p1->busnum); gotoxy(20,i+1); p1=p1->next; i++; j++; } p1=(L*)p->down; if(p1!=NULL){ do{ cprintf("pleasechoosebussecond(1--%d):",j+1); scanf("%d",&ch); gotoxy(20,i+1); i++; }while(ch<1||ch>j+1); if(ch==j+1){ clrscr(); p1=(L*)p->down; while((p1->next)!=NULL){ p1=p1->next; } p2=(L*)malloc(sizeof(L)); /*创建汽车信息的结点*/ cprintf("pleaseinputthebusnumber:\n"); scanf("%s",p2->busnum); getchar(); clrscr(); cprintf("pleaseinputthebustype:\n"); scanf("%s",&p2->type); getchar(); clrscr(); cprintf("pleaseinputthefirmname:\n"); scanf("%s",p2->firm); getchar(); clrscr(); cprintf("pleaseinputtherentofoneday:\n"); scanf("%d",&p2->rent); getchar(); clrscr(); cprintf("pleaseinputthecontactorname:\n"); scanf

温馨提示

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

评论

0/150

提交评论