建筑工地信息管理系统课程设计报告.docx

上传人:b****8 文档编号:9438582 上传时间:2023-05-19 格式:DOCX 页数:48 大小:172.07KB
下载 相关 举报
建筑工地信息管理系统课程设计报告.docx_第1页
第1页 / 共48页
建筑工地信息管理系统课程设计报告.docx_第2页
第2页 / 共48页
建筑工地信息管理系统课程设计报告.docx_第3页
第3页 / 共48页
建筑工地信息管理系统课程设计报告.docx_第4页
第4页 / 共48页
建筑工地信息管理系统课程设计报告.docx_第5页
第5页 / 共48页
建筑工地信息管理系统课程设计报告.docx_第6页
第6页 / 共48页
建筑工地信息管理系统课程设计报告.docx_第7页
第7页 / 共48页
建筑工地信息管理系统课程设计报告.docx_第8页
第8页 / 共48页
建筑工地信息管理系统课程设计报告.docx_第9页
第9页 / 共48页
建筑工地信息管理系统课程设计报告.docx_第10页
第10页 / 共48页
建筑工地信息管理系统课程设计报告.docx_第11页
第11页 / 共48页
建筑工地信息管理系统课程设计报告.docx_第12页
第12页 / 共48页
建筑工地信息管理系统课程设计报告.docx_第13页
第13页 / 共48页
建筑工地信息管理系统课程设计报告.docx_第14页
第14页 / 共48页
建筑工地信息管理系统课程设计报告.docx_第15页
第15页 / 共48页
建筑工地信息管理系统课程设计报告.docx_第16页
第16页 / 共48页
建筑工地信息管理系统课程设计报告.docx_第17页
第17页 / 共48页
建筑工地信息管理系统课程设计报告.docx_第18页
第18页 / 共48页
建筑工地信息管理系统课程设计报告.docx_第19页
第19页 / 共48页
建筑工地信息管理系统课程设计报告.docx_第20页
第20页 / 共48页
亲,该文档总共48页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

建筑工地信息管理系统课程设计报告.docx

《建筑工地信息管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《建筑工地信息管理系统课程设计报告.docx(48页珍藏版)》请在冰点文库上搜索。

建筑工地信息管理系统课程设计报告.docx

建筑工地信息管理系统课程设计报告

C语言课程设计

 

名称:

建筑工地信息管理系统

学院:

工程学院

班级:

055071-30

姓名:

文富奎

学号:

20071003889

指导老师:

刘文中

 

前言

课程设计目的:

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("学号:

20071003889");

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("Pleaseinputthe项目号:

");

scanf("%d",&v);

fp=fopen("data

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2