建筑工地信息管理系统课程设计报告.docx
《建筑工地信息管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《建筑工地信息管理系统课程设计报告.docx(44页珍藏版)》请在冰豆网上搜索。
![建筑工地信息管理系统课程设计报告.docx](https://file1.bdocx.com/fileroot1/2023-1/31/3a9c3d16-4116-4820-ad1d-f4e938c1879c/3a9c3d16-4116-4820-ad1d-f4e938c1879c1.gif)
建筑工地信息管理系统课程设计报告
建筑工地信息管理系统课程设计报告
-----------------------作者:
-----------------------日期:
C语言课程设计
名称:
建筑工地信息管理系统
学院:
工程学院
班级:
055071-30
:
文富奎
学号:
指导老师:
文中
前言
课程设计目的:
C语言编程实践是学习C语言的一个重要环节,为提高学生的程序设计能力,通过课堂和上机实践使学生的程序设计能力有一个上升的台阶。
通过前四单元的温故而知新、庖丁解牛、举一反三、熟能生巧等过程的练习之后能够解决一些简单的实际问题。
1、题目要求
设计:
“建筑工地信息管理系统”
建立如下4个文件(括号为文件中每条记录的字段容):
(1)销售商-配件-建筑工地(销售商,配件号,工地号,数量)
(2)建筑工地(工地号,名字,城市)
(3)配件(配件号,配件名,颜色,重量,产地)
(4)销售商(,名字,状态,城市)
功能:
(1)首先建立文件,然后插入数据,并进行删除、更新操作,最后进行查询操作。
(2)查询与供应商所在城市相同的零件——供应商,项目——供应商记录对。
2、分析
根据题目要求,建立文件,应选择结构体数组来存放数据,再定义一个全局变量和文件指针进行程序的运行,然后把数据信息存入文件中,所以要提供结构体和文件的输入输出等操作;在程序中要进行数据的插入、删除、更新、查询等操作,所以需要建立相应的模块来实现,为简便起见,还应建立一个主菜单,在每个模块中建立相应的副菜单;另外,还要提供键盘式选择菜单来实现选择功能,使程序在运行时达到要求。
3、总体设计
根据题目要求,可以将系统分为:
1)插入数据模块;
2)删除模块;
3)查询模块;
4)查找配对;
5)功能选择菜
图1系统功能模块图
4、详细设计
一、主函数
【分析】主函数一般设计得比较简便,只提供输入、处理和输出部分的函数调用。
其中各功能模块用菜单方式选择。
其流程图:
图2主函数流程图
【程序】
/************************主菜单*********************************/
voidmenu()
{
intn,w;/*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字围*/
do
{puts("\t\t*************建筑工地信息管理****************\n\n");
puts(":
文富奎");
puts("学号:
");
puts("班学号:
055071-30");
puts("\t\t****************MENU*******************\n\n");
puts("\t\t\t\t1.输入");/*输入*/
puts("\t\t\t\t2.删除");/*删除*/
puts("\t\t\t\t3.查找");/*查找*/
puts("\t\t\t\t4.配对");/*查找配对*/
puts("\t\t\t\t5.Exit");
puts("\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();break;
case3:
search();break;
case4:
search2();break;
case5:
exit(0);
}
}
main()
{
menu();
}
二、各功能模块设计
(1)数据输入模块
【分析】数据信息存放在文件中,用结构体存放,方便数据输入与数据的保存。
另外,输入模块中建立副菜单,用以输入四个文件的信息选项。
图3数据输入模块流程图
【程序】
/*****************************数据输入模块************************************/
voidsal_enter()
{intj;
charc[2];
FILE*fp;
if((fp=fopen("data1.txt","w"))==NULL)
{
printf("Cannotopenthefile!
\n");
exit(0);
}
for(j=0;j
{
fwrite(&sal[j],sizeof(structsale),1,fp);
}
while
(1)
{
printf("输入销售商:
\n");
scanf("%d",&sal[i].num1);
printf("输入配件:
\n");
scanf("%d",&sal[i].num2);
printf("输入工地:
\n");
scanf("%d",&sal[i].num3);
printf("输入数量r:
\n");
scanf("%d",&sal[i].num4);
if(fwrite(&sal[i++],sizeof(structsale),1,fp)!
=1)
printf("Filewriteerror\n");
elseprintf("Successful!
\n");
printf("是否继续?
(是[y]/否[n])\n");
scanf("%s",c);
if(strcmp(c,"n")==0)break;
}
fclose(fp);menu();
}
voidbuild_enter()
{intj;
charc[2];
FILE*fp;
if((fp=fopen("data2.txt","w"))==NULL)
{
printf("Cannotopenthefile!
\n");
exit(0);
}
for(j=0;j
{
fwrite(&build[j],sizeof(structbuilding),1,fp);
}
while
(1)
{
printf("输入工地号:
\n");
scanf("%d",&build[i].num);
printf("输入工地名:
\n");
scanf("%s",build[i].name);
printf("输入工地城市:
\n");
scanf("%s",build[i].city);
if(fwrite(&build[i++],sizeof(structbuilding),1,fp)!
=1)
printf("Filewriteerror\n");
elseprintf("Successful!
\n");
printf("Isthereanymore?
(Yes[y]/No[n])\n");
scanf("%s",c);
if(strcmp(c,"n")==0)break;
}
fclose(fp);menu();
}
voidpj_enter()
{intj;
charc[2];
FILE*fp;
if((fp=fopen("data3.txt","w"))==NULL)
{
printf("Cannotopenthefile!
\n");
exit(0);
}
for(j=0;j
{
fwrite(&pj[j],sizeof(structpeijian),1,fp);
}
while
(1)
{
printf("输入配件号:
\n");
scanf("%d",&pj[i].num);
printf("输入配件名:
\n");
scanf("%s",pj[i].name);
printf("输入配件颜色:
\n");
scanf("%s",pj[i].color);
printf("输入配件重量:
\n");
scanf("%d",&pj[i].weight);
printf("输入配件产地:
\n");
scanf("%s",pj[i].area);
if(fwrite(&pj[i++],sizeof(structpeijian),1,fp)!
=1)
printf("Filewriteerror\n");
elseprintf("Successful!
\n");
printf("Isthereanymore?
(Yes[y]/No[n])\n");
scanf("%s",c);
if(strcmp(c,"n")==0)break;
}
fclose(fp);menu();
}
voidSET_enter()
{intj;
charc[2];
FILE*fp;
if((fp=fopen("data4.txt","w"))==NULL)
{
printf("Cannotopenthefile!
\n");
exit(0);
}
for(j=0;j
{
fwrite(&sel[j],sizeof(structseller),1,fp);
}
while
(1)
{
printf("输入销售商号:
\n");
scanf("%d",&sel[i].num);
printf("输入销售商名:
\n");
scanf("%s",sel[i].name);
printf("输入销售商状态:
\n");
scanf("%s",sel[i].state);
printf("输入销售商所在城市:
\n");
scanf("%s",sel[i].city);
if(fwrite(&sel[i++],sizeof(structseller),1,fp)!
=1)
printf("Filewriteerror\n");
elseprintf("Successful!
\n");
printf("Isthereanymore?
(Yes[y]/No[n])\n");
scanf("%s",c);
if(strcmp(c,"n")==0)break;
}
fclose(fp);menu();
}
voidenter()
{intt,m;
do
{
puts("\t\t***************MENU*************\n\n");
puts("\t\t\t\t1.sal_enternewdata");
puts("\t\t\t\t2.build_enternewdata");
puts("\t\t\t\t3.pj_enternewdata");/***************输入菜单****************/
puts("\t\t\t\t4.SET_enternewdata");
puts("\t\t\t\t5.Exit");
puts("\n\n\t\t********************************\n");
printf("Choosethenumber(1-5):
[]\b\b");
scanf("%d",&m);
if(m<1||m>5)
{t=1;
getchar();
}
elset=0;
}
while(t==1);
switch(m)
{
case1:
sal_enter();break;
case2:
build_enter();break;
case3:
pj_enter();break;
case4:
SET_enter();break;
case5:
menu();
}
}
(2)删除模块
【分析】建立副菜单,选择要删除的是哪个文件中的信息,输入相应的信息,找到数据将其删除。
一般的做法是将数据从文件中删除,删除位置后面的记录往前移。
模块如:
图4删除模块流程图
【程序】
/******************************删除模块************************************/
voidsal_delete()
{intj,v;
intw;
FILE*fp;
printf("请输入要删除的销售商:
");
scanf("%d",&w);
fp=fopen("data1.txt","rb");
for(j=0;j<100;j++)
{
if(fread(&sal[j],sizeof(structsale),1,fp)!
=1)break;
}
v=j;
for(j=0;j{
if(w==sal[j].num1)
{printf("项目号,销售商,配件号,工地号,数量:
\n");
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}
elseprintf("Cannotfindthedata!
");
menu();
}
fclose(fp);
}
voidbuild_delete()
{intj,v;
intw;
FILE*fp;
printf("请输入要删除的工地号:
");
scanf("%d",&w);
fp=fopen("data2.txt","rb");
for(j=0;j<100;j++)
{
if(fread(&build[j],sizeof(structbuilding),1,fp)!
=1)break;
}
v=j;
for(j=0;j{
if(w==build[j].num)
{printf("工地号,工地名,城市名:
\n");printf("%d%s%s",build[j].num,build[j].name,build[j].city);printf("删除成功");
}
elseprintf("Cannotfindthedata!
");menu();
}
fclose(fp);
menu();
}
voidpj_delete()
{intj,v;
intw;
FILE*fp;
printf("请输入要删除的配件号:
");
scanf("%d",&w);
fp=fopen("data3.txt","rb");
for(j=0;j<100;j++)
{
if(fread(&pj[j],sizeof(structpeijian),1,fp)!
=1)break;
}
v=j;
for(j=0;j{
if(w==pj[j].num)
{printf("配件号,配件名,颜色,重量,产地:
\n");printf("%d%s%s%d%s",pj[j].num,pj[j].name,pj[j].color,pj[j].weight,pj[j].area);printf("删除成功");
}
elseprintf("Cannotfindthedata!
");menu();
}
fclose(fp);
menu();
}
voidSET_delete()
{intj,v,c;
intw;
FILE*fp;
printf("请输入:
");
scanf("%d",&w);
fp=fopen("data4.txt","rb");
for(j=0;j<100;j++)
{
if(fread(&sel[j],sizeof(structseller),1,fp)!
=1)break;
}
v=j;
for(j=0;j{
if(w==sel[j].num)
{printf("销售商,销售商名字,状态,城市:
\n");printf("%d%s%s%s",sel[j].num,sel[j].name,sel[j].state,sel[j].city);printf("删除成功");
}
elseprintf("Cannotfindthedata!
");menu();
}
fclose(fp);
menu();
}
voiddelete()
{intt,m;
do
{
puts("\t\t***************MENU*************\n\n");
puts("\t\t\t\t1.sal_deletenewdata");
puts("\t\t\t\t2.build_deletenewdata");
puts("\t\t\t\t3.pj_deletenewdata");/*********删除菜单****************/
puts("\t\t\t\t4.SET_deletenewdata");
puts("\t\t\t\t5.Exit");
puts("\n\n\t\t********************************\n");
printf("Choosethenumber(1-5):
[]\b\b");
scanf("%d",&m);
if(m<1||m>5)
{
t=1;
getchar();
}
elset=0;
}
while(t==1);
switch(m)
{
case1:
sal_delete();break;
case2:
build_delete();break;
case3:
pj_delete();break;
case4:
SET_delete();break;
case5:
menu();
}
}
(3)查找模块
【分析】选择查找方式,输入相应的数据然后找出对应的数据。
模块流程图:
图5查找模块流程图
【程序】
/********************************查找模块***********************************/
voidsearch()
{
intflag,j,x;
intw,v,z,y;
FILE*fp;
printf("1.By项目号\n");
printf("2.By工地号\n");
printf("3.By配件号\n");
printf("4.By销售商号\n");
printf("请选择项:
\n");
scanf("%d",&x);
if(x==3)
{
flag=0;
printf("Pleaseinputthe配件号:
");
scanf("%d",&w);
fp=fopen("data3.txt","rb");
for(j=0;j<100;j++)
{
if(fread(&pj[j],sizeof(structpeijian),1,fp)!
=1)break;
if(pj[j].num==w)
{
printf("配件号:
%d\n",pj[j].num);
printf("配件名:
%s\n",pj[j].name);
printf("配件颜色:
%s\n",pj[j].color);
printf("配件重量:
%d\n",pj[j].weight);
printf("配件产地:
%s\n",pj[j].area);
printf("---------------------------------\n");
flag=1;
}
}
if(flag==0)
printf("Cannotfindthedata!
\n");
fclose(fp);menu();
}
if(x==4)
{
flag=0;
printf("请输入销售商号:
");
scanf("%d",&z);
fp=fopen("data4.txt","rb");
for(j=0;j<100;j++)
{
if(fread(&sel[j],sizeof(structseller),1,fp)!
=1)break;
if(pj[j].num==y)
{
printf("销售商号:
%d\n",sel[j].num);
printf("销售商名:
%s\n",sel[j].name);
printf("所在城市名:
%s\n",sel[j].city);
printf("---------------------------------\n");
flag=1;
}
}
if(flag==0)
printf("Cannotfindthedata!
\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(&build[j],sizeof(structbuilding),1,fp)!
=1)break;
if(pj[j].num==z)
{
printf("建筑工地号:
%d\n",build[j].num);
printf("建筑工地名:
%s\n",build[j].name);
printf("所在城市名:
%s\n",build[j].city);
printf("---------------------------------\n");
flag=1;
}
}
if(flag==0)
printf("Cannotfindthedata!
\n");
fclose(fp);menu();
}
if(x==1)
{
flag=0;
printf("Pleaseinputt