《建筑工地信息管理系统课程设计报告3239.docx》由会员分享,可在线阅读,更多相关《建筑工地信息管理系统课程设计报告3239.docx(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言课课程设计计 名称:建建筑工地地信息管管理系统统 学院:工程学学院班级:00550071-30姓名:文文富奎学号:220077100038889指导老师师:刘文文中前言课程设计计目的:C语言言编程实实践是学学习C语语言的一一个重要要环节,为为提高学学生的程程序设计计能力,通通过课堂堂和上机机实践使使学生的的程序设设计能力力有一个个上升的的台阶。通过前前四单元元的温故故而知新新、庖丁丁解牛、举一反反三、熟熟能生巧巧等过程程的练习习之后能能够解决决一些简简单的实实际问题题。1、 题目要求求设计:“建筑工工地信息息管理系系统”建立如下下4个文文件(括括号内为为文件中中每条记记录的字字段内容容)
2、:(1) 销售商-配件-建筑工工地 (销销售商号号码,配配件号,工工地号,数数量)(2) 建筑工地地 (工工地号,名名字,城城市)(3) 配件 (配配件号,配配件名,颜颜色,重重量,产产地)(4) 销售商 (号码码,名字字,状态态,城市市)功能:(1) 首先建立立文件,然然后插入入数据,并并进行删删除、更更新操作作,最后后进行查查询操作作。(2) 查询与供供应商所所在城市市相同的的零件供应应商,项项目供应商商记录对对。2、分析析 根据题题目要求求,建立立文件,应应选择结结构体数数组来存存放数据据,再定定义一个个全局变变量和文文件指针针进行程程序的运运行,然然后把数数据信息息存入文文件中,所所以
3、要提提供结构构体和文文件的输输入输出出等操作作;在程程序中要要进行数数据的插插入、删删除、更更新、查查询等操操作,所所以需要要建立相相应的模模块来实实现,为为简便起起见,还还应建立立一个主主菜单,在在每个模模块中建建立相应应的副菜菜单;另另外,还还要提供供键盘式式选择菜菜单来实实现选择择功能,使使程序在在运行时时达到要要求。 3、总体设设计根据题目目要求,可可以将系系统分为为:1) 插入数据据模块;2) 删除模块块;3) 查询模块块;4) 查找配对对;5) 功能选择择菜建筑工地信息管理系统 查 找 配对 模块删除模块查询模块数据输入模块 功能 选 择 菜 单 图图1 系统统功能模模块图4、详细
4、细设计一、主函函数【分析】 主函数数一般设设计得比比较简便便,只提提供输入入、处理理和输出出部分的的函数调调用。其其中各功功能模块块用菜单单方式选选择。其其流程图图:开始显示一系列功能选择输入n,判断w 是否是0到4?根据n值调用各功能模块函数结束N图2 主函数数流程图图 【程程序】/*主菜单单*/ voiid mmenuu() intt n,w; /*变变量n保保存选择择菜单数数字,ww判断输输入的数数字是否否在功能能菜单对对应数字字范围内内*/ do pputss(ttt*建筑筑工地信信息管理理*nnn); putts(姓名:文富奎奎); putts(学号:20007100038889);
5、 putts(班学号号:05550771-330); putts(tt*MMENUU*nnn); putts(ttttt11.输入入);/*输输入*/ putts(ttttt22.删除除);/*删删除*/ putts(ttttt33.查找找);/*查查找*/ putts(ttttt44.配对对);/*查查找配对对*/ putts(ttttt55.Exxit); putts(nnttt*nn); priintff(CChooose youur nnumbber (1-5): bb); scaanf(%dd,&n); if(n5) ww=1; gettchaar(); elsse ww=0; wh
6、iile(w=1); swiitchh(n) casse 11:ennterr();breeak; casse 22:deelette();brreakk; casse 33:seearcch();brreakk; casse 44:seearcch2();bbreaak; casse 55:exxit(0); mainn() menuu(); 二、各功功能模块块设计(1)数数据输入入模块【分析】 数据据信息存存放在文文件中,用用结构体体存放,方方便数据据输入与与数据的的保存。另外,输输入模块块中建立立副菜单单,用以以输入四四个文件件的信息息选项。开始输入用户信息是否继续进行? 结束返回主菜单
7、Y 图图3 数据据输入模模块流程程图【程序】/*数数据输入入模块*/ voidd saal_eenteer() innt jj; charr c2; FILEE *ffp; if(fpp=foopenn(ddataa1.ttxt,ww)=NNULLL) prinntf(Caan nnot opeen tthe fille!n); exitt(0); for(j=00;ji;jj+) fwriite(&saaljj,ssizeeof(strructt saale),1,fp); whille(11) prinntf(输入入销售商商号码:n); scannf(%d,&ssali.numm1); p
8、rinntf(输入入配件号号码:n); scannf(%d,&ssali.numm2); prinntf(输入入工地号号码:n); scannf(%d,&ssali.numm3); prinntf(输入入数量rr:nn); scannf(%d,&ssali.numm4); if(ffwriite(&saalii+,siizeoof(sstruuct salle),1,ffp)!=1) prinntf(Fiile wriite errrorn); elsee prrinttf(Succcesssfuul!n); prinntf(是否否继续?( 是是y/否n) nn); scannf(%s,c);
9、 if(sstrccmp(c,n)=00)brreakk; fcloose(fp);meenu(); voiid bbuilld_eenteer() iint j; charr c2; FILEE *ffp; if(fpp=foopenn(ddataa2.ttxt,ww)=NNULLL) prinntf(Caan nnot opeen tthe fille!n); exitt(0); for(j=00;ji;jj+) fwriite(&buuilddj,siizeoof(sstruuct buiildiing),1,fp); whille(11) prinntf(输入入工地号号:nn); sc
10、annf(%d,&bbuilldii.nnum); prinntf(输入入工地名名:nn); scannf(%s,buuilddi.naame); prinntf(输入入工地城城市:n); scannf(%s,buuilddi.ciity); if(ffwriite(&buuilddi+,sizzeoff(sttrucct bbuilldinng),1,ffp)!=1) prinntf(Fiile wriite errrorn); elsee prrinttf(Succcesssfuul!n); prinntf(Iss thheree anny mmoree?( Yessy/Noon) n);
11、 scannf(%s,c); if(sstrccmp(c,n)=00)brreakk; fcloose(fp);meenu(); voiid ppj_eenteer() innt jj; charr c2; FILEE *ffp; if(fpp=foopenn(ddataa3.ttxt,ww)=NNULLL) prinntf(Caan nnot opeen tthe fille!n); exitt(0); for(j=00;ji;jj+) fwriite(&pjjj,siizeoof(sstruuct peiijiaan),1,ffp); whiile(1) prinntf(输入入配件号号:n
12、n); scannf(%d,&ppjii.nnum); prinntf(输入入配件名名:nn); scannf(%s,pjji.naame); prinntf(输入入配件颜颜色:n); scannf(%s,pjji.coolorr); prinntf(输入入配件重重量:n); scannf(%d,&ppjii.wweigght); prinntf(输入入配件产产地:n); scannf(%s,pjji.arrea); if(ffwriite(&pjji+,sizzeoff(sttrucct ppeijjiann),11,fpp)!=1) prinntf(Fiile wriite errrorn
13、); elsee prrinttf(Succcesssfuul!n); prinntf(Iss thheree anny mmoree?( Yessy/Noon) n); scannf(%s,c); if(sstrccmp(c,n)=00)brreakk; fcloose(fp);meenu(); voiid SSET_entter () iint j; charr c2; FILEE *ffp; if(fpp=foopenn(ddataa4.ttxt,ww)=NNULLL) prinntf(Caan nnot opeen tthe fille!n); exitt(0); for(j=00;j
14、i;jj+) fwriite(&seeljj,ssizeeof(strructt seelleer),1,ffp); whille(11) prinntf(输入入销售商商号:n); scannf(%d,&sseli.numm); prinntf(输入入销售商商名:n); scannf(%s,seelii.nnamee); prinntf(输入入销售商商状态:n); scannf(%s,seelii.sstatte); prinntf(输入入销售商商所在城城市:n); scannf(%s,seelii.ccityy); if(ffwriite(&seelii+,siizeoof(sstruuct
15、 selllerr),11,fpp)!=1) prinntf(Fiile wriite errrorn); elsee prrinttf(Succcesssfuul!n); prinntf(Iss thheree anny mmoree?( Yessy/Noon) n); scannf(%s,c); if(sstrccmp(c,n)=00)brreakk; fcloose(fp);meenu(); voidd ennterr() innt tt,m; do putts(tt*MEENU*nn); putss(ttttt1.sall_ennterr neew ddataa); putss(ttt
16、tt2.buiild_entter neww daata); putss(ttttt3.pj_entter neww daata); /*输入入菜单*/ putss(ttttt4.SETT_ennterr neew ddataa); putss(ttttt5.Exiit); putss(nnntt *nn); prinntf(Chhoosse tthe nummberr(1-5): bb); scannf(%d,&mm); if(mm5) t=1; getccharr(); elsee t=0; whiile(t=1); swiitchh(m) casse 11:saal_eenteer();
17、brreakk; casse 22:buuildd_ennterr();breeak; casse 33:pjj_ennterr();breeak; casse 44:SEET_eenteer();brreakk; casse 55:meenu(); (2) 删除模块块【分析】 建立立副菜单单,选择择要删除除的是哪哪个文件件中的信信息,输输入相应应的信息息,找到到数据将将其删除除。一般般的做法法是将数数据从文文件中删删除,删删除位置置后面的的记录往往前移。模块如如: 开始输入要删除的数据是否找到?删除数据显示成功显示没有找到Y结束图4 删除除模块流流程图【程序】/*删除模模块*/ voidd
18、saal_ddeleete()intt j,v; int w; FILEE *ffp; prinntf(请输输入要删删除的销销售商号号码:); scannf(%d,&ww); fp=ffopeen(datta1.txtt,rb); for(j=00;j1000;j+) if(ffreaad(&sallj,siizeoof(sstruuct salle),1,ffp)!=1) brreakk; v=j; for(j=00;jv;jj+) if(w=sallj.nuum1) prrinttf(项目号号,销售售商号码码,配件件号,工工地号,数数量:n); prrinttf(%d %d %d %d %
19、d,saaljj.nnum,sallj.nuum1,sallj.nuum2,sallj.nuum3,sallj.nuum4);foor(ii=j;ivv;i+) sallj=saaljj+;prrinttf(删除成成功);elsee prrinttf(Cannnott fiind thee daata!);menuu(); fcloose(fp); voiid bbuilld_ddeleete() intt j,v; intt w; FILEE *ffp; prinntf(请输输入要删删除的工工地号:); scannf(%d,&ww); fp=ffopeen(datta2.txtt,rb);
20、for(j=00;j1000;j+) if(ffreaad(&buiildj,sizzeoff(sttrucct bbuilldinng),1,ffp)!=1) brreakk; v=j; for(j=00;jv;jj+) if(ww=bbuilldjj.nnum) priintff(工工地号,工地名名,城市市名:n);prrinttf(%d %s %s,buuilddj.nuum, buiildj.namme,bbuilldjj.ccityy);pprinntf(删除除成功);elsee prrinttf(Cannnott fiind thee daata!);mennu(); fcloos
21、e(fp); menuu(); voiid ppj_ddeleete() intt j,v; intt w; FILEE *ffp; prinntf(请输输入要删删除的配配件号:); scannf(%d,&ww); fp=ffopeen(datta3.txtt,rb); for(j=00;j1000;j+) if(ffreaad(&pjj,sizzeoff(sttrucct ppeijjiann),11,fpp)!=1) breeak; v=j; for(j=00;jv;jj+) if(ww=ppjjj.nnum) priintff( 配件件号,配配件名,颜色,重量,产地:n);pprinnt
22、f(%dd %ss %ss %dd %ss,ppjjj.nnum,pjj.namme,ppjjj.ccoloor,ppjjj.wweigght,pjj.areea);priintff(删删除成功功); elsse pprinntf(Caannoot ffindd thhe ddataa!);meenu(); fcloose(fp); menuu(); voiid SSET_delletee () intt j,v,cc; intt w; FILEE *ffp; prinntf(请输输入号码码:); scannf(%d,&ww); fp=ffopeen(datta4.txtt,rb); for(
23、j=00;j1000;j+) if(ffreaad(&sellj,siizeoof(sstruuct selllerr),11,fpp)!=1) breeak; v=j; for(j=00;jv;jj+) if(ww=sselj.numm) priintff( 销售售商号码码,销售售商名字字,状态态,城市市: n);prrinttf(%d %s %s %s,seeljj.nnum,sellj.naame,sellj.sttatee,seeljj.ccityy);pprinntf(删除除成功); elsse pprinntf(Caannoot ffindd thhe ddataa!);meenu
24、(); fcloose(fp); menuu(); voiid ddeleete() innt tt,m; do putts(tt*MEENU*nn); putss(ttttt1.sall_deelette nnew datta); putss(ttttt2.buiild_delletee neew ddataa); putss(ttttt3.pj_delletee neew ddataa); /*删删除菜单单*/ putss(ttttt4.SETT_deelette nnew datta); putss(ttttt5.Exiit); putss(nnntt *nn); prinntf(Chh
25、oosse tthe nummberr(1-5): bb); scannf(%d,&mm); if(mm5) t=1; getccharr(); elsee t=0; whiile(t=1); swiitchh(m) casse 11:saal_ddeleete();bbreaak; casse 22:buuildd_deelette();brreakk; casse 33:pjj_deelette();brreakk; casse 44:SEET_ddeleete ();breeak; casse 55:meenu(); (3) 查找模块块【分析】 选择择查找方方式,输输入相应应的数据据然后
26、找找出对应应的数据据。模块块流程图图:开始输入查找的方式:1)项目号;2)工地号;3)配件号;4)销售商号是否找到?显示找到的记录提示没找到Y结束Y是否继续查找?返回主菜单 图55 查查找模块块流程图图【程序】/*查查找模块块*/ voidd seearcch() int flaag,jj,x; int w,vv,z,y; FILEE *ffp; prrinttf(1.BBy 项项目号n); prinntf(2.By 工地号号n); prinntf(3.By 配件号号n);prinntf(4.By 销售商商号nn);prinntf(请选选择项:n); scannf(%d,&xx); if(xx
27、=33) flagg=0; prinntf(Plleasse iinpuut tthe 配件号号:); scannf(%d,&ww); fp=ffopeen(datta3.txtt,rb); for(j=00;j1000;j+) if(ffreaad(&pjj,sizzeoff(sttrucct ppeijjiann),11,fpp)!=1) breeak; if(ppjjj.nnum=w) prinntf(配件件号:%dnn,ppjjj.nnum); prinntf(配件件名:%snn,ppjjj.nnamee); prinntf(配件件颜色:%sn,pjj.collor); prinntf
28、(配件件重量:%dn,pjj.weiightt); prinntf(配件件产地:%sn,pjj.areea); prinntf(-nn); flagg=1; if(fflagg=00) prinntf(Caannoot ffindd thhe ddataa!nn); fcloose(fp); mmenuu(); if(xx=44) flagg=0; prinntf(请输输入销售售商号:); scannf(%d,&zz); fp=ffopeen(datta4.txtt,rb); for(j=00;j1000;j+) if(ffreaad(&sellj,siizeoof(sstruuct sell
29、lerr),11,fpp)!=1) breeak; if(ppjjj.nnum=y) prinntf(销售售商号:%dn,sellj.nuum); prinntf(销售售商名:%sn,sellj.naame); prinntf(所在在城市名名:%ssn,seeljj.ccityy); prinntf(-nn); flagg=1; if(fflagg=00) prinntf(Caannoot ffindd thhe ddataa!nn); fcloose(fp); mmenuu(); if(xx=22) flagg=0; prinntf(请输输入建筑筑工地号号:); scannf(%d,&zz)
30、; fp=ffopeen(datta2.txtt,rb); for(j=00;j1000;j+) if(ffreaad(&buiildj,sizzeoff(sttrucct bbuilldinng),1,ffp)!=1) brreakk; if(ppjjj.nnum=z) prinntf(建筑筑工地号号:%ddn,buuilddj.nuum); prinntf(建筑筑工地名名:%ssn,buuilddj.naame); prinntf(所在在城市名名:%ssn,buuilddj.ciity); prinntf(-nn); flagg=1; if(fflagg=00) prinntf(Caann
31、oot ffindd thhe ddataa!nn); fcloose(fp); mmenuu(); if(xx=11) flagg=0; prinntf(Plleasse iinpuut tthe 项目号号:); scannf(%d,&vv); fp=ffopeen(datta1.txtt,rb); for(j=00;j1000;j+) if(ffreaad(&pjj,sizzeoff(sttrucct ppeijjiann),11,fpp)!=1) breeak; if(ppjjj.nnum=v) prinntf(seelleer nnumbber:%dn,sallj.nuum1); pr
32、inntf(peeijiian nummberr:%ddn,saaljj.nnum22); prinntf(buuilddingg nuumbeer:%dnn,ssalj.numm3); prinntf(nuumbeer:%dnn,ssalj.numm4); prinntf(-nn); flagg=1; if(fflagg=00) prinntf(Caannoot ffindd thhe ddataa!nn); fcloose(fp);meenu(); elsee prrinttf(Errror!n); (4) 查找配对对模块【分析】 功能能跟查找找大致相相同,输输入要配配对的相相应信息息,找
33、出出要的信信息。是否继续查找?开始输入要配对的方式:1)配件号;2)销售商号码是否找到?显示找到的记录提示没找到NY结束N 图图6 查找找配对模模块流程程图【程序】/*查查找配对对模块*/voidd seearcch2() int flaag,jj,x; int w;FILEE *ffp; prinntf(1.By 配件号号n);prinntf(2.By 销售商商号nn);prinntf(请选选择项:n); scannf(%d,&xx); if(xx=11) FILEE *ffp;int i; prinntf(Plleasse iinpuut tthe 配件号号:); scannf(%d,&w
34、w);if(fp=foppen(daata33.txxt,r)=NUULL)priintff(CCannnot finnd tthe datta!n); fcllosee(fpp);mmenuu(); for(i=00;!ffeoff(fpp);ii+)fscaanf(fp,%dd%s%s,pji.numm,&ppjii.nnamee,&ppjii.aareaa);fcloose(fp);if(fp=foppen(daata44.txxt,r)=NUULL)priintff(CCannnot finnd tthe datta!n); fcllosee(fpp);mmenuu(); for(i=00;!f