C语言课程设计论文建筑工地信息管理系统.docx

上传人:b****7 文档编号:25218473 上传时间:2023-06-06 格式:DOCX 页数:60 大小:257.10KB
下载 相关 举报
C语言课程设计论文建筑工地信息管理系统.docx_第1页
第1页 / 共60页
C语言课程设计论文建筑工地信息管理系统.docx_第2页
第2页 / 共60页
C语言课程设计论文建筑工地信息管理系统.docx_第3页
第3页 / 共60页
C语言课程设计论文建筑工地信息管理系统.docx_第4页
第4页 / 共60页
C语言课程设计论文建筑工地信息管理系统.docx_第5页
第5页 / 共60页
点击查看更多>>
下载资源
资源描述

C语言课程设计论文建筑工地信息管理系统.docx

《C语言课程设计论文建筑工地信息管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计论文建筑工地信息管理系统.docx(60页珍藏版)》请在冰豆网上搜索。

C语言课程设计论文建筑工地信息管理系统.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1