C語言課程設計-建筑工地信息管理系統(tǒng).doc_第1頁
C語言課程設計-建筑工地信息管理系統(tǒng).doc_第2頁
C語言課程設計-建筑工地信息管理系統(tǒng).doc_第3頁
C語言課程設計-建筑工地信息管理系統(tǒng).doc_第4頁
C語言課程設計-建筑工地信息管理系統(tǒng).doc_第5頁
已閱讀5頁,還剩46頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C語言課程設計課程名稱 計算機高級語言課程設計(C)教師姓名 本科生姓名 本科生學號 本科生專業(yè) 所在院系 類別: 日期: 課程設計評語對課程論文的評語:平時成績:課程論文成績:總 成 績:評閱人簽名:注:1、無評閱人簽名成績無效;2、必須用鋼筆或圓珠筆批閱,用鉛筆閱卷無效;3、如有平時成績,必須在上面評分表中標出,并計算入總成績。目 錄1題目要求12需求分析13總體設計14詳細設計25上機操作246總結(jié)287致謝29參考文獻29附:源代碼301題目要求 建立如下4個文件: (1) 銷售商-配件-建筑工地(銷售商號碼,配件號你,工地號,數(shù)量)。 (2) 建筑工地(工地號,名字,城市)。 (3) 配件(配件號,配件名,顏色,重量,產(chǎn)地)。 (4) 銷售商(號碼,名字,城市)。功能: (1) 首先建立文件,然后插入數(shù)據(jù),并進行刪除、更新操作,最后進行查詢操作。 (2) 查詢與供應商所在城市相同的零件(配件)-供應商(銷售商)、項目(建筑工地)-供應商(銷售商)記錄對。 2需求分析 根據(jù)題目要求,信息采用文件存儲,因而要提供文件的輸入/輸出操作;要插入數(shù)據(jù),因而要提供數(shù)據(jù)的添加操作;要實現(xiàn)數(shù)據(jù)的刪除、更新和查詢,因而要提供文件記錄的刪除、修改和查找操作;要顯示銷售商與同一城市的配件和工地配對,因而要提供文件查找配對的操作;另外,還要提供鍵盤式選擇菜單以實現(xiàn)功能選擇。3總體設計根據(jù)上面的需求分析,可以將該系統(tǒng)的設計分為八大模塊,即輸入/輸出、瀏覽、添加、刪除、更新、查詢、配對和退出,如圖(1)所示。建筑工地信息管理系統(tǒng)輸入/輸出配對退出查詢更新刪除添加瀏覽圖(1) 系統(tǒng)功能模塊圖4詳細設計1.主函數(shù) 主函數(shù)只提供輸入、處理和輸出部分的函數(shù)調(diào)用。其中各功能模塊用菜單方式選擇。具體流程如圖(2)所示。開始顯示一系列功能選項輸入n,判斷n是否是18 N Y根據(jù)n的值調(diào)用各功能模塊函數(shù)結(jié)束 圖(2) 主函數(shù)流程圖【程序】/*主函數(shù)*/void Re_file1();void Re_file2();void Re_file3();void Re_file4();void menu();void Append();void Display();void SFB_delete();void BS_delete();void Fit_delete();void Seller_delete();void Delete();void Update();void Query();void Match();void Wr_file1();void Wr_file2();void Wr_file3();void Wr_file4();int N=0,M=0,P=0,Q=0;main()Re_file1();/讀建筑工地信息文件Re_file2();Re_file3();Re_file4();menu(); 主函數(shù)體內(nèi)的界面選擇部分語句單獨抽取出來作為一獨立菜單函數(shù)menu(),目的在于系統(tǒng)執(zhí)行完每部分功能模塊后能夠方便地返回到系統(tǒng)界面。menu()的函數(shù)如下:/*主菜單*/void menu()int sele;sele=1;while(sele) system(cls); printf(nn); printf(tt*建筑工地信息管理系統(tǒng)*n); printf(tt*MENU*n); printf(tt* *n); printf(tt* 1:瀏覽 *n); printf(tt* 2:添加 *n); printf(tt* 3:刪除 *n); printf(tt* 4:更新 *n); printf(tt* 5:查詢 *n); printf(tt* 6:配對 *n); printf(tt* 7:退出 *n); printf(tt* *n); printf(tt*n); printf(tt*072122陳勛*n); printf(nn請選擇功能序號:); scanf(%d,&sele); switch(sele) case 1:Display();break; case 2:Append();Display();break; case 3:Delete();Wr_file1();Wr_file2();Wr_file3();Wr_file4();Display();break; case 4:Update();Display();break; case 5:Query();break; case 6:Match();break; case 7:sele=0; printf(nn按任意鍵繼續(xù)n); getch();Wr_file1(); Wr_file2(); Wr_file3(); Wr_file4();/寫文件2.各功能模塊設計(1)數(shù)據(jù)讀入和輸出模塊【數(shù)據(jù)結(jié)構(gòu)】原始數(shù)據(jù)有四類:項目信息(銷售商-配件-建筑工地)、建筑工地信息、配件信息和銷售商信息。四類信息分別保存在四個文件中,項目信息文件命名為SellerFitBuild.txt,建筑工地信息文件命名為BuildingSite.txt,配件信息文件命名為Fitting.txt,銷售商信息文件命名為Seller.txt。【分析】 從各個數(shù)據(jù)信息來看,銷售商號碼,配件號,工地號,以及工地名,城市,配件名,顏色,產(chǎn)地,銷售商名稱都采用的是字符型數(shù)據(jù),銷售數(shù)量用的是整型數(shù)據(jù),配件重量是浮點型數(shù)據(jù)。四類信息采用結(jié)構(gòu)體數(shù)組的形式存放:/項目(銷售商-配件-建筑工地)信息的結(jié)構(gòu)體struct SellerFitBuildchar seller_code10; /銷售商號碼char fit_code10; /配件號char build_code10; /工地號int num; /銷售數(shù)量SFB100; /seller_code號銷售商銷售num個fit_code號配件給build_code工地/建筑工地信息的結(jié)構(gòu)體struct BuildingSitechar build_code10; /工地號char build_name10; /工地名char city10; /城市BS100;/配件信息的結(jié)構(gòu)體struct Fittingchar fit_code10; /配件號char fit_name10; /配件名char color10; /配件顏色float weight; /配件重量char city10; /配件產(chǎn)地Fit100;/銷售商信息的結(jié)構(gòu)體struct Sellerchar seller_code10; /銷售商號碼char seller_name10; /銷售商名稱char city10; /銷售商城市Seller100;【程序】/*數(shù)據(jù)讀入和輸出模塊*/void Re_file1()FILE*fp;fp=fopen(SellerFitBuild.txt,r);if(fp=NULL)printf(cannot open the file);exit(0);/退出while(fscanf(fp,%s%s%s%d,SFBN.seller_code,SFBN.fit_code,SFBN.build_code,&SFBN.num)!=EOF)N+;fclose(fp);void Re_file2()FILE*fp;fp=fopen(BuildingSite.txt,r);if(fp=NULL)printf(cannot open the file);exit(0);while(fscanf(fp,%s%s%s,BSM.build_code,BSM.build_name,BSM.city)!=EOF)M+;fclose(fp);void Re_file3()FILE*fp;fp=fopen(Fitting.txt,r); if(fp=NULL)printf(cannot open the file);exit(0);while(fscanf(fp,%s%s%s%f%s,FitP.fit_code,FitP.fit_name,FitP.color,&FitP.weight,FitP.city)!=EOF)P+;fclose(fp);void Re_file4()FILE*fp;fp=fopen(Seller.txt,r);if(fp=NULL)printf(cannot open the file);exit(0);while(fscanf(fp,%s%s%s,SellerQ.seller_code,SellerQ.seller_name,SellerQ.city)!=EOF)Q+;fclose(fp);void Wr_file1()int i;FILE*fp;fp=fopen(SellerFitBuild.txt,w);for(i=0;iN;i+)fprintf(fp,%s %s %s %dn,SFBi.seller_code,SFBi.fit_code,SFBi.build_code,SFBi.num);fclose(fp);void Wr_file2() int i;FILE*fp;fp=fopen(BuildingSite.txt,w);for(i=0;iM;i+)fprintf(fp,%s %s %sn,BSi.build_code,BSi.build_name,BSi.city);fclose(fp);void Wr_file3() int i;FILE*fp;fp=fopen(Fitting.txt,w);for(i=0;iP;i+)fprintf(fp,%s %s %s %f %sn,Fiti.fit_code,Fiti.fit_name, Fiti.color,Fiti.weight,Fiti.city);fclose(fp);void Wr_file4()int i;FILE*fp;fp=fopen(Seller.txt,w);for(i=0;iQ;i+)fprintf(fp,%s %s %sn,Selleri.seller_code,Selleri.seller_name,Selleri.city);fclose(fp);【分析】 有四個文件要讀入和輸出:項目信息,工地信息,配件信息和銷售商信息。所以針對這兩個功能分別建立了四個函數(shù)對文件進行讀入和輸出。具體流程圖如下:開始 定義文件指針fp文件是否打開成功 N Y輸入數(shù)據(jù)輸出錯誤信息返回主菜單結(jié)束圖(3)讀入文件信息模塊流程圖【注意】文件的輸出操作隱藏在menu()函數(shù)中,在對文件進行完相關(guān)的操作后,對操作的結(jié)果進行保存。(2)數(shù)據(jù)添加模塊【需求分析】該模塊的功能是在文件中添加新的信息,用戶從鍵盤輸入并逐條寫到原來的輸入文件中。具體的操作流程圖如圖(4):開始輸入要添加的選項輸入要添加的數(shù)目輸入要添加的信息瀏覽添加后的文件回到主菜單結(jié)束圖(4)數(shù)據(jù)添加模塊流程圖【程序】/*數(shù)據(jù)添加模塊*/void Append() int n,m,i;system(cls);/清屏printf(tt*添加菜單*nn); printf(tt1.銷售商-配件-建筑工地n); printf(tt2.建筑工地 n); printf(tt3.配件n); printf(tt4.銷售商n); printf(tt5.Exitnn); /*添加菜單*/printf(tt*n); printf(請選擇序號:n); scanf(%d,&n);if(n=5) menu();printf(請輸入添加的數(shù)目:n);scanf(%d,&m);N=m+N;M=m+M;P=m+P;Q=m+Q;printf(現(xiàn)在,請輸入相關(guān)信息:n);if(n=1)for(i=1;i=m;i+) printf(銷售商號碼:);scanf(%s,SFBN-m-1+i.seller_code);printf(配件號:);scanf(%s,SFBN-m-1+i.fit_code);printf(工地號:);scanf(%s,SFBN-m-1+i.build_code);printf(銷售數(shù)量:);scanf(%d,&SFBN-m-1+i.num);else if(n=2)for(i=1;i=m;i+) printf(工地號:);scanf(%s,BSM-m-1+i.build_code);printf(工地名:);scanf(%s,BSM-m-1+i.build_name);printf(城市:);scanf(%s,BSM-m-1+i.city);else if(n=3)for(i=1;i=m;i+) printf(配件號:);scanf(%s,FitP-m-1+i.fit_code);printf(配件名:);scanf(%s,FitP-m-1+i.fit_name);printf(配件顏色:);scanf(%s,FitP-m-1+i.color);printf(配件重量:);scanf(%f,&FitP-m-1+i.weight);printf(配件產(chǎn)地:);scanf(%s,FitP-m-1+i.city);else if(n=4)for(i=1;i=m;i+) printf(銷售商號碼:);scanf(%s,SellerQ-m-1+i.seller_code);printf(銷售商名稱:);scanf(%s,SellerQ-m-1+i.seller_name);printf(城市:);scanf(%s,SellerQ-m-1+i.city);(3)數(shù)據(jù)刪除模塊【需求分析】開始 用戶要刪除四個文件中的信息,根據(jù)銷售商號碼,工地號或配件號查找相應的記錄信息并刪除。刪除一般的做法是將數(shù)據(jù)從文件中刪除,刪除位置后面的記錄往前移動。具體的操作流程圖如下圖(5);選擇進行刪除操作的文件輸入要刪除的項目提示錯誤信息是否找到刪除數(shù)據(jù)成功 Y N瀏覽刪除后的文件信息 結(jié)束圖(5)數(shù)據(jù)刪除模塊的流程圖【程序】/*數(shù)據(jù)刪除模塊*/void SFB_delete() int i,j=-1; char m20;system(cls);printf(請輸入要刪除的銷售商號碼:); scanf(%s,m);for(i=0;iN;i+)if(strcmp(m,SFBi.seller_code)=0)j=i;if(j!=-1)N=N-1;for(i=j;i=N&j!=-1;i+)SFBi=SFBi+1;else if(j=-1)printf(Cannot find the data!n); void BS_delete() int i,j=-1; char m20;system(cls);printf(請輸入要刪除的工地號:); scanf(%s,m);for(i=0;iM;i+)if(strcmp(m,BSi.build_code)=0)j=i;if(j!=-1)M=M-1;for(i=j;i=N&j!=-1;i+)BSi=BSi+1;else if(j=-1)printf(Cannot find the data!n);void Fit_delete() int i,j=-1; char m20;system(cls);printf(請輸入要刪除的配件號:); scanf(%s,m);for(i=0;iP;i+)if(strcmp(m,Fiti.fit_code)=0)j=i;if(j!=-1)P=P-1;for(i=j;i=N&j!=-1;i+)Fiti=Fiti+1;else if(j=-1)printf(Cannot find the data!n);void Seller_delete () int i,j=-1; char m20;system(cls);printf(請輸入要刪除的銷售商號碼:); scanf(%s,m);for(i=0;iQ;i+)if(strcmp(m,Selleri.seller_code)=0)j=i;if(j!=-1)Q=Q-1;for(i=j;i=N&j!=-1;i+)Selleri=Selleri+1;else if(j=-1)printf(Cannot find the data!n);void Delete() int t,m;system(cls);do printf(tt*刪除菜單*nn); printf(tt1.銷售商-配件-建筑工地n); printf(tt2.建筑工地 n); printf(tt3.配件n); printf(tt4.銷售商n); printf(tt5.Exitnn); /*刪除菜單*/printf(tt*n); printf(請選擇序號:n); scanf(%d,&m); if(m5) t=1; getchar(); else t=0; while(t=1); switch(m) case 1:SFB_delete();break; case 2:BS_delete();break; case 3:Fit_delete();break; case 4:Seller_delete();break; case 5:menu(); (4)數(shù)據(jù)更新模塊【需求分析】 該模塊的功能是根據(jù)銷售商號碼,配件號,工地號在相應的文件里找到要修改的記錄,并提示用戶修改該記錄的哪部分信息(銷售數(shù)量,工地名,城市等等),然后根據(jù)用戶的選擇修改相應信息。具體的流程圖如下圖(6):開始輸入要進行操作的文件輸入要修改的項目是否找到 N Y輸入新信息瀏覽修改后的文件主菜單結(jié)束圖(6)數(shù)據(jù)更新模塊流程圖【程序】/*數(shù)據(jù)更新模塊*/void Update() int i,j=-1,d=0,t,n,k=1,f=1;char m20; loop: while(f) system(cls); printf(請選擇要更新的項目:n1.銷售商-配件-建筑工地n2.建筑工地n3.配件n4.銷售商n); scanf(%d,&n); if(n=1) printf(1.銷售商號碼n2.配件號n3.工地號n); printf(請輸入修改選項:); scanf(%d,&f); if(f=1) printf(請輸入銷售商號碼:); scanf(%s,&m); for(i=0;iN;i+) if(strcmp(m,SFBi.seller_code)=0 )j=i; else if(f=2) printf(請輸入配件號:); scanf(%s,&m); for(i=0;iN;i+) if(strcmp(m,SFBi.fit_code)=0) j=i; else if(f=3) printf(請輸入工地號:); scanf(%s,&m); for(i=0;iN;i+) if(strcmp(m,SFBi.build_code)=0) j=i; if(j=-1) printf(沒有找到!n); goto loop;/goto語句構(gòu)成循環(huán) else printf(n銷售商號碼 配件號 工地號 銷售數(shù)量n); printf(%-10s %-10s %-10s %-10d,SFBj.seller_code,SFBj.fit_code,SFBj.build_code,SFBj.num); while(k=1) printf(n1.銷售商號碼n2.配件號n3.工地號n4.銷售數(shù)量n); printf(請輸入要修改的選項: ); scanf(%d,&t); switch(t) case 1:printf(銷售商號碼改為:);scanf(%s,SFBj.seller_code);break; case 2:printf(配件號改為:);scanf(%s,SFBj.fit_code);break; case 3:printf(工地號改為:);scanf(%s,SFBj.build_code);break; case 4:printf(銷售數(shù)量改為:);scanf(%d,&SFBj.num);break; printf(請問你是(1)否(2)繼續(xù)); scanf(%d,&k); f=0; if(n=2) printf(請輸入工地號:); scanf(%s,&m); for(i=0;iM;i+) if(strcmp(m,BSi.build_code)=0) j=i; if(j=-1) printf(沒有找到!n); goto loop;/goto語句構(gòu)成循環(huán) else printf(工地號 工地名 城市n); printf(%-9s %-10s %-10s,BSj.build_code,BSj.build_name, BSj.city); printf(1.工地號n2.工地名n3.城市n); printf(請輸入要修改的選項: ); scanf(%d,&t); switch(t) case 1:printf(工地號改為:);scanf(%s,BSj.build_code);break; case 2:printf(工地名改為:);scanf(%s,BSj.build_name);break; case 3:printf(城市改為:);scanf(%s,BSj.city);break; f=0; if(n=3) printf(請輸入配件號:); scanf(%s,&m); for(i=0;iP;i+) if(strcmp(m,Fiti.fit_code)=0) j=i; if(j=-1) printf(沒有找到!n); goto loop;/goto語句構(gòu)成循環(huán) else printf( 配件號 配件名 配件顏色 配件重量 配件產(chǎn)地n); printf(%-9s ,%-10s, %-10s ,%-10f, %-10s,Fitj.fit_code,Fitj.fit_name, Fitj.color,Fitj.weight,Fitj.city); printf(1.配件號n2.配件名n3.顏色n4.重量n5.產(chǎn)地n); printf(請輸入要修改的選項: ); scanf(%d,&t); switch(t) case 1:printf(配件號改為:);scanf(%s,Fitj.fit_code);break; case 2:printf(配件名改為:);scanf(%s,Fitj.fit_name);break; case 3:printf(顏色改為:);scanf(%s,Fitj.color);break; case 4:printf(重量改為:);scanf(%f,&Fitj.weight);break; case 5:printf(產(chǎn)地改為:);scanf(%s,Fitj.city);break; f=0; if(n=4) printf(請輸入銷售商號碼:); scanf(%s,&m); for(i=0;iQ;i+) if(strcmp(m,Selleri.seller_code)=0) j=i; if(j=-1) printf(沒有找到!n); goto loop;/goto語句構(gòu)成循環(huán) else printf(銷售商號碼 銷售商名稱 銷售商城市n); printf(%-10s ,%-10s, %-10s,Sellerj.seller_code, Sellerj.seller_name,Sellerj.city); printf(1.銷售商號碼n2.銷售商名字n3.城市n); printf(請輸入要修改的選項: ); scanf(%d,&t); switch(t) case 1:printf(銷售商號碼改為:);scanf(%s,Sellerj.seller_code);break; case 2:printf(銷售商名字改為:);scanf(%s,Sellerj.seller_name);break; case 3:printf(城市改為:);scanf(%s,Sellerj.city);break; f=0; (5)數(shù)據(jù)查詢模塊【需求分析】 該模塊的功能是根據(jù)輸入的銷售商號碼,工地號和配件號在相應的文件里查找對應的記錄,并顯示出來。具體流程圖如下圖(7):開始選擇要進行操作的文件輸入要查詢的項目是否找到 N沒有找到! Y顯示要查詢的信息主菜單結(jié)束圖(7)數(shù)據(jù)查詢模塊流程圖【程序】/*數(shù)據(jù)查詢模塊*/void Query() int i,j20=-1,k,n,t=0;char m20;system(cls);/清屏printf(tt*查詢菜單*nn); printf(tt1.銷售商-配件-建筑工地n); printf(tt2.建筑工地 n); printf(tt3.配件n); printf(tt4.銷售商n); printf(tt5.Exitnn); /*查詢菜單*/printf(tt*n); printf(請選擇查詢選項:n); scanf(%d,&n);if(n=1) printf(1.銷售商號碼n2.配件號n3.工地號n);printf(請輸入查詢選項:);scanf(%d,&k);if(k=1)printf(請輸入銷售商號碼:);scanf(%s,&m);for(i=0;iN;i+)if(strcmp(m,SFBi.seller_code)=0)jt=i;t=t+1;else if(k=2)printf(請輸入配件號:); scanf(%s,&m); for(i=0;iN;i+) if(strcmp(m,SFBi.fit_code)=0) jt=i;t=t+1; else if(k=3)printf(請輸入工地號:);scanf(%s,&m); for(i=0;iN;i+) if(strcmp(m,SFBi.build_code)=0) jt=i;t=t+1; if(j0=-1&t=0)printf(沒有找到!n);if(j0!=-1&t!=0)printf(銷售商號碼 配件號 工地號 銷售數(shù)量:n);for(i=0;it;i+)printf(%-9s %-10s %-10s %-10d,SFBji.seller_code,SFBji.fit_code,SFBji.build_code,SFBji.num);if(n=2)printf(請輸入工地號:);scanf(%s,&m);for(i=0;iM;i+)if(strcmp(m,BSi.build_code)=0)jt=i;t=t+1; if(j0=-1&t=0)printf(沒有找到!n);if(j0!=-1&t!=0) printf(工地號 工地名 城市:n);printf(%-9s %-10s %-10s,BSji.build_code,BSji.build_name,BSji.city);if(n=3)printf(請輸入配件號:);scanf(%s,&m);for(i=0;iP;i+)if(strcmp(m,Fiti.fit_code)=0)jt=i;t=t+1;if(j0=-1&t=0)if(j0=-1&t=0)printf(沒有找到!n);if(j0!=-1&t!=0) printf( 配件號 配件名 顏色 重量 產(chǎn)地:n); printf(%-9s ,%-10s, %-10s ,%-10f, %-10s,Fitji.fit_code,Fitji.fit_name,Fitji.color,Fitji.weight,Fitji.city);if(n=4)printf(請輸入銷售商號碼:);scanf(%s,&m);for(i=0;iQ;i+)if(strcmp(m,Selleri.seller_code)=0) jt=i;t=t+1;if(j0=-1&t=0)printf(沒有找到!n);if(j0!=-1&t!=0) printf( 銷售商號碼 銷售商名字 城市: n);printf(%-

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論