建筑工地信息管理系統(tǒng)_第1頁
建筑工地信息管理系統(tǒng)_第2頁
建筑工地信息管理系統(tǒng)_第3頁
建筑工地信息管理系統(tǒng)_第4頁
建筑工地信息管理系統(tǒng)_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質文檔-傾情為你奉上 C語言課程設計報告 名稱:建筑工地信息管理系統(tǒng) 學院:資源學院 班級:-28姓名:張勝了學號:指導老師:張求明1、 題目要求建立如下4個文件(括號內(nèi)為文件中每條記錄的字段內(nèi)容):(1) 銷售商-配件-建筑工地 (銷售商號碼,配件號,工地號,數(shù)量)(2) 建筑工地 (工地號,名字,城市)(3) 配件 (配件號,配件名,顏色,重量,產(chǎn)地)(4) 銷售商 (號碼,名字,狀態(tài),城市)功能:(1) 首先建立文件,然后插入數(shù)據(jù),并進行刪除、更新操作,最后進行查詢操作。(2) 查詢與供應商所在城市相同的零件供應商,項目供應商記錄對。 2、需求分析 根據(jù)題目要求,建立文件,應選擇結

2、構體數(shù)組來存放數(shù)據(jù),再定義一個全局變量和文件指針進行程序的運行,然后把數(shù)據(jù)信息存入文件中,所以要提供結構體和文件的輸入輸出等操作;在程序中要進行數(shù)據(jù)的插入、刪除、更新、查詢等操作,所以需要建立相應的模塊來實現(xiàn),為簡便起見,還應建立一個主菜單,在每個模塊中建立相應的副菜單;另外,還要提供鍵盤式選擇菜單來實現(xiàn)選擇功能,使程序在運行時達到要求。3、總體設計根據(jù)題目要求,可以將系統(tǒng)分為:1) 插入數(shù)據(jù)模塊;2) 刪除模塊;3) 查詢模塊;4) 查找配對;5) 功能選擇菜建筑工地信息管理系統(tǒng) 查 找 配對 模塊刪除模塊查詢模塊數(shù)據(jù)輸入模塊 功能 選 擇 菜 單 圖1 系統(tǒng)功能模塊圖4、詳細設計一、主函數(shù)

3、【分析】 主函數(shù)一般設計得比較簡便,只提供輸入、處理和輸出部分的函數(shù)調(diào)用。其中各功能模塊用菜單方式選擇。其流程圖:開始顯示一系列功能選擇輸入n,判斷w 是否是0到4?根據(jù)n值調(diào)用各功能模塊函數(shù)結束N 圖2 主函數(shù)流程圖 【程序】/*主菜單*/ void menu() int n,w; /*變量n保存選擇菜單數(shù)字,w判斷輸入的數(shù)字是否在功能菜單對應數(shù)字范圍內(nèi)*/ do puts("tt*建筑工地信息管理*nn"); puts("姓名:文富奎"); puts("學號:"); puts("班學號:-30"); puts(

4、"tt*MENU*nn"); puts("tttt1.輸入");/*輸入*/ puts("tttt2.刪除");/*刪除*/ puts("tttt3.查找");/*查找*/ puts("tttt4.配對");/*查找配對*/ puts("tttt5.Exit"); puts("nntt*n"); printf("Choose your number (1-5): bb"); scanf("%d",&n); i

5、f(n<1|n>5) w=1; getchar(); else w=0; while(w=1); switch(n) case 1:enter();break; case 2:delete();break; case 3:search();break; case 4:search2();break; case 5:exit(0); main() menu(); 二、各功能模塊設計(1)數(shù)據(jù)輸入模塊【分析】 數(shù)據(jù)信息存放在文件中,用結構體存放,方便數(shù)據(jù)輸入與數(shù)據(jù)的保存。另外,輸入模塊中建立副菜單,用以輸入四個文件的信息選項。開始輸入用戶信息是否繼續(xù)進行? 結束返回主菜單Y 圖3 數(shù)據(jù)

6、輸入模塊流程圖【程序】/*數(shù)據(jù)輸入模塊*/ void sal_enter() int j; char c2; FILE *fp; if(fp=fopen("data1.txt","w")=NULL) printf("Can not open the file!n"); exit(0); for(j=0;j<i;j+) fwrite(&salj,sizeof(struct sale),1,fp); while(1) printf("輸入銷售商號碼:n"); scanf("%d",&a

7、mp;sali.num1); printf("輸入配件號碼:n"); scanf("%d",&sali.num2); printf("輸入工地號碼:n"); scanf("%d",&sali.num3); printf("輸入數(shù)量r:n"); scanf("%d",&sali.num4); if(fwrite(&sali+,sizeof(struct sale),1,fp)!=1) printf("File write errorn&

8、quot;); else printf("Successful!n"); printf("是否繼續(xù)?( 是y/否n) n"); scanf("%s",c); if(strcmp(c,"n")=0)break; fclose(fp);menu(); void build_enter() int j; char c2; FILE *fp; if(fp=fopen("data2.txt","w")=NULL) printf("Can not open the file!n

9、"); exit(0); for(j=0;j<i;j+) fwrite(&buildj,sizeof(struct building),1,fp); while(1) printf("輸入工地號:n"); scanf("%d",&buildi.num); printf("輸入工地名:n"); scanf("%s",); printf("輸入工地城市:n"); scanf("%s",buildi.city); if(fwri

10、te(&buildi+,sizeof(struct building),1,fp)!=1) printf("File write errorn"); else printf("Successful!n"); printf("Is there any more?( Yesy/Non) n"); scanf("%s",c); if(strcmp(c,"n")=0)break; fclose(fp);menu(); void pj_enter() int j; char c2; FILE *f

11、p; if(fp=fopen("data3.txt","w")=NULL) printf("Can not open the file!n"); exit(0); for(j=0;j<i;j+) fwrite(&pjj,sizeof(struct peijian),1,fp); while(1) printf("輸入配件號:n"); scanf("%d",&pji.num); printf("輸入配件名:n"); scanf("%s"

12、,); printf("輸入配件顏色:n"); scanf("%s",pji.color); printf("輸入配件重量:n"); scanf("%d",&pji.weight); printf("輸入配件產(chǎn)地:n"); scanf("%s",pji.area); if(fwrite(&pji+,sizeof(struct peijian),1,fp)!=1) printf("File write errorn"); el

13、se printf("Successful!n"); printf("Is there any more?( Yesy/Non) n"); scanf("%s",c); if(strcmp(c,"n")=0)break; fclose(fp);menu(); void SET_enter () int j; char c2; FILE *fp; if(fp=fopen("data4.txt","w")=NULL) printf("Can not open the f

14、ile!n"); exit(0); for(j=0;j<i;j+) fwrite(&selj,sizeof(struct seller),1,fp); while(1) printf("輸入銷售商號:n"); scanf("%d",&seli.num); printf("輸入銷售商名:n"); scanf("%s",); printf("輸入銷售商狀態(tài):n"); scanf("%s",seli.state); printf(&

15、quot;輸入銷售商所在城市:n"); scanf("%s",seli.city); if(fwrite(&seli+,sizeof(struct seller),1,fp)!=1) printf("File write errorn"); else printf("Successful!n"); printf("Is there any more?( Yesy/Non) n"); scanf("%s",c); if(strcmp(c,"n")=0)brea

16、k; fclose(fp);menu(); void enter() int t,m; do puts("tt*MENU*nn"); puts("tttt1.sal_enter new data"); puts("tttt2.build_enter new data"); puts("tttt3.pj_enter new data"); /*輸入菜單*/ puts("tttt4.SET_enter new data"); puts("tttt5.Exit"); puts(&q

17、uot;nntt *n"); printf("Choose the number(1-5): bb"); scanf("%d",&m); if(m<1|m>5) t=1; getchar(); else t=0; while(t=1); switch(m) case 1:sal_enter();break; case 2:build_enter();break; case 3:pj_enter();break; case 4:SET_enter();break; case 5:menu(); (2) 刪除模塊【分析】 建立副

18、菜單,選擇要刪除的是哪個文件中的信息,輸入相應的信息,找到數(shù)據(jù)將其刪除。一般的做法是將數(shù)據(jù)從文件中刪除,刪除位置后面的記錄往前移。模塊如: 開始輸入要刪除的數(shù)據(jù)是否找到?刪除數(shù)據(jù)顯示成功顯示沒有找到Y結束圖4 刪除模塊流程圖【程序】/*刪除模塊*/ void sal_delete()int j,v; int w; FILE *fp; printf("請輸入要刪除的銷售商號碼:"); scanf("%d",&w); fp=fopen("data1.txt","rb"); for(j=0;j<100;j+

19、) if(fread(&salj,sizeof(struct sale),1,fp)!=1) break; v=j; for(j=0;j<v;j+) if(w=salj.num1) printf("項目號,銷售商號碼,配件號,工地號,數(shù)量:n"); printf("%d %d %d %d %d",salj.num,salj.num1,salj.num2,salj.num3,salj.num4);for(i=j;i<v;i+) salj=salj+;printf("刪除成功");else printf("C

20、annot find the data!");menu(); fclose(fp); void build_delete() int j,v; int w; FILE *fp; printf("請輸入要刪除的工地號:"); scanf("%d",&w); fp=fopen("data2.txt","rb"); for(j=0;j<100;j+) if(fread(&buildj,sizeof(struct building),1,fp)!=1) break; v=j; for(j=0

21、;j<v;j+) if(w=buildj.num) printf("工地號,工地名,城市名:n");printf("%d %s %s",buildj.num, ,buildj.city);printf("刪除成功");else printf("Cannot find the data!");menu(); fclose(fp); menu(); void pj_delete() int j,v; int w; FILE *fp; printf("請輸入要刪除的配件號:"

22、;); scanf("%d",&w); fp=fopen("data3.txt","rb"); for(j=0;j<100;j+) if(fread(&pjj,sizeof(struct peijian),1,fp)!=1) break; v=j; for(j=0;j<v;j+) if(w=pjj.num) printf(" 配件號,配件名,顏色,重量,產(chǎn)地:n");printf("%d %s %s %d %s",pjj.num,,pjj.color,

23、pjj.weight,pjj.area);printf("刪除成功"); else printf("Cannot find the data!");menu(); fclose(fp); menu(); void SET_delete () int j,v,c; int w; FILE *fp; printf("請輸入號碼:"); scanf("%d",&w); fp=fopen("data4.txt","rb"); for(j=0;j<100;j+) if(f

24、read(&selj,sizeof(struct seller),1,fp)!=1) break; v=j; for(j=0;j<v;j+) if(w=selj.num) printf(" 銷售商號碼,銷售商名字,狀態(tài),城市: n");printf("%d %s %s %s",selj.num,,selj.state,selj.city);printf("刪除成功"); else printf("Cannot find the data!");menu(); fclose(fp);

25、menu(); void delete() int t,m; do puts("tt*MENU*nn"); puts("tttt1.sal_delete new data"); puts("tttt2.build_delete new data"); puts("tttt3.pj_delete new data"); /*刪除菜單*/ puts("tttt4.SET_delete new data"); puts("tttt5.Exit"); puts("nntt

26、*n"); printf("Choose the number(1-5): bb"); scanf("%d",&m); if(m<1|m>5) t=1; getchar(); else t=0; while(t=1); switch(m) case 1:sal_delete();break; case 2:build_delete();break; case 3:pj_delete();break; case 4:SET_delete ();break; case 5:menu(); (3) 查找模塊【分析】 選擇查找方式,

27、輸入相應的數(shù)據(jù)然后找出對應的數(shù)據(jù)。模塊流程圖:開始輸入查找的方式:1)項目號;2)工地號;3)配件號;4)銷售商號是否找到?顯示找到的記錄提示沒找到Y結束Y是否繼續(xù)查找?返回主菜單 圖5 查找模塊流程圖【程序】/*查找模塊*/ void search() int flag,j,x; int w,v,z,y; FILE *fp; printf("1.By 項目號n"); printf("2.By 工地號n"); printf("3.By 配件號n");printf("4.By 銷售商號n");printf("

28、;請選擇項:n"); scanf("%d",&x); if(x=3) flag=0; printf("Please input the 配件號:"); scanf("%d",&w); fp=fopen("data3.txt","rb"); for(j=0;j<100;j+) if(fread(&pjj,sizeof(struct peijian),1,fp)!=1) break; if(pjj.num=w) printf("配件號:%dn&quo

29、t;,pjj.num); printf("配件名:%sn",); printf("配件顏色:%sn",pjj.color); printf("配件重量:%dn",pjj.weight); printf("配件產(chǎn)地:%sn",pjj.area); printf("-n"); flag=1; if(flag=0) printf("Cannot find the data!n"); fclose(fp); menu(); if(x=4) flag=0; printf

30、("請輸入銷售商號:"); scanf("%d",&z); fp=fopen("data4.txt","rb"); for(j=0;j<100;j+) if(fread(&selj,sizeof(struct seller),1,fp)!=1) break; if(pjj.num=y) printf("銷售商號:%dn",selj.num); printf("銷售商名:%sn",); printf("所在城市名:%sn&quo

31、t;,selj.city); printf("-n"); flag=1; if(flag=0) printf("Cannot find the data!n"); fclose(fp); menu(); if(x=2) flag=0; printf("請輸入建筑工地號:"); scanf("%d",&z); fp=fopen("data2.txt","rb"); for(j=0;j<100;j+) if(fread(&buildj,sizeof(stru

32、ct building),1,fp)!=1) break; if(pjj.num=z) printf("建筑工地號:%dn",buildj.num); printf("建筑工地名:%sn",); printf("所在城市名:%sn",buildj.city); printf("-n"); flag=1; if(flag=0) printf("Cannot find the data!n"); fclose(fp); menu(); if(x=1) flag=0; print

33、f("Please input the 項目號:"); scanf("%d",&v); fp=fopen("data1.txt","rb"); for(j=0;j<100;j+) if(fread(&pjj,sizeof(struct peijian),1,fp)!=1) break; if(pjj.num=v) printf("seller number:%dn",salj.num1); printf("peijian number:%dn",salj

34、.num2); printf("building number:%dn",salj.num3); printf("number:%dn",salj.num4); printf("-n"); flag=1; if(flag=0) printf("Cannot find the data!n"); fclose(fp);menu(); else printf("Error!n"); (4) 查找配對模塊【分析】 功能跟查找大致相同,輸入要配對的相應信息,找出要的信息。是否繼續(xù)查找?開始輸入要配對的方

35、式:1)配件號;2)銷售商號碼是否找到?顯示找到的記錄提示沒找到NY結束N 圖6 查找配對模塊流程圖【程序】/*查找配對模塊*/void search2() int flag,j,x; int w;FILE *fp; printf("1.By 配件號n");printf("2.By 銷售商號n");printf("請選擇項:n"); scanf("%d",&x); if(x=1) FILE *fp;int i; printf("Please input the 配件號:"); scanf

36、("%d",&w);if(fp=fopen("data3.txt","r")=NULL)printf("Cannot find the data!n"); fclose(fp);menu(); for(i=0;!feof(fp);i+)fscanf(fp,"%d%s%s",pji.num,&,&pji.area);fclose(fp);if(fp=fopen("data4.txt","r")=NULL)printf(

37、"Cannot find the data!n"); fclose(fp);menu(); for(i=0;!feof(fp);i+)fscanf(fp,"%d%s%s",seli.num,&,&seli.city);fclose(fp);if(pji.num=w&&strcmp(pji.area,"seli.city")=0) printf("配件號:%dn",pjj.num); printf("配件名:%sn",); prin

38、tf("銷售商號:%dn",pjj.num); printf("銷售商名:%sn",pjj.area); printf("-n"); flag=1; if(flag=0) printf("Cannot find the data!n"); fclose(fp); menu(); 5、上機操作 (1) 主菜單函數(shù) 圖7 主菜單(2) 數(shù)據(jù)輸入模塊 圖8 輸入副菜單圖9 輸入數(shù)據(jù)(3) 刪除模塊 圖10 刪除模塊(4) 查找模塊圖11 查找模塊(1) 圖12 查找模塊 (2)(5)查找配對模塊 圖13 查找配對模塊6.

39、總結此次課程設計的學習,讓我受益良多,使我對計算機有了更加全面的認識。其中在學習過程中遇到了許多麻煩,都讓人挺困惑,慶幸的是我沒有放棄。以前在課堂上學的C語言知識用到上機上來,許多問題都反映了出來,因此得以讓我的認知升級。課程設計的學習,提高了我運用計算機的能力以及培養(yǎng)了我運用結構化程序設計的思想和方法,初步掌握開發(fā)一個小型實用系統(tǒng)的基本方法,學會調(diào)試較長的程序,學會用流程圖表示算法,進一步掌握和提高利用C語言進行程序設計的能力。程序設計的過程,實際上是確定解決問題的詳細步驟,而這個步驟通常稱為流程,設計好如何進行程序的細編在程序量很大的情況下解決問題是很重要的。一個大的程序,一般需要經(jīng)過很多

40、步,不斷的進行程序的調(diào)試來能完成它?,F(xiàn)在程序基本上是完成了,里面或多或少的存在問題。其中在對數(shù)據(jù)進行輸入的時候,不太方便,可以設計一個程序使在完成一個輸入后返回副菜單而不是主菜單;刪除模塊可以加上一些程序使刪除的時候有選擇性而不是直接刪除,沒有后悔的余地;最重要的是現(xiàn)在查找配對還有一點不完善,沒有起到應有的作用??偟膩碚f,這次課程設計還是比較成功的,雖然不是很完美。 附錄:源程序清單/*data1.txt/*文件*/data2.txtdata3.txtdata4.txt*/#include<stdio.h> #include<stdlib.h> #include<

41、malloc.h> #include<string.h> int i=0; struct sale /*定義銷售商-配件-建筑工地*/ int num;/*項目號*/ int num1; /*銷售商號碼*/ int num2; /*配件號*/ int num3; /*工地號*/ int num4; /*數(shù)量*/ sal100; struct building /*定義建筑工地結構體*/ int num; /*工地號*/ char name20; /*工地名*/ char city20; /*城市名*/ build100; struct peijian /*定義配件結構體*/

42、int num; /*配件號*/ char name20; /*配件名*/ char color20; /*顏色*/ int weight; /*重量*/ char area20; /*產(chǎn)地*/ pj100; struct seller /*定義銷售商結構體*/ int num ; /*銷售商號碼*/ char name20; /*銷售商名字*/ char state20; /*狀態(tài)*/ char city20; /*城市*/ sel100; void menu(); /*數(shù)據(jù)輸入模塊*/ void sal_enter() int j; char c2; FILE *fp; if(fp=fop

43、en("data1.txt","w")=NULL) printf("Can not open the file!n"); exit(0); for(j=0;j<i;j+) fwrite(&salj,sizeof(struct sale),1,fp); while(1) printf("輸入銷售商號碼:n"); scanf("%d",&sali.num1); printf("輸入配件號碼:n"); scanf("%d",&sal

44、i.num2); printf("輸入工地號碼:n"); scanf("%d",&sali.num3); printf("輸入數(shù)量r:n"); scanf("%d",&sali.num4); if(fwrite(&sali+,sizeof(struct sale),1,fp)!=1) printf("File write errorn"); else printf("Successful!n"); printf("是否繼續(xù)?( 是y/否n)

45、n"); scanf("%s",c); if(strcmp(c,"n")=0)break; fclose(fp);menu(); void build_enter() int j; char c2; FILE *fp; if(fp=fopen("data2.txt","w")=NULL) printf("Can not open the file!n"); exit(0); for(j=0;j<i;j+) fwrite(&buildj,sizeof(struct buil

46、ding),1,fp); while(1) printf("輸入工地號:n"); scanf("%d",&buildi.num); printf("輸入工地名:n"); scanf("%s",); printf("輸入工地城市:n"); scanf("%s",buildi.city); if(fwrite(&buildi+,sizeof(struct building),1,fp)!=1) printf("File write

47、errorn"); else printf("Successful!n"); printf("Is there any more?( Yesy/Non) n"); scanf("%s",c); if(strcmp(c,"n")=0)break; fclose(fp);menu(); void pj_enter() int j; char c2; FILE *fp; if(fp=fopen("data3.txt","w")=NULL) printf("Can

48、 not open the file!n"); exit(0); for(j=0;j<i;j+) fwrite(&pjj,sizeof(struct peijian),1,fp); while(1) printf("輸入配件號:n"); scanf("%d",&pji.num); printf("輸入配件名:n"); scanf("%s",); printf("輸入配件顏色:n"); scanf("%s",pji.color);

49、 printf("輸入配件重量:n"); scanf("%d",&pji.weight); printf("輸入配件產(chǎn)地:n"); scanf("%s",pji.area); if(fwrite(&pji+,sizeof(struct peijian),1,fp)!=1) printf("File write errorn"); else printf("Successful!n"); printf("Is there any more?( Yesy

50、/Non) n"); scanf("%s",c); if(strcmp(c,"n")=0)break; fclose(fp);menu(); void SET_enter () int j; char c2; FILE *fp; if(fp=fopen("data4.txt","w")=NULL) printf("Can not open the file!n"); exit(0); for(j=0;j<i;j+) fwrite(&selj,sizeof(struct s

51、eller),1,fp); while(1) printf("輸入銷售商號:n"); scanf("%d",&seli.num); printf("輸入銷售商名:n"); scanf("%s",); printf("輸入銷售商狀態(tài):n"); scanf("%s",seli.state); printf("輸入銷售商所在城市:n"); scanf("%s",seli.city); if(fwrite(&s

52、eli+,sizeof(struct seller),1,fp)!=1) printf("File write errorn"); else printf("Successful!n"); printf("Is there any more?( Yesy/Non) n"); scanf("%s",c); if(strcmp(c,"n")=0)break; fclose(fp);menu(); void enter() int t,m; do puts("tt*MENU*nn"

53、); puts("tttt1.sal_enter new data"); puts("tttt2.build_enter new data"); puts("tttt3.pj_enter new data"); /*輸入菜單*/ puts("tttt4.SET_enter new data"); puts("tttt5.Exit"); puts("nntt *n"); printf("Choose the number(1-5): bb"); scanf(

54、"%d",&m); if(m<1|m>5) t=1; getchar(); else t=0; while(t=1); switch(m) case 1:sal_enter();break; case 2:build_enter();break; case 3:pj_enter();break; case 4:SET_enter();break; case 5:menu(); /*刪除模塊*/ void sal_delete() int j,v; int w; FILE *fp; printf("請輸入要刪除的銷售商號碼:"); sc

55、anf("%d",&w); fp=fopen("data1.txt","rb"); for(j=0;j<100;j+) if(fread(&salj,sizeof(struct sale),1,fp)!=1) break; v=j; for(j=0;j<v;j+) if(w=salj.num1) printf("項目號,銷售商號碼,配件號,工地號,數(shù)量:n"); printf("%d %d %d %d %d",salj.num,salj.num1,salj.num2,salj.num3,salj.num4);for(i=j;i<v;i+) salj=salj+;printf("刪除成功");else printf("Cannot find the data!");menu(); fclose(fp); void build_delete() int j,v; int w; FILE *fp; printf("請輸入要刪除的工地號:"); scan

溫馨提示

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

評論

0/150

提交評論