1、1)插入数据模块;2)删除模块;3)查询模块;4)查找配对;5)功能选择菜 图1 系统功能模块图 4、详细设计一、主函数【分析】 主函数一般设计得比较简便,只提供输入、处理和输出部分的函数调用。其中各功能模块用菜单方式选择。其流程图:图2 主函数流程图 【程序】/*主菜单*/ void menu() int n,w; /*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内*/ do puts(tt*建筑工地信息管理*nn); puts(姓名:文富奎20071003889班学号:055071-30tt*MENU*nntttt1.输入/*输入*/ tttt2.删除/*删除*/ t
2、ttt3.查找/*查找*/ tttt4.配对/*查找配对*/ tttt5.Exitnntt*n printf(Choose your number (1-5): bb scanf(%d,&n); if(n5) w=1; getchar(); else w=0; while(w=1); switch(n) case 1:enter();break; case 2:delete(); case 3:search(); case 4:search2(); case 5:exit(0); main() menu();二、各功能模块设计(1)数据输入模块【分析】 数据信息存放在文件中,用结构体存放,方便
3、数据输入与数据的保存。另外,输入模块中建立副菜单,用以输入四个文件的信息选项。 图3 数据输入模块流程图【程序】/*数据输入模块*/ void sal_enter() int j;char c2;FILE *fp; if(fp=fopen(data1.txt,w)=NULL) printf(Can not open the file!nfor(j=0;ji;j+) fwrite(&salj,sizeof(struct sale),1,fp);while(1) 输入销售商号码:scanf(sali.num1);输入配件号码:sali.num2);输入工地号码:sali.num3);输入数量r:s
4、ali.num4);if(fwrite(&sali+,sizeof(struct sale),1,fp)!=1) File write errornelse printf(Successful!是否继续?( 是y/否n) n%s,c);if(strcmp(c,n)=0)break;fclose(fp); void build_enter() int j;data2.txtbuildj,sizeof(struct building),1,fp);输入工地号:buildi.num);输入工地名:,buildi.name);输入工地城市:,buildi.city);buildi+,sizeof(st
5、ruct building),1,fp)!Is there any more?( Yesy/Non) n void pj_enter() int j;data3.txtpjj,sizeof(struct peijian),1,fp); while(1) 输入配件号:pji.num);输入配件名:,pji.name);输入配件颜色:,pji.color);输入配件重量:pji.weight);输入配件产地:,pji.area);pji+,sizeof(struct peijian),1,fp)! void SET_enter () data4.txtselj,sizeof(struct sell
6、er),1,fp);输入销售商号:seli.num);输入销售商名:,seli.name);输入销售商状态:,seli.state);输入销售商所在城市:,seli.city);seli+,sizeof(struct seller),1,fp)!void enter() int t,m;tt*MENU*nnputs(tttt1.sal_enter new datatttt2.build_enter new datatttt3.pj_enter new data /*输入菜单*/ tttt4.SET_enter new datanntt *nChoose the number(1-5):m);i
7、f(m t=1;getchar();else t=0; while(t=1); switch(m) case 1:sal_enter();build_enter();pj_enter();SET_enter();(2)删除模块【分析】 建立副菜单,选择要删除的是哪个文件中的信息,输入相应的信息,找到数据将其删除。一般的做法是将数据从文件中删除,删除位置后面的记录往前移。模块如:图4 删除模块流程图/*删除模块*/ void sal_delete()int j,v;int w;请输入要删除的销售商号码:w);fp=fopen(rb100;if(fread(&salj,sizeof(struct
8、sale),1,fp)!=1) break;v=j;v; if(w=salj.num1) printf(项目号,销售商号码,配件号,工地号,数量:%d %d %d %d %d,salj.num,salj.num1,salj.num2,salj.num3,salj.num4);for(i=j;ii+) salj=salj+;删除成功 Cannot find the data! void build_delete() int w;请输入要删除的工地号:buildj,sizeof(struct building),1,fp)!if(w=buildj.num) printf(工地号,工地名,城市名:%
9、d %s %s,buildj.num, buildj.name,buildj.city); void pj_delete() 请输入要删除的配件号:pjj,sizeof(struct peijian),1,fp)!if(w=pjj.num) 配件号,配件名,颜色,重量,产地:%d %s %s %d %s,pjj.num,pjj.name,pjj.color,pjj.weight,pjj.area); else printf( void SET_delete () int j,v,c;请输入号码:selj,sizeof(struct seller),1,fp)!if(w=selj.num) 销售
10、商号码,销售商名字,状态,城市: n%d %s %s %s,selj.num,selj.name,selj.state,selj.city); void delete() tttt1.sal_delete new datatttt2.build_delete new datatttt3.pj_delete new data /*删除菜单*/ tttt4.SET_delete new data t=1;sal_delete();build_delete();pj_delete();SET_delete ();(3)查找模块【分析】 选择查找方式,输入相应的数据然后找出对应的数据。模块流程图: 图
11、5 查找模块流程图/*查找模块*/ void search() int flag,j,x;int w,v,z,y;1.By 项目号n2.By 工地号n3.By 配件号n4.By 销售商号n请选择项:x);if(x=3) flag=0;Please input the 配件号:if(pjj.num=w) 配件号:%dn,pjj.num);配件名:%sn,pjj.name);配件颜色:,pjj.color);配件重量:,pjj.weight);配件产地:,pjj.area);-nflag=1;if(flag=0) menu();if(x=4) 请输入销售商号:z);if(pjj.num=y) 销售商号:,selj.num);销售商名:,selj.name);所在城市名:,selj.city);if(x=2) 请输入建筑工地号:if(pjj.num=z) 建筑工地号:,buildj.num);建筑工地名:,buildj.name);,buildj.city);if(x=1) Please input the 项目号:v);r
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1