您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > C语言课程设计报告—建筑工地信息管理系统
1C语言课程设计名称:建筑工地信息管理系统学院:工程学院班级:055071-30姓名:文富奎学号:20071003889指导老师:刘文中2前言课程设计目的:C语言编程实践是学习C语言的一个重要环节,为提高学生的程序设计能力,通过课堂和上机实践使学生的程序设计能力有一个上升的台阶。通过前四单元的温故而知新、庖丁解牛、举一反三、熟能生巧等过程的练习之后能够解决一些简单的实际问题。1、题目要求设计:“建筑工地信息管理系统”建立如下4个文件(括号内为文件中每条记录的字段内容):(1)销售商-配件-建筑工地(销售商号码,配件号,工地号,数量)(2)建筑工地(工地号,名字,城市)(3)配件(配件号,配件名,颜色,重量,产地)(4)销售商(号码,名字,状态,城市)功能:(1)首先建立文件,然后插入数据,并进行删除、更新操作,最后进行查询操作。(2)查询与供应商所在城市相同的零件——供应商,项目——供应商记录对。2、分析根据题目要求,建立文件,应选择结构体数组来存放数据,再定义一个全局变量和文件指针进行程序的运行,然后把数据信息存入文件中,所以要提供结构体和文件的输入输出等操作;在程序中要进行数据的插入、删除、更新、查询等操作,所以需要建立相应的模块来实现,为简便起见,还应建立一个主菜单,在每个模块中建立相应的副菜单;另外,还要提供键盘式选择菜单来实现选择功能,使程序在运行时达到要求。3、总体设计根据题目要求,可以将系统分为:1)插入数据模块;2)删除模块;3)查询模块;4)查找配对;5)功能选择菜3图1系统功能模块图4、详细设计一、主函数【分析】主函数一般设计得比较简便,只提供输入、处理和输出部分的函数调用。其中各功能模块用菜单方式选择。其流程图:图2主函数流程图开始显示一系列功能选择输入n,判断w是否是0到4?根据n值调用各功能模块函数结束N建筑工地信息管理系统数据输入模块删除模块查询模块功能选择菜单查找配对模块4【程序】/************************主菜单*********************************/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(n1||n5){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)数据输入模块【分析】数据信息存放在文件中,用结构体存放,方便数据输入与数据的保存。另外,输入模块中建立副菜单,用以输入四个文件的信息选项。5图3数据输入模块流程图【程序】/*****************************数据输入模块************************************/voidsal_enter(){intj;charc[2];FILE*fp;if((fp=fopen(data1.txt,w))==NULL){printf(Cannotopenthefile!\n);exit(0);}for(j=0;ji;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);开始输入用户信息是否继续进行?结束返回主菜单Y6elseprintf(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;ji;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);7exit(0);}for(j=0;ji;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;ji;j++){fwrite(&sel[j],sizeof(structseller),1,fp);}while(1){printf(输入销售商号:\n);scanf(%d,&sel[i].num);8printf(输入销售商名:\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(m1||m5){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();}}9(2)删除模块【分析】建立副菜单,选择要删除的是哪个文件中的信息,输入相应的信息,找到数据将其删除。一般的做法是将数据从文件中删除,删除位置后面的记录往前移。模块如:图4删除模块流程图【程序】/******************************删除模块************************************/voidsal_delete(){intj,v;intw;FILE*fp;printf(请输入要删除的销售商号码:);scanf(%d,&w);fp=fopen(data1.txt,rb);for(j=0;j100;j++){if(fread(&sal[j],sizeof(structsale),1,fp)!=1)break;}v=j;for(j=0;jv;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;iv;i++)sal[j]=sal[j++];printf(删除成功);}elseprintf(Cannotfindthedata!);开始输入要删除的数据是否找到?删除数据显示成功显示没有找到Y结束10menu();}fclose(fp);}voidbuild_d
本文标题:C语言课程设计报告—建筑工地信息管理系统
链接地址:https://www.777doc.com/doc-163402 .html