C语言课程设计论文建筑工地信息管理系统.docx
- 文档编号:12542429
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:60
- 大小:257.10KB
C语言课程设计论文建筑工地信息管理系统.docx
《C语言课程设计论文建筑工地信息管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计论文建筑工地信息管理系统.docx(60页珍藏版)》请在冰点文库上搜索。
C语言课程设计论文建筑工地信息管理系统
1.课程论文题目
建筑工地信息管理系统
【要求】
建立如下4个文件(括号内为文件中每条记录的字段内容):
(1)销售商-配件-建筑工地(销售商号码,配件号,工地号,数量)
(2)建筑工地(工地号,名字,城市)
(3)配件(配件号,配件名,颜色,重量,产地)
(4)销售商(号码,名字,状态,城市)
功能:
(1)首先建立文件,然后插入数据,并进行删除、更新操作,最后进行查询操作。
(2)查询与供应商所在城市相同的零件——供应商,项目——供应商记录对。
2.程序设计思路
根据题目要求,由于建筑工地信息是存放在文件中,所以应提供文件的输入、输出等操作;在程序中要浏览、修改建筑工地的信息,应提供输入、删除、查找、配对操作;另外还应提供键盘式选择菜单实现功能选择。
3.功能模块图
根据上面的需求分析,可以将这个系统的设计分为数据输入、数据删除、数据查找、数据配对这几个模块。
数据查找
数据删除
数据配对
数据输入
图1系统功能模块图
4.程序代码
4-1主函数
主函数一般设计得比较简洁,只提供输入、处理和输出部分的函数调用。
其中各功能模块用菜单方式选择。
其流程图如图2所示:
图2主函数流程图
【程序】
voidmenu()
{intn;
puts("\t\t************建筑工地信息管理***********\n\n");
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");
loop:
printf("Chooseyournumber(1-5):
[]\b\b");
scanf("%d",&n);
if(n<1||n>5){printf("Error!
");gotoloop;}
else
{
switch(n)
{
case1:
enter();break;
case2:
delete();break;
case3:
search();break;
case4:
search2();break;
case5:
exit(0);
}
}
}
main()
{
menu();
}
4-2输入模块
【需求分析】
单独看各数据信息,名字、城市、配件名、颜色、重量、产地、状态是字符型,可以采用字符型数组;销售商号码、配件号、工地号、号码为整数,采用整型。
数据信息分别放在4个文件中,每条记录对应相应的字段内容。
数据信息采用结构体的形式。
输入模块中建立副菜单,用以选择要输入的文件。
其流程图如下图3所示:
图3输入模块流程图
【程序】
/*****************************数据输入模块************************************/
voidsal_enter()
{
intj;charc[2];FILE*fp;
if((fp=fopen("data1.dat","wb"))==NULL)
{
printf("Cannotopenthefile!
\n");
exit(0);
}
for(j=0;j
fread(&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");
Loop1:
printf("是否继续?
(是[y]/否[n])\n");
scanf("%s",c);
if(strcmp(c,"n")==0)break;
else
{
if(strcmp(c,"y")!
=0)
{printf("error!
\n");gotoloop1;}
}
}
fclose(fp);
menu();
}
voidbuild_enter()
{
intj;charc[2];FILE*fp;
if((fp=fopen("data2.dat","wb"))==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].num1);
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");
Loop2:
printf("是否继续?
(是[y]/否[n])\n");
scanf("%s",c);
if(strcmp(c,"n")==0)break;
else
{
if(strcmp(c,"y")!
=0)
{printf("error!
\n");gotoloop2;}
}
}
fclose(fp);
menu();
}
voidpj_enter()
{
intj;charc[2];FILE*fp;
if((fp=fopen("data3.dat","wb"))==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");
Loop3:
printf("Isthereanymore?
(Yes[y]/No[n])\n");
scanf("%s",c);
if(strcmp(c,"n")==0)break;
else
{
if(strcmp(c,"y")!
=0)
{printf("error!
\n");gotoloop3;}
}
}
fclose(fp);
menu();
}
voidSET_enter()
{
intj;charc[2];FILE*fp;
if((fp=fopen("data4.dat","wb"))==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");
Loop4:
printf("Isthereanymore?
(Yes[y]/No[n])\n");
scanf("%s",c);
if(strcmp(c,"n")==0)break;
else
{
if(strcmp(c,"y")!
=0)
{printf("error!
\n");gotoloop4;}
}
}
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();
}
}
4-3删除模块
【需求分析】
建立副菜单,选择要删除的是哪个文件中的信息,输入相应的信息,找到数据记录将其删除。
做法是将数据从文件中删除,然后跳过已删除的项,重新写入文件。
其流程图如下图4所示:
图4删除模块流程图
【程序】
/******************************删除模块************************************/
voidsal_delete()
{
intj,v=0;intx;intw=101;FILE*fp;
if((fp=fopen("data1.dat","rb"))==NULL)
{
printf("Cannotopenthefile!
\n");
menu();
}
loop:
printf("请输入要删除的销售商号码(输入0返回menu):
");
scanf("%d",&x);
if(x==0)menu();
for(j=0;j<100;j++)
{if(fread(&sal[j],sizeof(structsale),1,fp)!
=1)break;}
v=j+1;
for(j=0;j { if(x==sal[j].num1) {w=j;break;} } fclose(fp); if(w==101) {printf("Cannotfindthedata! \n\n");gotoloop;} else { fp=fopen("data1.dat","wb"); for(j=0;j {if(j! =w)fwrite(&sal[j],sizeof(structsale),1,fp);} } printf("\n销售商号码,配件号,工地号,数量\n"); printf("%d,\t\t%d,%d,%d\n",sal[w].num1,sal[w].num2,sal[w].num3,sal[w].num4); printf("删除成功! \n\n"); fclose(fp); menu(); } voidbuild_delete() { intj,v=0,x;intw=101;FILE*fp; if((fp=fopen("data2.dat","rb"))==NULL) { printf("Cannotopenthefile! \n"); menu(); } loop: printf("请输入要删除的工地号(输入0返回menu): "); scanf("%d",&x); if(x==0)menu(); for(j=0;j<100;j++) {if(fread(&build[j],sizeof(structbuilding),1,fp)! =1)break;} v=j+1; for(j=0;j { if(x==build[j].num){w=j;break;} }fclose(fp); if(w==101) {printf("Cannotfindthedata! \n\n");gotoloop;} else { fp=fopen("data2.dat","wb"); for(j=0;j {if(j! =w)fwrite(&build[j],sizeof(structbuilding),1,fp);} } printf("\n项目号,工地号,工地名,城市名: \n"); printf("%d,\t%d,%s,%s\n",build[w].num1,build[w].num,build[w].name,build[w].city); printf("删除成功! \n\n"); fclose(fp); menu(); } voidpj_delete() { intj,v=0,x;intw=101;FILE*fp; if((fp=fopen("data3.dat","rb"))==NULL) { printf("Cannotopenthefile! \n"); menu(); } loop: printf("请输入要删除的配件号(输入0返回menu): "); scanf("%d",&x); if(x==0)menu(); for(j=0;j<100;j++) {if(fread(&pj[j],sizeof(structpeijian),1,fp)! =1)break;} v=j+1; for(j=0;j { if(x==pj[j].num){w=j;break;} }fclose(fp); if(w==101) {printf("Cannotfindthedata! \n\n");gotoloop;} else { fp=fopen("data3.dat","wb"); for(j=0;j {if(j! =w)fwrite(&pj[j],sizeof(structpeijian),1,fp);} } printf("\n配件号,配件名,颜色,重量,产地: \n"); printf("%d,%s,%s,%d,%s\n",pj[w].num,pj[w].name,pj[w].color,pj[w].weight,pj[w].area); printf("删除成功! \n\n"); fclose(fp); menu(); } voidSET_delete() { intj,v=0;intx;intw=101;FILE*fp; if((fp=fopen("data4.dat","rb"))==NULL) { printf("Cannotopenthefile! \n"); menu(); } loop: printf("请输入号码(输入0返回menu): "); scanf("%d",&x); if(x==0)menu(); for(j=0;j<100;j++) {if(fread(&sel[j],sizeof(structseller),1,fp)! =1)break;} v=j+1; for(j=0;j { if(x==sel[j].num){w=j;break;} }fclose(fp); if(w==101) {printf("Cannotfindthedata! \n\n");gotoloop;} else { fp=fopen("data4.dat","wb"); for(j=0;j {if(j! =w)fwrite(&sel[j],sizeof(structseller),1,fp);} } printf("\n销售商号码,销售商名字,状态,城市: \n"); printf("%d,\t\t%s,\t%s,%s\n",sel[w].num,sel[w].name,sel[w].state,sel[w].city); printf("删除成功! \n\n"); fclose(fp); menu(); } voiddelete() { intt,m; do { puts("\t\t***************MENU*************\n\n"); puts("\t\t\t1.sal_deletenewdata"); puts("\t\t\t2.build_deletenewdata"); puts("\t\t\t3.pj_deletenewdata");/*********删除菜单****************/ puts("\t\t\t4.SET_deletenewdata"); puts("\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(); } } 4-4查找模块 【需求分析】 该模块的功能事根据输入的信息号码查找对应的记录。 选择合适的查找方式,输入相应的数据从而找出对应的数据。 其流程图如下图5所示: 图5查找模块流程图 【程序】 /********************************查找模块***********************************/ voidsearch() { inti,w=101,j,x,h=0;FILE*fp; printf("1--By销售商号码\n"); printf("2--By工地号\n"); printf("3--By配件号\n"); printf("4--By销售商号\n"); printf("5返回\n\n"); loop9: printf("请选择项: \n"); scanf("%d",&x); if(x==5)menu(); elseif(x<1||x>5){printf("Error! \n");gotoloop9;} elseif(x==3) { if((fp=fopen("d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 论文 建筑工地 信息管理 系统