C語言課程設(shè)計(jì)與實(shí)驗(yàn)報(bào)告_第1頁
C語言課程設(shè)計(jì)與實(shí)驗(yàn)報(bào)告_第2頁
C語言課程設(shè)計(jì)與實(shí)驗(yàn)報(bào)告_第3頁
C語言課程設(shè)計(jì)與實(shí)驗(yàn)報(bào)告_第4頁
C語言課程設(shè)計(jì)與實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

《C語言程序設(shè)計(jì)》課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告題目:汽車租賃信息管理系統(tǒng) 專業(yè):計(jì)算機(jī)科學(xué)與技術(shù) 班級(jí):學(xué)號(hào): 姓名: 成績: 指導(dǎo)教師:完成日期:年月日一、題目汽車租賃信息管理系統(tǒng)對(duì)某汽車租賃公司汽車租賃信息進(jìn)行管理,包括汽車基本信息和汽車租賃信息。(1)需要處理的基礎(chǔ)數(shù)據(jù)a)汽車租賃公司信息參考:中文字段名類型及長度舉例或說明公司名稱char[30]汽車類型char‘1’轎車‘2’客車‘3’貨車b)汽車基本信息參考:中文字段名類型及長度舉例或說明汽車類型char‘1’轎車‘2’客車‘3’貨車公司名稱char[30]汽車數(shù)int日租金float100.00聯(lián)系人char[20]“chenguoqing”聯(lián)系電話char[20]12345678901c)汽車租賃信息參考:中文字段名類型及長度舉例或說明客戶姓名char[20]身份證號(hào)char[20]租車日期char[12]“2009/01/租用天數(shù)int公司名稱char[30]汽車類型char‘1’轎車‘2’客車‘3’貨車租車數(shù)目int3(輛)(2)系統(tǒng)功能a)各種基本數(shù)據(jù)的錄入。如:汽車基本信息錄入、租賃公司信息錄入、汽車租賃信息錄入。b)各種基本數(shù)據(jù)的修改。即:允許對(duì)已經(jīng)錄入的數(shù)據(jù)重新進(jìn)行編輯、修改。c)各種基本數(shù)據(jù)的插入。d)各種基本數(shù)據(jù)的刪除。e)基于各種數(shù)據(jù)的查詢。如:某租賃公司在指定日期的租車信息。f)基于各種基本數(shù)據(jù)的統(tǒng)計(jì)計(jì)算。如:(I)統(tǒng)計(jì)各汽車租賃公司總汽車數(shù)和租金總額,按租金總額從高到低排序后輸出。(II)統(tǒng)計(jì)某年度十二個(gè)月份汽車租賃的總次數(shù)和總租金。(III)統(tǒng)計(jì)各公司各類汽車出租次數(shù)、出租金額,按出租金額從高到低排序后輸出。(IV)分別統(tǒng)計(jì)出租率最高的5家公司,從高到低排序后輸出公司名稱、公司汽車總數(shù)、出租總次數(shù)。(V)汽車租賃信息其它方面的統(tǒng)計(jì)。二、系統(tǒng)功能模塊結(jié)構(gòu)圖汽車租賃信息管理系統(tǒng)汽車租賃信息管理系統(tǒng)查詢修改刪除插入輸出統(tǒng)計(jì)載入新建保存公司汽車租賃公司汽車租賃創(chuàng)建公司汽車租賃公司汽車租賃公司汽車租賃公司信息年度信息租賃信息租賃統(tǒng)計(jì)歷史信息三、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及用法說明這個(gè)系統(tǒng)是采用三個(gè)方向的十字鏈表,其中第一條鏈?zhǔn)瞧囎赓U公司的基本信息,包括公司名稱、汽車類型和各類型汽車數(shù)量,第二條鏈?zhǔn)瞧嚮拘畔?,包括汽車類型、公司名稱、汽車數(shù)、日租金、聯(lián)系人和聯(lián)系電話,第三條鏈?zhǔn)瞧囎赓U的基本信息,包括客戶姓名、身份證號(hào)、租車日期、租車天數(shù)、公司名稱、汽車類型和租車數(shù)目。下圖就是數(shù)據(jù)三個(gè)方向的十字交叉鏈表四、程序結(jié)構(gòu)下圖為程序結(jié)構(gòu)的流程圖:開始開始菜單選擇輸入信息輸入查詢修改刪除插入輸出統(tǒng)計(jì)否否否否否否退出信息統(tǒng)計(jì)信息輸出信息插入信息刪除信息修改信息查詢是是是是是是否結(jié)束是是五、各模塊的功能Build:Load:將已經(jīng)存好的數(shù)據(jù)導(dǎo)入New:輸入新的數(shù)據(jù)Save:將輸入的數(shù)據(jù)保存Quit:退出程序Search:Firm:查詢公司信息Bus:查詢汽車信息Busrent查詢汽車租賃信息Modify:Firm:修改公司信息Bus:修改汽車信息Busrent:修改汽車租賃信息Delete:Firm:刪除公司信息Bus:刪除汽車信息Busrent:刪除汽車租賃信息Insert:Firm:插入公司信息Bus:插入汽車信息Busrent:插入汽車租賃信息Output:Firm:輸出公司信息Bus:輸出汽車信息Busrent:輸出汽車租賃信息Censue:Tongji1:統(tǒng)計(jì)每個(gè)公司的汽車總數(shù)和租賃的總收入Tongji2:統(tǒng)計(jì)每個(gè)年度所有公司出租汽車總數(shù)和總收入Tongji3:統(tǒng)計(jì)每個(gè)公司每種類型的汽車出租次數(shù)和收入Tongji4:統(tǒng)計(jì)每個(gè)公司汽車的出租率、總汽車數(shù)和租出汽車次數(shù)Tongji5:統(tǒng)計(jì)所有公司的所有年度汽車出租總數(shù)和總收入六、試驗(yàn)結(jié)果七、體會(huì)這次實(shí)驗(yàn)結(jié)合了C語言里面的數(shù)組、指針、鏈表、文件等知識(shí)點(diǎn)。剛開始的時(shí)候不知道如何下手,后來在相關(guān)書籍上找了相似的程序慢慢分析后開始自己嘗試著寫,因?yàn)殚_始的時(shí)候還是不會(huì),就和寢室里面的人討論、相互參考,經(jīng)過幾天的研究,我們終于寫出了第一個(gè)界面,有了第一次的經(jīng)驗(yàn),我慢慢的寫出了Build函數(shù)以及后面的函數(shù)。最難的就是函數(shù)的調(diào)試了,開始運(yùn)行的時(shí)候報(bào)錯(cuò)特別多,自己就那樣一點(diǎn)一點(diǎn)的調(diào),錯(cuò)誤也漸漸減少,但是到最后又幾個(gè)錯(cuò)誤不管我怎么調(diào)就是報(bào)錯(cuò),當(dāng)時(shí)真的很著急,后來找到了班上成績比較好的同學(xué),縱欲把最后幾個(gè)報(bào)錯(cuò)的地方改正了。經(jīng)過這么多的曲折,當(dāng)我看到自己寫出來的程序時(shí)心里有的是高興與激動(dòng)?;蛟S對(duì)于別人來說,這次的實(shí)驗(yàn)只是小菜一碟,但對(duì)我來說,這是經(jīng)過我的付出與努力換來的。八、參考文獻(xiàn)1.C語言程序設(shè)計(jì)曹計(jì)昌盧萍李開編著辭學(xué)出版社2.TurboC使用大全第一冊(cè)、第二冊(cè)徐金梧等編譯北京科海培訓(xùn)中心3.C程序設(shè)計(jì)譚浩強(qiáng)清華大學(xué)出版4.C語言程序設(shè)計(jì)廖雷高等教育出版社九、程序清單#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)/*生成鏈表函數(shù)具體實(shí)現(xiàn)*/{ 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));/*創(chuàng)建公司基本信息第一個(gè)結(jié)點(diǎn)*/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;/*公司基本信息鏈頭指針值賦給結(jié)點(diǎn)的next域*/hp=p; /*頭指針指向新創(chuàng)建的結(jié)點(diǎn)*/cprintf("Doyouwantcontinue?'y'or'n'\n");ch=getchar();getchar();if(ch=='n'||ch=='N')break;}while(a);(*head)=hp;/*調(diào)用函數(shù)中的head頭指針指向新創(chuàng)建的公司基本信息結(jié)點(diǎn)*/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)); /*創(chuàng)建汽車信息的結(jié)點(diǎn)*/ 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;/*頭指針值賦給新結(jié)點(diǎn)的指針域*/p->down=(T*)t1;/*頭指針指向新結(jié)點(diǎn)*/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;/*頭指針值賦給新結(jié)點(diǎn)的指針域*/ t1->right=(L*)t2;/*頭指針指向新結(jié)點(diǎn)*/ cprintf("Continueinputthisbusrentmessage?'y'or'n'\n"); ch=getchar();getchar(); if(ch=='n'||ch=='N'){ clrscr(); break; } } t1=t1->next; /*t1指向汽車信息鏈的下一個(gè)結(jié)點(diǎn)*/ } p=p->next; }clrscr();}/*指向公司信息鏈的下一個(gè)結(jié)點(diǎn)*/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;/*指向下一個(gè)汽車租賃信息結(jié)點(diǎn)*/ } t1=t1->next;/*指向下一個(gè)汽車信息結(jié)點(diǎn)*/ } p=p->next;/*指向下一個(gè)公司比本信息結(jié)點(diǎn)*/ } fclose(out1);/*關(guān)閉公司信息文件*/ fclose(out2);/*關(guān)閉汽車信息文件*/ fclose(out3);/*關(guān)閉汽車租賃信息文件*/}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));/*創(chuàng)建公司基本信息結(jié)點(diǎn)*/ fread(p,sizeof(T),1,in1);/*讀一條公司基本信息記錄到結(jié)點(diǎn)中*/ if(!feof(in1)){ p->down=NULL;/*置汽車信息鏈的頭指針為NULL*/ p->next=hp;/*公司基本信息鏈頭指針值賦給結(jié)點(diǎn)的next域*/ hp=p;/*頭指針指向新創(chuàng)建的結(jié)點(diǎn)*/ } } (*head)=hp;/*調(diào)用函數(shù)中的head頭指針指向新創(chuàng)建的公司基本信息鏈*/ while(!feof(in2)){ t1=(L*)malloc(sizeof(L));/*創(chuàng)建新汽車信息結(jié)點(diǎn)*/ fread(t1,sizeof(L),1,in2);/*讀一條汽車信息記錄到新結(jié)點(diǎn)*/ if(!feof(in2)){ p=(*head);/*遍歷指針p指向公司基本信息鏈的鏈頭*/ while(p!=NULL){/*遍歷公司基本信息鏈*/ if(!strcmp(p->name,t1->firm)){/*查找相同公司名的結(jié)點(diǎn)*/t1->right=NULL; t1->next=(L*)p->down;/*找到,新結(jié)點(diǎn)加入汽車信息鏈*/ p->down=(T*)t1; break; } else p=p->next;/*沒找到,轉(zhuǎn)下一結(jié)點(diǎn)*/ } } } 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);/*關(guān)閉公司基本信息文件*/ fclose(in2);/*關(guān)閉汽車信息文件*/ fclose(in3);/*關(guān)閉汽車租賃信息文件*/}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)); /*創(chuàng)建汽車信息的結(jié)點(diǎn)*/ 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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論