C语言课程设计报告建筑工地信息管理系统Word文档下载推荐.docx
《C语言课程设计报告建筑工地信息管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告建筑工地信息管理系统Word文档下载推荐.docx(41页珍藏版)》请在冰豆网上搜索。
![C语言课程设计报告建筑工地信息管理系统Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2023-1/1/bdebbde9-a140-42c3-83d5-ef0658e76a76/bdebbde9-a140-42c3-83d5-ef0658e76a761.gif)
1)插入数据模块;
2)删除模块;
3)查询模块;
4)查找配对;
5)功能选择菜
图1系统功能模块图
4、详细设计
一、主函数
【分析】主函数一般设计得比较简便,只提供输入、处理和输出部分的函数调用。
其中各功能模块用菜单方式选择。
其流程图:
图2主函数流程图
【程序】
/************************主菜单*********************************/
voidmenu()
{
intn,w;
/*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内*/
do
{puts("
\t\t*************建筑工地信息管理****************\n\n"
);
puts("
姓名:
文富奎"
20071003889"
班学号:
055071-30"
\t\t****************MENU*******************\n\n"
\t\t\t\t1.输入"
/*输入*/
\t\t\t\t2.删除"
/*删除*/
\t\t\t\t3.查找"
/*查找*/
\t\t\t\t4.配对"
/*查找配对*/
\t\t\t\t5.Exit"
\n\n\t\t**************************************\n"
printf("
Chooseyournumber(1-5):
[]\b\b"
scanf("
%d"
&
n);
if(n<
1||n>
5)
{w=1;
getchar();
}elsew=0;
}
while(w==1);
switch(n)
{case1:
enter();
break;
case2:
delete();
case3:
search();
case4:
search2();
case5:
exit(0);
}
main()
{
menu();
二、各功能模块设计
(1)数据输入模块
【分析】数据信息存放在文件中,用结构体存放,方便数据输入与数据的保存。
另外,输入模块中建立副菜单,用以输入四个文件的信息选项。
图3数据输入模块流程图
【程序】
/*****************************数据输入模块************************************/
voidsal_enter()
{intj;
charc[2];
FILE*fp;
if((fp=fopen("
data1.txt"
"
w"
))==NULL)
printf("
Cannotopenthefile!
\n"
for(j=0;
j<
i;
j++)
fwrite(&
sal[j],sizeof(structsale),1,fp);
while
(1)
输入销售商号码:
scanf("
sal[i].num1);
输入配件号码:
sal[i].num2);
输入工地号码:
sal[i].num3);
输入数量r:
sal[i].num4);
if(fwrite(&
sal[i++],sizeof(structsale),1,fp)!
=1)
Filewriteerror\n"
elseprintf("
Successful!
是否继续?
(是[y]/否[n])\n"
%s"
c);
if(strcmp(c,"
n"
)==0)break;
fclose(fp);
voidbuild_enter()
{intj;
data2.txt"
build[j],sizeof(structbuilding),1,fp);
输入工地号:
build[i].num);
输入工地名:
build[i].name);
输入工地城市:
build[i].city);
build[i++],sizeof(structbuilding),1,fp)!
Isthereanymore?
(Yes[y]/No[n])\n"
voidpj_enter()
{intj;
data3.txt"
pj[j],sizeof(structpeijian),1,fp);
while
(1)
输入配件号:
pj[i].num);
输入配件名:
pj[i].name);
输入配件颜色:
pj[i].color);
输入配件重量:
pj[i].weight);
输入配件产地:
pj[i].area);
pj[i++],sizeof(structpeijian),1,fp)!
voidSET_enter()
data4.txt"
sel[j],sizeof(structseller),1,fp);
输入销售商号:
sel[i].num);
输入销售商名:
sel[i].name);
输入销售商状态:
sel[i].state);
输入销售商所在城市:
sel[i].city);
sel[i++],sizeof(structseller),1,fp)!
voidenter()
{intt,m;
\t\t***************MENU*************\n\n"
puts("
\t\t\t\t1.sal_enternewdata"
\t\t\t\t2.build_enternewdata"
\t\t\t\t3.pj_enternewdata"
/***************输入菜单****************/
\t\t\t\t4.SET_enternewdata"
\n\n\t\t********************************\n"
Choosethenumber(1-5):
m);
if(m<
1||m>
{t=1;
getchar();
elset=0;
while(t==1);
switch(m)
case1:
sal_enter();
build_enter();
pj_enter();
SET_enter();
(2)删除模块
【分析】建立副菜单,选择要删除的是哪个文件中的信息,输入相应的信息,找到数据将其删除。
一般的做法是将数据从文件中删除,删除位置后面的记录往前移。
模块如:
图4删除模块流程图
/******************************删除模块************************************/
voidsal_delete()
{intj,v;
intw;
请输入要删除的销售商号码:
"
w);
fp=fopen("
rb"
100;
if(fread(&
sal[j],sizeof(structsale),1,fp)!
=1)break;
v=j;
v;
if(w==sal[j].num1)
{printf("
项目号,销售商号码,配件号,工地号,数量:
%d%d%d%d%d"
sal[j].num,sal[j].num1,sal[j].num2,sal[j].num3,sal[j].num4);
for(i=j;
i<
i++)sal[j]=sal[j++];
删除成功"
}
Cannotfindthedata!
voidbuild_delete()
intw;
请输入要删除的工地号:
build[j],sizeof(structbuilding),1,fp)!
if(w==build[j].num)
{printf("
工地号,工地名,城市名:
%d%s%s"
build[j].num,build[j].name,build[j].city);
}
voidpj_delete()
请输入要删除的配件号:
pj[j],sizeof(structpeijian),1,fp)!
if(w==pj[j].num)
配件号,配件名,颜色,重量,产地:
%d%s%s%d%s"
pj[j].num,pj[j].name,pj[j].color,pj[j].weight,pj[j].area);
elseprintf("
voidSET_delete()
{intj,v,c;
请输入号码:
sel[j],sizeof(structseller),1,fp)!
if(w==sel[j].num)
销售商号码,销售商名字,状态,城市:
\n"
%d%s%s%s"
sel[j].num,sel[j].name,sel[j].state,sel[j].city);
voiddelete()
\t\t\t\t1.sal_deletenewdata"
\t\t\t\t2.build_deletenewdata"
\t\t\t\t3.pj_deletenewdata"
/*********删除菜单****************/
\t\t\t\t4.SET_deletenewdata"
t=1;
sal_delete();
build_delete();
pj_delete();
SET_delete();
(3)查找模块
【分析】选择查找方式,输入相应的数据然后找出对应的数据。
模块流程图:
图5查找模块流程图
/********************************查找模块***********************************/
voidsearch()
intflag,j,x;
intw,v,z,y;
1.By项目号\n"
2.By工地号\n"
3.By配件号\n"
4.By销售商号\n"
请选择项:
x);
if(x==3)
flag=0;
Pleaseinputthe配件号:
if(pj[j].num==w)
配件号:
%d\n"
pj[j].num);
配件名:
%s\n"
pj[j].name);
配件颜色:
pj[j].color);
配件重量:
pj[j].weight);
配件产地:
pj[j].area);
---------------------------------\n"
flag=1;
if(flag==0)
menu();
if(x==4)
请输入销售商号:
z);
if(pj[j].num==y)
销售商号:
sel[j].num);
销售商名:
sel[j].name);
所在城市名:
sel[j].city);
if(x==2)
请输入建筑工地号:
if(pj[j].num==z)
建筑工地号:
build[j].num);
建筑工地名:
build[j].name);
build[j].city);
if(x==1)
Pleaseinputthe项目号:
v);
r